// export testing ; export you , russians , nature , alliance , legion , americans , americans_alt , mines_side ; export Heike , Olaf , Sonya , Oswald , Ralph , Kowalski , Aviradze , Swansson , Dwayne , Khattam , Evelyn , Makise , Gonzo , Omar , Gensher , Snake ; export PlayerTeam , Control_drivers , SecondTeam , OmarVeh , OmarTigers , Reinforcements , Lead ; export Platonov , Roth , Gossudarov , Powell , Suze , MarkB , Kurt , Martin , Louis , Gordon , Kozlov , Hadarach , LegionLeader , AllianceTeam ; export dlg_list , bomb_dlg ; export ai_bases ; export ai_soldiers , ai_attacking_soldiers , ai_engineers , ai_mechanics_defend , ai_mechanics_attack , ai_scientists , ai_attacking_scientists ; export ai_apemen_engineers , ai_excepted_soldiers , ai_depots , ai_labs , ai_facts , ai_armouries , ai_bunkers , ai_turrets , ai_oil_mine , ai_siberite_mines ; export ai_fact_extensions , ai_power_plants , ai_control_tower , ai_teleporter , ai_buildings_locations , ai_captured_buildings , ai_sib_bomb_fact ; export ai_sib_bomb_fact_location , ai_sib_bomb_mechanics , ai_spawn_people ; export ai_vehicles_defend , ai_vehicles_attack , ai_retreating_vehicles_defend , ai_vehicles_being_repaired , ai_refuel_vehicles_list ; export ai_vehicle_pullback_hexes , ai_human_pullback_hex , ai_building_under_construction , ai_heal_these_humans , ai_all_buildings ; export ai_building_constructor , ai_vehicle_being_moved , ai_vehicles_having_been_moved , ai_upcoming_building_data , ai_cannot_rebuild_these_buildings ; export ai_near_base_dist , ai_vehicle_attack_delay , ai_human_attack_delay , ai_cargo_bay , ai_cargo_bay_under_construction ; export ai_cargo_bay_destroy_tick , ai_crane , ai_crane_under_construction , ai_crane_destroy_tick , ai_crane_is_being_repaired ; export ai_crane_driver , ai_attacking_unit_hex_index , ai_retreating_attacking_humans , ai_control_tower_vehicles ; export ai_teleporter_exit_placed , ai_excepted_buildings , ai_fact_extension_replace_locations , ai_dismantle_these_buildings ; export ai_taufield_vehicles , ai_implosion_vehicles , ai_attack_strategy , ai_behemoths , ai_behemoth_parking_hexes , ai_behemoth_construction_hex ; export ai_new_attack_commencing , ai_sib_bomb_vehicles , ai_sib_bomb_remainder , ai_facts_with_ext_rebuild_map ; export ai_time_shift_data , ai_time_shift_hexes , ai_time_shift_hexes_underway ; export ai_contact_time , ai_attack_ground_info_initial , ai_attack_ground_info_sustain , ai_sib_bomb_used_time_matrix , ai_sib_bomb_contamination_duration ; export ai_defence_replace_mines_centerhexes , ai_defence_mines_hexes , ai_defence_max_num_replace_mines , ai_mine_guys , ai_defence_replace_mines_hexes ; export MaxNumWarVehicles , AttackStatus , AttackTimer , AttackUnits , AttackPath , AttackHexCount , PowellAttack ; export FinalAttack , FAttackType , FinalVehs , Fattacking , Fdlg , Fcount ; export ai_behemoth_retreat_hexes , ai_behemoth_damaged ; export ai_hovercrafts , ai_hovercrafts_timer , ai_hovercrafts_status , ai_hovercrafts_path , ai_hovercrafts_hexcount , ai_hovercrafts_out , ai_hovercrafts_target , ai_hovercrafts_respawntime ; export ai_mines , ai_behemoths_unmovable , ai_units_irradiated , ai_units_irradiated_time ; export mb_bases ; export mb_buildings , mb_buildings_locations , mb_people , mb_vehicles , mb_vehicles_hexes , mb_vehiclestemp_weapons , mb_vehiclestemp_chassis , mb_re_vehicles , mb_re_timer , mb_damaged_buildings , mb_injured , mb_damagedvehicles , mb_to_build_list ; export apes , apes_tick , mb_legion_kam , mb_legion_apesoldiers , mb_legion_ape_fac ; export mb_detected_enemy , mb_evacuating_base , mb_evacuating_units , mb_evacuating_path ; export ai_patrol , ai_patrol_timer , ai_patrol_respawntime , ai_patrol_weapons , ai_patrol_out , ai_patrol_path , ai_patrol_hexcount , ai_patrol_status , ai_patrol_engaging , ai_patrol_PathChoice , possible_paths ; export InitialBuildingCount , InitialSoldierCount , BasesDestroyed , BaseDestroyedTick ; export ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb , FirstUseInfo ; export ArtUse_SibPlant , ArtUse_SibPlant_contaminated , ArtUse_Beh , ArtUse_Beh_damaged , ArtUse_Beh_count , ArtUse_TimeLapse , ArtUse_TimeLapse_time , ArtUse_Laser , ArtUse_Laser_Hacked , ArtUse_SuperStim , ArtUse_SuperStim_units , ArtUse_SPBomb , ArtUse_SPBomb_veh , ArtUse_SPBomb_XY , ArtUse_SPBomb_HumansContaminated ; export AllianceDestroyed , AllianceSpawned , AllTarget , AllEnemies , Alldlg ; export RussianNukeAttack , AmericansNuked ; export Contamination_sci , Contamination_count , TargetDeposits ; export Dlg_cap , LLKilledTick , DRadTime , DRadCount , DRadEng , DHighRadList , dlg_DoubleLaserHack ; export GameStage , GSCount , strings , SibDeposits ; starting begin RandomizeAll ;
   0: CALL_OW 11
// ResetFog ;
   4: CALL_OW 335
// testing = false ;
   8: LD_ADDR_EXP 1
  12: PUSH
  13: LD_INT 0
  15: ST_TO_ADDR
// music_nat = 4 ;
  16: LD_ADDR_OWVAR 71
  20: PUSH
  21: LD_INT 4
  23: ST_TO_ADDR
// ai_bases = [ 1 , 2 , 3 ] ;
  24: LD_ADDR_EXP 49
  28: PUSH
  29: LD_INT 1
  31: PUSH
  32: LD_INT 2
  34: PUSH
  35: LD_INT 3
  37: PUSH
  38: EMPTY
  39: LIST
  40: LIST
  41: LIST
  42: ST_TO_ADDR
// ai_soldiers = [ [ ] , [ ] , [ ] ] ;
  43: LD_ADDR_EXP 50
  47: PUSH
  48: EMPTY
  49: PUSH
  50: EMPTY
  51: PUSH
  52: EMPTY
  53: PUSH
  54: EMPTY
  55: LIST
  56: LIST
  57: LIST
  58: ST_TO_ADDR
// ai_attacking_soldiers = [ [ ] , [ ] , [ ] ] ;
  59: LD_ADDR_EXP 51
  63: PUSH
  64: EMPTY
  65: PUSH
  66: EMPTY
  67: PUSH
  68: EMPTY
  69: PUSH
  70: EMPTY
  71: LIST
  72: LIST
  73: LIST
  74: ST_TO_ADDR
// ai_excepted_soldiers = [ [ ] , [ ] , [ ] ] ;
  75: LD_ADDR_EXP 58
  79: PUSH
  80: EMPTY
  81: PUSH
  82: EMPTY
  83: PUSH
  84: EMPTY
  85: PUSH
  86: EMPTY
  87: LIST
  88: LIST
  89: LIST
  90: ST_TO_ADDR
// ai_engineers = [ [ ] , [ ] , [ ] ] ;
  91: LD_ADDR_EXP 52
  95: PUSH
  96: EMPTY
  97: PUSH
  98: EMPTY
  99: PUSH
 100: EMPTY
 101: PUSH
 102: EMPTY
 103: LIST
 104: LIST
 105: LIST
 106: ST_TO_ADDR
// ai_mechanics_defend = [ [ ] , [ ] , [ ] ] ;
 107: LD_ADDR_EXP 53
 111: PUSH
 112: EMPTY
 113: PUSH
 114: EMPTY
 115: PUSH
 116: EMPTY
 117: PUSH
 118: EMPTY
 119: LIST
 120: LIST
 121: LIST
 122: ST_TO_ADDR
// ai_mechanics_attack = [ [ ] , [ ] , [ ] ] ;
 123: LD_ADDR_EXP 54
 127: PUSH
 128: EMPTY
 129: PUSH
 130: EMPTY
 131: PUSH
 132: EMPTY
 133: PUSH
 134: EMPTY
 135: LIST
 136: LIST
 137: LIST
 138: ST_TO_ADDR
// ai_scientists = [ [ ] , [ ] , [ ] ] ;
 139: LD_ADDR_EXP 55
 143: PUSH
 144: EMPTY
 145: PUSH
 146: EMPTY
 147: PUSH
 148: EMPTY
 149: PUSH
 150: EMPTY
 151: LIST
 152: LIST
 153: LIST
 154: ST_TO_ADDR
// ai_attacking_scientists = [ [ ] , [ ] , [ ] ] ;
 155: LD_ADDR_EXP 56
 159: PUSH
 160: EMPTY
 161: PUSH
 162: EMPTY
 163: PUSH
 164: EMPTY
 165: PUSH
 166: EMPTY
 167: LIST
 168: LIST
 169: LIST
 170: ST_TO_ADDR
// ai_apemen_engineers = [ [ ] , [ ] , [ ] , [ ] ] ;
 171: LD_ADDR_EXP 57
 175: PUSH
 176: EMPTY
 177: PUSH
 178: EMPTY
 179: PUSH
 180: EMPTY
 181: PUSH
 182: EMPTY
 183: PUSH
 184: EMPTY
 185: LIST
 186: LIST
 187: LIST
 188: LIST
 189: ST_TO_ADDR
// ai_sib_bomb_mechanics = [ [ ] , [ ] , [ ] ] ;
 190: LD_ADDR_EXP 75
 194: PUSH
 195: EMPTY
 196: PUSH
 197: EMPTY
 198: PUSH
 199: EMPTY
 200: PUSH
 201: EMPTY
 202: LIST
 203: LIST
 204: LIST
 205: ST_TO_ADDR
// ai_depots = [ [ ] , [ ] , [ ] ] ;
 206: LD_ADDR_EXP 59
 210: PUSH
 211: EMPTY
 212: PUSH
 213: EMPTY
 214: PUSH
 215: EMPTY
 216: PUSH
 217: EMPTY
 218: LIST
 219: LIST
 220: LIST
 221: ST_TO_ADDR
// ai_labs = [ [ ] , [ ] , [ ] ] ;
 222: LD_ADDR_EXP 60
 226: PUSH
 227: EMPTY
 228: PUSH
 229: EMPTY
 230: PUSH
 231: EMPTY
 232: PUSH
 233: EMPTY
 234: LIST
 235: LIST
 236: LIST
 237: ST_TO_ADDR
// ai_facts = [ [ ] , [ ] , [ ] ] ;
 238: LD_ADDR_EXP 61
 242: PUSH
 243: EMPTY
 244: PUSH
 245: EMPTY
 246: PUSH
 247: EMPTY
 248: PUSH
 249: EMPTY
 250: LIST
 251: LIST
 252: LIST
 253: ST_TO_ADDR
// ai_armouries = [ [ ] , [ ] , [ ] ] ;
 254: LD_ADDR_EXP 62
 258: PUSH
 259: EMPTY
 260: PUSH
 261: EMPTY
 262: PUSH
 263: EMPTY
 264: PUSH
 265: EMPTY
 266: LIST
 267: LIST
 268: LIST
 269: ST_TO_ADDR
// ai_bunkers = [ [ ] , [ ] , [ ] ] ;
 270: LD_ADDR_EXP 63
 274: PUSH
 275: EMPTY
 276: PUSH
 277: EMPTY
 278: PUSH
 279: EMPTY
 280: PUSH
 281: EMPTY
 282: LIST
 283: LIST
 284: LIST
 285: ST_TO_ADDR
// ai_turrets = [ [ ] , [ ] , [ ] ] ;
 286: LD_ADDR_EXP 64
 290: PUSH
 291: EMPTY
 292: PUSH
 293: EMPTY
 294: PUSH
 295: EMPTY
 296: PUSH
 297: EMPTY
 298: LIST
 299: LIST
 300: LIST
 301: ST_TO_ADDR
// ai_oil_mine = [ 0 , 0 , 0 ] ;
 302: LD_ADDR_EXP 65
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: LD_INT 0
 315: PUSH
 316: EMPTY
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// ai_siberite_mines = [ [ ] , [ ] , [ ] ] ;
 321: LD_ADDR_EXP 66
 325: PUSH
 326: EMPTY
 327: PUSH
 328: EMPTY
 329: PUSH
 330: EMPTY
 331: PUSH
 332: EMPTY
 333: LIST
 334: LIST
 335: LIST
 336: ST_TO_ADDR
// ai_fact_extensions = [ [ ] , [ ] , [ ] ] ;
 337: LD_ADDR_EXP 67
 341: PUSH
 342: EMPTY
 343: PUSH
 344: EMPTY
 345: PUSH
 346: EMPTY
 347: PUSH
 348: EMPTY
 349: LIST
 350: LIST
 351: LIST
 352: ST_TO_ADDR
// ai_power_plants = [ [ ] , [ ] , [ ] ] ;
 353: LD_ADDR_EXP 68
 357: PUSH
 358: EMPTY
 359: PUSH
 360: EMPTY
 361: PUSH
 362: EMPTY
 363: PUSH
 364: EMPTY
 365: LIST
 366: LIST
 367: LIST
 368: ST_TO_ADDR
// ai_control_tower = [ [ ] , [ ] , [ ] ] ;
 369: LD_ADDR_EXP 69
 373: PUSH
 374: EMPTY
 375: PUSH
 376: EMPTY
 377: PUSH
 378: EMPTY
 379: PUSH
 380: EMPTY
 381: LIST
 382: LIST
 383: LIST
 384: ST_TO_ADDR
// ai_teleporter = [ 0 , 0 , 0 ] ;
 385: LD_ADDR_EXP 70
 389: PUSH
 390: LD_INT 0
 392: PUSH
 393: LD_INT 0
 395: PUSH
 396: LD_INT 0
 398: PUSH
 399: EMPTY
 400: LIST
 401: LIST
 402: LIST
 403: ST_TO_ADDR
// ai_buildings_locations = [ [ ] , [ ] , [ ] ] ;
 404: LD_ADDR_EXP 71
 408: PUSH
 409: EMPTY
 410: PUSH
 411: EMPTY
 412: PUSH
 413: EMPTY
 414: PUSH
 415: EMPTY
 416: LIST
 417: LIST
 418: LIST
 419: ST_TO_ADDR
// ai_captured_buildings = [ [ ] , [ ] , [ ] ] ;
 420: LD_ADDR_EXP 72
 424: PUSH
 425: EMPTY
 426: PUSH
 427: EMPTY
 428: PUSH
 429: EMPTY
 430: PUSH
 431: EMPTY
 432: LIST
 433: LIST
 434: LIST
 435: ST_TO_ADDR
// ai_sib_bomb_fact = [ le_sib_fact , ru_sib_fact , 0 ] ;
 436: LD_ADDR_EXP 73
 440: PUSH
 441: LD_INT 149
 443: PUSH
 444: LD_INT 338
 446: PUSH
 447: LD_INT 0
 449: PUSH
 450: EMPTY
 451: LIST
 452: LIST
 453: LIST
 454: ST_TO_ADDR
// ai_sib_bomb_fact_location = [ [ GetX ( le_sib_fact ) , GetY ( le_sib_fact ) ] , [ GetX ( ru_sib_fact ) , GetY ( ru_sib_fact ) ] , [ ] ] ;
 455: LD_ADDR_EXP 74
 459: PUSH
 460: LD_INT 149
 462: PPUSH
 463: CALL_OW 250
 467: PUSH
 468: LD_INT 149
 470: PPUSH
 471: CALL_OW 251
 475: PUSH
 476: EMPTY
 477: LIST
 478: LIST
 479: PUSH
 480: LD_INT 338
 482: PPUSH
 483: CALL_OW 250
 487: PUSH
 488: LD_INT 338
 490: PPUSH
 491: CALL_OW 251
 495: PUSH
 496: EMPTY
 497: LIST
 498: LIST
 499: PUSH
 500: EMPTY
 501: PUSH
 502: EMPTY
 503: LIST
 504: LIST
 505: LIST
 506: ST_TO_ADDR
// ai_vehicles_defend = [ [ ] , [ ] , [ ] ] ;
 507: LD_ADDR_EXP 77
 511: PUSH
 512: EMPTY
 513: PUSH
 514: EMPTY
 515: PUSH
 516: EMPTY
 517: PUSH
 518: EMPTY
 519: LIST
 520: LIST
 521: LIST
 522: ST_TO_ADDR
// ai_vehicles_attack = [ [ ] , [ ] , [ ] ] ;
 523: LD_ADDR_EXP 78
 527: PUSH
 528: EMPTY
 529: PUSH
 530: EMPTY
 531: PUSH
 532: EMPTY
 533: PUSH
 534: EMPTY
 535: LIST
 536: LIST
 537: LIST
 538: ST_TO_ADDR
// ai_retreating_vehicles_defend = [ [ ] , [ ] , [ ] ] ;
 539: LD_ADDR_EXP 79
 543: PUSH
 544: EMPTY
 545: PUSH
 546: EMPTY
 547: PUSH
 548: EMPTY
 549: PUSH
 550: EMPTY
 551: LIST
 552: LIST
 553: LIST
 554: ST_TO_ADDR
// ai_vehicles_being_repaired = [ [ ] , [ ] , [ ] ] ;
 555: LD_ADDR_EXP 80
 559: PUSH
 560: EMPTY
 561: PUSH
 562: EMPTY
 563: PUSH
 564: EMPTY
 565: PUSH
 566: EMPTY
 567: LIST
 568: LIST
 569: LIST
 570: ST_TO_ADDR
// ai_refuel_vehicles_list = [ [ ] , [ ] , [ ] ] ;
 571: LD_ADDR_EXP 81
 575: PUSH
 576: EMPTY
 577: PUSH
 578: EMPTY
 579: PUSH
 580: EMPTY
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: LIST
 586: ST_TO_ADDR
// ai_vehicle_pullback_hexes = [ [ [ 126 , 161 ] , [ 131 , 180 ] , [ 127 , 181 ] , [ 98 , 172 ] , [ 129 , 163 ] , [ 131 , 177 ] , [ 101 , 174 ] ] , [ ] , [ ] ] ;
 587: LD_ADDR_EXP 82
 591: PUSH
 592: LD_INT 126
 594: PUSH
 595: LD_INT 161
 597: PUSH
 598: EMPTY
 599: LIST
 600: LIST
 601: PUSH
 602: LD_INT 131
 604: PUSH
 605: LD_INT 180
 607: PUSH
 608: EMPTY
 609: LIST
 610: LIST
 611: PUSH
 612: LD_INT 127
 614: PUSH
 615: LD_INT 181
 617: PUSH
 618: EMPTY
 619: LIST
 620: LIST
 621: PUSH
 622: LD_INT 98
 624: PUSH
 625: LD_INT 172
 627: PUSH
 628: EMPTY
 629: LIST
 630: LIST
 631: PUSH
 632: LD_INT 129
 634: PUSH
 635: LD_INT 163
 637: PUSH
 638: EMPTY
 639: LIST
 640: LIST
 641: PUSH
 642: LD_INT 131
 644: PUSH
 645: LD_INT 177
 647: PUSH
 648: EMPTY
 649: LIST
 650: LIST
 651: PUSH
 652: LD_INT 101
 654: PUSH
 655: LD_INT 174
 657: PUSH
 658: EMPTY
 659: LIST
 660: LIST
 661: PUSH
 662: EMPTY
 663: LIST
 664: LIST
 665: LIST
 666: LIST
 667: LIST
 668: LIST
 669: LIST
 670: PUSH
 671: EMPTY
 672: PUSH
 673: EMPTY
 674: PUSH
 675: EMPTY
 676: LIST
 677: LIST
 678: LIST
 679: ST_TO_ADDR
// ai_human_pullback_hex = [ [ 107 , 161 ] , [ 199 , 196 ] , [ 218 , 147 ] ] ;
 680: LD_ADDR_EXP 83
 684: PUSH
 685: LD_INT 107
 687: PUSH
 688: LD_INT 161
 690: PUSH
 691: EMPTY
 692: LIST
 693: LIST
 694: PUSH
 695: LD_INT 199
 697: PUSH
 698: LD_INT 196
 700: PUSH
 701: EMPTY
 702: LIST
 703: LIST
 704: PUSH
 705: LD_INT 218
 707: PUSH
 708: LD_INT 147
 710: PUSH
 711: EMPTY
 712: LIST
 713: LIST
 714: PUSH
 715: EMPTY
 716: LIST
 717: LIST
 718: LIST
 719: ST_TO_ADDR
// ai_spawn_people = [ [ ] , [ ] , [ ] ] ;
 720: LD_ADDR_EXP 76
 724: PUSH
 725: EMPTY
 726: PUSH
 727: EMPTY
 728: PUSH
 729: EMPTY
 730: PUSH
 731: EMPTY
 732: LIST
 733: LIST
 734: LIST
 735: ST_TO_ADDR
// ai_heal_these_humans = [ [ ] , [ ] , [ ] , [ ] ] ;
 736: LD_ADDR_EXP 85
 740: PUSH
 741: EMPTY
 742: PUSH
 743: EMPTY
 744: PUSH
 745: EMPTY
 746: PUSH
 747: EMPTY
 748: PUSH
 749: EMPTY
 750: LIST
 751: LIST
 752: LIST
 753: LIST
 754: ST_TO_ADDR
// ai_building_under_construction = [ 0 , 0 , 0 ] ;
 755: LD_ADDR_EXP 84
 759: PUSH
 760: LD_INT 0
 762: PUSH
 763: LD_INT 0
 765: PUSH
 766: LD_INT 0
 768: PUSH
 769: EMPTY
 770: LIST
 771: LIST
 772: LIST
 773: ST_TO_ADDR
// ai_all_buildings = [ [ ] , [ ] , [ ] ] ;
 774: LD_ADDR_EXP 86
 778: PUSH
 779: EMPTY
 780: PUSH
 781: EMPTY
 782: PUSH
 783: EMPTY
 784: PUSH
 785: EMPTY
 786: LIST
 787: LIST
 788: LIST
 789: ST_TO_ADDR
// ai_building_constructor = [ 0 , 0 , 0 ] ;
 790: LD_ADDR_EXP 87
 794: PUSH
 795: LD_INT 0
 797: PUSH
 798: LD_INT 0
 800: PUSH
 801: LD_INT 0
 803: PUSH
 804: EMPTY
 805: LIST
 806: LIST
 807: LIST
 808: ST_TO_ADDR
// ai_vehicle_being_moved = [ 0 , 0 , 0 ] ;
 809: LD_ADDR_EXP 88
 813: PUSH
 814: LD_INT 0
 816: PUSH
 817: LD_INT 0
 819: PUSH
 820: LD_INT 0
 822: PUSH
 823: EMPTY
 824: LIST
 825: LIST
 826: LIST
 827: ST_TO_ADDR
// ai_vehicles_having_been_moved = [ [ ] , [ ] , [ ] ] ;
 828: LD_ADDR_EXP 89
 832: PUSH
 833: EMPTY
 834: PUSH
 835: EMPTY
 836: PUSH
 837: EMPTY
 838: PUSH
 839: EMPTY
 840: LIST
 841: LIST
 842: LIST
 843: ST_TO_ADDR
// ai_upcoming_building_data = [ [ ] , [ ] , [ ] ] ;
 844: LD_ADDR_EXP 90
 848: PUSH
 849: EMPTY
 850: PUSH
 851: EMPTY
 852: PUSH
 853: EMPTY
 854: PUSH
 855: EMPTY
 856: LIST
 857: LIST
 858: LIST
 859: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = [ [ ] , [ ] , [ ] ] ;
 860: LD_ADDR_EXP 91
 864: PUSH
 865: EMPTY
 866: PUSH
 867: EMPTY
 868: PUSH
 869: EMPTY
 870: PUSH
 871: EMPTY
 872: LIST
 873: LIST
 874: LIST
 875: ST_TO_ADDR
// ai_near_base_dist = 18 ;
 876: LD_ADDR_EXP 92
 880: PUSH
 881: LD_INT 18
 883: ST_TO_ADDR
// ai_vehicle_attack_delay = [ 0 0$0 , 0 0$0 , 0 0$0 ] ;
 884: LD_ADDR_EXP 93
 888: PUSH
 889: LD_INT 0
 891: PUSH
 892: LD_INT 0
 894: PUSH
 895: LD_INT 0
 897: PUSH
 898: EMPTY
 899: LIST
 900: LIST
 901: LIST
 902: ST_TO_ADDR
// ai_human_attack_delay = [ 0 0$0 , 0 0$0 , 0 0$0 ] ;
 903: LD_ADDR_EXP 94
 907: PUSH
 908: LD_INT 0
 910: PUSH
 911: LD_INT 0
 913: PUSH
 914: LD_INT 0
 916: PUSH
 917: EMPTY
 918: LIST
 919: LIST
 920: LIST
 921: ST_TO_ADDR
// ai_attack_strategy = [ 0 , 0 , 0 ] ;
 922: LD_ADDR_EXP 112
 926: PUSH
 927: LD_INT 0
 929: PUSH
 930: LD_INT 0
 932: PUSH
 933: LD_INT 0
 935: PUSH
 936: EMPTY
 937: LIST
 938: LIST
 939: LIST
 940: ST_TO_ADDR
// ai_cargo_bay = [ 0 , 0 , 0 ] ;
 941: LD_ADDR_EXP 95
 945: PUSH
 946: LD_INT 0
 948: PUSH
 949: LD_INT 0
 951: PUSH
 952: LD_INT 0
 954: PUSH
 955: EMPTY
 956: LIST
 957: LIST
 958: LIST
 959: ST_TO_ADDR
// ai_cargo_bay_under_construction = [ false , false , false ] ;
 960: LD_ADDR_EXP 96
 964: PUSH
 965: LD_INT 0
 967: PUSH
 968: LD_INT 0
 970: PUSH
 971: LD_INT 0
 973: PUSH
 974: EMPTY
 975: LIST
 976: LIST
 977: LIST
 978: ST_TO_ADDR
// ai_cargo_bay_destroy_tick = [ tick , tick , tick ] ;
 979: LD_ADDR_EXP 97
 983: PUSH
 984: LD_OWVAR 1
 988: PUSH
 989: LD_OWVAR 1
 993: PUSH
 994: LD_OWVAR 1
 998: PUSH
 999: EMPTY
1000: LIST
1001: LIST
1002: LIST
1003: ST_TO_ADDR
// ai_crane = [ 0 , 0 , 0 ] ;
1004: LD_ADDR_EXP 98
1008: PUSH
1009: LD_INT 0
1011: PUSH
1012: LD_INT 0
1014: PUSH
1015: LD_INT 0
1017: PUSH
1018: EMPTY
1019: LIST
1020: LIST
1021: LIST
1022: ST_TO_ADDR
// ai_crane_under_construction = [ false , false , false ] ;
1023: LD_ADDR_EXP 99
1027: PUSH
1028: LD_INT 0
1030: PUSH
1031: LD_INT 0
1033: PUSH
1034: LD_INT 0
1036: PUSH
1037: EMPTY
1038: LIST
1039: LIST
1040: LIST
1041: ST_TO_ADDR
// ai_crane_destroy_tick = [ tick , tick , tick ] ;
1042: LD_ADDR_EXP 100
1046: PUSH
1047: LD_OWVAR 1
1051: PUSH
1052: LD_OWVAR 1
1056: PUSH
1057: LD_OWVAR 1
1061: PUSH
1062: EMPTY
1063: LIST
1064: LIST
1065: LIST
1066: ST_TO_ADDR
// ai_crane_is_being_repaired = [ false , false , false ] ;
1067: LD_ADDR_EXP 101
1071: PUSH
1072: LD_INT 0
1074: PUSH
1075: LD_INT 0
1077: PUSH
1078: LD_INT 0
1080: PUSH
1081: EMPTY
1082: LIST
1083: LIST
1084: LIST
1085: ST_TO_ADDR
// ai_crane_driver = [ 0 , 0 , 0 ] ;
1086: LD_ADDR_EXP 102
1090: PUSH
1091: LD_INT 0
1093: PUSH
1094: LD_INT 0
1096: PUSH
1097: LD_INT 0
1099: PUSH
1100: EMPTY
1101: LIST
1102: LIST
1103: LIST
1104: ST_TO_ADDR
// ai_attacking_unit_hex_index = [ ] ;
1105: LD_ADDR_EXP 103
1109: PUSH
1110: EMPTY
1111: ST_TO_ADDR
// ai_retreating_attacking_humans = [ [ ] , [ ] , [ ] ] ;
1112: LD_ADDR_EXP 104
1116: PUSH
1117: EMPTY
1118: PUSH
1119: EMPTY
1120: PUSH
1121: EMPTY
1122: PUSH
1123: EMPTY
1124: LIST
1125: LIST
1126: LIST
1127: ST_TO_ADDR
// ai_control_tower_vehicles = [ [ ] , [ ] , [ ] ] ;
1128: LD_ADDR_EXP 105
1132: PUSH
1133: EMPTY
1134: PUSH
1135: EMPTY
1136: PUSH
1137: EMPTY
1138: PUSH
1139: EMPTY
1140: LIST
1141: LIST
1142: LIST
1143: ST_TO_ADDR
// ai_teleporter_exit_placed = [ false , false , false ] ;
1144: LD_ADDR_EXP 106
1148: PUSH
1149: LD_INT 0
1151: PUSH
1152: LD_INT 0
1154: PUSH
1155: LD_INT 0
1157: PUSH
1158: EMPTY
1159: LIST
1160: LIST
1161: LIST
1162: ST_TO_ADDR
// ai_excepted_buildings = [ [ ] , [ ] , [ ] ] ;
1163: LD_ADDR_EXP 107
1167: PUSH
1168: EMPTY
1169: PUSH
1170: EMPTY
1171: PUSH
1172: EMPTY
1173: PUSH
1174: EMPTY
1175: LIST
1176: LIST
1177: LIST
1178: ST_TO_ADDR
// ai_fact_extension_replace_locations = [ [ ] , [ ] , [ ] ] ;
1179: LD_ADDR_EXP 108
1183: PUSH
1184: EMPTY
1185: PUSH
1186: EMPTY
1187: PUSH
1188: EMPTY
1189: PUSH
1190: EMPTY
1191: LIST
1192: LIST
1193: LIST
1194: ST_TO_ADDR
// ai_facts_with_ext_rebuild_map = [ ] ;
1195: LD_ADDR_EXP 119
1199: PUSH
1200: EMPTY
1201: ST_TO_ADDR
// ai_dismantle_these_buildings = [ [ ] , [ ] , [ ] ] ;
1202: LD_ADDR_EXP 109
1206: PUSH
1207: EMPTY
1208: PUSH
1209: EMPTY
1210: PUSH
1211: EMPTY
1212: PUSH
1213: EMPTY
1214: LIST
1215: LIST
1216: LIST
1217: ST_TO_ADDR
// ai_taufield_vehicles = [ [ ] , [ ] , [ ] ] ;
1218: LD_ADDR_EXP 110
1222: PUSH
1223: EMPTY
1224: PUSH
1225: EMPTY
1226: PUSH
1227: EMPTY
1228: PUSH
1229: EMPTY
1230: LIST
1231: LIST
1232: LIST
1233: ST_TO_ADDR
// ai_implosion_vehicles = [ [ ] , [ ] , [ ] ] ;
1234: LD_ADDR_EXP 111
1238: PUSH
1239: EMPTY
1240: PUSH
1241: EMPTY
1242: PUSH
1243: EMPTY
1244: PUSH
1245: EMPTY
1246: LIST
1247: LIST
1248: LIST
1249: ST_TO_ADDR
// ai_sib_bomb_vehicles = [ [ ] , [ ] , [ ] ] ;
1250: LD_ADDR_EXP 117
1254: PUSH
1255: EMPTY
1256: PUSH
1257: EMPTY
1258: PUSH
1259: EMPTY
1260: PUSH
1261: EMPTY
1262: LIST
1263: LIST
1264: LIST
1265: ST_TO_ADDR
// ai_sib_bomb_remainder = [ ] ;
1266: LD_ADDR_EXP 118
1270: PUSH
1271: EMPTY
1272: ST_TO_ADDR
// ai_behemoths = [ [ ] , [ ] , [ ] ] ;
1273: LD_ADDR_EXP 113
1277: PUSH
1278: EMPTY
1279: PUSH
1280: EMPTY
1281: PUSH
1282: EMPTY
1283: PUSH
1284: EMPTY
1285: LIST
1286: LIST
1287: LIST
1288: ST_TO_ADDR
// ai_behemoth_parking_hexes = [ [ ] , [ [ 233 , 242 ] , [ 219 , 206 ] , [ 205 , 186 ] ] , [ ] ] ;
1289: LD_ADDR_EXP 114
1293: PUSH
1294: EMPTY
1295: PUSH
1296: LD_INT 233
1298: PUSH
1299: LD_INT 242
1301: PUSH
1302: EMPTY
1303: LIST
1304: LIST
1305: PUSH
1306: LD_INT 219
1308: PUSH
1309: LD_INT 206
1311: PUSH
1312: EMPTY
1313: LIST
1314: LIST
1315: PUSH
1316: LD_INT 205
1318: PUSH
1319: LD_INT 186
1321: PUSH
1322: EMPTY
1323: LIST
1324: LIST
1325: PUSH
1326: EMPTY
1327: LIST
1328: LIST
1329: LIST
1330: PUSH
1331: EMPTY
1332: PUSH
1333: EMPTY
1334: LIST
1335: LIST
1336: LIST
1337: ST_TO_ADDR
// ai_behemoth_retreat_hexes = [ [ ] , [ [ 224 , 241 ] , [ 213 , 206 ] , [ 203 , 191 ] ] , [ ] ] ;
1338: LD_ADDR_EXP 146
1342: PUSH
1343: EMPTY
1344: PUSH
1345: LD_INT 224
1347: PUSH
1348: LD_INT 241
1350: PUSH
1351: EMPTY
1352: LIST
1353: LIST
1354: PUSH
1355: LD_INT 213
1357: PUSH
1358: LD_INT 206
1360: PUSH
1361: EMPTY
1362: LIST
1363: LIST
1364: PUSH
1365: LD_INT 203
1367: PUSH
1368: LD_INT 191
1370: PUSH
1371: EMPTY
1372: LIST
1373: LIST
1374: PUSH
1375: EMPTY
1376: LIST
1377: LIST
1378: LIST
1379: PUSH
1380: EMPTY
1381: PUSH
1382: EMPTY
1383: LIST
1384: LIST
1385: LIST
1386: ST_TO_ADDR
// ai_behemoth_damaged = [ [ ] , [ ] , [ ] ] ;
1387: LD_ADDR_EXP 147
1391: PUSH
1392: EMPTY
1393: PUSH
1394: EMPTY
1395: PUSH
1396: EMPTY
1397: PUSH
1398: EMPTY
1399: LIST
1400: LIST
1401: LIST
1402: ST_TO_ADDR
// ai_behemoth_construction_hex = [ [ ] , [ 217 , 237 ] , [ ] ] ;
1403: LD_ADDR_EXP 115
1407: PUSH
1408: EMPTY
1409: PUSH
1410: LD_INT 217
1412: PUSH
1413: LD_INT 237
1415: PUSH
1416: EMPTY
1417: LIST
1418: LIST
1419: PUSH
1420: EMPTY
1421: PUSH
1422: EMPTY
1423: LIST
1424: LIST
1425: LIST
1426: ST_TO_ADDR
// ai_new_attack_commencing = [ false , false , false ] ;
1427: LD_ADDR_EXP 116
1431: PUSH
1432: LD_INT 0
1434: PUSH
1435: LD_INT 0
1437: PUSH
1438: LD_INT 0
1440: PUSH
1441: EMPTY
1442: LIST
1443: LIST
1444: LIST
1445: ST_TO_ADDR
// ai_time_shift_data = [ [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , [ ] ] ;
1446: LD_ADDR_EXP 120
1450: PUSH
1451: EMPTY
1452: PUSH
1453: EMPTY
1454: PUSH
1455: EMPTY
1456: PUSH
1457: EMPTY
1458: PUSH
1459: EMPTY
1460: PUSH
1461: EMPTY
1462: PUSH
1463: EMPTY
1464: PUSH
1465: EMPTY
1466: PUSH
1467: EMPTY
1468: LIST
1469: LIST
1470: LIST
1471: LIST
1472: LIST
1473: LIST
1474: LIST
1475: LIST
1476: ST_TO_ADDR
// ai_time_shift_hexes = [ [ ] , [ ] , [ ] ] ;
1477: LD_ADDR_EXP 121
1481: PUSH
1482: EMPTY
1483: PUSH
1484: EMPTY
1485: PUSH
1486: EMPTY
1487: PUSH
1488: EMPTY
1489: LIST
1490: LIST
1491: LIST
1492: ST_TO_ADDR
// ai_time_shift_hexes_underway = [ [ ] , [ ] , [ ] ] ;
1493: LD_ADDR_EXP 122
1497: PUSH
1498: EMPTY
1499: PUSH
1500: EMPTY
1501: PUSH
1502: EMPTY
1503: PUSH
1504: EMPTY
1505: LIST
1506: LIST
1507: LIST
1508: ST_TO_ADDR
// Initiate_ai_contact_time ;
1509: CALL 5347 0 0
// ai_attack_ground_info_initial = [ ] ;
1513: LD_ADDR_EXP 124
1517: PUSH
1518: EMPTY
1519: ST_TO_ADDR
// ai_attack_ground_info_sustain = [ ] ;
1520: LD_ADDR_EXP 125
1524: PUSH
1525: EMPTY
1526: ST_TO_ADDR
// Initiate_ai_sib_bomb_used_time_matrix ;
1527: CALL 5431 0 0
// ai_sib_bomb_contamination_duration = 175 * 35 ;
1531: LD_ADDR_EXP 127
1535: PUSH
1536: LD_INT 175
1538: PUSH
1539: LD_INT 35
1541: MUL
1542: ST_TO_ADDR
// ai_defence_replace_mines_centerhexes = [ [ ] , [ ] , [ ] ] ;
1543: LD_ADDR_EXP 128
1547: PUSH
1548: EMPTY
1549: PUSH
1550: EMPTY
1551: PUSH
1552: EMPTY
1553: PUSH
1554: EMPTY
1555: LIST
1556: LIST
1557: LIST
1558: ST_TO_ADDR
// ai_defence_max_num_replace_mines = [ - 1 , - 1 , - 1 ] ;
1559: LD_ADDR_EXP 130
1563: PUSH
1564: LD_INT 1
1566: NEG
1567: PUSH
1568: LD_INT 1
1570: NEG
1571: PUSH
1572: LD_INT 1
1574: NEG
1575: PUSH
1576: EMPTY
1577: LIST
1578: LIST
1579: LIST
1580: ST_TO_ADDR
// ai_mine_guys = [ [ ] , [ ] , [ ] ] ;
1581: LD_ADDR_EXP 131
1585: PUSH
1586: EMPTY
1587: PUSH
1588: EMPTY
1589: PUSH
1590: EMPTY
1591: PUSH
1592: EMPTY
1593: LIST
1594: LIST
1595: LIST
1596: ST_TO_ADDR
// ai_defence_mines_hexes = [ [ ] , [ ] , [ ] ] ;
1597: LD_ADDR_EXP 129
1601: PUSH
1602: EMPTY
1603: PUSH
1604: EMPTY
1605: PUSH
1606: EMPTY
1607: PUSH
1608: EMPTY
1609: LIST
1610: LIST
1611: LIST
1612: ST_TO_ADDR
// ai_defence_replace_mines_hexes = [ [ ] , [ ] , [ ] ] ;
1613: LD_ADDR_EXP 132
1617: PUSH
1618: EMPTY
1619: PUSH
1620: EMPTY
1621: PUSH
1622: EMPTY
1623: PUSH
1624: EMPTY
1625: LIST
1626: LIST
1627: LIST
1628: ST_TO_ADDR
// ai_mines = [ ] ;
1629: LD_ADDR_EXP 156
1633: PUSH
1634: EMPTY
1635: ST_TO_ADDR
// MaxNumWarVehicles = [ 0 , 0 , 0 ] ;
1636: LD_ADDR_EXP 133
1640: PUSH
1641: LD_INT 0
1643: PUSH
1644: LD_INT 0
1646: PUSH
1647: LD_INT 0
1649: PUSH
1650: EMPTY
1651: LIST
1652: LIST
1653: LIST
1654: ST_TO_ADDR
// AttackStatus = [ 0 , 0 , 0 ] ;
1655: LD_ADDR_EXP 134
1659: PUSH
1660: LD_INT 0
1662: PUSH
1663: LD_INT 0
1665: PUSH
1666: LD_INT 0
1668: PUSH
1669: EMPTY
1670: LIST
1671: LIST
1672: LIST
1673: ST_TO_ADDR
// AttackTimer = [ 1 1$30 , 1 1$30 , 1 1$30 ] ;
1674: LD_ADDR_EXP 135
1678: PUSH
1679: LD_INT 3150
1681: PUSH
1682: LD_INT 3150
1684: PUSH
1685: LD_INT 3150
1687: PUSH
1688: EMPTY
1689: LIST
1690: LIST
1691: LIST
1692: ST_TO_ADDR
// AttackHexCount = [ 0 , 0 , 0 ] ;
1693: LD_ADDR_EXP 138
1697: PUSH
1698: LD_INT 0
1700: PUSH
1701: LD_INT 0
1703: PUSH
1704: LD_INT 0
1706: PUSH
1707: EMPTY
1708: LIST
1709: LIST
1710: LIST
1711: ST_TO_ADDR
// AttackUnits = [ [ ] , [ ] , [ ] ] ;
1712: LD_ADDR_EXP 136
1716: PUSH
1717: EMPTY
1718: PUSH
1719: EMPTY
1720: PUSH
1721: EMPTY
1722: PUSH
1723: EMPTY
1724: LIST
1725: LIST
1726: LIST
1727: ST_TO_ADDR
// AttackPath = [ [ ] , [ ] , [ ] ] ;
1728: LD_ADDR_EXP 137
1732: PUSH
1733: EMPTY
1734: PUSH
1735: EMPTY
1736: PUSH
1737: EMPTY
1738: PUSH
1739: EMPTY
1740: LIST
1741: LIST
1742: LIST
1743: ST_TO_ADDR
// FinalVehs = [ [ ] , [ ] ] ;
1744: LD_ADDR_EXP 142
1748: PUSH
1749: EMPTY
1750: PUSH
1751: EMPTY
1752: PUSH
1753: EMPTY
1754: LIST
1755: LIST
1756: ST_TO_ADDR
// Fattacking = [ 0 , 0 ] ;
1757: LD_ADDR_EXP 143
1761: PUSH
1762: LD_INT 0
1764: PUSH
1765: LD_INT 0
1767: PUSH
1768: EMPTY
1769: LIST
1770: LIST
1771: ST_TO_ADDR
// Fcount = [ 0 , 0 ] ;
1772: LD_ADDR_EXP 145
1776: PUSH
1777: LD_INT 0
1779: PUSH
1780: LD_INT 0
1782: PUSH
1783: EMPTY
1784: LIST
1785: LIST
1786: ST_TO_ADDR
// mb_bases = [ 1 , 2 , 3 ] ;
1787: LD_ADDR_EXP 160
1791: PUSH
1792: LD_INT 1
1794: PUSH
1795: LD_INT 2
1797: PUSH
1798: LD_INT 3
1800: PUSH
1801: EMPTY
1802: LIST
1803: LIST
1804: LIST
1805: ST_TO_ADDR
// mb_buildings = [ [ ] , [ ] , [ ] ] ;
1806: LD_ADDR_EXP 161
1810: PUSH
1811: EMPTY
1812: PUSH
1813: EMPTY
1814: PUSH
1815: EMPTY
1816: PUSH
1817: EMPTY
1818: LIST
1819: LIST
1820: LIST
1821: ST_TO_ADDR
// mb_damaged_buildings = [ [ ] , [ ] , [ ] ] ;
1822: LD_ADDR_EXP 170
1826: PUSH
1827: EMPTY
1828: PUSH
1829: EMPTY
1830: PUSH
1831: EMPTY
1832: PUSH
1833: EMPTY
1834: LIST
1835: LIST
1836: LIST
1837: ST_TO_ADDR
// mb_buildings_locations = [ [ ] , [ ] , [ ] ] ;
1838: LD_ADDR_EXP 162
1842: PUSH
1843: EMPTY
1844: PUSH
1845: EMPTY
1846: PUSH
1847: EMPTY
1848: PUSH
1849: EMPTY
1850: LIST
1851: LIST
1852: LIST
1853: ST_TO_ADDR
// mb_to_build_list = [ [ ] , [ ] , [ ] ] ;
1854: LD_ADDR_EXP 173
1858: PUSH
1859: EMPTY
1860: PUSH
1861: EMPTY
1862: PUSH
1863: EMPTY
1864: PUSH
1865: EMPTY
1866: LIST
1867: LIST
1868: LIST
1869: ST_TO_ADDR
// mb_people = [ [ ] , [ ] , [ ] ] ;
1870: LD_ADDR_EXP 163
1874: PUSH
1875: EMPTY
1876: PUSH
1877: EMPTY
1878: PUSH
1879: EMPTY
1880: PUSH
1881: EMPTY
1882: LIST
1883: LIST
1884: LIST
1885: ST_TO_ADDR
// mb_injured = [ [ ] , [ ] , [ ] ] ;
1886: LD_ADDR_EXP 171
1890: PUSH
1891: EMPTY
1892: PUSH
1893: EMPTY
1894: PUSH
1895: EMPTY
1896: PUSH
1897: EMPTY
1898: LIST
1899: LIST
1900: LIST
1901: ST_TO_ADDR
// mb_damagedvehicles = [ [ ] , [ ] , [ ] ] ;
1902: LD_ADDR_EXP 172
1906: PUSH
1907: EMPTY
1908: PUSH
1909: EMPTY
1910: PUSH
1911: EMPTY
1912: PUSH
1913: EMPTY
1914: LIST
1915: LIST
1916: LIST
1917: ST_TO_ADDR
// mb_vehicles = [ [ 0 , 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 ] ] ;
1918: LD_ADDR_EXP 164
1922: PUSH
1923: LD_INT 0
1925: PUSH
1926: LD_INT 0
1928: PUSH
1929: LD_INT 0
1931: PUSH
1932: LD_INT 0
1934: PUSH
1935: LD_INT 0
1937: PUSH
1938: LD_INT 0
1940: PUSH
1941: EMPTY
1942: LIST
1943: LIST
1944: LIST
1945: LIST
1946: LIST
1947: LIST
1948: PUSH
1949: LD_INT 0
1951: PUSH
1952: LD_INT 0
1954: PUSH
1955: LD_INT 0
1957: PUSH
1958: LD_INT 0
1960: PUSH
1961: LD_INT 0
1963: PUSH
1964: LD_INT 0
1966: PUSH
1967: LD_INT 0
1969: PUSH
1970: EMPTY
1971: LIST
1972: LIST
1973: LIST
1974: LIST
1975: LIST
1976: LIST
1977: LIST
1978: PUSH
1979: LD_INT 0
1981: PUSH
1982: LD_INT 0
1984: PUSH
1985: LD_INT 0
1987: PUSH
1988: LD_INT 0
1990: PUSH
1991: LD_INT 0
1993: PUSH
1994: LD_INT 0
1996: PUSH
1997: EMPTY
1998: LIST
1999: LIST
2000: LIST
2001: LIST
2002: LIST
2003: LIST
2004: PUSH
2005: EMPTY
2006: LIST
2007: LIST
2008: LIST
2009: ST_TO_ADDR
// mb_vehicles_hexes = [ [ [ 31 , 44 ] , [ 46 , 37 ] , [ 42 , 26 ] , [ 36 , 38 ] , [ 30 , 41 ] , [ 38 , 17 ] ] , [ [ 169 , 171 ] , [ 172 , 171 ] , [ 160 , 164 ] , [ 164 , 150 ] , [ 160 , 150 ] , [ 156 , 139 ] , [ 156 , 134 ] ] , [ [ 178 , 37 ] , [ 164 , 6 ] , [ 168 , 10 ] , [ 165 , 11 ] , [ 174 , 34 ] , [ 187 , 43 ] ] ] ;
2010: LD_ADDR_EXP 165
2014: PUSH
2015: LD_INT 31
2017: PUSH
2018: LD_INT 44
2020: PUSH
2021: EMPTY
2022: LIST
2023: LIST
2024: PUSH
2025: LD_INT 46
2027: PUSH
2028: LD_INT 37
2030: PUSH
2031: EMPTY
2032: LIST
2033: LIST
2034: PUSH
2035: LD_INT 42
2037: PUSH
2038: LD_INT 26
2040: PUSH
2041: EMPTY
2042: LIST
2043: LIST
2044: PUSH
2045: LD_INT 36
2047: PUSH
2048: LD_INT 38
2050: PUSH
2051: EMPTY
2052: LIST
2053: LIST
2054: PUSH
2055: LD_INT 30
2057: PUSH
2058: LD_INT 41
2060: PUSH
2061: EMPTY
2062: LIST
2063: LIST
2064: PUSH
2065: LD_INT 38
2067: PUSH
2068: LD_INT 17
2070: PUSH
2071: EMPTY
2072: LIST
2073: LIST
2074: PUSH
2075: EMPTY
2076: LIST
2077: LIST
2078: LIST
2079: LIST
2080: LIST
2081: LIST
2082: PUSH
2083: LD_INT 169
2085: PUSH
2086: LD_INT 171
2088: PUSH
2089: EMPTY
2090: LIST
2091: LIST
2092: PUSH
2093: LD_INT 172
2095: PUSH
2096: LD_INT 171
2098: PUSH
2099: EMPTY
2100: LIST
2101: LIST
2102: PUSH
2103: LD_INT 160
2105: PUSH
2106: LD_INT 164
2108: PUSH
2109: EMPTY
2110: LIST
2111: LIST
2112: PUSH
2113: LD_INT 164
2115: PUSH
2116: LD_INT 150
2118: PUSH
2119: EMPTY
2120: LIST
2121: LIST
2122: PUSH
2123: LD_INT 160
2125: PUSH
2126: LD_INT 150
2128: PUSH
2129: EMPTY
2130: LIST
2131: LIST
2132: PUSH
2133: LD_INT 156
2135: PUSH
2136: LD_INT 139
2138: PUSH
2139: EMPTY
2140: LIST
2141: LIST
2142: PUSH
2143: LD_INT 156
2145: PUSH
2146: LD_INT 134
2148: PUSH
2149: EMPTY
2150: LIST
2151: LIST
2152: PUSH
2153: EMPTY
2154: LIST
2155: LIST
2156: LIST
2157: LIST
2158: LIST
2159: LIST
2160: LIST
2161: PUSH
2162: LD_INT 178
2164: PUSH
2165: LD_INT 37
2167: PUSH
2168: EMPTY
2169: LIST
2170: LIST
2171: PUSH
2172: LD_INT 164
2174: PUSH
2175: LD_INT 6
2177: PUSH
2178: EMPTY
2179: LIST
2180: LIST
2181: PUSH
2182: LD_INT 168
2184: PUSH
2185: LD_INT 10
2187: PUSH
2188: EMPTY
2189: LIST
2190: LIST
2191: PUSH
2192: LD_INT 165
2194: PUSH
2195: LD_INT 11
2197: PUSH
2198: EMPTY
2199: LIST
2200: LIST
2201: PUSH
2202: LD_INT 174
2204: PUSH
2205: LD_INT 34
2207: PUSH
2208: EMPTY
2209: LIST
2210: LIST
2211: PUSH
2212: LD_INT 187
2214: PUSH
2215: LD_INT 43
2217: PUSH
2218: EMPTY
2219: LIST
2220: LIST
2221: PUSH
2222: EMPTY
2223: LIST
2224: LIST
2225: LIST
2226: LIST
2227: LIST
2228: LIST
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: LIST
2234: ST_TO_ADDR
// mb_vehiclestemp_weapons = [ [ ] , [ ] , [ ] ] ;
2235: LD_ADDR_EXP 166
2239: PUSH
2240: EMPTY
2241: PUSH
2242: EMPTY
2243: PUSH
2244: EMPTY
2245: PUSH
2246: EMPTY
2247: LIST
2248: LIST
2249: LIST
2250: ST_TO_ADDR
// mb_vehiclestemp_chassis = [ [ ] , [ ] , [ ] ] ;
2251: LD_ADDR_EXP 167
2255: PUSH
2256: EMPTY
2257: PUSH
2258: EMPTY
2259: PUSH
2260: EMPTY
2261: PUSH
2262: EMPTY
2263: LIST
2264: LIST
2265: LIST
2266: ST_TO_ADDR
// mb_detected_enemy = [ [ ] , [ ] , [ ] ] ;
2267: LD_ADDR_EXP 179
2271: PUSH
2272: EMPTY
2273: PUSH
2274: EMPTY
2275: PUSH
2276: EMPTY
2277: PUSH
2278: EMPTY
2279: LIST
2280: LIST
2281: LIST
2282: ST_TO_ADDR
// mb_re_vehicles = [ [ 0 , 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 ] ] ;
2283: LD_ADDR_EXP 168
2287: PUSH
2288: LD_INT 0
2290: PUSH
2291: LD_INT 0
2293: PUSH
2294: LD_INT 0
2296: PUSH
2297: LD_INT 0
2299: PUSH
2300: LD_INT 0
2302: PUSH
2303: LD_INT 0
2305: PUSH
2306: EMPTY
2307: LIST
2308: LIST
2309: LIST
2310: LIST
2311: LIST
2312: LIST
2313: PUSH
2314: LD_INT 0
2316: PUSH
2317: LD_INT 0
2319: PUSH
2320: LD_INT 0
2322: PUSH
2323: LD_INT 0
2325: PUSH
2326: LD_INT 0
2328: PUSH
2329: LD_INT 0
2331: PUSH
2332: LD_INT 0
2334: PUSH
2335: EMPTY
2336: LIST
2337: LIST
2338: LIST
2339: LIST
2340: LIST
2341: LIST
2342: LIST
2343: PUSH
2344: LD_INT 0
2346: PUSH
2347: LD_INT 0
2349: PUSH
2350: LD_INT 0
2352: PUSH
2353: LD_INT 0
2355: PUSH
2356: LD_INT 0
2358: PUSH
2359: LD_INT 0
2361: PUSH
2362: EMPTY
2363: LIST
2364: LIST
2365: LIST
2366: LIST
2367: LIST
2368: LIST
2369: PUSH
2370: EMPTY
2371: LIST
2372: LIST
2373: LIST
2374: ST_TO_ADDR
// mb_re_timer = [ 0 , 0 , 0 ] ;
2375: LD_ADDR_EXP 169
2379: PUSH
2380: LD_INT 0
2382: PUSH
2383: LD_INT 0
2385: PUSH
2386: LD_INT 0
2388: PUSH
2389: EMPTY
2390: LIST
2391: LIST
2392: LIST
2393: ST_TO_ADDR
// ai_patrol = [ [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] , [ ] ] ;
2394: LD_ADDR_EXP 183
2398: PUSH
2399: LD_INT 0
2401: PUSH
2402: LD_INT 0
2404: PUSH
2405: LD_INT 0
2407: PUSH
2408: LD_INT 0
2410: PUSH
2411: LD_INT 0
2413: PUSH
2414: LD_INT 0
2416: PUSH
2417: LD_INT 0
2419: PUSH
2420: EMPTY
2421: LIST
2422: LIST
2423: LIST
2424: LIST
2425: LIST
2426: LIST
2427: LIST
2428: PUSH
2429: LD_INT 0
2431: PUSH
2432: LD_INT 0
2434: PUSH
2435: LD_INT 0
2437: PUSH
2438: LD_INT 0
2440: PUSH
2441: LD_INT 0
2443: PUSH
2444: LD_INT 0
2446: PUSH
2447: LD_INT 0
2449: PUSH
2450: EMPTY
2451: LIST
2452: LIST
2453: LIST
2454: LIST
2455: LIST
2456: LIST
2457: LIST
2458: PUSH
2459: EMPTY
2460: PUSH
2461: EMPTY
2462: LIST
2463: LIST
2464: LIST
2465: ST_TO_ADDR
// ai_patrol_timer = [ 3 3$0 , 3 3$0 , 0 ] ;
2466: LD_ADDR_EXP 184
2470: PUSH
2471: LD_INT 6300
2473: PUSH
2474: LD_INT 6300
2476: PUSH
2477: LD_INT 0
2479: PUSH
2480: EMPTY
2481: LIST
2482: LIST
2483: LIST
2484: ST_TO_ADDR
// ai_patrol_respawntime = [ 0 , 0 , 0 ] ;
2485: LD_ADDR_EXP 185
2489: PUSH
2490: LD_INT 0
2492: PUSH
2493: LD_INT 0
2495: PUSH
2496: LD_INT 0
2498: PUSH
2499: EMPTY
2500: LIST
2501: LIST
2502: LIST
2503: ST_TO_ADDR
// ai_patrol_out = [ ] ;
2504: LD_ADDR_EXP 187
2508: PUSH
2509: EMPTY
2510: ST_TO_ADDR
// ai_patrol_hexcount = [ 1 , 1 , 1 ] ;
2511: LD_ADDR_EXP 189
2515: PUSH
2516: LD_INT 1
2518: PUSH
2519: LD_INT 1
2521: PUSH
2522: LD_INT 1
2524: PUSH
2525: EMPTY
2526: LIST
2527: LIST
2528: LIST
2529: ST_TO_ADDR
// ai_patrol_status = [ 0 , 0 , 0 ] ;
2530: LD_ADDR_EXP 190
2534: PUSH
2535: LD_INT 0
2537: PUSH
2538: LD_INT 0
2540: PUSH
2541: LD_INT 0
2543: PUSH
2544: EMPTY
2545: LIST
2546: LIST
2547: LIST
2548: ST_TO_ADDR
// ai_patrol_engaging = [ 0 , 0 , 0 ] ;
2549: LD_ADDR_EXP 191
2553: PUSH
2554: LD_INT 0
2556: PUSH
2557: LD_INT 0
2559: PUSH
2560: LD_INT 0
2562: PUSH
2563: EMPTY
2564: LIST
2565: LIST
2566: LIST
2567: ST_TO_ADDR
// ai_patrol_weapons = [ [ ] , [ ] ] ;
2568: LD_ADDR_EXP 186
2572: PUSH
2573: EMPTY
2574: PUSH
2575: EMPTY
2576: PUSH
2577: EMPTY
2578: LIST
2579: LIST
2580: ST_TO_ADDR
// ai_patrol_PathChoice = [ 1 , 1 , 0 ] ;
2581: LD_ADDR_EXP 192
2585: PUSH
2586: LD_INT 1
2588: PUSH
2589: LD_INT 1
2591: PUSH
2592: LD_INT 0
2594: PUSH
2595: EMPTY
2596: LIST
2597: LIST
2598: LIST
2599: ST_TO_ADDR
// ai_patrol_path = [ [ ] , [ ] , [ ] ] ;
2600: LD_ADDR_EXP 188
2604: PUSH
2605: EMPTY
2606: PUSH
2607: EMPTY
2608: PUSH
2609: EMPTY
2610: PUSH
2611: EMPTY
2612: LIST
2613: LIST
2614: LIST
2615: ST_TO_ADDR
// possible_paths = [ [ [ [ 72 , 132 ] , [ 64 , 115 ] , [ 57 , 100 ] , [ 52 , 88 ] , [ 45 , 72 ] , [ 40 , 60 ] , [ 40 , 50 ] , [ 32 , 33 ] , [ 35 , 22 ] , [ 43 , 22 ] , [ 35 , 30 ] , [ 43 , 60 ] , [ 48 , 76 ] , [ 55 , 92 ] , [ 60 , 106 ] , [ 64 , 115 ] , [ 72 , 132 ] ] , [ [ 72 , 132 ] , [ 80 , 120 ] , [ 90 , 115 ] , [ 112 , 114 ] , [ 114 , 99 ] , [ 97 , 87 ] , [ 88 , 86 ] , [ 75 , 79 ] , [ 61 , 75 ] , [ 54 , 87 ] , [ 59 , 100 ] , [ 69 , 122 ] ] , [ [ 72 , 132 ] , [ 64 , 115 ] , [ 57 , 100 ] , [ 52 , 88 ] , [ 45 , 72 ] , [ 40 , 60 ] , [ 40 , 50 ] , [ 32 , 33 ] , [ 35 , 22 ] , [ 43 , 22 ] , [ 51 , 14 ] , [ 64 , 11 ] , [ 81 , 14 ] , [ 94 , 29 ] , [ 96 , 40 ] , [ 82 , 39 ] , [ 62 , 29 ] , [ 43 , 22 ] , [ 34 , 30 ] , [ 41 , 57 ] , [ 46 , 72 ] , [ 52 , 86 ] , [ 58 , 100 ] , [ 66 , 117 ] , [ 72 , 134 ] ] , [ [ 72 , 132 ] , [ 64 , 115 ] , [ 57 , 100 ] , [ 52 , 88 ] , [ 45 , 72 ] , [ 40 , 60 ] , [ 40 , 50 ] , [ 32 , 33 ] , [ 35 , 22 ] , [ 43 , 22 ] , [ 51 , 12 ] , [ 69 , 10 ] , [ 81 , 6 ] , [ 100 , 6 ] , [ 114 , 18 ] , [ 124 , 34 ] , [ 136 , 45 ] , [ 143 , 58 ] , [ 144 , 70 ] , [ 131 , 68 ] , [ 114 , 53 ] , [ 97 , 37 ] , [ 85 , 31 ] , [ 70 , 24 ] , [ 57 , 25 ] , [ 40 , 25 ] , [ 32 , 36 ] , [ 42 , 60 ] , [ 46 , 74 ] , [ 52 , 91 ] , [ 59 , 106 ] , [ 68 , 123 ] ] , [ ] ] , [ [ [ 210 , 119 ] , [ 202 , 103 ] , [ 194 , 87 ] , [ 191 , 71 ] , [ 183 , 54 ] , [ 167 , 31 ] , [ 185 , 55 ] , [ 190 , 70 ] , [ 195 , 91 ] , [ 202 , 105 ] , [ 209 , 121 ] ] , [ [ 210 , 119 ] , [ 202 , 103 ] , [ 194 , 87 ] , [ 191 , 71 ] , [ 183 , 54 ] , [ 167 , 31 ] , [ 143 , 22 ] , [ 125 , 18 ] , [ 105 , 9 ] , [ 86 , 8 ] , [ 74 , 12 ] , [ 83 , 31 ] , [ 102 , 39 ] , [ 121 , 40 ] , [ 132 , 32 ] , [ 145 , 25 ] , [ 163 , 25 ] , [ 178 , 47 ] , [ 186 , 57 ] , [ 193 , 75 ] , [ 193 , 87 ] , [ 202 , 106 ] , [ 211 , 124 ] ] , [ [ 210 , 119 ] , [ 202 , 103 ] , [ 194 , 87 ] , [ 191 , 71 ] , [ 183 , 54 ] , [ 167 , 31 ] , [ 143 , 22 ] , [ 127 , 22 ] , [ 111 , 22 ] , [ 109 , 32 ] , [ 128 , 48 ] , [ 144 , 46 ] , [ 145 , 27 ] , [ 163 , 25 ] , [ 178 , 47 ] , [ 186 , 57 ] , [ 193 , 75 ] , [ 193 , 87 ] , [ 202 , 106 ] , [ 211 , 124 ] ] , [ [ 210 , 119 ] , [ 202 , 103 ] , [ 194 , 87 ] , [ 191 , 71 ] , [ 183 , 54 ] , [ 167 , 31 ] , [ 143 , 22 ] , [ 143 , 43 ] , [ 141 , 63 ] , [ 126 , 64 ] , [ 104 , 42 ] , [ 101 , 21 ] , [ 114 , 17 ] , [ 129 , 19 ] , [ 143 , 20 ] , [ 163 , 25 ] , [ 178 , 47 ] , [ 186 , 57 ] , [ 193 , 75 ] , [ 193 , 87 ] , [ 202 , 106 ] , [ 211 , 124 ] ] , [ ] ] , [ [ [ 83 , 147 ] , [ 67 , 120 ] , [ 55 , 92 ] , [ 52 , 71 ] ] , [ [ 125 , 130 ] , [ 113 , 107 ] , [ 103 , 92 ] ] , [ [ 73 , 54 ] , [ 74 , 32 ] , [ 80 , 15 ] ] , [ [ 88 , 61 ] , [ 96 , 46 ] , [ 105 , 34 ] , [ 119 , 29 ] ] , [ [ 108 , 76 ] , [ 118 , 60 ] , [ 136 , 59 ] , [ 142 , 53 ] ] , [ [ 127 , 133 ] , [ 139 , 152 ] , [ 145 , 166 ] , [ 149 , 179 ] , [ 151 , 193 ] , [ 148 , 206 ] , [ 145 , 218 ] , [ 145 , 227 ] , [ 157 , 242 ] ] , [ [ 92 , 166 ] , [ 105 , 197 ] , [ 117 , 209 ] , [ 125 , 223 ] , [ 141 , 235 ] , [ 159 , 241 ] ] ] ] ;
2616: LD_ADDR_EXP 193
2620: PUSH
2621: LD_INT 72
2623: PUSH
2624: LD_INT 132
2626: PUSH
2627: EMPTY
2628: LIST
2629: LIST
2630: PUSH
2631: LD_INT 64
2633: PUSH
2634: LD_INT 115
2636: PUSH
2637: EMPTY
2638: LIST
2639: LIST
2640: PUSH
2641: LD_INT 57
2643: PUSH
2644: LD_INT 100
2646: PUSH
2647: EMPTY
2648: LIST
2649: LIST
2650: PUSH
2651: LD_INT 52
2653: PUSH
2654: LD_INT 88
2656: PUSH
2657: EMPTY
2658: LIST
2659: LIST
2660: PUSH
2661: LD_INT 45
2663: PUSH
2664: LD_INT 72
2666: PUSH
2667: EMPTY
2668: LIST
2669: LIST
2670: PUSH
2671: LD_INT 40
2673: PUSH
2674: LD_INT 60
2676: PUSH
2677: EMPTY
2678: LIST
2679: LIST
2680: PUSH
2681: LD_INT 40
2683: PUSH
2684: LD_INT 50
2686: PUSH
2687: EMPTY
2688: LIST
2689: LIST
2690: PUSH
2691: LD_INT 32
2693: PUSH
2694: LD_INT 33
2696: PUSH
2697: EMPTY
2698: LIST
2699: LIST
2700: PUSH
2701: LD_INT 35
2703: PUSH
2704: LD_INT 22
2706: PUSH
2707: EMPTY
2708: LIST
2709: LIST
2710: PUSH
2711: LD_INT 43
2713: PUSH
2714: LD_INT 22
2716: PUSH
2717: EMPTY
2718: LIST
2719: LIST
2720: PUSH
2721: LD_INT 35
2723: PUSH
2724: LD_INT 30
2726: PUSH
2727: EMPTY
2728: LIST
2729: LIST
2730: PUSH
2731: LD_INT 43
2733: PUSH
2734: LD_INT 60
2736: PUSH
2737: EMPTY
2738: LIST
2739: LIST
2740: PUSH
2741: LD_INT 48
2743: PUSH
2744: LD_INT 76
2746: PUSH
2747: EMPTY
2748: LIST
2749: LIST
2750: PUSH
2751: LD_INT 55
2753: PUSH
2754: LD_INT 92
2756: PUSH
2757: EMPTY
2758: LIST
2759: LIST
2760: PUSH
2761: LD_INT 60
2763: PUSH
2764: LD_INT 106
2766: PUSH
2767: EMPTY
2768: LIST
2769: LIST
2770: PUSH
2771: LD_INT 64
2773: PUSH
2774: LD_INT 115
2776: PUSH
2777: EMPTY
2778: LIST
2779: LIST
2780: PUSH
2781: LD_INT 72
2783: PUSH
2784: LD_INT 132
2786: PUSH
2787: EMPTY
2788: LIST
2789: LIST
2790: PUSH
2791: EMPTY
2792: LIST
2793: LIST
2794: LIST
2795: LIST
2796: LIST
2797: LIST
2798: LIST
2799: LIST
2800: LIST
2801: LIST
2802: LIST
2803: LIST
2804: LIST
2805: LIST
2806: LIST
2807: LIST
2808: LIST
2809: PUSH
2810: LD_INT 72
2812: PUSH
2813: LD_INT 132
2815: PUSH
2816: EMPTY
2817: LIST
2818: LIST
2819: PUSH
2820: LD_INT 80
2822: PUSH
2823: LD_INT 120
2825: PUSH
2826: EMPTY
2827: LIST
2828: LIST
2829: PUSH
2830: LD_INT 90
2832: PUSH
2833: LD_INT 115
2835: PUSH
2836: EMPTY
2837: LIST
2838: LIST
2839: PUSH
2840: LD_INT 112
2842: PUSH
2843: LD_INT 114
2845: PUSH
2846: EMPTY
2847: LIST
2848: LIST
2849: PUSH
2850: LD_INT 114
2852: PUSH
2853: LD_INT 99
2855: PUSH
2856: EMPTY
2857: LIST
2858: LIST
2859: PUSH
2860: LD_INT 97
2862: PUSH
2863: LD_INT 87
2865: PUSH
2866: EMPTY
2867: LIST
2868: LIST
2869: PUSH
2870: LD_INT 88
2872: PUSH
2873: LD_INT 86
2875: PUSH
2876: EMPTY
2877: LIST
2878: LIST
2879: PUSH
2880: LD_INT 75
2882: PUSH
2883: LD_INT 79
2885: PUSH
2886: EMPTY
2887: LIST
2888: LIST
2889: PUSH
2890: LD_INT 61
2892: PUSH
2893: LD_INT 75
2895: PUSH
2896: EMPTY
2897: LIST
2898: LIST
2899: PUSH
2900: LD_INT 54
2902: PUSH
2903: LD_INT 87
2905: PUSH
2906: EMPTY
2907: LIST
2908: LIST
2909: PUSH
2910: LD_INT 59
2912: PUSH
2913: LD_INT 100
2915: PUSH
2916: EMPTY
2917: LIST
2918: LIST
2919: PUSH
2920: LD_INT 69
2922: PUSH
2923: LD_INT 122
2925: PUSH
2926: EMPTY
2927: LIST
2928: LIST
2929: PUSH
2930: EMPTY
2931: LIST
2932: LIST
2933: LIST
2934: LIST
2935: LIST
2936: LIST
2937: LIST
2938: LIST
2939: LIST
2940: LIST
2941: LIST
2942: LIST
2943: PUSH
2944: LD_INT 72
2946: PUSH
2947: LD_INT 132
2949: PUSH
2950: EMPTY
2951: LIST
2952: LIST
2953: PUSH
2954: LD_INT 64
2956: PUSH
2957: LD_INT 115
2959: PUSH
2960: EMPTY
2961: LIST
2962: LIST
2963: PUSH
2964: LD_INT 57
2966: PUSH
2967: LD_INT 100
2969: PUSH
2970: EMPTY
2971: LIST
2972: LIST
2973: PUSH
2974: LD_INT 52
2976: PUSH
2977: LD_INT 88
2979: PUSH
2980: EMPTY
2981: LIST
2982: LIST
2983: PUSH
2984: LD_INT 45
2986: PUSH
2987: LD_INT 72
2989: PUSH
2990: EMPTY
2991: LIST
2992: LIST
2993: PUSH
2994: LD_INT 40
2996: PUSH
2997: LD_INT 60
2999: PUSH
3000: EMPTY
3001: LIST
3002: LIST
3003: PUSH
3004: LD_INT 40
3006: PUSH
3007: LD_INT 50
3009: PUSH
3010: EMPTY
3011: LIST
3012: LIST
3013: PUSH
3014: LD_INT 32
3016: PUSH
3017: LD_INT 33
3019: PUSH
3020: EMPTY
3021: LIST
3022: LIST
3023: PUSH
3024: LD_INT 35
3026: PUSH
3027: LD_INT 22
3029: PUSH
3030: EMPTY
3031: LIST
3032: LIST
3033: PUSH
3034: LD_INT 43
3036: PUSH
3037: LD_INT 22
3039: PUSH
3040: EMPTY
3041: LIST
3042: LIST
3043: PUSH
3044: LD_INT 51
3046: PUSH
3047: LD_INT 14
3049: PUSH
3050: EMPTY
3051: LIST
3052: LIST
3053: PUSH
3054: LD_INT 64
3056: PUSH
3057: LD_INT 11
3059: PUSH
3060: EMPTY
3061: LIST
3062: LIST
3063: PUSH
3064: LD_INT 81
3066: PUSH
3067: LD_INT 14
3069: PUSH
3070: EMPTY
3071: LIST
3072: LIST
3073: PUSH
3074: LD_INT 94
3076: PUSH
3077: LD_INT 29
3079: PUSH
3080: EMPTY
3081: LIST
3082: LIST
3083: PUSH
3084: LD_INT 96
3086: PUSH
3087: LD_INT 40
3089: PUSH
3090: EMPTY
3091: LIST
3092: LIST
3093: PUSH
3094: LD_INT 82
3096: PUSH
3097: LD_INT 39
3099: PUSH
3100: EMPTY
3101: LIST
3102: LIST
3103: PUSH
3104: LD_INT 62
3106: PUSH
3107: LD_INT 29
3109: PUSH
3110: EMPTY
3111: LIST
3112: LIST
3113: PUSH
3114: LD_INT 43
3116: PUSH
3117: LD_INT 22
3119: PUSH
3120: EMPTY
3121: LIST
3122: LIST
3123: PUSH
3124: LD_INT 34
3126: PUSH
3127: LD_INT 30
3129: PUSH
3130: EMPTY
3131: LIST
3132: LIST
3133: PUSH
3134: LD_INT 41
3136: PUSH
3137: LD_INT 57
3139: PUSH
3140: EMPTY
3141: LIST
3142: LIST
3143: PUSH
3144: LD_INT 46
3146: PUSH
3147: LD_INT 72
3149: PUSH
3150: EMPTY
3151: LIST
3152: LIST
3153: PUSH
3154: LD_INT 52
3156: PUSH
3157: LD_INT 86
3159: PUSH
3160: EMPTY
3161: LIST
3162: LIST
3163: PUSH
3164: LD_INT 58
3166: PUSH
3167: LD_INT 100
3169: PUSH
3170: EMPTY
3171: LIST
3172: LIST
3173: PUSH
3174: LD_INT 66
3176: PUSH
3177: LD_INT 117
3179: PUSH
3180: EMPTY
3181: LIST
3182: LIST
3183: PUSH
3184: LD_INT 72
3186: PUSH
3187: LD_INT 134
3189: PUSH
3190: EMPTY
3191: LIST
3192: LIST
3193: PUSH
3194: EMPTY
3195: LIST
3196: LIST
3197: LIST
3198: LIST
3199: LIST
3200: LIST
3201: LIST
3202: LIST
3203: LIST
3204: LIST
3205: LIST
3206: LIST
3207: LIST
3208: LIST
3209: LIST
3210: LIST
3211: LIST
3212: LIST
3213: LIST
3214: LIST
3215: LIST
3216: LIST
3217: LIST
3218: LIST
3219: LIST
3220: PUSH
3221: LD_INT 72
3223: PUSH
3224: LD_INT 132
3226: PUSH
3227: EMPTY
3228: LIST
3229: LIST
3230: PUSH
3231: LD_INT 64
3233: PUSH
3234: LD_INT 115
3236: PUSH
3237: EMPTY
3238: LIST
3239: LIST
3240: PUSH
3241: LD_INT 57
3243: PUSH
3244: LD_INT 100
3246: PUSH
3247: EMPTY
3248: LIST
3249: LIST
3250: PUSH
3251: LD_INT 52
3253: PUSH
3254: LD_INT 88
3256: PUSH
3257: EMPTY
3258: LIST
3259: LIST
3260: PUSH
3261: LD_INT 45
3263: PUSH
3264: LD_INT 72
3266: PUSH
3267: EMPTY
3268: LIST
3269: LIST
3270: PUSH
3271: LD_INT 40
3273: PUSH
3274: LD_INT 60
3276: PUSH
3277: EMPTY
3278: LIST
3279: LIST
3280: PUSH
3281: LD_INT 40
3283: PUSH
3284: LD_INT 50
3286: PUSH
3287: EMPTY
3288: LIST
3289: LIST
3290: PUSH
3291: LD_INT 32
3293: PUSH
3294: LD_INT 33
3296: PUSH
3297: EMPTY
3298: LIST
3299: LIST
3300: PUSH
3301: LD_INT 35
3303: PUSH
3304: LD_INT 22
3306: PUSH
3307: EMPTY
3308: LIST
3309: LIST
3310: PUSH
3311: LD_INT 43
3313: PUSH
3314: LD_INT 22
3316: PUSH
3317: EMPTY
3318: LIST
3319: LIST
3320: PUSH
3321: LD_INT 51
3323: PUSH
3324: LD_INT 12
3326: PUSH
3327: EMPTY
3328: LIST
3329: LIST
3330: PUSH
3331: LD_INT 69
3333: PUSH
3334: LD_INT 10
3336: PUSH
3337: EMPTY
3338: LIST
3339: LIST
3340: PUSH
3341: LD_INT 81
3343: PUSH
3344: LD_INT 6
3346: PUSH
3347: EMPTY
3348: LIST
3349: LIST
3350: PUSH
3351: LD_INT 100
3353: PUSH
3354: LD_INT 6
3356: PUSH
3357: EMPTY
3358: LIST
3359: LIST
3360: PUSH
3361: LD_INT 114
3363: PUSH
3364: LD_INT 18
3366: PUSH
3367: EMPTY
3368: LIST
3369: LIST
3370: PUSH
3371: LD_INT 124
3373: PUSH
3374: LD_INT 34
3376: PUSH
3377: EMPTY
3378: LIST
3379: LIST
3380: PUSH
3381: LD_INT 136
3383: PUSH
3384: LD_INT 45
3386: PUSH
3387: EMPTY
3388: LIST
3389: LIST
3390: PUSH
3391: LD_INT 143
3393: PUSH
3394: LD_INT 58
3396: PUSH
3397: EMPTY
3398: LIST
3399: LIST
3400: PUSH
3401: LD_INT 144
3403: PUSH
3404: LD_INT 70
3406: PUSH
3407: EMPTY
3408: LIST
3409: LIST
3410: PUSH
3411: LD_INT 131
3413: PUSH
3414: LD_INT 68
3416: PUSH
3417: EMPTY
3418: LIST
3419: LIST
3420: PUSH
3421: LD_INT 114
3423: PUSH
3424: LD_INT 53
3426: PUSH
3427: EMPTY
3428: LIST
3429: LIST
3430: PUSH
3431: LD_INT 97
3433: PUSH
3434: LD_INT 37
3436: PUSH
3437: EMPTY
3438: LIST
3439: LIST
3440: PUSH
3441: LD_INT 85
3443: PUSH
3444: LD_INT 31
3446: PUSH
3447: EMPTY
3448: LIST
3449: LIST
3450: PUSH
3451: LD_INT 70
3453: PUSH
3454: LD_INT 24
3456: PUSH
3457: EMPTY
3458: LIST
3459: LIST
3460: PUSH
3461: LD_INT 57
3463: PUSH
3464: LD_INT 25
3466: PUSH
3467: EMPTY
3468: LIST
3469: LIST
3470: PUSH
3471: LD_INT 40
3473: PUSH
3474: LD_INT 25
3476: PUSH
3477: EMPTY
3478: LIST
3479: LIST
3480: PUSH
3481: LD_INT 32
3483: PUSH
3484: LD_INT 36
3486: PUSH
3487: EMPTY
3488: LIST
3489: LIST
3490: PUSH
3491: LD_INT 42
3493: PUSH
3494: LD_INT 60
3496: PUSH
3497: EMPTY
3498: LIST
3499: LIST
3500: PUSH
3501: LD_INT 46
3503: PUSH
3504: LD_INT 74
3506: PUSH
3507: EMPTY
3508: LIST
3509: LIST
3510: PUSH
3511: LD_INT 52
3513: PUSH
3514: LD_INT 91
3516: PUSH
3517: EMPTY
3518: LIST
3519: LIST
3520: PUSH
3521: LD_INT 59
3523: PUSH
3524: LD_INT 106
3526: PUSH
3527: EMPTY
3528: LIST
3529: LIST
3530: PUSH
3531: LD_INT 68
3533: PUSH
3534: LD_INT 123
3536: PUSH
3537: EMPTY
3538: LIST
3539: LIST
3540: PUSH
3541: EMPTY
3542: LIST
3543: LIST
3544: LIST
3545: LIST
3546: LIST
3547: LIST
3548: LIST
3549: LIST
3550: LIST
3551: LIST
3552: LIST
3553: LIST
3554: LIST
3555: LIST
3556: LIST
3557: LIST
3558: LIST
3559: LIST
3560: LIST
3561: LIST
3562: LIST
3563: LIST
3564: LIST
3565: LIST
3566: LIST
3567: LIST
3568: LIST
3569: LIST
3570: LIST
3571: LIST
3572: LIST
3573: LIST
3574: PUSH
3575: EMPTY
3576: PUSH
3577: EMPTY
3578: LIST
3579: LIST
3580: LIST
3581: LIST
3582: LIST
3583: PUSH
3584: LD_INT 210
3586: PUSH
3587: LD_INT 119
3589: PUSH
3590: EMPTY
3591: LIST
3592: LIST
3593: PUSH
3594: LD_INT 202
3596: PUSH
3597: LD_INT 103
3599: PUSH
3600: EMPTY
3601: LIST
3602: LIST
3603: PUSH
3604: LD_INT 194
3606: PUSH
3607: LD_INT 87
3609: PUSH
3610: EMPTY
3611: LIST
3612: LIST
3613: PUSH
3614: LD_INT 191
3616: PUSH
3617: LD_INT 71
3619: PUSH
3620: EMPTY
3621: LIST
3622: LIST
3623: PUSH
3624: LD_INT 183
3626: PUSH
3627: LD_INT 54
3629: PUSH
3630: EMPTY
3631: LIST
3632: LIST
3633: PUSH
3634: LD_INT 167
3636: PUSH
3637: LD_INT 31
3639: PUSH
3640: EMPTY
3641: LIST
3642: LIST
3643: PUSH
3644: LD_INT 185
3646: PUSH
3647: LD_INT 55
3649: PUSH
3650: EMPTY
3651: LIST
3652: LIST
3653: PUSH
3654: LD_INT 190
3656: PUSH
3657: LD_INT 70
3659: PUSH
3660: EMPTY
3661: LIST
3662: LIST
3663: PUSH
3664: LD_INT 195
3666: PUSH
3667: LD_INT 91
3669: PUSH
3670: EMPTY
3671: LIST
3672: LIST
3673: PUSH
3674: LD_INT 202
3676: PUSH
3677: LD_INT 105
3679: PUSH
3680: EMPTY
3681: LIST
3682: LIST
3683: PUSH
3684: LD_INT 209
3686: PUSH
3687: LD_INT 121
3689: PUSH
3690: EMPTY
3691: LIST
3692: LIST
3693: PUSH
3694: EMPTY
3695: LIST
3696: LIST
3697: LIST
3698: LIST
3699: LIST
3700: LIST
3701: LIST
3702: LIST
3703: LIST
3704: LIST
3705: LIST
3706: PUSH
3707: LD_INT 210
3709: PUSH
3710: LD_INT 119
3712: PUSH
3713: EMPTY
3714: LIST
3715: LIST
3716: PUSH
3717: LD_INT 202
3719: PUSH
3720: LD_INT 103
3722: PUSH
3723: EMPTY
3724: LIST
3725: LIST
3726: PUSH
3727: LD_INT 194
3729: PUSH
3730: LD_INT 87
3732: PUSH
3733: EMPTY
3734: LIST
3735: LIST
3736: PUSH
3737: LD_INT 191
3739: PUSH
3740: LD_INT 71
3742: PUSH
3743: EMPTY
3744: LIST
3745: LIST
3746: PUSH
3747: LD_INT 183
3749: PUSH
3750: LD_INT 54
3752: PUSH
3753: EMPTY
3754: LIST
3755: LIST
3756: PUSH
3757: LD_INT 167
3759: PUSH
3760: LD_INT 31
3762: PUSH
3763: EMPTY
3764: LIST
3765: LIST
3766: PUSH
3767: LD_INT 143
3769: PUSH
3770: LD_INT 22
3772: PUSH
3773: EMPTY
3774: LIST
3775: LIST
3776: PUSH
3777: LD_INT 125
3779: PUSH
3780: LD_INT 18
3782: PUSH
3783: EMPTY
3784: LIST
3785: LIST
3786: PUSH
3787: LD_INT 105
3789: PUSH
3790: LD_INT 9
3792: PUSH
3793: EMPTY
3794: LIST
3795: LIST
3796: PUSH
3797: LD_INT 86
3799: PUSH
3800: LD_INT 8
3802: PUSH
3803: EMPTY
3804: LIST
3805: LIST
3806: PUSH
3807: LD_INT 74
3809: PUSH
3810: LD_INT 12
3812: PUSH
3813: EMPTY
3814: LIST
3815: LIST
3816: PUSH
3817: LD_INT 83
3819: PUSH
3820: LD_INT 31
3822: PUSH
3823: EMPTY
3824: LIST
3825: LIST
3826: PUSH
3827: LD_INT 102
3829: PUSH
3830: LD_INT 39
3832: PUSH
3833: EMPTY
3834: LIST
3835: LIST
3836: PUSH
3837: LD_INT 121
3839: PUSH
3840: LD_INT 40
3842: PUSH
3843: EMPTY
3844: LIST
3845: LIST
3846: PUSH
3847: LD_INT 132
3849: PUSH
3850: LD_INT 32
3852: PUSH
3853: EMPTY
3854: LIST
3855: LIST
3856: PUSH
3857: LD_INT 145
3859: PUSH
3860: LD_INT 25
3862: PUSH
3863: EMPTY
3864: LIST
3865: LIST
3866: PUSH
3867: LD_INT 163
3869: PUSH
3870: LD_INT 25
3872: PUSH
3873: EMPTY
3874: LIST
3875: LIST
3876: PUSH
3877: LD_INT 178
3879: PUSH
3880: LD_INT 47
3882: PUSH
3883: EMPTY
3884: LIST
3885: LIST
3886: PUSH
3887: LD_INT 186
3889: PUSH
3890: LD_INT 57
3892: PUSH
3893: EMPTY
3894: LIST
3895: LIST
3896: PUSH
3897: LD_INT 193
3899: PUSH
3900: LD_INT 75
3902: PUSH
3903: EMPTY
3904: LIST
3905: LIST
3906: PUSH
3907: LD_INT 193
3909: PUSH
3910: LD_INT 87
3912: PUSH
3913: EMPTY
3914: LIST
3915: LIST
3916: PUSH
3917: LD_INT 202
3919: PUSH
3920: LD_INT 106
3922: PUSH
3923: EMPTY
3924: LIST
3925: LIST
3926: PUSH
3927: LD_INT 211
3929: PUSH
3930: LD_INT 124
3932: PUSH
3933: EMPTY
3934: LIST
3935: LIST
3936: PUSH
3937: EMPTY
3938: LIST
3939: LIST
3940: LIST
3941: LIST
3942: LIST
3943: LIST
3944: LIST
3945: LIST
3946: LIST
3947: LIST
3948: LIST
3949: LIST
3950: LIST
3951: LIST
3952: LIST
3953: LIST
3954: LIST
3955: LIST
3956: LIST
3957: LIST
3958: LIST
3959: LIST
3960: LIST
3961: PUSH
3962: LD_INT 210
3964: PUSH
3965: LD_INT 119
3967: PUSH
3968: EMPTY
3969: LIST
3970: LIST
3971: PUSH
3972: LD_INT 202
3974: PUSH
3975: LD_INT 103
3977: PUSH
3978: EMPTY
3979: LIST
3980: LIST
3981: PUSH
3982: LD_INT 194
3984: PUSH
3985: LD_INT 87
3987: PUSH
3988: EMPTY
3989: LIST
3990: LIST
3991: PUSH
3992: LD_INT 191
3994: PUSH
3995: LD_INT 71
3997: PUSH
3998: EMPTY
3999: LIST
4000: LIST
4001: PUSH
4002: LD_INT 183
4004: PUSH
4005: LD_INT 54
4007: PUSH
4008: EMPTY
4009: LIST
4010: LIST
4011: PUSH
4012: LD_INT 167
4014: PUSH
4015: LD_INT 31
4017: PUSH
4018: EMPTY
4019: LIST
4020: LIST
4021: PUSH
4022: LD_INT 143
4024: PUSH
4025: LD_INT 22
4027: PUSH
4028: EMPTY
4029: LIST
4030: LIST
4031: PUSH
4032: LD_INT 127
4034: PUSH
4035: LD_INT 22
4037: PUSH
4038: EMPTY
4039: LIST
4040: LIST
4041: PUSH
4042: LD_INT 111
4044: PUSH
4045: LD_INT 22
4047: PUSH
4048: EMPTY
4049: LIST
4050: LIST
4051: PUSH
4052: LD_INT 109
4054: PUSH
4055: LD_INT 32
4057: PUSH
4058: EMPTY
4059: LIST
4060: LIST
4061: PUSH
4062: LD_INT 128
4064: PUSH
4065: LD_INT 48
4067: PUSH
4068: EMPTY
4069: LIST
4070: LIST
4071: PUSH
4072: LD_INT 144
4074: PUSH
4075: LD_INT 46
4077: PUSH
4078: EMPTY
4079: LIST
4080: LIST
4081: PUSH
4082: LD_INT 145
4084: PUSH
4085: LD_INT 27
4087: PUSH
4088: EMPTY
4089: LIST
4090: LIST
4091: PUSH
4092: LD_INT 163
4094: PUSH
4095: LD_INT 25
4097: PUSH
4098: EMPTY
4099: LIST
4100: LIST
4101: PUSH
4102: LD_INT 178
4104: PUSH
4105: LD_INT 47
4107: PUSH
4108: EMPTY
4109: LIST
4110: LIST
4111: PUSH
4112: LD_INT 186
4114: PUSH
4115: LD_INT 57
4117: PUSH
4118: EMPTY
4119: LIST
4120: LIST
4121: PUSH
4122: LD_INT 193
4124: PUSH
4125: LD_INT 75
4127: PUSH
4128: EMPTY
4129: LIST
4130: LIST
4131: PUSH
4132: LD_INT 193
4134: PUSH
4135: LD_INT 87
4137: PUSH
4138: EMPTY
4139: LIST
4140: LIST
4141: PUSH
4142: LD_INT 202
4144: PUSH
4145: LD_INT 106
4147: PUSH
4148: EMPTY
4149: LIST
4150: LIST
4151: PUSH
4152: LD_INT 211
4154: PUSH
4155: LD_INT 124
4157: PUSH
4158: EMPTY
4159: LIST
4160: LIST
4161: PUSH
4162: EMPTY
4163: LIST
4164: LIST
4165: LIST
4166: LIST
4167: LIST
4168: LIST
4169: LIST
4170: LIST
4171: LIST
4172: LIST
4173: LIST
4174: LIST
4175: LIST
4176: LIST
4177: LIST
4178: LIST
4179: LIST
4180: LIST
4181: LIST
4182: LIST
4183: PUSH
4184: LD_INT 210
4186: PUSH
4187: LD_INT 119
4189: PUSH
4190: EMPTY
4191: LIST
4192: LIST
4193: PUSH
4194: LD_INT 202
4196: PUSH
4197: LD_INT 103
4199: PUSH
4200: EMPTY
4201: LIST
4202: LIST
4203: PUSH
4204: LD_INT 194
4206: PUSH
4207: LD_INT 87
4209: PUSH
4210: EMPTY
4211: LIST
4212: LIST
4213: PUSH
4214: LD_INT 191
4216: PUSH
4217: LD_INT 71
4219: PUSH
4220: EMPTY
4221: LIST
4222: LIST
4223: PUSH
4224: LD_INT 183
4226: PUSH
4227: LD_INT 54
4229: PUSH
4230: EMPTY
4231: LIST
4232: LIST
4233: PUSH
4234: LD_INT 167
4236: PUSH
4237: LD_INT 31
4239: PUSH
4240: EMPTY
4241: LIST
4242: LIST
4243: PUSH
4244: LD_INT 143
4246: PUSH
4247: LD_INT 22
4249: PUSH
4250: EMPTY
4251: LIST
4252: LIST
4253: PUSH
4254: LD_INT 143
4256: PUSH
4257: LD_INT 43
4259: PUSH
4260: EMPTY
4261: LIST
4262: LIST
4263: PUSH
4264: LD_INT 141
4266: PUSH
4267: LD_INT 63
4269: PUSH
4270: EMPTY
4271: LIST
4272: LIST
4273: PUSH
4274: LD_INT 126
4276: PUSH
4277: LD_INT 64
4279: PUSH
4280: EMPTY
4281: LIST
4282: LIST
4283: PUSH
4284: LD_INT 104
4286: PUSH
4287: LD_INT 42
4289: PUSH
4290: EMPTY
4291: LIST
4292: LIST
4293: PUSH
4294: LD_INT 101
4296: PUSH
4297: LD_INT 21
4299: PUSH
4300: EMPTY
4301: LIST
4302: LIST
4303: PUSH
4304: LD_INT 114
4306: PUSH
4307: LD_INT 17
4309: PUSH
4310: EMPTY
4311: LIST
4312: LIST
4313: PUSH
4314: LD_INT 129
4316: PUSH
4317: LD_INT 19
4319: PUSH
4320: EMPTY
4321: LIST
4322: LIST
4323: PUSH
4324: LD_INT 143
4326: PUSH
4327: LD_INT 20
4329: PUSH
4330: EMPTY
4331: LIST
4332: LIST
4333: PUSH
4334: LD_INT 163
4336: PUSH
4337: LD_INT 25
4339: PUSH
4340: EMPTY
4341: LIST
4342: LIST
4343: PUSH
4344: LD_INT 178
4346: PUSH
4347: LD_INT 47
4349: PUSH
4350: EMPTY
4351: LIST
4352: LIST
4353: PUSH
4354: LD_INT 186
4356: PUSH
4357: LD_INT 57
4359: PUSH
4360: EMPTY
4361: LIST
4362: LIST
4363: PUSH
4364: LD_INT 193
4366: PUSH
4367: LD_INT 75
4369: PUSH
4370: EMPTY
4371: LIST
4372: LIST
4373: PUSH
4374: LD_INT 193
4376: PUSH
4377: LD_INT 87
4379: PUSH
4380: EMPTY
4381: LIST
4382: LIST
4383: PUSH
4384: LD_INT 202
4386: PUSH
4387: LD_INT 106
4389: PUSH
4390: EMPTY
4391: LIST
4392: LIST
4393: PUSH
4394: LD_INT 211
4396: PUSH
4397: LD_INT 124
4399: PUSH
4400: EMPTY
4401: LIST
4402: LIST
4403: PUSH
4404: EMPTY
4405: LIST
4406: LIST
4407: LIST
4408: LIST
4409: LIST
4410: LIST
4411: LIST
4412: LIST
4413: LIST
4414: LIST
4415: LIST
4416: LIST
4417: LIST
4418: LIST
4419: LIST
4420: LIST
4421: LIST
4422: LIST
4423: LIST
4424: LIST
4425: LIST
4426: LIST
4427: PUSH
4428: EMPTY
4429: PUSH
4430: EMPTY
4431: LIST
4432: LIST
4433: LIST
4434: LIST
4435: LIST
4436: PUSH
4437: LD_INT 83
4439: PUSH
4440: LD_INT 147
4442: PUSH
4443: EMPTY
4444: LIST
4445: LIST
4446: PUSH
4447: LD_INT 67
4449: PUSH
4450: LD_INT 120
4452: PUSH
4453: EMPTY
4454: LIST
4455: LIST
4456: PUSH
4457: LD_INT 55
4459: PUSH
4460: LD_INT 92
4462: PUSH
4463: EMPTY
4464: LIST
4465: LIST
4466: PUSH
4467: LD_INT 52
4469: PUSH
4470: LD_INT 71
4472: PUSH
4473: EMPTY
4474: LIST
4475: LIST
4476: PUSH
4477: EMPTY
4478: LIST
4479: LIST
4480: LIST
4481: LIST
4482: PUSH
4483: LD_INT 125
4485: PUSH
4486: LD_INT 130
4488: PUSH
4489: EMPTY
4490: LIST
4491: LIST
4492: PUSH
4493: LD_INT 113
4495: PUSH
4496: LD_INT 107
4498: PUSH
4499: EMPTY
4500: LIST
4501: LIST
4502: PUSH
4503: LD_INT 103
4505: PUSH
4506: LD_INT 92
4508: PUSH
4509: EMPTY
4510: LIST
4511: LIST
4512: PUSH
4513: EMPTY
4514: LIST
4515: LIST
4516: LIST
4517: PUSH
4518: LD_INT 73
4520: PUSH
4521: LD_INT 54
4523: PUSH
4524: EMPTY
4525: LIST
4526: LIST
4527: PUSH
4528: LD_INT 74
4530: PUSH
4531: LD_INT 32
4533: PUSH
4534: EMPTY
4535: LIST
4536: LIST
4537: PUSH
4538: LD_INT 80
4540: PUSH
4541: LD_INT 15
4543: PUSH
4544: EMPTY
4545: LIST
4546: LIST
4547: PUSH
4548: EMPTY
4549: LIST
4550: LIST
4551: LIST
4552: PUSH
4553: LD_INT 88
4555: PUSH
4556: LD_INT 61
4558: PUSH
4559: EMPTY
4560: LIST
4561: LIST
4562: PUSH
4563: LD_INT 96
4565: PUSH
4566: LD_INT 46
4568: PUSH
4569: EMPTY
4570: LIST
4571: LIST
4572: PUSH
4573: LD_INT 105
4575: PUSH
4576: LD_INT 34
4578: PUSH
4579: EMPTY
4580: LIST
4581: LIST
4582: PUSH
4583: LD_INT 119
4585: PUSH
4586: LD_INT 29
4588: PUSH
4589: EMPTY
4590: LIST
4591: LIST
4592: PUSH
4593: EMPTY
4594: LIST
4595: LIST
4596: LIST
4597: LIST
4598: PUSH
4599: LD_INT 108
4601: PUSH
4602: LD_INT 76
4604: PUSH
4605: EMPTY
4606: LIST
4607: LIST
4608: PUSH
4609: LD_INT 118
4611: PUSH
4612: LD_INT 60
4614: PUSH
4615: EMPTY
4616: LIST
4617: LIST
4618: PUSH
4619: LD_INT 136
4621: PUSH
4622: LD_INT 59
4624: PUSH
4625: EMPTY
4626: LIST
4627: LIST
4628: PUSH
4629: LD_INT 142
4631: PUSH
4632: LD_INT 53
4634: PUSH
4635: EMPTY
4636: LIST
4637: LIST
4638: PUSH
4639: EMPTY
4640: LIST
4641: LIST
4642: LIST
4643: LIST
4644: PUSH
4645: LD_INT 127
4647: PUSH
4648: LD_INT 133
4650: PUSH
4651: EMPTY
4652: LIST
4653: LIST
4654: PUSH
4655: LD_INT 139
4657: PUSH
4658: LD_INT 152
4660: PUSH
4661: EMPTY
4662: LIST
4663: LIST
4664: PUSH
4665: LD_INT 145
4667: PUSH
4668: LD_INT 166
4670: PUSH
4671: EMPTY
4672: LIST
4673: LIST
4674: PUSH
4675: LD_INT 149
4677: PUSH
4678: LD_INT 179
4680: PUSH
4681: EMPTY
4682: LIST
4683: LIST
4684: PUSH
4685: LD_INT 151
4687: PUSH
4688: LD_INT 193
4690: PUSH
4691: EMPTY
4692: LIST
4693: LIST
4694: PUSH
4695: LD_INT 148
4697: PUSH
4698: LD_INT 206
4700: PUSH
4701: EMPTY
4702: LIST
4703: LIST
4704: PUSH
4705: LD_INT 145
4707: PUSH
4708: LD_INT 218
4710: PUSH
4711: EMPTY
4712: LIST
4713: LIST
4714: PUSH
4715: LD_INT 145
4717: PUSH
4718: LD_INT 227
4720: PUSH
4721: EMPTY
4722: LIST
4723: LIST
4724: PUSH
4725: LD_INT 157
4727: PUSH
4728: LD_INT 242
4730: PUSH
4731: EMPTY
4732: LIST
4733: LIST
4734: PUSH
4735: EMPTY
4736: LIST
4737: LIST
4738: LIST
4739: LIST
4740: LIST
4741: LIST
4742: LIST
4743: LIST
4744: LIST
4745: PUSH
4746: LD_INT 92
4748: PUSH
4749: LD_INT 166
4751: PUSH
4752: EMPTY
4753: LIST
4754: LIST
4755: PUSH
4756: LD_INT 105
4758: PUSH
4759: LD_INT 197
4761: PUSH
4762: EMPTY
4763: LIST
4764: LIST
4765: PUSH
4766: LD_INT 117
4768: PUSH
4769: LD_INT 209
4771: PUSH
4772: EMPTY
4773: LIST
4774: LIST
4775: PUSH
4776: LD_INT 125
4778: PUSH
4779: LD_INT 223
4781: PUSH
4782: EMPTY
4783: LIST
4784: LIST
4785: PUSH
4786: LD_INT 141
4788: PUSH
4789: LD_INT 235
4791: PUSH
4792: EMPTY
4793: LIST
4794: LIST
4795: PUSH
4796: LD_INT 159
4798: PUSH
4799: LD_INT 241
4801: PUSH
4802: EMPTY
4803: LIST
4804: LIST
4805: PUSH
4806: EMPTY
4807: LIST
4808: LIST
4809: LIST
4810: LIST
4811: LIST
4812: LIST
4813: PUSH
4814: EMPTY
4815: LIST
4816: LIST
4817: LIST
4818: LIST
4819: LIST
4820: LIST
4821: LIST
4822: PUSH
4823: EMPTY
4824: LIST
4825: LIST
4826: LIST
4827: ST_TO_ADDR
// ai_hovercrafts = [ [ 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 0 , 0 , 0 ] ] [ difficulty ] ;
4828: LD_ADDR_EXP 148
4832: PUSH
4833: LD_INT 0
4835: PUSH
4836: LD_INT 0
4838: PUSH
4839: LD_INT 0
4841: PUSH
4842: LD_INT 0
4844: PUSH
4845: EMPTY
4846: LIST
4847: LIST
4848: LIST
4849: LIST
4850: PUSH
4851: LD_INT 0
4853: PUSH
4854: LD_INT 0
4856: PUSH
4857: LD_INT 0
4859: PUSH
4860: LD_INT 0
4862: PUSH
4863: LD_INT 0
4865: PUSH
4866: EMPTY
4867: LIST
4868: LIST
4869: LIST
4870: LIST
4871: LIST
4872: PUSH
4873: LD_INT 0
4875: PUSH
4876: LD_INT 0
4878: PUSH
4879: LD_INT 0
4881: PUSH
4882: LD_INT 0
4884: PUSH
4885: LD_INT 0
4887: PUSH
4888: LD_INT 0
4890: PUSH
4891: EMPTY
4892: LIST
4893: LIST
4894: LIST
4895: LIST
4896: LIST
4897: LIST
4898: PUSH
4899: EMPTY
4900: LIST
4901: LIST
4902: LIST
4903: PUSH
4904: LD_OWVAR 67
4908: ARRAY
4909: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
4910: LD_ADDR_EXP 149
4914: PUSH
4915: LD_INT 6300
4917: ST_TO_ADDR
// ai_hovercrafts_status = 0 ;
4918: LD_ADDR_EXP 150
4922: PUSH
4923: LD_INT 0
4925: ST_TO_ADDR
// ai_hovercrafts_path = [ ] ;
4926: LD_ADDR_EXP 151
4930: PUSH
4931: EMPTY
4932: ST_TO_ADDR
// ai_hovercrafts_hexcount = 0 ;
4933: LD_ADDR_EXP 152
4937: PUSH
4938: LD_INT 0
4940: ST_TO_ADDR
// ai_hovercrafts_out = 0 ;
4941: LD_ADDR_EXP 153
4945: PUSH
4946: LD_INT 0
4948: ST_TO_ADDR
// ai_hovercrafts_target = 0 ;
4949: LD_ADDR_EXP 154
4953: PUSH
4954: LD_INT 0
4956: ST_TO_ADDR
// ai_hovercrafts_respawntime = 0 ;
4957: LD_ADDR_EXP 155
4961: PUSH
4962: LD_INT 0
4964: ST_TO_ADDR
// BasesDestroyed = [ ] ;
4965: LD_ADDR_EXP 196
4969: PUSH
4970: EMPTY
4971: ST_TO_ADDR
// dlg_list = [ ] ;
4972: LD_ADDR_EXP 47
4976: PUSH
4977: EMPTY
4978: ST_TO_ADDR
// bomb_dlg = [ ] ;
4979: LD_ADDR_EXP 48
4983: PUSH
4984: EMPTY
4985: ST_TO_ADDR
// apes = [ ] ;
4986: LD_ADDR_EXP 174
4990: PUSH
4991: EMPTY
4992: ST_TO_ADDR
// apes_tick = 999 999$0 ;
4993: LD_ADDR_EXP 175
4997: PUSH
4998: LD_INT 2097900
5000: ST_TO_ADDR
// mb_legion_kam = [ ] ;
5001: LD_ADDR_EXP 176
5005: PUSH
5006: EMPTY
5007: ST_TO_ADDR
// mb_legion_apesoldiers = [ ] ;
5008: LD_ADDR_EXP 177
5012: PUSH
5013: EMPTY
5014: ST_TO_ADDR
// mb_legion_ape_fac = [ ] ;
5015: LD_ADDR_EXP 178
5019: PUSH
5020: EMPTY
5021: ST_TO_ADDR
// mb_evacuating_base = [ ] ;
5022: LD_ADDR_EXP 180
5026: PUSH
5027: EMPTY
5028: ST_TO_ADDR
// mb_evacuating_units = [ ] ;
5029: LD_ADDR_EXP 181
5033: PUSH
5034: EMPTY
5035: ST_TO_ADDR
// mb_evacuating_path = [ ] ;
5036: LD_ADDR_EXP 182
5040: PUSH
5041: EMPTY
5042: ST_TO_ADDR
// ArtUse_SibPlant = [ ] ;
5043: LD_ADDR_EXP 205
5047: PUSH
5048: EMPTY
5049: ST_TO_ADDR
// ArtUse_SibPlant_contaminated = [ ] ;
5050: LD_ADDR_EXP 206
5054: PUSH
5055: EMPTY
5056: ST_TO_ADDR
// ArtUse_Beh = [ ] ;
5057: LD_ADDR_EXP 207
5061: PUSH
5062: EMPTY
5063: ST_TO_ADDR
// ArtUse_Beh_damaged = [ ] ;
5064: LD_ADDR_EXP 208
5068: PUSH
5069: EMPTY
5070: ST_TO_ADDR
// ArtUse_Beh_count = [ ] ;
5071: LD_ADDR_EXP 209
5075: PUSH
5076: EMPTY
5077: ST_TO_ADDR
// ArtUse_TimeLapse = [ ] ;
5078: LD_ADDR_EXP 210
5082: PUSH
5083: EMPTY
5084: ST_TO_ADDR
// ArtUse_TimeLapse_time = [ ] ;
5085: LD_ADDR_EXP 211
5089: PUSH
5090: EMPTY
5091: ST_TO_ADDR
// ArtUse_Laser = [ ] ;
5092: LD_ADDR_EXP 212
5096: PUSH
5097: EMPTY
5098: ST_TO_ADDR
// ArtUse_Laser_Hacked = [ ] ;
5099: LD_ADDR_EXP 213
5103: PUSH
5104: EMPTY
5105: ST_TO_ADDR
// ArtUse_SuperStim = [ ] ;
5106: LD_ADDR_EXP 214
5110: PUSH
5111: EMPTY
5112: ST_TO_ADDR
// ArtUse_SuperStim_units = [ ] ;
5113: LD_ADDR_EXP 215
5117: PUSH
5118: EMPTY
5119: ST_TO_ADDR
// ArtUse_SPBomb = [ ] ;
5120: LD_ADDR_EXP 216
5124: PUSH
5125: EMPTY
5126: ST_TO_ADDR
// ArtUse_SPBomb_veh = [ ] ;
5127: LD_ADDR_EXP 217
5131: PUSH
5132: EMPTY
5133: ST_TO_ADDR
// ArtUse_SPBomb_XY = [ ] ;
5134: LD_ADDR_EXP 218
5138: PUSH
5139: EMPTY
5140: ST_TO_ADDR
// ArtUse_SPBomb_HumansContaminated = [ ] ;
5141: LD_ADDR_EXP 219
5145: PUSH
5146: EMPTY
5147: ST_TO_ADDR
// ai_behemoths_unmovable = [ ] ;
5148: LD_ADDR_EXP 157
5152: PUSH
5153: EMPTY
5154: ST_TO_ADDR
// ai_units_irradiated = [ ] ;
5155: LD_ADDR_EXP 158
5159: PUSH
5160: EMPTY
5161: ST_TO_ADDR
// ai_units_irradiated_time = [ ] ;
5162: LD_ADDR_EXP 159
5166: PUSH
5167: EMPTY
5168: ST_TO_ADDR
// InitialBuildingCount = [ ] ;
5169: LD_ADDR_EXP 194
5173: PUSH
5174: EMPTY
5175: ST_TO_ADDR
// InitialSoldierCount = [ ] ;
5176: LD_ADDR_EXP 195
5180: PUSH
5181: EMPTY
5182: ST_TO_ADDR
// BaseDestroyedTick = [ - 1 , - 1 , - 1 ] ;
5183: LD_ADDR_EXP 197
5187: PUSH
5188: LD_INT 1
5190: NEG
5191: PUSH
5192: LD_INT 1
5194: NEG
5195: PUSH
5196: LD_INT 1
5198: NEG
5199: PUSH
5200: EMPTY
5201: LIST
5202: LIST
5203: LIST
5204: ST_TO_ADDR
// Contamination_sci = [ ] ;
5205: LD_ADDR_EXP 227
5209: PUSH
5210: EMPTY
5211: ST_TO_ADDR
// Contamination_count = [ 1 , 2 , 3 ] [ difficulty ] ;
5212: LD_ADDR_EXP 228
5216: PUSH
5217: LD_INT 1
5219: PUSH
5220: LD_INT 2
5222: PUSH
5223: LD_INT 3
5225: PUSH
5226: EMPTY
5227: LIST
5228: LIST
5229: LIST
5230: PUSH
5231: LD_OWVAR 67
5235: ARRAY
5236: ST_TO_ADDR
// Dlg_cap = [ ] ;
5237: LD_ADDR_EXP 230
5241: PUSH
5242: EMPTY
5243: ST_TO_ADDR
// LLKilledTick = 0 ;
5244: LD_ADDR_EXP 231
5248: PUSH
5249: LD_INT 0
5251: ST_TO_ADDR
// DRadTime = 0 0$10 ;
5252: LD_ADDR_EXP 232
5256: PUSH
5257: LD_INT 350
5259: ST_TO_ADDR
// DRadCount = 0 ;
5260: LD_ADDR_EXP 233
5264: PUSH
5265: LD_INT 0
5267: ST_TO_ADDR
// DRadEng = 0 ;
5268: LD_ADDR_EXP 234
5272: PUSH
5273: LD_INT 0
5275: ST_TO_ADDR
// DHighRadList = [ ] ;
5276: LD_ADDR_EXP 235
5280: PUSH
5281: EMPTY
5282: ST_TO_ADDR
// dlg_DoubleLaserHack = 0 ;
5283: LD_ADDR_EXP 236
5287: PUSH
5288: LD_INT 0
5290: ST_TO_ADDR
// strings = [ ] ;
5291: LD_ADDR_EXP 239
5295: PUSH
5296: EMPTY
5297: ST_TO_ADDR
// GameStage = 0 ;
5298: LD_ADDR_EXP 237
5302: PUSH
5303: LD_INT 0
5305: ST_TO_ADDR
// GSCount = 0 ;
5306: LD_ADDR_EXP 238
5310: PUSH
5311: LD_INT 0
5313: ST_TO_ADDR
// PrepareSides ;
5314: CALL 5717 0 0
// PrepareNature ;
5318: CALL 6129 0 0
// PreparePlayer ;
5322: CALL 6292 0 0
// ScanBuildings ;
5326: CALL 18819 0 0
// PrepareComputerSides ;
5330: CALL 24249 0 0
// PrepareMines ;
5334: CALL 32300 0 0
// InitiateTimeShiftData ;
5338: CALL 5520 0 0
// Action ;
5342: CALL 120066 0 0
// end ;
5346: END
// function Initiate_ai_contact_time ; var i ; begin
5347: LD_INT 0
5349: PPUSH
5350: PPUSH
// ai_contact_time = [ ] ;
5351: LD_ADDR_EXP 123
5355: PUSH
5356: EMPTY
5357: ST_TO_ADDR
// for i = 1 to 8 do
5358: LD_ADDR_VAR 0 2
5362: PUSH
5363: DOUBLE
5364: LD_INT 1
5366: DEC
5367: ST_TO_ADDR
5368: LD_INT 8
5370: PUSH
5371: FOR_TO
5372: IFFALSE 5424
// ai_contact_time = ai_contact_time ^ [ [ 100000 , 100000 , 100000 , 100000 , 100000 , 100000 , 100000 , 100000 ] ] ;
5374: LD_ADDR_EXP 123
5378: PUSH
5379: LD_EXP 123
5383: PUSH
5384: LD_INT 100000
5386: PUSH
5387: LD_INT 100000
5389: PUSH
5390: LD_INT 100000
5392: PUSH
5393: LD_INT 100000
5395: PUSH
5396: LD_INT 100000
5398: PUSH
5399: LD_INT 100000
5401: PUSH
5402: LD_INT 100000
5404: PUSH
5405: LD_INT 100000
5407: PUSH
5408: EMPTY
5409: LIST
5410: LIST
5411: LIST
5412: LIST
5413: LIST
5414: LIST
5415: LIST
5416: LIST
5417: PUSH
5418: EMPTY
5419: LIST
5420: ADD
5421: ST_TO_ADDR
5422: GO 5371
5424: POP
5425: POP
// end ;
5426: LD_VAR 0 1
5430: RET
// function Initiate_ai_sib_bomb_used_time_matrix ; var base ; begin
5431: LD_INT 0
5433: PPUSH
5434: PPUSH
// ai_sib_bomb_used_time_matrix = [ ] ;
5435: LD_ADDR_EXP 126
5439: PUSH
5440: EMPTY
5441: ST_TO_ADDR
// for base in ai_bases do
5442: LD_ADDR_VAR 0 2
5446: PUSH
5447: LD_EXP 49
5451: PUSH
5452: FOR_IN
5453: IFFALSE 5513
// ai_sib_bomb_used_time_matrix = ai_sib_bomb_used_time_matrix ^ [ [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ] ;
5455: LD_ADDR_EXP 126
5459: PUSH
5460: LD_EXP 126
5464: PUSH
5465: LD_INT 1
5467: NEG
5468: PUSH
5469: LD_INT 1
5471: NEG
5472: PUSH
5473: LD_INT 1
5475: NEG
5476: PUSH
5477: LD_INT 1
5479: NEG
5480: PUSH
5481: LD_INT 1
5483: NEG
5484: PUSH
5485: LD_INT 1
5487: NEG
5488: PUSH
5489: LD_INT 1
5491: NEG
5492: PUSH
5493: LD_INT 1
5495: NEG
5496: PUSH
5497: EMPTY
5498: LIST
5499: LIST
5500: LIST
5501: LIST
5502: LIST
5503: LIST
5504: LIST
5505: LIST
5506: PUSH
5507: EMPTY
5508: LIST
5509: ADD
5510: ST_TO_ADDR
5511: GO 5452
5513: POP
5514: POP
// end ;
5515: LD_VAR 0 1
5519: RET
// function InitiateTimeShiftData ; var side ; begin
5520: LD_INT 0
5522: PPUSH
5523: PPUSH
// for side = 1 to 8 do
5524: LD_ADDR_VAR 0 2
5528: PUSH
5529: DOUBLE
5530: LD_INT 1
5532: DEC
5533: ST_TO_ADDR
5534: LD_INT 8
5536: PUSH
5537: FOR_TO
5538: IFFALSE 5710
// if Researched ( side , tech_st3 ) then
5540: LD_VAR 0 2
5544: PPUSH
5545: LD_INT 65
5547: PPUSH
5548: CALL_OW 325
5552: IFFALSE 5586
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 420 , 10 ] ) else
5554: LD_ADDR_EXP 120
5558: PUSH
5559: LD_EXP 120
5563: PPUSH
5564: LD_VAR 0 2
5568: PPUSH
5569: LD_INT 420
5571: PUSH
5572: LD_INT 10
5574: PUSH
5575: EMPTY
5576: LIST
5577: LIST
5578: PPUSH
5579: CALL_OW 1
5583: ST_TO_ADDR
5584: GO 5708
// if Researched ( side , tech_st2 ) then
5586: LD_VAR 0 2
5590: PPUSH
5591: LD_INT 64
5593: PPUSH
5594: CALL_OW 325
5598: IFFALSE 5632
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 420 , 10 ] ) else
5600: LD_ADDR_EXP 120
5604: PUSH
5605: LD_EXP 120
5609: PPUSH
5610: LD_VAR 0 2
5614: PPUSH
5615: LD_INT 420
5617: PUSH
5618: LD_INT 10
5620: PUSH
5621: EMPTY
5622: LIST
5623: LIST
5624: PPUSH
5625: CALL_OW 1
5629: ST_TO_ADDR
5630: GO 5708
// if Researched ( side , tech_st1 ) then
5632: LD_VAR 0 2
5636: PPUSH
5637: LD_INT 63
5639: PPUSH
5640: CALL_OW 325
5644: IFFALSE 5678
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 320 , 7 ] ) else
5646: LD_ADDR_EXP 120
5650: PUSH
5651: LD_EXP 120
5655: PPUSH
5656: LD_VAR 0 2
5660: PPUSH
5661: LD_INT 320
5663: PUSH
5664: LD_INT 7
5666: PUSH
5667: EMPTY
5668: LIST
5669: LIST
5670: PPUSH
5671: CALL_OW 1
5675: ST_TO_ADDR
5676: GO 5708
// ai_time_shift_data = Replace ( ai_time_shift_data , side , [ 215 , 4 ] ) ;
5678: LD_ADDR_EXP 120
5682: PUSH
5683: LD_EXP 120
5687: PPUSH
5688: LD_VAR 0 2
5692: PPUSH
5693: LD_INT 215
5695: PUSH
5696: LD_INT 4
5698: PUSH
5699: EMPTY
5700: LIST
5701: LIST
5702: PPUSH
5703: CALL_OW 1
5707: ST_TO_ADDR
5708: GO 5537
5710: POP
5711: POP
// end ;
5712: LD_VAR 0 1
5716: RET
// function PrepareSides ; begin
5717: LD_INT 0
5719: PPUSH
// nature = 0 ;
5720: LD_ADDR_EXP 4
5724: PUSH
5725: LD_INT 0
5727: ST_TO_ADDR
// americans = 1 ;
5728: LD_ADDR_EXP 7
5732: PUSH
5733: LD_INT 1
5735: ST_TO_ADDR
// americans_alt = 4 ;
5736: LD_ADDR_EXP 8
5740: PUSH
5741: LD_INT 4
5743: ST_TO_ADDR
// legion = 8 ;
5744: LD_ADDR_EXP 6
5748: PUSH
5749: LD_INT 8
5751: ST_TO_ADDR
// russians = 3 ;
5752: LD_ADDR_EXP 3
5756: PUSH
5757: LD_INT 3
5759: ST_TO_ADDR
// alliance = 7 ;
5760: LD_ADDR_EXP 5
5764: PUSH
5765: LD_INT 7
5767: ST_TO_ADDR
// you = 2 ;
5768: LD_ADDR_EXP 2
5772: PUSH
5773: LD_INT 2
5775: ST_TO_ADDR
// mines_side = 0 ;
5776: LD_ADDR_EXP 9
5780: PUSH
5781: LD_INT 0
5783: ST_TO_ADDR
// SetAttitude ( americans , legion , att_enemy , true ) ;
5784: LD_EXP 7
5788: PPUSH
5789: LD_EXP 6
5793: PPUSH
5794: LD_INT 2
5796: PPUSH
5797: LD_INT 1
5799: PPUSH
5800: CALL_OW 80
// SetAttitude ( americans , russians , att_enemy , true ) ;
5804: LD_EXP 7
5808: PPUSH
5809: LD_EXP 3
5813: PPUSH
5814: LD_INT 2
5816: PPUSH
5817: LD_INT 1
5819: PPUSH
5820: CALL_OW 80
// SetAttitude ( americans , alliance , att_enemy , true ) ;
5824: LD_EXP 7
5828: PPUSH
5829: LD_EXP 5
5833: PPUSH
5834: LD_INT 2
5836: PPUSH
5837: LD_INT 1
5839: PPUSH
5840: CALL_OW 80
// SetAttitude ( americans , you , att_enemy , true ) ;
5844: LD_EXP 7
5848: PPUSH
5849: LD_EXP 2
5853: PPUSH
5854: LD_INT 2
5856: PPUSH
5857: LD_INT 1
5859: PPUSH
5860: CALL_OW 80
// SetAttitude ( americans , americans_alt , att_friend , false ) ;
5864: LD_EXP 7
5868: PPUSH
5869: LD_EXP 8
5873: PPUSH
5874: LD_INT 1
5876: PPUSH
5877: LD_INT 0
5879: PPUSH
5880: CALL_OW 80
// SetAttitude ( americans_alt , americans , att_enemy , false ) ;
5884: LD_EXP 8
5888: PPUSH
5889: LD_EXP 7
5893: PPUSH
5894: LD_INT 2
5896: PPUSH
5897: LD_INT 0
5899: PPUSH
5900: CALL_OW 80
// SetAttitude ( americans_alt , alliance , att_enemy , false ) ;
5904: LD_EXP 8
5908: PPUSH
5909: LD_EXP 5
5913: PPUSH
5914: LD_INT 2
5916: PPUSH
5917: LD_INT 0
5919: PPUSH
5920: CALL_OW 80
// SetAttitude ( legion , russians , att_enemy , true ) ;
5924: LD_EXP 6
5928: PPUSH
5929: LD_EXP 3
5933: PPUSH
5934: LD_INT 2
5936: PPUSH
5937: LD_INT 1
5939: PPUSH
5940: CALL_OW 80
// SetAttitude ( legion , americans_alt , att_enemy , true ) ;
5944: LD_EXP 6
5948: PPUSH
5949: LD_EXP 8
5953: PPUSH
5954: LD_INT 2
5956: PPUSH
5957: LD_INT 1
5959: PPUSH
5960: CALL_OW 80
// SetAttitude ( legion , alliance , att_enemy , true ) ;
5964: LD_EXP 6
5968: PPUSH
5969: LD_EXP 5
5973: PPUSH
5974: LD_INT 2
5976: PPUSH
5977: LD_INT 1
5979: PPUSH
5980: CALL_OW 80
// SetAttitude ( legion , you , att_enemy , true ) ;
5984: LD_EXP 6
5988: PPUSH
5989: LD_EXP 2
5993: PPUSH
5994: LD_INT 2
5996: PPUSH
5997: LD_INT 1
5999: PPUSH
6000: CALL_OW 80
// SetAttitude ( russians , alliance , att_enemy , true ) ;
6004: LD_EXP 3
6008: PPUSH
6009: LD_EXP 5
6013: PPUSH
6014: LD_INT 2
6016: PPUSH
6017: LD_INT 1
6019: PPUSH
6020: CALL_OW 80
// SetAttitude ( russians , americans_alt , att_enemy , true ) ;
6024: LD_EXP 3
6028: PPUSH
6029: LD_EXP 8
6033: PPUSH
6034: LD_INT 2
6036: PPUSH
6037: LD_INT 1
6039: PPUSH
6040: CALL_OW 80
// SetAttitude ( russians , you , att_enemy , true ) ;
6044: LD_EXP 3
6048: PPUSH
6049: LD_EXP 2
6053: PPUSH
6054: LD_INT 2
6056: PPUSH
6057: LD_INT 1
6059: PPUSH
6060: CALL_OW 80
// SetAttitude ( alliance , americans_alt , att_friend , false ) ;
6064: LD_EXP 5
6068: PPUSH
6069: LD_EXP 8
6073: PPUSH
6074: LD_INT 1
6076: PPUSH
6077: LD_INT 0
6079: PPUSH
6080: CALL_OW 80
// SetAttitude ( alliance , you , att_enemy , true ) ;
6084: LD_EXP 5
6088: PPUSH
6089: LD_EXP 2
6093: PPUSH
6094: LD_INT 2
6096: PPUSH
6097: LD_INT 1
6099: PPUSH
6100: CALL_OW 80
// SetAttitude ( americans_alt , you , att_friend , false ) ;
6104: LD_EXP 8
6108: PPUSH
6109: LD_EXP 2
6113: PPUSH
6114: LD_INT 1
6116: PPUSH
6117: LD_INT 0
6119: PPUSH
6120: CALL_OW 80
// end ;
6124: LD_VAR 0 1
6128: RET
// function PrepareNature ; var i , spots , num , agres , count ; begin
6129: LD_INT 0
6131: PPUSH
6132: PPUSH
6133: PPUSH
6134: PPUSH
6135: PPUSH
6136: PPUSH
// Randomize ;
6137: CALL_OW 10
// InitUc ;
6141: CALL_OW 18
// InitHc ;
6145: CALL_OW 19
// uc_side = nature ;
6149: LD_ADDR_OWVAR 20
6153: PUSH
6154: LD_EXP 4
6158: ST_TO_ADDR
// uc_nation = nation_nature ;
6159: LD_ADDR_OWVAR 21
6163: PUSH
6164: LD_INT 0
6166: ST_TO_ADDR
// agres = - 10 + difficulty * 20 ;
6167: LD_ADDR_VAR 0 5
6171: PUSH
6172: LD_INT 10
6174: NEG
6175: PUSH
6176: LD_OWVAR 67
6180: PUSH
6181: LD_INT 20
6183: MUL
6184: PLUS
6185: ST_TO_ADDR
// for i = 1 to 12 do
6186: LD_ADDR_VAR 0 2
6190: PUSH
6191: DOUBLE
6192: LD_INT 1
6194: DEC
6195: ST_TO_ADDR
6196: LD_INT 12
6198: PUSH
6199: FOR_TO
6200: IFFALSE 6285
// begin if rand ( 1 , 2 ) = 1 then
6202: LD_INT 1
6204: PPUSH
6205: LD_INT 2
6207: PPUSH
6208: CALL_OW 12
6212: PUSH
6213: LD_INT 1
6215: EQUAL
6216: IFFALSE 6244
// begin hc_gallery = nature_foreg ;
6218: LD_ADDR_OWVAR 33
6222: PUSH
6223: LD_STRING nature_foreg
6225: ST_TO_ADDR
// hc_face_number = 1 ;
6226: LD_ADDR_OWVAR 34
6230: PUSH
6231: LD_INT 1
6233: ST_TO_ADDR
// hc_class = class_phororhacos ;
6234: LD_ADDR_OWVAR 28
6238: PUSH
6239: LD_INT 18
6241: ST_TO_ADDR
// end else
6242: GO 6268
// begin hc_gallery = nature_foreg ;
6244: LD_ADDR_OWVAR 33
6248: PUSH
6249: LD_STRING nature_foreg
6251: ST_TO_ADDR
// hc_face_number = 4 ;
6252: LD_ADDR_OWVAR 34
6256: PUSH
6257: LD_INT 4
6259: ST_TO_ADDR
// hc_class = class_baggie ;
6260: LD_ADDR_OWVAR 28
6264: PUSH
6265: LD_INT 13
6267: ST_TO_ADDR
// end ; PlaceUnitArea ( CreateHuman , AnimalSpawnArea , false ) ;
6268: CALL_OW 44
6272: PPUSH
6273: LD_INT 52
6275: PPUSH
6276: LD_INT 0
6278: PPUSH
6279: CALL_OW 49
// end ;
6283: GO 6199
6285: POP
6286: POP
// end ;
6287: LD_VAR 0 1
6291: RET
// function PreparePlayer ; var others , i , j , player_uns , base_ok , val , un , k , temp_list , temp_list2 , temp_vehicles , temp_humans ; var temp , TigersNum , technologies , soldiers , mechanics , support , weapons , engines ; begin
6292: LD_INT 0
6294: PPUSH
6295: PPUSH
6296: PPUSH
6297: PPUSH
6298: PPUSH
6299: PPUSH
6300: PPUSH
6301: PPUSH
6302: PPUSH
6303: PPUSH
6304: PPUSH
6305: PPUSH
6306: PPUSH
6307: PPUSH
6308: PPUSH
6309: PPUSH
6310: PPUSH
6311: PPUSH
6312: PPUSH
6313: PPUSH
6314: PPUSH
// InitHc ;
6315: CALL_OW 19
// InitUc ;
6319: CALL_OW 18
// uc_side = you ;
6323: LD_ADDR_OWVAR 20
6327: PUSH
6328: LD_EXP 2
6332: ST_TO_ADDR
// uc_nation = nation_arabian ;
6333: LD_ADDR_OWVAR 21
6337: PUSH
6338: LD_INT 2
6340: ST_TO_ADDR
// Randomize ;
6341: CALL_OW 10
// PlayerTeam = [ ] ;
6345: LD_ADDR_EXP 26
6349: PUSH
6350: EMPTY
6351: ST_TO_ADDR
// SecondTeam = [ ] ;
6352: LD_ADDR_EXP 28
6356: PUSH
6357: EMPTY
6358: ST_TO_ADDR
// Control_drivers = [ ] ;
6359: LD_ADDR_EXP 27
6363: PUSH
6364: EMPTY
6365: ST_TO_ADDR
// if not testing then
6366: LD_EXP 1
6370: NOT
6371: IFFALSE 8548
// begin ATech_SibPlant = LoadVariable ( ArtTech_SibPlant_15 , 0 ) ;
6373: LD_ADDR_EXP 198
6377: PUSH
6378: LD_STRING ArtTech_SibPlant_15
6380: PPUSH
6381: LD_INT 0
6383: PPUSH
6384: CALL_OW 30
6388: ST_TO_ADDR
// ATech_Beh = LoadVariable ( ArtTech_Beh_15 , 0 ) ;
6389: LD_ADDR_EXP 199
6393: PUSH
6394: LD_STRING ArtTech_Beh_15
6396: PPUSH
6397: LD_INT 0
6399: PPUSH
6400: CALL_OW 30
6404: ST_TO_ADDR
// ATech_TimeLapse = LoadVariable ( ArtTech_TimeLapse_15 , 0 ) ;
6405: LD_ADDR_EXP 200
6409: PUSH
6410: LD_STRING ArtTech_TimeLapse_15
6412: PPUSH
6413: LD_INT 0
6415: PPUSH
6416: CALL_OW 30
6420: ST_TO_ADDR
// ATech_Laser = LoadVariable ( ArtTech_Laser_15 , 0 ) ;
6421: LD_ADDR_EXP 201
6425: PUSH
6426: LD_STRING ArtTech_Laser_15
6428: PPUSH
6429: LD_INT 0
6431: PPUSH
6432: CALL_OW 30
6436: ST_TO_ADDR
// ATech_SuperStim = LoadVariable ( ArtTech_SuperStim_15 , 0 ) ;
6437: LD_ADDR_EXP 202
6441: PUSH
6442: LD_STRING ArtTech_SuperStim_15
6444: PPUSH
6445: LD_INT 0
6447: PPUSH
6448: CALL_OW 30
6452: ST_TO_ADDR
// ATech_SPBomb = LoadVariable ( ArtTech_SPBomb_15 , 0 ) ;
6453: LD_ADDR_EXP 203
6457: PUSH
6458: LD_STRING ArtTech_SPBomb_15
6460: PPUSH
6461: LD_INT 0
6463: PPUSH
6464: CALL_OW 30
6468: ST_TO_ADDR
// AllianceDestroyed = LoadVariable ( AllianceDestroyed_15 , 0 ) ;
6469: LD_ADDR_EXP 220
6473: PUSH
6474: LD_STRING AllianceDestroyed_15
6476: PPUSH
6477: LD_INT 0
6479: PPUSH
6480: CALL_OW 30
6484: ST_TO_ADDR
// if ( [ ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] diff 0 ) > 0 then
6485: LD_EXP 198
6489: PUSH
6490: LD_EXP 199
6494: PUSH
6495: LD_EXP 200
6499: PUSH
6500: LD_EXP 201
6504: PUSH
6505: LD_EXP 202
6509: PUSH
6510: LD_EXP 203
6514: PUSH
6515: EMPTY
6516: LIST
6517: LIST
6518: LIST
6519: LIST
6520: LIST
6521: LIST
6522: PUSH
6523: LD_INT 0
6525: DIFF
6526: PUSH
6527: LD_INT 0
6529: GREATER
6530: IFFALSE 6547
// GSCount = GSCount + 0.75 ;
6532: LD_ADDR_EXP 238
6536: PUSH
6537: LD_EXP 238
6541: PUSH
6542: LD_REAL  7.50000000000000E-0001
6545: PLUS
6546: ST_TO_ADDR
// if ( [ ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] diff 0 ) > 1 then
6547: LD_EXP 198
6551: PUSH
6552: LD_EXP 199
6556: PUSH
6557: LD_EXP 200
6561: PUSH
6562: LD_EXP 201
6566: PUSH
6567: LD_EXP 202
6571: PUSH
6572: LD_EXP 203
6576: PUSH
6577: EMPTY
6578: LIST
6579: LIST
6580: LIST
6581: LIST
6582: LIST
6583: LIST
6584: PUSH
6585: LD_INT 0
6587: DIFF
6588: PUSH
6589: LD_INT 1
6591: GREATER
6592: IFFALSE 6609
// GSCount = GSCount + 0.5 ;
6594: LD_ADDR_EXP 238
6598: PUSH
6599: LD_EXP 238
6603: PUSH
6604: LD_REAL  5.00000000000000E-0001
6607: PLUS
6608: ST_TO_ADDR
// if AllianceDestroyed then
6609: LD_EXP 220
6613: IFFALSE 6630
// GSCount = GSCount + 1.5 ;
6615: LD_ADDR_EXP 238
6619: PUSH
6620: LD_EXP 238
6624: PUSH
6625: LD_REAL  1.50000000000000E+0000
6628: PLUS
6629: ST_TO_ADDR
// technologies = LoadVariable ( Technologies_15 , 0 ) ;
6630: LD_ADDR_VAR 0 16
6634: PUSH
6635: LD_STRING Technologies_15
6637: PPUSH
6638: LD_INT 0
6640: PPUSH
6641: CALL_OW 30
6645: ST_TO_ADDR
// Heike = LoadCharacter ( Heike_15 , 0 , 0 ) ;
6646: LD_ADDR_EXP 10
6650: PUSH
6651: LD_STRING Heike_15
6653: PPUSH
6654: LD_INT 0
6656: PPUSH
6657: LD_INT 0
6659: PPUSH
6660: CALL_OW 527
6664: ST_TO_ADDR
// Omar = LoadCharacter ( Omar_15 , 0 , 0 ) ;
6665: LD_ADDR_EXP 23
6669: PUSH
6670: LD_STRING Omar_15
6672: PPUSH
6673: LD_INT 0
6675: PPUSH
6676: LD_INT 0
6678: PPUSH
6679: CALL_OW 527
6683: ST_TO_ADDR
// Gensher = LoadCharacter ( Gensher_15 , 0 , 0 ) ;
6684: LD_ADDR_EXP 24
6688: PUSH
6689: LD_STRING Gensher_15
6691: PPUSH
6692: LD_INT 0
6694: PPUSH
6695: LD_INT 0
6697: PPUSH
6698: CALL_OW 527
6702: ST_TO_ADDR
// Snake = LoadCharacter ( Snake_15 , 0 , 0 ) ;
6703: LD_ADDR_EXP 25
6707: PUSH
6708: LD_STRING Snake_15
6710: PPUSH
6711: LD_INT 0
6713: PPUSH
6714: LD_INT 0
6716: PPUSH
6717: CALL_OW 527
6721: ST_TO_ADDR
// Olaf = LoadCharacter ( Olaf_15 , 0 , 0 ) ;
6722: LD_ADDR_EXP 11
6726: PUSH
6727: LD_STRING Olaf_15
6729: PPUSH
6730: LD_INT 0
6732: PPUSH
6733: LD_INT 0
6735: PPUSH
6736: CALL_OW 527
6740: ST_TO_ADDR
// Oswald = LoadCharacter ( Oswald_15 , 0 , 0 ) ;
6741: LD_ADDR_EXP 13
6745: PUSH
6746: LD_STRING Oswald_15
6748: PPUSH
6749: LD_INT 0
6751: PPUSH
6752: LD_INT 0
6754: PPUSH
6755: CALL_OW 527
6759: ST_TO_ADDR
// Ralph = LoadCharacter ( Ralph_15 , 0 , 0 ) ;
6760: LD_ADDR_EXP 14
6764: PUSH
6765: LD_STRING Ralph_15
6767: PPUSH
6768: LD_INT 0
6770: PPUSH
6771: LD_INT 0
6773: PPUSH
6774: CALL_OW 527
6778: ST_TO_ADDR
// Sonya = LoadCharacter ( Sonya_15 , 0 , 0 ) ;
6779: LD_ADDR_EXP 12
6783: PUSH
6784: LD_STRING Sonya_15
6786: PPUSH
6787: LD_INT 0
6789: PPUSH
6790: LD_INT 0
6792: PPUSH
6793: CALL_OW 527
6797: ST_TO_ADDR
// Aviradze = LoadCharacter ( Aviradze_15 , 0 , 0 ) ;
6798: LD_ADDR_EXP 16
6802: PUSH
6803: LD_STRING Aviradze_15
6805: PPUSH
6806: LD_INT 0
6808: PPUSH
6809: LD_INT 0
6811: PPUSH
6812: CALL_OW 527
6816: ST_TO_ADDR
// Kowalski = LoadCharacter ( Kowalski_15 , 0 , 0 ) ;
6817: LD_ADDR_EXP 15
6821: PUSH
6822: LD_STRING Kowalski_15
6824: PPUSH
6825: LD_INT 0
6827: PPUSH
6828: LD_INT 0
6830: PPUSH
6831: CALL_OW 527
6835: ST_TO_ADDR
// Evelyn = LoadCharacter ( Evelyn_15 , 0 , 0 ) ;
6836: LD_ADDR_EXP 20
6840: PUSH
6841: LD_STRING Evelyn_15
6843: PPUSH
6844: LD_INT 0
6846: PPUSH
6847: LD_INT 0
6849: PPUSH
6850: CALL_OW 527
6854: ST_TO_ADDR
// Swansson = LoadCharacter ( Swansson_15 , 0 , 0 ) ;
6855: LD_ADDR_EXP 17
6859: PUSH
6860: LD_STRING Swansson_15
6862: PPUSH
6863: LD_INT 0
6865: PPUSH
6866: LD_INT 0
6868: PPUSH
6869: CALL_OW 527
6873: ST_TO_ADDR
// Dwayne = LoadCharacter ( Dwayne_15 , 0 , 0 ) ;
6874: LD_ADDR_EXP 18
6878: PUSH
6879: LD_STRING Dwayne_15
6881: PPUSH
6882: LD_INT 0
6884: PPUSH
6885: LD_INT 0
6887: PPUSH
6888: CALL_OW 527
6892: ST_TO_ADDR
// Khattam = LoadCharacter ( Khattam_15 , 0 , 0 ) ;
6893: LD_ADDR_EXP 19
6897: PUSH
6898: LD_STRING Khattam_15
6900: PPUSH
6901: LD_INT 0
6903: PPUSH
6904: LD_INT 0
6906: PPUSH
6907: CALL_OW 527
6911: ST_TO_ADDR
// Makise = LoadCharacter ( Makise_15 , 0 , 0 ) ;
6912: LD_ADDR_EXP 21
6916: PUSH
6917: LD_STRING Makise_15
6919: PPUSH
6920: LD_INT 0
6922: PPUSH
6923: LD_INT 0
6925: PPUSH
6926: CALL_OW 527
6930: ST_TO_ADDR
// Gonzo = LoadCharacter ( Gonzo_15 , 0 , 0 ) ;
6931: LD_ADDR_EXP 22
6935: PUSH
6936: LD_STRING Gonzo_15
6938: PPUSH
6939: LD_INT 0
6941: PPUSH
6942: LD_INT 0
6944: PPUSH
6945: CALL_OW 527
6949: ST_TO_ADDR
// others = CreateCharacterSet ( StrikeForce_Humans_15 ) ;
6950: LD_ADDR_VAR 0 2
6954: PUSH
6955: LD_STRING StrikeForce_Humans_15
6957: PPUSH
6958: CALL_OW 31
6962: ST_TO_ADDR
// temp_humans = [ Heike , Omar , Gensher , Olaf , Oswald , Ralph , Sonya , Aviradze , Kowalski , Evelyn , Swansson , Dwayne , Khattam , Makise , Snake ] ^ others ;
6963: LD_ADDR_VAR 0 13
6967: PUSH
6968: LD_EXP 10
6972: PUSH
6973: LD_EXP 23
6977: PUSH
6978: LD_EXP 24
6982: PUSH
6983: LD_EXP 11
6987: PUSH
6988: LD_EXP 13
6992: PUSH
6993: LD_EXP 14
6997: PUSH
6998: LD_EXP 12
7002: PUSH
7003: LD_EXP 16
7007: PUSH
7008: LD_EXP 15
7012: PUSH
7013: LD_EXP 20
7017: PUSH
7018: LD_EXP 17
7022: PUSH
7023: LD_EXP 18
7027: PUSH
7028: LD_EXP 19
7032: PUSH
7033: LD_EXP 21
7037: PUSH
7038: LD_EXP 25
7042: PUSH
7043: EMPTY
7044: LIST
7045: LIST
7046: LIST
7047: LIST
7048: LIST
7049: LIST
7050: LIST
7051: LIST
7052: LIST
7053: LIST
7054: LIST
7055: LIST
7056: LIST
7057: LIST
7058: LIST
7059: PUSH
7060: LD_VAR 0 2
7064: ADD
7065: ST_TO_ADDR
// temp_list = LoadVariable ( StrikeForce_Vehicles_15 , 0 ) ;
7066: LD_ADDR_VAR 0 10
7070: PUSH
7071: LD_STRING StrikeForce_Vehicles_15
7073: PPUSH
7074: LD_INT 0
7076: PPUSH
7077: CALL_OW 30
7081: ST_TO_ADDR
// temp_vehicles = [ ] ;
7082: LD_ADDR_VAR 0 12
7086: PUSH
7087: EMPTY
7088: ST_TO_ADDR
// InitVc ;
7089: CALL_OW 20
// uc_side = 2 ;
7093: LD_ADDR_OWVAR 20
7097: PUSH
7098: LD_INT 2
7100: ST_TO_ADDR
// if temp_list > 0 then
7101: LD_VAR 0 10
7105: PUSH
7106: LD_INT 0
7108: GREATER
7109: IFFALSE 7334
// for i in temp_list do
7111: LD_ADDR_VAR 0 3
7115: PUSH
7116: LD_VAR 0 10
7120: PUSH
7121: FOR_IN
7122: IFFALSE 7332
// begin uc_nation = i [ 1 ] ;
7124: LD_ADDR_OWVAR 21
7128: PUSH
7129: LD_VAR 0 3
7133: PUSH
7134: LD_INT 1
7136: ARRAY
7137: ST_TO_ADDR
// vc_weapon = i [ 2 ] ;
7138: LD_ADDR_OWVAR 40
7142: PUSH
7143: LD_VAR 0 3
7147: PUSH
7148: LD_INT 2
7150: ARRAY
7151: ST_TO_ADDR
// vc_chassis = i [ 3 ] ;
7152: LD_ADDR_OWVAR 37
7156: PUSH
7157: LD_VAR 0 3
7161: PUSH
7162: LD_INT 3
7164: ARRAY
7165: ST_TO_ADDR
// vc_control = i [ 4 ] ;
7166: LD_ADDR_OWVAR 38
7170: PUSH
7171: LD_VAR 0 3
7175: PUSH
7176: LD_INT 4
7178: ARRAY
7179: ST_TO_ADDR
// vc_engine = i [ 5 ] ;
7180: LD_ADDR_OWVAR 39
7184: PUSH
7185: LD_VAR 0 3
7189: PUSH
7190: LD_INT 5
7192: ARRAY
7193: ST_TO_ADDR
// un = CreateVehicle ;
7194: LD_ADDR_VAR 0 8
7198: PUSH
7199: CALL_OW 45
7203: ST_TO_ADDR
// temp_vehicles = temp_vehicles ^ un ;
7204: LD_ADDR_VAR 0 12
7208: PUSH
7209: LD_VAR 0 12
7213: PUSH
7214: LD_VAR 0 8
7218: ADD
7219: ST_TO_ADDR
// if GetWeapon ( un ) in [ ar_cargo_bay , ru_cargo_bay , us_cargo_bay ] then
7220: LD_VAR 0 8
7224: PPUSH
7225: CALL_OW 264
7229: PUSH
7230: LD_INT 32
7232: PUSH
7233: LD_INT 51
7235: PUSH
7236: LD_INT 12
7238: PUSH
7239: EMPTY
7240: LIST
7241: LIST
7242: LIST
7243: IN
7244: IFFALSE 7330
// begin AddCargo ( un , mat_artifact , i [ 9 ] ) ;
7246: LD_VAR 0 8
7250: PPUSH
7251: LD_INT 4
7253: PPUSH
7254: LD_VAR 0 3
7258: PUSH
7259: LD_INT 9
7261: ARRAY
7262: PPUSH
7263: CALL_OW 291
// AddCargo ( un , mat_cans , i [ 6 ] ) ;
7267: LD_VAR 0 8
7271: PPUSH
7272: LD_INT 1
7274: PPUSH
7275: LD_VAR 0 3
7279: PUSH
7280: LD_INT 6
7282: ARRAY
7283: PPUSH
7284: CALL_OW 291
// AddCargo ( un , mat_oil , i [ 7 ] ) ;
7288: LD_VAR 0 8
7292: PPUSH
7293: LD_INT 2
7295: PPUSH
7296: LD_VAR 0 3
7300: PUSH
7301: LD_INT 7
7303: ARRAY
7304: PPUSH
7305: CALL_OW 291
// AddCargo ( un , mat_siberit , i [ 8 ] ) ;
7309: LD_VAR 0 8
7313: PPUSH
7314: LD_INT 3
7316: PPUSH
7317: LD_VAR 0 3
7321: PUSH
7322: LD_INT 8
7324: ARRAY
7325: PPUSH
7326: CALL_OW 291
// end ; end ;
7330: GO 7121
7332: POP
7333: POP
// TigersNum = LoadVariable ( StrikeForce_Tigers_15 , 0 ) ;
7334: LD_ADDR_VAR 0 15
7338: PUSH
7339: LD_STRING StrikeForce_Tigers_15
7341: PPUSH
7342: LD_INT 0
7344: PPUSH
7345: CALL_OW 30
7349: ST_TO_ADDR
// temp_list = LoadVariable ( StrikeForce_Drivers_15 , 0 ) ;
7350: LD_ADDR_VAR 0 10
7354: PUSH
7355: LD_STRING StrikeForce_Drivers_15
7357: PPUSH
7358: LD_INT 0
7360: PPUSH
7361: CALL_OW 30
7365: ST_TO_ADDR
// for i = 1 to temp_humans do
7366: LD_ADDR_VAR 0 3
7370: PUSH
7371: DOUBLE
7372: LD_INT 1
7374: DEC
7375: ST_TO_ADDR
7376: LD_VAR 0 13
7380: PUSH
7381: FOR_TO
7382: IFFALSE 7536
// if temp_list [ i ] > 0 then
7384: LD_VAR 0 10
7388: PUSH
7389: LD_VAR 0 3
7393: ARRAY
7394: PUSH
7395: LD_INT 0
7397: GREATER
7398: IFFALSE 7534
// begin if not temp_humans [ i ] = Omar or TigersNum = 0 then
7400: LD_VAR 0 13
7404: PUSH
7405: LD_VAR 0 3
7409: ARRAY
7410: PUSH
7411: LD_EXP 23
7415: EQUAL
7416: NOT
7417: PUSH
7418: LD_VAR 0 15
7422: PUSH
7423: LD_INT 0
7425: EQUAL
7426: OR
7427: IFFALSE 7463
// PlaceHumanInUnit ( temp_humans [ i ] , temp_vehicles [ temp_list [ i ] ] ) else
7429: LD_VAR 0 13
7433: PUSH
7434: LD_VAR 0 3
7438: ARRAY
7439: PPUSH
7440: LD_VAR 0 12
7444: PUSH
7445: LD_VAR 0 10
7449: PUSH
7450: LD_VAR 0 3
7454: ARRAY
7455: ARRAY
7456: PPUSH
7457: CALL_OW 52
7461: GO 7485
// OmarVeh = temp_vehicles [ temp_list [ i ] ] ;
7463: LD_ADDR_EXP 29
7467: PUSH
7468: LD_VAR 0 12
7472: PUSH
7473: LD_VAR 0 10
7477: PUSH
7478: LD_VAR 0 3
7482: ARRAY
7483: ARRAY
7484: ST_TO_ADDR
// if GetWeapon ( temp_vehicles [ temp_list [ i ] ] ) = ar_control_tower then
7485: LD_VAR 0 12
7489: PUSH
7490: LD_VAR 0 10
7494: PUSH
7495: LD_VAR 0 3
7499: ARRAY
7500: ARRAY
7501: PPUSH
7502: CALL_OW 264
7506: PUSH
7507: LD_INT 31
7509: EQUAL
7510: IFFALSE 7534
// Control_drivers = Control_drivers ^ temp_humans [ i ] ;
7512: LD_ADDR_EXP 27
7516: PUSH
7517: LD_EXP 27
7521: PUSH
7522: LD_VAR 0 13
7526: PUSH
7527: LD_VAR 0 3
7531: ARRAY
7532: ADD
7533: ST_TO_ADDR
// end ;
7534: GO 7381
7536: POP
7537: POP
// temp_list = temp_humans ^ Gonzo diff 0 ;
7538: LD_ADDR_VAR 0 10
7542: PUSH
7543: LD_VAR 0 13
7547: PUSH
7548: LD_EXP 22
7552: ADD
7553: PUSH
7554: LD_INT 0
7556: DIFF
7557: ST_TO_ADDR
// if TestVariable ( GensherIsLeader_15 ) then
7558: LD_STRING GensherIsLeader_15
7560: PPUSH
7561: CALL_OW 27
7565: IFFALSE 7593
// begin temp_list = temp_list diff Gensher ;
7567: LD_ADDR_VAR 0 10
7571: PUSH
7572: LD_VAR 0 10
7576: PUSH
7577: LD_EXP 24
7581: DIFF
7582: ST_TO_ADDR
// lead = Gensher ;
7583: LD_ADDR_EXP 32
7587: PUSH
7588: LD_EXP 24
7592: ST_TO_ADDR
// end ; if TestVariable ( OswaldIsLeader_15 ) then
7593: LD_STRING OswaldIsLeader_15
7595: PPUSH
7596: CALL_OW 27
7600: IFFALSE 7628
// begin temp_list = temp_list diff Oswald ;
7602: LD_ADDR_VAR 0 10
7606: PUSH
7607: LD_VAR 0 10
7611: PUSH
7612: LD_EXP 13
7616: DIFF
7617: ST_TO_ADDR
// lead = Oswald ;
7618: LD_ADDR_EXP 32
7622: PUSH
7623: LD_EXP 13
7627: ST_TO_ADDR
// end ; if TestVariable ( RalphIsLeader_15 ) then
7628: LD_STRING RalphIsLeader_15
7630: PPUSH
7631: CALL_OW 27
7635: IFFALSE 7663
// begin temp_list = temp_list diff Ralph ;
7637: LD_ADDR_VAR 0 10
7641: PUSH
7642: LD_VAR 0 10
7646: PUSH
7647: LD_EXP 14
7651: DIFF
7652: ST_TO_ADDR
// lead = Ralph ;
7653: LD_ADDR_EXP 32
7657: PUSH
7658: LD_EXP 14
7662: ST_TO_ADDR
// end ; if TestVariable ( KowalskiIsLeader_15 ) then
7663: LD_STRING KowalskiIsLeader_15
7665: PPUSH
7666: CALL_OW 27
7670: IFFALSE 7698
// begin temp_list = temp_list diff Kowalski ;
7672: LD_ADDR_VAR 0 10
7676: PUSH
7677: LD_VAR 0 10
7681: PUSH
7682: LD_EXP 15
7686: DIFF
7687: ST_TO_ADDR
// lead = Kowalski ;
7688: LD_ADDR_EXP 32
7692: PUSH
7693: LD_EXP 15
7697: ST_TO_ADDR
// end ; if TestVariable ( SwanssonIsLeader_15 ) then
7698: LD_STRING SwanssonIsLeader_15
7700: PPUSH
7701: CALL_OW 27
7705: IFFALSE 7733
// begin temp_list = temp_list diff Swansson ;
7707: LD_ADDR_VAR 0 10
7711: PUSH
7712: LD_VAR 0 10
7716: PUSH
7717: LD_EXP 17
7721: DIFF
7722: ST_TO_ADDR
// lead = Swansson ;
7723: LD_ADDR_EXP 32
7727: PUSH
7728: LD_EXP 17
7732: ST_TO_ADDR
// end ; if TestVariable ( DwayneIsLeader_15 ) then
7733: LD_STRING DwayneIsLeader_15
7735: PPUSH
7736: CALL_OW 27
7740: IFFALSE 7768
// begin temp_list = temp_list diff Dwayne ;
7742: LD_ADDR_VAR 0 10
7746: PUSH
7747: LD_VAR 0 10
7751: PUSH
7752: LD_EXP 18
7756: DIFF
7757: ST_TO_ADDR
// lead = Dwayne ;
7758: LD_ADDR_EXP 32
7762: PUSH
7763: LD_EXP 18
7767: ST_TO_ADDR
// end ; support = [ ] ;
7768: LD_ADDR_VAR 0 19
7772: PUSH
7773: EMPTY
7774: ST_TO_ADDR
// if TestVariable ( OlafIsSupport_15 ) then
7775: LD_STRING OlafIsSupport_15
7777: PPUSH
7778: CALL_OW 27
7782: IFFALSE 7816
// begin temp_list = temp_list diff Olaf ;
7784: LD_ADDR_VAR 0 10
7788: PUSH
7789: LD_VAR 0 10
7793: PUSH
7794: LD_EXP 11
7798: DIFF
7799: ST_TO_ADDR
// support = support ^ Olaf ;
7800: LD_ADDR_VAR 0 19
7804: PUSH
7805: LD_VAR 0 19
7809: PUSH
7810: LD_EXP 11
7814: ADD
7815: ST_TO_ADDR
// end ; if TestVariable ( OswaldIsSupport_15 ) then
7816: LD_STRING OswaldIsSupport_15
7818: PPUSH
7819: CALL_OW 27
7823: IFFALSE 7857
// begin temp_list = temp_list diff Oswald ;
7825: LD_ADDR_VAR 0 10
7829: PUSH
7830: LD_VAR 0 10
7834: PUSH
7835: LD_EXP 13
7839: DIFF
7840: ST_TO_ADDR
// support = support ^ Oswald ;
7841: LD_ADDR_VAR 0 19
7845: PUSH
7846: LD_VAR 0 19
7850: PUSH
7851: LD_EXP 13
7855: ADD
7856: ST_TO_ADDR
// end ; if TestVariable ( RalphIsSupport_15 ) then
7857: LD_STRING RalphIsSupport_15
7859: PPUSH
7860: CALL_OW 27
7864: IFFALSE 7898
// begin temp_list = temp_list diff Ralph ;
7866: LD_ADDR_VAR 0 10
7870: PUSH
7871: LD_VAR 0 10
7875: PUSH
7876: LD_EXP 14
7880: DIFF
7881: ST_TO_ADDR
// support = support ^ Ralph ;
7882: LD_ADDR_VAR 0 19
7886: PUSH
7887: LD_VAR 0 19
7891: PUSH
7892: LD_EXP 14
7896: ADD
7897: ST_TO_ADDR
// end ; if TestVariable ( SonyaIsSupport_15 ) then
7898: LD_STRING SonyaIsSupport_15
7900: PPUSH
7901: CALL_OW 27
7905: IFFALSE 7939
// begin temp_list = temp_list diff Sonya ;
7907: LD_ADDR_VAR 0 10
7911: PUSH
7912: LD_VAR 0 10
7916: PUSH
7917: LD_EXP 12
7921: DIFF
7922: ST_TO_ADDR
// support = support ^ Sonya ;
7923: LD_ADDR_VAR 0 19
7927: PUSH
7928: LD_VAR 0 19
7932: PUSH
7933: LD_EXP 12
7937: ADD
7938: ST_TO_ADDR
// end ; if TestVariable ( AviradzeIsSupport_15 ) then
7939: LD_STRING AviradzeIsSupport_15
7941: PPUSH
7942: CALL_OW 27
7946: IFFALSE 7980
// begin temp_list = temp_list diff Aviradze ;
7948: LD_ADDR_VAR 0 10
7952: PUSH
7953: LD_VAR 0 10
7957: PUSH
7958: LD_EXP 16
7962: DIFF
7963: ST_TO_ADDR
// support = support ^ Aviradze ;
7964: LD_ADDR_VAR 0 19
7968: PUSH
7969: LD_VAR 0 19
7973: PUSH
7974: LD_EXP 16
7978: ADD
7979: ST_TO_ADDR
// end ; if TestVariable ( KowalskiIsSupport_15 ) then
7980: LD_STRING KowalskiIsSupport_15
7982: PPUSH
7983: CALL_OW 27
7987: IFFALSE 8021
// begin temp_list = temp_list diff Kowalski ;
7989: LD_ADDR_VAR 0 10
7993: PUSH
7994: LD_VAR 0 10
7998: PUSH
7999: LD_EXP 15
8003: DIFF
8004: ST_TO_ADDR
// support = support ^ Kowalski ;
8005: LD_ADDR_VAR 0 19
8009: PUSH
8010: LD_VAR 0 19
8014: PUSH
8015: LD_EXP 15
8019: ADD
8020: ST_TO_ADDR
// end ; if TestVariable ( EvelynIsSupport_15 ) then
8021: LD_STRING EvelynIsSupport_15
8023: PPUSH
8024: CALL_OW 27
8028: IFFALSE 8062
// begin temp_list = temp_list diff Evelyn ;
8030: LD_ADDR_VAR 0 10
8034: PUSH
8035: LD_VAR 0 10
8039: PUSH
8040: LD_EXP 20
8044: DIFF
8045: ST_TO_ADDR
// support = support ^ Evelyn ;
8046: LD_ADDR_VAR 0 19
8050: PUSH
8051: LD_VAR 0 19
8055: PUSH
8056: LD_EXP 20
8060: ADD
8061: ST_TO_ADDR
// end ; if TestVariable ( SwanssonIsSupport_15 ) then
8062: LD_STRING SwanssonIsSupport_15
8064: PPUSH
8065: CALL_OW 27
8069: IFFALSE 8103
// begin temp_list = temp_list diff Swansson ;
8071: LD_ADDR_VAR 0 10
8075: PUSH
8076: LD_VAR 0 10
8080: PUSH
8081: LD_EXP 17
8085: DIFF
8086: ST_TO_ADDR
// support = support ^ Swansson ;
8087: LD_ADDR_VAR 0 19
8091: PUSH
8092: LD_VAR 0 19
8096: PUSH
8097: LD_EXP 17
8101: ADD
8102: ST_TO_ADDR
// end ; if TestVariable ( DwayneIsSupport_15 ) then
8103: LD_STRING DwayneIsSupport_15
8105: PPUSH
8106: CALL_OW 27
8110: IFFALSE 8144
// begin temp_list = temp_list diff Dwayne ;
8112: LD_ADDR_VAR 0 10
8116: PUSH
8117: LD_VAR 0 10
8121: PUSH
8122: LD_EXP 18
8126: DIFF
8127: ST_TO_ADDR
// support = support ^ Dwayne ;
8128: LD_ADDR_VAR 0 19
8132: PUSH
8133: LD_VAR 0 19
8137: PUSH
8138: LD_EXP 18
8142: ADD
8143: ST_TO_ADDR
// end ; if TestVariable ( KhattamIsSupport_15 ) then
8144: LD_STRING KhattamIsSupport_15
8146: PPUSH
8147: CALL_OW 27
8151: IFFALSE 8185
// begin temp_list = temp_list diff Khattam ;
8153: LD_ADDR_VAR 0 10
8157: PUSH
8158: LD_VAR 0 10
8162: PUSH
8163: LD_EXP 19
8167: DIFF
8168: ST_TO_ADDR
// support = support ^ Khattam ;
8169: LD_ADDR_VAR 0 19
8173: PUSH
8174: LD_VAR 0 19
8178: PUSH
8179: LD_EXP 19
8183: ADD
8184: ST_TO_ADDR
// end ; if TestVariable ( MakiseIsSupport_15 ) then
8185: LD_STRING MakiseIsSupport_15
8187: PPUSH
8188: CALL_OW 27
8192: IFFALSE 8226
// begin temp_list = temp_list diff Makise ;
8194: LD_ADDR_VAR 0 10
8198: PUSH
8199: LD_VAR 0 10
8203: PUSH
8204: LD_EXP 21
8208: DIFF
8209: ST_TO_ADDR
// support = support ^ Makise ;
8210: LD_ADDR_VAR 0 19
8214: PUSH
8215: LD_VAR 0 19
8219: PUSH
8220: LD_EXP 21
8224: ADD
8225: ST_TO_ADDR
// end ; if TestVariable ( SnakeIsSupport_15 ) then
8226: LD_STRING SnakeIsSupport_15
8228: PPUSH
8229: CALL_OW 27
8233: IFFALSE 8267
// begin temp_list = temp_list diff Snake ;
8235: LD_ADDR_VAR 0 10
8239: PUSH
8240: LD_VAR 0 10
8244: PUSH
8245: LD_EXP 25
8249: DIFF
8250: ST_TO_ADDR
// support = support ^ Snake ;
8251: LD_ADDR_VAR 0 19
8255: PUSH
8256: LD_VAR 0 19
8260: PUSH
8261: LD_EXP 25
8265: ADD
8266: ST_TO_ADDR
// end ; others = CreateCharacterSet ( SecondPlayerTeam_15 ) ;
8267: LD_ADDR_VAR 0 2
8271: PUSH
8272: LD_STRING SecondPlayerTeam_15
8274: PPUSH
8275: CALL_OW 31
8279: ST_TO_ADDR
// SecondTeam = SecondTeam ^ others ;
8280: LD_ADDR_EXP 28
8284: PUSH
8285: LD_EXP 28
8289: PUSH
8290: LD_VAR 0 2
8294: ADD
8295: ST_TO_ADDR
// PlayerTeam = temp_vehicles ^ UnitFilter ( temp_list , [ f_not , [ f_driving ] ] ) ;
8296: LD_ADDR_EXP 26
8300: PUSH
8301: LD_VAR 0 12
8305: PUSH
8306: LD_VAR 0 10
8310: PPUSH
8311: LD_INT 3
8313: PUSH
8314: LD_INT 55
8316: PUSH
8317: EMPTY
8318: LIST
8319: PUSH
8320: EMPTY
8321: LIST
8322: LIST
8323: PPUSH
8324: CALL_OW 72
8328: ADD
8329: ST_TO_ADDR
// OmarTigers = [ ] ;
8330: LD_ADDR_EXP 30
8334: PUSH
8335: EMPTY
8336: ST_TO_ADDR
// if TigersNum > 0 then
8337: LD_VAR 0 15
8341: PUSH
8342: LD_INT 0
8344: GREATER
8345: IFFALSE 8546
// for i = 1 to TigersNum do
8347: LD_ADDR_VAR 0 3
8351: PUSH
8352: DOUBLE
8353: LD_INT 1
8355: DEC
8356: ST_TO_ADDR
8357: LD_VAR 0 15
8361: PUSH
8362: FOR_TO
8363: IFFALSE 8544
// begin uc_side = 0 ;
8365: LD_ADDR_OWVAR 20
8369: PUSH
8370: LD_INT 0
8372: ST_TO_ADDR
// uc_nation = nation_nature ;
8373: LD_ADDR_OWVAR 21
8377: PUSH
8378: LD_INT 0
8380: ST_TO_ADDR
// hc_class = class_tiger ;
8381: LD_ADDR_OWVAR 28
8385: PUSH
8386: LD_INT 14
8388: ST_TO_ADDR
// hc_attr = [ 16 , 11 ] ;
8389: LD_ADDR_OWVAR 29
8393: PUSH
8394: LD_INT 16
8396: PUSH
8397: LD_INT 11
8399: PUSH
8400: EMPTY
8401: LIST
8402: LIST
8403: ST_TO_ADDR
// hc_skills = [ 5 , 5 , 5 , 5 ] ;
8404: LD_ADDR_OWVAR 31
8408: PUSH
8409: LD_INT 5
8411: PUSH
8412: LD_INT 5
8414: PUSH
8415: LD_INT 5
8417: PUSH
8418: LD_INT 5
8420: PUSH
8421: EMPTY
8422: LIST
8423: LIST
8424: LIST
8425: LIST
8426: ST_TO_ADDR
// hc_gallery = nature_foreg ;
8427: LD_ADDR_OWVAR 33
8431: PUSH
8432: LD_STRING nature_foreg
8434: ST_TO_ADDR
// hc_face_number = 3 ;
8435: LD_ADDR_OWVAR 34
8439: PUSH
8440: LD_INT 3
8442: ST_TO_ADDR
// hc_agressivity = 0 ;
8443: LD_ADDR_OWVAR 35
8447: PUSH
8448: LD_INT 0
8450: ST_TO_ADDR
// temp = CreateHuman ;
8451: LD_ADDR_VAR 0 14
8455: PUSH
8456: CALL_OW 44
8460: ST_TO_ADDR
// OmarTigers = OmarTigers ^ temp ;
8461: LD_ADDR_EXP 30
8465: PUSH
8466: LD_EXP 30
8470: PUSH
8471: LD_VAR 0 14
8475: ADD
8476: ST_TO_ADDR
// PlaceUnitXYR ( temp , 300 , 260 , 2 , false ) ;
8477: LD_VAR 0 14
8481: PPUSH
8482: LD_INT 300
8484: PPUSH
8485: LD_INT 260
8487: PPUSH
8488: LD_INT 2
8490: PPUSH
8491: LD_INT 0
8493: PPUSH
8494: CALL_OW 50
// PlayerTeam = PlayerTeam diff OmarVeh ;
8498: LD_ADDR_EXP 26
8502: PUSH
8503: LD_EXP 26
8507: PUSH
8508: LD_EXP 29
8512: DIFF
8513: ST_TO_ADDR
// PlayerTeam = PlayerTeam diff Omar ;
8514: LD_ADDR_EXP 26
8518: PUSH
8519: LD_EXP 26
8523: PUSH
8524: LD_EXP 23
8528: DIFF
8529: ST_TO_ADDR
// SetSide ( Omar , 5 ) ;
8530: LD_EXP 23
8534: PPUSH
8535: LD_INT 5
8537: PPUSH
8538: CALL_OW 235
// end ;
8542: GO 8362
8544: POP
8545: POP
// end else
8546: GO 11407
// begin ATech_SibPlant = 1 ;
8548: LD_ADDR_EXP 198
8552: PUSH
8553: LD_INT 1
8555: ST_TO_ADDR
// ATech_Beh = 1 ;
8556: LD_ADDR_EXP 199
8560: PUSH
8561: LD_INT 1
8563: ST_TO_ADDR
// ATech_TimeLapse = 1 ;
8564: LD_ADDR_EXP 200
8568: PUSH
8569: LD_INT 1
8571: ST_TO_ADDR
// ATech_Laser = 1 ;
8572: LD_ADDR_EXP 201
8576: PUSH
8577: LD_INT 1
8579: ST_TO_ADDR
// ATech_SuperStim = 1 ;
8580: LD_ADDR_EXP 202
8584: PUSH
8585: LD_INT 1
8587: ST_TO_ADDR
// ATech_SPBomb = 1 ;
8588: LD_ADDR_EXP 203
8592: PUSH
8593: LD_INT 1
8595: ST_TO_ADDR
// AllianceDestroyed = 0 ;
8596: LD_ADDR_EXP 220
8600: PUSH
8601: LD_INT 0
8603: ST_TO_ADDR
// GSCount = 1.25 ;
8604: LD_ADDR_EXP 238
8608: PUSH
8609: LD_REAL  1.25000000000000E+0000
8612: ST_TO_ADDR
// technologies = [ tech_apelang , tech_tech1 , tech_tech2 , tech_tech3 , tech_explos , tech_selfdest , tech_weap1 , tech_weap2 , tech_weap3 , tech_remcharge , tech_opto1 , tech_opto2 , tech_opto3 , tech_stimdrugs , tech_bio1 , tech_bio2 , tech_bio3 , tech_sibcontam , 72 , tech_sib1 , tech_sib2 , tech_sib3 ] ;
8613: LD_ADDR_VAR 0 16
8617: PUSH
8618: LD_INT 1
8620: PUSH
8621: LD_INT 48
8623: PUSH
8624: LD_INT 49
8626: PUSH
8627: LD_INT 50
8629: PUSH
8630: LD_INT 42
8632: PUSH
8633: LD_INT 43
8635: PUSH
8636: LD_INT 51
8638: PUSH
8639: LD_INT 52
8641: PUSH
8642: LD_INT 53
8644: PUSH
8645: LD_INT 18
8647: PUSH
8648: LD_INT 60
8650: PUSH
8651: LD_INT 61
8653: PUSH
8654: LD_INT 62
8656: PUSH
8657: LD_INT 5
8659: PUSH
8660: LD_INT 66
8662: PUSH
8663: LD_INT 67
8665: PUSH
8666: LD_INT 68
8668: PUSH
8669: LD_INT 26
8671: PUSH
8672: LD_INT 72
8674: PUSH
8675: LD_INT 54
8677: PUSH
8678: LD_INT 55
8680: PUSH
8681: LD_INT 56
8683: PUSH
8684: EMPTY
8685: LIST
8686: LIST
8687: LIST
8688: LIST
8689: LIST
8690: LIST
8691: LIST
8692: LIST
8693: LIST
8694: LIST
8695: LIST
8696: LIST
8697: LIST
8698: LIST
8699: LIST
8700: LIST
8701: LIST
8702: LIST
8703: LIST
8704: LIST
8705: LIST
8706: LIST
8707: ST_TO_ADDR
// hc_class = class_soldier ;
8708: LD_ADDR_OWVAR 28
8712: PUSH
8713: LD_INT 1
8715: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
8716: LD_ADDR_OWVAR 29
8720: PUSH
8721: LD_INT 10
8723: PUSH
8724: LD_INT 12
8726: PUSH
8727: EMPTY
8728: LIST
8729: LIST
8730: ST_TO_ADDR
// hc_skills = [ 10 , 5 , 8 , 7 ] ;
8731: LD_ADDR_OWVAR 31
8735: PUSH
8736: LD_INT 10
8738: PUSH
8739: LD_INT 5
8741: PUSH
8742: LD_INT 8
8744: PUSH
8745: LD_INT 7
8747: PUSH
8748: EMPTY
8749: LIST
8750: LIST
8751: LIST
8752: LIST
8753: ST_TO_ADDR
// hc_sex = 2 ;
8754: LD_ADDR_OWVAR 27
8758: PUSH
8759: LD_INT 2
8761: ST_TO_ADDR
// hc_gallery = ru ;
8762: LD_ADDR_OWVAR 33
8766: PUSH
8767: LD_STRING ru
8769: ST_TO_ADDR
// hc_face_number = 24 ;
8770: LD_ADDR_OWVAR 34
8774: PUSH
8775: LD_INT 24
8777: ST_TO_ADDR
// hc_name = Heike ;
8778: LD_ADDR_OWVAR 26
8782: PUSH
8783: LD_STRING Heike
8785: ST_TO_ADDR
// Heike = CreateHuman ;
8786: LD_ADDR_EXP 10
8790: PUSH
8791: CALL_OW 44
8795: ST_TO_ADDR
// hc_class = class_soldier ;
8796: LD_ADDR_OWVAR 28
8800: PUSH
8801: LD_INT 1
8803: ST_TO_ADDR
// hc_attr = [ 12 , 11 ] ;
8804: LD_ADDR_OWVAR 29
8808: PUSH
8809: LD_INT 12
8811: PUSH
8812: LD_INT 11
8814: PUSH
8815: EMPTY
8816: LIST
8817: LIST
8818: ST_TO_ADDR
// hc_skills = [ 10 , 8 , 5 , 10 ] ;
8819: LD_ADDR_OWVAR 31
8823: PUSH
8824: LD_INT 10
8826: PUSH
8827: LD_INT 8
8829: PUSH
8830: LD_INT 5
8832: PUSH
8833: LD_INT 10
8835: PUSH
8836: EMPTY
8837: LIST
8838: LIST
8839: LIST
8840: LIST
8841: ST_TO_ADDR
// hc_sex = 1 ;
8842: LD_ADDR_OWVAR 27
8846: PUSH
8847: LD_INT 1
8849: ST_TO_ADDR
// hc_gallery = ru ;
8850: LD_ADDR_OWVAR 33
8854: PUSH
8855: LD_STRING ru
8857: ST_TO_ADDR
// hc_face_number = 46 ;
8858: LD_ADDR_OWVAR 34
8862: PUSH
8863: LD_INT 46
8865: ST_TO_ADDR
// hc_name = Omar Ali ;
8866: LD_ADDR_OWVAR 26
8870: PUSH
8871: LD_STRING Omar Ali
8873: ST_TO_ADDR
// Omar = CreateHuman ;
8874: LD_ADDR_EXP 23
8878: PUSH
8879: CALL_OW 44
8883: ST_TO_ADDR
// hc_class = class_soldier ;
8884: LD_ADDR_OWVAR 28
8888: PUSH
8889: LD_INT 1
8891: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
8892: LD_ADDR_OWVAR 29
8896: PUSH
8897: LD_INT 10
8899: PUSH
8900: LD_INT 10
8902: PUSH
8903: EMPTY
8904: LIST
8905: LIST
8906: ST_TO_ADDR
// hc_skills = [ 10 , 5 , 7 , 5 ] ;
8907: LD_ADDR_OWVAR 31
8911: PUSH
8912: LD_INT 10
8914: PUSH
8915: LD_INT 5
8917: PUSH
8918: LD_INT 7
8920: PUSH
8921: LD_INT 5
8923: PUSH
8924: EMPTY
8925: LIST
8926: LIST
8927: LIST
8928: LIST
8929: ST_TO_ADDR
// hc_sex = 1 ;
8930: LD_ADDR_OWVAR 27
8934: PUSH
8935: LD_INT 1
8937: ST_TO_ADDR
// hc_gallery = ru ;
8938: LD_ADDR_OWVAR 33
8942: PUSH
8943: LD_STRING ru
8945: ST_TO_ADDR
// hc_face_number = 26 ;
8946: LD_ADDR_OWVAR 34
8950: PUSH
8951: LD_INT 26
8953: ST_TO_ADDR
// hc_name = Dietrich Gensher ;
8954: LD_ADDR_OWVAR 26
8958: PUSH
8959: LD_STRING Dietrich Gensher
8961: ST_TO_ADDR
// Gensher = CreateHuman ;
8962: LD_ADDR_EXP 24
8966: PUSH
8967: CALL_OW 44
8971: ST_TO_ADDR
// hc_class = class_mechanic ;
8972: LD_ADDR_OWVAR 28
8976: PUSH
8977: LD_INT 3
8979: ST_TO_ADDR
// hc_attr = [ 12 , 10 ] ;
8980: LD_ADDR_OWVAR 29
8984: PUSH
8985: LD_INT 12
8987: PUSH
8988: LD_INT 10
8990: PUSH
8991: EMPTY
8992: LIST
8993: LIST
8994: ST_TO_ADDR
// hc_skills = [ 5 , 6 , 9 , 4 ] ;
8995: LD_ADDR_OWVAR 31
8999: PUSH
9000: LD_INT 5
9002: PUSH
9003: LD_INT 6
9005: PUSH
9006: LD_INT 9
9008: PUSH
9009: LD_INT 4
9011: PUSH
9012: EMPTY
9013: LIST
9014: LIST
9015: LIST
9016: LIST
9017: ST_TO_ADDR
// hc_sex = 1 ;
9018: LD_ADDR_OWVAR 27
9022: PUSH
9023: LD_INT 1
9025: ST_TO_ADDR
// hc_gallery = ar ;
9026: LD_ADDR_OWVAR 33
9030: PUSH
9031: LD_STRING ar
9033: ST_TO_ADDR
// hc_face_number = 2 ;
9034: LD_ADDR_OWVAR 34
9038: PUSH
9039: LD_INT 2
9041: ST_TO_ADDR
// hc_name = Olaf ;
9042: LD_ADDR_OWVAR 26
9046: PUSH
9047: LD_STRING Olaf
9049: ST_TO_ADDR
// Olaf = CreateHuman ;
9050: LD_ADDR_EXP 11
9054: PUSH
9055: CALL_OW 44
9059: ST_TO_ADDR
// hc_class = class_soldier ;
9060: LD_ADDR_OWVAR 28
9064: PUSH
9065: LD_INT 1
9067: ST_TO_ADDR
// hc_attr = [ 11 , 10 ] ;
9068: LD_ADDR_OWVAR 29
9072: PUSH
9073: LD_INT 11
9075: PUSH
9076: LD_INT 10
9078: PUSH
9079: EMPTY
9080: LIST
9081: LIST
9082: ST_TO_ADDR
// hc_skills = [ 10 , 6 , 6 , 4 ] ;
9083: LD_ADDR_OWVAR 31
9087: PUSH
9088: LD_INT 10
9090: PUSH
9091: LD_INT 6
9093: PUSH
9094: LD_INT 6
9096: PUSH
9097: LD_INT 4
9099: PUSH
9100: EMPTY
9101: LIST
9102: LIST
9103: LIST
9104: LIST
9105: ST_TO_ADDR
// hc_sex = 1 ;
9106: LD_ADDR_OWVAR 27
9110: PUSH
9111: LD_INT 1
9113: ST_TO_ADDR
// hc_gallery = ar ;
9114: LD_ADDR_OWVAR 33
9118: PUSH
9119: LD_STRING ar
9121: ST_TO_ADDR
// hc_face_number = 15 ;
9122: LD_ADDR_OWVAR 34
9126: PUSH
9127: LD_INT 15
9129: ST_TO_ADDR
// hc_name = Oswald ;
9130: LD_ADDR_OWVAR 26
9134: PUSH
9135: LD_STRING Oswald
9137: ST_TO_ADDR
// Oswald = CreateHuman ;
9138: LD_ADDR_EXP 13
9142: PUSH
9143: CALL_OW 44
9147: ST_TO_ADDR
// hc_class = class_mechanic ;
9148: LD_ADDR_OWVAR 28
9152: PUSH
9153: LD_INT 3
9155: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9156: LD_ADDR_OWVAR 29
9160: PUSH
9161: LD_INT 10
9163: PUSH
9164: LD_INT 10
9166: PUSH
9167: EMPTY
9168: LIST
9169: LIST
9170: ST_TO_ADDR
// hc_skills = [ 8 , 5 , 10 , 6 ] ;
9171: LD_ADDR_OWVAR 31
9175: PUSH
9176: LD_INT 8
9178: PUSH
9179: LD_INT 5
9181: PUSH
9182: LD_INT 10
9184: PUSH
9185: LD_INT 6
9187: PUSH
9188: EMPTY
9189: LIST
9190: LIST
9191: LIST
9192: LIST
9193: ST_TO_ADDR
// hc_sex = 1 ;
9194: LD_ADDR_OWVAR 27
9198: PUSH
9199: LD_INT 1
9201: ST_TO_ADDR
// hc_gallery = ar ;
9202: LD_ADDR_OWVAR 33
9206: PUSH
9207: LD_STRING ar
9209: ST_TO_ADDR
// hc_face_number = 5 ;
9210: LD_ADDR_OWVAR 34
9214: PUSH
9215: LD_INT 5
9217: ST_TO_ADDR
// hc_name = Ralph ;
9218: LD_ADDR_OWVAR 26
9222: PUSH
9223: LD_STRING Ralph
9225: ST_TO_ADDR
// Ralph = CreateHuman ;
9226: LD_ADDR_EXP 14
9230: PUSH
9231: CALL_OW 44
9235: ST_TO_ADDR
// hc_class = class_scientistic ;
9236: LD_ADDR_OWVAR 28
9240: PUSH
9241: LD_INT 4
9243: ST_TO_ADDR
// hc_attr = [ 9 , 11 ] ;
9244: LD_ADDR_OWVAR 29
9248: PUSH
9249: LD_INT 9
9251: PUSH
9252: LD_INT 11
9254: PUSH
9255: EMPTY
9256: LIST
9257: LIST
9258: ST_TO_ADDR
// hc_skills = [ 5 , 6 , 9 , 10 ] ;
9259: LD_ADDR_OWVAR 31
9263: PUSH
9264: LD_INT 5
9266: PUSH
9267: LD_INT 6
9269: PUSH
9270: LD_INT 9
9272: PUSH
9273: LD_INT 10
9275: PUSH
9276: EMPTY
9277: LIST
9278: LIST
9279: LIST
9280: LIST
9281: ST_TO_ADDR
// hc_sex = 2 ;
9282: LD_ADDR_OWVAR 27
9286: PUSH
9287: LD_INT 2
9289: ST_TO_ADDR
// hc_gallery = ar ;
9290: LD_ADDR_OWVAR 33
9294: PUSH
9295: LD_STRING ar
9297: ST_TO_ADDR
// hc_face_number = 6 ;
9298: LD_ADDR_OWVAR 34
9302: PUSH
9303: LD_INT 6
9305: ST_TO_ADDR
// hc_name = Sonya ;
9306: LD_ADDR_OWVAR 26
9310: PUSH
9311: LD_STRING Sonya
9313: ST_TO_ADDR
// Sonya = CreateHuman ;
9314: LD_ADDR_EXP 12
9318: PUSH
9319: CALL_OW 44
9323: ST_TO_ADDR
// hc_class = class_scientistic ;
9324: LD_ADDR_OWVAR 28
9328: PUSH
9329: LD_INT 4
9331: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
9332: LD_ADDR_OWVAR 29
9336: PUSH
9337: LD_INT 10
9339: PUSH
9340: LD_INT 12
9342: PUSH
9343: EMPTY
9344: LIST
9345: LIST
9346: ST_TO_ADDR
// hc_skills = [ 5 , 6 , 7 , 10 ] ;
9347: LD_ADDR_OWVAR 31
9351: PUSH
9352: LD_INT 5
9354: PUSH
9355: LD_INT 6
9357: PUSH
9358: LD_INT 7
9360: PUSH
9361: LD_INT 10
9363: PUSH
9364: EMPTY
9365: LIST
9366: LIST
9367: LIST
9368: LIST
9369: ST_TO_ADDR
// hc_sex = 1 ;
9370: LD_ADDR_OWVAR 27
9374: PUSH
9375: LD_INT 1
9377: ST_TO_ADDR
// hc_gallery = ar_new ;
9378: LD_ADDR_OWVAR 33
9382: PUSH
9383: LD_STRING ar_new
9385: ST_TO_ADDR
// hc_face_number = 1 ;
9386: LD_ADDR_OWVAR 34
9390: PUSH
9391: LD_INT 1
9393: ST_TO_ADDR
// hc_name = Aviradze ;
9394: LD_ADDR_OWVAR 26
9398: PUSH
9399: LD_STRING Aviradze
9401: ST_TO_ADDR
// Aviradze = CreateHuman ;
9402: LD_ADDR_EXP 16
9406: PUSH
9407: CALL_OW 44
9411: ST_TO_ADDR
// hc_class = class_soldier ;
9412: LD_ADDR_OWVAR 28
9416: PUSH
9417: LD_INT 1
9419: ST_TO_ADDR
// hc_attr = [ 11 , 10 ] ;
9420: LD_ADDR_OWVAR 29
9424: PUSH
9425: LD_INT 11
9427: PUSH
9428: LD_INT 10
9430: PUSH
9431: EMPTY
9432: LIST
9433: LIST
9434: ST_TO_ADDR
// hc_skills = [ 9 , 6 , 7 , 4 ] ;
9435: LD_ADDR_OWVAR 31
9439: PUSH
9440: LD_INT 9
9442: PUSH
9443: LD_INT 6
9445: PUSH
9446: LD_INT 7
9448: PUSH
9449: LD_INT 4
9451: PUSH
9452: EMPTY
9453: LIST
9454: LIST
9455: LIST
9456: LIST
9457: ST_TO_ADDR
// hc_sex = 1 ;
9458: LD_ADDR_OWVAR 27
9462: PUSH
9463: LD_INT 1
9465: ST_TO_ADDR
// hc_gallery = ar_new ;
9466: LD_ADDR_OWVAR 33
9470: PUSH
9471: LD_STRING ar_new
9473: ST_TO_ADDR
// hc_face_number = 2 ;
9474: LD_ADDR_OWVAR 34
9478: PUSH
9479: LD_INT 2
9481: ST_TO_ADDR
// hc_name = Kowalski ;
9482: LD_ADDR_OWVAR 26
9486: PUSH
9487: LD_STRING Kowalski
9489: ST_TO_ADDR
// Kowalski = CreateHuman ;
9490: LD_ADDR_EXP 15
9494: PUSH
9495: CALL_OW 44
9499: ST_TO_ADDR
// hc_class = class_engineer ;
9500: LD_ADDR_OWVAR 28
9504: PUSH
9505: LD_INT 2
9507: ST_TO_ADDR
// hc_attr = [ 9 , 10 ] ;
9508: LD_ADDR_OWVAR 29
9512: PUSH
9513: LD_INT 9
9515: PUSH
9516: LD_INT 10
9518: PUSH
9519: EMPTY
9520: LIST
9521: LIST
9522: ST_TO_ADDR
// hc_skills = [ 6 , 10 , 7 , 6 ] ;
9523: LD_ADDR_OWVAR 31
9527: PUSH
9528: LD_INT 6
9530: PUSH
9531: LD_INT 10
9533: PUSH
9534: LD_INT 7
9536: PUSH
9537: LD_INT 6
9539: PUSH
9540: EMPTY
9541: LIST
9542: LIST
9543: LIST
9544: LIST
9545: ST_TO_ADDR
// hc_sex = 2 ;
9546: LD_ADDR_OWVAR 27
9550: PUSH
9551: LD_INT 2
9553: ST_TO_ADDR
// hc_gallery = ar_new ;
9554: LD_ADDR_OWVAR 33
9558: PUSH
9559: LD_STRING ar_new
9561: ST_TO_ADDR
// hc_face_number = 5 ;
9562: LD_ADDR_OWVAR 34
9566: PUSH
9567: LD_INT 5
9569: ST_TO_ADDR
// hc_name = Evelyn ;
9570: LD_ADDR_OWVAR 26
9574: PUSH
9575: LD_STRING Evelyn
9577: ST_TO_ADDR
// Evelyn = CreateHuman ;
9578: LD_ADDR_EXP 20
9582: PUSH
9583: CALL_OW 44
9587: ST_TO_ADDR
// hc_class = class_mechanic ;
9588: LD_ADDR_OWVAR 28
9592: PUSH
9593: LD_INT 3
9595: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9596: LD_ADDR_OWVAR 29
9600: PUSH
9601: LD_INT 10
9603: PUSH
9604: LD_INT 10
9606: PUSH
9607: EMPTY
9608: LIST
9609: LIST
9610: ST_TO_ADDR
// hc_skills = [ 7 , 5 , 10 , 5 ] ;
9611: LD_ADDR_OWVAR 31
9615: PUSH
9616: LD_INT 7
9618: PUSH
9619: LD_INT 5
9621: PUSH
9622: LD_INT 10
9624: PUSH
9625: LD_INT 5
9627: PUSH
9628: EMPTY
9629: LIST
9630: LIST
9631: LIST
9632: LIST
9633: ST_TO_ADDR
// hc_sex = 1 ;
9634: LD_ADDR_OWVAR 27
9638: PUSH
9639: LD_INT 1
9641: ST_TO_ADDR
// hc_gallery = ar_new ;
9642: LD_ADDR_OWVAR 33
9646: PUSH
9647: LD_STRING ar_new
9649: ST_TO_ADDR
// hc_face_number = 31 ;
9650: LD_ADDR_OWVAR 34
9654: PUSH
9655: LD_INT 31
9657: ST_TO_ADDR
// hc_name = Swansson ;
9658: LD_ADDR_OWVAR 26
9662: PUSH
9663: LD_STRING Swansson
9665: ST_TO_ADDR
// Swansson = CreateHuman ;
9666: LD_ADDR_EXP 17
9670: PUSH
9671: CALL_OW 44
9675: ST_TO_ADDR
// hc_class = class_mechanic ;
9676: LD_ADDR_OWVAR 28
9680: PUSH
9681: LD_INT 3
9683: ST_TO_ADDR
// hc_attr = [ 10 , 11 ] ;
9684: LD_ADDR_OWVAR 29
9688: PUSH
9689: LD_INT 10
9691: PUSH
9692: LD_INT 11
9694: PUSH
9695: EMPTY
9696: LIST
9697: LIST
9698: ST_TO_ADDR
// hc_skills = [ 9 , 5 , 9 , 6 ] ;
9699: LD_ADDR_OWVAR 31
9703: PUSH
9704: LD_INT 9
9706: PUSH
9707: LD_INT 5
9709: PUSH
9710: LD_INT 9
9712: PUSH
9713: LD_INT 6
9715: PUSH
9716: EMPTY
9717: LIST
9718: LIST
9719: LIST
9720: LIST
9721: ST_TO_ADDR
// hc_sex = 1 ;
9722: LD_ADDR_OWVAR 27
9726: PUSH
9727: LD_INT 1
9729: ST_TO_ADDR
// hc_gallery = ar_new ;
9730: LD_ADDR_OWVAR 33
9734: PUSH
9735: LD_STRING ar_new
9737: ST_TO_ADDR
// hc_face_number = 13 ;
9738: LD_ADDR_OWVAR 34
9742: PUSH
9743: LD_INT 13
9745: ST_TO_ADDR
// hc_name = Dwayne ;
9746: LD_ADDR_OWVAR 26
9750: PUSH
9751: LD_STRING Dwayne
9753: ST_TO_ADDR
// Dwayne = CreateHuman ;
9754: LD_ADDR_EXP 18
9758: PUSH
9759: CALL_OW 44
9763: ST_TO_ADDR
// hc_class = class_scientistic ;
9764: LD_ADDR_OWVAR 28
9768: PUSH
9769: LD_INT 4
9771: ST_TO_ADDR
// hc_attr = [ 10 , 9 ] ;
9772: LD_ADDR_OWVAR 29
9776: PUSH
9777: LD_INT 10
9779: PUSH
9780: LD_INT 9
9782: PUSH
9783: EMPTY
9784: LIST
9785: LIST
9786: ST_TO_ADDR
// hc_skills = [ 4 , 6 , 5 , 9 ] ;
9787: LD_ADDR_OWVAR 31
9791: PUSH
9792: LD_INT 4
9794: PUSH
9795: LD_INT 6
9797: PUSH
9798: LD_INT 5
9800: PUSH
9801: LD_INT 9
9803: PUSH
9804: EMPTY
9805: LIST
9806: LIST
9807: LIST
9808: LIST
9809: ST_TO_ADDR
// hc_sex = 1 ;
9810: LD_ADDR_OWVAR 27
9814: PUSH
9815: LD_INT 1
9817: ST_TO_ADDR
// hc_gallery = us ;
9818: LD_ADDR_OWVAR 33
9822: PUSH
9823: LD_STRING us
9825: ST_TO_ADDR
// hc_face_number = 10 ;
9826: LD_ADDR_OWVAR 34
9830: PUSH
9831: LD_INT 10
9833: ST_TO_ADDR
// hc_name = Khattam ;
9834: LD_ADDR_OWVAR 26
9838: PUSH
9839: LD_STRING Khattam
9841: ST_TO_ADDR
// Khattam = CreateHuman ;
9842: LD_ADDR_EXP 19
9846: PUSH
9847: CALL_OW 44
9851: ST_TO_ADDR
// hc_class = class_scientistic ;
9852: LD_ADDR_OWVAR 28
9856: PUSH
9857: LD_INT 4
9859: ST_TO_ADDR
// hc_attr = [ 9 , 9 ] ;
9860: LD_ADDR_OWVAR 29
9864: PUSH
9865: LD_INT 9
9867: PUSH
9868: LD_INT 9
9870: PUSH
9871: EMPTY
9872: LIST
9873: LIST
9874: ST_TO_ADDR
// hc_skills = [ 4 , 8 , 8 , 10 ] ;
9875: LD_ADDR_OWVAR 31
9879: PUSH
9880: LD_INT 4
9882: PUSH
9883: LD_INT 8
9885: PUSH
9886: LD_INT 8
9888: PUSH
9889: LD_INT 10
9891: PUSH
9892: EMPTY
9893: LIST
9894: LIST
9895: LIST
9896: LIST
9897: ST_TO_ADDR
// hc_sex = 2 ;
9898: LD_ADDR_OWVAR 27
9902: PUSH
9903: LD_INT 2
9905: ST_TO_ADDR
// hc_gallery = ar_new ;
9906: LD_ADDR_OWVAR 33
9910: PUSH
9911: LD_STRING ar_new
9913: ST_TO_ADDR
// hc_face_number = 34 ;
9914: LD_ADDR_OWVAR 34
9918: PUSH
9919: LD_INT 34
9921: ST_TO_ADDR
// hc_name = Makise ;
9922: LD_ADDR_OWVAR 26
9926: PUSH
9927: LD_STRING Makise
9929: ST_TO_ADDR
// Makise = CreateHuman ;
9930: LD_ADDR_EXP 21
9934: PUSH
9935: CALL_OW 44
9939: ST_TO_ADDR
// hc_class = class_soldier ;
9940: LD_ADDR_OWVAR 28
9944: PUSH
9945: LD_INT 1
9947: ST_TO_ADDR
// hc_attr = [ 13 , 12 ] ;
9948: LD_ADDR_OWVAR 29
9952: PUSH
9953: LD_INT 13
9955: PUSH
9956: LD_INT 12
9958: PUSH
9959: EMPTY
9960: LIST
9961: LIST
9962: ST_TO_ADDR
// hc_skills = [ 10 , 4 , 7 , 7 ] ;
9963: LD_ADDR_OWVAR 31
9967: PUSH
9968: LD_INT 10
9970: PUSH
9971: LD_INT 4
9973: PUSH
9974: LD_INT 7
9976: PUSH
9977: LD_INT 7
9979: PUSH
9980: EMPTY
9981: LIST
9982: LIST
9983: LIST
9984: LIST
9985: ST_TO_ADDR
// hc_sex = 1 ;
9986: LD_ADDR_OWVAR 27
9990: PUSH
9991: LD_INT 1
9993: ST_TO_ADDR
// hc_gallery = ar_new ;
9994: LD_ADDR_OWVAR 33
9998: PUSH
9999: LD_STRING ar_new
10001: ST_TO_ADDR
// hc_face_number = 36 ;
10002: LD_ADDR_OWVAR 34
10006: PUSH
10007: LD_INT 36
10009: ST_TO_ADDR
// hc_name = Iroquois Pliskin ;
10010: LD_ADDR_OWVAR 26
10014: PUSH
10015: LD_STRING Iroquois Pliskin
10017: ST_TO_ADDR
// Snake = CreateHuman ;
10018: LD_ADDR_EXP 25
10022: PUSH
10023: CALL_OW 44
10027: ST_TO_ADDR
// uc_nation = nation_nature ;
10028: LD_ADDR_OWVAR 21
10032: PUSH
10033: LD_INT 0
10035: ST_TO_ADDR
// hc_class = class_apeman_soldier ;
10036: LD_ADDR_OWVAR 28
10040: PUSH
10041: LD_INT 15
10043: ST_TO_ADDR
// hc_attr = [ 16 , 12 ] ;
10044: LD_ADDR_OWVAR 29
10048: PUSH
10049: LD_INT 16
10051: PUSH
10052: LD_INT 12
10054: PUSH
10055: EMPTY
10056: LIST
10057: LIST
10058: ST_TO_ADDR
// hc_skills = [ 10 , 10 , 1 , 1 ] ;
10059: LD_ADDR_OWVAR 31
10063: PUSH
10064: LD_INT 10
10066: PUSH
10067: LD_INT 10
10069: PUSH
10070: LD_INT 1
10072: PUSH
10073: LD_INT 1
10075: PUSH
10076: EMPTY
10077: LIST
10078: LIST
10079: LIST
10080: LIST
10081: ST_TO_ADDR
// hc_sex = 1 ;
10082: LD_ADDR_OWVAR 27
10086: PUSH
10087: LD_INT 1
10089: ST_TO_ADDR
// hc_gallery =  ;
10090: LD_ADDR_OWVAR 33
10094: PUSH
10095: LD_STRING 
10097: ST_TO_ADDR
// hc_name = Gonzo ;
10098: LD_ADDR_OWVAR 26
10102: PUSH
10103: LD_STRING Gonzo
10105: ST_TO_ADDR
// Gonzo = CreateHuman ;
10106: LD_ADDR_EXP 22
10110: PUSH
10111: CALL_OW 44
10115: ST_TO_ADDR
// uc_nation = nation_arabian ;
10116: LD_ADDR_OWVAR 21
10120: PUSH
10121: LD_INT 2
10123: ST_TO_ADDR
// InitHc ;
10124: CALL_OW 19
// others = [ ] ;
10128: LD_ADDR_VAR 0 2
10132: PUSH
10133: EMPTY
10134: ST_TO_ADDR
// for i = 1 to [ 6 , 4 , 1 ] [ difficulty ] do
10135: LD_ADDR_VAR 0 3
10139: PUSH
10140: DOUBLE
10141: LD_INT 1
10143: DEC
10144: ST_TO_ADDR
10145: LD_INT 6
10147: PUSH
10148: LD_INT 4
10150: PUSH
10151: LD_INT 1
10153: PUSH
10154: EMPTY
10155: LIST
10156: LIST
10157: LIST
10158: PUSH
10159: LD_OWVAR 67
10163: ARRAY
10164: PUSH
10165: FOR_TO
10166: IFFALSE 10196
// begin PrepareSoldier ( false , 8 ) ;
10168: LD_INT 0
10170: PPUSH
10171: LD_INT 8
10173: PPUSH
10174: CALL_OW 381
// others = others ^ CreateHuman ;
10178: LD_ADDR_VAR 0 2
10182: PUSH
10183: LD_VAR 0 2
10187: PUSH
10188: CALL_OW 44
10192: ADD
10193: ST_TO_ADDR
// end ;
10194: GO 10165
10196: POP
10197: POP
// temp_list = Heike ^ Omar ^ Snake ^ Oswald ^ Kowalski ^ others ;
10198: LD_ADDR_VAR 0 10
10202: PUSH
10203: LD_EXP 10
10207: PUSH
10208: LD_EXP 23
10212: ADD
10213: PUSH
10214: LD_EXP 25
10218: ADD
10219: PUSH
10220: LD_EXP 13
10224: ADD
10225: PUSH
10226: LD_EXP 15
10230: ADD
10231: PUSH
10232: LD_VAR 0 2
10236: ADD
10237: ST_TO_ADDR
// SetClass ( temp_list , class_mortar ) ;
10238: LD_VAR 0 10
10242: PPUSH
10243: LD_INT 8
10245: PPUSH
10246: CALL_OW 336
// if difficulty = 3 then
10250: LD_OWVAR 67
10254: PUSH
10255: LD_INT 3
10257: EQUAL
10258: IFFALSE 10286
// begin PrepareScientist ( false , 8 ) ;
10260: LD_INT 0
10262: PPUSH
10263: LD_INT 8
10265: PPUSH
10266: CALL_OW 384
// temp_list = temp_list ^ CreateHuman ;
10270: LD_ADDR_VAR 0 10
10274: PUSH
10275: LD_VAR 0 10
10279: PUSH
10280: CALL_OW 44
10284: ADD
10285: ST_TO_ADDR
// end ; SetClass ( [ Ralph , Swansson , Makise , Olaf , Sonya , Evelyn , Dwayne ] , class_mechanic ) ;
10286: LD_EXP 14
10290: PUSH
10291: LD_EXP 17
10295: PUSH
10296: LD_EXP 21
10300: PUSH
10301: LD_EXP 11
10305: PUSH
10306: LD_EXP 12
10310: PUSH
10311: LD_EXP 20
10315: PUSH
10316: LD_EXP 18
10320: PUSH
10321: EMPTY
10322: LIST
10323: LIST
10324: LIST
10325: LIST
10326: LIST
10327: LIST
10328: LIST
10329: PPUSH
10330: LD_INT 3
10332: PPUSH
10333: CALL_OW 336
// SetClass ( [ Aviradze , Khattam ] , class_scientistic ) ;
10337: LD_EXP 16
10341: PUSH
10342: LD_EXP 19
10346: PUSH
10347: EMPTY
10348: LIST
10349: LIST
10350: PPUSH
10351: LD_INT 4
10353: PPUSH
10354: CALL_OW 336
// Control_drivers = [ Ralph , Swansson , Makise ] ;
10358: LD_ADDR_EXP 27
10362: PUSH
10363: LD_EXP 14
10367: PUSH
10368: LD_EXP 17
10372: PUSH
10373: LD_EXP 21
10377: PUSH
10378: EMPTY
10379: LIST
10380: LIST
10381: LIST
10382: ST_TO_ADDR
// InitVc ;
10383: CALL_OW 20
// vc_chassis = ar_hovercraft ;
10387: LD_ADDR_OWVAR 37
10391: PUSH
10392: LD_INT 11
10394: ST_TO_ADDR
// vc_engine = engine_combustion ;
10395: LD_ADDR_OWVAR 39
10399: PUSH
10400: LD_INT 1
10402: ST_TO_ADDR
// vc_control = control_manual ;
10403: LD_ADDR_OWVAR 38
10407: PUSH
10408: LD_INT 1
10410: ST_TO_ADDR
// for i = 1 to [ 11 , 9 , 7 ] [ difficulty ] do
10411: LD_ADDR_VAR 0 3
10415: PUSH
10416: DOUBLE
10417: LD_INT 1
10419: DEC
10420: ST_TO_ADDR
10421: LD_INT 11
10423: PUSH
10424: LD_INT 9
10426: PUSH
10427: LD_INT 7
10429: PUSH
10430: EMPTY
10431: LIST
10432: LIST
10433: LIST
10434: PUSH
10435: LD_OWVAR 67
10439: ARRAY
10440: PUSH
10441: FOR_TO
10442: IFFALSE 10519
// begin vc_weapon = [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ;
10444: LD_ADDR_OWVAR 40
10448: PUSH
10449: LD_INT 23
10451: PUSH
10452: LD_INT 24
10454: PUSH
10455: EMPTY
10456: LIST
10457: LIST
10458: PUSH
10459: LD_INT 1
10461: PPUSH
10462: LD_INT 2
10464: PPUSH
10465: CALL_OW 12
10469: ARRAY
10470: ST_TO_ADDR
// temp = CreateVehicle ;
10471: LD_ADDR_VAR 0 14
10475: PUSH
10476: CALL_OW 45
10480: ST_TO_ADDR
// PlaceHumanInUnit ( temp_list [ i ] , temp ) ;
10481: LD_VAR 0 10
10485: PUSH
10486: LD_VAR 0 3
10490: ARRAY
10491: PPUSH
10492: LD_VAR 0 14
10496: PPUSH
10497: CALL_OW 52
// PlayerTeam = PlayerTeam ^ temp ;
10501: LD_ADDR_EXP 26
10505: PUSH
10506: LD_EXP 26
10510: PUSH
10511: LD_VAR 0 14
10515: ADD
10516: ST_TO_ADDR
// end ;
10517: GO 10441
10519: POP
10520: POP
// for i = 1 to 2 do
10521: LD_ADDR_VAR 0 3
10525: PUSH
10526: DOUBLE
10527: LD_INT 1
10529: DEC
10530: ST_TO_ADDR
10531: LD_INT 2
10533: PUSH
10534: FOR_TO
10535: IFFALSE 10621
// begin vc_weapon = [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ;
10537: LD_ADDR_OWVAR 40
10541: PUSH
10542: LD_INT 23
10544: PUSH
10545: LD_INT 24
10547: PUSH
10548: EMPTY
10549: LIST
10550: LIST
10551: PUSH
10552: LD_INT 1
10554: PPUSH
10555: LD_INT 2
10557: PPUSH
10558: CALL_OW 12
10562: ARRAY
10563: ST_TO_ADDR
// temp = CreateVehicle ;
10564: LD_ADDR_VAR 0 14
10568: PUSH
10569: CALL_OW 45
10573: ST_TO_ADDR
// PlaceHumanInUnit ( [ Aviradze , Khattam ] [ i ] , temp ) ;
10574: LD_EXP 16
10578: PUSH
10579: LD_EXP 19
10583: PUSH
10584: EMPTY
10585: LIST
10586: LIST
10587: PUSH
10588: LD_VAR 0 3
10592: ARRAY
10593: PPUSH
10594: LD_VAR 0 14
10598: PPUSH
10599: CALL_OW 52
// PlayerTeam = PlayerTeam ^ temp ;
10603: LD_ADDR_EXP 26
10607: PUSH
10608: LD_EXP 26
10612: PUSH
10613: LD_VAR 0 14
10617: ADD
10618: ST_TO_ADDR
// end ;
10619: GO 10534
10621: POP
10622: POP
// vc_chassis = ar_half_tracked ;
10623: LD_ADDR_OWVAR 37
10627: PUSH
10628: LD_INT 14
10630: ST_TO_ADDR
// vc_weapon = ar_control_tower ;
10631: LD_ADDR_OWVAR 40
10635: PUSH
10636: LD_INT 31
10638: ST_TO_ADDR
// for i = 1 to 3 do
10639: LD_ADDR_VAR 0 3
10643: PUSH
10644: DOUBLE
10645: LD_INT 1
10647: DEC
10648: ST_TO_ADDR
10649: LD_INT 3
10651: PUSH
10652: FOR_TO
10653: IFFALSE 10718
// begin temp = CreateVehicle ;
10655: LD_ADDR_VAR 0 14
10659: PUSH
10660: CALL_OW 45
10664: ST_TO_ADDR
// PlaceHumanInUnit ( [ Ralph , Swansson , Makise ] [ i ] , temp ) ;
10665: LD_EXP 14
10669: PUSH
10670: LD_EXP 17
10674: PUSH
10675: LD_EXP 21
10679: PUSH
10680: EMPTY
10681: LIST
10682: LIST
10683: LIST
10684: PUSH
10685: LD_VAR 0 3
10689: ARRAY
10690: PPUSH
10691: LD_VAR 0 14
10695: PPUSH
10696: CALL_OW 52
// PlayerTeam = PlayerTeam ^ temp ;
10700: LD_ADDR_EXP 26
10704: PUSH
10705: LD_EXP 26
10709: PUSH
10710: LD_VAR 0 14
10714: ADD
10715: ST_TO_ADDR
// end ;
10716: GO 10652
10718: POP
10719: POP
// vc_engine = engine_siberite ;
10720: LD_ADDR_OWVAR 39
10724: PUSH
10725: LD_INT 3
10727: ST_TO_ADDR
// vc_weapon = ar_rocket_launcher ;
10728: LD_ADDR_OWVAR 40
10732: PUSH
10733: LD_INT 28
10735: ST_TO_ADDR
// for i = 1 to 4 do
10736: LD_ADDR_VAR 0 3
10740: PUSH
10741: DOUBLE
10742: LD_INT 1
10744: DEC
10745: ST_TO_ADDR
10746: LD_INT 4
10748: PUSH
10749: FOR_TO
10750: IFFALSE 10821
// begin temp = CreateVehicle ;
10752: LD_ADDR_VAR 0 14
10756: PUSH
10757: CALL_OW 45
10761: ST_TO_ADDR
// PlaceHumanInUnit ( [ Olaf , Sonya , Evelyn , Dwayne ] [ i ] , temp ) ;
10762: LD_EXP 11
10766: PUSH
10767: LD_EXP 12
10771: PUSH
10772: LD_EXP 20
10776: PUSH
10777: LD_EXP 18
10781: PUSH
10782: EMPTY
10783: LIST
10784: LIST
10785: LIST
10786: LIST
10787: PUSH
10788: LD_VAR 0 3
10792: ARRAY
10793: PPUSH
10794: LD_VAR 0 14
10798: PPUSH
10799: CALL_OW 52
// PlayerTeam = PlayerTeam ^ temp ;
10803: LD_ADDR_EXP 26
10807: PUSH
10808: LD_EXP 26
10812: PUSH
10813: LD_VAR 0 14
10817: ADD
10818: ST_TO_ADDR
// end ;
10819: GO 10749
10821: POP
10822: POP
// vc_control = control_remote ;
10823: LD_ADDR_OWVAR 38
10827: PUSH
10828: LD_INT 2
10830: ST_TO_ADDR
// vc_engine = engine_combustion ;
10831: LD_ADDR_OWVAR 39
10835: PUSH
10836: LD_INT 1
10838: ST_TO_ADDR
// for i = 1 to [ 4 , 3 , 2 ] [ difficulty ] do
10839: LD_ADDR_VAR 0 3
10843: PUSH
10844: DOUBLE
10845: LD_INT 1
10847: DEC
10848: ST_TO_ADDR
10849: LD_INT 4
10851: PUSH
10852: LD_INT 3
10854: PUSH
10855: LD_INT 2
10857: PUSH
10858: EMPTY
10859: LIST
10860: LIST
10861: LIST
10862: PUSH
10863: LD_OWVAR 67
10867: ARRAY
10868: PUSH
10869: FOR_TO
10870: IFFALSE 10890
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
10872: LD_ADDR_EXP 26
10876: PUSH
10877: LD_EXP 26
10881: PUSH
10882: CALL_OW 45
10886: ADD
10887: ST_TO_ADDR
10888: GO 10869
10890: POP
10891: POP
// vc_weapon = ar_selfpropelled_bomb ;
10892: LD_ADDR_OWVAR 40
10896: PUSH
10897: LD_INT 29
10899: ST_TO_ADDR
// for i = 1 to [ 8 , 7 , 6 ] [ difficulty ] do
10900: LD_ADDR_VAR 0 3
10904: PUSH
10905: DOUBLE
10906: LD_INT 1
10908: DEC
10909: ST_TO_ADDR
10910: LD_INT 8
10912: PUSH
10913: LD_INT 7
10915: PUSH
10916: LD_INT 6
10918: PUSH
10919: EMPTY
10920: LIST
10921: LIST
10922: LIST
10923: PUSH
10924: LD_OWVAR 67
10928: ARRAY
10929: PUSH
10930: FOR_TO
10931: IFFALSE 10951
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
10933: LD_ADDR_EXP 26
10937: PUSH
10938: LD_EXP 26
10942: PUSH
10943: CALL_OW 45
10947: ADD
10948: ST_TO_ADDR
10949: GO 10930
10951: POP
10952: POP
// vc_weapon = ar_gun ;
10953: LD_ADDR_OWVAR 40
10957: PUSH
10958: LD_INT 27
10960: ST_TO_ADDR
// for i = 1 to 2 do
10961: LD_ADDR_VAR 0 3
10965: PUSH
10966: DOUBLE
10967: LD_INT 1
10969: DEC
10970: ST_TO_ADDR
10971: LD_INT 2
10973: PUSH
10974: FOR_TO
10975: IFFALSE 10995
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
10977: LD_ADDR_EXP 26
10981: PUSH
10982: LD_EXP 26
10986: PUSH
10987: CALL_OW 45
10991: ADD
10992: ST_TO_ADDR
10993: GO 10974
10995: POP
10996: POP
// vc_control = control_apeman ;
10997: LD_ADDR_OWVAR 38
11001: PUSH
11002: LD_INT 5
11004: ST_TO_ADDR
// for i = 1 to [ 3 , 2 , 1 ] [ difficulty ] do
11005: LD_ADDR_VAR 0 3
11009: PUSH
11010: DOUBLE
11011: LD_INT 1
11013: DEC
11014: ST_TO_ADDR
11015: LD_INT 3
11017: PUSH
11018: LD_INT 2
11020: PUSH
11021: LD_INT 1
11023: PUSH
11024: EMPTY
11025: LIST
11026: LIST
11027: LIST
11028: PUSH
11029: LD_OWVAR 67
11033: ARRAY
11034: PUSH
11035: FOR_TO
11036: IFFALSE 11056
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
11038: LD_ADDR_EXP 26
11042: PUSH
11043: LD_EXP 26
11047: PUSH
11048: CALL_OW 45
11052: ADD
11053: ST_TO_ADDR
11054: GO 11035
11056: POP
11057: POP
// vc_weapon = ar_cargo_bay ;
11058: LD_ADDR_OWVAR 40
11062: PUSH
11063: LD_INT 32
11065: ST_TO_ADDR
// temp_list = CreateVehicle ^ CreateVehicle ^ CreateVehicle ;
11066: LD_ADDR_VAR 0 10
11070: PUSH
11071: CALL_OW 45
11075: PUSH
11076: CALL_OW 45
11080: ADD
11081: PUSH
11082: CALL_OW 45
11086: ADD
11087: ST_TO_ADDR
// AddCargo ( temp_list [ 1 ] , mat_artifact , 40 ) ;
11088: LD_VAR 0 10
11092: PUSH
11093: LD_INT 1
11095: ARRAY
11096: PPUSH
11097: LD_INT 4
11099: PPUSH
11100: LD_INT 40
11102: PPUSH
11103: CALL_OW 291
// AddCargo ( temp_list [ 1 ] , mat_siberit , 60 ) ;
11107: LD_VAR 0 10
11111: PUSH
11112: LD_INT 1
11114: ARRAY
11115: PPUSH
11116: LD_INT 3
11118: PPUSH
11119: LD_INT 60
11121: PPUSH
11122: CALL_OW 291
// AddCargo ( temp_list [ 2 ] , mat_siberit , 100 ) ;
11126: LD_VAR 0 10
11130: PUSH
11131: LD_INT 2
11133: ARRAY
11134: PPUSH
11135: LD_INT 3
11137: PPUSH
11138: LD_INT 100
11140: PPUSH
11141: CALL_OW 291
// AddCargo ( temp_list [ 3 ] , mat_oil , 100 ) ;
11145: LD_VAR 0 10
11149: PUSH
11150: LD_INT 3
11152: ARRAY
11153: PPUSH
11154: LD_INT 2
11156: PPUSH
11157: LD_INT 100
11159: PPUSH
11160: CALL_OW 291
// PlayerTeam = PlayerTeam ^ temp_list ;
11164: LD_ADDR_EXP 26
11168: PUSH
11169: LD_EXP 26
11173: PUSH
11174: LD_VAR 0 10
11178: ADD
11179: ST_TO_ADDR
// vc_weapon = ar_radar ;
11180: LD_ADDR_OWVAR 40
11184: PUSH
11185: LD_INT 30
11187: ST_TO_ADDR
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
11188: LD_ADDR_EXP 26
11192: PUSH
11193: LD_EXP 26
11197: PUSH
11198: CALL_OW 45
11202: ADD
11203: ST_TO_ADDR
// vc_chassis = ar_hovercraft ;
11204: LD_ADDR_OWVAR 37
11208: PUSH
11209: LD_INT 11
11211: ST_TO_ADDR
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
11212: LD_ADDR_EXP 26
11216: PUSH
11217: LD_EXP 26
11221: PUSH
11222: CALL_OW 45
11226: ADD
11227: ST_TO_ADDR
// vc_control = control_remote ;
11228: LD_ADDR_OWVAR 38
11232: PUSH
11233: LD_INT 2
11235: ST_TO_ADDR
// PlayerTeam = PlayerTeam ^ CreateVehicle ;
11236: LD_ADDR_EXP 26
11240: PUSH
11241: LD_EXP 26
11245: PUSH
11246: CALL_OW 45
11250: ADD
11251: ST_TO_ADDR
// support = [ ] ;
11252: LD_ADDR_VAR 0 19
11256: PUSH
11257: EMPTY
11258: ST_TO_ADDR
// lead = Gensher ;
11259: LD_ADDR_EXP 32
11263: PUSH
11264: LD_EXP 24
11268: ST_TO_ADDR
// for i = 1 to 11 do
11269: LD_ADDR_VAR 0 3
11273: PUSH
11274: DOUBLE
11275: LD_INT 1
11277: DEC
11278: ST_TO_ADDR
11279: LD_INT 11
11281: PUSH
11282: FOR_TO
11283: IFFALSE 11313
// begin PrepareSoldier ( false , 7 ) ;
11285: LD_INT 0
11287: PPUSH
11288: LD_INT 7
11290: PPUSH
11291: CALL_OW 381
// SecondTeam = SecondTeam ^ CreateHuman ;
11295: LD_ADDR_EXP 28
11299: PUSH
11300: LD_EXP 28
11304: PUSH
11305: CALL_OW 44
11309: ADD
11310: ST_TO_ADDR
// end ;
11311: GO 11282
11313: POP
11314: POP
// for i = 1 to 11 do
11315: LD_ADDR_VAR 0 3
11319: PUSH
11320: DOUBLE
11321: LD_INT 1
11323: DEC
11324: ST_TO_ADDR
11325: LD_INT 11
11327: PUSH
11328: FOR_TO
11329: IFFALSE 11359
// begin PrepareMechanic ( false , 7 ) ;
11331: LD_INT 0
11333: PPUSH
11334: LD_INT 7
11336: PPUSH
11337: CALL_OW 383
// SecondTeam = SecondTeam ^ CreateHuman ;
11341: LD_ADDR_EXP 28
11345: PUSH
11346: LD_EXP 28
11350: PUSH
11351: CALL_OW 44
11355: ADD
11356: ST_TO_ADDR
// end ;
11357: GO 11328
11359: POP
11360: POP
// for i = 1 to 3 do
11361: LD_ADDR_VAR 0 3
11365: PUSH
11366: DOUBLE
11367: LD_INT 1
11369: DEC
11370: ST_TO_ADDR
11371: LD_INT 3
11373: PUSH
11374: FOR_TO
11375: IFFALSE 11405
// begin PrepareScientist ( false , 7 ) ;
11377: LD_INT 0
11379: PPUSH
11380: LD_INT 7
11382: PPUSH
11383: CALL_OW 384
// SecondTeam = SecondTeam ^ CreateHuman ;
11387: LD_ADDR_EXP 28
11391: PUSH
11392: LD_EXP 28
11396: PUSH
11397: CALL_OW 44
11401: ADD
11402: ST_TO_ADDR
// end ;
11403: GO 11374
11405: POP
11406: POP
// end ; Reinforcements = [ ] ;
11407: LD_ADDR_EXP 31
11411: PUSH
11412: EMPTY
11413: ST_TO_ADDR
// soldiers = [ ] ;
11414: LD_ADDR_VAR 0 17
11418: PUSH
11419: EMPTY
11420: ST_TO_ADDR
// mechanics = [ ] ;
11421: LD_ADDR_VAR 0 18
11425: PUSH
11426: EMPTY
11427: ST_TO_ADDR
// case lead of Gensher :
11428: LD_EXP 32
11432: PUSH
11433: LD_EXP 24
11437: DOUBLE
11438: EQUAL
11439: IFTRUE 11443
11441: GO 11461
11443: POP
// weapons = [ ar_rocket_launcher , ar_gun ] ; Oswald :
11444: LD_ADDR_VAR 0 20
11448: PUSH
11449: LD_INT 28
11451: PUSH
11452: LD_INT 27
11454: PUSH
11455: EMPTY
11456: LIST
11457: LIST
11458: ST_TO_ADDR
11459: GO 11610
11461: LD_EXP 13
11465: DOUBLE
11466: EQUAL
11467: IFTRUE 11471
11469: GO 11489
11471: POP
// weapons = [ ar_rocket_launcher , ar_gun ] ; Ralph :
11472: LD_ADDR_VAR 0 20
11476: PUSH
11477: LD_INT 28
11479: PUSH
11480: LD_INT 27
11482: PUSH
11483: EMPTY
11484: LIST
11485: LIST
11486: ST_TO_ADDR
11487: GO 11610
11489: LD_EXP 14
11493: DOUBLE
11494: EQUAL
11495: IFTRUE 11499
11497: GO 11521
11499: POP
// weapons = [ ar_gun , ar_rocket_launcher , ar_gun ] ; Kowalski :
11500: LD_ADDR_VAR 0 20
11504: PUSH
11505: LD_INT 27
11507: PUSH
11508: LD_INT 28
11510: PUSH
11511: LD_INT 27
11513: PUSH
11514: EMPTY
11515: LIST
11516: LIST
11517: LIST
11518: ST_TO_ADDR
11519: GO 11610
11521: LD_EXP 15
11525: DOUBLE
11526: EQUAL
11527: IFTRUE 11531
11529: GO 11549
11531: POP
// weapons = [ ar_rocket_launcher , ar_gun ] ; Swansson :
11532: LD_ADDR_VAR 0 20
11536: PUSH
11537: LD_INT 28
11539: PUSH
11540: LD_INT 27
11542: PUSH
11543: EMPTY
11544: LIST
11545: LIST
11546: ST_TO_ADDR
11547: GO 11610
11549: LD_EXP 17
11553: DOUBLE
11554: EQUAL
11555: IFTRUE 11559
11557: GO 11577
11559: POP
// weapons = [ ar_rocket_launcher , ar_gun ] ; Dwayne :
11560: LD_ADDR_VAR 0 20
11564: PUSH
11565: LD_INT 28
11567: PUSH
11568: LD_INT 27
11570: PUSH
11571: EMPTY
11572: LIST
11573: LIST
11574: ST_TO_ADDR
11575: GO 11610
11577: LD_EXP 18
11581: DOUBLE
11582: EQUAL
11583: IFTRUE 11587
11585: GO 11609
11587: POP
// weapons = [ ar_rocket_launcher , ar_gun , ar_rocket_launcher ] ; end ;
11588: LD_ADDR_VAR 0 20
11592: PUSH
11593: LD_INT 28
11595: PUSH
11596: LD_INT 27
11598: PUSH
11599: LD_INT 28
11601: PUSH
11602: EMPTY
11603: LIST
11604: LIST
11605: LIST
11606: ST_TO_ADDR
11607: GO 11610
11609: POP
// engines = [ ] ;
11610: LD_ADDR_VAR 0 21
11614: PUSH
11615: EMPTY
11616: ST_TO_ADDR
// for i in support do
11617: LD_ADDR_VAR 0 3
11621: PUSH
11622: LD_VAR 0 19
11626: PUSH
11627: FOR_IN
11628: IFFALSE 11838
// case i of Sonya :
11630: LD_VAR 0 3
11634: PUSH
11635: LD_EXP 12
11639: DOUBLE
11640: EQUAL
11641: IFTRUE 11645
11643: GO 11687
11645: POP
// if engines > 0 then
11646: LD_VAR 0 21
11650: PUSH
11651: LD_INT 0
11653: GREATER
11654: IFFALSE 11666
// engines = engine_siberite else
11656: LD_ADDR_VAR 0 21
11660: PUSH
11661: LD_INT 3
11663: ST_TO_ADDR
11664: GO 11685
// engines = [ engine_siberite , engine_combustion , engine_combustion ] ; Khattam :
11666: LD_ADDR_VAR 0 21
11670: PUSH
11671: LD_INT 3
11673: PUSH
11674: LD_INT 1
11676: PUSH
11677: LD_INT 1
11679: PUSH
11680: EMPTY
11681: LIST
11682: LIST
11683: LIST
11684: ST_TO_ADDR
11685: GO 11836
11687: LD_EXP 19
11691: DOUBLE
11692: EQUAL
11693: IFTRUE 11697
11695: GO 11739
11697: POP
// if engines > 0 then
11698: LD_VAR 0 21
11702: PUSH
11703: LD_INT 0
11705: GREATER
11706: IFFALSE 11718
// engines = engine_siberite else
11708: LD_ADDR_VAR 0 21
11712: PUSH
11713: LD_INT 3
11715: ST_TO_ADDR
11716: GO 11737
// engines = [ engine_siberite , engine_combustion , engine_combustion ] ; Evelyn :
11718: LD_ADDR_VAR 0 21
11722: PUSH
11723: LD_INT 3
11725: PUSH
11726: LD_INT 1
11728: PUSH
11729: LD_INT 1
11731: PUSH
11732: EMPTY
11733: LIST
11734: LIST
11735: LIST
11736: ST_TO_ADDR
11737: GO 11836
11739: LD_EXP 20
11743: DOUBLE
11744: EQUAL
11745: IFTRUE 11749
11747: GO 11787
11749: POP
// if engines > 0 then
11750: LD_VAR 0 21
11754: PUSH
11755: LD_INT 0
11757: GREATER
11758: IFFALSE 11770
// engines = engine_siberite else
11760: LD_ADDR_VAR 0 21
11764: PUSH
11765: LD_INT 3
11767: ST_TO_ADDR
11768: GO 11785
// engines = [ engine_siberite , engine_combustion ] ; Makise :
11770: LD_ADDR_VAR 0 21
11774: PUSH
11775: LD_INT 3
11777: PUSH
11778: LD_INT 1
11780: PUSH
11781: EMPTY
11782: LIST
11783: LIST
11784: ST_TO_ADDR
11785: GO 11836
11787: LD_EXP 21
11791: DOUBLE
11792: EQUAL
11793: IFTRUE 11797
11795: GO 11835
11797: POP
// if engines > 0 then
11798: LD_VAR 0 21
11802: PUSH
11803: LD_INT 0
11805: GREATER
11806: IFFALSE 11818
// engines = engine_siberite else
11808: LD_ADDR_VAR 0 21
11812: PUSH
11813: LD_INT 3
11815: ST_TO_ADDR
11816: GO 11833
// engines = [ engine_siberite , engine_combustion ] ; end ;
11818: LD_ADDR_VAR 0 21
11822: PUSH
11823: LD_INT 3
11825: PUSH
11826: LD_INT 1
11828: PUSH
11829: EMPTY
11830: LIST
11831: LIST
11832: ST_TO_ADDR
11833: GO 11836
11835: POP
11836: GO 11627
11838: POP
11839: POP
// if engines = 0 then
11840: LD_VAR 0 21
11844: PUSH
11845: LD_INT 0
11847: EQUAL
11848: IFFALSE 11858
// engines = engine_combustion ;
11850: LD_ADDR_VAR 0 21
11854: PUSH
11855: LD_INT 1
11857: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
11858: LD_ADDR_OWVAR 37
11862: PUSH
11863: LD_INT 14
11865: ST_TO_ADDR
// vc_control = control_manual ;
11866: LD_ADDR_OWVAR 38
11870: PUSH
11871: LD_INT 1
11873: ST_TO_ADDR
// temp_list = weapons ;
11874: LD_ADDR_VAR 0 10
11878: PUSH
11879: LD_VAR 0 20
11883: ST_TO_ADDR
// temp_list2 = engines ;
11884: LD_ADDR_VAR 0 11
11888: PUSH
11889: LD_VAR 0 21
11893: ST_TO_ADDR
// case lead of Gensher :
11894: LD_EXP 32
11898: PUSH
11899: LD_EXP 24
11903: DOUBLE
11904: EQUAL
11905: IFTRUE 11909
11907: GO 12054
11909: POP
// begin Reinforcements = Reinforcements ^ Gensher ;
11910: LD_ADDR_EXP 31
11914: PUSH
11915: LD_EXP 31
11919: PUSH
11920: LD_EXP 24
11924: ADD
11925: ST_TO_ADDR
// SetClass ( Gensher , class_soldier ) ;
11926: LD_EXP 24
11930: PPUSH
11931: LD_INT 1
11933: PPUSH
11934: CALL_OW 336
// for i = 1 to 4 do
11938: LD_ADDR_VAR 0 3
11942: PUSH
11943: DOUBLE
11944: LD_INT 1
11946: DEC
11947: ST_TO_ADDR
11948: LD_INT 4
11950: PUSH
11951: FOR_TO
11952: IFFALSE 12042
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
11954: LD_ADDR_VAR 0 14
11958: PUSH
11959: LD_EXP 28
11963: PPUSH
11964: LD_INT 1
11966: PPUSH
11967: CALL 18687 0 2
11971: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
11972: LD_ADDR_EXP 28
11976: PUSH
11977: LD_EXP 28
11981: PUSH
11982: LD_VAR 0 14
11986: DIFF
11987: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
11988: LD_ADDR_EXP 31
11992: PUSH
11993: LD_EXP 31
11997: PUSH
11998: LD_VAR 0 14
12002: ADD
12003: ST_TO_ADDR
// if i > 1 then
12004: LD_VAR 0 3
12008: PUSH
12009: LD_INT 1
12011: GREATER
12012: IFFALSE 12028
// SetClass ( temp , class_mortar ) else
12014: LD_VAR 0 14
12018: PPUSH
12019: LD_INT 8
12021: PPUSH
12022: CALL_OW 336
12026: GO 12040
// SetClass ( temp , class_soldier ) ;
12028: LD_VAR 0 14
12032: PPUSH
12033: LD_INT 1
12035: PPUSH
12036: CALL_OW 336
// end ;
12040: GO 11951
12042: POP
12043: POP
// mechanics = 4 ;
12044: LD_ADDR_VAR 0 18
12048: PUSH
12049: LD_INT 4
12051: ST_TO_ADDR
// end ; Oswald :
12052: GO 13613
12054: LD_EXP 13
12058: DOUBLE
12059: EQUAL
12060: IFTRUE 12064
12062: GO 12185
12064: POP
// begin Reinforcements = Reinforcements ^ Oswald ;
12065: LD_ADDR_EXP 31
12069: PUSH
12070: LD_EXP 31
12074: PUSH
12075: LD_EXP 13
12079: ADD
12080: ST_TO_ADDR
// SetClass ( Oswald , class_mortar ) ;
12081: LD_EXP 13
12085: PPUSH
12086: LD_INT 8
12088: PPUSH
12089: CALL_OW 336
// for i = 1 to 3 do
12093: LD_ADDR_VAR 0 3
12097: PUSH
12098: DOUBLE
12099: LD_INT 1
12101: DEC
12102: ST_TO_ADDR
12103: LD_INT 3
12105: PUSH
12106: FOR_TO
12107: IFFALSE 12173
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
12109: LD_ADDR_VAR 0 14
12113: PUSH
12114: LD_EXP 28
12118: PPUSH
12119: LD_INT 1
12121: PPUSH
12122: CALL 18687 0 2
12126: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
12127: LD_ADDR_EXP 28
12131: PUSH
12132: LD_EXP 28
12136: PUSH
12137: LD_VAR 0 14
12141: DIFF
12142: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
12143: LD_ADDR_EXP 31
12147: PUSH
12148: LD_EXP 31
12152: PUSH
12153: LD_VAR 0 14
12157: ADD
12158: ST_TO_ADDR
// SetClass ( temp , class_mortar ) ;
12159: LD_VAR 0 14
12163: PPUSH
12164: LD_INT 8
12166: PPUSH
12167: CALL_OW 336
// end ;
12171: GO 12106
12173: POP
12174: POP
// mechanics = 2 ;
12175: LD_ADDR_VAR 0 18
12179: PUSH
12180: LD_INT 2
12182: ST_TO_ADDR
// end ; Ralph :
12183: GO 13613
12185: LD_EXP 14
12189: DOUBLE
12190: EQUAL
12191: IFTRUE 12195
12193: GO 12572
12195: POP
// begin if GetSkill ( Ralph , skill_combat ) > GetSkill ( Ralph , skill_mechanical ) then
12196: LD_EXP 14
12200: PPUSH
12201: LD_INT 1
12203: PPUSH
12204: CALL_OW 259
12208: PUSH
12209: LD_EXP 14
12213: PPUSH
12214: LD_INT 3
12216: PPUSH
12217: CALL_OW 259
12221: GREATER
12222: IFFALSE 12262
// begin Reinforcements = Reinforcements ^ Ralph ;
12224: LD_ADDR_EXP 31
12228: PUSH
12229: LD_EXP 31
12233: PUSH
12234: LD_EXP 14
12238: ADD
12239: ST_TO_ADDR
// SetClass ( Ralph , class_soldier ) ;
12240: LD_EXP 14
12244: PPUSH
12245: LD_INT 1
12247: PPUSH
12248: CALL_OW 336
// mechanics = 3 ;
12252: LD_ADDR_VAR 0 18
12256: PUSH
12257: LD_INT 3
12259: ST_TO_ADDR
// end else
12260: GO 12488
// begin SetClass ( Ralph , class_mechanic ) ;
12262: LD_EXP 14
12266: PPUSH
12267: LD_INT 3
12269: PPUSH
12270: CALL_OW 336
// mechanics = 2 ;
12274: LD_ADDR_VAR 0 18
12278: PUSH
12279: LD_INT 2
12281: ST_TO_ADDR
// if temp_list = 0 then
12282: LD_VAR 0 10
12286: PUSH
12287: LD_INT 0
12289: EQUAL
12290: IFFALSE 12302
// temp_list = weapons ;
12292: LD_ADDR_VAR 0 10
12296: PUSH
12297: LD_VAR 0 20
12301: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
12302: LD_ADDR_OWVAR 40
12306: PUSH
12307: LD_VAR 0 10
12311: PUSH
12312: LD_INT 1
12314: ARRAY
12315: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
12316: LD_ADDR_VAR 0 10
12320: PUSH
12321: LD_VAR 0 10
12325: PPUSH
12326: LD_INT 1
12328: PPUSH
12329: CALL_OW 3
12333: ST_TO_ADDR
// if temp_list2 = 0 then
12334: LD_VAR 0 11
12338: PUSH
12339: LD_INT 0
12341: EQUAL
12342: IFFALSE 12354
// temp_list2 = engines ;
12344: LD_ADDR_VAR 0 11
12348: PUSH
12349: LD_VAR 0 21
12353: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
12354: LD_ADDR_OWVAR 39
12358: PUSH
12359: LD_VAR 0 11
12363: PUSH
12364: LD_INT 1
12366: ARRAY
12367: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
12368: LD_ADDR_VAR 0 11
12372: PUSH
12373: LD_VAR 0 11
12377: PPUSH
12378: LD_INT 1
12380: PPUSH
12381: CALL_OW 3
12385: ST_TO_ADDR
// un = CreateVehicle ;
12386: LD_ADDR_VAR 0 8
12390: PUSH
12391: CALL_OW 45
12395: ST_TO_ADDR
// PlaceHumanInUnit ( ralph , un ) ;
12396: LD_EXP 14
12400: PPUSH
12401: LD_VAR 0 8
12405: PPUSH
12406: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
12410: LD_ADDR_EXP 31
12414: PUSH
12415: LD_EXP 31
12419: PUSH
12420: LD_VAR 0 8
12424: ADD
12425: ST_TO_ADDR
// temp = BestOfSkill ( SecondTeam , skill_combat ) ;
12426: LD_ADDR_VAR 0 14
12430: PUSH
12431: LD_EXP 28
12435: PPUSH
12436: LD_INT 1
12438: PPUSH
12439: CALL 18687 0 2
12443: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
12444: LD_ADDR_EXP 28
12448: PUSH
12449: LD_EXP 28
12453: PUSH
12454: LD_VAR 0 14
12458: DIFF
12459: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
12460: LD_ADDR_EXP 31
12464: PUSH
12465: LD_EXP 31
12469: PUSH
12470: LD_VAR 0 14
12474: ADD
12475: ST_TO_ADDR
// SetClass ( temp , class_soldier ) ;
12476: LD_VAR 0 14
12480: PPUSH
12481: LD_INT 1
12483: PPUSH
12484: CALL_OW 336
// end ; for i = 1 to 2 do
12488: LD_ADDR_VAR 0 3
12492: PUSH
12493: DOUBLE
12494: LD_INT 1
12496: DEC
12497: ST_TO_ADDR
12498: LD_INT 2
12500: PUSH
12501: FOR_TO
12502: IFFALSE 12568
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
12504: LD_ADDR_VAR 0 14
12508: PUSH
12509: LD_EXP 28
12513: PPUSH
12514: LD_INT 1
12516: PPUSH
12517: CALL 18687 0 2
12521: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
12522: LD_ADDR_EXP 28
12526: PUSH
12527: LD_EXP 28
12531: PUSH
12532: LD_VAR 0 14
12536: DIFF
12537: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
12538: LD_ADDR_EXP 31
12542: PUSH
12543: LD_EXP 31
12547: PUSH
12548: LD_VAR 0 14
12552: ADD
12553: ST_TO_ADDR
// SetClass ( temp , class_mortar ) ;
12554: LD_VAR 0 14
12558: PPUSH
12559: LD_INT 8
12561: PPUSH
12562: CALL_OW 336
// end ;
12566: GO 12501
12568: POP
12569: POP
// end ; Kowalski :
12570: GO 13613
12572: LD_EXP 15
12576: DOUBLE
12577: EQUAL
12578: IFTRUE 12582
12580: GO 12882
12582: POP
// begin temp = Kowalski ;
12583: LD_ADDR_VAR 0 14
12587: PUSH
12588: LD_EXP 15
12592: ST_TO_ADDR
// SetClass ( Kowalski , class_soldier ) ;
12593: LD_EXP 15
12597: PPUSH
12598: LD_INT 1
12600: PPUSH
12601: CALL_OW 336
// for i = 1 to 2 do
12605: LD_ADDR_VAR 0 3
12609: PUSH
12610: DOUBLE
12611: LD_INT 1
12613: DEC
12614: ST_TO_ADDR
12615: LD_INT 2
12617: PUSH
12618: FOR_TO
12619: IFFALSE 12709
// begin un = BestOfSkill ( SecondTeam , skill_combat ) ;
12621: LD_ADDR_VAR 0 8
12625: PUSH
12626: LD_EXP 28
12630: PPUSH
12631: LD_INT 1
12633: PPUSH
12634: CALL 18687 0 2
12638: ST_TO_ADDR
// SecondTeam = SecondTeam diff un ;
12639: LD_ADDR_EXP 28
12643: PUSH
12644: LD_EXP 28
12648: PUSH
12649: LD_VAR 0 8
12653: DIFF
12654: ST_TO_ADDR
// temp = temp ^ un ;
12655: LD_ADDR_VAR 0 14
12659: PUSH
12660: LD_VAR 0 14
12664: PUSH
12665: LD_VAR 0 8
12669: ADD
12670: ST_TO_ADDR
// if i > 1 then
12671: LD_VAR 0 3
12675: PUSH
12676: LD_INT 1
12678: GREATER
12679: IFFALSE 12695
// SetClass ( un , class_mortar ) else
12681: LD_VAR 0 8
12685: PPUSH
12686: LD_INT 8
12688: PPUSH
12689: CALL_OW 336
12693: GO 12707
// SetClass ( un , class_soldier ) ;
12695: LD_VAR 0 8
12699: PPUSH
12700: LD_INT 1
12702: PPUSH
12703: CALL_OW 336
// end ;
12707: GO 12618
12709: POP
12710: POP
// for i in temp do
12711: LD_ADDR_VAR 0 3
12715: PUSH
12716: LD_VAR 0 14
12720: PUSH
12721: FOR_IN
12722: IFFALSE 12870
// begin if temp_list = 0 then
12724: LD_VAR 0 10
12728: PUSH
12729: LD_INT 0
12731: EQUAL
12732: IFFALSE 12744
// temp_list = weapons ;
12734: LD_ADDR_VAR 0 10
12738: PUSH
12739: LD_VAR 0 20
12743: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
12744: LD_ADDR_OWVAR 40
12748: PUSH
12749: LD_VAR 0 10
12753: PUSH
12754: LD_INT 1
12756: ARRAY
12757: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
12758: LD_ADDR_VAR 0 10
12762: PUSH
12763: LD_VAR 0 10
12767: PPUSH
12768: LD_INT 1
12770: PPUSH
12771: CALL_OW 3
12775: ST_TO_ADDR
// if temp_list2 = 0 then
12776: LD_VAR 0 11
12780: PUSH
12781: LD_INT 0
12783: EQUAL
12784: IFFALSE 12796
// temp_list2 = engines ;
12786: LD_ADDR_VAR 0 11
12790: PUSH
12791: LD_VAR 0 21
12795: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
12796: LD_ADDR_OWVAR 39
12800: PUSH
12801: LD_VAR 0 11
12805: PUSH
12806: LD_INT 1
12808: ARRAY
12809: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
12810: LD_ADDR_VAR 0 11
12814: PUSH
12815: LD_VAR 0 11
12819: PPUSH
12820: LD_INT 1
12822: PPUSH
12823: CALL_OW 3
12827: ST_TO_ADDR
// un = CreateVehicle ;
12828: LD_ADDR_VAR 0 8
12832: PUSH
12833: CALL_OW 45
12837: ST_TO_ADDR
// PlaceHumanInUnit ( i , un ) ;
12838: LD_VAR 0 3
12842: PPUSH
12843: LD_VAR 0 8
12847: PPUSH
12848: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
12852: LD_ADDR_EXP 31
12856: PUSH
12857: LD_EXP 31
12861: PUSH
12862: LD_VAR 0 8
12866: ADD
12867: ST_TO_ADDR
// end ;
12868: GO 12721
12870: POP
12871: POP
// mechanics = 3 ;
12872: LD_ADDR_VAR 0 18
12876: PUSH
12877: LD_INT 3
12879: ST_TO_ADDR
// end ; Swansson :
12880: GO 13613
12882: LD_EXP 17
12886: DOUBLE
12887: EQUAL
12888: IFTRUE 12892
12890: GO 13225
12892: POP
// begin if GetSkill ( Swansson , skill_combat ) > GetSkill ( Swansson , skill_mechanical ) then
12893: LD_EXP 17
12897: PPUSH
12898: LD_INT 1
12900: PPUSH
12901: CALL_OW 259
12905: PUSH
12906: LD_EXP 17
12910: PPUSH
12911: LD_INT 3
12913: PPUSH
12914: CALL_OW 259
12918: GREATER
12919: IFFALSE 12967
// begin Reinforcements = Reinforcements ^ Swansson ;
12921: LD_ADDR_EXP 31
12925: PUSH
12926: LD_EXP 31
12930: PUSH
12931: LD_EXP 17
12935: ADD
12936: ST_TO_ADDR
// SetClass ( Swansson , class_soldier ) ;
12937: LD_EXP 17
12941: PPUSH
12942: LD_INT 1
12944: PPUSH
12945: CALL_OW 336
// mechanics = 3 ;
12949: LD_ADDR_VAR 0 18
12953: PUSH
12954: LD_INT 3
12956: ST_TO_ADDR
// j = 2 ;
12957: LD_ADDR_VAR 0 4
12961: PUSH
12962: LD_INT 2
12964: ST_TO_ADDR
// end else
12965: GO 13139
// begin SetClass ( Swansson , class_mechanic ) ;
12967: LD_EXP 17
12971: PPUSH
12972: LD_INT 3
12974: PPUSH
12975: CALL_OW 336
// mechanics = 2 ;
12979: LD_ADDR_VAR 0 18
12983: PUSH
12984: LD_INT 2
12986: ST_TO_ADDR
// j = 3 ;
12987: LD_ADDR_VAR 0 4
12991: PUSH
12992: LD_INT 3
12994: ST_TO_ADDR
// if temp_list = 0 then
12995: LD_VAR 0 10
12999: PUSH
13000: LD_INT 0
13002: EQUAL
13003: IFFALSE 13015
// temp_list = weapons ;
13005: LD_ADDR_VAR 0 10
13009: PUSH
13010: LD_VAR 0 20
13014: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
13015: LD_ADDR_OWVAR 40
13019: PUSH
13020: LD_VAR 0 10
13024: PUSH
13025: LD_INT 1
13027: ARRAY
13028: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
13029: LD_ADDR_VAR 0 10
13033: PUSH
13034: LD_VAR 0 10
13038: PPUSH
13039: LD_INT 1
13041: PPUSH
13042: CALL_OW 3
13046: ST_TO_ADDR
// if temp_list2 = 0 then
13047: LD_VAR 0 11
13051: PUSH
13052: LD_INT 0
13054: EQUAL
13055: IFFALSE 13067
// temp_list2 = engines ;
13057: LD_ADDR_VAR 0 11
13061: PUSH
13062: LD_VAR 0 21
13066: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
13067: LD_ADDR_OWVAR 39
13071: PUSH
13072: LD_VAR 0 11
13076: PUSH
13077: LD_INT 1
13079: ARRAY
13080: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
13081: LD_ADDR_VAR 0 11
13085: PUSH
13086: LD_VAR 0 11
13090: PPUSH
13091: LD_INT 1
13093: PPUSH
13094: CALL_OW 3
13098: ST_TO_ADDR
// un = CreateVehicle ;
13099: LD_ADDR_VAR 0 8
13103: PUSH
13104: CALL_OW 45
13108: ST_TO_ADDR
// PlaceHumanInUnit ( Swansson , un ) ;
13109: LD_EXP 17
13113: PPUSH
13114: LD_VAR 0 8
13118: PPUSH
13119: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
13123: LD_ADDR_EXP 31
13127: PUSH
13128: LD_EXP 31
13132: PUSH
13133: LD_VAR 0 8
13137: ADD
13138: ST_TO_ADDR
// end ; for i = 1 to j do
13139: LD_ADDR_VAR 0 3
13143: PUSH
13144: DOUBLE
13145: LD_INT 1
13147: DEC
13148: ST_TO_ADDR
13149: LD_VAR 0 4
13153: PUSH
13154: FOR_TO
13155: IFFALSE 13221
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
13157: LD_ADDR_VAR 0 14
13161: PUSH
13162: LD_EXP 28
13166: PPUSH
13167: LD_INT 1
13169: PPUSH
13170: CALL 18687 0 2
13174: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
13175: LD_ADDR_EXP 28
13179: PUSH
13180: LD_EXP 28
13184: PUSH
13185: LD_VAR 0 14
13189: DIFF
13190: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
13191: LD_ADDR_EXP 31
13195: PUSH
13196: LD_EXP 31
13200: PUSH
13201: LD_VAR 0 14
13205: ADD
13206: ST_TO_ADDR
// SetClass ( temp , class_soldier ) ;
13207: LD_VAR 0 14
13211: PPUSH
13212: LD_INT 1
13214: PPUSH
13215: CALL_OW 336
// end ;
13219: GO 13154
13221: POP
13222: POP
// end ; Dwayne :
13223: GO 13613
13225: LD_EXP 18
13229: DOUBLE
13230: EQUAL
13231: IFTRUE 13235
13233: GO 13612
13235: POP
// begin if GetSkill ( Dwayne , skill_combat ) > GetSkill ( Dwayne , skill_mechanical ) then
13236: LD_EXP 18
13240: PPUSH
13241: LD_INT 1
13243: PPUSH
13244: CALL_OW 259
13248: PUSH
13249: LD_EXP 18
13253: PPUSH
13254: LD_INT 3
13256: PPUSH
13257: CALL_OW 259
13261: GREATER
13262: IFFALSE 13364
// begin Reinforcements = Reinforcements ^ Dwayne ;
13264: LD_ADDR_EXP 31
13268: PUSH
13269: LD_EXP 31
13273: PUSH
13274: LD_EXP 18
13278: ADD
13279: ST_TO_ADDR
// SetClass ( Dwayne , class_mortar ) ;
13280: LD_EXP 18
13284: PPUSH
13285: LD_INT 8
13287: PPUSH
13288: CALL_OW 336
// mechanics = 4 ;
13292: LD_ADDR_VAR 0 18
13296: PUSH
13297: LD_INT 4
13299: ST_TO_ADDR
// temp = BestOfSkill ( SecondTeam , skill_combat ) ;
13300: LD_ADDR_VAR 0 14
13304: PUSH
13305: LD_EXP 28
13309: PPUSH
13310: LD_INT 1
13312: PPUSH
13313: CALL 18687 0 2
13317: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
13318: LD_ADDR_EXP 28
13322: PUSH
13323: LD_EXP 28
13327: PUSH
13328: LD_VAR 0 14
13332: DIFF
13333: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
13334: LD_ADDR_EXP 31
13338: PUSH
13339: LD_EXP 31
13343: PUSH
13344: LD_VAR 0 14
13348: ADD
13349: ST_TO_ADDR
// SetClass ( temp , class_mortar ) ;
13350: LD_VAR 0 14
13354: PPUSH
13355: LD_INT 8
13357: PPUSH
13358: CALL_OW 336
// end else
13362: GO 13610
// begin SetClass ( Dwayne , class_mechanic ) ;
13364: LD_EXP 18
13368: PPUSH
13369: LD_INT 3
13371: PPUSH
13372: CALL_OW 336
// mechanics = 3 ;
13376: LD_ADDR_VAR 0 18
13380: PUSH
13381: LD_INT 3
13383: ST_TO_ADDR
// if temp_list = 0 then
13384: LD_VAR 0 10
13388: PUSH
13389: LD_INT 0
13391: EQUAL
13392: IFFALSE 13404
// temp_list = weapons ;
13394: LD_ADDR_VAR 0 10
13398: PUSH
13399: LD_VAR 0 20
13403: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
13404: LD_ADDR_OWVAR 40
13408: PUSH
13409: LD_VAR 0 10
13413: PUSH
13414: LD_INT 1
13416: ARRAY
13417: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
13418: LD_ADDR_VAR 0 10
13422: PUSH
13423: LD_VAR 0 10
13427: PPUSH
13428: LD_INT 1
13430: PPUSH
13431: CALL_OW 3
13435: ST_TO_ADDR
// if temp_list2 = 0 then
13436: LD_VAR 0 11
13440: PUSH
13441: LD_INT 0
13443: EQUAL
13444: IFFALSE 13456
// temp_list2 = engines ;
13446: LD_ADDR_VAR 0 11
13450: PUSH
13451: LD_VAR 0 21
13455: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
13456: LD_ADDR_OWVAR 39
13460: PUSH
13461: LD_VAR 0 11
13465: PUSH
13466: LD_INT 1
13468: ARRAY
13469: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
13470: LD_ADDR_VAR 0 11
13474: PUSH
13475: LD_VAR 0 11
13479: PPUSH
13480: LD_INT 1
13482: PPUSH
13483: CALL_OW 3
13487: ST_TO_ADDR
// un = CreateVehicle ;
13488: LD_ADDR_VAR 0 8
13492: PUSH
13493: CALL_OW 45
13497: ST_TO_ADDR
// PlaceHumanInUnit ( Dwayne , un ) ;
13498: LD_EXP 18
13502: PPUSH
13503: LD_VAR 0 8
13507: PPUSH
13508: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
13512: LD_ADDR_EXP 31
13516: PUSH
13517: LD_EXP 31
13521: PUSH
13522: LD_VAR 0 8
13526: ADD
13527: ST_TO_ADDR
// for i = 1 to 2 do
13528: LD_ADDR_VAR 0 3
13532: PUSH
13533: DOUBLE
13534: LD_INT 1
13536: DEC
13537: ST_TO_ADDR
13538: LD_INT 2
13540: PUSH
13541: FOR_TO
13542: IFFALSE 13608
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
13544: LD_ADDR_VAR 0 14
13548: PUSH
13549: LD_EXP 28
13553: PPUSH
13554: LD_INT 1
13556: PPUSH
13557: CALL 18687 0 2
13561: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
13562: LD_ADDR_EXP 28
13566: PUSH
13567: LD_EXP 28
13571: PUSH
13572: LD_VAR 0 14
13576: DIFF
13577: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
13578: LD_ADDR_EXP 31
13582: PUSH
13583: LD_EXP 31
13587: PUSH
13588: LD_VAR 0 14
13592: ADD
13593: ST_TO_ADDR
// SetClass ( temp , class_mortar ) ;
13594: LD_VAR 0 14
13598: PPUSH
13599: LD_INT 8
13601: PPUSH
13602: CALL_OW 336
// end ;
13606: GO 13541
13608: POP
13609: POP
// end ; end ; end ;
13610: GO 13613
13612: POP
// for i = 1 to mechanics do
13613: LD_ADDR_VAR 0 3
13617: PUSH
13618: DOUBLE
13619: LD_INT 1
13621: DEC
13622: ST_TO_ADDR
13623: LD_VAR 0 18
13627: PUSH
13628: FOR_TO
13629: IFFALSE 13851
// begin temp = BestOfSkill ( SecondTeam , skill_mechanical ) ;
13631: LD_ADDR_VAR 0 14
13635: PUSH
13636: LD_EXP 28
13640: PPUSH
13641: LD_INT 3
13643: PPUSH
13644: CALL 18687 0 2
13648: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
13649: LD_ADDR_EXP 28
13653: PUSH
13654: LD_EXP 28
13658: PUSH
13659: LD_VAR 0 14
13663: DIFF
13664: ST_TO_ADDR
// if temp_list = 0 then
13665: LD_VAR 0 10
13669: PUSH
13670: LD_INT 0
13672: EQUAL
13673: IFFALSE 13685
// temp_list = weapons ;
13675: LD_ADDR_VAR 0 10
13679: PUSH
13680: LD_VAR 0 20
13684: ST_TO_ADDR
// if i = 1 then
13685: LD_VAR 0 3
13689: PUSH
13690: LD_INT 1
13692: EQUAL
13693: IFFALSE 13705
// vc_weapon = ar_control_tower else
13695: LD_ADDR_OWVAR 40
13699: PUSH
13700: LD_INT 31
13702: ST_TO_ADDR
13703: GO 13737
// begin vc_weapon = temp_list [ 1 ] ;
13705: LD_ADDR_OWVAR 40
13709: PUSH
13710: LD_VAR 0 10
13714: PUSH
13715: LD_INT 1
13717: ARRAY
13718: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
13719: LD_ADDR_VAR 0 10
13723: PUSH
13724: LD_VAR 0 10
13728: PPUSH
13729: LD_INT 1
13731: PPUSH
13732: CALL_OW 3
13736: ST_TO_ADDR
// end ; if temp_list2 = 0 then
13737: LD_VAR 0 11
13741: PUSH
13742: LD_INT 0
13744: EQUAL
13745: IFFALSE 13757
// temp_list2 = engines ;
13747: LD_ADDR_VAR 0 11
13751: PUSH
13752: LD_VAR 0 21
13756: ST_TO_ADDR
// if i = 1 then
13757: LD_VAR 0 3
13761: PUSH
13762: LD_INT 1
13764: EQUAL
13765: IFFALSE 13777
// vc_engine = engine_siberite else
13767: LD_ADDR_OWVAR 39
13771: PUSH
13772: LD_INT 3
13774: ST_TO_ADDR
13775: GO 13809
// begin vc_engine = temp_list2 [ 1 ] ;
13777: LD_ADDR_OWVAR 39
13781: PUSH
13782: LD_VAR 0 11
13786: PUSH
13787: LD_INT 1
13789: ARRAY
13790: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
13791: LD_ADDR_VAR 0 11
13795: PUSH
13796: LD_VAR 0 11
13800: PPUSH
13801: LD_INT 1
13803: PPUSH
13804: CALL_OW 3
13808: ST_TO_ADDR
// end ; un = CreateVehicle ;
13809: LD_ADDR_VAR 0 8
13813: PUSH
13814: CALL_OW 45
13818: ST_TO_ADDR
// PlaceHumanInUnit ( temp , un ) ;
13819: LD_VAR 0 14
13823: PPUSH
13824: LD_VAR 0 8
13828: PPUSH
13829: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
13833: LD_ADDR_EXP 31
13837: PUSH
13838: LD_EXP 31
13842: PUSH
13843: LD_VAR 0 8
13847: ADD
13848: ST_TO_ADDR
// end ;
13849: GO 13628
13851: POP
13852: POP
// case lead of Gensher :
13853: LD_EXP 32
13857: PUSH
13858: LD_EXP 24
13862: DOUBLE
13863: EQUAL
13864: IFTRUE 13868
13866: GO 13886
13868: POP
// temp = [ control_remote , control_remote ] ; Oswald :
13869: LD_ADDR_VAR 0 14
13873: PUSH
13874: LD_INT 2
13876: PUSH
13877: LD_INT 2
13879: PUSH
13880: EMPTY
13881: LIST
13882: LIST
13883: ST_TO_ADDR
13884: GO 14027
13886: LD_EXP 13
13890: DOUBLE
13891: EQUAL
13892: IFTRUE 13896
13894: GO 13914
13896: POP
// temp = [ control_remote , control_remote ] ; Ralph :
13897: LD_ADDR_VAR 0 14
13901: PUSH
13902: LD_INT 2
13904: PUSH
13905: LD_INT 2
13907: PUSH
13908: EMPTY
13909: LIST
13910: LIST
13911: ST_TO_ADDR
13912: GO 14027
13914: LD_EXP 14
13918: DOUBLE
13919: EQUAL
13920: IFTRUE 13924
13922: GO 13942
13924: POP
// temp = [ control_remote , control_remote ] ; Kowalski :
13925: LD_ADDR_VAR 0 14
13929: PUSH
13930: LD_INT 2
13932: PUSH
13933: LD_INT 2
13935: PUSH
13936: EMPTY
13937: LIST
13938: LIST
13939: ST_TO_ADDR
13940: GO 14027
13942: LD_EXP 15
13946: DOUBLE
13947: EQUAL
13948: IFTRUE 13952
13950: GO 13970
13952: POP
// temp = [ control_remote , control_apeman ] ; Swansson :
13953: LD_ADDR_VAR 0 14
13957: PUSH
13958: LD_INT 2
13960: PUSH
13961: LD_INT 5
13963: PUSH
13964: EMPTY
13965: LIST
13966: LIST
13967: ST_TO_ADDR
13968: GO 14027
13970: LD_EXP 17
13974: DOUBLE
13975: EQUAL
13976: IFTRUE 13980
13978: GO 13998
13980: POP
// temp = [ control_apeman , control_apeman ] ; Dwayne :
13981: LD_ADDR_VAR 0 14
13985: PUSH
13986: LD_INT 5
13988: PUSH
13989: LD_INT 5
13991: PUSH
13992: EMPTY
13993: LIST
13994: LIST
13995: ST_TO_ADDR
13996: GO 14027
13998: LD_EXP 18
14002: DOUBLE
14003: EQUAL
14004: IFTRUE 14008
14006: GO 14026
14008: POP
// temp = [ control_remote , control_remote ] ; end ;
14009: LD_ADDR_VAR 0 14
14013: PUSH
14014: LD_INT 2
14016: PUSH
14017: LD_INT 2
14019: PUSH
14020: EMPTY
14021: LIST
14022: LIST
14023: ST_TO_ADDR
14024: GO 14027
14026: POP
// for i in temp do
14027: LD_ADDR_VAR 0 3
14031: PUSH
14032: LD_VAR 0 14
14036: PUSH
14037: FOR_IN
14038: IFFALSE 14182
// begin if temp_list = 0 then
14040: LD_VAR 0 10
14044: PUSH
14045: LD_INT 0
14047: EQUAL
14048: IFFALSE 14060
// temp_list = weapons ;
14050: LD_ADDR_VAR 0 10
14054: PUSH
14055: LD_VAR 0 20
14059: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
14060: LD_ADDR_OWVAR 40
14064: PUSH
14065: LD_VAR 0 10
14069: PUSH
14070: LD_INT 1
14072: ARRAY
14073: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
14074: LD_ADDR_VAR 0 10
14078: PUSH
14079: LD_VAR 0 10
14083: PPUSH
14084: LD_INT 1
14086: PPUSH
14087: CALL_OW 3
14091: ST_TO_ADDR
// if temp_list2 = 0 then
14092: LD_VAR 0 11
14096: PUSH
14097: LD_INT 0
14099: EQUAL
14100: IFFALSE 14112
// temp_list2 = engines ;
14102: LD_ADDR_VAR 0 11
14106: PUSH
14107: LD_VAR 0 21
14111: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
14112: LD_ADDR_OWVAR 39
14116: PUSH
14117: LD_VAR 0 11
14121: PUSH
14122: LD_INT 1
14124: ARRAY
14125: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
14126: LD_ADDR_VAR 0 11
14130: PUSH
14131: LD_VAR 0 11
14135: PPUSH
14136: LD_INT 1
14138: PPUSH
14139: CALL_OW 3
14143: ST_TO_ADDR
// vc_control = i ;
14144: LD_ADDR_OWVAR 38
14148: PUSH
14149: LD_VAR 0 3
14153: ST_TO_ADDR
// un = CreateVehicle ;
14154: LD_ADDR_VAR 0 8
14158: PUSH
14159: CALL_OW 45
14163: ST_TO_ADDR
// Reinforcements = Reinforcements ^ un ;
14164: LD_ADDR_EXP 31
14168: PUSH
14169: LD_EXP 31
14173: PUSH
14174: LD_VAR 0 8
14178: ADD
14179: ST_TO_ADDR
// end ;
14180: GO 14037
14182: POP
14183: POP
// if lead = Swansson then
14184: LD_EXP 32
14188: PUSH
14189: LD_EXP 17
14193: EQUAL
14194: IFFALSE 14300
// for i = 1 to 3 do
14196: LD_ADDR_VAR 0 3
14200: PUSH
14201: DOUBLE
14202: LD_INT 1
14204: DEC
14205: ST_TO_ADDR
14206: LD_INT 3
14208: PUSH
14209: FOR_TO
14210: IFFALSE 14298
// begin vc_weapon = ar_selfpropelled_bomb ;
14212: LD_ADDR_OWVAR 40
14216: PUSH
14217: LD_INT 29
14219: ST_TO_ADDR
// vc_control = control_remote ;
14220: LD_ADDR_OWVAR 38
14224: PUSH
14225: LD_INT 2
14227: ST_TO_ADDR
// if temp_list2 = 0 then
14228: LD_VAR 0 11
14232: PUSH
14233: LD_INT 0
14235: EQUAL
14236: IFFALSE 14248
// temp_list2 = engines ;
14238: LD_ADDR_VAR 0 11
14242: PUSH
14243: LD_VAR 0 21
14247: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
14248: LD_ADDR_OWVAR 39
14252: PUSH
14253: LD_VAR 0 11
14257: PUSH
14258: LD_INT 1
14260: ARRAY
14261: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
14262: LD_ADDR_VAR 0 11
14266: PUSH
14267: LD_VAR 0 11
14271: PPUSH
14272: LD_INT 1
14274: PPUSH
14275: CALL_OW 3
14279: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
14280: LD_ADDR_EXP 31
14284: PUSH
14285: LD_EXP 31
14289: PUSH
14290: CALL_OW 45
14294: ADD
14295: ST_TO_ADDR
// end ;
14296: GO 14209
14298: POP
14299: POP
// vc_weapon = ar_radar ;
14300: LD_ADDR_OWVAR 40
14304: PUSH
14305: LD_INT 30
14307: ST_TO_ADDR
// vc_engine = engine_combustion ;
14308: LD_ADDR_OWVAR 39
14312: PUSH
14313: LD_INT 1
14315: ST_TO_ADDR
// vc_control = control_remote ;
14316: LD_ADDR_OWVAR 38
14320: PUSH
14321: LD_INT 2
14323: ST_TO_ADDR
// un = CreateVehicle ;
14324: LD_ADDR_VAR 0 8
14328: PUSH
14329: CALL_OW 45
14333: ST_TO_ADDR
// Reinforcements = Reinforcements ^ un ;
14334: LD_ADDR_EXP 31
14338: PUSH
14339: LD_EXP 31
14343: PUSH
14344: LD_VAR 0 8
14348: ADD
14349: ST_TO_ADDR
// for k in support do
14350: LD_ADDR_VAR 0 9
14354: PUSH
14355: LD_VAR 0 19
14359: PUSH
14360: FOR_IN
14361: IFFALSE 18208
// case k of Oswald :
14363: LD_VAR 0 9
14367: PUSH
14368: LD_EXP 13
14372: DOUBLE
14373: EQUAL
14374: IFTRUE 14378
14376: GO 14491
14378: POP
// begin SetClass ( Oswald , class_mortar ) ;
14379: LD_EXP 13
14383: PPUSH
14384: LD_INT 8
14386: PPUSH
14387: CALL_OW 336
// Reinforcements = Reinforcements ^ Oswald ;
14391: LD_ADDR_EXP 31
14395: PUSH
14396: LD_EXP 31
14400: PUSH
14401: LD_EXP 13
14405: ADD
14406: ST_TO_ADDR
// for i = 1 to 2 do
14407: LD_ADDR_VAR 0 3
14411: PUSH
14412: DOUBLE
14413: LD_INT 1
14415: DEC
14416: ST_TO_ADDR
14417: LD_INT 2
14419: PUSH
14420: FOR_TO
14421: IFFALSE 14487
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
14423: LD_ADDR_VAR 0 14
14427: PUSH
14428: LD_EXP 28
14432: PPUSH
14433: LD_INT 1
14435: PPUSH
14436: CALL 18687 0 2
14440: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
14441: LD_ADDR_EXP 28
14445: PUSH
14446: LD_EXP 28
14450: PUSH
14451: LD_VAR 0 14
14455: DIFF
14456: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
14457: LD_ADDR_EXP 31
14461: PUSH
14462: LD_EXP 31
14466: PUSH
14467: LD_VAR 0 14
14471: ADD
14472: ST_TO_ADDR
// SetClass ( temp , class_mortar ) ;
14473: LD_VAR 0 14
14477: PPUSH
14478: LD_INT 8
14480: PPUSH
14481: CALL_OW 336
// end ;
14485: GO 14420
14487: POP
14488: POP
// end ; Kowalski :
14489: GO 18206
14491: LD_EXP 15
14495: DOUBLE
14496: EQUAL
14497: IFTRUE 14501
14499: GO 14793
14501: POP
// begin temp = Kowalski ;
14502: LD_ADDR_VAR 0 14
14506: PUSH
14507: LD_EXP 15
14511: ST_TO_ADDR
// un = BestOfSkill ( SecondTeam , skill_combat ) ;
14512: LD_ADDR_VAR 0 8
14516: PUSH
14517: LD_EXP 28
14521: PPUSH
14522: LD_INT 1
14524: PPUSH
14525: CALL 18687 0 2
14529: ST_TO_ADDR
// SecondTeam = SecondTeam diff un ;
14530: LD_ADDR_EXP 28
14534: PUSH
14535: LD_EXP 28
14539: PUSH
14540: LD_VAR 0 8
14544: DIFF
14545: ST_TO_ADDR
// temp = temp ^ un ;
14546: LD_ADDR_VAR 0 14
14550: PUSH
14551: LD_VAR 0 14
14555: PUSH
14556: LD_VAR 0 8
14560: ADD
14561: ST_TO_ADDR
// SetClass ( temp , class_soldier ) ;
14562: LD_VAR 0 14
14566: PPUSH
14567: LD_INT 1
14569: PPUSH
14570: CALL_OW 336
// vc_control = control_manual ;
14574: LD_ADDR_OWVAR 38
14578: PUSH
14579: LD_INT 1
14581: ST_TO_ADDR
// for i in temp do
14582: LD_ADDR_VAR 0 3
14586: PUSH
14587: LD_VAR 0 14
14591: PUSH
14592: FOR_IN
14593: IFFALSE 14741
// begin if temp_list = 0 then
14595: LD_VAR 0 10
14599: PUSH
14600: LD_INT 0
14602: EQUAL
14603: IFFALSE 14615
// temp_list = weapons ;
14605: LD_ADDR_VAR 0 10
14609: PUSH
14610: LD_VAR 0 20
14614: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
14615: LD_ADDR_OWVAR 40
14619: PUSH
14620: LD_VAR 0 10
14624: PUSH
14625: LD_INT 1
14627: ARRAY
14628: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
14629: LD_ADDR_VAR 0 10
14633: PUSH
14634: LD_VAR 0 10
14638: PPUSH
14639: LD_INT 1
14641: PPUSH
14642: CALL_OW 3
14646: ST_TO_ADDR
// if temp_list2 = 0 then
14647: LD_VAR 0 11
14651: PUSH
14652: LD_INT 0
14654: EQUAL
14655: IFFALSE 14667
// temp_list2 = engines ;
14657: LD_ADDR_VAR 0 11
14661: PUSH
14662: LD_VAR 0 21
14666: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
14667: LD_ADDR_OWVAR 39
14671: PUSH
14672: LD_VAR 0 11
14676: PUSH
14677: LD_INT 1
14679: ARRAY
14680: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
14681: LD_ADDR_VAR 0 11
14685: PUSH
14686: LD_VAR 0 11
14690: PPUSH
14691: LD_INT 1
14693: PPUSH
14694: CALL_OW 3
14698: ST_TO_ADDR
// un = CreateVehicle ;
14699: LD_ADDR_VAR 0 8
14703: PUSH
14704: CALL_OW 45
14708: ST_TO_ADDR
// PlaceHumanInUnit ( i , un ) ;
14709: LD_VAR 0 3
14713: PPUSH
14714: LD_VAR 0 8
14718: PPUSH
14719: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
14723: LD_ADDR_EXP 31
14727: PUSH
14728: LD_EXP 31
14732: PUSH
14733: LD_VAR 0 8
14737: ADD
14738: ST_TO_ADDR
// end ;
14739: GO 14592
14741: POP
14742: POP
// vc_weapon = ar_radar ;
14743: LD_ADDR_OWVAR 40
14747: PUSH
14748: LD_INT 30
14750: ST_TO_ADDR
// vc_control = ar_half_tracked ;
14751: LD_ADDR_OWVAR 38
14755: PUSH
14756: LD_INT 14
14758: ST_TO_ADDR
// vc_engine = engine_combustion ;
14759: LD_ADDR_OWVAR 39
14763: PUSH
14764: LD_INT 1
14766: ST_TO_ADDR
// vc_control = control_remote ;
14767: LD_ADDR_OWVAR 38
14771: PUSH
14772: LD_INT 2
14774: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
14775: LD_ADDR_EXP 31
14779: PUSH
14780: LD_EXP 31
14784: PUSH
14785: CALL_OW 45
14789: ADD
14790: ST_TO_ADDR
// end ; Snake :
14791: GO 18206
14793: LD_EXP 25
14797: DOUBLE
14798: EQUAL
14799: IFTRUE 14803
14801: GO 14916
14803: POP
// begin SetClass ( Snake , class_soldier ) ;
14804: LD_EXP 25
14808: PPUSH
14809: LD_INT 1
14811: PPUSH
14812: CALL_OW 336
// Reinforcements = Reinforcements ^ Snake ;
14816: LD_ADDR_EXP 31
14820: PUSH
14821: LD_EXP 31
14825: PUSH
14826: LD_EXP 25
14830: ADD
14831: ST_TO_ADDR
// for i = 1 to 2 do
14832: LD_ADDR_VAR 0 3
14836: PUSH
14837: DOUBLE
14838: LD_INT 1
14840: DEC
14841: ST_TO_ADDR
14842: LD_INT 2
14844: PUSH
14845: FOR_TO
14846: IFFALSE 14912
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
14848: LD_ADDR_VAR 0 14
14852: PUSH
14853: LD_EXP 28
14857: PPUSH
14858: LD_INT 1
14860: PPUSH
14861: CALL 18687 0 2
14865: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
14866: LD_ADDR_EXP 28
14870: PUSH
14871: LD_EXP 28
14875: PUSH
14876: LD_VAR 0 14
14880: DIFF
14881: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
14882: LD_ADDR_EXP 31
14886: PUSH
14887: LD_EXP 31
14891: PUSH
14892: LD_VAR 0 14
14896: ADD
14897: ST_TO_ADDR
// SetClass ( temp , class_Soldier ) ;
14898: LD_VAR 0 14
14902: PPUSH
14903: LD_INT 1
14905: PPUSH
14906: CALL_OW 336
// end ;
14910: GO 14845
14912: POP
14913: POP
// end ; Ralph :
14914: GO 18206
14916: LD_EXP 14
14920: DOUBLE
14921: EQUAL
14922: IFTRUE 14926
14924: GO 15201
14926: POP
// begin if GetSkill ( Ralph , skill_combat ) > GetSkill ( Ralph , skill_mechanical ) then
14927: LD_EXP 14
14931: PPUSH
14932: LD_INT 1
14934: PPUSH
14935: CALL_OW 259
14939: PUSH
14940: LD_EXP 14
14944: PPUSH
14945: LD_INT 3
14947: PPUSH
14948: CALL_OW 259
14952: GREATER
14953: IFFALSE 14993
// begin SetClass ( Ralph , class_soldier ) ;
14955: LD_EXP 14
14959: PPUSH
14960: LD_INT 1
14962: PPUSH
14963: CALL_OW 336
// Reinforcements = Reinforcements ^ Ralph ;
14967: LD_ADDR_EXP 31
14971: PUSH
14972: LD_EXP 31
14976: PUSH
14977: LD_EXP 14
14981: ADD
14982: ST_TO_ADDR
// temp = 0 ;
14983: LD_ADDR_VAR 0 14
14987: PUSH
14988: LD_INT 0
14990: ST_TO_ADDR
// end else
14991: GO 15013
// begin SetClass ( Ralph , class_mechanic ) ;
14993: LD_EXP 14
14997: PPUSH
14998: LD_INT 3
15000: PPUSH
15001: CALL_OW 336
// temp = 1 ;
15005: LD_ADDR_VAR 0 14
15009: PUSH
15010: LD_INT 1
15012: ST_TO_ADDR
// end ; vc_chassis = ar_half_tracked ;
15013: LD_ADDR_OWVAR 37
15017: PUSH
15018: LD_INT 14
15020: ST_TO_ADDR
// for i = 1 to 2 do
15021: LD_ADDR_VAR 0 3
15025: PUSH
15026: DOUBLE
15027: LD_INT 1
15029: DEC
15030: ST_TO_ADDR
15031: LD_INT 2
15033: PUSH
15034: FOR_TO
15035: IFFALSE 15197
// begin vc_weapon = ar_gun ;
15037: LD_ADDR_OWVAR 40
15041: PUSH
15042: LD_INT 27
15044: ST_TO_ADDR
// if temp_list2 = 0 then
15045: LD_VAR 0 11
15049: PUSH
15050: LD_INT 0
15052: EQUAL
15053: IFFALSE 15065
// temp_list2 = engines ;
15055: LD_ADDR_VAR 0 11
15059: PUSH
15060: LD_VAR 0 21
15064: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
15065: LD_ADDR_OWVAR 39
15069: PUSH
15070: LD_VAR 0 11
15074: PUSH
15075: LD_INT 1
15077: ARRAY
15078: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
15079: LD_ADDR_VAR 0 11
15083: PUSH
15084: LD_VAR 0 11
15088: PPUSH
15089: LD_INT 1
15091: PPUSH
15092: CALL_OW 3
15096: ST_TO_ADDR
// if temp = 1 and i = 1 then
15097: LD_VAR 0 14
15101: PUSH
15102: LD_INT 1
15104: EQUAL
15105: PUSH
15106: LD_VAR 0 3
15110: PUSH
15111: LD_INT 1
15113: EQUAL
15114: AND
15115: IFFALSE 15127
// vc_control = control_manual else
15117: LD_ADDR_OWVAR 38
15121: PUSH
15122: LD_INT 1
15124: ST_TO_ADDR
15125: GO 15135
// vc_control = control_remote ;
15127: LD_ADDR_OWVAR 38
15131: PUSH
15132: LD_INT 2
15134: ST_TO_ADDR
// un = CreateVehicle ;
15135: LD_ADDR_VAR 0 8
15139: PUSH
15140: CALL_OW 45
15144: ST_TO_ADDR
// if temp = 1 and i = 1 then
15145: LD_VAR 0 14
15149: PUSH
15150: LD_INT 1
15152: EQUAL
15153: PUSH
15154: LD_VAR 0 3
15158: PUSH
15159: LD_INT 1
15161: EQUAL
15162: AND
15163: IFFALSE 15179
// PlaceHumanInUnit ( Ralph , un ) ;
15165: LD_EXP 14
15169: PPUSH
15170: LD_VAR 0 8
15174: PPUSH
15175: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
15179: LD_ADDR_EXP 31
15183: PUSH
15184: LD_EXP 31
15188: PUSH
15189: LD_VAR 0 8
15193: ADD
15194: ST_TO_ADDR
// end ;
15195: GO 15034
15197: POP
15198: POP
// end ; Swansson :
15199: GO 18206
15201: LD_EXP 17
15205: DOUBLE
15206: EQUAL
15207: IFTRUE 15211
15209: GO 15563
15211: POP
// begin if GetSkill ( Swansson , skill_combat ) > GetSkill ( Swansson , skill_mechanical ) then
15212: LD_EXP 17
15216: PPUSH
15217: LD_INT 1
15219: PPUSH
15220: CALL_OW 259
15224: PUSH
15225: LD_EXP 17
15229: PPUSH
15230: LD_INT 3
15232: PPUSH
15233: CALL_OW 259
15237: GREATER
15238: IFFALSE 15270
// begin SetClass ( Swansson , class_soldier ) ;
15240: LD_EXP 17
15244: PPUSH
15245: LD_INT 1
15247: PPUSH
15248: CALL_OW 336
// Reinforcements = Reinforcements ^ Swansson ;
15252: LD_ADDR_EXP 31
15256: PUSH
15257: LD_EXP 31
15261: PUSH
15262: LD_EXP 17
15266: ADD
15267: ST_TO_ADDR
// end else
15268: GO 15398
// begin SetClass ( Swansson , class_mechanic ) ;
15270: LD_EXP 17
15274: PPUSH
15275: LD_INT 3
15277: PPUSH
15278: CALL_OW 336
// vc_chassis = ar_half_tracked ;
15282: LD_ADDR_OWVAR 37
15286: PUSH
15287: LD_INT 14
15289: ST_TO_ADDR
// vc_control = control_manual ;
15290: LD_ADDR_OWVAR 38
15294: PUSH
15295: LD_INT 1
15297: ST_TO_ADDR
// vc_weapon = ar_gatling_gun ;
15298: LD_ADDR_OWVAR 40
15302: PUSH
15303: LD_INT 25
15305: ST_TO_ADDR
// if temp_list2 = 0 then
15306: LD_VAR 0 11
15310: PUSH
15311: LD_INT 0
15313: EQUAL
15314: IFFALSE 15326
// temp_list2 = engines ;
15316: LD_ADDR_VAR 0 11
15320: PUSH
15321: LD_VAR 0 21
15325: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
15326: LD_ADDR_OWVAR 39
15330: PUSH
15331: LD_VAR 0 11
15335: PUSH
15336: LD_INT 1
15338: ARRAY
15339: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
15340: LD_ADDR_VAR 0 11
15344: PUSH
15345: LD_VAR 0 11
15349: PPUSH
15350: LD_INT 1
15352: PPUSH
15353: CALL_OW 3
15357: ST_TO_ADDR
// un = CreateVehicle ;
15358: LD_ADDR_VAR 0 8
15362: PUSH
15363: CALL_OW 45
15367: ST_TO_ADDR
// PlaceHumanInUnit ( Swansson , un ) ;
15368: LD_EXP 17
15372: PPUSH
15373: LD_VAR 0 8
15377: PPUSH
15378: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
15382: LD_ADDR_EXP 31
15386: PUSH
15387: LD_EXP 31
15391: PUSH
15392: LD_VAR 0 8
15396: ADD
15397: ST_TO_ADDR
// end ; for i = 1 to 2 do
15398: LD_ADDR_VAR 0 3
15402: PUSH
15403: DOUBLE
15404: LD_INT 1
15406: DEC
15407: ST_TO_ADDR
15408: LD_INT 2
15410: PUSH
15411: FOR_TO
15412: IFFALSE 15559
// begin if LoadVariable ( Implosion_vehicle_dismantled_12_cont2 , 0 ) or testing then
15414: LD_STRING Implosion_vehicle_dismantled_12_cont2
15416: PPUSH
15417: LD_INT 0
15419: PPUSH
15420: CALL_OW 30
15424: PUSH
15425: LD_EXP 1
15429: OR
15430: IFFALSE 15442
// vc_weapon = ar_selfpropelled_bomb else
15432: LD_ADDR_OWVAR 40
15436: PUSH
15437: LD_INT 29
15439: ST_TO_ADDR
15440: GO 15473
// vc_weapon = [ ar_rocket_launcher , ar_gun , ar_gatling_gun ] [ rand ( 1 , 3 ) ] ;
15442: LD_ADDR_OWVAR 40
15446: PUSH
15447: LD_INT 28
15449: PUSH
15450: LD_INT 27
15452: PUSH
15453: LD_INT 25
15455: PUSH
15456: EMPTY
15457: LIST
15458: LIST
15459: LIST
15460: PUSH
15461: LD_INT 1
15463: PPUSH
15464: LD_INT 3
15466: PPUSH
15467: CALL_OW 12
15471: ARRAY
15472: ST_TO_ADDR
// vc_control = control_remote ;
15473: LD_ADDR_OWVAR 38
15477: PUSH
15478: LD_INT 2
15480: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
15481: LD_ADDR_OWVAR 37
15485: PUSH
15486: LD_INT 14
15488: ST_TO_ADDR
// if temp_list2 = 0 then
15489: LD_VAR 0 11
15493: PUSH
15494: LD_INT 0
15496: EQUAL
15497: IFFALSE 15509
// temp_list2 = engines ;
15499: LD_ADDR_VAR 0 11
15503: PUSH
15504: LD_VAR 0 21
15508: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
15509: LD_ADDR_OWVAR 39
15513: PUSH
15514: LD_VAR 0 11
15518: PUSH
15519: LD_INT 1
15521: ARRAY
15522: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
15523: LD_ADDR_VAR 0 11
15527: PUSH
15528: LD_VAR 0 11
15532: PPUSH
15533: LD_INT 1
15535: PPUSH
15536: CALL_OW 3
15540: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
15541: LD_ADDR_EXP 31
15545: PUSH
15546: LD_EXP 31
15550: PUSH
15551: CALL_OW 45
15555: ADD
15556: ST_TO_ADDR
// end ;
15557: GO 15411
15559: POP
15560: POP
// end ; Dwayne :
15561: GO 18206
15563: LD_EXP 18
15567: DOUBLE
15568: EQUAL
15569: IFTRUE 15573
15571: GO 15848
15573: POP
// begin if GetSkill ( Dwayne , skill_combat ) > GetSkill ( Dwayne , skill_mechanical ) then
15574: LD_EXP 18
15578: PPUSH
15579: LD_INT 1
15581: PPUSH
15582: CALL_OW 259
15586: PUSH
15587: LD_EXP 18
15591: PPUSH
15592: LD_INT 3
15594: PPUSH
15595: CALL_OW 259
15599: GREATER
15600: IFFALSE 15640
// begin SetClass ( Dwayne , class_soldier ) ;
15602: LD_EXP 18
15606: PPUSH
15607: LD_INT 1
15609: PPUSH
15610: CALL_OW 336
// Reinforcements = Reinforcements ^ Dwayne ;
15614: LD_ADDR_EXP 31
15618: PUSH
15619: LD_EXP 31
15623: PUSH
15624: LD_EXP 18
15628: ADD
15629: ST_TO_ADDR
// temp = 0 ;
15630: LD_ADDR_VAR 0 14
15634: PUSH
15635: LD_INT 0
15637: ST_TO_ADDR
// end else
15638: GO 15660
// begin SetClass ( Dwayne , class_mechanic ) ;
15640: LD_EXP 18
15644: PPUSH
15645: LD_INT 3
15647: PPUSH
15648: CALL_OW 336
// temp = 1 ;
15652: LD_ADDR_VAR 0 14
15656: PUSH
15657: LD_INT 1
15659: ST_TO_ADDR
// end ; vc_chassis = ar_half_tracked ;
15660: LD_ADDR_OWVAR 37
15664: PUSH
15665: LD_INT 14
15667: ST_TO_ADDR
// for i = 1 to 2 do
15668: LD_ADDR_VAR 0 3
15672: PUSH
15673: DOUBLE
15674: LD_INT 1
15676: DEC
15677: ST_TO_ADDR
15678: LD_INT 2
15680: PUSH
15681: FOR_TO
15682: IFFALSE 15844
// begin vc_weapon = ar_rocket_launcher ;
15684: LD_ADDR_OWVAR 40
15688: PUSH
15689: LD_INT 28
15691: ST_TO_ADDR
// if temp_list2 = 0 then
15692: LD_VAR 0 11
15696: PUSH
15697: LD_INT 0
15699: EQUAL
15700: IFFALSE 15712
// temp_list2 = engines ;
15702: LD_ADDR_VAR 0 11
15706: PUSH
15707: LD_VAR 0 21
15711: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
15712: LD_ADDR_OWVAR 39
15716: PUSH
15717: LD_VAR 0 11
15721: PUSH
15722: LD_INT 1
15724: ARRAY
15725: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
15726: LD_ADDR_VAR 0 11
15730: PUSH
15731: LD_VAR 0 11
15735: PPUSH
15736: LD_INT 1
15738: PPUSH
15739: CALL_OW 3
15743: ST_TO_ADDR
// if temp = 1 and i = 1 then
15744: LD_VAR 0 14
15748: PUSH
15749: LD_INT 1
15751: EQUAL
15752: PUSH
15753: LD_VAR 0 3
15757: PUSH
15758: LD_INT 1
15760: EQUAL
15761: AND
15762: IFFALSE 15774
// vc_control = control_manual else
15764: LD_ADDR_OWVAR 38
15768: PUSH
15769: LD_INT 1
15771: ST_TO_ADDR
15772: GO 15782
// vc_control = control_remote ;
15774: LD_ADDR_OWVAR 38
15778: PUSH
15779: LD_INT 2
15781: ST_TO_ADDR
// un = CreateVehicle ;
15782: LD_ADDR_VAR 0 8
15786: PUSH
15787: CALL_OW 45
15791: ST_TO_ADDR
// if temp = 1 and i = 1 then
15792: LD_VAR 0 14
15796: PUSH
15797: LD_INT 1
15799: EQUAL
15800: PUSH
15801: LD_VAR 0 3
15805: PUSH
15806: LD_INT 1
15808: EQUAL
15809: AND
15810: IFFALSE 15826
// PlaceHumanInUnit ( Dwayne , un ) ;
15812: LD_EXP 18
15816: PPUSH
15817: LD_VAR 0 8
15821: PPUSH
15822: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
15826: LD_ADDR_EXP 31
15830: PUSH
15831: LD_EXP 31
15835: PUSH
15836: LD_VAR 0 8
15840: ADD
15841: ST_TO_ADDR
// end ;
15842: GO 15681
15844: POP
15845: POP
// end ; Olaf :
15846: GO 18206
15848: LD_EXP 11
15852: DOUBLE
15853: EQUAL
15854: IFTRUE 15858
15856: GO 16062
15858: POP
// begin SetClass ( Olaf , class_mechanic ) ;
15859: LD_EXP 11
15863: PPUSH
15864: LD_INT 3
15866: PPUSH
15867: CALL_OW 336
// for i = 1 to 2 do
15871: LD_ADDR_VAR 0 3
15875: PUSH
15876: DOUBLE
15877: LD_INT 1
15879: DEC
15880: ST_TO_ADDR
15881: LD_INT 2
15883: PUSH
15884: FOR_TO
15885: IFFALSE 16058
// begin vc_chassis = ar_half_tracked ;
15887: LD_ADDR_OWVAR 37
15891: PUSH
15892: LD_INT 14
15894: ST_TO_ADDR
// vc_weapon = [ ar_rocket_launcher , ar_gun , ar_gatling_gun ] [ rand ( 1 , 3 ) ] ;
15895: LD_ADDR_OWVAR 40
15899: PUSH
15900: LD_INT 28
15902: PUSH
15903: LD_INT 27
15905: PUSH
15906: LD_INT 25
15908: PUSH
15909: EMPTY
15910: LIST
15911: LIST
15912: LIST
15913: PUSH
15914: LD_INT 1
15916: PPUSH
15917: LD_INT 3
15919: PPUSH
15920: CALL_OW 12
15924: ARRAY
15925: ST_TO_ADDR
// if temp_list2 = 0 then
15926: LD_VAR 0 11
15930: PUSH
15931: LD_INT 0
15933: EQUAL
15934: IFFALSE 15946
// temp_list2 = engines ;
15936: LD_ADDR_VAR 0 11
15940: PUSH
15941: LD_VAR 0 21
15945: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
15946: LD_ADDR_OWVAR 39
15950: PUSH
15951: LD_VAR 0 11
15955: PUSH
15956: LD_INT 1
15958: ARRAY
15959: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
15960: LD_ADDR_VAR 0 11
15964: PUSH
15965: LD_VAR 0 11
15969: PPUSH
15970: LD_INT 1
15972: PPUSH
15973: CALL_OW 3
15977: ST_TO_ADDR
// if i = 1 then
15978: LD_VAR 0 3
15982: PUSH
15983: LD_INT 1
15985: EQUAL
15986: IFFALSE 15998
// vc_control = control_manual else
15988: LD_ADDR_OWVAR 38
15992: PUSH
15993: LD_INT 1
15995: ST_TO_ADDR
15996: GO 16006
// vc_control = control_remote ;
15998: LD_ADDR_OWVAR 38
16002: PUSH
16003: LD_INT 2
16005: ST_TO_ADDR
// un = CreateVehicle ;
16006: LD_ADDR_VAR 0 8
16010: PUSH
16011: CALL_OW 45
16015: ST_TO_ADDR
// if i = 1 then
16016: LD_VAR 0 3
16020: PUSH
16021: LD_INT 1
16023: EQUAL
16024: IFFALSE 16040
// PlaceHumanInUnit ( Olaf , un ) ;
16026: LD_EXP 11
16030: PPUSH
16031: LD_VAR 0 8
16035: PPUSH
16036: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
16040: LD_ADDR_EXP 31
16044: PUSH
16045: LD_EXP 31
16049: PUSH
16050: LD_VAR 0 8
16054: ADD
16055: ST_TO_ADDR
// end ;
16056: GO 15884
16058: POP
16059: POP
// end ; Sonya :
16060: GO 18206
16062: LD_EXP 12
16066: DOUBLE
16067: EQUAL
16068: IFTRUE 16072
16070: GO 16419
16072: POP
// begin SetClass ( Sonya , class_scientistic ) ;
16073: LD_EXP 12
16077: PPUSH
16078: LD_INT 4
16080: PPUSH
16081: CALL_OW 336
// Reinforcements = Reinforcements ^ Sonya ;
16085: LD_ADDR_EXP 31
16089: PUSH
16090: LD_EXP 31
16094: PUSH
16095: LD_EXP 12
16099: ADD
16100: ST_TO_ADDR
// for i = 1 to 2 do
16101: LD_ADDR_VAR 0 3
16105: PUSH
16106: DOUBLE
16107: LD_INT 1
16109: DEC
16110: ST_TO_ADDR
16111: LD_INT 2
16113: PUSH
16114: FOR_TO
16115: IFFALSE 16300
// begin temp = BestOfSkill ( SecondTeam , skill_mechanical ) ;
16117: LD_ADDR_VAR 0 14
16121: PUSH
16122: LD_EXP 28
16126: PPUSH
16127: LD_INT 3
16129: PPUSH
16130: CALL 18687 0 2
16134: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
16135: LD_ADDR_EXP 28
16139: PUSH
16140: LD_EXP 28
16144: PUSH
16145: LD_VAR 0 14
16149: DIFF
16150: ST_TO_ADDR
// SetClass ( temp , class_mechanic ) ;
16151: LD_VAR 0 14
16155: PPUSH
16156: LD_INT 3
16158: PPUSH
16159: CALL_OW 336
// vc_chassis = ar_medium_trike ;
16163: LD_ADDR_OWVAR 37
16167: PUSH
16168: LD_INT 13
16170: ST_TO_ADDR
// vc_control = control_manual ;
16171: LD_ADDR_OWVAR 38
16175: PUSH
16176: LD_INT 1
16178: ST_TO_ADDR
// if temp_list2 = 0 then
16179: LD_VAR 0 11
16183: PUSH
16184: LD_INT 0
16186: EQUAL
16187: IFFALSE 16199
// temp_list2 = engines ;
16189: LD_ADDR_VAR 0 11
16193: PUSH
16194: LD_VAR 0 21
16198: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
16199: LD_ADDR_OWVAR 39
16203: PUSH
16204: LD_VAR 0 11
16208: PUSH
16209: LD_INT 1
16211: ARRAY
16212: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
16213: LD_ADDR_VAR 0 11
16217: PUSH
16218: LD_VAR 0 11
16222: PPUSH
16223: LD_INT 1
16225: PPUSH
16226: CALL_OW 3
16230: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 2 ) ] ;
16231: LD_ADDR_OWVAR 40
16235: PUSH
16236: LD_INT 25
16238: PUSH
16239: LD_INT 26
16241: PUSH
16242: EMPTY
16243: LIST
16244: LIST
16245: PUSH
16246: LD_INT 1
16248: PPUSH
16249: LD_INT 2
16251: PPUSH
16252: CALL_OW 12
16256: ARRAY
16257: ST_TO_ADDR
// un = CreateVehicle ;
16258: LD_ADDR_VAR 0 8
16262: PUSH
16263: CALL_OW 45
16267: ST_TO_ADDR
// PlaceHumanInUnit ( temp , un ) ;
16268: LD_VAR 0 14
16272: PPUSH
16273: LD_VAR 0 8
16277: PPUSH
16278: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
16282: LD_ADDR_EXP 31
16286: PUSH
16287: LD_EXP 31
16291: PUSH
16292: LD_VAR 0 8
16296: ADD
16297: ST_TO_ADDR
// end ;
16298: GO 16114
16300: POP
16301: POP
// vc_chassis = ar_half_tracked ;
16302: LD_ADDR_OWVAR 37
16306: PUSH
16307: LD_INT 14
16309: ST_TO_ADDR
// vc_control = control_remote ;
16310: LD_ADDR_OWVAR 38
16314: PUSH
16315: LD_INT 2
16317: ST_TO_ADDR
// vc_weapon = [ ar_rocket_launcher , ar_gun , ar_gatling_gun ] [ rand ( 1 , 3 ) ] ;
16318: LD_ADDR_OWVAR 40
16322: PUSH
16323: LD_INT 28
16325: PUSH
16326: LD_INT 27
16328: PUSH
16329: LD_INT 25
16331: PUSH
16332: EMPTY
16333: LIST
16334: LIST
16335: LIST
16336: PUSH
16337: LD_INT 1
16339: PPUSH
16340: LD_INT 3
16342: PPUSH
16343: CALL_OW 12
16347: ARRAY
16348: ST_TO_ADDR
// if temp_list2 = 0 then
16349: LD_VAR 0 11
16353: PUSH
16354: LD_INT 0
16356: EQUAL
16357: IFFALSE 16369
// temp_list2 = engines ;
16359: LD_ADDR_VAR 0 11
16363: PUSH
16364: LD_VAR 0 21
16368: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
16369: LD_ADDR_OWVAR 39
16373: PUSH
16374: LD_VAR 0 11
16378: PUSH
16379: LD_INT 1
16381: ARRAY
16382: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
16383: LD_ADDR_VAR 0 11
16387: PUSH
16388: LD_VAR 0 11
16392: PPUSH
16393: LD_INT 1
16395: PPUSH
16396: CALL_OW 3
16400: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
16401: LD_ADDR_EXP 31
16405: PUSH
16406: LD_EXP 31
16410: PUSH
16411: CALL_OW 45
16415: ADD
16416: ST_TO_ADDR
// end ; Khattam :
16417: GO 18206
16419: LD_EXP 19
16423: DOUBLE
16424: EQUAL
16425: IFTRUE 16429
16427: GO 16930
16429: POP
// begin SetClass ( Khattam , class_scientistic ) ;
16430: LD_EXP 19
16434: PPUSH
16435: LD_INT 4
16437: PPUSH
16438: CALL_OW 336
// Reinforcements = Reinforcements ^ Khattam ;
16442: LD_ADDR_EXP 31
16446: PUSH
16447: LD_EXP 31
16451: PUSH
16452: LD_EXP 19
16456: ADD
16457: ST_TO_ADDR
// val = 0 ;
16458: LD_ADDR_VAR 0 7
16462: PUSH
16463: LD_INT 0
16465: ST_TO_ADDR
// for i = 1 to 3 do
16466: LD_ADDR_VAR 0 3
16470: PUSH
16471: DOUBLE
16472: LD_INT 1
16474: DEC
16475: ST_TO_ADDR
16476: LD_INT 3
16478: PUSH
16479: FOR_TO
16480: IFFALSE 16926
// begin if val = 0 then
16482: LD_VAR 0 7
16486: PUSH
16487: LD_INT 0
16489: EQUAL
16490: IFFALSE 16510
// j = rand ( 1 , 3 ) else
16492: LD_ADDR_VAR 0 4
16496: PUSH
16497: LD_INT 1
16499: PPUSH
16500: LD_INT 3
16502: PPUSH
16503: CALL_OW 12
16507: ST_TO_ADDR
16508: GO 16526
// j = rand ( 1 , 2 ) ;
16510: LD_ADDR_VAR 0 4
16514: PUSH
16515: LD_INT 1
16517: PPUSH
16518: LD_INT 2
16520: PPUSH
16521: CALL_OW 12
16525: ST_TO_ADDR
// case j of 1 :
16526: LD_VAR 0 4
16530: PUSH
16531: LD_INT 1
16533: DOUBLE
16534: EQUAL
16535: IFTRUE 16539
16537: GO 16634
16539: POP
// begin temp = BestOfSkill ( SecondTeam , skill_combat ) ;
16540: LD_ADDR_VAR 0 14
16544: PUSH
16545: LD_EXP 28
16549: PPUSH
16550: LD_INT 1
16552: PPUSH
16553: CALL 18687 0 2
16557: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
16558: LD_ADDR_EXP 28
16562: PUSH
16563: LD_EXP 28
16567: PUSH
16568: LD_VAR 0 14
16572: DIFF
16573: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
16574: LD_ADDR_EXP 31
16578: PUSH
16579: LD_EXP 31
16583: PUSH
16584: LD_VAR 0 14
16588: ADD
16589: ST_TO_ADDR
// if rand ( 1 , 2 ) = 1 then
16590: LD_INT 1
16592: PPUSH
16593: LD_INT 2
16595: PPUSH
16596: CALL_OW 12
16600: PUSH
16601: LD_INT 1
16603: EQUAL
16604: IFFALSE 16620
// SetClass ( temp , class_soldier ) else
16606: LD_VAR 0 14
16610: PPUSH
16611: LD_INT 1
16613: PPUSH
16614: CALL_OW 336
16618: GO 16632
// SetClass ( temp , class_mortar ) ;
16620: LD_VAR 0 14
16624: PPUSH
16625: LD_INT 8
16627: PPUSH
16628: CALL_OW 336
// end ; 2 :
16632: GO 16924
16634: LD_INT 2
16636: DOUBLE
16637: EQUAL
16638: IFTRUE 16642
16640: GO 16842
16642: POP
// begin temp = BestOfSkill ( SecondTeam , skill_mechanical ) ;
16643: LD_ADDR_VAR 0 14
16647: PUSH
16648: LD_EXP 28
16652: PPUSH
16653: LD_INT 3
16655: PPUSH
16656: CALL 18687 0 2
16660: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
16661: LD_ADDR_EXP 28
16665: PUSH
16666: LD_EXP 28
16670: PUSH
16671: LD_VAR 0 14
16675: DIFF
16676: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
16677: LD_ADDR_EXP 31
16681: PUSH
16682: LD_EXP 31
16686: PUSH
16687: LD_VAR 0 14
16691: ADD
16692: ST_TO_ADDR
// SetClass ( temp , class_mechanic ) ;
16693: LD_VAR 0 14
16697: PPUSH
16698: LD_INT 3
16700: PPUSH
16701: CALL_OW 336
// vc_chassis = ar_medium_trike ;
16705: LD_ADDR_OWVAR 37
16709: PUSH
16710: LD_INT 13
16712: ST_TO_ADDR
// vc_control = control_manual ;
16713: LD_ADDR_OWVAR 38
16717: PUSH
16718: LD_INT 1
16720: ST_TO_ADDR
// if temp_list2 = 0 then
16721: LD_VAR 0 11
16725: PUSH
16726: LD_INT 0
16728: EQUAL
16729: IFFALSE 16741
// temp_list2 = engines ;
16731: LD_ADDR_VAR 0 11
16735: PUSH
16736: LD_VAR 0 21
16740: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
16741: LD_ADDR_OWVAR 39
16745: PUSH
16746: LD_VAR 0 11
16750: PUSH
16751: LD_INT 1
16753: ARRAY
16754: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
16755: LD_ADDR_VAR 0 11
16759: PUSH
16760: LD_VAR 0 11
16764: PPUSH
16765: LD_INT 1
16767: PPUSH
16768: CALL_OW 3
16772: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 2 ) ] ;
16773: LD_ADDR_OWVAR 40
16777: PUSH
16778: LD_INT 25
16780: PUSH
16781: LD_INT 26
16783: PUSH
16784: EMPTY
16785: LIST
16786: LIST
16787: PUSH
16788: LD_INT 1
16790: PPUSH
16791: LD_INT 2
16793: PPUSH
16794: CALL_OW 12
16798: ARRAY
16799: ST_TO_ADDR
// un = CreateVehicle ;
16800: LD_ADDR_VAR 0 8
16804: PUSH
16805: CALL_OW 45
16809: ST_TO_ADDR
// PlaceHumanInUnit ( temp , un ) ;
16810: LD_VAR 0 14
16814: PPUSH
16815: LD_VAR 0 8
16819: PPUSH
16820: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
16824: LD_ADDR_EXP 31
16828: PUSH
16829: LD_EXP 31
16833: PUSH
16834: LD_VAR 0 8
16838: ADD
16839: ST_TO_ADDR
// end ; 3 :
16840: GO 16924
16842: LD_INT 3
16844: DOUBLE
16845: EQUAL
16846: IFTRUE 16850
16848: GO 16923
16850: POP
// begin temp = BestOfSkill ( SecondTeam , skill_scientistic ) ;
16851: LD_ADDR_VAR 0 14
16855: PUSH
16856: LD_EXP 28
16860: PPUSH
16861: LD_INT 4
16863: PPUSH
16864: CALL 18687 0 2
16868: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
16869: LD_ADDR_EXP 28
16873: PUSH
16874: LD_EXP 28
16878: PUSH
16879: LD_VAR 0 14
16883: DIFF
16884: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
16885: LD_ADDR_EXP 31
16889: PUSH
16890: LD_EXP 31
16894: PUSH
16895: LD_VAR 0 14
16899: ADD
16900: ST_TO_ADDR
// SetClass ( temp , class_scientistic ) ;
16901: LD_VAR 0 14
16905: PPUSH
16906: LD_INT 4
16908: PPUSH
16909: CALL_OW 336
// val = 1 ;
16913: LD_ADDR_VAR 0 7
16917: PUSH
16918: LD_INT 1
16920: ST_TO_ADDR
// end ; end ;
16921: GO 16924
16923: POP
// end ;
16924: GO 16479
16926: POP
16927: POP
// end ; Aviradze :
16928: GO 18206
16930: LD_EXP 16
16934: DOUBLE
16935: EQUAL
16936: IFTRUE 16940
16938: GO 17458
16940: POP
// begin SetClass ( Aviradze , class_scientistic ) ;
16941: LD_EXP 16
16945: PPUSH
16946: LD_INT 4
16948: PPUSH
16949: CALL_OW 336
// Reinforcements = Reinforcements ^ Aviradze ;
16953: LD_ADDR_EXP 31
16957: PUSH
16958: LD_EXP 31
16962: PUSH
16963: LD_EXP 16
16967: ADD
16968: ST_TO_ADDR
// InitHc ;
16969: CALL_OW 19
// uc_nation = nation_nature ;
16973: LD_ADDR_OWVAR 21
16977: PUSH
16978: LD_INT 0
16980: ST_TO_ADDR
// hc_class = class_apeman_kamikaze ;
16981: LD_ADDR_OWVAR 28
16985: PUSH
16986: LD_INT 17
16988: ST_TO_ADDR
// for i = 1 to 2 do
16989: LD_ADDR_VAR 0 3
16993: PUSH
16994: DOUBLE
16995: LD_INT 1
16997: DEC
16998: ST_TO_ADDR
16999: LD_INT 2
17001: PUSH
17002: FOR_TO
17003: IFFALSE 17089
// begin hc_attr = [ rand ( 15 , 18 ) , 12 ] ;
17005: LD_ADDR_OWVAR 29
17009: PUSH
17010: LD_INT 15
17012: PPUSH
17013: LD_INT 18
17015: PPUSH
17016: CALL_OW 12
17020: PUSH
17021: LD_INT 12
17023: PUSH
17024: EMPTY
17025: LIST
17026: LIST
17027: ST_TO_ADDR
// temp = rand ( 7 , 10 ) ;
17028: LD_ADDR_VAR 0 14
17032: PUSH
17033: LD_INT 7
17035: PPUSH
17036: LD_INT 10
17038: PPUSH
17039: CALL_OW 12
17043: ST_TO_ADDR
// hc_skills = [ temp , temp , 0 , 0 ] ;
17044: LD_ADDR_OWVAR 31
17048: PUSH
17049: LD_VAR 0 14
17053: PUSH
17054: LD_VAR 0 14
17058: PUSH
17059: LD_INT 0
17061: PUSH
17062: LD_INT 0
17064: PUSH
17065: EMPTY
17066: LIST
17067: LIST
17068: LIST
17069: LIST
17070: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateHuman ;
17071: LD_ADDR_EXP 31
17075: PUSH
17076: LD_EXP 31
17080: PUSH
17081: CALL_OW 44
17085: ADD
17086: ST_TO_ADDR
// end ;
17087: GO 17002
17089: POP
17090: POP
// InitHc ;
17091: CALL_OW 19
// uc_nation = nation_arabian ;
17095: LD_ADDR_OWVAR 21
17099: PUSH
17100: LD_INT 2
17102: ST_TO_ADDR
// temp = BestOfSkill ( SecondTeam , skill_mechanical ) ;
17103: LD_ADDR_VAR 0 14
17107: PUSH
17108: LD_EXP 28
17112: PPUSH
17113: LD_INT 3
17115: PPUSH
17116: CALL 18687 0 2
17120: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
17121: LD_ADDR_EXP 28
17125: PUSH
17126: LD_EXP 28
17130: PUSH
17131: LD_VAR 0 14
17135: DIFF
17136: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
17137: LD_ADDR_EXP 31
17141: PUSH
17142: LD_EXP 31
17146: PUSH
17147: LD_VAR 0 14
17151: ADD
17152: ST_TO_ADDR
// SetClass ( temp , class_mechanic ) ;
17153: LD_VAR 0 14
17157: PPUSH
17158: LD_INT 3
17160: PPUSH
17161: CALL_OW 336
// vc_chassis = ar_medium_trike ;
17165: LD_ADDR_OWVAR 37
17169: PUSH
17170: LD_INT 13
17172: ST_TO_ADDR
// vc_control = control_manual ;
17173: LD_ADDR_OWVAR 38
17177: PUSH
17178: LD_INT 1
17180: ST_TO_ADDR
// if temp_list2 = 0 then
17181: LD_VAR 0 11
17185: PUSH
17186: LD_INT 0
17188: EQUAL
17189: IFFALSE 17201
// temp_list2 = engines ;
17191: LD_ADDR_VAR 0 11
17195: PUSH
17196: LD_VAR 0 21
17200: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
17201: LD_ADDR_OWVAR 39
17205: PUSH
17206: LD_VAR 0 11
17210: PUSH
17211: LD_INT 1
17213: ARRAY
17214: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
17215: LD_ADDR_VAR 0 11
17219: PUSH
17220: LD_VAR 0 11
17224: PPUSH
17225: LD_INT 1
17227: PPUSH
17228: CALL_OW 3
17232: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 2 ) ] ;
17233: LD_ADDR_OWVAR 40
17237: PUSH
17238: LD_INT 25
17240: PUSH
17241: LD_INT 26
17243: PUSH
17244: EMPTY
17245: LIST
17246: LIST
17247: PUSH
17248: LD_INT 1
17250: PPUSH
17251: LD_INT 2
17253: PPUSH
17254: CALL_OW 12
17258: ARRAY
17259: ST_TO_ADDR
// un = CreateVehicle ;
17260: LD_ADDR_VAR 0 8
17264: PUSH
17265: CALL_OW 45
17269: ST_TO_ADDR
// PlaceHumanInUnit ( temp , un ) ;
17270: LD_VAR 0 14
17274: PPUSH
17275: LD_VAR 0 8
17279: PPUSH
17280: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
17284: LD_ADDR_EXP 31
17288: PUSH
17289: LD_EXP 31
17293: PUSH
17294: LD_VAR 0 8
17298: ADD
17299: ST_TO_ADDR
// for i = 1 to 3 do
17300: LD_ADDR_VAR 0 3
17304: PUSH
17305: DOUBLE
17306: LD_INT 1
17308: DEC
17309: ST_TO_ADDR
17310: LD_INT 3
17312: PUSH
17313: FOR_TO
17314: IFFALSE 17454
// begin vc_control = control_apeman ;
17316: LD_ADDR_OWVAR 38
17320: PUSH
17321: LD_INT 5
17323: ST_TO_ADDR
// vc_chassis = ar_medium_trike ;
17324: LD_ADDR_OWVAR 37
17328: PUSH
17329: LD_INT 13
17331: ST_TO_ADDR
// if temp_list = 0 then
17332: LD_VAR 0 10
17336: PUSH
17337: LD_INT 0
17339: EQUAL
17340: IFFALSE 17352
// temp_list = weapons ;
17342: LD_ADDR_VAR 0 10
17346: PUSH
17347: LD_VAR 0 20
17351: ST_TO_ADDR
// vc_weapon = temp_list [ 1 ] ;
17352: LD_ADDR_OWVAR 40
17356: PUSH
17357: LD_VAR 0 10
17361: PUSH
17362: LD_INT 1
17364: ARRAY
17365: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
17366: LD_ADDR_VAR 0 10
17370: PUSH
17371: LD_VAR 0 10
17375: PPUSH
17376: LD_INT 1
17378: PPUSH
17379: CALL_OW 3
17383: ST_TO_ADDR
// if temp_list2 = 0 then
17384: LD_VAR 0 11
17388: PUSH
17389: LD_INT 0
17391: EQUAL
17392: IFFALSE 17404
// temp_list2 = engines ;
17394: LD_ADDR_VAR 0 11
17398: PUSH
17399: LD_VAR 0 21
17403: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
17404: LD_ADDR_OWVAR 39
17408: PUSH
17409: LD_VAR 0 11
17413: PUSH
17414: LD_INT 1
17416: ARRAY
17417: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
17418: LD_ADDR_VAR 0 11
17422: PUSH
17423: LD_VAR 0 11
17427: PPUSH
17428: LD_INT 1
17430: PPUSH
17431: CALL_OW 3
17435: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
17436: LD_ADDR_EXP 31
17440: PUSH
17441: LD_EXP 31
17445: PUSH
17446: CALL_OW 45
17450: ADD
17451: ST_TO_ADDR
// end ;
17452: GO 17313
17454: POP
17455: POP
// end ; Makise :
17456: GO 18206
17458: LD_EXP 21
17462: DOUBLE
17463: EQUAL
17464: IFTRUE 17468
17466: GO 17835
17468: POP
// begin SetClass ( Makise , class_scientistic ) ;
17469: LD_EXP 21
17473: PPUSH
17474: LD_INT 4
17476: PPUSH
17477: CALL_OW 336
// Reinforcements = Reinforcements ^ Makise ;
17481: LD_ADDR_EXP 31
17485: PUSH
17486: LD_EXP 31
17490: PUSH
17491: LD_EXP 21
17495: ADD
17496: ST_TO_ADDR
// temp = BestOfSkill ( SecondTeam , skill_Scientistic ) ;
17497: LD_ADDR_VAR 0 14
17501: PUSH
17502: LD_EXP 28
17506: PPUSH
17507: LD_INT 4
17509: PPUSH
17510: CALL 18687 0 2
17514: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
17515: LD_ADDR_EXP 28
17519: PUSH
17520: LD_EXP 28
17524: PUSH
17525: LD_VAR 0 14
17529: DIFF
17530: ST_TO_ADDR
// Reinforcements = Reinforcements ^ temp ;
17531: LD_ADDR_EXP 31
17535: PUSH
17536: LD_EXP 31
17540: PUSH
17541: LD_VAR 0 14
17545: ADD
17546: ST_TO_ADDR
// temp = BestOfSkill ( SecondTeam , skill_mechanical ) ;
17547: LD_ADDR_VAR 0 14
17551: PUSH
17552: LD_EXP 28
17556: PPUSH
17557: LD_INT 3
17559: PPUSH
17560: CALL 18687 0 2
17564: ST_TO_ADDR
// SecondTeam = SecondTeam diff temp ;
17565: LD_ADDR_EXP 28
17569: PUSH
17570: LD_EXP 28
17574: PUSH
17575: LD_VAR 0 14
17579: DIFF
17580: ST_TO_ADDR
// vc_chassis = ar_medium_trike ;
17581: LD_ADDR_OWVAR 37
17585: PUSH
17586: LD_INT 13
17588: ST_TO_ADDR
// vc_control = control_manual ;
17589: LD_ADDR_OWVAR 38
17593: PUSH
17594: LD_INT 1
17596: ST_TO_ADDR
// if temp_list2 = 0 then
17597: LD_VAR 0 11
17601: PUSH
17602: LD_INT 0
17604: EQUAL
17605: IFFALSE 17617
// temp_list2 = engines ;
17607: LD_ADDR_VAR 0 11
17611: PUSH
17612: LD_VAR 0 21
17616: ST_TO_ADDR
// vc_engine = temp_list2 [ 1 ] ;
17617: LD_ADDR_OWVAR 39
17621: PUSH
17622: LD_VAR 0 11
17626: PUSH
17627: LD_INT 1
17629: ARRAY
17630: ST_TO_ADDR
// temp_list2 = Delete ( temp_list2 , 1 ) ;
17631: LD_ADDR_VAR 0 11
17635: PUSH
17636: LD_VAR 0 11
17640: PPUSH
17641: LD_INT 1
17643: PPUSH
17644: CALL_OW 3
17648: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_flame_thrower ] [ rand ( 1 , 2 ) ] ;
17649: LD_ADDR_OWVAR 40
17653: PUSH
17654: LD_INT 25
17656: PUSH
17657: LD_INT 26
17659: PUSH
17660: EMPTY
17661: LIST
17662: LIST
17663: PUSH
17664: LD_INT 1
17666: PPUSH
17667: LD_INT 2
17669: PPUSH
17670: CALL_OW 12
17674: ARRAY
17675: ST_TO_ADDR
// un = CreateVehicle ;
17676: LD_ADDR_VAR 0 8
17680: PUSH
17681: CALL_OW 45
17685: ST_TO_ADDR
// PlaceHumanInUnit ( temp , un ) ;
17686: LD_VAR 0 14
17690: PPUSH
17691: LD_VAR 0 8
17695: PPUSH
17696: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
17700: LD_ADDR_EXP 31
17704: PUSH
17705: LD_EXP 31
17709: PUSH
17710: LD_VAR 0 8
17714: ADD
17715: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
17716: LD_ADDR_OWVAR 37
17720: PUSH
17721: LD_INT 14
17723: ST_TO_ADDR
// vc_control = control_remote ;
17724: LD_ADDR_OWVAR 38
17728: PUSH
17729: LD_INT 2
17731: ST_TO_ADDR
// vc_engine = engine_siberite ;
17732: LD_ADDR_OWVAR 39
17736: PUSH
17737: LD_INT 3
17739: ST_TO_ADDR
// if LoadVariable ( Implosion_vehicle_dismantled_12_cont2 , 0 ) or testing then
17740: LD_STRING Implosion_vehicle_dismantled_12_cont2
17742: PPUSH
17743: LD_INT 0
17745: PPUSH
17746: CALL_OW 30
17750: PUSH
17751: LD_EXP 1
17755: OR
17756: IFFALSE 17784
// begin vc_weapon = ar_selfpropelled_bomb ;
17758: LD_ADDR_OWVAR 40
17762: PUSH
17763: LD_INT 29
17765: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
17766: LD_ADDR_EXP 31
17770: PUSH
17771: LD_EXP 31
17775: PUSH
17776: CALL_OW 45
17780: ADD
17781: ST_TO_ADDR
// end else
17782: GO 17833
// begin vc_weapon = ar_cargo_bay ;
17784: LD_ADDR_OWVAR 40
17788: PUSH
17789: LD_INT 32
17791: ST_TO_ADDR
// un = CreateVehicle ;
17792: LD_ADDR_VAR 0 8
17796: PUSH
17797: CALL_OW 45
17801: ST_TO_ADDR
// AddCargo ( un , mat_siberit , 50 ) ;
17802: LD_VAR 0 8
17806: PPUSH
17807: LD_INT 3
17809: PPUSH
17810: LD_INT 50
17812: PPUSH
17813: CALL_OW 291
// Reinforcements = Reinforcements ^ un ;
17817: LD_ADDR_EXP 31
17821: PUSH
17822: LD_EXP 31
17826: PUSH
17827: LD_VAR 0 8
17831: ADD
17832: ST_TO_ADDR
// end ; end ; Evelyn :
17833: GO 18206
17835: LD_EXP 20
17839: DOUBLE
17840: EQUAL
17841: IFTRUE 17845
17843: GO 18205
17845: POP
// begin SetClass ( Evelyn , class_mechanic ) ;
17846: LD_EXP 20
17850: PPUSH
17851: LD_INT 3
17853: PPUSH
17854: CALL_OW 336
// vc_chassis = ar_half_tracked ;
17858: LD_ADDR_OWVAR 37
17862: PUSH
17863: LD_INT 14
17865: ST_TO_ADDR
// vc_control = control_manual ;
17866: LD_ADDR_OWVAR 38
17870: PUSH
17871: LD_INT 1
17873: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
17874: LD_ADDR_OWVAR 39
17878: PUSH
17879: LD_INT 1
17881: PUSH
17882: LD_INT 3
17884: PUSH
17885: EMPTY
17886: LIST
17887: LIST
17888: PUSH
17889: LD_INT 1
17891: PPUSH
17892: LD_INT 2
17894: PPUSH
17895: CALL_OW 12
17899: ARRAY
17900: ST_TO_ADDR
// vc_weapon = ar_control_tower ;
17901: LD_ADDR_OWVAR 40
17905: PUSH
17906: LD_INT 31
17908: ST_TO_ADDR
// un = CreateVehicle ;
17909: LD_ADDR_VAR 0 8
17913: PUSH
17914: CALL_OW 45
17918: ST_TO_ADDR
// PlaceHumanInUnit ( Evelyn , un ) ;
17919: LD_EXP 20
17923: PPUSH
17924: LD_VAR 0 8
17928: PPUSH
17929: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
17933: LD_ADDR_EXP 31
17937: PUSH
17938: LD_EXP 31
17942: PUSH
17943: LD_VAR 0 8
17947: ADD
17948: ST_TO_ADDR
// vc_control = control_remote ;
17949: LD_ADDR_OWVAR 38
17953: PUSH
17954: LD_INT 2
17956: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
17957: LD_ADDR_OWVAR 39
17961: PUSH
17962: LD_INT 1
17964: PUSH
17965: LD_INT 3
17967: PUSH
17968: EMPTY
17969: LIST
17970: LIST
17971: PUSH
17972: LD_INT 1
17974: PPUSH
17975: LD_INT 2
17977: PPUSH
17978: CALL_OW 12
17982: ARRAY
17983: ST_TO_ADDR
// vc_weapon = ar_radar ;
17984: LD_ADDR_OWVAR 40
17988: PUSH
17989: LD_INT 30
17991: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
17992: LD_ADDR_EXP 31
17996: PUSH
17997: LD_EXP 31
18001: PUSH
18002: CALL_OW 45
18006: ADD
18007: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
18008: LD_ADDR_OWVAR 39
18012: PUSH
18013: LD_INT 1
18015: PUSH
18016: LD_INT 3
18018: PUSH
18019: EMPTY
18020: LIST
18021: LIST
18022: PUSH
18023: LD_INT 1
18025: PPUSH
18026: LD_INT 2
18028: PPUSH
18029: CALL_OW 12
18033: ARRAY
18034: ST_TO_ADDR
// vc_weapon = ar_cargo_bay ;
18035: LD_ADDR_OWVAR 40
18039: PUSH
18040: LD_INT 32
18042: ST_TO_ADDR
// un = CreateVehicle ;
18043: LD_ADDR_VAR 0 8
18047: PUSH
18048: CALL_OW 45
18052: ST_TO_ADDR
// AddCargo ( un , mat_siberit , 80 ) ;
18053: LD_VAR 0 8
18057: PPUSH
18058: LD_INT 3
18060: PPUSH
18061: LD_INT 80
18063: PPUSH
18064: CALL_OW 291
// Reinforcements = Reinforcements ^ un ;
18068: LD_ADDR_EXP 31
18072: PUSH
18073: LD_EXP 31
18077: PUSH
18078: LD_VAR 0 8
18082: ADD
18083: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
18084: LD_ADDR_OWVAR 39
18088: PUSH
18089: LD_INT 1
18091: PUSH
18092: LD_INT 3
18094: PUSH
18095: EMPTY
18096: LIST
18097: LIST
18098: PUSH
18099: LD_INT 1
18101: PPUSH
18102: LD_INT 2
18104: PPUSH
18105: CALL_OW 12
18109: ARRAY
18110: ST_TO_ADDR
// un = CreateVehicle ;
18111: LD_ADDR_VAR 0 8
18115: PUSH
18116: CALL_OW 45
18120: ST_TO_ADDR
// AddCargo ( un , mat_oil , 100 ) ;
18121: LD_VAR 0 8
18125: PPUSH
18126: LD_INT 2
18128: PPUSH
18129: LD_INT 100
18131: PPUSH
18132: CALL_OW 291
// Reinforcements = Reinforcements ^ un ;
18136: LD_ADDR_EXP 31
18140: PUSH
18141: LD_EXP 31
18145: PUSH
18146: LD_VAR 0 8
18150: ADD
18151: ST_TO_ADDR
// vc_engine = [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] ;
18152: LD_ADDR_OWVAR 39
18156: PUSH
18157: LD_INT 1
18159: PUSH
18160: LD_INT 3
18162: PUSH
18163: EMPTY
18164: LIST
18165: LIST
18166: PUSH
18167: LD_INT 1
18169: PPUSH
18170: LD_INT 2
18172: PPUSH
18173: CALL_OW 12
18177: ARRAY
18178: ST_TO_ADDR
// vc_weapon = ar_rocket_launcher ;
18179: LD_ADDR_OWVAR 40
18183: PUSH
18184: LD_INT 28
18186: ST_TO_ADDR
// Reinforcements = Reinforcements ^ CreateVehicle ;
18187: LD_ADDR_EXP 31
18191: PUSH
18192: LD_EXP 31
18196: PUSH
18197: CALL_OW 45
18201: ADD
18202: ST_TO_ADDR
// end ; end ;
18203: GO 18206
18205: POP
18206: GO 14360
18208: POP
18209: POP
// if Olaf in support then
18210: LD_EXP 11
18214: PUSH
18215: LD_VAR 0 19
18219: IN
18220: IFFALSE 18438
// begin temp_list = UnitFilter ( Reinforcements , [ f_class , class_apeman_kamikaze ] ) ;
18222: LD_ADDR_VAR 0 10
18226: PUSH
18227: LD_EXP 31
18231: PPUSH
18232: LD_INT 25
18234: PUSH
18235: LD_INT 17
18237: PUSH
18238: EMPTY
18239: LIST
18240: LIST
18241: PPUSH
18242: CALL_OW 72
18246: ST_TO_ADDR
// temp = UnitFilter ( Reinforcements , [ f_type , unit_human ] ) ;
18247: LD_ADDR_VAR 0 14
18251: PUSH
18252: LD_EXP 31
18256: PPUSH
18257: LD_INT 21
18259: PUSH
18260: LD_INT 1
18262: PUSH
18263: EMPTY
18264: LIST
18265: LIST
18266: PPUSH
18267: CALL_OW 72
18271: ST_TO_ADDR
// temp = temp diff temp_list ;
18272: LD_ADDR_VAR 0 14
18276: PUSH
18277: LD_VAR 0 14
18281: PUSH
18282: LD_VAR 0 10
18286: DIFF
18287: ST_TO_ADDR
// temp_list = [ ] ;
18288: LD_ADDR_VAR 0 10
18292: PUSH
18293: EMPTY
18294: ST_TO_ADDR
// Reinforcements = Reinforcements diff temp ;
18295: LD_ADDR_EXP 31
18299: PUSH
18300: LD_EXP 31
18304: PUSH
18305: LD_VAR 0 14
18309: DIFF
18310: ST_TO_ADDR
// for i in temp do
18311: LD_ADDR_VAR 0 3
18315: PUSH
18316: LD_VAR 0 14
18320: PUSH
18321: FOR_IN
18322: IFFALSE 18436
// begin vc_chassis = ar_hovercraft ;
18324: LD_ADDR_OWVAR 37
18328: PUSH
18329: LD_INT 11
18331: ST_TO_ADDR
// vc_engine = [ engine_solar , engine_combustion ] [ rand ( 1 , 2 ) ] ;
18332: LD_ADDR_OWVAR 39
18336: PUSH
18337: LD_INT 2
18339: PUSH
18340: LD_INT 1
18342: PUSH
18343: EMPTY
18344: LIST
18345: LIST
18346: PUSH
18347: LD_INT 1
18349: PPUSH
18350: LD_INT 2
18352: PPUSH
18353: CALL_OW 12
18357: ARRAY
18358: ST_TO_ADDR
// vc_control = control_manual ;
18359: LD_ADDR_OWVAR 38
18363: PUSH
18364: LD_INT 1
18366: ST_TO_ADDR
// vc_weapon = [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ;
18367: LD_ADDR_OWVAR 40
18371: PUSH
18372: LD_INT 23
18374: PUSH
18375: LD_INT 24
18377: PUSH
18378: EMPTY
18379: LIST
18380: LIST
18381: PUSH
18382: LD_INT 1
18384: PPUSH
18385: LD_INT 2
18387: PPUSH
18388: CALL_OW 12
18392: ARRAY
18393: ST_TO_ADDR
// un = CreateVehicle ;
18394: LD_ADDR_VAR 0 8
18398: PUSH
18399: CALL_OW 45
18403: ST_TO_ADDR
// PlaceHumanInUnit ( i , un ) ;
18404: LD_VAR 0 3
18408: PPUSH
18409: LD_VAR 0 8
18413: PPUSH
18414: CALL_OW 52
// Reinforcements = Reinforcements ^ un ;
18418: LD_ADDR_EXP 31
18422: PUSH
18423: LD_EXP 31
18427: PUSH
18428: LD_VAR 0 8
18432: ADD
18433: ST_TO_ADDR
// end ;
18434: GO 18321
18436: POP
18437: POP
// end ; SetClass ( FilterAllUnits ( [ [ f_or , [ f_side , 2 ] , [ f_side , 5 ] ] , [ f_class , class_engineer ] ] ) , class_mechanic ) ;
18438: LD_INT 2
18440: PUSH
18441: LD_INT 22
18443: PUSH
18444: LD_INT 2
18446: PUSH
18447: EMPTY
18448: LIST
18449: LIST
18450: PUSH
18451: LD_INT 22
18453: PUSH
18454: LD_INT 5
18456: PUSH
18457: EMPTY
18458: LIST
18459: LIST
18460: PUSH
18461: EMPTY
18462: LIST
18463: LIST
18464: LIST
18465: PUSH
18466: LD_INT 25
18468: PUSH
18469: LD_INT 2
18471: PUSH
18472: EMPTY
18473: LIST
18474: LIST
18475: PUSH
18476: EMPTY
18477: LIST
18478: LIST
18479: PPUSH
18480: CALL_OW 69
18484: PPUSH
18485: LD_INT 3
18487: PPUSH
18488: CALL_OW 336
// GSCount = GSCount * 10 10$0 ;
18492: LD_ADDR_EXP 238
18496: PUSH
18497: LD_EXP 238
18501: PUSH
18502: LD_INT 21000
18504: MUL
18505: ST_TO_ADDR
// while GSCount >= 10 10$0 and GameStage < 2 do
18506: LD_EXP 238
18510: PUSH
18511: LD_INT 21000
18513: GREATEREQUAL
18514: PUSH
18515: LD_EXP 237
18519: PUSH
18520: LD_INT 2
18522: LESS
18523: AND
18524: IFFALSE 18556
// begin GameStage = GameStage + 1 ;
18526: LD_ADDR_EXP 237
18530: PUSH
18531: LD_EXP 237
18535: PUSH
18536: LD_INT 1
18538: PLUS
18539: ST_TO_ADDR
// GSCount = GSCount - 10 10$0 ;
18540: LD_ADDR_EXP 238
18544: PUSH
18545: LD_EXP 238
18549: PUSH
18550: LD_INT 21000
18552: MINUS
18553: ST_TO_ADDR
// end ;
18554: GO 18506
// for i in technologies do
18556: LD_ADDR_VAR 0 3
18560: PUSH
18561: LD_VAR 0 16
18565: PUSH
18566: FOR_IN
18567: IFFALSE 18586
// SetTech ( i , 2 , state_researched ) ;
18569: LD_VAR 0 3
18573: PPUSH
18574: LD_INT 2
18576: PPUSH
18577: LD_INT 2
18579: PPUSH
18580: CALL_OW 322
18584: GO 18566
18586: POP
18587: POP
// SibDeposits = GetListOfResourcesInArea ( base_russians ) ;
18588: LD_ADDR_EXP 240
18592: PUSH
18593: LD_INT 2
18595: PPUSH
18596: CALL_OW 442
18600: ST_TO_ADDR
// TargetDeposits = [ ] ;
18601: LD_ADDR_EXP 229
18605: PUSH
18606: EMPTY
18607: ST_TO_ADDR
// for i in ContaminationArea1 ^ ContaminationArea2 ^ ContaminationArea3 do
18608: LD_ADDR_VAR 0 3
18612: PUSH
18613: LD_INT 38
18615: PUSH
18616: LD_INT 39
18618: ADD
18619: PUSH
18620: LD_INT 40
18622: ADD
18623: PUSH
18624: FOR_IN
18625: IFFALSE 18680
// begin temp = GetListOfResourcesInArea ( i ) ;
18627: LD_ADDR_VAR 0 14
18631: PUSH
18632: LD_VAR 0 3
18636: PPUSH
18637: CALL_OW 442
18641: ST_TO_ADDR
// TargetDeposits = TargetDeposits ^ [ [ temp [ 1 ] , temp [ 2 ] ] ] ;
18642: LD_ADDR_EXP 229
18646: PUSH
18647: LD_EXP 229
18651: PUSH
18652: LD_VAR 0 14
18656: PUSH
18657: LD_INT 1
18659: ARRAY
18660: PUSH
18661: LD_VAR 0 14
18665: PUSH
18666: LD_INT 2
18668: ARRAY
18669: PUSH
18670: EMPTY
18671: LIST
18672: LIST
18673: PUSH
18674: EMPTY
18675: LIST
18676: ADD
18677: ST_TO_ADDR
// end ;
18678: GO 18624
18680: POP
18681: POP
// end ;
18682: LD_VAR 0 1
18686: RET
// export function BestOfSkill ( list , skill ) ; var i , temp ; begin
18687: LD_INT 0
18689: PPUSH
18690: PPUSH
18691: PPUSH
// temp = [ ] ;
18692: LD_ADDR_VAR 0 5
18696: PUSH
18697: EMPTY
18698: ST_TO_ADDR
// for i in list do
18699: LD_ADDR_VAR 0 4
18703: PUSH
18704: LD_VAR 0 1
18708: PUSH
18709: FOR_IN
18710: IFFALSE 18740
// temp = temp ^ GetSkill ( i , skill ) ;
18712: LD_ADDR_VAR 0 5
18716: PUSH
18717: LD_VAR 0 5
18721: PUSH
18722: LD_VAR 0 4
18726: PPUSH
18727: LD_VAR 0 2
18731: PPUSH
18732: CALL_OW 259
18736: ADD
18737: ST_TO_ADDR
18738: GO 18709
18740: POP
18741: POP
// result = BestFromListByList ( list , temp ) ;
18742: LD_ADDR_VAR 0 3
18746: PUSH
18747: LD_VAR 0 1
18751: PPUSH
18752: LD_VAR 0 5
18756: PPUSH
18757: CALL_OW 79
18761: ST_TO_ADDR
// end ;
18762: LD_VAR 0 3
18766: RET
// function LoadPlayerChar ( c_name ) ; begin
18767: LD_INT 0
18769: PPUSH
// if TestCharacters ( c_name & _15a ) then
18770: LD_VAR 0 1
18774: PUSH
18775: LD_STRING _15a
18777: STR
18778: PPUSH
18779: CALL_OW 28
18783: IFFALSE 18806
// result = CreateCharacter ( c_name & _15a ) else
18785: LD_ADDR_VAR 0 2
18789: PUSH
18790: LD_VAR 0 1
18794: PUSH
18795: LD_STRING _15a
18797: STR
18798: PPUSH
18799: CALL_OW 34
18803: ST_TO_ADDR
18804: GO 18814
// result = 0 ;
18806: LD_ADDR_VAR 0 2
18810: PUSH
18811: LD_INT 0
18813: ST_TO_ADDR
// end ;
18814: LD_VAR 0 2
18818: RET
// function ScanBuildings ; var side , i , j , temp_list , base , area , temp_list_2 , k , n , temp , weap ; var rubun7_new , rubun3_new ; begin
18819: LD_INT 0
18821: PPUSH
18822: PPUSH
18823: PPUSH
18824: PPUSH
18825: PPUSH
18826: PPUSH
18827: PPUSH
18828: PPUSH
18829: PPUSH
18830: PPUSH
18831: PPUSH
18832: PPUSH
18833: PPUSH
18834: PPUSH
// case difficulty of 1 :
18835: LD_OWVAR 67
18839: PUSH
18840: LD_INT 1
18842: DOUBLE
18843: EQUAL
18844: IFTRUE 18848
18846: GO 19037
18848: POP
// begin mb_vehiclestemp_weapons = [ [ ar_gatling_gun , ar_rocket_launcher , ar_light_gun , ar_gun , ar_light_gun , ar_gatling_gun ] , [ ru_gun , ru_rocket_launcher , ru_heavy_gun , ru_rocket_launcher , - 2 , - 2 , ru_gun ] , [ us_rocket_launcher , us_gatling_gun , us_rocket_launcher , us_double_gun , us_double_gun , us_heavy_gun ] ] ;
18849: LD_ADDR_EXP 166
18853: PUSH
18854: LD_INT 25
18856: PUSH
18857: LD_INT 28
18859: PUSH
18860: LD_INT 23
18862: PUSH
18863: LD_INT 27
18865: PUSH
18866: LD_INT 23
18868: PUSH
18869: LD_INT 25
18871: PUSH
18872: EMPTY
18873: LIST
18874: LIST
18875: LIST
18876: LIST
18877: LIST
18878: LIST
18879: PUSH
18880: LD_INT 44
18882: PUSH
18883: LD_INT 45
18885: PUSH
18886: LD_INT 46
18888: PUSH
18889: LD_INT 45
18891: PUSH
18892: LD_INT 2
18894: NEG
18895: PUSH
18896: LD_INT 2
18898: NEG
18899: PUSH
18900: LD_INT 44
18902: PUSH
18903: EMPTY
18904: LIST
18905: LIST
18906: LIST
18907: LIST
18908: LIST
18909: LIST
18910: LIST
18911: PUSH
18912: LD_INT 7
18914: PUSH
18915: LD_INT 4
18917: PUSH
18918: LD_INT 7
18920: PUSH
18921: LD_INT 5
18923: PUSH
18924: LD_INT 5
18926: PUSH
18927: LD_INT 6
18929: PUSH
18930: EMPTY
18931: LIST
18932: LIST
18933: LIST
18934: LIST
18935: LIST
18936: LIST
18937: PUSH
18938: EMPTY
18939: LIST
18940: LIST
18941: LIST
18942: ST_TO_ADDR
// mb_vehiclestemp_chassis = [ [ ar_half_tracked , ar_half_tracked , ar_light_trike , ar_medium_trike , ar_light_trike , ar_medium_trike ] , [ ru_medium_tracked , ru_medium_tracked , ru_heavy_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked ] , [ us_heavy_tracked , us_medium_tracked , us_medium_tracked , us_medium_wheeled , us_medium_wheeled , us_heavy_tracked ] ] ;
18943: LD_ADDR_EXP 167
18947: PUSH
18948: LD_INT 14
18950: PUSH
18951: LD_INT 14
18953: PUSH
18954: LD_INT 12
18956: PUSH
18957: LD_INT 13
18959: PUSH
18960: LD_INT 12
18962: PUSH
18963: LD_INT 13
18965: PUSH
18966: EMPTY
18967: LIST
18968: LIST
18969: LIST
18970: LIST
18971: LIST
18972: LIST
18973: PUSH
18974: LD_INT 22
18976: PUSH
18977: LD_INT 22
18979: PUSH
18980: LD_INT 24
18982: PUSH
18983: LD_INT 22
18985: PUSH
18986: LD_INT 22
18988: PUSH
18989: LD_INT 22
18991: PUSH
18992: LD_INT 22
18994: PUSH
18995: EMPTY
18996: LIST
18997: LIST
18998: LIST
18999: LIST
19000: LIST
19001: LIST
19002: LIST
19003: PUSH
19004: LD_INT 4
19006: PUSH
19007: LD_INT 3
19009: PUSH
19010: LD_INT 3
19012: PUSH
19013: LD_INT 2
19015: PUSH
19016: LD_INT 2
19018: PUSH
19019: LD_INT 4
19021: PUSH
19022: EMPTY
19023: LIST
19024: LIST
19025: LIST
19026: LIST
19027: LIST
19028: LIST
19029: PUSH
19030: EMPTY
19031: LIST
19032: LIST
19033: LIST
19034: ST_TO_ADDR
// end ; 2 :
19035: GO 19428
19037: LD_INT 2
19039: DOUBLE
19040: EQUAL
19041: IFTRUE 19045
19043: GO 19232
19045: POP
// begin mb_vehiclestemp_weapons = [ [ ar_gun , ar_rocket_launcher , ar_light_gun , ar_rocket_launcher , ar_light_gun , ar_gun ] , [ ru_gun , ru_rocket_launcher , ru_heavy_gun , ru_rocket_launcher , ru_rocket_launcher , ru_gun , ru_gun ] , [ us_rocket_launcher , us_double_gun , us_rocket_launcher , us_double_gun , us_heavy_gun , us_heavy_gun ] ] ;
19046: LD_ADDR_EXP 166
19050: PUSH
19051: LD_INT 27
19053: PUSH
19054: LD_INT 28
19056: PUSH
19057: LD_INT 23
19059: PUSH
19060: LD_INT 28
19062: PUSH
19063: LD_INT 23
19065: PUSH
19066: LD_INT 27
19068: PUSH
19069: EMPTY
19070: LIST
19071: LIST
19072: LIST
19073: LIST
19074: LIST
19075: LIST
19076: PUSH
19077: LD_INT 44
19079: PUSH
19080: LD_INT 45
19082: PUSH
19083: LD_INT 46
19085: PUSH
19086: LD_INT 45
19088: PUSH
19089: LD_INT 45
19091: PUSH
19092: LD_INT 44
19094: PUSH
19095: LD_INT 44
19097: PUSH
19098: EMPTY
19099: LIST
19100: LIST
19101: LIST
19102: LIST
19103: LIST
19104: LIST
19105: LIST
19106: PUSH
19107: LD_INT 7
19109: PUSH
19110: LD_INT 5
19112: PUSH
19113: LD_INT 7
19115: PUSH
19116: LD_INT 5
19118: PUSH
19119: LD_INT 6
19121: PUSH
19122: LD_INT 6
19124: PUSH
19125: EMPTY
19126: LIST
19127: LIST
19128: LIST
19129: LIST
19130: LIST
19131: LIST
19132: PUSH
19133: EMPTY
19134: LIST
19135: LIST
19136: LIST
19137: ST_TO_ADDR
// mb_vehiclestemp_chassis = [ [ ar_medium_trike , ar_half_tracked , ar_medium_trike , ar_half_tracked , ar_medium_trike , ar_medium_trike ] , [ ru_medium_tracked , ru_medium_tracked , ru_heavy_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked ] , [ us_medium_tracked , us_medium_tracked , us_medium_tracked , us_medium_tracked , us_heavy_tracked , us_heavy_tracked ] ] ;
19138: LD_ADDR_EXP 167
19142: PUSH
19143: LD_INT 13
19145: PUSH
19146: LD_INT 14
19148: PUSH
19149: LD_INT 13
19151: PUSH
19152: LD_INT 14
19154: PUSH
19155: LD_INT 13
19157: PUSH
19158: LD_INT 13
19160: PUSH
19161: EMPTY
19162: LIST
19163: LIST
19164: LIST
19165: LIST
19166: LIST
19167: LIST
19168: PUSH
19169: LD_INT 22
19171: PUSH
19172: LD_INT 22
19174: PUSH
19175: LD_INT 24
19177: PUSH
19178: LD_INT 22
19180: PUSH
19181: LD_INT 22
19183: PUSH
19184: LD_INT 22
19186: PUSH
19187: LD_INT 22
19189: PUSH
19190: EMPTY
19191: LIST
19192: LIST
19193: LIST
19194: LIST
19195: LIST
19196: LIST
19197: LIST
19198: PUSH
19199: LD_INT 3
19201: PUSH
19202: LD_INT 3
19204: PUSH
19205: LD_INT 3
19207: PUSH
19208: LD_INT 3
19210: PUSH
19211: LD_INT 4
19213: PUSH
19214: LD_INT 4
19216: PUSH
19217: EMPTY
19218: LIST
19219: LIST
19220: LIST
19221: LIST
19222: LIST
19223: LIST
19224: PUSH
19225: EMPTY
19226: LIST
19227: LIST
19228: LIST
19229: ST_TO_ADDR
// end ; 3 :
19230: GO 19428
19232: LD_INT 3
19234: DOUBLE
19235: EQUAL
19236: IFTRUE 19240
19238: GO 19427
19240: POP
// begin mb_vehiclestemp_weapons = [ [ ar_gun , ar_rocket_launcher , ar_gun , ar_rocket_launcher , ar_gun , ar_gun ] , [ ru_gun , ru_rocket_launcher , ru_heavy_gun , ru_rocket_launcher , ru_rocket_launcher , ru_gun , ru_gun ] , [ us_rocket_launcher , us_rocket_launcher , us_rocket_launcher , us_heavy_gun , us_heavy_gun , us_heavy_gun ] ] ;
19241: LD_ADDR_EXP 166
19245: PUSH
19246: LD_INT 27
19248: PUSH
19249: LD_INT 28
19251: PUSH
19252: LD_INT 27
19254: PUSH
19255: LD_INT 28
19257: PUSH
19258: LD_INT 27
19260: PUSH
19261: LD_INT 27
19263: PUSH
19264: EMPTY
19265: LIST
19266: LIST
19267: LIST
19268: LIST
19269: LIST
19270: LIST
19271: PUSH
19272: LD_INT 44
19274: PUSH
19275: LD_INT 45
19277: PUSH
19278: LD_INT 46
19280: PUSH
19281: LD_INT 45
19283: PUSH
19284: LD_INT 45
19286: PUSH
19287: LD_INT 44
19289: PUSH
19290: LD_INT 44
19292: PUSH
19293: EMPTY
19294: LIST
19295: LIST
19296: LIST
19297: LIST
19298: LIST
19299: LIST
19300: LIST
19301: PUSH
19302: LD_INT 7
19304: PUSH
19305: LD_INT 7
19307: PUSH
19308: LD_INT 7
19310: PUSH
19311: LD_INT 6
19313: PUSH
19314: LD_INT 6
19316: PUSH
19317: LD_INT 6
19319: PUSH
19320: EMPTY
19321: LIST
19322: LIST
19323: LIST
19324: LIST
19325: LIST
19326: LIST
19327: PUSH
19328: EMPTY
19329: LIST
19330: LIST
19331: LIST
19332: ST_TO_ADDR
// mb_vehiclestemp_chassis = [ [ ar_half_tracked , ar_half_tracked , ar_half_tracked , ar_half_tracked , ar_half_tracked , ar_half_tracked ] , [ ru_medium_tracked , ru_medium_tracked , ru_heavy_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked , ru_medium_tracked ] , [ us_morphling , us_morphling , us_morphling , us_morphling , us_morphling , us_morphling ] ] ;
19333: LD_ADDR_EXP 167
19337: PUSH
19338: LD_INT 14
19340: PUSH
19341: LD_INT 14
19343: PUSH
19344: LD_INT 14
19346: PUSH
19347: LD_INT 14
19349: PUSH
19350: LD_INT 14
19352: PUSH
19353: LD_INT 14
19355: PUSH
19356: EMPTY
19357: LIST
19358: LIST
19359: LIST
19360: LIST
19361: LIST
19362: LIST
19363: PUSH
19364: LD_INT 22
19366: PUSH
19367: LD_INT 22
19369: PUSH
19370: LD_INT 24
19372: PUSH
19373: LD_INT 22
19375: PUSH
19376: LD_INT 22
19378: PUSH
19379: LD_INT 22
19381: PUSH
19382: LD_INT 22
19384: PUSH
19385: EMPTY
19386: LIST
19387: LIST
19388: LIST
19389: LIST
19390: LIST
19391: LIST
19392: LIST
19393: PUSH
19394: LD_INT 5
19396: PUSH
19397: LD_INT 5
19399: PUSH
19400: LD_INT 5
19402: PUSH
19403: LD_INT 5
19405: PUSH
19406: LD_INT 5
19408: PUSH
19409: LD_INT 5
19411: PUSH
19412: EMPTY
19413: LIST
19414: LIST
19415: LIST
19416: LIST
19417: LIST
19418: LIST
19419: PUSH
19420: EMPTY
19421: LIST
19422: LIST
19423: LIST
19424: ST_TO_ADDR
// end ; end ;
19425: GO 19428
19427: POP
// case difficulty of 1 :
19428: LD_OWVAR 67
19432: PUSH
19433: LD_INT 1
19435: DOUBLE
19436: EQUAL
19437: IFTRUE 19441
19439: GO 19720
19441: POP
// begin temp_list = [ [ 167 , 21 ] , [ 168 , 24 ] , [ 176 , 39 ] ] ;
19442: LD_ADDR_VAR 0 5
19446: PUSH
19447: LD_INT 167
19449: PUSH
19450: LD_INT 21
19452: PUSH
19453: EMPTY
19454: LIST
19455: LIST
19456: PUSH
19457: LD_INT 168
19459: PUSH
19460: LD_INT 24
19462: PUSH
19463: EMPTY
19464: LIST
19465: LIST
19466: PUSH
19467: LD_INT 176
19469: PUSH
19470: LD_INT 39
19472: PUSH
19473: EMPTY
19474: LIST
19475: LIST
19476: PUSH
19477: EMPTY
19478: LIST
19479: LIST
19480: LIST
19481: ST_TO_ADDR
// for i = 1 to temp_list do
19482: LD_ADDR_VAR 0 3
19486: PUSH
19487: DOUBLE
19488: LD_INT 1
19490: DEC
19491: ST_TO_ADDR
19492: LD_VAR 0 5
19496: PUSH
19497: FOR_TO
19498: IFFALSE 19716
// begin temp = HexInfo ( temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] ) ;
19500: LD_ADDR_VAR 0 11
19504: PUSH
19505: LD_VAR 0 5
19509: PUSH
19510: LD_VAR 0 3
19514: ARRAY
19515: PUSH
19516: LD_INT 1
19518: ARRAY
19519: PPUSH
19520: LD_VAR 0 5
19524: PUSH
19525: LD_VAR 0 3
19529: ARRAY
19530: PUSH
19531: LD_INT 2
19533: ARRAY
19534: PPUSH
19535: CALL_OW 428
19539: ST_TO_ADDR
// uc_side = GetSide ( temp ) ;
19540: LD_ADDR_OWVAR 20
19544: PUSH
19545: LD_VAR 0 11
19549: PPUSH
19550: CALL_OW 255
19554: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
19555: LD_ADDR_OWVAR 21
19559: PUSH
19560: LD_VAR 0 11
19564: PPUSH
19565: CALL_OW 248
19569: ST_TO_ADDR
// bc_type = b_turret ;
19570: LD_ADDR_OWVAR 42
19574: PUSH
19575: LD_INT 33
19577: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
19578: LD_ADDR_OWVAR 24
19582: PUSH
19583: LD_VAR 0 11
19587: PPUSH
19588: CALL_OW 254
19592: ST_TO_ADDR
// weap = us_double_gun ;
19593: LD_ADDR_VAR 0 12
19597: PUSH
19598: LD_INT 5
19600: ST_TO_ADDR
// if i = 3 then
19601: LD_VAR 0 3
19605: PUSH
19606: LD_INT 3
19608: EQUAL
19609: IFFALSE 19619
// weap = us_heavy_gun ;
19611: LD_ADDR_VAR 0 12
19615: PUSH
19616: LD_INT 6
19618: ST_TO_ADDR
// DestroyUnit ( temp ) ;
19619: LD_VAR 0 11
19623: PPUSH
19624: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] , false ) ;
19628: CALL_OW 46
19632: PPUSH
19633: LD_VAR 0 5
19637: PUSH
19638: LD_VAR 0 3
19642: ARRAY
19643: PUSH
19644: LD_INT 1
19646: ARRAY
19647: PPUSH
19648: LD_VAR 0 5
19652: PUSH
19653: LD_VAR 0 3
19657: ARRAY
19658: PUSH
19659: LD_INT 2
19661: ARRAY
19662: PPUSH
19663: LD_INT 0
19665: PPUSH
19666: CALL_OW 48
// PlaceWeaponTurret ( HexInfo ( temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] ) , weap ) ;
19670: LD_VAR 0 5
19674: PUSH
19675: LD_VAR 0 3
19679: ARRAY
19680: PUSH
19681: LD_INT 1
19683: ARRAY
19684: PPUSH
19685: LD_VAR 0 5
19689: PUSH
19690: LD_VAR 0 3
19694: ARRAY
19695: PUSH
19696: LD_INT 2
19698: ARRAY
19699: PPUSH
19700: CALL_OW 428
19704: PPUSH
19705: LD_VAR 0 12
19709: PPUSH
19710: CALL_OW 431
// end ;
19714: GO 19497
19716: POP
19717: POP
// end ; 2 :
19718: GO 19946
19720: LD_INT 2
19722: DOUBLE
19723: EQUAL
19724: IFTRUE 19728
19726: GO 19945
19728: POP
// for i in [ [ 167 , 21 ] , [ 170 , 23 ] , [ 176 , 39 ] ] do
19729: LD_ADDR_VAR 0 3
19733: PUSH
19734: LD_INT 167
19736: PUSH
19737: LD_INT 21
19739: PUSH
19740: EMPTY
19741: LIST
19742: LIST
19743: PUSH
19744: LD_INT 170
19746: PUSH
19747: LD_INT 23
19749: PUSH
19750: EMPTY
19751: LIST
19752: LIST
19753: PUSH
19754: LD_INT 176
19756: PUSH
19757: LD_INT 39
19759: PUSH
19760: EMPTY
19761: LIST
19762: LIST
19763: PUSH
19764: EMPTY
19765: LIST
19766: LIST
19767: LIST
19768: PUSH
19769: FOR_IN
19770: IFFALSE 19941
// begin temp = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
19772: LD_ADDR_VAR 0 11
19776: PUSH
19777: LD_VAR 0 3
19781: PUSH
19782: LD_INT 1
19784: ARRAY
19785: PPUSH
19786: LD_VAR 0 3
19790: PUSH
19791: LD_INT 2
19793: ARRAY
19794: PPUSH
19795: CALL_OW 428
19799: ST_TO_ADDR
// uc_side = GetSide ( temp ) ;
19800: LD_ADDR_OWVAR 20
19804: PUSH
19805: LD_VAR 0 11
19809: PPUSH
19810: CALL_OW 255
19814: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
19815: LD_ADDR_OWVAR 21
19819: PUSH
19820: LD_VAR 0 11
19824: PPUSH
19825: CALL_OW 248
19829: ST_TO_ADDR
// bc_type = b_turret ;
19830: LD_ADDR_OWVAR 42
19834: PUSH
19835: LD_INT 33
19837: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
19838: LD_ADDR_OWVAR 24
19842: PUSH
19843: LD_VAR 0 11
19847: PPUSH
19848: CALL_OW 254
19852: ST_TO_ADDR
// weap = GetBWeapon ( temp ) ;
19853: LD_ADDR_VAR 0 12
19857: PUSH
19858: LD_VAR 0 11
19862: PPUSH
19863: CALL_OW 269
19867: ST_TO_ADDR
// DestroyUnit ( temp ) ;
19868: LD_VAR 0 11
19872: PPUSH
19873: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , i [ 1 ] , i [ 2 ] , false ) ;
19877: CALL_OW 46
19881: PPUSH
19882: LD_VAR 0 3
19886: PUSH
19887: LD_INT 1
19889: ARRAY
19890: PPUSH
19891: LD_VAR 0 3
19895: PUSH
19896: LD_INT 2
19898: ARRAY
19899: PPUSH
19900: LD_INT 0
19902: PPUSH
19903: CALL_OW 48
// PlaceWeaponTurret ( HexInfo ( i [ 1 ] , i [ 2 ] ) , weap ) ;
19907: LD_VAR 0 3
19911: PUSH
19912: LD_INT 1
19914: ARRAY
19915: PPUSH
19916: LD_VAR 0 3
19920: PUSH
19921: LD_INT 2
19923: ARRAY
19924: PPUSH
19925: CALL_OW 428
19929: PPUSH
19930: LD_VAR 0 12
19934: PPUSH
19935: CALL_OW 431
// end ; end ;
19939: GO 19769
19941: POP
19942: POP
19943: GO 19946
19945: POP
// if difficulty = 3 then
19946: LD_OWVAR 67
19950: PUSH
19951: LD_INT 3
19953: EQUAL
19954: IFFALSE 20052
// begin temp = HexInfo ( 182 , 43 ) ;
19956: LD_ADDR_VAR 0 11
19960: PUSH
19961: LD_INT 182
19963: PPUSH
19964: LD_INT 43
19966: PPUSH
19967: CALL_OW 428
19971: ST_TO_ADDR
// uc_side = GetSide ( temp ) ;
19972: LD_ADDR_OWVAR 20
19976: PUSH
19977: LD_VAR 0 11
19981: PPUSH
19982: CALL_OW 255
19986: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
19987: LD_ADDR_OWVAR 21
19991: PUSH
19992: LD_VAR 0 11
19996: PPUSH
19997: CALL_OW 248
20001: ST_TO_ADDR
// bc_type = b_barracks ;
20002: LD_ADDR_OWVAR 42
20006: PUSH
20007: LD_INT 5
20009: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
20010: LD_ADDR_OWVAR 24
20014: PUSH
20015: LD_VAR 0 11
20019: PPUSH
20020: CALL_OW 254
20024: ST_TO_ADDR
// DestroyUnit ( temp ) ;
20025: LD_VAR 0 11
20029: PPUSH
20030: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , 182 , 43 , false ) ;
20034: CALL_OW 46
20038: PPUSH
20039: LD_INT 182
20041: PPUSH
20042: LD_INT 43
20044: PPUSH
20045: LD_INT 0
20047: PPUSH
20048: CALL_OW 48
// end ; case difficulty of 1 :
20052: LD_OWVAR 67
20056: PUSH
20057: LD_INT 1
20059: DOUBLE
20060: EQUAL
20061: IFTRUE 20065
20063: GO 20351
20065: POP
// begin temp_list = [ [ 156 , 114 ] , [ 152 , 112 ] , [ 155 , 122 ] ] ;
20066: LD_ADDR_VAR 0 5
20070: PUSH
20071: LD_INT 156
20073: PUSH
20074: LD_INT 114
20076: PUSH
20077: EMPTY
20078: LIST
20079: LIST
20080: PUSH
20081: LD_INT 152
20083: PUSH
20084: LD_INT 112
20086: PUSH
20087: EMPTY
20088: LIST
20089: LIST
20090: PUSH
20091: LD_INT 155
20093: PUSH
20094: LD_INT 122
20096: PUSH
20097: EMPTY
20098: LIST
20099: LIST
20100: PUSH
20101: EMPTY
20102: LIST
20103: LIST
20104: LIST
20105: ST_TO_ADDR
// for i = 1 to temp_list do
20106: LD_ADDR_VAR 0 3
20110: PUSH
20111: DOUBLE
20112: LD_INT 1
20114: DEC
20115: ST_TO_ADDR
20116: LD_VAR 0 5
20120: PUSH
20121: FOR_TO
20122: IFFALSE 20347
// begin temp = HexInfo ( temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] ) ;
20124: LD_ADDR_VAR 0 11
20128: PUSH
20129: LD_VAR 0 5
20133: PUSH
20134: LD_VAR 0 3
20138: ARRAY
20139: PUSH
20140: LD_INT 1
20142: ARRAY
20143: PPUSH
20144: LD_VAR 0 5
20148: PUSH
20149: LD_VAR 0 3
20153: ARRAY
20154: PUSH
20155: LD_INT 2
20157: ARRAY
20158: PPUSH
20159: CALL_OW 428
20163: ST_TO_ADDR
// uc_side = GetSide ( temp ) ;
20164: LD_ADDR_OWVAR 20
20168: PUSH
20169: LD_VAR 0 11
20173: PPUSH
20174: CALL_OW 255
20178: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
20179: LD_ADDR_OWVAR 21
20183: PUSH
20184: LD_VAR 0 11
20188: PPUSH
20189: CALL_OW 248
20193: ST_TO_ADDR
// bc_type = GetBType ( temp ) ;
20194: LD_ADDR_OWVAR 42
20198: PUSH
20199: LD_VAR 0 11
20203: PPUSH
20204: CALL_OW 266
20208: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
20209: LD_ADDR_OWVAR 24
20213: PUSH
20214: LD_VAR 0 11
20218: PPUSH
20219: CALL_OW 254
20223: ST_TO_ADDR
// weap = ru_gun ;
20224: LD_ADDR_VAR 0 12
20228: PUSH
20229: LD_INT 44
20231: ST_TO_ADDR
// if i = 3 then
20232: LD_VAR 0 3
20236: PUSH
20237: LD_INT 3
20239: EQUAL
20240: IFFALSE 20250
// weap = ru_rocket_launcher ;
20242: LD_ADDR_VAR 0 12
20246: PUSH
20247: LD_INT 45
20249: ST_TO_ADDR
// DestroyUnit ( temp ) ;
20250: LD_VAR 0 11
20254: PPUSH
20255: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] , false ) ;
20259: CALL_OW 46
20263: PPUSH
20264: LD_VAR 0 5
20268: PUSH
20269: LD_VAR 0 3
20273: ARRAY
20274: PUSH
20275: LD_INT 1
20277: ARRAY
20278: PPUSH
20279: LD_VAR 0 5
20283: PUSH
20284: LD_VAR 0 3
20288: ARRAY
20289: PUSH
20290: LD_INT 2
20292: ARRAY
20293: PPUSH
20294: LD_INT 0
20296: PPUSH
20297: CALL_OW 48
// PlaceWeaponTurret ( HexInfo ( temp_list [ i ] [ 1 ] , temp_list [ i ] [ 2 ] ) , weap ) ;
20301: LD_VAR 0 5
20305: PUSH
20306: LD_VAR 0 3
20310: ARRAY
20311: PUSH
20312: LD_INT 1
20314: ARRAY
20315: PPUSH
20316: LD_VAR 0 5
20320: PUSH
20321: LD_VAR 0 3
20325: ARRAY
20326: PUSH
20327: LD_INT 2
20329: ARRAY
20330: PPUSH
20331: CALL_OW 428
20335: PPUSH
20336: LD_VAR 0 12
20340: PPUSH
20341: CALL_OW 431
// end ;
20345: GO 20121
20347: POP
20348: POP
// end ; 2 :
20349: GO 20566
20351: LD_INT 2
20353: DOUBLE
20354: EQUAL
20355: IFTRUE 20359
20357: GO 20565
20359: POP
// for i in [ [ 156 , 114 ] , [ 152 , 112 ] ] do
20360: LD_ADDR_VAR 0 3
20364: PUSH
20365: LD_INT 156
20367: PUSH
20368: LD_INT 114
20370: PUSH
20371: EMPTY
20372: LIST
20373: LIST
20374: PUSH
20375: LD_INT 152
20377: PUSH
20378: LD_INT 112
20380: PUSH
20381: EMPTY
20382: LIST
20383: LIST
20384: PUSH
20385: EMPTY
20386: LIST
20387: LIST
20388: PUSH
20389: FOR_IN
20390: IFFALSE 20561
// begin temp = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
20392: LD_ADDR_VAR 0 11
20396: PUSH
20397: LD_VAR 0 3
20401: PUSH
20402: LD_INT 1
20404: ARRAY
20405: PPUSH
20406: LD_VAR 0 3
20410: PUSH
20411: LD_INT 2
20413: ARRAY
20414: PPUSH
20415: CALL_OW 428
20419: ST_TO_ADDR
// uc_side = GetSide ( temp ) ;
20420: LD_ADDR_OWVAR 20
20424: PUSH
20425: LD_VAR 0 11
20429: PPUSH
20430: CALL_OW 255
20434: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
20435: LD_ADDR_OWVAR 21
20439: PUSH
20440: LD_VAR 0 11
20444: PPUSH
20445: CALL_OW 248
20449: ST_TO_ADDR
// bc_type = GetBType ( temp ) ;
20450: LD_ADDR_OWVAR 42
20454: PUSH
20455: LD_VAR 0 11
20459: PPUSH
20460: CALL_OW 266
20464: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
20465: LD_ADDR_OWVAR 24
20469: PUSH
20470: LD_VAR 0 11
20474: PPUSH
20475: CALL_OW 254
20479: ST_TO_ADDR
// weap = ru_gun ;
20480: LD_ADDR_VAR 0 12
20484: PUSH
20485: LD_INT 44
20487: ST_TO_ADDR
// DestroyUnit ( temp ) ;
20488: LD_VAR 0 11
20492: PPUSH
20493: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , i [ 1 ] , i [ 2 ] , false ) ;
20497: CALL_OW 46
20501: PPUSH
20502: LD_VAR 0 3
20506: PUSH
20507: LD_INT 1
20509: ARRAY
20510: PPUSH
20511: LD_VAR 0 3
20515: PUSH
20516: LD_INT 2
20518: ARRAY
20519: PPUSH
20520: LD_INT 0
20522: PPUSH
20523: CALL_OW 48
// PlaceWeaponTurret ( HexInfo ( i [ 1 ] , i [ 2 ] ) , weap ) ;
20527: LD_VAR 0 3
20531: PUSH
20532: LD_INT 1
20534: ARRAY
20535: PPUSH
20536: LD_VAR 0 3
20540: PUSH
20541: LD_INT 2
20543: ARRAY
20544: PPUSH
20545: CALL_OW 428
20549: PPUSH
20550: LD_VAR 0 12
20554: PPUSH
20555: CALL_OW 431
// end ; end ;
20559: GO 20389
20561: POP
20562: POP
20563: GO 20566
20565: POP
// case difficulty of 1 :
20566: LD_OWVAR 67
20570: PUSH
20571: LD_INT 1
20573: DOUBLE
20574: EQUAL
20575: IFTRUE 20579
20577: GO 20779
20579: POP
// begin temp_list = [ [ 215 , 196 ] , [ 221 , 212 ] , [ 232 , 237 ] , [ 232 , 255 ] , [ 178 , 226 ] , [ 176 , 215 ] ] ;
20580: LD_ADDR_VAR 0 5
20584: PUSH
20585: LD_INT 215
20587: PUSH
20588: LD_INT 196
20590: PUSH
20591: EMPTY
20592: LIST
20593: LIST
20594: PUSH
20595: LD_INT 221
20597: PUSH
20598: LD_INT 212
20600: PUSH
20601: EMPTY
20602: LIST
20603: LIST
20604: PUSH
20605: LD_INT 232
20607: PUSH
20608: LD_INT 237
20610: PUSH
20611: EMPTY
20612: LIST
20613: LIST
20614: PUSH
20615: LD_INT 232
20617: PUSH
20618: LD_INT 255
20620: PUSH
20621: EMPTY
20622: LIST
20623: LIST
20624: PUSH
20625: LD_INT 178
20627: PUSH
20628: LD_INT 226
20630: PUSH
20631: EMPTY
20632: LIST
20633: LIST
20634: PUSH
20635: LD_INT 176
20637: PUSH
20638: LD_INT 215
20640: PUSH
20641: EMPTY
20642: LIST
20643: LIST
20644: PUSH
20645: EMPTY
20646: LIST
20647: LIST
20648: LIST
20649: LIST
20650: LIST
20651: LIST
20652: ST_TO_ADDR
// temp_list_2 = [ [ 223 , 216 ] , [ 232 , 248 ] , [ 186 , 241 ] , [ 178 , 230 ] , [ 180 , 219 ] ] ;
20653: LD_ADDR_VAR 0 8
20657: PUSH
20658: LD_INT 223
20660: PUSH
20661: LD_INT 216
20663: PUSH
20664: EMPTY
20665: LIST
20666: LIST
20667: PUSH
20668: LD_INT 232
20670: PUSH
20671: LD_INT 248
20673: PUSH
20674: EMPTY
20675: LIST
20676: LIST
20677: PUSH
20678: LD_INT 186
20680: PUSH
20681: LD_INT 241
20683: PUSH
20684: EMPTY
20685: LIST
20686: LIST
20687: PUSH
20688: LD_INT 178
20690: PUSH
20691: LD_INT 230
20693: PUSH
20694: EMPTY
20695: LIST
20696: LIST
20697: PUSH
20698: LD_INT 180
20700: PUSH
20701: LD_INT 219
20703: PUSH
20704: EMPTY
20705: LIST
20706: LIST
20707: PUSH
20708: EMPTY
20709: LIST
20710: LIST
20711: LIST
20712: LIST
20713: LIST
20714: ST_TO_ADDR
// temp_list = temp_list ^ temp_list_2 ;
20715: LD_ADDR_VAR 0 5
20719: PUSH
20720: LD_VAR 0 5
20724: PUSH
20725: LD_VAR 0 8
20729: ADD
20730: ST_TO_ADDR
// temp_list = temp_list ^ [ [ 219 , 121 ] , [ 207 , 130 ] , [ 209 , 153 ] ] ;
20731: LD_ADDR_VAR 0 5
20735: PUSH
20736: LD_VAR 0 5
20740: PUSH
20741: LD_INT 219
20743: PUSH
20744: LD_INT 121
20746: PUSH
20747: EMPTY
20748: LIST
20749: LIST
20750: PUSH
20751: LD_INT 207
20753: PUSH
20754: LD_INT 130
20756: PUSH
20757: EMPTY
20758: LIST
20759: LIST
20760: PUSH
20761: LD_INT 209
20763: PUSH
20764: LD_INT 153
20766: PUSH
20767: EMPTY
20768: LIST
20769: LIST
20770: PUSH
20771: EMPTY
20772: LIST
20773: LIST
20774: LIST
20775: ADD
20776: ST_TO_ADDR
// end ; 2 :
20777: GO 20940
20779: LD_INT 2
20781: DOUBLE
20782: EQUAL
20783: IFTRUE 20787
20785: GO 20921
20787: POP
// begin temp_list = [ [ 215 , 196 ] , [ 221 , 212 ] , [ 232 , 237 ] , [ 176 , 215 ] ] ;
20788: LD_ADDR_VAR 0 5
20792: PUSH
20793: LD_INT 215
20795: PUSH
20796: LD_INT 196
20798: PUSH
20799: EMPTY
20800: LIST
20801: LIST
20802: PUSH
20803: LD_INT 221
20805: PUSH
20806: LD_INT 212
20808: PUSH
20809: EMPTY
20810: LIST
20811: LIST
20812: PUSH
20813: LD_INT 232
20815: PUSH
20816: LD_INT 237
20818: PUSH
20819: EMPTY
20820: LIST
20821: LIST
20822: PUSH
20823: LD_INT 176
20825: PUSH
20826: LD_INT 215
20828: PUSH
20829: EMPTY
20830: LIST
20831: LIST
20832: PUSH
20833: EMPTY
20834: LIST
20835: LIST
20836: LIST
20837: LIST
20838: ST_TO_ADDR
// temp_list_2 = [ [ 186 , 241 ] , [ 180 , 219 ] ] ;
20839: LD_ADDR_VAR 0 8
20843: PUSH
20844: LD_INT 186
20846: PUSH
20847: LD_INT 241
20849: PUSH
20850: EMPTY
20851: LIST
20852: LIST
20853: PUSH
20854: LD_INT 180
20856: PUSH
20857: LD_INT 219
20859: PUSH
20860: EMPTY
20861: LIST
20862: LIST
20863: PUSH
20864: EMPTY
20865: LIST
20866: LIST
20867: ST_TO_ADDR
// temp_list = temp_list ^ temp_list_2 ;
20868: LD_ADDR_VAR 0 5
20872: PUSH
20873: LD_VAR 0 5
20877: PUSH
20878: LD_VAR 0 8
20882: ADD
20883: ST_TO_ADDR
// temp_list = temp_list ^ [ [ 219 , 121 ] , [ 209 , 153 ] ] ;
20884: LD_ADDR_VAR 0 5
20888: PUSH
20889: LD_VAR 0 5
20893: PUSH
20894: LD_INT 219
20896: PUSH
20897: LD_INT 121
20899: PUSH
20900: EMPTY
20901: LIST
20902: LIST
20903: PUSH
20904: LD_INT 209
20906: PUSH
20907: LD_INT 153
20909: PUSH
20910: EMPTY
20911: LIST
20912: LIST
20913: PUSH
20914: EMPTY
20915: LIST
20916: LIST
20917: ADD
20918: ST_TO_ADDR
// end ; 3 :
20919: GO 20940
20921: LD_INT 3
20923: DOUBLE
20924: EQUAL
20925: IFTRUE 20929
20927: GO 20939
20929: POP
// temp_list = [ ] ; end ;
20930: LD_ADDR_VAR 0 5
20934: PUSH
20935: EMPTY
20936: ST_TO_ADDR
20937: GO 20940
20939: POP
// if temp_list > 0 then
20940: LD_VAR 0 5
20944: PUSH
20945: LD_INT 0
20947: GREATER
20948: IFFALSE 21210
// for i in temp_list do
20950: LD_ADDR_VAR 0 3
20954: PUSH
20955: LD_VAR 0 5
20959: PUSH
20960: FOR_IN
20961: IFFALSE 21208
// begin temp = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
20963: LD_ADDR_VAR 0 11
20967: PUSH
20968: LD_VAR 0 3
20972: PUSH
20973: LD_INT 1
20975: ARRAY
20976: PPUSH
20977: LD_VAR 0 3
20981: PUSH
20982: LD_INT 2
20984: ARRAY
20985: PPUSH
20986: CALL_OW 428
20990: ST_TO_ADDR
// if temp > 0 then
20991: LD_VAR 0 11
20995: PUSH
20996: LD_INT 0
20998: GREATER
20999: IFFALSE 21206
// begin uc_side = GetSide ( temp ) ;
21001: LD_ADDR_OWVAR 20
21005: PUSH
21006: LD_VAR 0 11
21010: PPUSH
21011: CALL_OW 255
21015: ST_TO_ADDR
// uc_nation = GetNation ( temp ) ;
21016: LD_ADDR_OWVAR 21
21020: PUSH
21021: LD_VAR 0 11
21025: PPUSH
21026: CALL_OW 248
21030: ST_TO_ADDR
// bc_type = GetBType ( temp ) ;
21031: LD_ADDR_OWVAR 42
21035: PUSH
21036: LD_VAR 0 11
21040: PPUSH
21041: CALL_OW 266
21045: ST_TO_ADDR
// uc_direction = GetDir ( temp ) ;
21046: LD_ADDR_OWVAR 24
21050: PUSH
21051: LD_VAR 0 11
21055: PPUSH
21056: CALL_OW 254
21060: ST_TO_ADDR
// case GetBWeapon ( temp ) of ru_heavy_gun :
21061: LD_VAR 0 11
21065: PPUSH
21066: CALL_OW 269
21070: PUSH
21071: LD_INT 46
21073: DOUBLE
21074: EQUAL
21075: IFTRUE 21079
21077: GO 21090
21079: POP
// weap = ru_gun ; ru_rocket :
21080: LD_ADDR_VAR 0 12
21084: PUSH
21085: LD_INT 44
21087: ST_TO_ADDR
21088: GO 21135
21090: LD_INT 47
21092: DOUBLE
21093: EQUAL
21094: IFTRUE 21098
21096: GO 21109
21098: POP
// weap = ru_rocket_launcher ; us_heavy_gun , us_laser :
21099: LD_ADDR_VAR 0 12
21103: PUSH
21104: LD_INT 45
21106: ST_TO_ADDR
21107: GO 21135
21109: LD_INT 6
21111: DOUBLE
21112: EQUAL
21113: IFTRUE 21123
21115: LD_INT 9
21117: DOUBLE
21118: EQUAL
21119: IFTRUE 21123
21121: GO 21134
21123: POP
// weap = us_double_gun ; end ;
21124: LD_ADDR_VAR 0 12
21128: PUSH
21129: LD_INT 5
21131: ST_TO_ADDR
21132: GO 21135
21134: POP
// DestroyUnit ( temp ) ;
21135: LD_VAR 0 11
21139: PPUSH
21140: CALL_OW 65
// PlaceUnitXY ( CreateBuilding , i [ 1 ] , i [ 2 ] , false ) ;
21144: CALL_OW 46
21148: PPUSH
21149: LD_VAR 0 3
21153: PUSH
21154: LD_INT 1
21156: ARRAY
21157: PPUSH
21158: LD_VAR 0 3
21162: PUSH
21163: LD_INT 2
21165: ARRAY
21166: PPUSH
21167: LD_INT 0
21169: PPUSH
21170: CALL_OW 48
// PlaceWeaponTurret ( HexInfo ( i [ 1 ] , i [ 2 ] ) , weap ) ;
21174: LD_VAR 0 3
21178: PUSH
21179: LD_INT 1
21181: ARRAY
21182: PPUSH
21183: LD_VAR 0 3
21187: PUSH
21188: LD_INT 2
21190: ARRAY
21191: PPUSH
21192: CALL_OW 428
21196: PPUSH
21197: LD_VAR 0 12
21201: PPUSH
21202: CALL_OW 431
// end ; end ;
21206: GO 20960
21208: POP
21209: POP
// case difficulty of 1 :
21210: LD_OWVAR 67
21214: PUSH
21215: LD_INT 1
21217: DOUBLE
21218: EQUAL
21219: IFTRUE 21223
21221: GO 21257
21223: POP
// for i in FilterUnitsInArea ( RemoveTheseOnEasy , [ ] ) do
21224: LD_ADDR_VAR 0 3
21228: PUSH
21229: LD_INT 48
21231: PPUSH
21232: EMPTY
21233: PPUSH
21234: CALL_OW 70
21238: PUSH
21239: FOR_IN
21240: IFFALSE 21253
// DestroyUnit ( i ) ; 2 :
21242: LD_VAR 0 3
21246: PPUSH
21247: CALL_OW 65
21251: GO 21239
21253: POP
21254: POP
21255: GO 21342
21257: LD_INT 2
21259: DOUBLE
21260: EQUAL
21261: IFTRUE 21265
21263: GO 21299
21265: POP
// for i in FilterUnitsInArea ( RemoveTheseOnMedium , [ ] ) do
21266: LD_ADDR_VAR 0 3
21270: PUSH
21271: LD_INT 49
21273: PPUSH
21274: EMPTY
21275: PPUSH
21276: CALL_OW 70
21280: PUSH
21281: FOR_IN
21282: IFFALSE 21295
// DestroyUnit ( i ) ; 3 :
21284: LD_VAR 0 3
21288: PPUSH
21289: CALL_OW 65
21293: GO 21281
21295: POP
21296: POP
21297: GO 21342
21299: LD_INT 3
21301: DOUBLE
21302: EQUAL
21303: IFTRUE 21307
21305: GO 21341
21307: POP
// for i in FilterUnitsInArea ( RemoveTheseOnHard , [ ] ) do
21308: LD_ADDR_VAR 0 3
21312: PUSH
21313: LD_INT 50
21315: PPUSH
21316: EMPTY
21317: PPUSH
21318: CALL_OW 70
21322: PUSH
21323: FOR_IN
21324: IFFALSE 21337
// DestroyUnit ( i ) ; end ;
21326: LD_VAR 0 3
21330: PPUSH
21331: CALL_OW 65
21335: GO 21323
21337: POP
21338: POP
21339: GO 21342
21341: POP
// for base in ai_bases do
21342: LD_ADDR_VAR 0 6
21346: PUSH
21347: LD_EXP 49
21351: PUSH
21352: FOR_IN
21353: IFFALSE 21876
// begin area = GetBaseArea ( base ) ;
21355: LD_ADDR_VAR 0 7
21359: PUSH
21360: LD_VAR 0 6
21364: PPUSH
21365: CALL 40400 0 1
21369: ST_TO_ADDR
// side = GetBaseSide ( base ) ;
21370: LD_ADDR_VAR 0 2
21374: PUSH
21375: LD_VAR 0 6
21379: PPUSH
21380: CALL 40471 0 1
21384: ST_TO_ADDR
// temp_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_inarea , area ] ] ) ;
21385: LD_ADDR_VAR 0 5
21389: PUSH
21390: LD_INT 22
21392: PUSH
21393: LD_VAR 0 2
21397: PUSH
21398: EMPTY
21399: LIST
21400: LIST
21401: PUSH
21402: LD_INT 21
21404: PUSH
21405: LD_INT 3
21407: PUSH
21408: EMPTY
21409: LIST
21410: LIST
21411: PUSH
21412: LD_INT 95
21414: PUSH
21415: LD_VAR 0 7
21419: PUSH
21420: EMPTY
21421: LIST
21422: LIST
21423: PUSH
21424: EMPTY
21425: LIST
21426: LIST
21427: LIST
21428: PPUSH
21429: CALL_OW 69
21433: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
21434: LD_ADDR_EXP 86
21438: PUSH
21439: LD_EXP 86
21443: PPUSH
21444: LD_VAR 0 6
21448: PPUSH
21449: LD_VAR 0 5
21453: PPUSH
21454: CALL_OW 1
21458: ST_TO_ADDR
// temp = 0 ;
21459: LD_ADDR_VAR 0 11
21463: PUSH
21464: LD_INT 0
21466: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
21467: LD_ADDR_VAR 0 3
21471: PUSH
21472: LD_EXP 86
21476: PUSH
21477: LD_VAR 0 6
21481: ARRAY
21482: PUSH
21483: FOR_IN
21484: IFFALSE 21502
// temp = temp + 1 ;
21486: LD_ADDR_VAR 0 11
21490: PUSH
21491: LD_VAR 0 11
21495: PUSH
21496: LD_INT 1
21498: PLUS
21499: ST_TO_ADDR
21500: GO 21483
21502: POP
21503: POP
// InitialBuildingCount = InitialBuildingCount ^ temp ;
21504: LD_ADDR_EXP 194
21508: PUSH
21509: LD_EXP 194
21513: PUSH
21514: LD_VAR 0 11
21518: ADD
21519: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
21520: LD_ADDR_VAR 0 3
21524: PUSH
21525: LD_EXP 86
21529: PUSH
21530: LD_VAR 0 6
21534: ARRAY
21535: PUSH
21536: FOR_IN
21537: IFFALSE 21558
// UpdateBuildingBasicVariables ( base , i , true ) ;
21539: LD_VAR 0 6
21543: PPUSH
21544: LD_VAR 0 3
21548: PPUSH
21549: LD_INT 1
21551: PPUSH
21552: CALL 22547 0 3
21556: GO 21536
21558: POP
21559: POP
// temp_list = [ ] ;
21560: LD_ADDR_VAR 0 5
21564: PUSH
21565: EMPTY
21566: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
21567: LD_ADDR_VAR 0 3
21571: PUSH
21572: LD_EXP 86
21576: PUSH
21577: LD_VAR 0 6
21581: ARRAY
21582: PUSH
21583: FOR_IN
21584: IFFALSE 21750
// begin if base = 2 and InArea ( GetX ( i ) , GetY ( i ) , ru_scan2 ) then
21586: LD_VAR 0 6
21590: PUSH
21591: LD_INT 2
21593: EQUAL
21594: PUSH
21595: LD_VAR 0 3
21599: PPUSH
21600: CALL_OW 250
21604: PPUSH
21605: LD_VAR 0 3
21609: PPUSH
21610: CALL_OW 251
21614: PPUSH
21615: LD_INT 5
21617: PPUSH
21618: CALL_OW 309
21622: AND
21623: IFFALSE 21635
// n = 2 else
21625: LD_ADDR_VAR 0 10
21629: PUSH
21630: LD_INT 2
21632: ST_TO_ADDR
21633: GO 21643
// n = 1 ;
21635: LD_ADDR_VAR 0 10
21639: PUSH
21640: LD_INT 1
21642: ST_TO_ADDR
// temp_list = temp_list ^ [ [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetBType ( i ) , GetLabKind ( i , 1 ) , GetLabKind ( i , 2 ) , GetBWeapon ( i ) , n ] ] ;
21643: LD_ADDR_VAR 0 5
21647: PUSH
21648: LD_VAR 0 5
21652: PUSH
21653: LD_VAR 0 3
21657: PPUSH
21658: CALL_OW 250
21662: PUSH
21663: LD_VAR 0 3
21667: PPUSH
21668: CALL_OW 251
21672: PUSH
21673: LD_VAR 0 3
21677: PPUSH
21678: CALL_OW 254
21682: PUSH
21683: LD_VAR 0 3
21687: PPUSH
21688: CALL_OW 266
21692: PUSH
21693: LD_VAR 0 3
21697: PPUSH
21698: LD_INT 1
21700: PPUSH
21701: CALL_OW 268
21705: PUSH
21706: LD_VAR 0 3
21710: PPUSH
21711: LD_INT 2
21713: PPUSH
21714: CALL_OW 268
21718: PUSH
21719: LD_VAR 0 3
21723: PPUSH
21724: CALL_OW 269
21728: PUSH
21729: LD_VAR 0 10
21733: PUSH
21734: EMPTY
21735: LIST
21736: LIST
21737: LIST
21738: LIST
21739: LIST
21740: LIST
21741: LIST
21742: LIST
21743: PUSH
21744: EMPTY
21745: LIST
21746: ADD
21747: ST_TO_ADDR
// end ;
21748: GO 21583
21750: POP
21751: POP
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list ) ;
21752: LD_ADDR_EXP 71
21756: PUSH
21757: LD_EXP 71
21761: PPUSH
21762: LD_VAR 0 6
21766: PPUSH
21767: LD_VAR 0 5
21771: PPUSH
21772: CALL_OW 1
21776: ST_TO_ADDR
// SortBuildingLocationsListInCorrectOrder ( base ) ;
21777: LD_VAR 0 6
21781: PPUSH
21782: CALL 23788 0 1
// for i in ai_siberite_mines [ base ] ^ ai_oil_mine [ base ] ^ Hexinfo ( 28 , 17 ) ^ Hexinfo ( 172 , 10 ) do
21786: LD_ADDR_VAR 0 3
21790: PUSH
21791: LD_EXP 66
21795: PUSH
21796: LD_VAR 0 6
21800: ARRAY
21801: PUSH
21802: LD_EXP 65
21806: PUSH
21807: LD_VAR 0 6
21811: ARRAY
21812: ADD
21813: PUSH
21814: LD_INT 28
21816: PPUSH
21817: LD_INT 17
21819: PPUSH
21820: CALL_OW 428
21824: ADD
21825: PUSH
21826: LD_INT 172
21828: PPUSH
21829: LD_INT 10
21831: PPUSH
21832: CALL_OW 428
21836: ADD
21837: PUSH
21838: FOR_IN
21839: IFFALSE 21872
// SetResourceVisibility ( GetX ( i ) , GetY ( i ) , side ) ;
21841: LD_VAR 0 3
21845: PPUSH
21846: CALL_OW 250
21850: PPUSH
21851: LD_VAR 0 3
21855: PPUSH
21856: CALL_OW 251
21860: PPUSH
21861: LD_VAR 0 2
21865: PPUSH
21866: CALL_OW 441
21870: GO 21838
21872: POP
21873: POP
// end ;
21874: GO 21352
21876: POP
21877: POP
// ai_fact_extension_replace_locations = Replace ( ai_fact_extension_replace_locations , 1 , [ [ GetX ( le_rep_ext ) , GetY ( le_rep_ext ) ] ] ) ;
21878: LD_ADDR_EXP 108
21882: PUSH
21883: LD_EXP 108
21887: PPUSH
21888: LD_INT 1
21890: PPUSH
21891: LD_INT 859
21893: PPUSH
21894: CALL_OW 250
21898: PUSH
21899: LD_INT 859
21901: PPUSH
21902: CALL_OW 251
21906: PUSH
21907: EMPTY
21908: LIST
21909: LIST
21910: PUSH
21911: EMPTY
21912: LIST
21913: PPUSH
21914: CALL_OW 1
21918: ST_TO_ADDR
// temp = FilterAllUnits ( [ f_btype , b_teleport ] ) ;
21919: LD_ADDR_VAR 0 11
21923: PUSH
21924: LD_INT 30
21926: PUSH
21927: LD_INT 34
21929: PUSH
21930: EMPTY
21931: LIST
21932: LIST
21933: PPUSH
21934: CALL_OW 69
21938: ST_TO_ADDR
// if temp > 0 then
21939: LD_VAR 0 11
21943: PUSH
21944: LD_INT 0
21946: GREATER
21947: IFFALSE 21968
// TeleportExit ( temp [ 1 ] , 121 , 105 ) ;
21949: LD_VAR 0 11
21953: PUSH
21954: LD_INT 1
21956: ARRAY
21957: PPUSH
21958: LD_INT 121
21960: PPUSH
21961: LD_INT 105
21963: PPUSH
21964: CALL_OW 243
// if temp > 1 then
21968: LD_VAR 0 11
21972: PUSH
21973: LD_INT 1
21975: GREATER
21976: IFFALSE 21997
// TeleportExit ( temp [ 2 ] , 123 , 111 ) ;
21978: LD_VAR 0 11
21982: PUSH
21983: LD_INT 2
21985: ARRAY
21986: PPUSH
21987: LD_INT 123
21989: PPUSH
21990: LD_INT 111
21992: PPUSH
21993: CALL_OW 243
// temp = [ base_legion_minor , base_russians_minor , base_us_minor ] ;
21997: LD_ADDR_VAR 0 11
22001: PUSH
22002: LD_INT 7
22004: PUSH
22005: LD_INT 8
22007: PUSH
22008: LD_INT 6
22010: PUSH
22011: EMPTY
22012: LIST
22013: LIST
22014: LIST
22015: ST_TO_ADDR
// for i = 1 to temp do
22016: LD_ADDR_VAR 0 3
22020: PUSH
22021: DOUBLE
22022: LD_INT 1
22024: DEC
22025: ST_TO_ADDR
22026: LD_VAR 0 11
22030: PUSH
22031: FOR_TO
22032: IFFALSE 22359
// begin temp_list = [ ] ;
22034: LD_ADDR_VAR 0 5
22038: PUSH
22039: EMPTY
22040: ST_TO_ADDR
// for j in FilterAllUnits ( [ [ f_type , unit_building ] , [ f_inarea , temp [ i ] ] ] ) do
22041: LD_ADDR_VAR 0 4
22045: PUSH
22046: LD_INT 21
22048: PUSH
22049: LD_INT 3
22051: PUSH
22052: EMPTY
22053: LIST
22054: LIST
22055: PUSH
22056: LD_INT 95
22058: PUSH
22059: LD_VAR 0 11
22063: PUSH
22064: LD_VAR 0 3
22068: ARRAY
22069: PUSH
22070: EMPTY
22071: LIST
22072: LIST
22073: PUSH
22074: EMPTY
22075: LIST
22076: LIST
22077: PPUSH
22078: CALL_OW 69
22082: PUSH
22083: FOR_IN
22084: IFFALSE 22104
// temp_list = temp_list ^ j ;
22086: LD_ADDR_VAR 0 5
22090: PUSH
22091: LD_VAR 0 5
22095: PUSH
22096: LD_VAR 0 4
22100: ADD
22101: ST_TO_ADDR
22102: GO 22083
22104: POP
22105: POP
// temp_list = temp_list diff HexInfo ( 161 , 126 ) ;
22106: LD_ADDR_VAR 0 5
22110: PUSH
22111: LD_VAR 0 5
22115: PUSH
22116: LD_INT 161
22118: PPUSH
22119: LD_INT 126
22121: PPUSH
22122: CALL_OW 428
22126: DIFF
22127: ST_TO_ADDR
// mb_buildings = Replace ( mb_buildings , i , temp_list ) ;
22128: LD_ADDR_EXP 161
22132: PUSH
22133: LD_EXP 161
22137: PPUSH
22138: LD_VAR 0 3
22142: PPUSH
22143: LD_VAR 0 5
22147: PPUSH
22148: CALL_OW 1
22152: ST_TO_ADDR
// temp_list_2 = [ ] ;
22153: LD_ADDR_VAR 0 8
22157: PUSH
22158: EMPTY
22159: ST_TO_ADDR
// for j in temp_list do
22160: LD_ADDR_VAR 0 4
22164: PUSH
22165: LD_VAR 0 5
22169: PUSH
22170: FOR_IN
22171: IFFALSE 22355
// begin k = GetBType ( j ) ;
22173: LD_ADDR_VAR 0 9
22177: PUSH
22178: LD_VAR 0 4
22182: PPUSH
22183: CALL_OW 266
22187: ST_TO_ADDR
// case GetBType ( j ) of b_barracks :
22188: LD_VAR 0 4
22192: PPUSH
22193: CALL_OW 266
22197: PUSH
22198: LD_INT 5
22200: DOUBLE
22201: EQUAL
22202: IFTRUE 22206
22204: GO 22217
22206: POP
// k = b_armoury ; b_factory :
22207: LD_ADDR_VAR 0 9
22211: PUSH
22212: LD_INT 4
22214: ST_TO_ADDR
22215: GO 22262
22217: LD_INT 3
22219: DOUBLE
22220: EQUAL
22221: IFTRUE 22225
22223: GO 22236
22225: POP
// k = b_workshop ; b_lab_full , b_lab_half :
22226: LD_ADDR_VAR 0 9
22230: PUSH
22231: LD_INT 2
22233: ST_TO_ADDR
22234: GO 22262
22236: LD_INT 8
22238: DOUBLE
22239: EQUAL
22240: IFTRUE 22250
22242: LD_INT 7
22244: DOUBLE
22245: EQUAL
22246: IFTRUE 22250
22248: GO 22261
22250: POP
// k = b_lab ; end ;
22251: LD_ADDR_VAR 0 9
22255: PUSH
22256: LD_INT 6
22258: ST_TO_ADDR
22259: GO 22262
22261: POP
// temp_list_2 = temp_list_2 ^ [ [ GetX ( j ) , GetY ( j ) , GetDir ( j ) , k , GetBWeapon ( j ) ] ] ;
22262: LD_ADDR_VAR 0 8
22266: PUSH
22267: LD_VAR 0 8
22271: PUSH
22272: LD_VAR 0 4
22276: PPUSH
22277: CALL_OW 250
22281: PUSH
22282: LD_VAR 0 4
22286: PPUSH
22287: CALL_OW 251
22291: PUSH
22292: LD_VAR 0 4
22296: PPUSH
22297: CALL_OW 254
22301: PUSH
22302: LD_VAR 0 9
22306: PUSH
22307: LD_VAR 0 4
22311: PPUSH
22312: CALL_OW 269
22316: PUSH
22317: EMPTY
22318: LIST
22319: LIST
22320: LIST
22321: LIST
22322: LIST
22323: PUSH
22324: EMPTY
22325: LIST
22326: ADD
22327: ST_TO_ADDR
// mb_buildings_locations = Replace ( mb_buildings_locations , i , temp_list_2 ) ;
22328: LD_ADDR_EXP 162
22332: PUSH
22333: LD_EXP 162
22337: PPUSH
22338: LD_VAR 0 3
22342: PPUSH
22343: LD_VAR 0 8
22347: PPUSH
22348: CALL_OW 1
22352: ST_TO_ADDR
// end ;
22353: GO 22170
22355: POP
22356: POP
// end ;
22357: GO 22031
22359: POP
22360: POP
// end ;
22361: LD_VAR 0 1
22365: RET
// function ReplaceBunkerWithTurret ( id ) ; var un , temp_list ; begin
22366: LD_INT 0
22368: PPUSH
22369: PPUSH
22370: PPUSH
// InitUc ;
22371: CALL_OW 18
// InitBc ;
22375: CALL_OW 21
// uc_nation = GetNation ( id ) ;
22379: LD_ADDR_OWVAR 21
22383: PUSH
22384: LD_VAR 0 1
22388: PPUSH
22389: CALL_OW 248
22393: ST_TO_ADDR
// uc_side = GetSide ( id ) ;
22394: LD_ADDR_OWVAR 20
22398: PUSH
22399: LD_VAR 0 1
22403: PPUSH
22404: CALL_OW 255
22408: ST_TO_ADDR
// temp_list = [ GetX ( id ) , GetY ( id ) , GetDir ( id ) , GetBWeapon ( id ) ] ;
22409: LD_ADDR_VAR 0 4
22413: PUSH
22414: LD_VAR 0 1
22418: PPUSH
22419: CALL_OW 250
22423: PUSH
22424: LD_VAR 0 1
22428: PPUSH
22429: CALL_OW 251
22433: PUSH
22434: LD_VAR 0 1
22438: PPUSH
22439: CALL_OW 254
22443: PUSH
22444: LD_VAR 0 1
22448: PPUSH
22449: CALL_OW 269
22453: PUSH
22454: EMPTY
22455: LIST
22456: LIST
22457: LIST
22458: LIST
22459: ST_TO_ADDR
// DestroyUnit ( id ) ;
22460: LD_VAR 0 1
22464: PPUSH
22465: CALL_OW 65
// bc_type = b_turret ;
22469: LD_ADDR_OWVAR 42
22473: PUSH
22474: LD_INT 33
22476: ST_TO_ADDR
// un = CreateAndPlaceBuildingXYD ( temp_list [ 1 ] , temp_list [ 2 ] , temp_list [ 3 ] ) ;
22477: LD_ADDR_VAR 0 3
22481: PUSH
22482: LD_VAR 0 4
22486: PUSH
22487: LD_INT 1
22489: ARRAY
22490: PPUSH
22491: LD_VAR 0 4
22495: PUSH
22496: LD_INT 2
22498: ARRAY
22499: PPUSH
22500: LD_VAR 0 4
22504: PUSH
22505: LD_INT 3
22507: ARRAY
22508: PPUSH
22509: CALL_OW 47
22513: ST_TO_ADDR
// PlaceWeaponTurret ( un , temp_list [ 4 ] ) ;
22514: LD_VAR 0 3
22518: PPUSH
22519: LD_VAR 0 4
22523: PUSH
22524: LD_INT 4
22526: ARRAY
22527: PPUSH
22528: CALL_OW 431
// result = un ;
22532: LD_ADDR_VAR 0 2
22536: PUSH
22537: LD_VAR 0 3
22541: ST_TO_ADDR
// end ;
22542: LD_VAR 0 2
22546: RET
// export function UpdateBuildingBasicVariables ( base , un , add ) ; var temp_list ; begin
22547: LD_INT 0
22549: PPUSH
22550: PPUSH
// case GetBType ( un ) of b_depot , b_warehouse :
22551: LD_VAR 0 2
22555: PPUSH
22556: CALL_OW 266
22560: PUSH
22561: LD_INT 0
22563: DOUBLE
22564: EQUAL
22565: IFTRUE 22575
22567: LD_INT 1
22569: DOUBLE
22570: EQUAL
22571: IFTRUE 22575
22573: GO 22678
22575: POP
// if add then
22576: LD_VAR 0 3
22580: IFFALSE 22621
// ai_depots = Replace ( ai_depots , base , ai_depots [ base ] ^ un ) else
22582: LD_ADDR_EXP 59
22586: PUSH
22587: LD_EXP 59
22591: PPUSH
22592: LD_VAR 0 1
22596: PPUSH
22597: LD_EXP 59
22601: PUSH
22602: LD_VAR 0 1
22606: ARRAY
22607: PUSH
22608: LD_VAR 0 2
22612: ADD
22613: PPUSH
22614: CALL_OW 1
22618: ST_TO_ADDR
22619: GO 22676
// if un in ai_depots [ base ] then
22621: LD_VAR 0 2
22625: PUSH
22626: LD_EXP 59
22630: PUSH
22631: LD_VAR 0 1
22635: ARRAY
22636: IN
22637: IFFALSE 22676
// ai_depots = Replace ( ai_depots , base , ai_depots [ base ] diff un ) ; b_lab , b_lab_half , b_lab_full :
22639: LD_ADDR_EXP 59
22643: PUSH
22644: LD_EXP 59
22648: PPUSH
22649: LD_VAR 0 1
22653: PPUSH
22654: LD_EXP 59
22658: PUSH
22659: LD_VAR 0 1
22663: ARRAY
22664: PUSH
22665: LD_VAR 0 2
22669: DIFF
22670: PPUSH
22671: CALL_OW 1
22675: ST_TO_ADDR
22676: GO 23783
22678: LD_INT 6
22680: DOUBLE
22681: EQUAL
22682: IFTRUE 22698
22684: LD_INT 7
22686: DOUBLE
22687: EQUAL
22688: IFTRUE 22698
22690: LD_INT 8
22692: DOUBLE
22693: EQUAL
22694: IFTRUE 22698
22696: GO 22778
22698: POP
// begin if add then
22699: LD_VAR 0 3
22703: IFFALSE 22729
// temp_list = ai_labs [ base ] ^ un else
22705: LD_ADDR_VAR 0 5
22709: PUSH
22710: LD_EXP 60
22714: PUSH
22715: LD_VAR 0 1
22719: ARRAY
22720: PUSH
22721: LD_VAR 0 2
22725: ADD
22726: ST_TO_ADDR
22727: GO 22751
// temp_list = ai_labs [ base ] diff un ;
22729: LD_ADDR_VAR 0 5
22733: PUSH
22734: LD_EXP 60
22738: PUSH
22739: LD_VAR 0 1
22743: ARRAY
22744: PUSH
22745: LD_VAR 0 2
22749: DIFF
22750: ST_TO_ADDR
// ai_labs = Replace ( ai_labs , base , temp_list ) ;
22751: LD_ADDR_EXP 60
22755: PUSH
22756: LD_EXP 60
22760: PPUSH
22761: LD_VAR 0 1
22765: PPUSH
22766: LD_VAR 0 5
22770: PPUSH
22771: CALL_OW 1
22775: ST_TO_ADDR
// end ; b_factory , b_workshop :
22776: GO 23783
22778: LD_INT 3
22780: DOUBLE
22781: EQUAL
22782: IFTRUE 22792
22784: LD_INT 2
22786: DOUBLE
22787: EQUAL
22788: IFTRUE 22792
22790: GO 22872
22792: POP
// begin if add then
22793: LD_VAR 0 3
22797: IFFALSE 22823
// temp_list = ai_facts [ base ] ^ un else
22799: LD_ADDR_VAR 0 5
22803: PUSH
22804: LD_EXP 61
22808: PUSH
22809: LD_VAR 0 1
22813: ARRAY
22814: PUSH
22815: LD_VAR 0 2
22819: ADD
22820: ST_TO_ADDR
22821: GO 22845
// temp_list = ai_facts [ base ] diff un ;
22823: LD_ADDR_VAR 0 5
22827: PUSH
22828: LD_EXP 61
22832: PUSH
22833: LD_VAR 0 1
22837: ARRAY
22838: PUSH
22839: LD_VAR 0 2
22843: DIFF
22844: ST_TO_ADDR
// ai_facts = Replace ( ai_facts , base , temp_list ) ;
22845: LD_ADDR_EXP 61
22849: PUSH
22850: LD_EXP 61
22854: PPUSH
22855: LD_VAR 0 1
22859: PPUSH
22860: LD_VAR 0 5
22864: PPUSH
22865: CALL_OW 1
22869: ST_TO_ADDR
// end ; b_armoury , b_barracks , b_fort :
22870: GO 23783
22872: LD_INT 4
22874: DOUBLE
22875: EQUAL
22876: IFTRUE 22892
22878: LD_INT 5
22880: DOUBLE
22881: EQUAL
22882: IFTRUE 22892
22884: LD_INT 35
22886: DOUBLE
22887: EQUAL
22888: IFTRUE 22892
22890: GO 22972
22892: POP
// begin if add then
22893: LD_VAR 0 3
22897: IFFALSE 22923
// temp_list = ai_armouries [ base ] ^ un else
22899: LD_ADDR_VAR 0 5
22903: PUSH
22904: LD_EXP 62
22908: PUSH
22909: LD_VAR 0 1
22913: ARRAY
22914: PUSH
22915: LD_VAR 0 2
22919: ADD
22920: ST_TO_ADDR
22921: GO 22945
// temp_list = ai_armouries [ base ] diff un ;
22923: LD_ADDR_VAR 0 5
22927: PUSH
22928: LD_EXP 62
22932: PUSH
22933: LD_VAR 0 1
22937: ARRAY
22938: PUSH
22939: LD_VAR 0 2
22943: DIFF
22944: ST_TO_ADDR
// ai_armouries = Replace ( ai_armouries , base , temp_list ) ;
22945: LD_ADDR_EXP 62
22949: PUSH
22950: LD_EXP 62
22954: PPUSH
22955: LD_VAR 0 1
22959: PPUSH
22960: LD_VAR 0 5
22964: PPUSH
22965: CALL_OW 1
22969: ST_TO_ADDR
// end ; b_breastwork , b_bunker :
22970: GO 23783
22972: LD_INT 31
22974: DOUBLE
22975: EQUAL
22976: IFTRUE 22986
22978: LD_INT 32
22980: DOUBLE
22981: EQUAL
22982: IFTRUE 22986
22984: GO 23066
22986: POP
// begin if add then
22987: LD_VAR 0 3
22991: IFFALSE 23017
// temp_list = ai_bunkers [ base ] ^ un else
22993: LD_ADDR_VAR 0 5
22997: PUSH
22998: LD_EXP 63
23002: PUSH
23003: LD_VAR 0 1
23007: ARRAY
23008: PUSH
23009: LD_VAR 0 2
23013: ADD
23014: ST_TO_ADDR
23015: GO 23039
// temp_list = ai_bunkers [ base ] diff un ;
23017: LD_ADDR_VAR 0 5
23021: PUSH
23022: LD_EXP 63
23026: PUSH
23027: LD_VAR 0 1
23031: ARRAY
23032: PUSH
23033: LD_VAR 0 2
23037: DIFF
23038: ST_TO_ADDR
// ai_bunkers = Replace ( ai_bunkers , base , temp_list ) ;
23039: LD_ADDR_EXP 63
23043: PUSH
23044: LD_EXP 63
23048: PPUSH
23049: LD_VAR 0 1
23053: PPUSH
23054: LD_VAR 0 5
23058: PPUSH
23059: CALL_OW 1
23063: ST_TO_ADDR
// end ; b_turret :
23064: GO 23783
23066: LD_INT 33
23068: DOUBLE
23069: EQUAL
23070: IFTRUE 23074
23072: GO 23154
23074: POP
// begin if add then
23075: LD_VAR 0 3
23079: IFFALSE 23105
// temp_list = ai_turrets [ base ] ^ un else
23081: LD_ADDR_VAR 0 5
23085: PUSH
23086: LD_EXP 64
23090: PUSH
23091: LD_VAR 0 1
23095: ARRAY
23096: PUSH
23097: LD_VAR 0 2
23101: ADD
23102: ST_TO_ADDR
23103: GO 23127
// temp_list = ai_turrets [ base ] diff un ;
23105: LD_ADDR_VAR 0 5
23109: PUSH
23110: LD_EXP 64
23114: PUSH
23115: LD_VAR 0 1
23119: ARRAY
23120: PUSH
23121: LD_VAR 0 2
23125: DIFF
23126: ST_TO_ADDR
// ai_turrets = Replace ( ai_turrets , base , temp_list ) ;
23127: LD_ADDR_EXP 64
23131: PUSH
23132: LD_EXP 64
23136: PPUSH
23137: LD_VAR 0 1
23141: PPUSH
23142: LD_VAR 0 5
23146: PPUSH
23147: CALL_OW 1
23151: ST_TO_ADDR
// end ; b_oil_mine :
23152: GO 23783
23154: LD_INT 29
23156: DOUBLE
23157: EQUAL
23158: IFTRUE 23162
23160: GO 23239
23162: POP
// if add then
23163: LD_VAR 0 3
23167: IFFALSE 23196
// ai_oil_mine = Replace ( ai_oil_mine , base , un ) else
23169: LD_ADDR_EXP 65
23173: PUSH
23174: LD_EXP 65
23178: PPUSH
23179: LD_VAR 0 1
23183: PPUSH
23184: LD_VAR 0 2
23188: PPUSH
23189: CALL_OW 1
23193: ST_TO_ADDR
23194: GO 23237
// if un = ai_oil_mine [ base ] then
23196: LD_VAR 0 2
23200: PUSH
23201: LD_EXP 65
23205: PUSH
23206: LD_VAR 0 1
23210: ARRAY
23211: EQUAL
23212: IFFALSE 23237
// ai_oil_mine = Replace ( ai_oil_mine , base , 0 ) ; b_siberite_mine :
23214: LD_ADDR_EXP 65
23218: PUSH
23219: LD_EXP 65
23223: PPUSH
23224: LD_VAR 0 1
23228: PPUSH
23229: LD_INT 0
23231: PPUSH
23232: CALL_OW 1
23236: ST_TO_ADDR
23237: GO 23783
23239: LD_INT 30
23241: DOUBLE
23242: EQUAL
23243: IFTRUE 23247
23245: GO 23327
23247: POP
// begin if add then
23248: LD_VAR 0 3
23252: IFFALSE 23278
// temp_list = ai_siberite_mines [ base ] ^ un else
23254: LD_ADDR_VAR 0 5
23258: PUSH
23259: LD_EXP 66
23263: PUSH
23264: LD_VAR 0 1
23268: ARRAY
23269: PUSH
23270: LD_VAR 0 2
23274: ADD
23275: ST_TO_ADDR
23276: GO 23300
// temp_list = ai_siberite_mines [ base ] diff un ;
23278: LD_ADDR_VAR 0 5
23282: PUSH
23283: LD_EXP 66
23287: PUSH
23288: LD_VAR 0 1
23292: ARRAY
23293: PUSH
23294: LD_VAR 0 2
23298: DIFF
23299: ST_TO_ADDR
// ai_siberite_mines = Replace ( ai_siberite_mines , base , temp_list ) ;
23300: LD_ADDR_EXP 66
23304: PUSH
23305: LD_EXP 66
23309: PPUSH
23310: LD_VAR 0 1
23314: PPUSH
23315: LD_VAR 0 5
23319: PPUSH
23320: CALL_OW 1
23324: ST_TO_ADDR
// end ; b_ext_gun , b_ext_noncombat , b_ext_laser , b_ext_computer , b_ext_radar , b_ext_rocket , b_ext_siberium , b_ext_track , b_ext_stitch :
23325: GO 23783
23327: LD_INT 17
23329: DOUBLE
23330: EQUAL
23331: IFTRUE 23383
23333: LD_INT 19
23335: DOUBLE
23336: EQUAL
23337: IFTRUE 23383
23339: LD_INT 25
23341: DOUBLE
23342: EQUAL
23343: IFTRUE 23383
23345: LD_INT 24
23347: DOUBLE
23348: EQUAL
23349: IFTRUE 23383
23351: LD_INT 20
23353: DOUBLE
23354: EQUAL
23355: IFTRUE 23383
23357: LD_INT 18
23359: DOUBLE
23360: EQUAL
23361: IFTRUE 23383
23363: LD_INT 21
23365: DOUBLE
23366: EQUAL
23367: IFTRUE 23383
23369: LD_INT 16
23371: DOUBLE
23372: EQUAL
23373: IFTRUE 23383
23375: LD_INT 23
23377: DOUBLE
23378: EQUAL
23379: IFTRUE 23383
23381: GO 23463
23383: POP
// begin if add then
23384: LD_VAR 0 3
23388: IFFALSE 23414
// temp_list = ai_fact_extensions [ base ] ^ un else
23390: LD_ADDR_VAR 0 5
23394: PUSH
23395: LD_EXP 67
23399: PUSH
23400: LD_VAR 0 1
23404: ARRAY
23405: PUSH
23406: LD_VAR 0 2
23410: ADD
23411: ST_TO_ADDR
23412: GO 23436
// temp_list = ai_fact_extensions [ base ] diff un ;
23414: LD_ADDR_VAR 0 5
23418: PUSH
23419: LD_EXP 67
23423: PUSH
23424: LD_VAR 0 1
23428: ARRAY
23429: PUSH
23430: LD_VAR 0 2
23434: DIFF
23435: ST_TO_ADDR
// ai_fact_extensions = Replace ( ai_fact_extensions , base , temp_list ) ;
23436: LD_ADDR_EXP 67
23440: PUSH
23441: LD_EXP 67
23445: PPUSH
23446: LD_VAR 0 1
23450: PPUSH
23451: LD_VAR 0 5
23455: PPUSH
23456: CALL_OW 1
23460: ST_TO_ADDR
// end ; b_solar_power , b_oil_power , b_siberite_power :
23461: GO 23783
23463: LD_INT 27
23465: DOUBLE
23466: EQUAL
23467: IFTRUE 23483
23469: LD_INT 26
23471: DOUBLE
23472: EQUAL
23473: IFTRUE 23483
23475: LD_INT 28
23477: DOUBLE
23478: EQUAL
23479: IFTRUE 23483
23481: GO 23563
23483: POP
// begin if add then
23484: LD_VAR 0 3
23488: IFFALSE 23514
// temp_list = ai_power_plants [ base ] ^ un else
23490: LD_ADDR_VAR 0 5
23494: PUSH
23495: LD_EXP 68
23499: PUSH
23500: LD_VAR 0 1
23504: ARRAY
23505: PUSH
23506: LD_VAR 0 2
23510: ADD
23511: ST_TO_ADDR
23512: GO 23536
// temp_list = ai_power_plants [ base ] diff un ;
23514: LD_ADDR_VAR 0 5
23518: PUSH
23519: LD_EXP 68
23523: PUSH
23524: LD_VAR 0 1
23528: ARRAY
23529: PUSH
23530: LD_VAR 0 2
23534: DIFF
23535: ST_TO_ADDR
// ai_power_plants = Replace ( ai_power_plants , base , temp_list ) ;
23536: LD_ADDR_EXP 68
23540: PUSH
23541: LD_EXP 68
23545: PPUSH
23546: LD_VAR 0 1
23550: PPUSH
23551: LD_VAR 0 5
23555: PPUSH
23556: CALL_OW 1
23560: ST_TO_ADDR
// end ; b_control_tower :
23561: GO 23783
23563: LD_INT 36
23565: DOUBLE
23566: EQUAL
23567: IFTRUE 23571
23569: GO 23651
23571: POP
// begin if add then
23572: LD_VAR 0 3
23576: IFFALSE 23602
// temp_list = ai_control_tower [ base ] ^ un else
23578: LD_ADDR_VAR 0 5
23582: PUSH
23583: LD_EXP 69
23587: PUSH
23588: LD_VAR 0 1
23592: ARRAY
23593: PUSH
23594: LD_VAR 0 2
23598: ADD
23599: ST_TO_ADDR
23600: GO 23624
// temp_list = ai_control_tower [ base ] diff un ;
23602: LD_ADDR_VAR 0 5
23606: PUSH
23607: LD_EXP 69
23611: PUSH
23612: LD_VAR 0 1
23616: ARRAY
23617: PUSH
23618: LD_VAR 0 2
23622: DIFF
23623: ST_TO_ADDR
// ai_control_tower = Replace ( ai_control_tower , base , temp_list ) ;
23624: LD_ADDR_EXP 69
23628: PUSH
23629: LD_EXP 69
23633: PPUSH
23634: LD_VAR 0 1
23638: PPUSH
23639: LD_VAR 0 5
23643: PPUSH
23644: CALL_OW 1
23648: ST_TO_ADDR
// end ; b_teleport :
23649: GO 23783
23651: LD_INT 34
23653: DOUBLE
23654: EQUAL
23655: IFTRUE 23659
23657: GO 23782
23659: POP
// begin if add then
23660: LD_VAR 0 3
23664: IFFALSE 23716
// begin ai_teleporter = Replace ( ai_teleporter , base , un ) ;
23666: LD_ADDR_EXP 70
23670: PUSH
23671: LD_EXP 70
23675: PPUSH
23676: LD_VAR 0 1
23680: PPUSH
23681: LD_VAR 0 2
23685: PPUSH
23686: CALL_OW 1
23690: ST_TO_ADDR
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , base , false ) ;
23691: LD_ADDR_EXP 106
23695: PUSH
23696: LD_EXP 106
23700: PPUSH
23701: LD_VAR 0 1
23705: PPUSH
23706: LD_INT 0
23708: PPUSH
23709: CALL_OW 1
23713: ST_TO_ADDR
// end else
23714: GO 23780
// if un = ai_teleporter [ base ] then
23716: LD_VAR 0 2
23720: PUSH
23721: LD_EXP 70
23725: PUSH
23726: LD_VAR 0 1
23730: ARRAY
23731: EQUAL
23732: IFFALSE 23780
// begin ai_teleporter = Replace ( ai_teleporter , base , 0 ) ;
23734: LD_ADDR_EXP 70
23738: PUSH
23739: LD_EXP 70
23743: PPUSH
23744: LD_VAR 0 1
23748: PPUSH
23749: LD_INT 0
23751: PPUSH
23752: CALL_OW 1
23756: ST_TO_ADDR
// ai_teleporter_exit_placed = Replace ( ai_teleporter_exit_placed , base , false ) ;
23757: LD_ADDR_EXP 106
23761: PUSH
23762: LD_EXP 106
23766: PPUSH
23767: LD_VAR 0 1
23771: PPUSH
23772: LD_INT 0
23774: PPUSH
23775: CALL_OW 1
23779: ST_TO_ADDR
// end ; end ; end ;
23780: GO 23783
23782: POP
// end ;
23783: LD_VAR 0 4
23787: RET
// export function SortBuildingLocationsListInCorrectOrder ( base ) ; var i , temp_list , p ; begin
23788: LD_INT 0
23790: PPUSH
23791: PPUSH
23792: PPUSH
23793: PPUSH
// temp_list = [ ] ;
23794: LD_ADDR_VAR 0 4
23798: PUSH
23799: EMPTY
23800: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
23801: LD_ADDR_VAR 0 3
23805: PUSH
23806: LD_EXP 71
23810: PUSH
23811: LD_VAR 0 1
23815: ARRAY
23816: PUSH
23817: FOR_IN
23818: IFFALSE 24191
// begin case i [ 4 ] of b_depot , b_warehouse :
23820: LD_VAR 0 3
23824: PUSH
23825: LD_INT 4
23827: ARRAY
23828: PUSH
23829: LD_INT 0
23831: DOUBLE
23832: EQUAL
23833: IFTRUE 23843
23835: LD_INT 1
23837: DOUBLE
23838: EQUAL
23839: IFTRUE 23843
23841: GO 23854
23843: POP
// p = 100 ; b_armoury , b_barracks , b_fort :
23844: LD_ADDR_VAR 0 5
23848: PUSH
23849: LD_INT 100
23851: ST_TO_ADDR
23852: GO 24173
23854: LD_INT 4
23856: DOUBLE
23857: EQUAL
23858: IFTRUE 23874
23860: LD_INT 5
23862: DOUBLE
23863: EQUAL
23864: IFTRUE 23874
23866: LD_INT 35
23868: DOUBLE
23869: EQUAL
23870: IFTRUE 23874
23872: GO 23885
23874: POP
// p = 99 ; b_solar_power , b_oil_power , b_siberite_power :
23875: LD_ADDR_VAR 0 5
23879: PUSH
23880: LD_INT 99
23882: ST_TO_ADDR
23883: GO 24173
23885: LD_INT 27
23887: DOUBLE
23888: EQUAL
23889: IFTRUE 23905
23891: LD_INT 26
23893: DOUBLE
23894: EQUAL
23895: IFTRUE 23905
23897: LD_INT 28
23899: DOUBLE
23900: EQUAL
23901: IFTRUE 23905
23903: GO 23916
23905: POP
// p = 98 ; b_breastwork :
23906: LD_ADDR_VAR 0 5
23910: PUSH
23911: LD_INT 98
23913: ST_TO_ADDR
23914: GO 24173
23916: LD_INT 31
23918: DOUBLE
23919: EQUAL
23920: IFTRUE 23924
23922: GO 23935
23924: POP
// p = 97 ; b_factory , b_workshop :
23925: LD_ADDR_VAR 0 5
23929: PUSH
23930: LD_INT 97
23932: ST_TO_ADDR
23933: GO 24173
23935: LD_INT 3
23937: DOUBLE
23938: EQUAL
23939: IFTRUE 23949
23941: LD_INT 2
23943: DOUBLE
23944: EQUAL
23945: IFTRUE 23949
23947: GO 23960
23949: POP
// p = 96 ; b_ext_gun , b_ext_noncombat , b_ext_laser , b_ext_computer , b_ext_radar , b_ext_rocket , b_ext_siberium , b_ext_track , b_ext_stitch :
23950: LD_ADDR_VAR 0 5
23954: PUSH
23955: LD_INT 96
23957: ST_TO_ADDR
23958: GO 24173
23960: LD_INT 17
23962: DOUBLE
23963: EQUAL
23964: IFTRUE 24016
23966: LD_INT 19
23968: DOUBLE
23969: EQUAL
23970: IFTRUE 24016
23972: LD_INT 25
23974: DOUBLE
23975: EQUAL
23976: IFTRUE 24016
23978: LD_INT 24
23980: DOUBLE
23981: EQUAL
23982: IFTRUE 24016
23984: LD_INT 20
23986: DOUBLE
23987: EQUAL
23988: IFTRUE 24016
23990: LD_INT 18
23992: DOUBLE
23993: EQUAL
23994: IFTRUE 24016
23996: LD_INT 21
23998: DOUBLE
23999: EQUAL
24000: IFTRUE 24016
24002: LD_INT 16
24004: DOUBLE
24005: EQUAL
24006: IFTRUE 24016
24008: LD_INT 23
24010: DOUBLE
24011: EQUAL
24012: IFTRUE 24016
24014: GO 24027
24016: POP
// p = 95 ; b_bunker :
24017: LD_ADDR_VAR 0 5
24021: PUSH
24022: LD_INT 95
24024: ST_TO_ADDR
24025: GO 24173
24027: LD_INT 32
24029: DOUBLE
24030: EQUAL
24031: IFTRUE 24035
24033: GO 24046
24035: POP
// p = 94 ; b_control_tower :
24036: LD_ADDR_VAR 0 5
24040: PUSH
24041: LD_INT 94
24043: ST_TO_ADDR
24044: GO 24173
24046: LD_INT 36
24048: DOUBLE
24049: EQUAL
24050: IFTRUE 24054
24052: GO 24065
24054: POP
// p = 93 ; b_turret :
24055: LD_ADDR_VAR 0 5
24059: PUSH
24060: LD_INT 93
24062: ST_TO_ADDR
24063: GO 24173
24065: LD_INT 33
24067: DOUBLE
24068: EQUAL
24069: IFTRUE 24073
24071: GO 24084
24073: POP
// p = 92 ; b_lab , b_lab_half , b_lab_full :
24074: LD_ADDR_VAR 0 5
24078: PUSH
24079: LD_INT 92
24081: ST_TO_ADDR
24082: GO 24173
24084: LD_INT 6
24086: DOUBLE
24087: EQUAL
24088: IFTRUE 24104
24090: LD_INT 7
24092: DOUBLE
24093: EQUAL
24094: IFTRUE 24104
24096: LD_INT 8
24098: DOUBLE
24099: EQUAL
24100: IFTRUE 24104
24102: GO 24115
24104: POP
// p = 91 ; b_teleport :
24105: LD_ADDR_VAR 0 5
24109: PUSH
24110: LD_INT 91
24112: ST_TO_ADDR
24113: GO 24173
24115: LD_INT 34
24117: DOUBLE
24118: EQUAL
24119: IFTRUE 24123
24121: GO 24134
24123: POP
// p = 90 ; b_siberite_mine :
24124: LD_ADDR_VAR 0 5
24128: PUSH
24129: LD_INT 90
24131: ST_TO_ADDR
24132: GO 24173
24134: LD_INT 30
24136: DOUBLE
24137: EQUAL
24138: IFTRUE 24142
24140: GO 24153
24142: POP
// p = 89 ; b_oil_mine :
24143: LD_ADDR_VAR 0 5
24147: PUSH
24148: LD_INT 89
24150: ST_TO_ADDR
24151: GO 24173
24153: LD_INT 29
24155: DOUBLE
24156: EQUAL
24157: IFTRUE 24161
24159: GO 24172
24161: POP
// p = 88 ; end ;
24162: LD_ADDR_VAR 0 5
24166: PUSH
24167: LD_INT 88
24169: ST_TO_ADDR
24170: GO 24173
24172: POP
// temp_list = temp_list ^ p ;
24173: LD_ADDR_VAR 0 4
24177: PUSH
24178: LD_VAR 0 4
24182: PUSH
24183: LD_VAR 0 5
24187: ADD
24188: ST_TO_ADDR
// end ;
24189: GO 23817
24191: POP
24192: POP
// temp_list = SortListByListDesc ( ai_buildings_locations [ base ] , temp_list ) ;
24193: LD_ADDR_VAR 0 4
24197: PUSH
24198: LD_EXP 71
24202: PUSH
24203: LD_VAR 0 1
24207: ARRAY
24208: PPUSH
24209: LD_VAR 0 4
24213: PPUSH
24214: CALL_OW 77
24218: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list ) ;
24219: LD_ADDR_EXP 71
24223: PUSH
24224: LD_EXP 71
24228: PPUSH
24229: LD_VAR 0 1
24233: PPUSH
24234: LD_VAR 0 4
24238: PPUSH
24239: CALL_OW 1
24243: ST_TO_ADDR
// end ;
24244: LD_VAR 0 2
24248: RET
// function PrepareComputerSides ; var i , j , temp_list , temp_list2 , temp , side , base , num , nation ; var engine , chassis , weapon ; begin
24249: LD_INT 0
24251: PPUSH
24252: PPUSH
24253: PPUSH
24254: PPUSH
24255: PPUSH
24256: PPUSH
24257: PPUSH
24258: PPUSH
24259: PPUSH
24260: PPUSH
24261: PPUSH
24262: PPUSH
24263: PPUSH
// Randomize ;
24264: CALL_OW 10
// for base in ai_bases do
24268: LD_ADDR_VAR 0 8
24272: PUSH
24273: LD_EXP 49
24277: PUSH
24278: FOR_IN
24279: IFFALSE 25738
// begin side = GetBaseSide ( base ) ;
24281: LD_ADDR_VAR 0 7
24285: PUSH
24286: LD_VAR 0 8
24290: PPUSH
24291: CALL 40471 0 1
24295: ST_TO_ADDR
// nation = GetBaseNation ( base ) ;
24296: LD_ADDR_VAR 0 10
24300: PUSH
24301: LD_VAR 0 8
24305: PPUSH
24306: CALL 40548 0 1
24310: ST_TO_ADDR
// InitUc ;
24311: CALL_OW 18
// InitHc ;
24315: CALL_OW 19
// uc_side = side ;
24319: LD_ADDR_OWVAR 20
24323: PUSH
24324: LD_VAR 0 7
24328: ST_TO_ADDR
// uc_nation = nation ;
24329: LD_ADDR_OWVAR 21
24333: PUSH
24334: LD_VAR 0 10
24338: ST_TO_ADDR
// case base of 1 :
24339: LD_VAR 0 8
24343: PUSH
24344: LD_INT 1
24346: DOUBLE
24347: EQUAL
24348: IFTRUE 24352
24350: GO 24571
24352: POP
// begin case difficulty of 1 :
24353: LD_OWVAR 67
24357: PUSH
24358: LD_INT 1
24360: DOUBLE
24361: EQUAL
24362: IFTRUE 24366
24364: GO 24433
24366: POP
// temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] * 0.3 , class_soldier , base ) ^ CreateApemenWithClass ( ai_bunkers [ base ] * 0.7 , class_apeman_soldier , base ) ; 2 , 3 :
24367: LD_ADDR_VAR 0 4
24371: PUSH
24372: LD_EXP 63
24376: PUSH
24377: LD_VAR 0 8
24381: ARRAY
24382: PUSH
24383: LD_REAL  3.00000000000000E-0001
24386: MUL
24387: PPUSH
24388: LD_INT 1
24390: PPUSH
24391: LD_VAR 0 8
24395: PPUSH
24396: CALL 31780 0 3
24400: PUSH
24401: LD_EXP 63
24405: PUSH
24406: LD_VAR 0 8
24410: ARRAY
24411: PUSH
24412: LD_REAL  7.00000000000000E-0001
24415: MUL
24416: PPUSH
24417: LD_INT 15
24419: PPUSH
24420: LD_VAR 0 8
24424: PPUSH
24425: CALL 31915 0 3
24429: ADD
24430: ST_TO_ADDR
24431: GO 24513
24433: LD_INT 2
24435: DOUBLE
24436: EQUAL
24437: IFTRUE 24447
24439: LD_INT 3
24441: DOUBLE
24442: EQUAL
24443: IFTRUE 24447
24445: GO 24512
24447: POP
// temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] / 2 , class_soldier , base ) ^ CreateApemenWithClass ( ai_bunkers [ base ] / 2 , class_apeman_soldier , base ) ; end ;
24448: LD_ADDR_VAR 0 4
24452: PUSH
24453: LD_EXP 63
24457: PUSH
24458: LD_VAR 0 8
24462: ARRAY
24463: PUSH
24464: LD_INT 2
24466: DIVREAL
24467: PPUSH
24468: LD_INT 1
24470: PPUSH
24471: LD_VAR 0 8
24475: PPUSH
24476: CALL 31780 0 3
24480: PUSH
24481: LD_EXP 63
24485: PUSH
24486: LD_VAR 0 8
24490: ARRAY
24491: PUSH
24492: LD_INT 2
24494: DIVREAL
24495: PPUSH
24496: LD_INT 15
24498: PPUSH
24499: LD_VAR 0 8
24503: PPUSH
24504: CALL 31915 0 3
24508: ADD
24509: ST_TO_ADDR
24510: GO 24513
24512: POP
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * ai_armouries [ base ] , class_mortar , base ) ^ temp_list ;
24513: LD_ADDR_VAR 0 4
24517: PUSH
24518: LD_INT 4
24520: PUSH
24521: LD_INT 5
24523: PUSH
24524: LD_INT 6
24526: PUSH
24527: EMPTY
24528: LIST
24529: LIST
24530: LIST
24531: PUSH
24532: LD_OWVAR 67
24536: ARRAY
24537: PUSH
24538: LD_EXP 62
24542: PUSH
24543: LD_VAR 0 8
24547: ARRAY
24548: MUL
24549: PPUSH
24550: LD_INT 8
24552: PPUSH
24553: LD_VAR 0 8
24557: PPUSH
24558: CALL 31780 0 3
24562: PUSH
24563: LD_VAR 0 4
24567: ADD
24568: ST_TO_ADDR
// end ; 2 :
24569: GO 24764
24571: LD_INT 2
24573: DOUBLE
24574: EQUAL
24575: IFTRUE 24579
24577: GO 24667
24579: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
24580: LD_ADDR_VAR 0 4
24584: PUSH
24585: LD_EXP 63
24589: PUSH
24590: LD_VAR 0 8
24594: ARRAY
24595: PPUSH
24596: LD_INT 1
24598: PPUSH
24599: LD_VAR 0 8
24603: PPUSH
24604: CALL 31780 0 3
24608: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * ai_armouries [ base ] , class_bazooker , base ) ^ temp_list ;
24609: LD_ADDR_VAR 0 4
24613: PUSH
24614: LD_INT 4
24616: PUSH
24617: LD_INT 5
24619: PUSH
24620: LD_INT 6
24622: PUSH
24623: EMPTY
24624: LIST
24625: LIST
24626: LIST
24627: PUSH
24628: LD_OWVAR 67
24632: ARRAY
24633: PUSH
24634: LD_EXP 62
24638: PUSH
24639: LD_VAR 0 8
24643: ARRAY
24644: MUL
24645: PPUSH
24646: LD_INT 9
24648: PPUSH
24649: LD_VAR 0 8
24653: PPUSH
24654: CALL 31780 0 3
24658: PUSH
24659: LD_VAR 0 4
24663: ADD
24664: ST_TO_ADDR
// end ; 3 :
24665: GO 24764
24667: LD_INT 3
24669: DOUBLE
24670: EQUAL
24671: IFTRUE 24675
24673: GO 24763
24675: POP
// begin temp_list = CreateUnitsWithClass ( ai_bunkers [ base ] , class_soldier , base ) ;
24676: LD_ADDR_VAR 0 4
24680: PUSH
24681: LD_EXP 63
24685: PUSH
24686: LD_VAR 0 8
24690: ARRAY
24691: PPUSH
24692: LD_INT 1
24694: PPUSH
24695: LD_VAR 0 8
24699: PPUSH
24700: CALL 31780 0 3
24704: ST_TO_ADDR
// temp_list = CreateUnitsWithClass ( [ 4 , 5 , 6 ] [ difficulty ] * ai_armouries [ base ] , class_sniper , base ) ^ temp_list ;
24705: LD_ADDR_VAR 0 4
24709: PUSH
24710: LD_INT 4
24712: PUSH
24713: LD_INT 5
24715: PUSH
24716: LD_INT 6
24718: PUSH
24719: EMPTY
24720: LIST
24721: LIST
24722: LIST
24723: PUSH
24724: LD_OWVAR 67
24728: ARRAY
24729: PUSH
24730: LD_EXP 62
24734: PUSH
24735: LD_VAR 0 8
24739: ARRAY
24740: MUL
24741: PPUSH
24742: LD_INT 5
24744: PPUSH
24745: LD_VAR 0 8
24749: PPUSH
24750: CALL 31780 0 3
24754: PUSH
24755: LD_VAR 0 4
24759: ADD
24760: ST_TO_ADDR
// end ; end ;
24761: GO 24764
24763: POP
// ai_soldiers = Replace ( ai_soldiers , base , temp_list ) ;
24764: LD_ADDR_EXP 50
24768: PUSH
24769: LD_EXP 50
24773: PPUSH
24774: LD_VAR 0 8
24778: PPUSH
24779: LD_VAR 0 4
24783: PPUSH
24784: CALL_OW 1
24788: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_soldiers [ base ] , ai_armouries [ base ] ) ;
24789: LD_VAR 0 8
24793: PPUSH
24794: LD_EXP 50
24798: PUSH
24799: LD_VAR 0 8
24803: ARRAY
24804: PPUSH
24805: LD_EXP 62
24809: PUSH
24810: LD_VAR 0 8
24814: ARRAY
24815: PPUSH
24816: CALL 32096 0 3
// temp = 0 ;
24820: LD_ADDR_VAR 0 6
24824: PUSH
24825: LD_INT 0
24827: ST_TO_ADDR
// for i in ai_soldiers [ base ] do
24828: LD_ADDR_VAR 0 2
24832: PUSH
24833: LD_EXP 50
24837: PUSH
24838: LD_VAR 0 8
24842: ARRAY
24843: PUSH
24844: FOR_IN
24845: IFFALSE 24863
// temp = temp + 1 ;
24847: LD_ADDR_VAR 0 6
24851: PUSH
24852: LD_VAR 0 6
24856: PUSH
24857: LD_INT 1
24859: PLUS
24860: ST_TO_ADDR
24861: GO 24844
24863: POP
24864: POP
// if base = 1 then
24865: LD_VAR 0 8
24869: PUSH
24870: LD_INT 1
24872: EQUAL
24873: IFFALSE 24891
// InitialSoldierCount = InitialSoldierCount ^ 100 else
24875: LD_ADDR_EXP 195
24879: PUSH
24880: LD_EXP 195
24884: PUSH
24885: LD_INT 100
24887: ADD
24888: ST_TO_ADDR
24889: GO 24907
// InitialSoldierCount = InitialSoldierCount ^ temp ;
24891: LD_ADDR_EXP 195
24895: PUSH
24896: LD_EXP 195
24900: PUSH
24901: LD_VAR 0 6
24905: ADD
24906: ST_TO_ADDR
// ai_engineers = Replace ( ai_engineers , base , CreateUnitsWithClass ( [ [ 4 , 5 , 6 ] [ difficulty ] , [ 6 , 8 , 10 ] [ difficulty ] , [ 4 , 5 , 6 ] [ difficulty ] ] [ base ] , class_engineer , base ) ) ;
24907: LD_ADDR_EXP 52
24911: PUSH
24912: LD_EXP 52
24916: PPUSH
24917: LD_VAR 0 8
24921: PPUSH
24922: LD_INT 4
24924: PUSH
24925: LD_INT 5
24927: PUSH
24928: LD_INT 6
24930: PUSH
24931: EMPTY
24932: LIST
24933: LIST
24934: LIST
24935: PUSH
24936: LD_OWVAR 67
24940: ARRAY
24941: PUSH
24942: LD_INT 6
24944: PUSH
24945: LD_INT 8
24947: PUSH
24948: LD_INT 10
24950: PUSH
24951: EMPTY
24952: LIST
24953: LIST
24954: LIST
24955: PUSH
24956: LD_OWVAR 67
24960: ARRAY
24961: PUSH
24962: LD_INT 4
24964: PUSH
24965: LD_INT 5
24967: PUSH
24968: LD_INT 6
24970: PUSH
24971: EMPTY
24972: LIST
24973: LIST
24974: LIST
24975: PUSH
24976: LD_OWVAR 67
24980: ARRAY
24981: PUSH
24982: EMPTY
24983: LIST
24984: LIST
24985: LIST
24986: PUSH
24987: LD_VAR 0 8
24991: ARRAY
24992: PPUSH
24993: LD_INT 2
24995: PPUSH
24996: LD_VAR 0 8
25000: PPUSH
25001: CALL 31780 0 3
25005: PPUSH
25006: CALL_OW 1
25010: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_engineers [ base ] , ai_depots [ base ] ) ;
25011: LD_VAR 0 8
25015: PPUSH
25016: LD_EXP 52
25020: PUSH
25021: LD_VAR 0 8
25025: ARRAY
25026: PPUSH
25027: LD_EXP 59
25031: PUSH
25032: LD_VAR 0 8
25036: ARRAY
25037: PPUSH
25038: CALL 32096 0 3
// temp_list = [ ] ;
25042: LD_ADDR_VAR 0 4
25046: PUSH
25047: EMPTY
25048: ST_TO_ADDR
// for i in ai_engineers [ base ] do
25049: LD_ADDR_VAR 0 2
25053: PUSH
25054: LD_EXP 52
25058: PUSH
25059: LD_VAR 0 8
25063: ARRAY
25064: PUSH
25065: FOR_IN
25066: IFFALSE 25094
// temp_list = temp_list ^ GetSkill ( i , skill_engineering ) ;
25068: LD_ADDR_VAR 0 4
25072: PUSH
25073: LD_VAR 0 4
25077: PUSH
25078: LD_VAR 0 2
25082: PPUSH
25083: LD_INT 2
25085: PPUSH
25086: CALL_OW 259
25090: ADD
25091: ST_TO_ADDR
25092: GO 25065
25094: POP
25095: POP
// num = BestFromListByList ( temp_list , temp_list ) ;
25096: LD_ADDR_VAR 0 9
25100: PUSH
25101: LD_VAR 0 4
25105: PPUSH
25106: LD_VAR 0 4
25110: PPUSH
25111: CALL_OW 79
25115: ST_TO_ADDR
// for i in ai_all_buildings [ base ] do
25116: LD_ADDR_VAR 0 2
25120: PUSH
25121: LD_EXP 86
25125: PUSH
25126: LD_VAR 0 8
25130: ARRAY
25131: PUSH
25132: FOR_IN
25133: IFFALSE 25151
// SetBLevel ( i , num ) ;
25135: LD_VAR 0 2
25139: PPUSH
25140: LD_VAR 0 9
25144: PPUSH
25145: CALL_OW 241
25149: GO 25132
25151: POP
25152: POP
// ai_apemen_engineers = Replace ( ai_apemen_engineers , base , CreateApemenWithClass ( [ 0 , [ 0 , 1 , 2 ] [ difficulty ] , [ 0 , 1 , 2 ] [ difficulty ] ] [ base ] , class_apeman_engineer , base ) ) ;
25153: LD_ADDR_EXP 57
25157: PUSH
25158: LD_EXP 57
25162: PPUSH
25163: LD_VAR 0 8
25167: PPUSH
25168: LD_INT 0
25170: PUSH
25171: LD_INT 0
25173: PUSH
25174: LD_INT 1
25176: PUSH
25177: LD_INT 2
25179: PUSH
25180: EMPTY
25181: LIST
25182: LIST
25183: LIST
25184: PUSH
25185: LD_OWVAR 67
25189: ARRAY
25190: PUSH
25191: LD_INT 0
25193: PUSH
25194: LD_INT 1
25196: PUSH
25197: LD_INT 2
25199: PUSH
25200: EMPTY
25201: LIST
25202: LIST
25203: LIST
25204: PUSH
25205: LD_OWVAR 67
25209: ARRAY
25210: PUSH
25211: EMPTY
25212: LIST
25213: LIST
25214: LIST
25215: PUSH
25216: LD_VAR 0 8
25220: ARRAY
25221: PPUSH
25222: LD_INT 16
25224: PPUSH
25225: LD_VAR 0 8
25229: PPUSH
25230: CALL 31915 0 3
25234: PPUSH
25235: CALL_OW 1
25239: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_apemen_engineers [ base ] , ai_depots [ base ] ) ;
25240: LD_VAR 0 8
25244: PPUSH
25245: LD_EXP 57
25249: PUSH
25250: LD_VAR 0 8
25254: ARRAY
25255: PPUSH
25256: LD_EXP 59
25260: PUSH
25261: LD_VAR 0 8
25265: ARRAY
25266: PPUSH
25267: CALL 32096 0 3
// num = [ 13 , 9 , 15 ] [ base ] ;
25271: LD_ADDR_VAR 0 9
25275: PUSH
25276: LD_INT 13
25278: PUSH
25279: LD_INT 9
25281: PUSH
25282: LD_INT 15
25284: PUSH
25285: EMPTY
25286: LIST
25287: LIST
25288: LIST
25289: PUSH
25290: LD_VAR 0 8
25294: ARRAY
25295: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , base , CreateUnitsWithClass ( num , class_mechanic , base ) ) ;
25296: LD_ADDR_EXP 53
25300: PUSH
25301: LD_EXP 53
25305: PPUSH
25306: LD_VAR 0 8
25310: PPUSH
25311: LD_VAR 0 9
25315: PPUSH
25316: LD_INT 3
25318: PPUSH
25319: LD_VAR 0 8
25323: PPUSH
25324: CALL 31780 0 3
25328: PPUSH
25329: CALL_OW 1
25333: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_mechanics_defend [ base ] , ai_facts [ base ] diff ai_sib_bomb_fact [ base ] ) ;
25334: LD_VAR 0 8
25338: PPUSH
25339: LD_EXP 53
25343: PUSH
25344: LD_VAR 0 8
25348: ARRAY
25349: PPUSH
25350: LD_EXP 61
25354: PUSH
25355: LD_VAR 0 8
25359: ARRAY
25360: PUSH
25361: LD_EXP 73
25365: PUSH
25366: LD_VAR 0 8
25370: ARRAY
25371: DIFF
25372: PPUSH
25373: CALL 32096 0 3
// ai_sib_bomb_mechanics = Replace ( ai_sib_bomb_mechanics , base , CreateUnitsWithClass ( [ 3 , 6 , 0 ] [ base ] , class_mechanic , base ) ) ;
25377: LD_ADDR_EXP 75
25381: PUSH
25382: LD_EXP 75
25386: PPUSH
25387: LD_VAR 0 8
25391: PPUSH
25392: LD_INT 3
25394: PUSH
25395: LD_INT 6
25397: PUSH
25398: LD_INT 0
25400: PUSH
25401: EMPTY
25402: LIST
25403: LIST
25404: LIST
25405: PUSH
25406: LD_VAR 0 8
25410: ARRAY
25411: PPUSH
25412: LD_INT 3
25414: PPUSH
25415: LD_VAR 0 8
25419: PPUSH
25420: CALL 31780 0 3
25424: PPUSH
25425: CALL_OW 1
25429: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_sib_bomb_mechanics [ base ] , ai_sib_bomb_fact [ base ] ) ;
25430: LD_VAR 0 8
25434: PPUSH
25435: LD_EXP 75
25439: PUSH
25440: LD_VAR 0 8
25444: ARRAY
25445: PPUSH
25446: LD_EXP 73
25450: PUSH
25451: LD_VAR 0 8
25455: ARRAY
25456: PPUSH
25457: CALL 32096 0 3
// for i in ai_sib_bomb_mechanics [ base ] do
25461: LD_ADDR_VAR 0 2
25465: PUSH
25466: LD_EXP 75
25470: PUSH
25471: LD_VAR 0 8
25475: ARRAY
25476: PUSH
25477: FOR_IN
25478: IFFALSE 25497
// SetSkill ( i , skill_mechanical , 10 ) ;
25480: LD_VAR 0 2
25484: PPUSH
25485: LD_INT 3
25487: PPUSH
25488: LD_INT 10
25490: PPUSH
25491: CALL_OW 237
25495: GO 25477
25497: POP
25498: POP
// num = [ [ 8 , 10 , 12 ] [ difficulty ] , [ 12 , 14 , 16 ] [ difficulty ] , [ 8 , 10 , 12 ] [ difficulty ] ] [ base ] ;
25499: LD_ADDR_VAR 0 9
25503: PUSH
25504: LD_INT 8
25506: PUSH
25507: LD_INT 10
25509: PUSH
25510: LD_INT 12
25512: PUSH
25513: EMPTY
25514: LIST
25515: LIST
25516: LIST
25517: PUSH
25518: LD_OWVAR 67
25522: ARRAY
25523: PUSH
25524: LD_INT 12
25526: PUSH
25527: LD_INT 14
25529: PUSH
25530: LD_INT 16
25532: PUSH
25533: EMPTY
25534: LIST
25535: LIST
25536: LIST
25537: PUSH
25538: LD_OWVAR 67
25542: ARRAY
25543: PUSH
25544: LD_INT 8
25546: PUSH
25547: LD_INT 10
25549: PUSH
25550: LD_INT 12
25552: PUSH
25553: EMPTY
25554: LIST
25555: LIST
25556: LIST
25557: PUSH
25558: LD_OWVAR 67
25562: ARRAY
25563: PUSH
25564: EMPTY
25565: LIST
25566: LIST
25567: LIST
25568: PUSH
25569: LD_VAR 0 8
25573: ARRAY
25574: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , base , CreateUnitsWithClass ( num , class_scientistic , base ) ) ;
25575: LD_ADDR_EXP 55
25579: PUSH
25580: LD_EXP 55
25584: PPUSH
25585: LD_VAR 0 8
25589: PPUSH
25590: LD_VAR 0 9
25594: PPUSH
25595: LD_INT 4
25597: PPUSH
25598: LD_VAR 0 8
25602: PPUSH
25603: CALL 31780 0 3
25607: PPUSH
25608: CALL_OW 1
25612: ST_TO_ADDR
// PlaceComputerUnits ( base , ai_scientists [ base ] , ai_labs [ base ] ) ;
25613: LD_VAR 0 8
25617: PPUSH
25618: LD_EXP 55
25622: PUSH
25623: LD_VAR 0 8
25627: ARRAY
25628: PPUSH
25629: LD_EXP 60
25633: PUSH
25634: LD_VAR 0 8
25638: ARRAY
25639: PPUSH
25640: CALL 32096 0 3
// for i in ai_depots [ base ] do
25644: LD_ADDR_VAR 0 2
25648: PUSH
25649: LD_EXP 59
25653: PUSH
25654: LD_VAR 0 8
25658: ARRAY
25659: PUSH
25660: FOR_IN
25661: IFFALSE 25725
// begin SetResourceType ( GetBase ( i ) , mat_cans , 300 ) ;
25663: LD_VAR 0 2
25667: PPUSH
25668: CALL_OW 274
25672: PPUSH
25673: LD_INT 1
25675: PPUSH
25676: LD_INT 300
25678: PPUSH
25679: CALL_OW 277
// SetResourceType ( GetBase ( i ) , mat_oil , 300 ) ;
25683: LD_VAR 0 2
25687: PPUSH
25688: CALL_OW 274
25692: PPUSH
25693: LD_INT 2
25695: PPUSH
25696: LD_INT 300
25698: PPUSH
25699: CALL_OW 277
// SetResourceType ( GetBase ( i ) , mat_siberit , 300 ) ;
25703: LD_VAR 0 2
25707: PPUSH
25708: CALL_OW 274
25712: PPUSH
25713: LD_INT 3
25715: PPUSH
25716: LD_INT 300
25718: PPUSH
25719: CALL_OW 277
// end ;
25723: GO 25660
25725: POP
25726: POP
// ResetVehicleAttackDelay ( base ) ;
25727: LD_VAR 0 8
25731: PPUSH
25732: CALL 77108 0 1
// end ;
25736: GO 24278
25738: POP
25739: POP
// for i = 1 to 3 do
25740: LD_ADDR_VAR 0 2
25744: PUSH
25745: DOUBLE
25746: LD_INT 1
25748: DEC
25749: ST_TO_ADDR
25750: LD_INT 3
25752: PUSH
25753: FOR_TO
25754: IFFALSE 26513
// begin num = UnitFilter ( mb_buildings [ i ] , [ f_btype , b_bunker ] ) ;
25756: LD_ADDR_VAR 0 9
25760: PUSH
25761: LD_EXP 161
25765: PUSH
25766: LD_VAR 0 2
25770: ARRAY
25771: PPUSH
25772: LD_INT 30
25774: PUSH
25775: LD_INT 32
25777: PUSH
25778: EMPTY
25779: LIST
25780: LIST
25781: PPUSH
25782: CALL_OW 72
25786: ST_TO_ADDR
// temp = CreateUnitsWithClass ( num , class_soldier , i ) ;
25787: LD_ADDR_VAR 0 6
25791: PUSH
25792: LD_VAR 0 9
25796: PPUSH
25797: LD_INT 1
25799: PPUSH
25800: LD_VAR 0 2
25804: PPUSH
25805: CALL 31780 0 3
25809: ST_TO_ADDR
// if difficulty = 3 and i = 3 then
25810: LD_OWVAR 67
25814: PUSH
25815: LD_INT 3
25817: EQUAL
25818: PUSH
25819: LD_VAR 0 2
25823: PUSH
25824: LD_INT 3
25826: EQUAL
25827: AND
25828: IFFALSE 25857
// temp = temp ^ CreateUnitsWithClass ( 2 , class_soldier , i ) ;
25830: LD_ADDR_VAR 0 6
25834: PUSH
25835: LD_VAR 0 6
25839: PUSH
25840: LD_INT 2
25842: PPUSH
25843: LD_INT 1
25845: PPUSH
25846: LD_VAR 0 2
25850: PPUSH
25851: CALL 31780 0 3
25855: ADD
25856: ST_TO_ADDR
// if difficulty = 3 then
25857: LD_OWVAR 67
25861: PUSH
25862: LD_INT 3
25864: EQUAL
25865: IFFALSE 25930
// temp = temp ^ CreateUnitsWithClass ( [ 5 , 5 , 2 ] [ i ] , [ class_mortar , class_bazooker , class_sniper ] [ i ] , i ) else
25867: LD_ADDR_VAR 0 6
25871: PUSH
25872: LD_VAR 0 6
25876: PUSH
25877: LD_INT 5
25879: PUSH
25880: LD_INT 5
25882: PUSH
25883: LD_INT 2
25885: PUSH
25886: EMPTY
25887: LIST
25888: LIST
25889: LIST
25890: PUSH
25891: LD_VAR 0 2
25895: ARRAY
25896: PPUSH
25897: LD_INT 8
25899: PUSH
25900: LD_INT 9
25902: PUSH
25903: LD_INT 5
25905: PUSH
25906: EMPTY
25907: LIST
25908: LIST
25909: LIST
25910: PUSH
25911: LD_VAR 0 2
25915: ARRAY
25916: PPUSH
25917: LD_VAR 0 2
25921: PPUSH
25922: CALL 31780 0 3
25926: ADD
25927: ST_TO_ADDR
25928: GO 26025
// temp = temp ^ CreateUnitsWithClass ( [ [ 3 , 4 , 5 ] [ difficulty ] , [ 3 , 4 , 5 ] [ difficulty ] , 3 ] [ i ] , [ class_mortar , class_bazooker , class_soldier ] [ i ] , i ) ;
25930: LD_ADDR_VAR 0 6
25934: PUSH
25935: LD_VAR 0 6
25939: PUSH
25940: LD_INT 3
25942: PUSH
25943: LD_INT 4
25945: PUSH
25946: LD_INT 5
25948: PUSH
25949: EMPTY
25950: LIST
25951: LIST
25952: LIST
25953: PUSH
25954: LD_OWVAR 67
25958: ARRAY
25959: PUSH
25960: LD_INT 3
25962: PUSH
25963: LD_INT 4
25965: PUSH
25966: LD_INT 5
25968: PUSH
25969: EMPTY
25970: LIST
25971: LIST
25972: LIST
25973: PUSH
25974: LD_OWVAR 67
25978: ARRAY
25979: PUSH
25980: LD_INT 3
25982: PUSH
25983: EMPTY
25984: LIST
25985: LIST
25986: LIST
25987: PUSH
25988: LD_VAR 0 2
25992: ARRAY
25993: PPUSH
25994: LD_INT 8
25996: PUSH
25997: LD_INT 9
25999: PUSH
26000: LD_INT 1
26002: PUSH
26003: EMPTY
26004: LIST
26005: LIST
26006: LIST
26007: PUSH
26008: LD_VAR 0 2
26012: ARRAY
26013: PPUSH
26014: LD_VAR 0 2
26018: PPUSH
26019: CALL 31780 0 3
26023: ADD
26024: ST_TO_ADDR
// temp = temp ^ CreateUnitsWithClass ( 3 , class_engineer , i ) ;
26025: LD_ADDR_VAR 0 6
26029: PUSH
26030: LD_VAR 0 6
26034: PUSH
26035: LD_INT 3
26037: PPUSH
26038: LD_INT 2
26040: PPUSH
26041: LD_VAR 0 2
26045: PPUSH
26046: CALL 31780 0 3
26050: ADD
26051: ST_TO_ADDR
// temp = temp ^ CreateUnitsWithClass ( 3 , class_mechanic , i ) ;
26052: LD_ADDR_VAR 0 6
26056: PUSH
26057: LD_VAR 0 6
26061: PUSH
26062: LD_INT 3
26064: PPUSH
26065: LD_INT 3
26067: PPUSH
26068: LD_VAR 0 2
26072: PPUSH
26073: CALL 31780 0 3
26077: ADD
26078: ST_TO_ADDR
// temp = temp ^ CreateUnitsWithClass ( 3 , class_scientistic , i ) ;
26079: LD_ADDR_VAR 0 6
26083: PUSH
26084: LD_VAR 0 6
26088: PUSH
26089: LD_INT 3
26091: PPUSH
26092: LD_INT 4
26094: PPUSH
26095: LD_VAR 0 2
26099: PPUSH
26100: CALL 31780 0 3
26104: ADD
26105: ST_TO_ADDR
// mb_people = Replace ( mb_people , i , temp ) ;
26106: LD_ADDR_EXP 163
26110: PUSH
26111: LD_EXP 163
26115: PPUSH
26116: LD_VAR 0 2
26120: PPUSH
26121: LD_VAR 0 6
26125: PPUSH
26126: CALL_OW 1
26130: ST_TO_ADDR
// if i = 1 then
26131: LD_VAR 0 2
26135: PUSH
26136: LD_INT 1
26138: EQUAL
26139: IFFALSE 26253
// begin uc_side = 8 ;
26141: LD_ADDR_OWVAR 20
26145: PUSH
26146: LD_INT 8
26148: ST_TO_ADDR
// uc_nation = nation_nature ;
26149: LD_ADDR_OWVAR 21
26153: PUSH
26154: LD_INT 0
26156: ST_TO_ADDR
// InitHc ;
26157: CALL_OW 19
// hc_skills = [ 10 , 10 , 0 , 0 ] ;
26161: LD_ADDR_OWVAR 31
26165: PUSH
26166: LD_INT 10
26168: PUSH
26169: LD_INT 10
26171: PUSH
26172: LD_INT 0
26174: PUSH
26175: LD_INT 0
26177: PUSH
26178: EMPTY
26179: LIST
26180: LIST
26181: LIST
26182: LIST
26183: ST_TO_ADDR
// hc_attr = [ 11 , 11 ] ;
26184: LD_ADDR_OWVAR 29
26188: PUSH
26189: LD_INT 11
26191: PUSH
26192: LD_INT 11
26194: PUSH
26195: EMPTY
26196: LIST
26197: LIST
26198: ST_TO_ADDR
// hc_class = class_apeman_kamikaze ;
26199: LD_ADDR_OWVAR 28
26203: PUSH
26204: LD_INT 17
26206: ST_TO_ADDR
// hc_name =  ;
26207: LD_ADDR_OWVAR 26
26211: PUSH
26212: LD_STRING 
26214: ST_TO_ADDR
// mb_legion_kam = CreateHuman ^ CreateHuman ^ CreateHuman ;
26215: LD_ADDR_EXP 176
26219: PUSH
26220: CALL_OW 44
26224: PUSH
26225: CALL_OW 44
26229: ADD
26230: PUSH
26231: CALL_OW 44
26235: ADD
26236: ST_TO_ADDR
// temp = temp ^ mb_legion_kam ;
26237: LD_ADDR_VAR 0 6
26241: PUSH
26242: LD_VAR 0 6
26246: PUSH
26247: LD_EXP 176
26251: ADD
26252: ST_TO_ADDR
// end ; for j in temp do
26253: LD_ADDR_VAR 0 3
26257: PUSH
26258: LD_VAR 0 6
26262: PUSH
26263: FOR_IN
26264: IFFALSE 26323
// PlaceUnitXYR ( j , [ 34 , 146 , 179 ] [ i ] , [ 26 , 118 , 35 ] [ i ] , 3 , false ) ;
26266: LD_VAR 0 3
26270: PPUSH
26271: LD_INT 34
26273: PUSH
26274: LD_INT 146
26276: PUSH
26277: LD_INT 179
26279: PUSH
26280: EMPTY
26281: LIST
26282: LIST
26283: LIST
26284: PUSH
26285: LD_VAR 0 2
26289: ARRAY
26290: PPUSH
26291: LD_INT 26
26293: PUSH
26294: LD_INT 118
26296: PUSH
26297: LD_INT 35
26299: PUSH
26300: EMPTY
26301: LIST
26302: LIST
26303: LIST
26304: PUSH
26305: LD_VAR 0 2
26309: ARRAY
26310: PPUSH
26311: LD_INT 3
26313: PPUSH
26314: LD_INT 0
26316: PPUSH
26317: CALL_OW 50
26321: GO 26263
26323: POP
26324: POP
// temp_list = [ ] ;
26325: LD_ADDR_VAR 0 4
26329: PUSH
26330: EMPTY
26331: ST_TO_ADDR
// for j in mb_people [ i ] do
26332: LD_ADDR_VAR 0 3
26336: PUSH
26337: LD_EXP 163
26341: PUSH
26342: LD_VAR 0 2
26346: ARRAY
26347: PUSH
26348: FOR_IN
26349: IFFALSE 26377
// temp_list = temp_list ^ GetSkill ( j , skill_engineering ) ;
26351: LD_ADDR_VAR 0 4
26355: PUSH
26356: LD_VAR 0 4
26360: PUSH
26361: LD_VAR 0 3
26365: PPUSH
26366: LD_INT 2
26368: PPUSH
26369: CALL_OW 259
26373: ADD
26374: ST_TO_ADDR
26375: GO 26348
26377: POP
26378: POP
// num = BestFromListByList ( temp_list , temp_list ) ;
26379: LD_ADDR_VAR 0 9
26383: PUSH
26384: LD_VAR 0 4
26388: PPUSH
26389: LD_VAR 0 4
26393: PPUSH
26394: CALL_OW 79
26398: ST_TO_ADDR
// for j in mb_buildings [ i ] do
26399: LD_ADDR_VAR 0 3
26403: PUSH
26404: LD_EXP 161
26408: PUSH
26409: LD_VAR 0 2
26413: ARRAY
26414: PUSH
26415: FOR_IN
26416: IFFALSE 26434
// SetBLevel ( j , num ) ;
26418: LD_VAR 0 3
26422: PPUSH
26423: LD_VAR 0 9
26427: PPUSH
26428: CALL_OW 241
26432: GO 26415
26434: POP
26435: POP
// temp = unitfilter ( mb_buildings [ i ] , [ f_btype , b_depot ] ) [ 1 ] ;
26436: LD_ADDR_VAR 0 6
26440: PUSH
26441: LD_EXP 161
26445: PUSH
26446: LD_VAR 0 2
26450: ARRAY
26451: PPUSH
26452: LD_INT 30
26454: PUSH
26455: LD_INT 0
26457: PUSH
26458: EMPTY
26459: LIST
26460: LIST
26461: PPUSH
26462: CALL_OW 72
26466: PUSH
26467: LD_INT 1
26469: ARRAY
26470: ST_TO_ADDR
// SetResourceType ( GetBase ( temp ) , mat_cans , 300 ) ;
26471: LD_VAR 0 6
26475: PPUSH
26476: CALL_OW 274
26480: PPUSH
26481: LD_INT 1
26483: PPUSH
26484: LD_INT 300
26486: PPUSH
26487: CALL_OW 277
// SetResourceType ( GetBase ( temp ) , mat_oil , 300 ) ;
26491: LD_VAR 0 6
26495: PPUSH
26496: CALL_OW 274
26500: PPUSH
26501: LD_INT 2
26503: PPUSH
26504: LD_INT 300
26506: PPUSH
26507: CALL_OW 277
// end ;
26511: GO 25753
26513: POP
26514: POP
// uc_side = 0 ;
26515: LD_ADDR_OWVAR 20
26519: PUSH
26520: LD_INT 0
26522: ST_TO_ADDR
// uc_nation = nation_nature ;
26523: LD_ADDR_OWVAR 21
26527: PUSH
26528: LD_INT 0
26530: ST_TO_ADDR
// InitHc ;
26531: CALL_OW 19
// hc_skills = [ 10 , 10 , 0 , 0 ] ;
26535: LD_ADDR_OWVAR 31
26539: PUSH
26540: LD_INT 10
26542: PUSH
26543: LD_INT 10
26545: PUSH
26546: LD_INT 0
26548: PUSH
26549: LD_INT 0
26551: PUSH
26552: EMPTY
26553: LIST
26554: LIST
26555: LIST
26556: LIST
26557: ST_TO_ADDR
// hc_attr = [ 11 , 11 ] ;
26558: LD_ADDR_OWVAR 29
26562: PUSH
26563: LD_INT 11
26565: PUSH
26566: LD_INT 11
26568: PUSH
26569: EMPTY
26570: LIST
26571: LIST
26572: ST_TO_ADDR
// hc_class = class_apeman ;
26573: LD_ADDR_OWVAR 28
26577: PUSH
26578: LD_INT 12
26580: ST_TO_ADDR
// hc_name =  ;
26581: LD_ADDR_OWVAR 26
26585: PUSH
26586: LD_STRING 
26588: ST_TO_ADDR
// temp = CreateHuman ^ CreateHuman ^ CreateHuman ;
26589: LD_ADDR_VAR 0 6
26593: PUSH
26594: CALL_OW 44
26598: PUSH
26599: CALL_OW 44
26603: ADD
26604: PUSH
26605: CALL_OW 44
26609: ADD
26610: ST_TO_ADDR
// for j in temp do
26611: LD_ADDR_VAR 0 3
26615: PUSH
26616: LD_VAR 0 6
26620: PUSH
26621: FOR_IN
26622: IFFALSE 26647
// PlaceUnitXYR ( j , 5 , 3 , 2 , false ) ;
26624: LD_VAR 0 3
26628: PPUSH
26629: LD_INT 5
26631: PPUSH
26632: LD_INT 3
26634: PPUSH
26635: LD_INT 2
26637: PPUSH
26638: LD_INT 0
26640: PPUSH
26641: CALL_OW 50
26645: GO 26621
26647: POP
26648: POP
// apes = apes ^ temp ;
26649: LD_ADDR_EXP 174
26653: PUSH
26654: LD_EXP 174
26658: PUSH
26659: LD_VAR 0 6
26663: ADD
26664: ST_TO_ADDR
// ai_patrol_weapons = [ WeaponsForPatrol ( 1 ) , WeaponsForPatrol ( 2 ) ] ;
26665: LD_ADDR_EXP 186
26669: PUSH
26670: LD_INT 1
26672: PPUSH
26673: CALL 34012 0 1
26677: PUSH
26678: LD_INT 2
26680: PPUSH
26681: CALL 34012 0 1
26685: PUSH
26686: EMPTY
26687: LIST
26688: LIST
26689: ST_TO_ADDR
// for i = 1 to 2 do
26690: LD_ADDR_VAR 0 2
26694: PUSH
26695: DOUBLE
26696: LD_INT 1
26698: DEC
26699: ST_TO_ADDR
26700: LD_INT 2
26702: PUSH
26703: FOR_TO
26704: IFFALSE 27019
// begin uc_side = [ 8 , 1 ] [ i ] ;
26706: LD_ADDR_OWVAR 20
26710: PUSH
26711: LD_INT 8
26713: PUSH
26714: LD_INT 1
26716: PUSH
26717: EMPTY
26718: LIST
26719: LIST
26720: PUSH
26721: LD_VAR 0 2
26725: ARRAY
26726: ST_TO_ADDR
// uc_nation = [ nation_arabian , nation_american ] [ i ] ;
26727: LD_ADDR_OWVAR 21
26731: PUSH
26732: LD_INT 2
26734: PUSH
26735: LD_INT 1
26737: PUSH
26738: EMPTY
26739: LIST
26740: LIST
26741: PUSH
26742: LD_VAR 0 2
26746: ARRAY
26747: ST_TO_ADDR
// vc_engine = engine_siberite ;
26748: LD_ADDR_OWVAR 39
26752: PUSH
26753: LD_INT 3
26755: ST_TO_ADDR
// vc_control = control_remote ;
26756: LD_ADDR_OWVAR 38
26760: PUSH
26761: LD_INT 2
26763: ST_TO_ADDR
// temp_list = ai_patrol_weapons [ i ] ;
26764: LD_ADDR_VAR 0 4
26768: PUSH
26769: LD_EXP 186
26773: PUSH
26774: LD_VAR 0 2
26778: ARRAY
26779: ST_TO_ADDR
// temp = ai_patrol [ i ] ;
26780: LD_ADDR_VAR 0 6
26784: PUSH
26785: LD_EXP 183
26789: PUSH
26790: LD_VAR 0 2
26794: ARRAY
26795: ST_TO_ADDR
// for j = 1 to temp do
26796: LD_ADDR_VAR 0 3
26800: PUSH
26801: DOUBLE
26802: LD_INT 1
26804: DEC
26805: ST_TO_ADDR
26806: LD_VAR 0 6
26810: PUSH
26811: FOR_TO
26812: IFFALSE 26926
// begin vc_weapon = temp_list [ j ] ;
26814: LD_ADDR_OWVAR 40
26818: PUSH
26819: LD_VAR 0 4
26823: PUSH
26824: LD_VAR 0 3
26828: ARRAY
26829: ST_TO_ADDR
// if i = 1 then
26830: LD_VAR 0 2
26834: PUSH
26835: LD_INT 1
26837: EQUAL
26838: IFFALSE 26850
// vc_chassis = ar_half_tracked else
26840: LD_ADDR_OWVAR 37
26844: PUSH
26845: LD_INT 14
26847: ST_TO_ADDR
26848: GO 26899
// if temp_list [ j ] in [ us_double_laser , us_laser , us_heavy_gun , us_rocket_launcher ] then
26850: LD_VAR 0 4
26854: PUSH
26855: LD_VAR 0 3
26859: ARRAY
26860: PUSH
26861: LD_INT 10
26863: PUSH
26864: LD_INT 9
26866: PUSH
26867: LD_INT 6
26869: PUSH
26870: LD_INT 7
26872: PUSH
26873: EMPTY
26874: LIST
26875: LIST
26876: LIST
26877: LIST
26878: IN
26879: IFFALSE 26891
// vc_chassis = us_morphling else
26881: LD_ADDR_OWVAR 37
26885: PUSH
26886: LD_INT 5
26888: ST_TO_ADDR
26889: GO 26899
// vc_chassis = us_medium_tracked ;
26891: LD_ADDR_OWVAR 37
26895: PUSH
26896: LD_INT 3
26898: ST_TO_ADDR
// temp = Replace ( temp , j , Createvehicle ) ;
26899: LD_ADDR_VAR 0 6
26903: PUSH
26904: LD_VAR 0 6
26908: PPUSH
26909: LD_VAR 0 3
26913: PPUSH
26914: CALL_OW 45
26918: PPUSH
26919: CALL_OW 1
26923: ST_TO_ADDR
// end ;
26924: GO 26811
26926: POP
26927: POP
// ai_patrol = Replace ( ai_patrol , i , temp ) ;
26928: LD_ADDR_EXP 183
26932: PUSH
26933: LD_EXP 183
26937: PPUSH
26938: LD_VAR 0 2
26942: PPUSH
26943: LD_VAR 0 6
26947: PPUSH
26948: CALL_OW 1
26952: ST_TO_ADDR
// for j in temp do
26953: LD_ADDR_VAR 0 3
26957: PUSH
26958: LD_VAR 0 6
26962: PUSH
26963: FOR_IN
26964: IFFALSE 27015
// PlaceUnitXYR ( j , [ 88 , 217 ] [ i ] , [ 155 , 133 ] [ i ] , 9 , false ) ;
26966: LD_VAR 0 3
26970: PPUSH
26971: LD_INT 88
26973: PUSH
26974: LD_INT 217
26976: PUSH
26977: EMPTY
26978: LIST
26979: LIST
26980: PUSH
26981: LD_VAR 0 2
26985: ARRAY
26986: PPUSH
26987: LD_INT 155
26989: PUSH
26990: LD_INT 133
26992: PUSH
26993: EMPTY
26994: LIST
26995: LIST
26996: PUSH
26997: LD_VAR 0 2
27001: ARRAY
27002: PPUSH
27003: LD_INT 9
27005: PPUSH
27006: LD_INT 0
27008: PPUSH
27009: CALL_OW 50
27013: GO 26963
27015: POP
27016: POP
// end ;
27017: GO 26703
27019: POP
27020: POP
// for i = 1 to 7 do
27021: LD_ADDR_VAR 0 2
27025: PUSH
27026: DOUBLE
27027: LD_INT 1
27029: DEC
27030: ST_TO_ADDR
27031: LD_INT 7
27033: PUSH
27034: FOR_TO
27035: IFFALSE 27270
// begin uc_side = 8 ;
27037: LD_ADDR_OWVAR 20
27041: PUSH
27042: LD_INT 8
27044: ST_TO_ADDR
// uc_nation = nation_arabian ;
27045: LD_ADDR_OWVAR 21
27049: PUSH
27050: LD_INT 2
27052: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
27053: LD_ADDR_OWVAR 37
27057: PUSH
27058: LD_INT 14
27060: ST_TO_ADDR
// vc_engine = engine_siberite ;
27061: LD_ADDR_OWVAR 39
27065: PUSH
27066: LD_INT 3
27068: ST_TO_ADDR
// vc_control = control_manual ;
27069: LD_ADDR_OWVAR 38
27073: PUSH
27074: LD_INT 1
27076: ST_TO_ADDR
// vc_weapon = ar_control_tower ;
27077: LD_ADDR_OWVAR 40
27081: PUSH
27082: LD_INT 31
27084: ST_TO_ADDR
// temp = CreateVehicle ;
27085: LD_ADDR_VAR 0 6
27089: PUSH
27090: CALL_OW 45
27094: ST_TO_ADDR
// ai_control_tower_vehicles = Replace ( ai_control_tower_vehicles , 1 , ai_control_tower_vehicles [ 1 ] ^ temp ) ;
27095: LD_ADDR_EXP 105
27099: PUSH
27100: LD_EXP 105
27104: PPUSH
27105: LD_INT 1
27107: PPUSH
27108: LD_EXP 105
27112: PUSH
27113: LD_INT 1
27115: ARRAY
27116: PUSH
27117: LD_VAR 0 6
27121: ADD
27122: PPUSH
27123: CALL_OW 1
27127: ST_TO_ADDR
// temp_list = [ [ 126 , 161 ] , [ 131 , 180 ] , [ 127 , 181 ] , [ 98 , 172 ] , [ 129 , 163 ] , [ 131 , 177 ] , [ 101 , 174 ] ] [ i ] ;
27128: LD_ADDR_VAR 0 4
27132: PUSH
27133: LD_INT 126
27135: PUSH
27136: LD_INT 161
27138: PUSH
27139: EMPTY
27140: LIST
27141: LIST
27142: PUSH
27143: LD_INT 131
27145: PUSH
27146: LD_INT 180
27148: PUSH
27149: EMPTY
27150: LIST
27151: LIST
27152: PUSH
27153: LD_INT 127
27155: PUSH
27156: LD_INT 181
27158: PUSH
27159: EMPTY
27160: LIST
27161: LIST
27162: PUSH
27163: LD_INT 98
27165: PUSH
27166: LD_INT 172
27168: PUSH
27169: EMPTY
27170: LIST
27171: LIST
27172: PUSH
27173: LD_INT 129
27175: PUSH
27176: LD_INT 163
27178: PUSH
27179: EMPTY
27180: LIST
27181: LIST
27182: PUSH
27183: LD_INT 131
27185: PUSH
27186: LD_INT 177
27188: PUSH
27189: EMPTY
27190: LIST
27191: LIST
27192: PUSH
27193: LD_INT 101
27195: PUSH
27196: LD_INT 174
27198: PUSH
27199: EMPTY
27200: LIST
27201: LIST
27202: PUSH
27203: EMPTY
27204: LIST
27205: LIST
27206: LIST
27207: LIST
27208: LIST
27209: LIST
27210: LIST
27211: PUSH
27212: LD_VAR 0 2
27216: ARRAY
27217: ST_TO_ADDR
// SetDir ( temp , rand ( 0 , 5 ) ) ;
27218: LD_VAR 0 6
27222: PPUSH
27223: LD_INT 0
27225: PPUSH
27226: LD_INT 5
27228: PPUSH
27229: CALL_OW 12
27233: PPUSH
27234: CALL_OW 233
// PlaceUnitXY ( temp , temp_list [ 1 ] , temp_list [ 2 ] , false ) ;
27238: LD_VAR 0 6
27242: PPUSH
27243: LD_VAR 0 4
27247: PUSH
27248: LD_INT 1
27250: ARRAY
27251: PPUSH
27252: LD_VAR 0 4
27256: PUSH
27257: LD_INT 2
27259: ARRAY
27260: PPUSH
27261: LD_INT 0
27263: PPUSH
27264: CALL_OW 48
// end ;
27268: GO 27034
27270: POP
27271: POP
// if GameStage > 0 then
27272: LD_EXP 237
27276: PUSH
27277: LD_INT 0
27279: GREATER
27280: IFFALSE 27436
// for i = 1 to [ 4 , 5 , 6 ] [ difficulty ] do
27282: LD_ADDR_VAR 0 2
27286: PUSH
27287: DOUBLE
27288: LD_INT 1
27290: DEC
27291: ST_TO_ADDR
27292: LD_INT 4
27294: PUSH
27295: LD_INT 5
27297: PUSH
27298: LD_INT 6
27300: PUSH
27301: EMPTY
27302: LIST
27303: LIST
27304: LIST
27305: PUSH
27306: LD_OWVAR 67
27310: ARRAY
27311: PUSH
27312: FOR_TO
27313: IFFALSE 27434
// begin uc_side = 8 ;
27315: LD_ADDR_OWVAR 20
27319: PUSH
27320: LD_INT 8
27322: ST_TO_ADDR
// uc_nation = nation_arabian ;
27323: LD_ADDR_OWVAR 21
27327: PUSH
27328: LD_INT 2
27330: ST_TO_ADDR
// vc_chassis = ar_hovercraft ;
27331: LD_ADDR_OWVAR 37
27335: PUSH
27336: LD_INT 11
27338: ST_TO_ADDR
// vc_engine = engine_combustion ;
27339: LD_ADDR_OWVAR 39
27343: PUSH
27344: LD_INT 1
27346: ST_TO_ADDR
// vc_control = control_remote ;
27347: LD_ADDR_OWVAR 38
27351: PUSH
27352: LD_INT 2
27354: ST_TO_ADDR
// vc_weapon = [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ;
27355: LD_ADDR_OWVAR 40
27359: PUSH
27360: LD_INT 23
27362: PUSH
27363: LD_INT 24
27365: PUSH
27366: EMPTY
27367: LIST
27368: LIST
27369: PUSH
27370: LD_INT 1
27372: PPUSH
27373: LD_INT 2
27375: PPUSH
27376: CALL_OW 12
27380: ARRAY
27381: ST_TO_ADDR
// temp = CreateVehicle ;
27382: LD_ADDR_VAR 0 6
27386: PUSH
27387: CALL_OW 45
27391: ST_TO_ADDR
// ai_hovercrafts = Replace ( ai_hovercrafts , i , temp ) ;
27392: LD_ADDR_EXP 148
27396: PUSH
27397: LD_EXP 148
27401: PPUSH
27402: LD_VAR 0 2
27406: PPUSH
27407: LD_VAR 0 6
27411: PPUSH
27412: CALL_OW 1
27416: ST_TO_ADDR
// PlaceUnitArea ( temp , MineArea1 , false ) ;
27417: LD_VAR 0 6
27421: PPUSH
27422: LD_INT 20
27424: PPUSH
27425: LD_INT 0
27427: PPUSH
27428: CALL_OW 49
// end ;
27432: GO 27312
27434: POP
27435: POP
// temp_list = [ ] ;
27436: LD_ADDR_VAR 0 4
27440: PUSH
27441: EMPTY
27442: ST_TO_ADDR
// for i = 1 to 3 do
27443: LD_ADDR_VAR 0 2
27447: PUSH
27448: DOUBLE
27449: LD_INT 1
27451: DEC
27452: ST_TO_ADDR
27453: LD_INT 3
27455: PUSH
27456: FOR_TO
27457: IFFALSE 27567
// begin uc_side = 3 ;
27459: LD_ADDR_OWVAR 20
27463: PUSH
27464: LD_INT 3
27466: ST_TO_ADDR
// uc_nation = nation_russian ;
27467: LD_ADDR_OWVAR 21
27471: PUSH
27472: LD_INT 3
27474: ST_TO_ADDR
// InitVc ;
27475: CALL_OW 20
// vc_chassis = 25 ;
27479: LD_ADDR_OWVAR 37
27483: PUSH
27484: LD_INT 25
27486: ST_TO_ADDR
// temp = CreateVehicle ;
27487: LD_ADDR_VAR 0 6
27491: PUSH
27492: CALL_OW 45
27496: ST_TO_ADDR
// temp_list = temp_list ^ temp ;
27497: LD_ADDR_VAR 0 4
27501: PUSH
27502: LD_VAR 0 4
27506: PUSH
27507: LD_VAR 0 6
27511: ADD
27512: ST_TO_ADDR
// PlaceUnitXY ( temp , [ 230 , 215 , 205 ] [ i ] , [ 241 , 206 , 182 ] [ i ] , false ) ;
27513: LD_VAR 0 6
27517: PPUSH
27518: LD_INT 230
27520: PUSH
27521: LD_INT 215
27523: PUSH
27524: LD_INT 205
27526: PUSH
27527: EMPTY
27528: LIST
27529: LIST
27530: LIST
27531: PUSH
27532: LD_VAR 0 2
27536: ARRAY
27537: PPUSH
27538: LD_INT 241
27540: PUSH
27541: LD_INT 206
27543: PUSH
27544: LD_INT 182
27546: PUSH
27547: EMPTY
27548: LIST
27549: LIST
27550: LIST
27551: PUSH
27552: LD_VAR 0 2
27556: ARRAY
27557: PPUSH
27558: LD_INT 0
27560: PPUSH
27561: CALL_OW 48
// end ;
27565: GO 27456
27567: POP
27568: POP
// ai_behemoths = Replace ( ai_behemoths , 2 , temp_list ) ;
27569: LD_ADDR_EXP 113
27573: PUSH
27574: LD_EXP 113
27578: PPUSH
27579: LD_INT 2
27581: PPUSH
27582: LD_VAR 0 4
27586: PPUSH
27587: CALL_OW 1
27591: ST_TO_ADDR
// for i in [ 1 , 3 ] do
27592: LD_ADDR_VAR 0 2
27596: PUSH
27597: LD_INT 1
27599: PUSH
27600: LD_INT 3
27602: PUSH
27603: EMPTY
27604: LIST
27605: LIST
27606: PUSH
27607: FOR_IN
27608: IFFALSE 27899
// begin temp = mb_vehicles [ i ] ;
27610: LD_ADDR_VAR 0 6
27614: PUSH
27615: LD_EXP 164
27619: PUSH
27620: LD_VAR 0 2
27624: ARRAY
27625: ST_TO_ADDR
// for j = 1 to temp do
27626: LD_ADDR_VAR 0 3
27630: PUSH
27631: DOUBLE
27632: LD_INT 1
27634: DEC
27635: ST_TO_ADDR
27636: LD_VAR 0 6
27640: PUSH
27641: FOR_TO
27642: IFFALSE 27798
// begin uc_side = [ 8 , 3 , 1 ] [ i ] ;
27644: LD_ADDR_OWVAR 20
27648: PUSH
27649: LD_INT 8
27651: PUSH
27652: LD_INT 3
27654: PUSH
27655: LD_INT 1
27657: PUSH
27658: EMPTY
27659: LIST
27660: LIST
27661: LIST
27662: PUSH
27663: LD_VAR 0 2
27667: ARRAY
27668: ST_TO_ADDR
// uc_nation = [ nation_arabian , nation_russian , nation_american ] [ i ] ;
27669: LD_ADDR_OWVAR 21
27673: PUSH
27674: LD_INT 2
27676: PUSH
27677: LD_INT 3
27679: PUSH
27680: LD_INT 1
27682: PUSH
27683: EMPTY
27684: LIST
27685: LIST
27686: LIST
27687: PUSH
27688: LD_VAR 0 2
27692: ARRAY
27693: ST_TO_ADDR
// vc_chassis = mb_vehiclestemp_chassis [ i ] [ j ] ;
27694: LD_ADDR_OWVAR 37
27698: PUSH
27699: LD_EXP 167
27703: PUSH
27704: LD_VAR 0 2
27708: ARRAY
27709: PUSH
27710: LD_VAR 0 3
27714: ARRAY
27715: ST_TO_ADDR
// vc_engine = engine_combustion ;
27716: LD_ADDR_OWVAR 39
27720: PUSH
27721: LD_INT 1
27723: ST_TO_ADDR
// vc_control = [ control_apeman , control_computer , control_computer ] [ i ] ;
27724: LD_ADDR_OWVAR 38
27728: PUSH
27729: LD_INT 5
27731: PUSH
27732: LD_INT 3
27734: PUSH
27735: LD_INT 3
27737: PUSH
27738: EMPTY
27739: LIST
27740: LIST
27741: LIST
27742: PUSH
27743: LD_VAR 0 2
27747: ARRAY
27748: ST_TO_ADDR
// vc_weapon = mb_vehiclestemp_weapons [ i ] [ j ] ;
27749: LD_ADDR_OWVAR 40
27753: PUSH
27754: LD_EXP 166
27758: PUSH
27759: LD_VAR 0 2
27763: ARRAY
27764: PUSH
27765: LD_VAR 0 3
27769: ARRAY
27770: ST_TO_ADDR
// temp = Replace ( temp , j , Createvehicle ) ;
27771: LD_ADDR_VAR 0 6
27775: PUSH
27776: LD_VAR 0 6
27780: PPUSH
27781: LD_VAR 0 3
27785: PPUSH
27786: CALL_OW 45
27790: PPUSH
27791: CALL_OW 1
27795: ST_TO_ADDR
// end ;
27796: GO 27641
27798: POP
27799: POP
// mb_vehicles = Replace ( mb_vehicles , i , temp ) ;
27800: LD_ADDR_EXP 164
27804: PUSH
27805: LD_EXP 164
27809: PPUSH
27810: LD_VAR 0 2
27814: PPUSH
27815: LD_VAR 0 6
27819: PPUSH
27820: CALL_OW 1
27824: ST_TO_ADDR
// for j in temp do
27825: LD_ADDR_VAR 0 3
27829: PUSH
27830: LD_VAR 0 6
27834: PUSH
27835: FOR_IN
27836: IFFALSE 27895
// PlaceUnitXYR ( j , [ 42 , 0 , 189 ] [ i ] , [ 60 , 0 , 55 ] [ i ] , 8 , false ) ;
27838: LD_VAR 0 3
27842: PPUSH
27843: LD_INT 42
27845: PUSH
27846: LD_INT 0
27848: PUSH
27849: LD_INT 189
27851: PUSH
27852: EMPTY
27853: LIST
27854: LIST
27855: LIST
27856: PUSH
27857: LD_VAR 0 2
27861: ARRAY
27862: PPUSH
27863: LD_INT 60
27865: PUSH
27866: LD_INT 0
27868: PUSH
27869: LD_INT 55
27871: PUSH
27872: EMPTY
27873: LIST
27874: LIST
27875: LIST
27876: PUSH
27877: LD_VAR 0 2
27881: ARRAY
27882: PPUSH
27883: LD_INT 8
27885: PPUSH
27886: LD_INT 0
27888: PPUSH
27889: CALL_OW 50
27893: GO 27835
27895: POP
27896: POP
// end ;
27897: GO 27607
27899: POP
27900: POP
// uc_side = russians ;
27901: LD_ADDR_OWVAR 20
27905: PUSH
27906: LD_EXP 3
27910: ST_TO_ADDR
// Platonov = NewCharacter ( Platonov ) ;
27911: LD_ADDR_EXP 33
27915: PUSH
27916: LD_STRING Platonov
27918: PPUSH
27919: CALL_OW 25
27923: ST_TO_ADDR
// SetSkill ( Platonov , skill_combat , 10 ) ;
27924: LD_EXP 33
27928: PPUSH
27929: LD_INT 1
27931: PPUSH
27932: LD_INT 10
27934: PPUSH
27935: CALL_OW 237
// SetSkill ( Platonov , skill_engineering , 6 ) ;
27939: LD_EXP 33
27943: PPUSH
27944: LD_INT 2
27946: PPUSH
27947: LD_INT 6
27949: PPUSH
27950: CALL_OW 237
// SetSkill ( Platonov , skill_mechanical , 7 ) ;
27954: LD_EXP 33
27958: PPUSH
27959: LD_INT 3
27961: PPUSH
27962: LD_INT 7
27964: PPUSH
27965: CALL_OW 237
// SetSkill ( Platonov , skill_scientistic , 5 ) ;
27969: LD_EXP 33
27973: PPUSH
27974: LD_INT 4
27976: PPUSH
27977: LD_INT 5
27979: PPUSH
27980: CALL_OW 237
// SetClass ( Platonov , class_soldier ) ;
27984: LD_EXP 33
27988: PPUSH
27989: LD_INT 1
27991: PPUSH
27992: CALL_OW 336
// temp_list = ai_soldiers [ 2 ] ^ Platonov ;
27996: LD_ADDR_VAR 0 4
28000: PUSH
28001: LD_EXP 50
28005: PUSH
28006: LD_INT 2
28008: ARRAY
28009: PUSH
28010: LD_EXP 33
28014: ADD
28015: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , 2 , temp_list ) ;
28016: LD_ADDR_EXP 50
28020: PUSH
28021: LD_EXP 50
28025: PPUSH
28026: LD_INT 2
28028: PPUSH
28029: LD_VAR 0 4
28033: PPUSH
28034: CALL_OW 1
28038: ST_TO_ADDR
// PlaceComputerUnits ( 2 , [ Platonov ] , [ ] ) ;
28039: LD_INT 2
28041: PPUSH
28042: LD_EXP 33
28046: PUSH
28047: EMPTY
28048: LIST
28049: PPUSH
28050: EMPTY
28051: PPUSH
28052: CALL 32096 0 3
// uc_side = americans ;
28056: LD_ADDR_OWVAR 20
28060: PUSH
28061: LD_EXP 7
28065: ST_TO_ADDR
// Powell = NewCharacter ( Powell ) ;
28066: LD_ADDR_EXP 36
28070: PUSH
28071: LD_STRING Powell
28073: PPUSH
28074: CALL_OW 25
28078: ST_TO_ADDR
// SetSkill ( Powell , skill_combat , 10 ) ;
28079: LD_EXP 36
28083: PPUSH
28084: LD_INT 1
28086: PPUSH
28087: LD_INT 10
28089: PPUSH
28090: CALL_OW 237
// SetSkill ( Powell , skill_engineering , 6 ) ;
28094: LD_EXP 36
28098: PPUSH
28099: LD_INT 2
28101: PPUSH
28102: LD_INT 6
28104: PPUSH
28105: CALL_OW 237
// SetSkill ( Powell , skill_mechanical , 9 ) ;
28109: LD_EXP 36
28113: PPUSH
28114: LD_INT 3
28116: PPUSH
28117: LD_INT 9
28119: PPUSH
28120: CALL_OW 237
// SetSkill ( Powell , skill_scientistic , 3 ) ;
28124: LD_EXP 36
28128: PPUSH
28129: LD_INT 4
28131: PPUSH
28132: LD_INT 3
28134: PPUSH
28135: CALL_OW 237
// SetClass ( Powell , class_soldier ) ;
28139: LD_EXP 36
28143: PPUSH
28144: LD_INT 1
28146: PPUSH
28147: CALL_OW 336
// temp_list = ai_soldiers [ 3 ] ^ Powell ;
28151: LD_ADDR_VAR 0 4
28155: PUSH
28156: LD_EXP 50
28160: PUSH
28161: LD_INT 3
28163: ARRAY
28164: PUSH
28165: LD_EXP 36
28169: ADD
28170: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , 3 , temp_list ) ;
28171: LD_ADDR_EXP 50
28175: PUSH
28176: LD_EXP 50
28180: PPUSH
28181: LD_INT 3
28183: PPUSH
28184: LD_VAR 0 4
28188: PPUSH
28189: CALL_OW 1
28193: ST_TO_ADDR
// PlaceComputerUnits ( 3 , [ Powell ] , [ ] ) ;
28194: LD_INT 3
28196: PPUSH
28197: LD_EXP 36
28201: PUSH
28202: EMPTY
28203: LIST
28204: PPUSH
28205: EMPTY
28206: PPUSH
28207: CALL 32096 0 3
// uc_side = 7 ;
28211: LD_ADDR_OWVAR 20
28215: PUSH
28216: LD_INT 7
28218: ST_TO_ADDR
// Roth = NewCharacter ( Roth ) ;
28219: LD_ADDR_EXP 34
28223: PUSH
28224: LD_STRING Roth
28226: PPUSH
28227: CALL_OW 25
28231: ST_TO_ADDR
// SetClass ( Roth , class_engineer ) ;
28232: LD_EXP 34
28236: PPUSH
28237: LD_INT 2
28239: PPUSH
28240: CALL_OW 336
// if testing then
28244: LD_EXP 1
28248: IFFALSE 28265
// Gossudarov = NewCharacter ( Gossudarov ) else
28250: LD_ADDR_EXP 35
28254: PUSH
28255: LD_STRING Gossudarov
28257: PPUSH
28258: CALL_OW 25
28262: ST_TO_ADDR
28263: GO 28278
// Gossudarov = CreateCharacter ( Gossudarov_10 ) ;
28265: LD_ADDR_EXP 35
28269: PUSH
28270: LD_STRING Gossudarov_10
28272: PPUSH
28273: CALL_OW 34
28277: ST_TO_ADDR
// if Gossudarov then
28278: LD_EXP 35
28282: IFFALSE 28296
// SetClass ( Gossudarov , class_mechanic ) ;
28284: LD_EXP 35
28288: PPUSH
28289: LD_INT 3
28291: PPUSH
28292: CALL_OW 336
// AllianceTeam = [ ] ;
28296: LD_ADDR_EXP 46
28300: PUSH
28301: EMPTY
28302: ST_TO_ADDR
// vc_engine = [ engine_combustion , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , engine_siberite ] [ difficulty ] ;
28303: LD_ADDR_OWVAR 39
28307: PUSH
28308: LD_INT 1
28310: PUSH
28311: LD_INT 1
28313: PUSH
28314: LD_INT 3
28316: PUSH
28317: EMPTY
28318: LIST
28319: LIST
28320: PUSH
28321: LD_INT 1
28323: PPUSH
28324: LD_INT 2
28326: PPUSH
28327: CALL_OW 12
28331: ARRAY
28332: PUSH
28333: LD_INT 3
28335: PUSH
28336: EMPTY
28337: LIST
28338: LIST
28339: LIST
28340: PUSH
28341: LD_OWVAR 67
28345: ARRAY
28346: ST_TO_ADDR
// vc_control = control_computer ;
28347: LD_ADDR_OWVAR 38
28351: PUSH
28352: LD_INT 3
28354: ST_TO_ADDR
// vc_weapon = us_radar ;
28355: LD_ADDR_OWVAR 40
28359: PUSH
28360: LD_INT 11
28362: ST_TO_ADDR
// vc_chassis = us_medium_tracked ;
28363: LD_ADDR_OWVAR 37
28367: PUSH
28368: LD_INT 3
28370: ST_TO_ADDR
// uc_nation = nation_american ;
28371: LD_ADDR_OWVAR 21
28375: PUSH
28376: LD_INT 1
28378: ST_TO_ADDR
// AllianceTeam = AllianceTeam ^ CreateVehicle ;
28379: LD_ADDR_EXP 46
28383: PUSH
28384: LD_EXP 46
28388: PUSH
28389: CALL_OW 45
28393: ADD
28394: ST_TO_ADDR
// vc_engine = [ engine_combustion , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , engine_siberite ] [ difficulty ] ;
28395: LD_ADDR_OWVAR 39
28399: PUSH
28400: LD_INT 1
28402: PUSH
28403: LD_INT 1
28405: PUSH
28406: LD_INT 3
28408: PUSH
28409: EMPTY
28410: LIST
28411: LIST
28412: PUSH
28413: LD_INT 1
28415: PPUSH
28416: LD_INT 2
28418: PPUSH
28419: CALL_OW 12
28423: ARRAY
28424: PUSH
28425: LD_INT 3
28427: PUSH
28428: EMPTY
28429: LIST
28430: LIST
28431: LIST
28432: PUSH
28433: LD_OWVAR 67
28437: ARRAY
28438: ST_TO_ADDR
// vc_control = control_manual ;
28439: LD_ADDR_OWVAR 38
28443: PUSH
28444: LD_INT 1
28446: ST_TO_ADDR
// vc_weapon = ru_cargo_bay ;
28447: LD_ADDR_OWVAR 40
28451: PUSH
28452: LD_INT 51
28454: ST_TO_ADDR
// vc_chassis = ru_medium_tracked ;
28455: LD_ADDR_OWVAR 37
28459: PUSH
28460: LD_INT 22
28462: ST_TO_ADDR
// uc_nation = nation_russian ;
28463: LD_ADDR_OWVAR 21
28467: PUSH
28468: LD_INT 3
28470: ST_TO_ADDR
// AllianceTeam = AllianceTeam ^ CreateVehicle ;
28471: LD_ADDR_EXP 46
28475: PUSH
28476: LD_EXP 46
28480: PUSH
28481: CALL_OW 45
28485: ADD
28486: ST_TO_ADDR
// AddCargo ( AllianceTeam [ 2 ] , mat_artifact , 50 ) ;
28487: LD_EXP 46
28491: PUSH
28492: LD_INT 2
28494: ARRAY
28495: PPUSH
28496: LD_INT 4
28498: PPUSH
28499: LD_INT 50
28501: PPUSH
28502: CALL_OW 291
// PlaceHumanInUnit ( Roth , AllianceTeam [ 2 ] ) ;
28506: LD_EXP 34
28510: PPUSH
28511: LD_EXP 46
28515: PUSH
28516: LD_INT 2
28518: ARRAY
28519: PPUSH
28520: CALL_OW 52
// for i = 1 to 6 do
28524: LD_ADDR_VAR 0 2
28528: PUSH
28529: DOUBLE
28530: LD_INT 1
28532: DEC
28533: ST_TO_ADDR
28534: LD_INT 6
28536: PUSH
28537: FOR_TO
28538: IFFALSE 29100
// begin temp = rand ( 1 , 2 ) ;
28540: LD_ADDR_VAR 0 6
28544: PUSH
28545: LD_INT 1
28547: PPUSH
28548: LD_INT 2
28550: PPUSH
28551: CALL_OW 12
28555: ST_TO_ADDR
// uc_nation = [ nation_american , nation_russian ] [ temp ] ;
28556: LD_ADDR_OWVAR 21
28560: PUSH
28561: LD_INT 1
28563: PUSH
28564: LD_INT 3
28566: PUSH
28567: EMPTY
28568: LIST
28569: LIST
28570: PUSH
28571: LD_VAR 0 6
28575: ARRAY
28576: ST_TO_ADDR
// case i of 1 , 2 :
28577: LD_VAR 0 2
28581: PUSH
28582: LD_INT 1
28584: DOUBLE
28585: EQUAL
28586: IFTRUE 28596
28588: LD_INT 2
28590: DOUBLE
28591: EQUAL
28592: IFTRUE 28596
28594: GO 28620
28596: POP
// weapon = [ us_rocket_launcher , ru_rocket_launcher ] [ temp ] ; 3 , 4 :
28597: LD_ADDR_VAR 0 13
28601: PUSH
28602: LD_INT 7
28604: PUSH
28605: LD_INT 45
28607: PUSH
28608: EMPTY
28609: LIST
28610: LIST
28611: PUSH
28612: LD_VAR 0 6
28616: ARRAY
28617: ST_TO_ADDR
28618: GO 28730
28620: LD_INT 3
28622: DOUBLE
28623: EQUAL
28624: IFTRUE 28634
28626: LD_INT 4
28628: DOUBLE
28629: EQUAL
28630: IFTRUE 28634
28632: GO 28658
28634: POP
// weapon = [ us_gatling_gun , ru_gatling_gun ] [ temp ] ; 5 , 6 :
28635: LD_ADDR_VAR 0 13
28639: PUSH
28640: LD_INT 4
28642: PUSH
28643: LD_INT 43
28645: PUSH
28646: EMPTY
28647: LIST
28648: LIST
28649: PUSH
28650: LD_VAR 0 6
28654: ARRAY
28655: ST_TO_ADDR
28656: GO 28730
28658: LD_INT 5
28660: DOUBLE
28661: EQUAL
28662: IFTRUE 28672
28664: LD_INT 6
28666: DOUBLE
28667: EQUAL
28668: IFTRUE 28672
28670: GO 28729
28672: POP
// if difficulty = 3 then
28673: LD_OWVAR 67
28677: PUSH
28678: LD_INT 3
28680: EQUAL
28681: IFFALSE 28706
// weapon = [ us_heavy_gun , ru_heavy_gun ] [ temp ] else
28683: LD_ADDR_VAR 0 13
28687: PUSH
28688: LD_INT 6
28690: PUSH
28691: LD_INT 46
28693: PUSH
28694: EMPTY
28695: LIST
28696: LIST
28697: PUSH
28698: LD_VAR 0 6
28702: ARRAY
28703: ST_TO_ADDR
28704: GO 28727
// weapon = [ us_double_gun , ru_gun ] [ temp ] ; end ;
28706: LD_ADDR_VAR 0 13
28710: PUSH
28711: LD_INT 5
28713: PUSH
28714: LD_INT 44
28716: PUSH
28717: EMPTY
28718: LIST
28719: LIST
28720: PUSH
28721: LD_VAR 0 6
28725: ARRAY
28726: ST_TO_ADDR
28727: GO 28730
28729: POP
// case difficulty of 1 :
28730: LD_OWVAR 67
28734: PUSH
28735: LD_INT 1
28737: DOUBLE
28738: EQUAL
28739: IFTRUE 28743
28741: GO 28809
28743: POP
// chassis = [ [ us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 3 ) ] , [ ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 2 ) ] ] [ temp ] ; 2 :
28744: LD_ADDR_VAR 0 12
28748: PUSH
28749: LD_INT 3
28751: PUSH
28752: LD_INT 4
28754: PUSH
28755: LD_INT 5
28757: PUSH
28758: EMPTY
28759: LIST
28760: LIST
28761: LIST
28762: PUSH
28763: LD_INT 1
28765: PPUSH
28766: LD_INT 3
28768: PPUSH
28769: CALL_OW 12
28773: ARRAY
28774: PUSH
28775: LD_INT 22
28777: PUSH
28778: LD_INT 24
28780: PUSH
28781: EMPTY
28782: LIST
28783: LIST
28784: PUSH
28785: LD_INT 1
28787: PPUSH
28788: LD_INT 2
28790: PPUSH
28791: CALL_OW 12
28795: ARRAY
28796: PUSH
28797: EMPTY
28798: LIST
28799: LIST
28800: PUSH
28801: LD_VAR 0 6
28805: ARRAY
28806: ST_TO_ADDR
28807: GO 28912
28809: LD_INT 2
28811: DOUBLE
28812: EQUAL
28813: IFTRUE 28817
28815: GO 28879
28817: POP
// chassis = [ [ us_medium_tracked , us_morphling ] [ rand ( 1 , 2 ) ] , [ ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 2 ) ] ] [ temp ] ; 3 :
28818: LD_ADDR_VAR 0 12
28822: PUSH
28823: LD_INT 3
28825: PUSH
28826: LD_INT 5
28828: PUSH
28829: EMPTY
28830: LIST
28831: LIST
28832: PUSH
28833: LD_INT 1
28835: PPUSH
28836: LD_INT 2
28838: PPUSH
28839: CALL_OW 12
28843: ARRAY
28844: PUSH
28845: LD_INT 22
28847: PUSH
28848: LD_INT 24
28850: PUSH
28851: EMPTY
28852: LIST
28853: LIST
28854: PUSH
28855: LD_INT 1
28857: PPUSH
28858: LD_INT 2
28860: PPUSH
28861: CALL_OW 12
28865: ARRAY
28866: PUSH
28867: EMPTY
28868: LIST
28869: LIST
28870: PUSH
28871: LD_VAR 0 6
28875: ARRAY
28876: ST_TO_ADDR
28877: GO 28912
28879: LD_INT 3
28881: DOUBLE
28882: EQUAL
28883: IFTRUE 28887
28885: GO 28911
28887: POP
// chassis = [ us_morphling , ru_heavy_tracked ] [ temp ] ; end ;
28888: LD_ADDR_VAR 0 12
28892: PUSH
28893: LD_INT 5
28895: PUSH
28896: LD_INT 24
28898: PUSH
28899: EMPTY
28900: LIST
28901: LIST
28902: PUSH
28903: LD_VAR 0 6
28907: ARRAY
28908: ST_TO_ADDR
28909: GO 28912
28911: POP
// vc_weapon = weapon ;
28912: LD_ADDR_OWVAR 40
28916: PUSH
28917: LD_VAR 0 13
28921: ST_TO_ADDR
// vc_chassis = chassis ;
28922: LD_ADDR_OWVAR 37
28926: PUSH
28927: LD_VAR 0 12
28931: ST_TO_ADDR
// vc_engine = [ engine_combustion , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , engine_siberite ] [ difficulty ] ;
28932: LD_ADDR_OWVAR 39
28936: PUSH
28937: LD_INT 1
28939: PUSH
28940: LD_INT 1
28942: PUSH
28943: LD_INT 3
28945: PUSH
28946: EMPTY
28947: LIST
28948: LIST
28949: PUSH
28950: LD_INT 1
28952: PPUSH
28953: LD_INT 2
28955: PPUSH
28956: CALL_OW 12
28960: ARRAY
28961: PUSH
28962: LD_INT 3
28964: PUSH
28965: EMPTY
28966: LIST
28967: LIST
28968: LIST
28969: PUSH
28970: LD_OWVAR 67
28974: ARRAY
28975: ST_TO_ADDR
// if i in [ [ 1 , 2 , 3 , 5 ] , [ 1 , 2 , 3 , 4 , 5 , 6 ] , [ 1 , 2 , 3 , 4 , 5 , 6 ] ] [ difficulty ] then
28976: LD_VAR 0 2
28980: PUSH
28981: LD_INT 1
28983: PUSH
28984: LD_INT 2
28986: PUSH
28987: LD_INT 3
28989: PUSH
28990: LD_INT 5
28992: PUSH
28993: EMPTY
28994: LIST
28995: LIST
28996: LIST
28997: LIST
28998: PUSH
28999: LD_INT 1
29001: PUSH
29002: LD_INT 2
29004: PUSH
29005: LD_INT 3
29007: PUSH
29008: LD_INT 4
29010: PUSH
29011: LD_INT 5
29013: PUSH
29014: LD_INT 6
29016: PUSH
29017: EMPTY
29018: LIST
29019: LIST
29020: LIST
29021: LIST
29022: LIST
29023: LIST
29024: PUSH
29025: LD_INT 1
29027: PUSH
29028: LD_INT 2
29030: PUSH
29031: LD_INT 3
29033: PUSH
29034: LD_INT 4
29036: PUSH
29037: LD_INT 5
29039: PUSH
29040: LD_INT 6
29042: PUSH
29043: EMPTY
29044: LIST
29045: LIST
29046: LIST
29047: LIST
29048: LIST
29049: LIST
29050: PUSH
29051: EMPTY
29052: LIST
29053: LIST
29054: LIST
29055: PUSH
29056: LD_OWVAR 67
29060: ARRAY
29061: IN
29062: IFFALSE 29074
// vc_control = control_manual else
29064: LD_ADDR_OWVAR 38
29068: PUSH
29069: LD_INT 1
29071: ST_TO_ADDR
29072: GO 29082
// vc_control = control_computer ;
29074: LD_ADDR_OWVAR 38
29078: PUSH
29079: LD_INT 3
29081: ST_TO_ADDR
// AllianceTeam = AllianceTeam ^ CreateVehicle ;
29082: LD_ADDR_EXP 46
29086: PUSH
29087: LD_EXP 46
29091: PUSH
29092: CALL_OW 45
29096: ADD
29097: ST_TO_ADDR
// end ;
29098: GO 28537
29100: POP
29101: POP
// PlaceHumanInUnit ( Gossudarov , AllianceTeam [ 3 ] ) ;
29102: LD_EXP 35
29106: PPUSH
29107: LD_EXP 46
29111: PUSH
29112: LD_INT 3
29114: ARRAY
29115: PPUSH
29116: CALL_OW 52
// for i in AllianceTeam do
29120: LD_ADDR_VAR 0 2
29124: PUSH
29125: LD_EXP 46
29129: PUSH
29130: FOR_IN
29131: IFFALSE 29213
// if GetControl ( i ) = control_manual and not IsDrivenBy ( i ) then
29133: LD_VAR 0 2
29137: PPUSH
29138: CALL_OW 263
29142: PUSH
29143: LD_INT 1
29145: EQUAL
29146: PUSH
29147: LD_VAR 0 2
29151: PPUSH
29152: CALL_OW 311
29156: NOT
29157: AND
29158: IFFALSE 29211
// begin uc_nation = [ nation_american , nation_russian ] [ rand ( 1 , 2 ) ] ;
29160: LD_ADDR_OWVAR 21
29164: PUSH
29165: LD_INT 1
29167: PUSH
29168: LD_INT 3
29170: PUSH
29171: EMPTY
29172: LIST
29173: LIST
29174: PUSH
29175: LD_INT 1
29177: PPUSH
29178: LD_INT 2
29180: PPUSH
29181: CALL_OW 12
29185: ARRAY
29186: ST_TO_ADDR
// PrepareMechanic ( false , 8 ) ;
29187: LD_INT 0
29189: PPUSH
29190: LD_INT 8
29192: PPUSH
29193: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
29197: CALL_OW 44
29201: PPUSH
29202: LD_VAR 0 2
29206: PPUSH
29207: CALL_OW 52
// end ;
29211: GO 29130
29213: POP
29214: POP
// case difficulty of 1 :
29215: LD_OWVAR 67
29219: PUSH
29220: LD_INT 1
29222: DOUBLE
29223: EQUAL
29224: IFTRUE 29228
29226: GO 29342
29228: POP
// if rand ( 1 , 2 ) = 1 then
29229: LD_INT 1
29231: PPUSH
29232: LD_INT 2
29234: PPUSH
29235: CALL_OW 12
29239: PUSH
29240: LD_INT 1
29242: EQUAL
29243: IFFALSE 29324
// begin temp = rand ( 1 , 2 ) ;
29245: LD_ADDR_VAR 0 6
29249: PUSH
29250: LD_INT 1
29252: PPUSH
29253: LD_INT 2
29255: PPUSH
29256: CALL_OW 12
29260: ST_TO_ADDR
// weapon = [ us_heavy_gun , ru_heavy_gun ] [ temp ] ;
29261: LD_ADDR_VAR 0 13
29265: PUSH
29266: LD_INT 6
29268: PUSH
29269: LD_INT 46
29271: PUSH
29272: EMPTY
29273: LIST
29274: LIST
29275: PUSH
29276: LD_VAR 0 6
29280: ARRAY
29281: ST_TO_ADDR
// chassis = [ [ us_morphling , us_heavy_tracked ] [ rand ( 1 , 2 ) ] , ru_heavy_tracked ] [ temp ] ;
29282: LD_ADDR_VAR 0 12
29286: PUSH
29287: LD_INT 5
29289: PUSH
29290: LD_INT 4
29292: PUSH
29293: EMPTY
29294: LIST
29295: LIST
29296: PUSH
29297: LD_INT 1
29299: PPUSH
29300: LD_INT 2
29302: PPUSH
29303: CALL_OW 12
29307: ARRAY
29308: PUSH
29309: LD_INT 24
29311: PUSH
29312: EMPTY
29313: LIST
29314: LIST
29315: PUSH
29316: LD_VAR 0 6
29320: ARRAY
29321: ST_TO_ADDR
// end else
29322: GO 29340
// begin weapon = us_laser ;
29324: LD_ADDR_VAR 0 13
29328: PUSH
29329: LD_INT 9
29331: ST_TO_ADDR
// chassis = us_morphling ;
29332: LD_ADDR_VAR 0 12
29336: PUSH
29337: LD_INT 5
29339: ST_TO_ADDR
// end ; 2 :
29340: GO 29613
29342: LD_INT 2
29344: DOUBLE
29345: EQUAL
29346: IFTRUE 29350
29348: GO 29513
29350: POP
// if rand ( 1 , 2 ) = 1 then
29351: LD_INT 1
29353: PPUSH
29354: LD_INT 2
29356: PPUSH
29357: CALL_OW 12
29361: PUSH
29362: LD_INT 1
29364: EQUAL
29365: IFFALSE 29461
// begin if rand ( 1 , 2 ) = 1 then
29367: LD_INT 1
29369: PPUSH
29370: LD_INT 2
29372: PPUSH
29373: CALL_OW 12
29377: PUSH
29378: LD_INT 1
29380: EQUAL
29381: IFFALSE 29443
// begin temp = rand ( 1 , 2 ) ;
29383: LD_ADDR_VAR 0 6
29387: PUSH
29388: LD_INT 1
29390: PPUSH
29391: LD_INT 2
29393: PPUSH
29394: CALL_OW 12
29398: ST_TO_ADDR
// weapon = [ us_heavy_gun , ru_heavy_gun ] [ temp ] ;
29399: LD_ADDR_VAR 0 13
29403: PUSH
29404: LD_INT 6
29406: PUSH
29407: LD_INT 46
29409: PUSH
29410: EMPTY
29411: LIST
29412: LIST
29413: PUSH
29414: LD_VAR 0 6
29418: ARRAY
29419: ST_TO_ADDR
// chassis = [ us_morphling , ru_heavy_tracked ] [ temp ] ;
29420: LD_ADDR_VAR 0 12
29424: PUSH
29425: LD_INT 5
29427: PUSH
29428: LD_INT 24
29430: PUSH
29431: EMPTY
29432: LIST
29433: LIST
29434: PUSH
29435: LD_VAR 0 6
29439: ARRAY
29440: ST_TO_ADDR
// end else
29441: GO 29459
// begin weapon = us_laser ;
29443: LD_ADDR_VAR 0 13
29447: PUSH
29448: LD_INT 9
29450: ST_TO_ADDR
// chassis = us_morphling ;
29451: LD_ADDR_VAR 0 12
29455: PUSH
29456: LD_INT 5
29458: ST_TO_ADDR
// end ; end else
29459: GO 29511
// if rand ( 1 , 2 ) = 1 then
29461: LD_INT 1
29463: PPUSH
29464: LD_INT 2
29466: PPUSH
29467: CALL_OW 12
29471: PUSH
29472: LD_INT 1
29474: EQUAL
29475: IFFALSE 29495
// begin weapon = ru_time_lapser ;
29477: LD_ADDR_VAR 0 13
29481: PUSH
29482: LD_INT 49
29484: ST_TO_ADDR
// chassis = ru_heavy_tracked ;
29485: LD_ADDR_VAR 0 12
29489: PUSH
29490: LD_INT 24
29492: ST_TO_ADDR
// end else
29493: GO 29511
// begin weapon = us_double_laser ;
29495: LD_ADDR_VAR 0 13
29499: PUSH
29500: LD_INT 10
29502: ST_TO_ADDR
// chassis = us_morphling ;
29503: LD_ADDR_VAR 0 12
29507: PUSH
29508: LD_INT 5
29510: ST_TO_ADDR
// end ; 3 :
29511: GO 29613
29513: LD_INT 3
29515: DOUBLE
29516: EQUAL
29517: IFTRUE 29521
29519: GO 29612
29521: POP
// begin temp = rand ( 1 , 3 ) ;
29522: LD_ADDR_VAR 0 6
29526: PUSH
29527: LD_INT 1
29529: PPUSH
29530: LD_INT 3
29532: PPUSH
29533: CALL_OW 12
29537: ST_TO_ADDR
// if temp = 1 then
29538: LD_VAR 0 6
29542: PUSH
29543: LD_INT 1
29545: EQUAL
29546: IFFALSE 29566
// begin weapon = us_heavy_gun ;
29548: LD_ADDR_VAR 0 13
29552: PUSH
29553: LD_INT 6
29555: ST_TO_ADDR
// chassis = us_morphling ;
29556: LD_ADDR_VAR 0 12
29560: PUSH
29561: LD_INT 5
29563: ST_TO_ADDR
// end else
29564: GO 29610
// if temp = 2 then
29566: LD_VAR 0 6
29570: PUSH
29571: LD_INT 2
29573: EQUAL
29574: IFFALSE 29594
// begin weapon = ru_time_lapser ;
29576: LD_ADDR_VAR 0 13
29580: PUSH
29581: LD_INT 49
29583: ST_TO_ADDR
// chassis = ru_heavy_tracked ;
29584: LD_ADDR_VAR 0 12
29588: PUSH
29589: LD_INT 24
29591: ST_TO_ADDR
// end else
29592: GO 29610
// begin weapon = us_double_laser ;
29594: LD_ADDR_VAR 0 13
29598: PUSH
29599: LD_INT 10
29601: ST_TO_ADDR
// chassis = us_morphling ;
29602: LD_ADDR_VAR 0 12
29606: PUSH
29607: LD_INT 5
29609: ST_TO_ADDR
// end ; end ; end ;
29610: GO 29613
29612: POP
// for i = 1 to 2 do
29613: LD_ADDR_VAR 0 2
29617: PUSH
29618: DOUBLE
29619: LD_INT 1
29621: DEC
29622: ST_TO_ADDR
29623: LD_INT 2
29625: PUSH
29626: FOR_TO
29627: IFFALSE 29754
// begin if chassis in [ ru_medium_tracked , ru_heavy_tracked ] then
29629: LD_VAR 0 12
29633: PUSH
29634: LD_INT 22
29636: PUSH
29637: LD_INT 24
29639: PUSH
29640: EMPTY
29641: LIST
29642: LIST
29643: IN
29644: IFFALSE 29656
// uc_nation = nation_russian else
29646: LD_ADDR_OWVAR 21
29650: PUSH
29651: LD_INT 3
29653: ST_TO_ADDR
29654: GO 29664
// uc_nation = nation_american ;
29656: LD_ADDR_OWVAR 21
29660: PUSH
29661: LD_INT 1
29663: ST_TO_ADDR
// vc_weapon = weapon ;
29664: LD_ADDR_OWVAR 40
29668: PUSH
29669: LD_VAR 0 13
29673: ST_TO_ADDR
// vc_chassis = chassis ;
29674: LD_ADDR_OWVAR 37
29678: PUSH
29679: LD_VAR 0 12
29683: ST_TO_ADDR
// vc_control = control_computer ;
29684: LD_ADDR_OWVAR 38
29688: PUSH
29689: LD_INT 3
29691: ST_TO_ADDR
// vc_engine = [ engine_combustion , [ engine_combustion , engine_siberite ] [ rand ( 1 , 2 ) ] , engine_siberite ] [ difficulty ] ;
29692: LD_ADDR_OWVAR 39
29696: PUSH
29697: LD_INT 1
29699: PUSH
29700: LD_INT 1
29702: PUSH
29703: LD_INT 3
29705: PUSH
29706: EMPTY
29707: LIST
29708: LIST
29709: PUSH
29710: LD_INT 1
29712: PPUSH
29713: LD_INT 2
29715: PPUSH
29716: CALL_OW 12
29720: ARRAY
29721: PUSH
29722: LD_INT 3
29724: PUSH
29725: EMPTY
29726: LIST
29727: LIST
29728: LIST
29729: PUSH
29730: LD_OWVAR 67
29734: ARRAY
29735: ST_TO_ADDR
// AllianceTeam = AllianceTeam ^ CreateVehicle ;
29736: LD_ADDR_EXP 46
29740: PUSH
29741: LD_EXP 46
29745: PUSH
29746: CALL_OW 45
29750: ADD
29751: ST_TO_ADDR
// end ;
29752: GO 29626
29754: POP
29755: POP
// uc_side = 8 ;
29756: LD_ADDR_OWVAR 20
29760: PUSH
29761: LD_INT 8
29763: ST_TO_ADDR
// InitHc ;
29764: CALL_OW 19
// if testing then
29768: LD_EXP 1
29772: IFFALSE 29890
// begin Kurt = NewCharacter ( Kurt ) ;
29774: LD_ADDR_EXP 39
29778: PUSH
29779: LD_STRING Kurt
29781: PPUSH
29782: CALL_OW 25
29786: ST_TO_ADDR
// Gordon = NewCharacter ( Gordon ) ;
29787: LD_ADDR_EXP 42
29791: PUSH
29792: LD_STRING Gordon
29794: PPUSH
29795: CALL_OW 25
29799: ST_TO_ADDR
// Kozlov = NewCharacter ( Kozlov ) ;
29800: LD_ADDR_EXP 43
29804: PUSH
29805: LD_STRING Kozlov
29807: PPUSH
29808: CALL_OW 25
29812: ST_TO_ADDR
// Suze = NewCharacter ( Suze ) ;
29813: LD_ADDR_EXP 37
29817: PUSH
29818: LD_STRING Suze
29820: PPUSH
29821: CALL_OW 25
29825: ST_TO_ADDR
// MarkB = NewCharacter ( Mark ) ;
29826: LD_ADDR_EXP 38
29830: PUSH
29831: LD_STRING Mark
29833: PPUSH
29834: CALL_OW 25
29838: ST_TO_ADDR
// Martin = NewCharacter ( Martin ) ;
29839: LD_ADDR_EXP 40
29843: PUSH
29844: LD_STRING Martin
29846: PPUSH
29847: CALL_OW 25
29851: ST_TO_ADDR
// Louis = NewCharacter ( Louis ) ;
29852: LD_ADDR_EXP 41
29856: PUSH
29857: LD_STRING Louis
29859: PPUSH
29860: CALL_OW 25
29864: ST_TO_ADDR
// Hadarach = NewCharacter ( Hadarach ) ;
29865: LD_ADDR_EXP 44
29869: PUSH
29870: LD_STRING Hadarach
29872: PPUSH
29873: CALL_OW 25
29877: ST_TO_ADDR
// LegionLeader = Kurt ;
29878: LD_ADDR_EXP 45
29882: PUSH
29883: LD_EXP 39
29887: ST_TO_ADDR
// end else
29888: GO 30335
// begin if TestCharacters ( Kurt_11_cont ) then
29890: LD_STRING Kurt_11_cont
29892: PPUSH
29893: CALL_OW 28
29897: IFFALSE 29914
// Kurt = CreateCharacter ( Kurt_11_cont ) else
29899: LD_ADDR_EXP 39
29903: PUSH
29904: LD_STRING Kurt_11_cont
29906: PPUSH
29907: CALL_OW 34
29911: ST_TO_ADDR
29912: GO 29946
// if TestCharacters ( Kurt_11_not_sel ) then
29914: LD_STRING Kurt_11_not_sel
29916: PPUSH
29917: CALL_OW 28
29921: IFFALSE 29938
// Kurt = CreateCharacter ( Kurt_11_not_sel ) else
29923: LD_ADDR_EXP 39
29927: PUSH
29928: LD_STRING Kurt_11_not_sel
29930: PPUSH
29931: CALL_OW 34
29935: ST_TO_ADDR
29936: GO 29946
// Kurt = 0 ;
29938: LD_ADDR_EXP 39
29942: PUSH
29943: LD_INT 0
29945: ST_TO_ADDR
// if LoadVariable ( Kurt_is_substitute_11_generic , false ) then
29946: LD_STRING Kurt_is_substitute_11_generic
29948: PPUSH
29949: LD_INT 0
29951: PPUSH
29952: CALL_OW 30
29956: IFFALSE 29966
// Kurt = 0 ;
29958: LD_ADDR_EXP 39
29962: PUSH
29963: LD_INT 0
29965: ST_TO_ADDR
// if LoadVariable ( Traitors_leader_is_Gordon_10 , 0 ) then
29966: LD_STRING Traitors_leader_is_Gordon_10
29968: PPUSH
29969: LD_INT 0
29971: PPUSH
29972: CALL_OW 30
29976: IFFALSE 29997
// Gordon = LoadCharacter ( traitors_leader_10 , 0 , 0 ) ;
29978: LD_ADDR_EXP 42
29982: PUSH
29983: LD_STRING traitors_leader_10
29985: PPUSH
29986: LD_INT 0
29988: PPUSH
29989: LD_INT 0
29991: PPUSH
29992: CALL_OW 527
29996: ST_TO_ADDR
// Kozlov = NewCharacter ( Kozlov ) ;
29997: LD_ADDR_EXP 43
30001: PUSH
30002: LD_STRING Kozlov
30004: PPUSH
30005: CALL_OW 25
30009: ST_TO_ADDR
// if Kurt > 0 then
30010: LD_EXP 39
30014: PUSH
30015: LD_INT 0
30017: GREATER
30018: IFFALSE 30032
// LegionLeader = Kurt else
30020: LD_ADDR_EXP 45
30024: PUSH
30025: LD_EXP 39
30029: ST_TO_ADDR
30030: GO 30082
// if Gordon > 0 then
30032: LD_EXP 42
30036: PUSH
30037: LD_INT 0
30039: GREATER
30040: IFFALSE 30054
// LegionLeader = Gordon else
30042: LD_ADDR_EXP 45
30046: PUSH
30047: LD_EXP 42
30051: ST_TO_ADDR
30052: GO 30082
// begin uc_nation = nation_arabian ;
30054: LD_ADDR_OWVAR 21
30058: PUSH
30059: LD_INT 2
30061: ST_TO_ADDR
// PrepareSoldier ( sex_male , 10 ) ;
30062: LD_INT 1
30064: PPUSH
30065: LD_INT 10
30067: PPUSH
30068: CALL_OW 381
// LegionLeader = CreateHuman ;
30072: LD_ADDR_EXP 45
30076: PUSH
30077: CALL_OW 44
30081: ST_TO_ADDR
// end ; if TestCharacters ( Suze_11_cont ) then
30082: LD_STRING Suze_11_cont
30084: PPUSH
30085: CALL_OW 28
30089: IFFALSE 30106
// Suze = CreateCharacter ( Suze_11_cont ) else
30091: LD_ADDR_EXP 37
30095: PUSH
30096: LD_STRING Suze_11_cont
30098: PPUSH
30099: CALL_OW 34
30103: ST_TO_ADDR
30104: GO 30138
// if TestCharacters ( Suze_11_not_sel ) then
30106: LD_STRING Suze_11_not_sel
30108: PPUSH
30109: CALL_OW 28
30113: IFFALSE 30130
// Suze = CreateCharacter ( Suze_11_not_sel ) else
30115: LD_ADDR_EXP 37
30119: PUSH
30120: LD_STRING Suze_11_not_sel
30122: PPUSH
30123: CALL_OW 34
30127: ST_TO_ADDR
30128: GO 30138
// Suze = 0 ;
30130: LD_ADDR_EXP 37
30134: PUSH
30135: LD_INT 0
30137: ST_TO_ADDR
// if TestCharacters ( MarkB_11_cont ) then
30138: LD_STRING MarkB_11_cont
30140: PPUSH
30141: CALL_OW 28
30145: IFFALSE 30162
// MarkB = CreateCharacter ( MarkB_11_cont ) else
30147: LD_ADDR_EXP 38
30151: PUSH
30152: LD_STRING MarkB_11_cont
30154: PPUSH
30155: CALL_OW 34
30159: ST_TO_ADDR
30160: GO 30194
// if TestCharacters ( MarkB_11_not_sel ) then
30162: LD_STRING MarkB_11_not_sel
30164: PPUSH
30165: CALL_OW 28
30169: IFFALSE 30186
// MarkB = CreateCharacter ( MarkB_11_not_sel ) else
30171: LD_ADDR_EXP 38
30175: PUSH
30176: LD_STRING MarkB_11_not_sel
30178: PPUSH
30179: CALL_OW 34
30183: ST_TO_ADDR
30184: GO 30194
// MarkB = 0 ;
30186: LD_ADDR_EXP 38
30190: PUSH
30191: LD_INT 0
30193: ST_TO_ADDR
// if TestCharacters ( Louis_08 ) then
30194: LD_STRING Louis_08
30196: PPUSH
30197: CALL_OW 28
30201: IFFALSE 30218
// Louis = CreateCharacter ( Louis_08 ) else
30203: LD_ADDR_EXP 41
30207: PUSH
30208: LD_STRING Louis_08
30210: PPUSH
30211: CALL_OW 34
30215: ST_TO_ADDR
30216: GO 30226
// Louis = 0 ;
30218: LD_ADDR_EXP 41
30222: PUSH
30223: LD_INT 0
30225: ST_TO_ADDR
// if TestCharacters ( Martin_08 ) and Louis > 0 then
30226: LD_STRING Martin_08
30228: PPUSH
30229: CALL_OW 28
30233: PUSH
30234: LD_EXP 41
30238: PUSH
30239: LD_INT 0
30241: GREATER
30242: AND
30243: IFFALSE 30260
// Martin = CreateCharacter ( Martin_08 ) else
30245: LD_ADDR_EXP 40
30249: PUSH
30250: LD_STRING Martin_08
30252: PPUSH
30253: CALL_OW 34
30257: ST_TO_ADDR
30258: GO 30268
// Martin = 0 ;
30260: LD_ADDR_EXP 40
30264: PUSH
30265: LD_INT 0
30267: ST_TO_ADDR
// if not LoadVariable ( Khattam_accepted_11_cont , true ) and TestCharacters ( Khattam_11_cont ) then
30268: LD_STRING Khattam_accepted_11_cont
30270: PPUSH
30271: LD_INT 1
30273: PPUSH
30274: CALL_OW 30
30278: NOT
30279: PUSH
30280: LD_STRING Khattam_11_cont
30282: PPUSH
30283: CALL_OW 28
30287: AND
30288: IFFALSE 30303
// Khattam = CreateCharacter ( Khattam_11_cont ) ;
30290: LD_ADDR_EXP 19
30294: PUSH
30295: LD_STRING Khattam_11_cont
30297: PPUSH
30298: CALL_OW 34
30302: ST_TO_ADDR
// if TestCharacters ( Willard_10 ) then
30303: LD_STRING Willard_10
30305: PPUSH
30306: CALL_OW 28
30310: IFFALSE 30327
// Hadarach = CreateCharacter ( Willard_10 ) else
30312: LD_ADDR_EXP 44
30316: PUSH
30317: LD_STRING Willard_10
30319: PPUSH
30320: CALL_OW 34
30324: ST_TO_ADDR
30325: GO 30335
// Hadarach = 0 ;
30327: LD_ADDR_EXP 44
30331: PUSH
30332: LD_INT 0
30334: ST_TO_ADDR
// end ; PlaceComputerUnits ( 1 , [ LegionLeader , Kozlov ] , [ ] ) ;
30335: LD_INT 1
30337: PPUSH
30338: LD_EXP 45
30342: PUSH
30343: LD_EXP 43
30347: PUSH
30348: EMPTY
30349: LIST
30350: LIST
30351: PPUSH
30352: EMPTY
30353: PPUSH
30354: CALL 32096 0 3
// if not LegionLeader = Gordon and Gordon > 0 then
30358: LD_EXP 45
30362: PUSH
30363: LD_EXP 42
30367: EQUAL
30368: NOT
30369: PUSH
30370: LD_EXP 42
30374: PUSH
30375: LD_INT 0
30377: GREATER
30378: AND
30379: IFFALSE 30490
// begin DestroyUnit ( ai_soldiers [ 1 ] [ 1 ] ) ;
30381: LD_EXP 50
30385: PUSH
30386: LD_INT 1
30388: ARRAY
30389: PUSH
30390: LD_INT 1
30392: ARRAY
30393: PPUSH
30394: CALL_OW 65
// temp_list = Delete ( ai_soldiers [ 1 ] , 1 ) ^ Gordon ;
30398: LD_ADDR_VAR 0 4
30402: PUSH
30403: LD_EXP 50
30407: PUSH
30408: LD_INT 1
30410: ARRAY
30411: PPUSH
30412: LD_INT 1
30414: PPUSH
30415: CALL_OW 3
30419: PUSH
30420: LD_EXP 42
30424: ADD
30425: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , 1 , temp_list ) ;
30426: LD_ADDR_EXP 50
30430: PUSH
30431: LD_EXP 50
30435: PPUSH
30436: LD_INT 1
30438: PPUSH
30439: LD_VAR 0 4
30443: PPUSH
30444: CALL_OW 1
30448: ST_TO_ADDR
// PlaceUnitXYR ( Gordon , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
30449: LD_EXP 42
30453: PPUSH
30454: LD_EXP 83
30458: PUSH
30459: LD_INT 1
30461: ARRAY
30462: PUSH
30463: LD_INT 1
30465: ARRAY
30466: PPUSH
30467: LD_EXP 83
30471: PUSH
30472: LD_INT 1
30474: ARRAY
30475: PUSH
30476: LD_INT 2
30478: ARRAY
30479: PPUSH
30480: LD_INT 7
30482: PPUSH
30483: LD_INT 0
30485: PPUSH
30486: CALL_OW 50
// end ; if Suze > 0 then
30490: LD_EXP 37
30494: PUSH
30495: LD_INT 0
30497: GREATER
30498: IFFALSE 30609
// begin DestroyUnit ( ai_soldiers [ 1 ] [ 1 ] ) ;
30500: LD_EXP 50
30504: PUSH
30505: LD_INT 1
30507: ARRAY
30508: PUSH
30509: LD_INT 1
30511: ARRAY
30512: PPUSH
30513: CALL_OW 65
// temp_list = Delete ( ai_soldiers [ 1 ] , 1 ) ^ Suze ;
30517: LD_ADDR_VAR 0 4
30521: PUSH
30522: LD_EXP 50
30526: PUSH
30527: LD_INT 1
30529: ARRAY
30530: PPUSH
30531: LD_INT 1
30533: PPUSH
30534: CALL_OW 3
30538: PUSH
30539: LD_EXP 37
30543: ADD
30544: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , 1 , temp_list ) ;
30545: LD_ADDR_EXP 50
30549: PUSH
30550: LD_EXP 50
30554: PPUSH
30555: LD_INT 1
30557: PPUSH
30558: LD_VAR 0 4
30562: PPUSH
30563: CALL_OW 1
30567: ST_TO_ADDR
// PlaceUnitXYR ( Suze , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
30568: LD_EXP 37
30572: PPUSH
30573: LD_EXP 83
30577: PUSH
30578: LD_INT 1
30580: ARRAY
30581: PUSH
30582: LD_INT 1
30584: ARRAY
30585: PPUSH
30586: LD_EXP 83
30590: PUSH
30591: LD_INT 1
30593: ARRAY
30594: PUSH
30595: LD_INT 2
30597: ARRAY
30598: PPUSH
30599: LD_INT 7
30601: PPUSH
30602: LD_INT 0
30604: PPUSH
30605: CALL_OW 50
// end ; if Louis > 0 then
30609: LD_EXP 41
30613: PUSH
30614: LD_INT 0
30616: GREATER
30617: IFFALSE 30728
// begin DestroyUnit ( ai_engineers [ 1 ] [ 1 ] ) ;
30619: LD_EXP 52
30623: PUSH
30624: LD_INT 1
30626: ARRAY
30627: PUSH
30628: LD_INT 1
30630: ARRAY
30631: PPUSH
30632: CALL_OW 65
// temp_list = Delete ( ai_engineers [ 1 ] , 1 ) ^ Louis ;
30636: LD_ADDR_VAR 0 4
30640: PUSH
30641: LD_EXP 52
30645: PUSH
30646: LD_INT 1
30648: ARRAY
30649: PPUSH
30650: LD_INT 1
30652: PPUSH
30653: CALL_OW 3
30657: PUSH
30658: LD_EXP 41
30662: ADD
30663: ST_TO_ADDR
// ai_engineers = Replace ( ai_engineers , 1 , temp_list ) ;
30664: LD_ADDR_EXP 52
30668: PUSH
30669: LD_EXP 52
30673: PPUSH
30674: LD_INT 1
30676: PPUSH
30677: LD_VAR 0 4
30681: PPUSH
30682: CALL_OW 1
30686: ST_TO_ADDR
// PlaceUnitXYR ( Louis , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
30687: LD_EXP 41
30691: PPUSH
30692: LD_EXP 83
30696: PUSH
30697: LD_INT 1
30699: ARRAY
30700: PUSH
30701: LD_INT 1
30703: ARRAY
30704: PPUSH
30705: LD_EXP 83
30709: PUSH
30710: LD_INT 1
30712: ARRAY
30713: PUSH
30714: LD_INT 2
30716: ARRAY
30717: PPUSH
30718: LD_INT 7
30720: PPUSH
30721: LD_INT 0
30723: PPUSH
30724: CALL_OW 50
// end ; if Martin > 0 then
30728: LD_EXP 40
30732: PUSH
30733: LD_INT 0
30735: GREATER
30736: IFFALSE 30847
// begin DestroyUnit ( ai_mechanics_defend [ 1 ] [ 1 ] ) ;
30738: LD_EXP 53
30742: PUSH
30743: LD_INT 1
30745: ARRAY
30746: PUSH
30747: LD_INT 1
30749: ARRAY
30750: PPUSH
30751: CALL_OW 65
// temp_list = Delete ( ai_mechanics_defend [ 1 ] , 1 ) ^ Martin ;
30755: LD_ADDR_VAR 0 4
30759: PUSH
30760: LD_EXP 53
30764: PUSH
30765: LD_INT 1
30767: ARRAY
30768: PPUSH
30769: LD_INT 1
30771: PPUSH
30772: CALL_OW 3
30776: PUSH
30777: LD_EXP 40
30781: ADD
30782: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , 1 , temp_list ) ;
30783: LD_ADDR_EXP 53
30787: PUSH
30788: LD_EXP 53
30792: PPUSH
30793: LD_INT 1
30795: PPUSH
30796: LD_VAR 0 4
30800: PPUSH
30801: CALL_OW 1
30805: ST_TO_ADDR
// PlaceUnitXYR ( Martin , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
30806: LD_EXP 40
30810: PPUSH
30811: LD_EXP 83
30815: PUSH
30816: LD_INT 1
30818: ARRAY
30819: PUSH
30820: LD_INT 1
30822: ARRAY
30823: PPUSH
30824: LD_EXP 83
30828: PUSH
30829: LD_INT 1
30831: ARRAY
30832: PUSH
30833: LD_INT 2
30835: ARRAY
30836: PPUSH
30837: LD_INT 7
30839: PPUSH
30840: LD_INT 0
30842: PPUSH
30843: CALL_OW 50
// end ; if Hadarach > 0 then
30847: LD_EXP 44
30851: PUSH
30852: LD_INT 0
30854: GREATER
30855: IFFALSE 30966
// begin DestroyUnit ( ai_mechanics_defend [ 1 ] [ 1 ] ) ;
30857: LD_EXP 53
30861: PUSH
30862: LD_INT 1
30864: ARRAY
30865: PUSH
30866: LD_INT 1
30868: ARRAY
30869: PPUSH
30870: CALL_OW 65
// temp_list = Delete ( ai_mechanics_defend [ 1 ] , 1 ) ^ Hadarach ;
30874: LD_ADDR_VAR 0 4
30878: PUSH
30879: LD_EXP 53
30883: PUSH
30884: LD_INT 1
30886: ARRAY
30887: PPUSH
30888: LD_INT 1
30890: PPUSH
30891: CALL_OW 3
30895: PUSH
30896: LD_EXP 44
30900: ADD
30901: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , 1 , temp_list ) ;
30902: LD_ADDR_EXP 53
30906: PUSH
30907: LD_EXP 53
30911: PPUSH
30912: LD_INT 1
30914: PPUSH
30915: LD_VAR 0 4
30919: PPUSH
30920: CALL_OW 1
30924: ST_TO_ADDR
// PlaceUnitXYR ( Hadarach , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
30925: LD_EXP 44
30929: PPUSH
30930: LD_EXP 83
30934: PUSH
30935: LD_INT 1
30937: ARRAY
30938: PUSH
30939: LD_INT 1
30941: ARRAY
30942: PPUSH
30943: LD_EXP 83
30947: PUSH
30948: LD_INT 1
30950: ARRAY
30951: PUSH
30952: LD_INT 2
30954: ARRAY
30955: PPUSH
30956: LD_INT 7
30958: PPUSH
30959: LD_INT 0
30961: PPUSH
30962: CALL_OW 50
// end ; if MarkB > 0 then
30966: LD_EXP 38
30970: PUSH
30971: LD_INT 0
30973: GREATER
30974: IFFALSE 31085
// begin DestroyUnit ( ai_scientists [ 1 ] [ 1 ] ) ;
30976: LD_EXP 55
30980: PUSH
30981: LD_INT 1
30983: ARRAY
30984: PUSH
30985: LD_INT 1
30987: ARRAY
30988: PPUSH
30989: CALL_OW 65
// temp_list = Delete ( ai_scientists [ 1 ] , 1 ) ^ MarkB ;
30993: LD_ADDR_VAR 0 4
30997: PUSH
30998: LD_EXP 55
31002: PUSH
31003: LD_INT 1
31005: ARRAY
31006: PPUSH
31007: LD_INT 1
31009: PPUSH
31010: CALL_OW 3
31014: PUSH
31015: LD_EXP 38
31019: ADD
31020: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , 1 , temp_list ) ;
31021: LD_ADDR_EXP 55
31025: PUSH
31026: LD_EXP 55
31030: PPUSH
31031: LD_INT 1
31033: PPUSH
31034: LD_VAR 0 4
31038: PPUSH
31039: CALL_OW 1
31043: ST_TO_ADDR
// PlaceUnitXYR ( MarkB , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
31044: LD_EXP 38
31048: PPUSH
31049: LD_EXP 83
31053: PUSH
31054: LD_INT 1
31056: ARRAY
31057: PUSH
31058: LD_INT 1
31060: ARRAY
31061: PPUSH
31062: LD_EXP 83
31066: PUSH
31067: LD_INT 1
31069: ARRAY
31070: PUSH
31071: LD_INT 2
31073: ARRAY
31074: PPUSH
31075: LD_INT 7
31077: PPUSH
31078: LD_INT 0
31080: PPUSH
31081: CALL_OW 50
// end ; if not LoadVariable ( Khattam_accepted_11_cont , true ) and Khattam > 0 and not testing then
31085: LD_STRING Khattam_accepted_11_cont
31087: PPUSH
31088: LD_INT 1
31090: PPUSH
31091: CALL_OW 30
31095: NOT
31096: PUSH
31097: LD_EXP 19
31101: PUSH
31102: LD_INT 0
31104: GREATER
31105: AND
31106: PUSH
31107: LD_EXP 1
31111: NOT
31112: AND
31113: IFFALSE 31224
// begin DestroyUnit ( ai_scientists [ 1 ] [ 1 ] ) ;
31115: LD_EXP 55
31119: PUSH
31120: LD_INT 1
31122: ARRAY
31123: PUSH
31124: LD_INT 1
31126: ARRAY
31127: PPUSH
31128: CALL_OW 65
// temp_list = Delete ( ai_scientists [ 1 ] , 1 ) ^ Khattam ;
31132: LD_ADDR_VAR 0 4
31136: PUSH
31137: LD_EXP 55
31141: PUSH
31142: LD_INT 1
31144: ARRAY
31145: PPUSH
31146: LD_INT 1
31148: PPUSH
31149: CALL_OW 3
31153: PUSH
31154: LD_EXP 19
31158: ADD
31159: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , 1 , temp_list ) ;
31160: LD_ADDR_EXP 55
31164: PUSH
31165: LD_EXP 55
31169: PPUSH
31170: LD_INT 1
31172: PPUSH
31173: LD_VAR 0 4
31177: PPUSH
31178: CALL_OW 1
31182: ST_TO_ADDR
// PlaceUnitXYR ( Khattam , ai_human_pullback_hex [ 1 ] [ 1 ] , ai_human_pullback_hex [ 1 ] [ 2 ] , 7 , false ) ;
31183: LD_EXP 19
31187: PPUSH
31188: LD_EXP 83
31192: PUSH
31193: LD_INT 1
31195: ARRAY
31196: PUSH
31197: LD_INT 1
31199: ARRAY
31200: PPUSH
31201: LD_EXP 83
31205: PUSH
31206: LD_INT 1
31208: ARRAY
31209: PUSH
31210: LD_INT 2
31212: ARRAY
31213: PPUSH
31214: LD_INT 7
31216: PPUSH
31217: LD_INT 0
31219: PPUSH
31220: CALL_OW 50
// end ; SetTech ( tech_stimdrugs , 8 , state_researched ) ;
31224: LD_INT 5
31226: PPUSH
31227: LD_INT 8
31229: PPUSH
31230: LD_INT 2
31232: PPUSH
31233: CALL_OW 322
// SetTech ( tech_mortar , 8 , state_researched ) ;
31237: LD_INT 41
31239: PPUSH
31240: LD_INT 8
31242: PPUSH
31243: LD_INT 2
31245: PPUSH
31246: CALL_OW 322
// SetTech ( tech_taufield , 3 , state_researched ) ;
31250: LD_INT 30
31252: PPUSH
31253: LD_INT 3
31255: PPUSH
31256: LD_INT 2
31258: PPUSH
31259: CALL_OW 322
// SetTech ( tech_taufield , 7 , state_researched ) ;
31263: LD_INT 30
31265: PPUSH
31266: LD_INT 7
31268: PPUSH
31269: LD_INT 2
31271: PPUSH
31272: CALL_OW 322
// SetTech ( tech_limteleport , 3 , state_researched ) ;
31276: LD_INT 37
31278: PPUSH
31279: LD_INT 3
31281: PPUSH
31282: LD_INT 2
31284: PPUSH
31285: CALL_OW 322
// SetTech ( 31 , 3 , state_researched ) ;
31289: LD_INT 31
31291: PPUSH
31292: LD_INT 3
31294: PPUSH
31295: LD_INT 2
31297: PPUSH
31298: CALL_OW 322
// SetTech ( 31 , 7 , state_researched ) ;
31302: LD_INT 31
31304: PPUSH
31305: LD_INT 7
31307: PPUSH
31308: LD_INT 2
31310: PPUSH
31311: CALL_OW 322
// SetTech ( tech_spacanom , 3 , state_researched ) ;
31315: LD_INT 29
31317: PPUSH
31318: LD_INT 3
31320: PPUSH
31321: LD_INT 2
31323: PPUSH
31324: CALL_OW 322
// SetTech ( tech_taurad , 3 , state_researched ) ;
31328: LD_INT 28
31330: PPUSH
31331: LD_INT 3
31333: PPUSH
31334: LD_INT 2
31336: PPUSH
31337: CALL_OW 322
// SetTech ( tech_bazooka , 3 , state_researched ) ;
31341: LD_INT 44
31343: PPUSH
31344: LD_INT 3
31346: PPUSH
31347: LD_INT 2
31349: PPUSH
31350: CALL_OW 322
// SetTech ( tech_lassight , 1 , state_researched ) ;
31354: LD_INT 12
31356: PPUSH
31357: LD_INT 1
31359: PPUSH
31360: LD_INT 2
31362: PPUSH
31363: CALL_OW 322
// SetTech ( tech_RemCont , 1 , state_researched ) ;
31367: LD_INT 15
31369: PPUSH
31370: LD_INT 1
31372: PPUSH
31373: LD_INT 2
31375: PPUSH
31376: CALL_OW 322
// SetTech ( tech_SibEng , 1 , state_researched ) ;
31380: LD_INT 22
31382: PPUSH
31383: LD_INT 1
31385: PPUSH
31386: LD_INT 2
31388: PPUSH
31389: CALL_OW 322
// SetTech ( tech_SibEng , 3 , state_researched ) ;
31393: LD_INT 22
31395: PPUSH
31396: LD_INT 3
31398: PPUSH
31399: LD_INT 2
31401: PPUSH
31402: CALL_OW 322
// for side in [ 8 , 3 , 1 , 4 , 7 ] do
31406: LD_ADDR_VAR 0 7
31410: PUSH
31411: LD_INT 8
31413: PUSH
31414: LD_INT 3
31416: PUSH
31417: LD_INT 1
31419: PUSH
31420: LD_INT 4
31422: PUSH
31423: LD_INT 7
31425: PUSH
31426: EMPTY
31427: LIST
31428: LIST
31429: LIST
31430: LIST
31431: LIST
31432: PUSH
31433: FOR_IN
31434: IFFALSE 31773
// begin SetTech ( tech_tech1 , side , state_researched ) ;
31436: LD_INT 48
31438: PPUSH
31439: LD_VAR 0 7
31443: PPUSH
31444: LD_INT 2
31446: PPUSH
31447: CALL_OW 322
// SetTech ( tech_tech2 , side , state_researched ) ;
31451: LD_INT 49
31453: PPUSH
31454: LD_VAR 0 7
31458: PPUSH
31459: LD_INT 2
31461: PPUSH
31462: CALL_OW 322
// SetTech ( tech_tech3 , side , state_researched ) ;
31466: LD_INT 50
31468: PPUSH
31469: LD_VAR 0 7
31473: PPUSH
31474: LD_INT 2
31476: PPUSH
31477: CALL_OW 322
// SetTech ( tech_weap1 , side , state_researched ) ;
31481: LD_INT 51
31483: PPUSH
31484: LD_VAR 0 7
31488: PPUSH
31489: LD_INT 2
31491: PPUSH
31492: CALL_OW 322
// SetTech ( tech_sib1 , side , state_researched ) ;
31496: LD_INT 54
31498: PPUSH
31499: LD_VAR 0 7
31503: PPUSH
31504: LD_INT 2
31506: PPUSH
31507: CALL_OW 322
// SetTech ( tech_sib2 , side , state_researched ) ;
31511: LD_INT 55
31513: PPUSH
31514: LD_VAR 0 7
31518: PPUSH
31519: LD_INT 2
31521: PPUSH
31522: CALL_OW 322
// SetTech ( tech_comp1 , side , state_researched ) ;
31526: LD_INT 57
31528: PPUSH
31529: LD_VAR 0 7
31533: PPUSH
31534: LD_INT 2
31536: PPUSH
31537: CALL_OW 322
// SetTech ( tech_opto1 , side , state_researched ) ;
31541: LD_INT 60
31543: PPUSH
31544: LD_VAR 0 7
31548: PPUSH
31549: LD_INT 2
31551: PPUSH
31552: CALL_OW 322
// SetTech ( tech_bio1 , side , state_researched ) ;
31556: LD_INT 66
31558: PPUSH
31559: LD_VAR 0 7
31563: PPUSH
31564: LD_INT 2
31566: PPUSH
31567: CALL_OW 322
// SetTech ( tech_st1 , side , state_researched ) ;
31571: LD_INT 63
31573: PPUSH
31574: LD_VAR 0 7
31578: PPUSH
31579: LD_INT 2
31581: PPUSH
31582: CALL_OW 322
// if difficulty >= 2 then
31586: LD_OWVAR 67
31590: PUSH
31591: LD_INT 2
31593: GREATEREQUAL
31594: IFFALSE 31701
// begin SetTech ( tech_weap2 , side , state_researched ) ;
31596: LD_INT 52
31598: PPUSH
31599: LD_VAR 0 7
31603: PPUSH
31604: LD_INT 2
31606: PPUSH
31607: CALL_OW 322
// SetTech ( tech_sib3 , side , state_researched ) ;
31611: LD_INT 56
31613: PPUSH
31614: LD_VAR 0 7
31618: PPUSH
31619: LD_INT 2
31621: PPUSH
31622: CALL_OW 322
// SetTech ( tech_st2 , side , state_researched ) ;
31626: LD_INT 64
31628: PPUSH
31629: LD_VAR 0 7
31633: PPUSH
31634: LD_INT 2
31636: PPUSH
31637: CALL_OW 322
// SetTech ( tech_comp2 , side , state_researched ) ;
31641: LD_INT 58
31643: PPUSH
31644: LD_VAR 0 7
31648: PPUSH
31649: LD_INT 2
31651: PPUSH
31652: CALL_OW 322
// SetTech ( tech_comp3 , side , state_researched ) ;
31656: LD_INT 59
31658: PPUSH
31659: LD_VAR 0 7
31663: PPUSH
31664: LD_INT 2
31666: PPUSH
31667: CALL_OW 322
// SetTech ( tech_opto2 , side , state_researched ) ;
31671: LD_INT 61
31673: PPUSH
31674: LD_VAR 0 7
31678: PPUSH
31679: LD_INT 2
31681: PPUSH
31682: CALL_OW 322
// SetTech ( tech_bio2 , side , state_researched ) ;
31686: LD_INT 67
31688: PPUSH
31689: LD_VAR 0 7
31693: PPUSH
31694: LD_INT 2
31696: PPUSH
31697: CALL_OW 322
// end ; if difficulty = 3 then
31701: LD_OWVAR 67
31705: PUSH
31706: LD_INT 3
31708: EQUAL
31709: IFFALSE 31771
// begin SetTech ( tech_weap3 , side , state_researched ) ;
31711: LD_INT 53
31713: PPUSH
31714: LD_VAR 0 7
31718: PPUSH
31719: LD_INT 2
31721: PPUSH
31722: CALL_OW 322
// SetTech ( tech_st3 , side , state_researched ) ;
31726: LD_INT 65
31728: PPUSH
31729: LD_VAR 0 7
31733: PPUSH
31734: LD_INT 2
31736: PPUSH
31737: CALL_OW 322
// SetTech ( tech_opto3 , side , state_researched ) ;
31741: LD_INT 62
31743: PPUSH
31744: LD_VAR 0 7
31748: PPUSH
31749: LD_INT 2
31751: PPUSH
31752: CALL_OW 322
// SetTech ( tech_bio3 , side , state_researched ) ;
31756: LD_INT 68
31758: PPUSH
31759: LD_VAR 0 7
31763: PPUSH
31764: LD_INT 2
31766: PPUSH
31767: CALL_OW 322
// end ; end ;
31771: GO 31433
31773: POP
31774: POP
// end ;
31775: LD_VAR 0 1
31779: RET
// export function CreateUnitsWithClass ( num_units , un_class , base ) ; var i , overskill ; begin
31780: LD_INT 0
31782: PPUSH
31783: PPUSH
31784: PPUSH
// result = [ ] ;
31785: LD_ADDR_VAR 0 4
31789: PUSH
31790: EMPTY
31791: ST_TO_ADDR
// InitUc ;
31792: CALL_OW 18
// InitHc ;
31796: CALL_OW 19
// uc_side = GetBaseSide ( base ) ;
31800: LD_ADDR_OWVAR 20
31804: PUSH
31805: LD_VAR 0 3
31809: PPUSH
31810: CALL 40471 0 1
31814: ST_TO_ADDR
// uc_nation = GetBaseNation ( base ) ;
31815: LD_ADDR_OWVAR 21
31819: PUSH
31820: LD_VAR 0 3
31824: PPUSH
31825: CALL 40548 0 1
31829: ST_TO_ADDR
// overskill = [ 6 , 8 , 10 ] [ difficulty ] ;
31830: LD_ADDR_VAR 0 6
31834: PUSH
31835: LD_INT 6
31837: PUSH
31838: LD_INT 8
31840: PUSH
31841: LD_INT 10
31843: PUSH
31844: EMPTY
31845: LIST
31846: LIST
31847: LIST
31848: PUSH
31849: LD_OWVAR 67
31853: ARRAY
31854: ST_TO_ADDR
// for i = 1 to num_units do
31855: LD_ADDR_VAR 0 5
31859: PUSH
31860: DOUBLE
31861: LD_INT 1
31863: DEC
31864: ST_TO_ADDR
31865: LD_VAR 0 1
31869: PUSH
31870: FOR_TO
31871: IFFALSE 31908
// begin PrepareHuman ( false , un_class , overskill ) ;
31873: LD_INT 0
31875: PPUSH
31876: LD_VAR 0 2
31880: PPUSH
31881: LD_VAR 0 6
31885: PPUSH
31886: CALL_OW 380
// result = result ^ CreateHuman ;
31890: LD_ADDR_VAR 0 4
31894: PUSH
31895: LD_VAR 0 4
31899: PUSH
31900: CALL_OW 44
31904: ADD
31905: ST_TO_ADDR
// end ;
31906: GO 31870
31908: POP
31909: POP
// end ;
31910: LD_VAR 0 4
31914: RET
// export function CreateApemenWithClass ( num_units , un_class , base ) ; var i ; begin
31915: LD_INT 0
31917: PPUSH
31918: PPUSH
// result = [ ] ;
31919: LD_ADDR_VAR 0 4
31923: PUSH
31924: EMPTY
31925: ST_TO_ADDR
// InitUc ;
31926: CALL_OW 18
// InitHc ;
31930: CALL_OW 19
// uc_side = GetBaseSide ( base ) ;
31934: LD_ADDR_OWVAR 20
31938: PUSH
31939: LD_VAR 0 3
31943: PPUSH
31944: CALL 40471 0 1
31948: ST_TO_ADDR
// uc_nation = nation_nature ;
31949: LD_ADDR_OWVAR 21
31953: PUSH
31954: LD_INT 0
31956: ST_TO_ADDR
// hc_class = un_class ;
31957: LD_ADDR_OWVAR 28
31961: PUSH
31962: LD_VAR 0 2
31966: ST_TO_ADDR
// for i = 1 to num_units do
31967: LD_ADDR_VAR 0 5
31971: PUSH
31972: DOUBLE
31973: LD_INT 1
31975: DEC
31976: ST_TO_ADDR
31977: LD_VAR 0 1
31981: PUSH
31982: FOR_TO
31983: IFFALSE 32089
// begin hc_attr = [ Rand ( 11 , 13 ) , Rand ( 10 , 11 ) ] ;
31985: LD_ADDR_OWVAR 29
31989: PUSH
31990: LD_INT 11
31992: PPUSH
31993: LD_INT 13
31995: PPUSH
31996: CALL_OW 12
32000: PUSH
32001: LD_INT 10
32003: PPUSH
32004: LD_INT 11
32006: PPUSH
32007: CALL_OW 12
32011: PUSH
32012: EMPTY
32013: LIST
32014: LIST
32015: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
32016: LD_ADDR_OWVAR 27
32020: PUSH
32021: LD_INT 1
32023: PPUSH
32024: LD_INT 2
32026: PPUSH
32027: CALL_OW 12
32031: ST_TO_ADDR
// hc_skills = [ Rand ( 8 , 10 ) , Rand ( 8 , 10 ) , 0 , 0 ] ;
32032: LD_ADDR_OWVAR 31
32036: PUSH
32037: LD_INT 8
32039: PPUSH
32040: LD_INT 10
32042: PPUSH
32043: CALL_OW 12
32047: PUSH
32048: LD_INT 8
32050: PPUSH
32051: LD_INT 10
32053: PPUSH
32054: CALL_OW 12
32058: PUSH
32059: LD_INT 0
32061: PUSH
32062: LD_INT 0
32064: PUSH
32065: EMPTY
32066: LIST
32067: LIST
32068: LIST
32069: LIST
32070: ST_TO_ADDR
// result = result ^ CreateHuman ;
32071: LD_ADDR_VAR 0 4
32075: PUSH
32076: LD_VAR 0 4
32080: PUSH
32081: CALL_OW 44
32085: ADD
32086: ST_TO_ADDR
// end ;
32087: GO 31982
32089: POP
32090: POP
// end ;
32091: LD_VAR 0 4
32095: RET
// function PlaceComputerUnits ( base , un_list , buildings_list ) ; var num , i , b ; begin
32096: LD_INT 0
32098: PPUSH
32099: PPUSH
32100: PPUSH
32101: PPUSH
// num = 1 ;
32102: LD_ADDR_VAR 0 5
32106: PUSH
32107: LD_INT 1
32109: ST_TO_ADDR
// for b in buildings_list do
32110: LD_ADDR_VAR 0 7
32114: PUSH
32115: LD_VAR 0 3
32119: PUSH
32120: FOR_IN
32121: IFFALSE 32218
// begin if num > un_list then
32123: LD_VAR 0 5
32127: PUSH
32128: LD_VAR 0 2
32132: GREATER
32133: IFFALSE 32137
// break ;
32135: GO 32218
// for i = UnitsInside ( b ) + 1 to 6 do
32137: LD_ADDR_VAR 0 6
32141: PUSH
32142: DOUBLE
32143: LD_VAR 0 7
32147: PPUSH
32148: CALL_OW 313
32152: PUSH
32153: LD_INT 1
32155: PLUS
32156: DEC
32157: ST_TO_ADDR
32158: LD_INT 6
32160: PUSH
32161: FOR_TO
32162: IFFALSE 32214
// begin if num > un_list then
32164: LD_VAR 0 5
32168: PUSH
32169: LD_VAR 0 2
32173: GREATER
32174: IFFALSE 32178
// break ;
32176: GO 32214
// PlaceHumanInUnit ( un_list [ num ] , b ) ;
32178: LD_VAR 0 2
32182: PUSH
32183: LD_VAR 0 5
32187: ARRAY
32188: PPUSH
32189: LD_VAR 0 7
32193: PPUSH
32194: CALL_OW 52
// num = num + 1 ;
32198: LD_ADDR_VAR 0 5
32202: PUSH
32203: LD_VAR 0 5
32207: PUSH
32208: LD_INT 1
32210: PLUS
32211: ST_TO_ADDR
// end ;
32212: GO 32161
32214: POP
32215: POP
// end ;
32216: GO 32120
32218: POP
32219: POP
// for i = num to un_list do
32220: LD_ADDR_VAR 0 6
32224: PUSH
32225: DOUBLE
32226: LD_VAR 0 5
32230: DEC
32231: ST_TO_ADDR
32232: LD_VAR 0 2
32236: PUSH
32237: FOR_TO
32238: IFFALSE 32293
// PlaceUnitXYR ( un_list [ i ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] , 7 , false ) ;
32240: LD_VAR 0 2
32244: PUSH
32245: LD_VAR 0 6
32249: ARRAY
32250: PPUSH
32251: LD_EXP 83
32255: PUSH
32256: LD_VAR 0 1
32260: ARRAY
32261: PUSH
32262: LD_INT 1
32264: ARRAY
32265: PPUSH
32266: LD_EXP 83
32270: PUSH
32271: LD_VAR 0 1
32275: ARRAY
32276: PUSH
32277: LD_INT 2
32279: ARRAY
32280: PPUSH
32281: LD_INT 7
32283: PPUSH
32284: LD_INT 0
32286: PPUSH
32287: CALL_OW 50
32291: GO 32237
32293: POP
32294: POP
// end ;
32295: LD_VAR 0 4
32299: RET
// function PrepareMines ; var i , j , k , temp_list1 , temp_list2 , temp , areas , num ; begin
32300: LD_INT 0
32302: PPUSH
32303: PPUSH
32304: PPUSH
32305: PPUSH
32306: PPUSH
32307: PPUSH
32308: PPUSH
32309: PPUSH
32310: PPUSH
// Randomize ;
32311: CALL_OW 10
// areas = [ MineArea1 , MineArea2 , MineArea3 , MineArea6 , MineArea7 ] ;
32315: LD_ADDR_VAR 0 8
32319: PUSH
32320: LD_INT 20
32322: PUSH
32323: LD_INT 21
32325: PUSH
32326: LD_INT 22
32328: PUSH
32329: LD_INT 25
32331: PUSH
32332: LD_INT 26
32334: PUSH
32335: EMPTY
32336: LIST
32337: LIST
32338: LIST
32339: LIST
32340: LIST
32341: ST_TO_ADDR
// num = [ [ 6 , 8 , 10 ] [ difficulty ] , [ 3 , 4 , 5 ] [ difficulty ] , [ 2 , 3 , 4 ] [ difficulty ] , [ 4 , 6 , 8 ] [ difficulty ] , [ 4 , 6 , 8 ] [ difficulty ] ] ;
32342: LD_ADDR_VAR 0 9
32346: PUSH
32347: LD_INT 6
32349: PUSH
32350: LD_INT 8
32352: PUSH
32353: LD_INT 10
32355: PUSH
32356: EMPTY
32357: LIST
32358: LIST
32359: LIST
32360: PUSH
32361: LD_OWVAR 67
32365: ARRAY
32366: PUSH
32367: LD_INT 3
32369: PUSH
32370: LD_INT 4
32372: PUSH
32373: LD_INT 5
32375: PUSH
32376: EMPTY
32377: LIST
32378: LIST
32379: LIST
32380: PUSH
32381: LD_OWVAR 67
32385: ARRAY
32386: PUSH
32387: LD_INT 2
32389: PUSH
32390: LD_INT 3
32392: PUSH
32393: LD_INT 4
32395: PUSH
32396: EMPTY
32397: LIST
32398: LIST
32399: LIST
32400: PUSH
32401: LD_OWVAR 67
32405: ARRAY
32406: PUSH
32407: LD_INT 4
32409: PUSH
32410: LD_INT 6
32412: PUSH
32413: LD_INT 8
32415: PUSH
32416: EMPTY
32417: LIST
32418: LIST
32419: LIST
32420: PUSH
32421: LD_OWVAR 67
32425: ARRAY
32426: PUSH
32427: LD_INT 4
32429: PUSH
32430: LD_INT 6
32432: PUSH
32433: LD_INT 8
32435: PUSH
32436: EMPTY
32437: LIST
32438: LIST
32439: LIST
32440: PUSH
32441: LD_OWVAR 67
32445: ARRAY
32446: PUSH
32447: EMPTY
32448: LIST
32449: LIST
32450: LIST
32451: LIST
32452: LIST
32453: ST_TO_ADDR
// temp_list1 = [ ] ;
32454: LD_ADDR_VAR 0 5
32458: PUSH
32459: EMPTY
32460: ST_TO_ADDR
// temp_list2 = [ ] ;
32461: LD_ADDR_VAR 0 6
32465: PUSH
32466: EMPTY
32467: ST_TO_ADDR
// for i = 1 to areas do
32468: LD_ADDR_VAR 0 2
32472: PUSH
32473: DOUBLE
32474: LD_INT 1
32476: DEC
32477: ST_TO_ADDR
32478: LD_VAR 0 8
32482: PUSH
32483: FOR_TO
32484: IFFALSE 32664
// for j = 1 to num [ i ] do
32486: LD_ADDR_VAR 0 3
32490: PUSH
32491: DOUBLE
32492: LD_INT 1
32494: DEC
32495: ST_TO_ADDR
32496: LD_VAR 0 9
32500: PUSH
32501: LD_VAR 0 2
32505: ARRAY
32506: PUSH
32507: FOR_TO
32508: IFFALSE 32660
// begin for k = 1 to 10 do
32510: LD_ADDR_VAR 0 4
32514: PUSH
32515: DOUBLE
32516: LD_INT 1
32518: DEC
32519: ST_TO_ADDR
32520: LD_INT 10
32522: PUSH
32523: FOR_TO
32524: IFFALSE 32588
// begin temp = RandHexArea ( areas [ i ] , true ) ;
32526: LD_ADDR_VAR 0 7
32530: PUSH
32531: LD_VAR 0 8
32535: PUSH
32536: LD_VAR 0 2
32540: ARRAY
32541: PPUSH
32542: LD_INT 1
32544: PPUSH
32545: CALL_OW 16
32549: ST_TO_ADDR
// if ( not temp [ 1 ] in temp_list1 ) and ( not temp [ 2 ] in temp_list2 ) then
32550: LD_VAR 0 7
32554: PUSH
32555: LD_INT 1
32557: ARRAY
32558: PUSH
32559: LD_VAR 0 5
32563: IN
32564: NOT
32565: PUSH
32566: LD_VAR 0 7
32570: PUSH
32571: LD_INT 2
32573: ARRAY
32574: PUSH
32575: LD_VAR 0 6
32579: IN
32580: NOT
32581: AND
32582: IFFALSE 32586
// break ;
32584: GO 32588
// end ;
32586: GO 32523
32588: POP
32589: POP
// PlaceMine ( temp [ 1 ] , temp [ 2 ] , 8 , 0 ) ;
32590: LD_VAR 0 7
32594: PUSH
32595: LD_INT 1
32597: ARRAY
32598: PPUSH
32599: LD_VAR 0 7
32603: PUSH
32604: LD_INT 2
32606: ARRAY
32607: PPUSH
32608: LD_INT 8
32610: PPUSH
32611: LD_INT 0
32613: PPUSH
32614: CALL_OW 454
// temp_list1 = temp_list1 ^ temp [ 1 ] ;
32618: LD_ADDR_VAR 0 5
32622: PUSH
32623: LD_VAR 0 5
32627: PUSH
32628: LD_VAR 0 7
32632: PUSH
32633: LD_INT 1
32635: ARRAY
32636: ADD
32637: ST_TO_ADDR
// temp_list2 = temp_list2 ^ temp [ 2 ] ;
32638: LD_ADDR_VAR 0 6
32642: PUSH
32643: LD_VAR 0 6
32647: PUSH
32648: LD_VAR 0 7
32652: PUSH
32653: LD_INT 2
32655: ARRAY
32656: ADD
32657: ST_TO_ADDR
// end ;
32658: GO 32507
32660: POP
32661: POP
32662: GO 32483
32664: POP
32665: POP
// for i = 1 to [ 1 , 2 , 3 ] [ difficulty ] do
32666: LD_ADDR_VAR 0 2
32670: PUSH
32671: DOUBLE
32672: LD_INT 1
32674: DEC
32675: ST_TO_ADDR
32676: LD_INT 1
32678: PUSH
32679: LD_INT 2
32681: PUSH
32682: LD_INT 3
32684: PUSH
32685: EMPTY
32686: LIST
32687: LIST
32688: LIST
32689: PUSH
32690: LD_OWVAR 67
32694: ARRAY
32695: PUSH
32696: FOR_TO
32697: IFFALSE 32815
// begin temp = [ [ 117 , 131 ] , [ 115 , 131 ] , [ 113 , 131 ] ] [ i ] ;
32699: LD_ADDR_VAR 0 7
32703: PUSH
32704: LD_INT 117
32706: PUSH
32707: LD_INT 131
32709: PUSH
32710: EMPTY
32711: LIST
32712: LIST
32713: PUSH
32714: LD_INT 115
32716: PUSH
32717: LD_INT 131
32719: PUSH
32720: EMPTY
32721: LIST
32722: LIST
32723: PUSH
32724: LD_INT 113
32726: PUSH
32727: LD_INT 131
32729: PUSH
32730: EMPTY
32731: LIST
32732: LIST
32733: PUSH
32734: EMPTY
32735: LIST
32736: LIST
32737: LIST
32738: PUSH
32739: LD_VAR 0 2
32743: ARRAY
32744: ST_TO_ADDR
// PlaceMine ( temp [ 1 ] , temp [ 2 ] , 8 , 0 ) ;
32745: LD_VAR 0 7
32749: PUSH
32750: LD_INT 1
32752: ARRAY
32753: PPUSH
32754: LD_VAR 0 7
32758: PUSH
32759: LD_INT 2
32761: ARRAY
32762: PPUSH
32763: LD_INT 8
32765: PPUSH
32766: LD_INT 0
32768: PPUSH
32769: CALL_OW 454
// temp_list1 = temp_list1 ^ temp [ 1 ] ;
32773: LD_ADDR_VAR 0 5
32777: PUSH
32778: LD_VAR 0 5
32782: PUSH
32783: LD_VAR 0 7
32787: PUSH
32788: LD_INT 1
32790: ARRAY
32791: ADD
32792: ST_TO_ADDR
// temp_list2 = temp_list2 ^ temp [ 2 ] ;
32793: LD_ADDR_VAR 0 6
32797: PUSH
32798: LD_VAR 0 6
32802: PUSH
32803: LD_VAR 0 7
32807: PUSH
32808: LD_INT 2
32810: ARRAY
32811: ADD
32812: ST_TO_ADDR
// end ;
32813: GO 32696
32815: POP
32816: POP
// if GameStage > 0 then
32817: LD_EXP 237
32821: PUSH
32822: LD_INT 0
32824: GREATER
32825: IFFALSE 33089
// begin areas = [ MineArea4 , MineArea5 ] ;
32827: LD_ADDR_VAR 0 8
32831: PUSH
32832: LD_INT 23
32834: PUSH
32835: LD_INT 24
32837: PUSH
32838: EMPTY
32839: LIST
32840: LIST
32841: ST_TO_ADDR
// num = [ [ 1 , 2 , 3 ] [ difficulty ] , [ 1 , 2 , 3 ] [ difficulty ] ] ;
32842: LD_ADDR_VAR 0 9
32846: PUSH
32847: LD_INT 1
32849: PUSH
32850: LD_INT 2
32852: PUSH
32853: LD_INT 3
32855: PUSH
32856: EMPTY
32857: LIST
32858: LIST
32859: LIST
32860: PUSH
32861: LD_OWVAR 67
32865: ARRAY
32866: PUSH
32867: LD_INT 1
32869: PUSH
32870: LD_INT 2
32872: PUSH
32873: LD_INT 3
32875: PUSH
32876: EMPTY
32877: LIST
32878: LIST
32879: LIST
32880: PUSH
32881: LD_OWVAR 67
32885: ARRAY
32886: PUSH
32887: EMPTY
32888: LIST
32889: LIST
32890: ST_TO_ADDR
// for i = 1 to areas do
32891: LD_ADDR_VAR 0 2
32895: PUSH
32896: DOUBLE
32897: LD_INT 1
32899: DEC
32900: ST_TO_ADDR
32901: LD_VAR 0 8
32905: PUSH
32906: FOR_TO
32907: IFFALSE 33087
// for j = 1 to num [ i ] do
32909: LD_ADDR_VAR 0 3
32913: PUSH
32914: DOUBLE
32915: LD_INT 1
32917: DEC
32918: ST_TO_ADDR
32919: LD_VAR 0 9
32923: PUSH
32924: LD_VAR 0 2
32928: ARRAY
32929: PUSH
32930: FOR_TO
32931: IFFALSE 33083
// begin for k = 1 to 10 do
32933: LD_ADDR_VAR 0 4
32937: PUSH
32938: DOUBLE
32939: LD_INT 1
32941: DEC
32942: ST_TO_ADDR
32943: LD_INT 10
32945: PUSH
32946: FOR_TO
32947: IFFALSE 33011
// begin temp = RandHexArea ( areas [ i ] , true ) ;
32949: LD_ADDR_VAR 0 7
32953: PUSH
32954: LD_VAR 0 8
32958: PUSH
32959: LD_VAR 0 2
32963: ARRAY
32964: PPUSH
32965: LD_INT 1
32967: PPUSH
32968: CALL_OW 16
32972: ST_TO_ADDR
// if ( not temp [ 1 ] in temp_list1 ) and ( not temp [ 2 ] in temp_list2 ) then
32973: LD_VAR 0 7
32977: PUSH
32978: LD_INT 1
32980: ARRAY
32981: PUSH
32982: LD_VAR 0 5
32986: IN
32987: NOT
32988: PUSH
32989: LD_VAR 0 7
32993: PUSH
32994: LD_INT 2
32996: ARRAY
32997: PUSH
32998: LD_VAR 0 6
33002: IN
33003: NOT
33004: AND
33005: IFFALSE 33009
// break ;
33007: GO 33011
// end ;
33009: GO 32946
33011: POP
33012: POP
// PlaceMine ( temp [ 1 ] , temp [ 2 ] , 8 , 0 ) ;
33013: LD_VAR 0 7
33017: PUSH
33018: LD_INT 1
33020: ARRAY
33021: PPUSH
33022: LD_VAR 0 7
33026: PUSH
33027: LD_INT 2
33029: ARRAY
33030: PPUSH
33031: LD_INT 8
33033: PPUSH
33034: LD_INT 0
33036: PPUSH
33037: CALL_OW 454
// temp_list1 = temp_list1 ^ temp [ 1 ] ;
33041: LD_ADDR_VAR 0 5
33045: PUSH
33046: LD_VAR 0 5
33050: PUSH
33051: LD_VAR 0 7
33055: PUSH
33056: LD_INT 1
33058: ARRAY
33059: ADD
33060: ST_TO_ADDR
// temp_list2 = temp_list2 ^ temp [ 2 ] ;
33061: LD_ADDR_VAR 0 6
33065: PUSH
33066: LD_VAR 0 6
33070: PUSH
33071: LD_VAR 0 7
33075: PUSH
33076: LD_INT 2
33078: ARRAY
33079: ADD
33080: ST_TO_ADDR
// end ;
33081: GO 32930
33083: POP
33084: POP
33085: GO 32906
33087: POP
33088: POP
// end ; if GameStage > 1 then
33089: LD_EXP 237
33093: PUSH
33094: LD_INT 1
33096: GREATER
33097: IFFALSE 33361
// begin areas = [ MineArea8 , MineArea9 ] ;
33099: LD_ADDR_VAR 0 8
33103: PUSH
33104: LD_INT 27
33106: PUSH
33107: LD_INT 28
33109: PUSH
33110: EMPTY
33111: LIST
33112: LIST
33113: ST_TO_ADDR
// num = [ [ 3 , 4 , 5 ] [ difficulty ] , [ 3 , 4 , 5 ] [ difficulty ] ] ;
33114: LD_ADDR_VAR 0 9
33118: PUSH
33119: LD_INT 3
33121: PUSH
33122: LD_INT 4
33124: PUSH
33125: LD_INT 5
33127: PUSH
33128: EMPTY
33129: LIST
33130: LIST
33131: LIST
33132: PUSH
33133: LD_OWVAR 67
33137: ARRAY
33138: PUSH
33139: LD_INT 3
33141: PUSH
33142: LD_INT 4
33144: PUSH
33145: LD_INT 5
33147: PUSH
33148: EMPTY
33149: LIST
33150: LIST
33151: LIST
33152: PUSH
33153: LD_OWVAR 67
33157: ARRAY
33158: PUSH
33159: EMPTY
33160: LIST
33161: LIST
33162: ST_TO_ADDR
// for i = 1 to areas do
33163: LD_ADDR_VAR 0 2
33167: PUSH
33168: DOUBLE
33169: LD_INT 1
33171: DEC
33172: ST_TO_ADDR
33173: LD_VAR 0 8
33177: PUSH
33178: FOR_TO
33179: IFFALSE 33359
// for j = 1 to num [ i ] do
33181: LD_ADDR_VAR 0 3
33185: PUSH
33186: DOUBLE
33187: LD_INT 1
33189: DEC
33190: ST_TO_ADDR
33191: LD_VAR 0 9
33195: PUSH
33196: LD_VAR 0 2
33200: ARRAY
33201: PUSH
33202: FOR_TO
33203: IFFALSE 33355
// begin for k = 1 to 10 do
33205: LD_ADDR_VAR 0 4
33209: PUSH
33210: DOUBLE
33211: LD_INT 1
33213: DEC
33214: ST_TO_ADDR
33215: LD_INT 10
33217: PUSH
33218: FOR_TO
33219: IFFALSE 33283
// begin temp = RandHexArea ( areas [ i ] , true ) ;
33221: LD_ADDR_VAR 0 7
33225: PUSH
33226: LD_VAR 0 8
33230: PUSH
33231: LD_VAR 0 2
33235: ARRAY
33236: PPUSH
33237: LD_INT 1
33239: PPUSH
33240: CALL_OW 16
33244: ST_TO_ADDR
// if ( not temp [ 1 ] in temp_list1 ) and ( not temp [ 2 ] in temp_list2 ) then
33245: LD_VAR 0 7
33249: PUSH
33250: LD_INT 1
33252: ARRAY
33253: PUSH
33254: LD_VAR 0 5
33258: IN
33259: NOT
33260: PUSH
33261: LD_VAR 0 7
33265: PUSH
33266: LD_INT 2
33268: ARRAY
33269: PUSH
33270: LD_VAR 0 6
33274: IN
33275: NOT
33276: AND
33277: IFFALSE 33281
// break ;
33279: GO 33283
// end ;
33281: GO 33218
33283: POP
33284: POP
// PlaceMine ( temp [ 1 ] , temp [ 2 ] , 8 , 0 ) ;
33285: LD_VAR 0 7
33289: PUSH
33290: LD_INT 1
33292: ARRAY
33293: PPUSH
33294: LD_VAR 0 7
33298: PUSH
33299: LD_INT 2
33301: ARRAY
33302: PPUSH
33303: LD_INT 8
33305: PPUSH
33306: LD_INT 0
33308: PPUSH
33309: CALL_OW 454
// temp_list1 = temp_list1 ^ temp [ 1 ] ;
33313: LD_ADDR_VAR 0 5
33317: PUSH
33318: LD_VAR 0 5
33322: PUSH
33323: LD_VAR 0 7
33327: PUSH
33328: LD_INT 1
33330: ARRAY
33331: ADD
33332: ST_TO_ADDR
// temp_list2 = temp_list2 ^ temp [ 2 ] ;
33333: LD_ADDR_VAR 0 6
33337: PUSH
33338: LD_VAR 0 6
33342: PUSH
33343: LD_VAR 0 7
33347: PUSH
33348: LD_INT 2
33350: ARRAY
33351: ADD
33352: ST_TO_ADDR
// end ;
33353: GO 33202
33355: POP
33356: POP
33357: GO 33178
33359: POP
33360: POP
// end ; for i = 1 to temp_list1 do
33361: LD_ADDR_VAR 0 2
33365: PUSH
33366: DOUBLE
33367: LD_INT 1
33369: DEC
33370: ST_TO_ADDR
33371: LD_VAR 0 5
33375: PUSH
33376: FOR_TO
33377: IFFALSE 33421
// ai_mines = ai_mines ^ [ [ temp_list1 [ i ] , temp_list2 [ i ] ] ] ;
33379: LD_ADDR_EXP 156
33383: PUSH
33384: LD_EXP 156
33388: PUSH
33389: LD_VAR 0 5
33393: PUSH
33394: LD_VAR 0 2
33398: ARRAY
33399: PUSH
33400: LD_VAR 0 6
33404: PUSH
33405: LD_VAR 0 2
33409: ARRAY
33410: PUSH
33411: EMPTY
33412: LIST
33413: LIST
33414: PUSH
33415: EMPTY
33416: LIST
33417: ADD
33418: ST_TO_ADDR
33419: GO 33376
33421: POP
33422: POP
// end ;
33423: LD_VAR 0 1
33427: RET
// export function DangerousUnits ( list ) ; var weapon_list , i , btype , b , val ; begin
33428: LD_INT 0
33430: PPUSH
33431: PPUSH
33432: PPUSH
33433: PPUSH
33434: PPUSH
33435: PPUSH
// weapon_list = [ us_machine_gun , us_light_gun , us_gatling_gun , us_heavy_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , ar_multimissile_ballista , ar_light_gun , ar_double_machine_gun , ar_gatling_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb , ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_rocket_launcher , ru_heavy_gun , ru_rocket , ru_siberium_rocket , ru_time_lapser ] ;
33436: LD_ADDR_VAR 0 3
33440: PUSH
33441: LD_INT 2
33443: PUSH
33444: LD_INT 3
33446: PUSH
33447: LD_INT 4
33449: PUSH
33450: LD_INT 6
33452: PUSH
33453: LD_INT 7
33455: PUSH
33456: LD_INT 8
33458: PUSH
33459: LD_INT 9
33461: PUSH
33462: LD_INT 10
33464: PUSH
33465: LD_INT 22
33467: PUSH
33468: LD_INT 23
33470: PUSH
33471: LD_INT 24
33473: PUSH
33474: LD_INT 25
33476: PUSH
33477: LD_INT 26
33479: PUSH
33480: LD_INT 27
33482: PUSH
33483: LD_INT 28
33485: PUSH
33486: LD_INT 29
33488: PUSH
33489: LD_INT 42
33491: PUSH
33492: LD_INT 43
33494: PUSH
33495: LD_INT 44
33497: PUSH
33498: LD_INT 45
33500: PUSH
33501: LD_INT 46
33503: PUSH
33504: LD_INT 47
33506: PUSH
33507: LD_INT 48
33509: PUSH
33510: LD_INT 49
33512: PUSH
33513: EMPTY
33514: LIST
33515: LIST
33516: LIST
33517: LIST
33518: LIST
33519: LIST
33520: LIST
33521: LIST
33522: LIST
33523: LIST
33524: LIST
33525: LIST
33526: LIST
33527: LIST
33528: LIST
33529: LIST
33530: LIST
33531: LIST
33532: LIST
33533: LIST
33534: LIST
33535: LIST
33536: LIST
33537: LIST
33538: ST_TO_ADDR
// result = [ ] ;
33539: LD_ADDR_VAR 0 2
33543: PUSH
33544: EMPTY
33545: ST_TO_ADDR
// for i in list do
33546: LD_ADDR_VAR 0 4
33550: PUSH
33551: LD_VAR 0 1
33555: PUSH
33556: FOR_IN
33557: IFFALSE 34005
// case GetType ( i ) of unit_human :
33559: LD_VAR 0 4
33563: PPUSH
33564: CALL_OW 247
33568: PUSH
33569: LD_INT 1
33571: DOUBLE
33572: EQUAL
33573: IFTRUE 33577
33575: GO 33610
33577: POP
// begin if not IsOk ( i ) then
33578: LD_VAR 0 4
33582: PPUSH
33583: CALL_OW 302
33587: NOT
33588: IFFALSE 33592
// continue ;
33590: GO 33556
// result = result ^ i ;
33592: LD_ADDR_VAR 0 2
33596: PUSH
33597: LD_VAR 0 2
33601: PUSH
33602: LD_VAR 0 4
33606: ADD
33607: ST_TO_ADDR
// end ; unit_vehicle :
33608: GO 34003
33610: LD_INT 2
33612: DOUBLE
33613: EQUAL
33614: IFTRUE 33618
33616: GO 33758
33618: POP
// begin if not IsOk ( i ) then
33619: LD_VAR 0 4
33623: PPUSH
33624: CALL_OW 302
33628: NOT
33629: IFFALSE 33633
// continue ;
33631: GO 33556
// case GetControl ( i ) of control_manual , control_rider :
33633: LD_VAR 0 4
33637: PPUSH
33638: CALL_OW 263
33642: PUSH
33643: LD_INT 1
33645: DOUBLE
33646: EQUAL
33647: IFTRUE 33657
33649: LD_INT 4
33651: DOUBLE
33652: EQUAL
33653: IFTRUE 33657
33655: GO 33677
33657: POP
// begin if UnitsInside ( i ) = 0 then
33658: LD_VAR 0 4
33662: PPUSH
33663: CALL_OW 313
33667: PUSH
33668: LD_INT 0
33670: EQUAL
33671: IFFALSE 33675
// continue ;
33673: GO 33556
// end ; control_remote :
33675: GO 33723
33677: LD_INT 2
33679: DOUBLE
33680: EQUAL
33681: IFTRUE 33685
33683: GO 33705
33685: POP
// begin if IsControledBy ( i ) = 0 then
33686: LD_VAR 0 4
33690: PPUSH
33691: CALL_OW 312
33695: PUSH
33696: LD_INT 0
33698: EQUAL
33699: IFFALSE 33703
// continue ;
33701: GO 33556
// end ; control_computer , control_apeman :
33703: GO 33723
33705: LD_INT 3
33707: DOUBLE
33708: EQUAL
33709: IFTRUE 33719
33711: LD_INT 5
33713: DOUBLE
33714: EQUAL
33715: IFTRUE 33719
33717: GO 33722
33719: POP
// begin end ; end ;
33720: GO 33723
33722: POP
// if GetWeapon ( i ) in weapon_list then
33723: LD_VAR 0 4
33727: PPUSH
33728: CALL_OW 264
33732: PUSH
33733: LD_VAR 0 3
33737: IN
33738: IFFALSE 33756
// result = result ^ i ;
33740: LD_ADDR_VAR 0 2
33744: PUSH
33745: LD_VAR 0 2
33749: PUSH
33750: LD_VAR 0 4
33754: ADD
33755: ST_TO_ADDR
// end ; unit_building :
33756: GO 34003
33758: LD_INT 3
33760: DOUBLE
33761: EQUAL
33762: IFTRUE 33766
33764: GO 34002
33766: POP
// begin if not IsOk ( i ) then
33767: LD_VAR 0 4
33771: PPUSH
33772: CALL_OW 302
33776: NOT
33777: IFFALSE 33781
// continue ;
33779: GO 33556
// btype = GetBType ( i ) ;
33781: LD_ADDR_VAR 0 5
33785: PUSH
33786: LD_VAR 0 4
33790: PPUSH
33791: CALL_OW 266
33795: ST_TO_ADDR
// case btype of b_turret :
33796: LD_VAR 0 5
33800: PUSH
33801: LD_INT 33
33803: DOUBLE
33804: EQUAL
33805: IFTRUE 33809
33807: GO 33812
33809: POP
// begin end ; b_bunker , b_breastwork , b_armoury , b_barracks , b_fort :
33810: GO 33867
33812: LD_INT 32
33814: DOUBLE
33815: EQUAL
33816: IFTRUE 33844
33818: LD_INT 31
33820: DOUBLE
33821: EQUAL
33822: IFTRUE 33844
33824: LD_INT 4
33826: DOUBLE
33827: EQUAL
33828: IFTRUE 33844
33830: LD_INT 5
33832: DOUBLE
33833: EQUAL
33834: IFTRUE 33844
33836: LD_INT 35
33838: DOUBLE
33839: EQUAL
33840: IFTRUE 33844
33842: GO 33864
33844: POP
// begin if UnitsInside ( i ) = 0 then
33845: LD_VAR 0 4
33849: PPUSH
33850: CALL_OW 313
33854: PUSH
33855: LD_INT 0
33857: EQUAL
33858: IFFALSE 33862
// continue ;
33860: GO 33556
// end ; else
33862: GO 33867
33864: POP
// continue ; end ;
33865: GO 33556
// if btype in [ b_bunker , b_turret ] then
33867: LD_VAR 0 5
33871: PUSH
33872: LD_INT 32
33874: PUSH
33875: LD_INT 33
33877: PUSH
33878: EMPTY
33879: LIST
33880: LIST
33881: IN
33882: IFFALSE 33984
// if not GetBWeapon ( i ) in weapon_list then
33884: LD_VAR 0 4
33888: PPUSH
33889: CALL_OW 269
33893: PUSH
33894: LD_VAR 0 3
33898: IN
33899: NOT
33900: IFFALSE 33906
// continue else
33902: GO 33556
33904: GO 33984
// begin b = GetBase ( i ) ;
33906: LD_ADDR_VAR 0 6
33910: PUSH
33911: LD_VAR 0 4
33915: PPUSH
33916: CALL_OW 274
33920: ST_TO_ADDR
// val = false ;
33921: LD_ADDR_VAR 0 7
33925: PUSH
33926: LD_INT 0
33928: ST_TO_ADDR
// if b = 0 then
33929: LD_VAR 0 6
33933: PUSH
33934: LD_INT 0
33936: EQUAL
33937: IFFALSE 33949
// val = true else
33939: LD_ADDR_VAR 0 7
33943: PUSH
33944: LD_INT 1
33946: ST_TO_ADDR
33947: GO 33976
// if GetEnergy ( b ) [ 4 ] = 0 then
33949: LD_VAR 0 6
33953: PPUSH
33954: CALL_OW 278
33958: PUSH
33959: LD_INT 4
33961: ARRAY
33962: PUSH
33963: LD_INT 0
33965: EQUAL
33966: IFFALSE 33976
// val = true ;
33968: LD_ADDR_VAR 0 7
33972: PUSH
33973: LD_INT 1
33975: ST_TO_ADDR
// if val then
33976: LD_VAR 0 7
33980: IFFALSE 33984
// continue ;
33982: GO 33556
// end ; result = result ^ i ;
33984: LD_ADDR_VAR 0 2
33988: PUSH
33989: LD_VAR 0 2
33993: PUSH
33994: LD_VAR 0 4
33998: ADD
33999: ST_TO_ADDR
// end ; end ;
34000: GO 34003
34002: POP
34003: GO 33556
34005: POP
34006: POP
// end ;
34007: LD_VAR 0 2
34011: RET
// export function WeaponsForPatrol ( n ) ; var temp , temp_list , temp_list2 , i , j ; begin
34012: LD_INT 0
34014: PPUSH
34015: PPUSH
34016: PPUSH
34017: PPUSH
34018: PPUSH
34019: PPUSH
// temp_list = [ ] ;
34020: LD_ADDR_VAR 0 4
34024: PUSH
34025: EMPTY
34026: ST_TO_ADDR
// temp_list2 = [ ] ;
34027: LD_ADDR_VAR 0 5
34031: PUSH
34032: EMPTY
34033: ST_TO_ADDR
// if n = 1 then
34034: LD_VAR 0 1
34038: PUSH
34039: LD_INT 1
34041: EQUAL
34042: IFFALSE 34716
// begin temp_list = [ ar_rocket_launcher , ar_rocket_launcher , ar_gatling_gun , ar_radar ] ;
34044: LD_ADDR_VAR 0 4
34048: PUSH
34049: LD_INT 28
34051: PUSH
34052: LD_INT 28
34054: PUSH
34055: LD_INT 25
34057: PUSH
34058: LD_INT 30
34060: PUSH
34061: EMPTY
34062: LIST
34063: LIST
34064: LIST
34065: LIST
34066: ST_TO_ADDR
// case GameStage of 0 :
34067: LD_EXP 237
34071: PUSH
34072: LD_INT 0
34074: DOUBLE
34075: EQUAL
34076: IFTRUE 34080
34078: GO 34311
34080: POP
// if difficulty = 1 then
34081: LD_OWVAR 67
34085: PUSH
34086: LD_INT 1
34088: EQUAL
34089: IFFALSE 34118
// temp_list = temp_list ^ [ ar_flame_thrower , ar_flame_thrower , ar_gatling_gun ] else
34091: LD_ADDR_VAR 0 4
34095: PUSH
34096: LD_VAR 0 4
34100: PUSH
34101: LD_INT 26
34103: PUSH
34104: LD_INT 26
34106: PUSH
34107: LD_INT 25
34109: PUSH
34110: EMPTY
34111: LIST
34112: LIST
34113: LIST
34114: ADD
34115: ST_TO_ADDR
34116: GO 34309
// if difficulty = 2 then
34118: LD_OWVAR 67
34122: PUSH
34123: LD_INT 2
34125: EQUAL
34126: IFFALSE 34241
// begin if Rand ( 1 , 2 ) = 1 then
34128: LD_INT 1
34130: PPUSH
34131: LD_INT 2
34133: PPUSH
34134: CALL_OW 12
34138: PUSH
34139: LD_INT 1
34141: EQUAL
34142: IFFALSE 34171
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_gatling_gun ] else
34144: LD_ADDR_VAR 0 4
34148: PUSH
34149: LD_VAR 0 4
34153: PUSH
34154: LD_INT 29
34156: PUSH
34157: LD_INT 29
34159: PUSH
34160: LD_INT 25
34162: PUSH
34163: EMPTY
34164: LIST
34165: LIST
34166: LIST
34167: ADD
34168: ST_TO_ADDR
34169: GO 34239
// if Rand ( 1 , 2 ) = 1 then
34171: LD_INT 1
34173: PPUSH
34174: LD_INT 2
34176: PPUSH
34177: CALL_OW 12
34181: PUSH
34182: LD_INT 1
34184: EQUAL
34185: IFFALSE 34214
// temp_list = temp_list ^ [ ar_flame_thrower , ar_flame_thrower , ar_gatling_gun ] else
34187: LD_ADDR_VAR 0 4
34191: PUSH
34192: LD_VAR 0 4
34196: PUSH
34197: LD_INT 26
34199: PUSH
34200: LD_INT 26
34202: PUSH
34203: LD_INT 25
34205: PUSH
34206: EMPTY
34207: LIST
34208: LIST
34209: LIST
34210: ADD
34211: ST_TO_ADDR
34212: GO 34239
// temp_list = temp_list ^ [ ar_gun , ar_gun , ar_gatling_gun ] ;
34214: LD_ADDR_VAR 0 4
34218: PUSH
34219: LD_VAR 0 4
34223: PUSH
34224: LD_INT 27
34226: PUSH
34227: LD_INT 27
34229: PUSH
34230: LD_INT 25
34232: PUSH
34233: EMPTY
34234: LIST
34235: LIST
34236: LIST
34237: ADD
34238: ST_TO_ADDR
// end else
34239: GO 34309
// if Rand ( 1 , 2 ) = 1 then
34241: LD_INT 1
34243: PPUSH
34244: LD_INT 2
34246: PPUSH
34247: CALL_OW 12
34251: PUSH
34252: LD_INT 1
34254: EQUAL
34255: IFFALSE 34284
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_selfpropelled_bomb ] else
34257: LD_ADDR_VAR 0 4
34261: PUSH
34262: LD_VAR 0 4
34266: PUSH
34267: LD_INT 29
34269: PUSH
34270: LD_INT 29
34272: PUSH
34273: LD_INT 29
34275: PUSH
34276: EMPTY
34277: LIST
34278: LIST
34279: LIST
34280: ADD
34281: ST_TO_ADDR
34282: GO 34309
// temp_list = temp_list ^ [ ar_gun , ar_gun , ar_gatling_gun ] ; 1 :
34284: LD_ADDR_VAR 0 4
34288: PUSH
34289: LD_VAR 0 4
34293: PUSH
34294: LD_INT 27
34296: PUSH
34297: LD_INT 27
34299: PUSH
34300: LD_INT 25
34302: PUSH
34303: EMPTY
34304: LIST
34305: LIST
34306: LIST
34307: ADD
34308: ST_TO_ADDR
34309: GO 34704
34311: LD_INT 1
34313: DOUBLE
34314: EQUAL
34315: IFTRUE 34319
34317: GO 34550
34319: POP
// if difficulty = 1 then
34320: LD_OWVAR 67
34324: PUSH
34325: LD_INT 1
34327: EQUAL
34328: IFFALSE 34443
// begin if Rand ( 1 , 2 ) = 1 then
34330: LD_INT 1
34332: PPUSH
34333: LD_INT 2
34335: PPUSH
34336: CALL_OW 12
34340: PUSH
34341: LD_INT 1
34343: EQUAL
34344: IFFALSE 34373
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_gatling_gun ] else
34346: LD_ADDR_VAR 0 4
34350: PUSH
34351: LD_VAR 0 4
34355: PUSH
34356: LD_INT 29
34358: PUSH
34359: LD_INT 29
34361: PUSH
34362: LD_INT 25
34364: PUSH
34365: EMPTY
34366: LIST
34367: LIST
34368: LIST
34369: ADD
34370: ST_TO_ADDR
34371: GO 34441
// if Rand ( 1 , 2 ) = 1 then
34373: LD_INT 1
34375: PPUSH
34376: LD_INT 2
34378: PPUSH
34379: CALL_OW 12
34383: PUSH
34384: LD_INT 1
34386: EQUAL
34387: IFFALSE 34416
// temp_list = temp_list ^ [ ar_flame_thrower , ar_flame_thrower , ar_gatling_gun ] else
34389: LD_ADDR_VAR 0 4
34393: PUSH
34394: LD_VAR 0 4
34398: PUSH
34399: LD_INT 26
34401: PUSH
34402: LD_INT 26
34404: PUSH
34405: LD_INT 25
34407: PUSH
34408: EMPTY
34409: LIST
34410: LIST
34411: LIST
34412: ADD
34413: ST_TO_ADDR
34414: GO 34441
// temp_list = temp_list ^ [ ar_gun , ar_gun , ar_gatling_gun ] ;
34416: LD_ADDR_VAR 0 4
34420: PUSH
34421: LD_VAR 0 4
34425: PUSH
34426: LD_INT 27
34428: PUSH
34429: LD_INT 27
34431: PUSH
34432: LD_INT 25
34434: PUSH
34435: EMPTY
34436: LIST
34437: LIST
34438: LIST
34439: ADD
34440: ST_TO_ADDR
// end else
34441: GO 34548
// if difficulty = 2 then
34443: LD_OWVAR 67
34447: PUSH
34448: LD_INT 2
34450: EQUAL
34451: IFFALSE 34523
// begin if Rand ( 1 , 2 ) = 1 then
34453: LD_INT 1
34455: PPUSH
34456: LD_INT 2
34458: PPUSH
34459: CALL_OW 12
34463: PUSH
34464: LD_INT 1
34466: EQUAL
34467: IFFALSE 34496
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_gatling_gun ] else
34469: LD_ADDR_VAR 0 4
34473: PUSH
34474: LD_VAR 0 4
34478: PUSH
34479: LD_INT 29
34481: PUSH
34482: LD_INT 29
34484: PUSH
34485: LD_INT 25
34487: PUSH
34488: EMPTY
34489: LIST
34490: LIST
34491: LIST
34492: ADD
34493: ST_TO_ADDR
34494: GO 34521
// temp_list = temp_list ^ [ ar_gun , ar_gun , ar_gatling_gun ] ;
34496: LD_ADDR_VAR 0 4
34500: PUSH
34501: LD_VAR 0 4
34505: PUSH
34506: LD_INT 27
34508: PUSH
34509: LD_INT 27
34511: PUSH
34512: LD_INT 25
34514: PUSH
34515: EMPTY
34516: LIST
34517: LIST
34518: LIST
34519: ADD
34520: ST_TO_ADDR
// end else
34521: GO 34548
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_selfpropelled_bomb ] ; 2 :
34523: LD_ADDR_VAR 0 4
34527: PUSH
34528: LD_VAR 0 4
34532: PUSH
34533: LD_INT 29
34535: PUSH
34536: LD_INT 29
34538: PUSH
34539: LD_INT 29
34541: PUSH
34542: EMPTY
34543: LIST
34544: LIST
34545: LIST
34546: ADD
34547: ST_TO_ADDR
34548: GO 34704
34550: LD_INT 2
34552: DOUBLE
34553: EQUAL
34554: IFTRUE 34558
34556: GO 34703
34558: POP
// if difficulty = 1 then
34559: LD_OWVAR 67
34563: PUSH
34564: LD_INT 1
34566: EQUAL
34567: IFFALSE 34639
// begin if Rand ( 1 , 2 ) = 1 then
34569: LD_INT 1
34571: PPUSH
34572: LD_INT 2
34574: PPUSH
34575: CALL_OW 12
34579: PUSH
34580: LD_INT 1
34582: EQUAL
34583: IFFALSE 34612
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_gatling_gun ] else
34585: LD_ADDR_VAR 0 4
34589: PUSH
34590: LD_VAR 0 4
34594: PUSH
34595: LD_INT 29
34597: PUSH
34598: LD_INT 29
34600: PUSH
34601: LD_INT 25
34603: PUSH
34604: EMPTY
34605: LIST
34606: LIST
34607: LIST
34608: ADD
34609: ST_TO_ADDR
34610: GO 34637
// temp_list = temp_list ^ [ ar_gun , ar_gun , ar_gatling_gun ] ;
34612: LD_ADDR_VAR 0 4
34616: PUSH
34617: LD_VAR 0 4
34621: PUSH
34622: LD_INT 27
34624: PUSH
34625: LD_INT 27
34627: PUSH
34628: LD_INT 25
34630: PUSH
34631: EMPTY
34632: LIST
34633: LIST
34634: LIST
34635: ADD
34636: ST_TO_ADDR
// end else
34637: GO 34701
// if difficulty = 2 then
34639: LD_OWVAR 67
34643: PUSH
34644: LD_INT 2
34646: EQUAL
34647: IFFALSE 34676
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_gatling_gun ] else
34649: LD_ADDR_VAR 0 4
34653: PUSH
34654: LD_VAR 0 4
34658: PUSH
34659: LD_INT 29
34661: PUSH
34662: LD_INT 29
34664: PUSH
34665: LD_INT 25
34667: PUSH
34668: EMPTY
34669: LIST
34670: LIST
34671: LIST
34672: ADD
34673: ST_TO_ADDR
34674: GO 34701
// temp_list = temp_list ^ [ ar_selfpropelled_bomb , ar_selfpropelled_bomb , ar_selfpropelled_bomb ] ; end ;
34676: LD_ADDR_VAR 0 4
34680: PUSH
34681: LD_VAR 0 4
34685: PUSH
34686: LD_INT 29
34688: PUSH
34689: LD_INT 29
34691: PUSH
34692: LD_INT 29
34694: PUSH
34695: EMPTY
34696: LIST
34697: LIST
34698: LIST
34699: ADD
34700: ST_TO_ADDR
34701: GO 34704
34703: POP
// result = temp_list ;
34704: LD_ADDR_VAR 0 2
34708: PUSH
34709: LD_VAR 0 4
34713: ST_TO_ADDR
// exit ;
34714: GO 36377
// end ; if n = 2 then
34716: LD_VAR 0 1
34720: PUSH
34721: LD_INT 2
34723: EQUAL
34724: IFFALSE 36377
// begin temp_list = [ us_rocket_launcher , us_rocket_launcher , us_radar ] ;
34726: LD_ADDR_VAR 0 4
34730: PUSH
34731: LD_INT 7
34733: PUSH
34734: LD_INT 7
34736: PUSH
34737: LD_INT 11
34739: PUSH
34740: EMPTY
34741: LIST
34742: LIST
34743: LIST
34744: ST_TO_ADDR
// case GameStage of 0 :
34745: LD_EXP 237
34749: PUSH
34750: LD_INT 0
34752: DOUBLE
34753: EQUAL
34754: IFTRUE 34758
34756: GO 35327
34758: POP
// if difficulty = 1 then
34759: LD_OWVAR 67
34763: PUSH
34764: LD_INT 1
34766: EQUAL
34767: IFFALSE 34838
// begin for i = 1 to 4 do
34769: LD_ADDR_VAR 0 6
34773: PUSH
34774: DOUBLE
34775: LD_INT 1
34777: DEC
34778: ST_TO_ADDR
34779: LD_INT 4
34781: PUSH
34782: FOR_TO
34783: IFFALSE 34834
// begin temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
34785: LD_ADDR_VAR 0 4
34789: PUSH
34790: LD_VAR 0 4
34794: PUSH
34795: LD_INT 5
34797: PUSH
34798: LD_INT 4
34800: PUSH
34801: EMPTY
34802: LIST
34803: LIST
34804: PUSH
34805: LD_INT 1
34807: PPUSH
34808: LD_INT 2
34810: PPUSH
34811: CALL_OW 12
34815: ARRAY
34816: ADD
34817: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
34818: LD_ADDR_VAR 0 5
34822: PUSH
34823: LD_VAR 0 5
34827: PUSH
34828: LD_INT 3
34830: ADD
34831: ST_TO_ADDR
// end ;
34832: GO 34782
34834: POP
34835: POP
// end else
34836: GO 35325
// if Difficulty = 2 then
34838: LD_OWVAR 67
34842: PUSH
34843: LD_INT 2
34845: EQUAL
34846: IFFALSE 35182
// begin if Rand ( 1 , 2 ) = 1 then
34848: LD_INT 1
34850: PPUSH
34851: LD_INT 2
34853: PPUSH
34854: CALL_OW 12
34858: PUSH
34859: LD_INT 1
34861: EQUAL
34862: IFFALSE 35028
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser ] ;
34864: LD_ADDR_VAR 0 4
34868: PUSH
34869: LD_VAR 0 4
34873: PUSH
34874: LD_INT 10
34876: PUSH
34877: LD_INT 10
34879: PUSH
34880: LD_INT 10
34882: PUSH
34883: EMPTY
34884: LIST
34885: LIST
34886: LIST
34887: ADD
34888: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling ] ;
34889: LD_ADDR_VAR 0 5
34893: PUSH
34894: LD_VAR 0 5
34898: PUSH
34899: LD_INT 5
34901: PUSH
34902: LD_INT 5
34904: PUSH
34905: LD_INT 5
34907: PUSH
34908: EMPTY
34909: LIST
34910: LIST
34911: LIST
34912: ADD
34913: ST_TO_ADDR
// if Rand ( 1 , 2 ) = 1 then
34914: LD_INT 1
34916: PPUSH
34917: LD_INT 2
34919: PPUSH
34920: CALL_OW 12
34924: PUSH
34925: LD_INT 1
34927: EQUAL
34928: IFFALSE 34979
// begin temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
34930: LD_ADDR_VAR 0 4
34934: PUSH
34935: LD_VAR 0 4
34939: PUSH
34940: LD_INT 5
34942: PUSH
34943: LD_INT 4
34945: PUSH
34946: EMPTY
34947: LIST
34948: LIST
34949: PUSH
34950: LD_INT 1
34952: PPUSH
34953: LD_INT 2
34955: PPUSH
34956: CALL_OW 12
34960: ARRAY
34961: ADD
34962: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
34963: LD_ADDR_VAR 0 5
34967: PUSH
34968: LD_VAR 0 5
34972: PUSH
34973: LD_INT 3
34975: ADD
34976: ST_TO_ADDR
// end else
34977: GO 35026
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
34979: LD_ADDR_VAR 0 4
34983: PUSH
34984: LD_VAR 0 4
34988: PUSH
34989: LD_INT 6
34991: PUSH
34992: LD_INT 9
34994: PUSH
34995: EMPTY
34996: LIST
34997: LIST
34998: PUSH
34999: LD_INT 1
35001: PPUSH
35002: LD_INT 2
35004: PPUSH
35005: CALL_OW 12
35009: ARRAY
35010: ADD
35011: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35012: LD_ADDR_VAR 0 5
35016: PUSH
35017: LD_VAR 0 5
35021: PUSH
35022: LD_INT 5
35024: ADD
35025: ST_TO_ADDR
// end ; end else
35026: GO 35180
// if Rand ( 1 , 2 ) = 1 then
35028: LD_INT 1
35030: PPUSH
35031: LD_INT 2
35033: PPUSH
35034: CALL_OW 12
35038: PUSH
35039: LD_INT 1
35041: EQUAL
35042: IFFALSE 35113
// begin for i = 1 to 4 do
35044: LD_ADDR_VAR 0 6
35048: PUSH
35049: DOUBLE
35050: LD_INT 1
35052: DEC
35053: ST_TO_ADDR
35054: LD_INT 4
35056: PUSH
35057: FOR_TO
35058: IFFALSE 35109
// begin temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
35060: LD_ADDR_VAR 0 4
35064: PUSH
35065: LD_VAR 0 4
35069: PUSH
35070: LD_INT 5
35072: PUSH
35073: LD_INT 4
35075: PUSH
35076: EMPTY
35077: LIST
35078: LIST
35079: PUSH
35080: LD_INT 1
35082: PPUSH
35083: LD_INT 2
35085: PPUSH
35086: CALL_OW 12
35090: ARRAY
35091: ADD
35092: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
35093: LD_ADDR_VAR 0 5
35097: PUSH
35098: LD_VAR 0 5
35102: PUSH
35103: LD_INT 3
35105: ADD
35106: ST_TO_ADDR
// end ;
35107: GO 35057
35109: POP
35110: POP
// end else
35111: GO 35180
// for i = 1 to 4 do
35113: LD_ADDR_VAR 0 6
35117: PUSH
35118: DOUBLE
35119: LD_INT 1
35121: DEC
35122: ST_TO_ADDR
35123: LD_INT 4
35125: PUSH
35126: FOR_TO
35127: IFFALSE 35178
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35129: LD_ADDR_VAR 0 4
35133: PUSH
35134: LD_VAR 0 4
35138: PUSH
35139: LD_INT 6
35141: PUSH
35142: LD_INT 9
35144: PUSH
35145: EMPTY
35146: LIST
35147: LIST
35148: PUSH
35149: LD_INT 1
35151: PPUSH
35152: LD_INT 2
35154: PPUSH
35155: CALL_OW 12
35159: ARRAY
35160: ADD
35161: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35162: LD_ADDR_VAR 0 5
35166: PUSH
35167: LD_VAR 0 5
35171: PUSH
35172: LD_INT 5
35174: ADD
35175: ST_TO_ADDR
// end ;
35176: GO 35126
35178: POP
35179: POP
// end else
35180: GO 35325
// if Rand ( 1 , 2 ) = 1 then
35182: LD_INT 1
35184: PPUSH
35185: LD_INT 2
35187: PPUSH
35188: CALL_OW 12
35192: PUSH
35193: LD_INT 1
35195: EQUAL
35196: IFFALSE 35258
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser , us_double_laser ] ;
35198: LD_ADDR_VAR 0 4
35202: PUSH
35203: LD_VAR 0 4
35207: PUSH
35208: LD_INT 10
35210: PUSH
35211: LD_INT 10
35213: PUSH
35214: LD_INT 10
35216: PUSH
35217: LD_INT 10
35219: PUSH
35220: EMPTY
35221: LIST
35222: LIST
35223: LIST
35224: LIST
35225: ADD
35226: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
35227: LD_ADDR_VAR 0 5
35231: PUSH
35232: LD_VAR 0 5
35236: PUSH
35237: LD_INT 5
35239: PUSH
35240: LD_INT 5
35242: PUSH
35243: LD_INT 5
35245: PUSH
35246: LD_INT 5
35248: PUSH
35249: EMPTY
35250: LIST
35251: LIST
35252: LIST
35253: LIST
35254: ADD
35255: ST_TO_ADDR
// end else
35256: GO 35325
// for i = 1 to 4 do
35258: LD_ADDR_VAR 0 6
35262: PUSH
35263: DOUBLE
35264: LD_INT 1
35266: DEC
35267: ST_TO_ADDR
35268: LD_INT 4
35270: PUSH
35271: FOR_TO
35272: IFFALSE 35323
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35274: LD_ADDR_VAR 0 4
35278: PUSH
35279: LD_VAR 0 4
35283: PUSH
35284: LD_INT 6
35286: PUSH
35287: LD_INT 9
35289: PUSH
35290: EMPTY
35291: LIST
35292: LIST
35293: PUSH
35294: LD_INT 1
35296: PPUSH
35297: LD_INT 2
35299: PPUSH
35300: CALL_OW 12
35304: ARRAY
35305: ADD
35306: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35307: LD_ADDR_VAR 0 5
35311: PUSH
35312: LD_VAR 0 5
35316: PUSH
35317: LD_INT 5
35319: ADD
35320: ST_TO_ADDR
// end ; 1 :
35321: GO 35271
35323: POP
35324: POP
35325: GO 36367
35327: LD_INT 1
35329: DOUBLE
35330: EQUAL
35331: IFTRUE 35335
35333: GO 36000
35335: POP
// if difficulty = 1 then
35336: LD_OWVAR 67
35340: PUSH
35341: LD_INT 1
35343: EQUAL
35344: IFFALSE 35766
// begin if Rand ( 1 , 2 ) = 1 then
35346: LD_INT 1
35348: PPUSH
35349: LD_INT 2
35351: PPUSH
35352: CALL_OW 12
35356: PUSH
35357: LD_INT 1
35359: EQUAL
35360: IFFALSE 35612
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser ] ;
35362: LD_ADDR_VAR 0 4
35366: PUSH
35367: LD_VAR 0 4
35371: PUSH
35372: LD_INT 10
35374: PUSH
35375: LD_INT 10
35377: PUSH
35378: EMPTY
35379: LIST
35380: LIST
35381: ADD
35382: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling ] ;
35383: LD_ADDR_VAR 0 5
35387: PUSH
35388: LD_VAR 0 5
35392: PUSH
35393: LD_INT 5
35395: PUSH
35396: LD_INT 5
35398: PUSH
35399: EMPTY
35400: LIST
35401: LIST
35402: ADD
35403: ST_TO_ADDR
// if Rand ( 1 , 2 ) = 1 then
35404: LD_INT 1
35406: PPUSH
35407: LD_INT 2
35409: PPUSH
35410: CALL_OW 12
35414: PUSH
35415: LD_INT 1
35417: EQUAL
35418: IFFALSE 35516
// begin temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
35420: LD_ADDR_VAR 0 4
35424: PUSH
35425: LD_VAR 0 4
35429: PUSH
35430: LD_INT 5
35432: PUSH
35433: LD_INT 4
35435: PUSH
35436: EMPTY
35437: LIST
35438: LIST
35439: PUSH
35440: LD_INT 1
35442: PPUSH
35443: LD_INT 2
35445: PPUSH
35446: CALL_OW 12
35450: ARRAY
35451: ADD
35452: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
35453: LD_ADDR_VAR 0 5
35457: PUSH
35458: LD_VAR 0 5
35462: PUSH
35463: LD_INT 3
35465: ADD
35466: ST_TO_ADDR
// temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
35467: LD_ADDR_VAR 0 4
35471: PUSH
35472: LD_VAR 0 4
35476: PUSH
35477: LD_INT 5
35479: PUSH
35480: LD_INT 4
35482: PUSH
35483: EMPTY
35484: LIST
35485: LIST
35486: PUSH
35487: LD_INT 1
35489: PPUSH
35490: LD_INT 2
35492: PPUSH
35493: CALL_OW 12
35497: ARRAY
35498: ADD
35499: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
35500: LD_ADDR_VAR 0 5
35504: PUSH
35505: LD_VAR 0 5
35509: PUSH
35510: LD_INT 3
35512: ADD
35513: ST_TO_ADDR
// end else
35514: GO 35610
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35516: LD_ADDR_VAR 0 4
35520: PUSH
35521: LD_VAR 0 4
35525: PUSH
35526: LD_INT 6
35528: PUSH
35529: LD_INT 9
35531: PUSH
35532: EMPTY
35533: LIST
35534: LIST
35535: PUSH
35536: LD_INT 1
35538: PPUSH
35539: LD_INT 2
35541: PPUSH
35542: CALL_OW 12
35546: ARRAY
35547: ADD
35548: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35549: LD_ADDR_VAR 0 5
35553: PUSH
35554: LD_VAR 0 5
35558: PUSH
35559: LD_INT 5
35561: ADD
35562: ST_TO_ADDR
// temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35563: LD_ADDR_VAR 0 4
35567: PUSH
35568: LD_VAR 0 4
35572: PUSH
35573: LD_INT 6
35575: PUSH
35576: LD_INT 9
35578: PUSH
35579: EMPTY
35580: LIST
35581: LIST
35582: PUSH
35583: LD_INT 1
35585: PPUSH
35586: LD_INT 2
35588: PPUSH
35589: CALL_OW 12
35593: ARRAY
35594: ADD
35595: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35596: LD_ADDR_VAR 0 5
35600: PUSH
35601: LD_VAR 0 5
35605: PUSH
35606: LD_INT 5
35608: ADD
35609: ST_TO_ADDR
// end ; end else
35610: GO 35764
// if Rand ( 1 , 2 ) = 1 then
35612: LD_INT 1
35614: PPUSH
35615: LD_INT 2
35617: PPUSH
35618: CALL_OW 12
35622: PUSH
35623: LD_INT 1
35625: EQUAL
35626: IFFALSE 35697
// begin for i = 1 to 4 do
35628: LD_ADDR_VAR 0 6
35632: PUSH
35633: DOUBLE
35634: LD_INT 1
35636: DEC
35637: ST_TO_ADDR
35638: LD_INT 4
35640: PUSH
35641: FOR_TO
35642: IFFALSE 35693
// begin temp_list = temp_list ^ [ us_double_gun , us_gatling_gun ] [ Rand ( 1 , 2 ) ] ;
35644: LD_ADDR_VAR 0 4
35648: PUSH
35649: LD_VAR 0 4
35653: PUSH
35654: LD_INT 5
35656: PUSH
35657: LD_INT 4
35659: PUSH
35660: EMPTY
35661: LIST
35662: LIST
35663: PUSH
35664: LD_INT 1
35666: PPUSH
35667: LD_INT 2
35669: PPUSH
35670: CALL_OW 12
35674: ARRAY
35675: ADD
35676: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_medium_tracked ;
35677: LD_ADDR_VAR 0 5
35681: PUSH
35682: LD_VAR 0 5
35686: PUSH
35687: LD_INT 3
35689: ADD
35690: ST_TO_ADDR
// end ;
35691: GO 35641
35693: POP
35694: POP
// end else
35695: GO 35764
// for i = 1 to 4 do
35697: LD_ADDR_VAR 0 6
35701: PUSH
35702: DOUBLE
35703: LD_INT 1
35705: DEC
35706: ST_TO_ADDR
35707: LD_INT 4
35709: PUSH
35710: FOR_TO
35711: IFFALSE 35762
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35713: LD_ADDR_VAR 0 4
35717: PUSH
35718: LD_VAR 0 4
35722: PUSH
35723: LD_INT 6
35725: PUSH
35726: LD_INT 9
35728: PUSH
35729: EMPTY
35730: LIST
35731: LIST
35732: PUSH
35733: LD_INT 1
35735: PPUSH
35736: LD_INT 2
35738: PPUSH
35739: CALL_OW 12
35743: ARRAY
35744: ADD
35745: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35746: LD_ADDR_VAR 0 5
35750: PUSH
35751: LD_VAR 0 5
35755: PUSH
35756: LD_INT 5
35758: ADD
35759: ST_TO_ADDR
// end ;
35760: GO 35710
35762: POP
35763: POP
// end else
35764: GO 35998
// if Difficulty = 2 then
35766: LD_OWVAR 67
35770: PUSH
35771: LD_INT 2
35773: EQUAL
35774: IFFALSE 35940
// begin if Rand ( 1 , 2 ) = 1 then
35776: LD_INT 1
35778: PPUSH
35779: LD_INT 2
35781: PPUSH
35782: CALL_OW 12
35786: PUSH
35787: LD_INT 1
35789: EQUAL
35790: IFFALSE 35871
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser , [ us_heavy_gun , us_laser ] [ rand ( 1 , 2 ) ] ] ;
35792: LD_ADDR_VAR 0 4
35796: PUSH
35797: LD_VAR 0 4
35801: PUSH
35802: LD_INT 10
35804: PUSH
35805: LD_INT 10
35807: PUSH
35808: LD_INT 10
35810: PUSH
35811: LD_INT 6
35813: PUSH
35814: LD_INT 9
35816: PUSH
35817: EMPTY
35818: LIST
35819: LIST
35820: PUSH
35821: LD_INT 1
35823: PPUSH
35824: LD_INT 2
35826: PPUSH
35827: CALL_OW 12
35831: ARRAY
35832: PUSH
35833: EMPTY
35834: LIST
35835: LIST
35836: LIST
35837: LIST
35838: ADD
35839: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
35840: LD_ADDR_VAR 0 5
35844: PUSH
35845: LD_VAR 0 5
35849: PUSH
35850: LD_INT 5
35852: PUSH
35853: LD_INT 5
35855: PUSH
35856: LD_INT 5
35858: PUSH
35859: LD_INT 5
35861: PUSH
35862: EMPTY
35863: LIST
35864: LIST
35865: LIST
35866: LIST
35867: ADD
35868: ST_TO_ADDR
// end else
35869: GO 35938
// for i = 1 to 4 do
35871: LD_ADDR_VAR 0 6
35875: PUSH
35876: DOUBLE
35877: LD_INT 1
35879: DEC
35880: ST_TO_ADDR
35881: LD_INT 4
35883: PUSH
35884: FOR_TO
35885: IFFALSE 35936
// begin temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ Rand ( 1 , 2 ) ] ;
35887: LD_ADDR_VAR 0 4
35891: PUSH
35892: LD_VAR 0 4
35896: PUSH
35897: LD_INT 6
35899: PUSH
35900: LD_INT 9
35902: PUSH
35903: EMPTY
35904: LIST
35905: LIST
35906: PUSH
35907: LD_INT 1
35909: PPUSH
35910: LD_INT 2
35912: PPUSH
35913: CALL_OW 12
35917: ARRAY
35918: ADD
35919: ST_TO_ADDR
// temp_list2 = temp_list2 ^ us_morphling ;
35920: LD_ADDR_VAR 0 5
35924: PUSH
35925: LD_VAR 0 5
35929: PUSH
35930: LD_INT 5
35932: ADD
35933: ST_TO_ADDR
// end ;
35934: GO 35884
35936: POP
35937: POP
// end else
35938: GO 35998
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser , us_double_laser , ] ;
35940: LD_ADDR_VAR 0 4
35944: PUSH
35945: LD_VAR 0 4
35949: PUSH
35950: LD_INT 10
35952: PUSH
35953: LD_INT 10
35955: PUSH
35956: LD_INT 10
35958: PUSH
35959: LD_INT 10
35961: PUSH
35962: EMPTY
35963: LIST
35964: LIST
35965: LIST
35966: LIST
35967: ADD
35968: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
35969: LD_ADDR_VAR 0 5
35973: PUSH
35974: LD_VAR 0 5
35978: PUSH
35979: LD_INT 5
35981: PUSH
35982: LD_INT 5
35984: PUSH
35985: LD_INT 5
35987: PUSH
35988: LD_INT 5
35990: PUSH
35991: EMPTY
35992: LIST
35993: LIST
35994: LIST
35995: LIST
35996: ADD
35997: ST_TO_ADDR
// end ; 2 :
35998: GO 36367
36000: LD_INT 2
36002: DOUBLE
36003: EQUAL
36004: IFTRUE 36008
36006: GO 36366
36008: POP
// if Difficulty = 1 then
36009: LD_OWVAR 67
36013: PUSH
36014: LD_INT 1
36016: EQUAL
36017: IFFALSE 36217
// begin if Rand ( 1 , 2 ) = 1 then
36019: LD_INT 1
36021: PPUSH
36022: LD_INT 2
36024: PPUSH
36025: CALL_OW 12
36029: PUSH
36030: LD_INT 1
36032: EQUAL
36033: IFFALSE 36133
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , [ us_heavy_gun , us_laser ] [ rand ( 1 , 2 ) ] , [ us_heavy_gun , us_laser ] [ rand ( 1 , 2 ) ] ] ;
36035: LD_ADDR_VAR 0 4
36039: PUSH
36040: LD_VAR 0 4
36044: PUSH
36045: LD_INT 10
36047: PUSH
36048: LD_INT 10
36050: PUSH
36051: LD_INT 6
36053: PUSH
36054: LD_INT 9
36056: PUSH
36057: EMPTY
36058: LIST
36059: LIST
36060: PUSH
36061: LD_INT 1
36063: PPUSH
36064: LD_INT 2
36066: PPUSH
36067: CALL_OW 12
36071: ARRAY
36072: PUSH
36073: LD_INT 6
36075: PUSH
36076: LD_INT 9
36078: PUSH
36079: EMPTY
36080: LIST
36081: LIST
36082: PUSH
36083: LD_INT 1
36085: PPUSH
36086: LD_INT 2
36088: PPUSH
36089: CALL_OW 12
36093: ARRAY
36094: PUSH
36095: EMPTY
36096: LIST
36097: LIST
36098: LIST
36099: LIST
36100: ADD
36101: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
36102: LD_ADDR_VAR 0 5
36106: PUSH
36107: LD_VAR 0 5
36111: PUSH
36112: LD_INT 5
36114: PUSH
36115: LD_INT 5
36117: PUSH
36118: LD_INT 5
36120: PUSH
36121: LD_INT 5
36123: PUSH
36124: EMPTY
36125: LIST
36126: LIST
36127: LIST
36128: LIST
36129: ADD
36130: ST_TO_ADDR
// end else
36131: GO 36215
// begin for i = 1 to 4 do
36133: LD_ADDR_VAR 0 6
36137: PUSH
36138: DOUBLE
36139: LD_INT 1
36141: DEC
36142: ST_TO_ADDR
36143: LD_INT 4
36145: PUSH
36146: FOR_TO
36147: IFFALSE 36184
// temp_list = temp_list ^ [ us_heavy_gun , us_laser ] [ rand ( 1 , 2 ) ] ;
36149: LD_ADDR_VAR 0 4
36153: PUSH
36154: LD_VAR 0 4
36158: PUSH
36159: LD_INT 6
36161: PUSH
36162: LD_INT 9
36164: PUSH
36165: EMPTY
36166: LIST
36167: LIST
36168: PUSH
36169: LD_INT 1
36171: PPUSH
36172: LD_INT 2
36174: PPUSH
36175: CALL_OW 12
36179: ARRAY
36180: ADD
36181: ST_TO_ADDR
36182: GO 36146
36184: POP
36185: POP
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
36186: LD_ADDR_VAR 0 5
36190: PUSH
36191: LD_VAR 0 5
36195: PUSH
36196: LD_INT 5
36198: PUSH
36199: LD_INT 5
36201: PUSH
36202: LD_INT 5
36204: PUSH
36205: LD_INT 5
36207: PUSH
36208: EMPTY
36209: LIST
36210: LIST
36211: LIST
36212: LIST
36213: ADD
36214: ST_TO_ADDR
// end ; end else
36215: GO 36364
// if difficulty = 2 then
36217: LD_OWVAR 67
36221: PUSH
36222: LD_INT 2
36224: EQUAL
36225: IFFALSE 36306
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser , [ us_heavy_gun , us_laser ] [ rand ( 1 , 2 ) ] ] ;
36227: LD_ADDR_VAR 0 4
36231: PUSH
36232: LD_VAR 0 4
36236: PUSH
36237: LD_INT 10
36239: PUSH
36240: LD_INT 10
36242: PUSH
36243: LD_INT 10
36245: PUSH
36246: LD_INT 6
36248: PUSH
36249: LD_INT 9
36251: PUSH
36252: EMPTY
36253: LIST
36254: LIST
36255: PUSH
36256: LD_INT 1
36258: PPUSH
36259: LD_INT 2
36261: PPUSH
36262: CALL_OW 12
36266: ARRAY
36267: PUSH
36268: EMPTY
36269: LIST
36270: LIST
36271: LIST
36272: LIST
36273: ADD
36274: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
36275: LD_ADDR_VAR 0 5
36279: PUSH
36280: LD_VAR 0 5
36284: PUSH
36285: LD_INT 5
36287: PUSH
36288: LD_INT 5
36290: PUSH
36291: LD_INT 5
36293: PUSH
36294: LD_INT 5
36296: PUSH
36297: EMPTY
36298: LIST
36299: LIST
36300: LIST
36301: LIST
36302: ADD
36303: ST_TO_ADDR
// end else
36304: GO 36364
// begin temp_list = temp_list ^ [ us_double_laser , us_double_laser , us_double_laser , us_double_laser ] ;
36306: LD_ADDR_VAR 0 4
36310: PUSH
36311: LD_VAR 0 4
36315: PUSH
36316: LD_INT 10
36318: PUSH
36319: LD_INT 10
36321: PUSH
36322: LD_INT 10
36324: PUSH
36325: LD_INT 10
36327: PUSH
36328: EMPTY
36329: LIST
36330: LIST
36331: LIST
36332: LIST
36333: ADD
36334: ST_TO_ADDR
// temp_list2 = temp_list2 ^ [ us_morphling , us_morphling , us_morphling , us_morphling ] ;
36335: LD_ADDR_VAR 0 5
36339: PUSH
36340: LD_VAR 0 5
36344: PUSH
36345: LD_INT 5
36347: PUSH
36348: LD_INT 5
36350: PUSH
36351: LD_INT 5
36353: PUSH
36354: LD_INT 5
36356: PUSH
36357: EMPTY
36358: LIST
36359: LIST
36360: LIST
36361: LIST
36362: ADD
36363: ST_TO_ADDR
// end ; end ;
36364: GO 36367
36366: POP
// result = temp_list ;
36367: LD_ADDR_VAR 0 2
36371: PUSH
36372: LD_VAR 0 4
36376: ST_TO_ADDR
// end ; end ; end_of_file
36377: LD_VAR 0 2
36381: RET
// every 0 0$1.5 do var i , un , base , val ;
36382: GO 36384
36384: DISABLE
36385: LD_INT 0
36387: PPUSH
36388: PPUSH
36389: PPUSH
36390: PPUSH
// begin for i in ai_depots do
36391: LD_ADDR_VAR 0 1
36395: PUSH
36396: LD_EXP 59
36400: PUSH
36401: FOR_IN
36402: IFFALSE 36511
// for un in i do
36404: LD_ADDR_VAR 0 2
36408: PUSH
36409: LD_VAR 0 1
36413: PUSH
36414: FOR_IN
36415: IFFALSE 36507
// if IsOk ( un ) and GetSide ( un ) <> you then
36417: LD_VAR 0 2
36421: PPUSH
36422: CALL_OW 302
36426: PUSH
36427: LD_VAR 0 2
36431: PPUSH
36432: CALL_OW 255
36436: PUSH
36437: LD_EXP 2
36441: NONEQUAL
36442: AND
36443: IFFALSE 36505
// begin base = GetBase ( un ) ;
36445: LD_ADDR_VAR 0 3
36449: PUSH
36450: LD_VAR 0 2
36454: PPUSH
36455: CALL_OW 274
36459: ST_TO_ADDR
// SetResourceType ( base , mat_cans , 500 ) ;
36460: LD_VAR 0 3
36464: PPUSH
36465: LD_INT 1
36467: PPUSH
36468: LD_INT 500
36470: PPUSH
36471: CALL_OW 277
// SetResourceType ( base , mat_oil , 500 ) ;
36475: LD_VAR 0 3
36479: PPUSH
36480: LD_INT 2
36482: PPUSH
36483: LD_INT 500
36485: PPUSH
36486: CALL_OW 277
// SetResourceType ( base , mat_siberit , 500 ) ;
36490: LD_VAR 0 3
36494: PPUSH
36495: LD_INT 3
36497: PPUSH
36498: LD_INT 500
36500: PPUSH
36501: CALL_OW 277
// end ;
36505: GO 36414
36507: POP
36508: POP
36509: GO 36401
36511: POP
36512: POP
// for i in mb_bases do
36513: LD_ADDR_VAR 0 1
36517: PUSH
36518: LD_EXP 160
36522: PUSH
36523: FOR_IN
36524: IFFALSE 36636
// for un in mb_buildings [ i ] do
36526: LD_ADDR_VAR 0 2
36530: PUSH
36531: LD_EXP 161
36535: PUSH
36536: LD_VAR 0 1
36540: ARRAY
36541: PUSH
36542: FOR_IN
36543: IFFALSE 36632
// if GetBType ( un ) = b_depot then
36545: LD_VAR 0 2
36549: PPUSH
36550: CALL_OW 266
36554: PUSH
36555: LD_INT 0
36557: EQUAL
36558: IFFALSE 36630
// begin base = GetBase ( un ) ;
36560: LD_ADDR_VAR 0 3
36564: PUSH
36565: LD_VAR 0 2
36569: PPUSH
36570: CALL_OW 274
36574: ST_TO_ADDR
// SetResourceType ( base , mat_cans , 200 ) ;
36575: LD_VAR 0 3
36579: PPUSH
36580: LD_INT 1
36582: PPUSH
36583: LD_INT 200
36585: PPUSH
36586: CALL_OW 277
// SetResourceType ( base , mat_oil , 500 ) ;
36590: LD_VAR 0 3
36594: PPUSH
36595: LD_INT 2
36597: PPUSH
36598: LD_INT 500
36600: PPUSH
36601: CALL_OW 277
// if i = 2 then
36605: LD_VAR 0 1
36609: PUSH
36610: LD_INT 2
36612: EQUAL
36613: IFFALSE 36630
// SetResourceType ( base , mat_siberit , 20 ) ;
36615: LD_VAR 0 3
36619: PPUSH
36620: LD_INT 3
36622: PPUSH
36623: LD_INT 20
36625: PPUSH
36626: CALL_OW 277
// end ;
36630: GO 36542
36632: POP
36633: POP
36634: GO 36523
36636: POP
36637: POP
// enable ;
36638: ENABLE
// end ;
36639: PPOPN 4
36641: END
// on UnitGoesToRed ( un ) do var base , i , temp , temp2 ;
36642: LD_INT 0
36644: PPUSH
36645: PPUSH
36646: PPUSH
36647: PPUSH
// begin if un = LegionLeader and not LegionLeader in dlg_list then
36648: LD_VAR 0 1
36652: PUSH
36653: LD_EXP 45
36657: EQUAL
36658: PUSH
36659: LD_EXP 45
36663: PUSH
36664: LD_EXP 47
36668: IN
36669: NOT
36670: AND
36671: IFFALSE 36809
// begin dlg_list = dlg_list ^ LegionLeader ;
36673: LD_ADDR_EXP 47
36677: PUSH
36678: LD_EXP 47
36682: PUSH
36683: LD_EXP 45
36687: ADD
36688: ST_TO_ADDR
// case LegionLeader of Kurt :
36689: LD_EXP 45
36693: PUSH
36694: LD_EXP 39
36698: DOUBLE
36699: EQUAL
36700: IFTRUE 36704
36702: GO 36763
36704: POP
// begin DialogueOn ;
36705: CALL_OW 6
// ForceSay ( Kurt , Lead_Kurt1 ) ;
36709: LD_EXP 39
36713: PPUSH
36714: LD_STRING Lead_Kurt1
36716: PPUSH
36717: CALL_OW 91
// Say ( Heike , Lead_Heike ) ;
36721: LD_EXP 10
36725: PPUSH
36726: LD_STRING Lead_Heike
36728: PPUSH
36729: CALL_OW 88
// ForceSay ( Kurt , Lead_Kurt2 ) ;
36733: LD_EXP 39
36737: PPUSH
36738: LD_STRING Lead_Kurt2
36740: PPUSH
36741: CALL_OW 91
// ForceSay ( Kurt , Lead_Kurt3 ) ;
36745: LD_EXP 39
36749: PPUSH
36750: LD_STRING Lead_Kurt3
36752: PPUSH
36753: CALL_OW 91
// DialogueOff ;
36757: CALL_OW 7
// end ; Gordon :
36761: GO 36809
36763: LD_EXP 42
36767: DOUBLE
36768: EQUAL
36769: IFTRUE 36773
36771: GO 36808
36773: POP
// begin DialogueOn ;
36774: CALL_OW 6
// ForceSay ( Gordon , Lead_Gordon1 ) ;
36778: LD_EXP 42
36782: PPUSH
36783: LD_STRING Lead_Gordon1
36785: PPUSH
36786: CALL_OW 91
// ForceSay ( Gordon , Lead_Gordon2 ) ;
36790: LD_EXP 42
36794: PPUSH
36795: LD_STRING Lead_Gordon2
36797: PPUSH
36798: CALL_OW 91
// DialogueOff ;
36802: CALL_OW 7
// end ; end ;
36806: GO 36809
36808: POP
// end ; if un = Powell and not Powell in dlg_list then
36809: LD_VAR 0 1
36813: PUSH
36814: LD_EXP 36
36818: EQUAL
36819: PUSH
36820: LD_EXP 36
36824: PUSH
36825: LD_EXP 47
36829: IN
36830: NOT
36831: AND
36832: IFFALSE 36943
// begin dlg_list = dlg_list ^ Powell ;
36834: LD_ADDR_EXP 47
36838: PUSH
36839: LD_EXP 47
36843: PUSH
36844: LD_EXP 36
36848: ADD
36849: ST_TO_ADDR
// temp = UnitShoot ( Powell ) ;
36850: LD_ADDR_VAR 0 4
36854: PUSH
36855: LD_EXP 36
36859: PPUSH
36860: CALL_OW 504
36864: ST_TO_ADDR
// if AmericansNuked then
36865: LD_EXP 226
36869: IFFALSE 36885
// ForceSay ( Powell , Lead_Powell2 ) else
36871: LD_EXP 36
36875: PPUSH
36876: LD_STRING Lead_Powell2
36878: PPUSH
36879: CALL_OW 91
36883: GO 36943
// case GetSide ( temp ) of 0 , 2 , 8 :
36885: LD_VAR 0 4
36889: PPUSH
36890: CALL_OW 255
36894: PUSH
36895: LD_INT 0
36897: DOUBLE
36898: EQUAL
36899: IFTRUE 36915
36901: LD_INT 2
36903: DOUBLE
36904: EQUAL
36905: IFTRUE 36915
36907: LD_INT 8
36909: DOUBLE
36910: EQUAL
36911: IFTRUE 36915
36913: GO 36930
36915: POP
// ForceSay ( Powell , Lead_Powell1 ) ; else
36916: LD_EXP 36
36920: PPUSH
36921: LD_STRING Lead_Powell1
36923: PPUSH
36924: CALL_OW 91
36928: GO 36943
36930: POP
// ForceSay ( Powell , Lead_Powell2 ) ; end ;
36931: LD_EXP 36
36935: PPUSH
36936: LD_STRING Lead_Powell2
36938: PPUSH
36939: CALL_OW 91
// end ; if un = Platonov and not Platonov in dlg_list then
36943: LD_VAR 0 1
36947: PUSH
36948: LD_EXP 33
36952: EQUAL
36953: PUSH
36954: LD_EXP 33
36958: PUSH
36959: LD_EXP 47
36963: IN
36964: NOT
36965: AND
36966: IFFALSE 36996
// begin dlg_list = dlg_list ^ Platonov ;
36968: LD_ADDR_EXP 47
36972: PUSH
36973: LD_EXP 47
36977: PUSH
36978: LD_EXP 33
36982: ADD
36983: ST_TO_ADDR
// ForceSay ( Platonov , Lead_Platonov ) ;
36984: LD_EXP 33
36988: PPUSH
36989: LD_STRING Lead_Platonov
36991: PPUSH
36992: CALL_OW 91
// end ; if GetSide ( un ) = you then
36996: LD_VAR 0 1
37000: PPUSH
37001: CALL_OW 255
37005: PUSH
37006: LD_EXP 2
37010: EQUAL
37011: IFFALSE 37015
// exit ;
37013: GO 37623
// base = FindBase ( un ) ;
37015: LD_ADDR_VAR 0 2
37019: PUSH
37020: LD_VAR 0 1
37024: PPUSH
37025: CALL 40619 0 1
37029: ST_TO_ADDR
// if base = 0 then
37030: LD_VAR 0 2
37034: PUSH
37035: LD_INT 0
37037: EQUAL
37038: IFFALSE 37042
// exit ;
37040: GO 37623
// if GetBType ( un ) in [ b_depot , b_warehouse ] then
37042: LD_VAR 0 1
37046: PPUSH
37047: CALL_OW 266
37051: PUSH
37052: LD_INT 0
37054: PUSH
37055: LD_INT 1
37057: PUSH
37058: EMPTY
37059: LIST
37060: LIST
37061: IN
37062: IFFALSE 37248
// begin SetResourceType ( GetBase ( un ) , mat_cans , 100 ) ;
37064: LD_VAR 0 1
37068: PPUSH
37069: CALL_OW 274
37073: PPUSH
37074: LD_INT 1
37076: PPUSH
37077: LD_INT 100
37079: PPUSH
37080: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 300 ) ;
37084: LD_VAR 0 1
37088: PPUSH
37089: CALL_OW 274
37093: PPUSH
37094: LD_INT 2
37096: PPUSH
37097: LD_INT 300
37099: PPUSH
37100: CALL_OW 277
// if base = 1 then
37104: LD_VAR 0 2
37108: PUSH
37109: LD_INT 1
37111: EQUAL
37112: IFFALSE 37136
// SetResourceType ( GetBase ( un ) , mat_siberit , 0 ) else
37114: LD_VAR 0 1
37118: PPUSH
37119: CALL_OW 274
37123: PPUSH
37124: LD_INT 3
37126: PPUSH
37127: LD_INT 0
37129: PPUSH
37130: CALL_OW 277
37134: GO 37173
// SetResourceType ( GetBase ( un ) , mat_siberit , [ 300 , 240 , 160 ] [ difficulty ] ) ;
37136: LD_VAR 0 1
37140: PPUSH
37141: CALL_OW 274
37145: PPUSH
37146: LD_INT 3
37148: PPUSH
37149: LD_INT 300
37151: PUSH
37152: LD_INT 240
37154: PUSH
37155: LD_INT 160
37157: PUSH
37158: EMPTY
37159: LIST
37160: LIST
37161: LIST
37162: PUSH
37163: LD_OWVAR 67
37167: ARRAY
37168: PPUSH
37169: CALL_OW 277
// if GetSide ( un ) = 4 then
37173: LD_VAR 0 1
37177: PPUSH
37178: CALL_OW 255
37182: PUSH
37183: LD_INT 4
37185: EQUAL
37186: IFFALSE 37248
// begin SetResourceType ( GetBase ( un ) , mat_cans , 0 ) ;
37188: LD_VAR 0 1
37192: PPUSH
37193: CALL_OW 274
37197: PPUSH
37198: LD_INT 1
37200: PPUSH
37201: LD_INT 0
37203: PPUSH
37204: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 0 ) ;
37208: LD_VAR 0 1
37212: PPUSH
37213: CALL_OW 274
37217: PPUSH
37218: LD_INT 2
37220: PPUSH
37221: LD_INT 0
37223: PPUSH
37224: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 0 ) ;
37228: LD_VAR 0 1
37232: PPUSH
37233: CALL_OW 274
37237: PPUSH
37238: LD_INT 3
37240: PPUSH
37241: LD_INT 0
37243: PPUSH
37244: CALL_OW 277
// end ; end ; if GetSide ( un ) = 3 and GetBType ( un ) in [ b_depot , b_warehouse ] then
37248: LD_VAR 0 1
37252: PPUSH
37253: CALL_OW 255
37257: PUSH
37258: LD_INT 3
37260: EQUAL
37261: PUSH
37262: LD_VAR 0 1
37266: PPUSH
37267: CALL_OW 266
37271: PUSH
37272: LD_INT 0
37274: PUSH
37275: LD_INT 1
37277: PUSH
37278: EMPTY
37279: LIST
37280: LIST
37281: IN
37282: AND
37283: IFFALSE 37623
// for i in FilterAllUnits ( [ [ f_side , 3 ] , [ f_bweapon , ru_time_lapser ] ] ) do
37285: LD_ADDR_VAR 0 3
37289: PUSH
37290: LD_INT 22
37292: PUSH
37293: LD_INT 3
37295: PUSH
37296: EMPTY
37297: LIST
37298: LIST
37299: PUSH
37300: LD_INT 35
37302: PUSH
37303: LD_INT 49
37305: PUSH
37306: EMPTY
37307: LIST
37308: LIST
37309: PUSH
37310: EMPTY
37311: LIST
37312: LIST
37313: PPUSH
37314: CALL_OW 69
37318: PUSH
37319: FOR_IN
37320: IFFALSE 37621
// if GetBase ( i ) = GetBase ( un ) then
37322: LD_VAR 0 3
37326: PPUSH
37327: CALL_OW 274
37331: PUSH
37332: LD_VAR 0 1
37336: PPUSH
37337: CALL_OW 274
37341: EQUAL
37342: IFFALSE 37619
// begin temp = [ GetX ( i ) , GetY ( i ) , GetDir ( i ) , GetLives ( i ) , GetBLevel ( i ) ] ;
37344: LD_ADDR_VAR 0 4
37348: PUSH
37349: LD_VAR 0 3
37353: PPUSH
37354: CALL_OW 250
37358: PUSH
37359: LD_VAR 0 3
37363: PPUSH
37364: CALL_OW 251
37368: PUSH
37369: LD_VAR 0 3
37373: PPUSH
37374: CALL_OW 254
37378: PUSH
37379: LD_VAR 0 3
37383: PPUSH
37384: CALL_OW 256
37388: PUSH
37389: LD_VAR 0 3
37393: PPUSH
37394: CALL_OW 267
37398: PUSH
37399: EMPTY
37400: LIST
37401: LIST
37402: LIST
37403: LIST
37404: LIST
37405: ST_TO_ADDR
// RemoveBuildingFromVariables ( base , i ) ;
37406: LD_VAR 0 2
37410: PPUSH
37411: LD_VAR 0 3
37415: PPUSH
37416: CALL 38142 0 2
// DestroyUnit ( i ) ;
37420: LD_VAR 0 3
37424: PPUSH
37425: CALL_OW 65
// uc_side = 3 ;
37429: LD_ADDR_OWVAR 20
37433: PUSH
37434: LD_INT 3
37436: ST_TO_ADDR
// uc_nation = nation_russian ;
37437: LD_ADDR_OWVAR 21
37441: PUSH
37442: LD_INT 3
37444: ST_TO_ADDR
// bc_type = b_turret ;
37445: LD_ADDR_OWVAR 42
37449: PUSH
37450: LD_INT 33
37452: ST_TO_ADDR
// uc_direction = temp [ 3 ] ;
37453: LD_ADDR_OWVAR 24
37457: PUSH
37458: LD_VAR 0 4
37462: PUSH
37463: LD_INT 3
37465: ARRAY
37466: ST_TO_ADDR
// temp2 = CreateBuilding ;
37467: LD_ADDR_VAR 0 5
37471: PUSH
37472: CALL_OW 46
37476: ST_TO_ADDR
// SetLives ( temp2 , temp [ 4 ] ) ;
37477: LD_VAR 0 5
37481: PPUSH
37482: LD_VAR 0 4
37486: PUSH
37487: LD_INT 4
37489: ARRAY
37490: PPUSH
37491: CALL_OW 234
// SetBLevel ( temp2 , temp [ 5 ] ) ;
37495: LD_VAR 0 5
37499: PPUSH
37500: LD_VAR 0 4
37504: PUSH
37505: LD_INT 5
37507: ARRAY
37508: PPUSH
37509: CALL_OW 241
// PlaceUnitXY ( temp2 , temp [ 1 ] , temp [ 2 ] , false ) ;
37513: LD_VAR 0 5
37517: PPUSH
37518: LD_VAR 0 4
37522: PUSH
37523: LD_INT 1
37525: ARRAY
37526: PPUSH
37527: LD_VAR 0 4
37531: PUSH
37532: LD_INT 2
37534: ARRAY
37535: PPUSH
37536: LD_INT 0
37538: PPUSH
37539: CALL_OW 48
// PlaceWeaponTurret ( temp2 , ru_time_lapser ) ;
37543: LD_VAR 0 5
37547: PPUSH
37548: LD_INT 49
37550: PPUSH
37551: CALL_OW 431
// temp = ai_all_buildings [ base ] ^ temp2 ;
37555: LD_ADDR_VAR 0 4
37559: PUSH
37560: LD_EXP 86
37564: PUSH
37565: LD_VAR 0 2
37569: ARRAY
37570: PUSH
37571: LD_VAR 0 5
37575: ADD
37576: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp ) ;
37577: LD_ADDR_EXP 86
37581: PUSH
37582: LD_EXP 86
37586: PPUSH
37587: LD_VAR 0 2
37591: PPUSH
37592: LD_VAR 0 4
37596: PPUSH
37597: CALL_OW 1
37601: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , temp2 , true ) ;
37602: LD_VAR 0 2
37606: PPUSH
37607: LD_VAR 0 5
37611: PPUSH
37612: LD_INT 1
37614: PPUSH
37615: CALL 22547 0 3
// end ;
37619: GO 37319
37621: POP
37622: POP
// end ;
37623: PPOPN 5
37625: END
// on UnitDestroyed ( un ) do var side , temp_list , base , temp_value , i ;
37626: LD_INT 0
37628: PPUSH
37629: PPUSH
37630: PPUSH
37631: PPUSH
37632: PPUSH
// begin if un = Heike then
37633: LD_VAR 0 1
37637: PUSH
37638: LD_EXP 10
37642: EQUAL
37643: IFFALSE 37667
// begin ExclusiveOn ;
37645: CALL_OW 4
// Wait ( 0 0$1 ) ;
37649: LD_INT 35
37651: PPUSH
37652: CALL_OW 67
// YouLost ( HeikeDied ) ;
37656: LD_STRING HeikeDied
37658: PPUSH
37659: CALL_OW 104
// ExclusiveOff ;
37663: CALL_OW 5
// end ; if un = Omar then
37667: LD_VAR 0 1
37671: PUSH
37672: LD_EXP 23
37676: EQUAL
37677: IFFALSE 37701
// begin ExclusiveOn ;
37679: CALL_OW 4
// Wait ( 0 0$1 ) ;
37683: LD_INT 35
37685: PPUSH
37686: CALL_OW 67
// YouLost ( OmarDied ) ;
37690: LD_STRING OmarDied
37692: PPUSH
37693: CALL_OW 104
// ExclusiveOff ;
37697: CALL_OW 5
// end ; for base in ai_bases do
37701: LD_ADDR_VAR 0 4
37705: PUSH
37706: LD_EXP 49
37710: PUSH
37711: FOR_IN
37712: IFFALSE 37763
// begin temp_list = ai_captured_buildings [ base ] diff un ;
37714: LD_ADDR_VAR 0 3
37718: PUSH
37719: LD_EXP 72
37723: PUSH
37724: LD_VAR 0 4
37728: ARRAY
37729: PUSH
37730: LD_VAR 0 1
37734: DIFF
37735: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
37736: LD_ADDR_EXP 72
37740: PUSH
37741: LD_EXP 72
37745: PPUSH
37746: LD_VAR 0 4
37750: PPUSH
37751: LD_VAR 0 3
37755: PPUSH
37756: CALL_OW 1
37760: ST_TO_ADDR
// end ;
37761: GO 37711
37763: POP
37764: POP
// side = GetSide ( un ) ;
37765: LD_ADDR_VAR 0 2
37769: PUSH
37770: LD_VAR 0 1
37774: PPUSH
37775: CALL_OW 255
37779: ST_TO_ADDR
// if side = 2 and ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_placed ] ] ) diff un ) < Contamination_count then
37780: LD_VAR 0 2
37784: PUSH
37785: LD_INT 2
37787: EQUAL
37788: PUSH
37789: LD_INT 22
37791: PUSH
37792: LD_INT 2
37794: PUSH
37795: EMPTY
37796: LIST
37797: LIST
37798: PUSH
37799: LD_INT 25
37801: PUSH
37802: LD_INT 4
37804: PUSH
37805: EMPTY
37806: LIST
37807: LIST
37808: PUSH
37809: LD_INT 52
37811: PUSH
37812: EMPTY
37813: LIST
37814: PUSH
37815: EMPTY
37816: LIST
37817: LIST
37818: LIST
37819: PPUSH
37820: CALL_OW 69
37824: PUSH
37825: LD_VAR 0 1
37829: DIFF
37830: PUSH
37831: LD_EXP 228
37835: LESS
37836: AND
37837: IFFALSE 37861
// begin ExclusiveOn ;
37839: CALL_OW 4
// Wait ( 0 0$1 ) ;
37843: LD_INT 35
37845: PPUSH
37846: CALL_OW 67
// YouLost ( TooManyCasualties_sci ) ;
37850: LD_STRING TooManyCasualties_sci
37852: PPUSH
37853: CALL_OW 104
// ExclusiveOff ;
37857: CALL_OW 5
// end ; if side = you then
37861: LD_VAR 0 2
37865: PUSH
37866: LD_EXP 2
37870: EQUAL
37871: IFFALSE 37875
// exit ;
37873: GO 38015
// case GetType ( un ) of unit_human :
37875: LD_VAR 0 1
37879: PPUSH
37880: CALL_OW 247
37884: PUSH
37885: LD_INT 1
37887: DOUBLE
37888: EQUAL
37889: IFTRUE 37893
37891: GO 37930
37893: POP
// for base in ai_bases do
37894: LD_ADDR_VAR 0 4
37898: PUSH
37899: LD_EXP 49
37903: PUSH
37904: FOR_IN
37905: IFFALSE 37926
// RemoveHumanFromVariables ( base , un , true ) ; unit_vehicle :
37907: LD_VAR 0 4
37911: PPUSH
37912: LD_VAR 0 1
37916: PPUSH
37917: LD_INT 1
37919: PPUSH
37920: CALL 39375 0 3
37924: GO 37904
37926: POP
37927: POP
37928: GO 38015
37930: LD_INT 2
37932: DOUBLE
37933: EQUAL
37934: IFTRUE 37938
37936: GO 37972
37938: POP
// for base in ai_bases do
37939: LD_ADDR_VAR 0 4
37943: PUSH
37944: LD_EXP 49
37948: PUSH
37949: FOR_IN
37950: IFFALSE 37968
// RemoveVehicleFromVariables ( base , un ) ; unit_building :
37952: LD_VAR 0 4
37956: PPUSH
37957: LD_VAR 0 1
37961: PPUSH
37962: CALL 38391 0 2
37966: GO 37949
37968: POP
37969: POP
37970: GO 38015
37972: LD_INT 3
37974: DOUBLE
37975: EQUAL
37976: IFTRUE 37980
37978: GO 38014
37980: POP
// for base in ai_bases do
37981: LD_ADDR_VAR 0 4
37985: PUSH
37986: LD_EXP 49
37990: PUSH
37991: FOR_IN
37992: IFFALSE 38010
// RemoveBuildingFromVariables ( base , un ) ; end ;
37994: LD_VAR 0 4
37998: PPUSH
37999: LD_VAR 0 1
38003: PPUSH
38004: CALL 38142 0 2
38008: GO 37991
38010: POP
38011: POP
38012: GO 38015
38014: POP
// end ;
38015: PPOPN 6
38017: END
// every 0 0$0.5 do var base , i ;
38018: GO 38020
38020: DISABLE
38021: LD_INT 0
38023: PPUSH
38024: PPUSH
// begin for base in ai_bases do
38025: LD_ADDR_VAR 0 1
38029: PUSH
38030: LD_EXP 49
38034: PUSH
38035: FOR_IN
38036: IFFALSE 38136
// begin for i in ai_implosion_vehicles [ base ] do
38038: LD_ADDR_VAR 0 2
38042: PUSH
38043: LD_EXP 111
38047: PUSH
38048: LD_VAR 0 1
38052: ARRAY
38053: PUSH
38054: FOR_IN
38055: IFFALSE 38084
// if IsDead ( i ) then
38057: LD_VAR 0 2
38061: PPUSH
38062: CALL_OW 301
38066: IFFALSE 38082
// RemoveVehicleFromVariables ( base , i ) ;
38068: LD_VAR 0 1
38072: PPUSH
38073: LD_VAR 0 2
38077: PPUSH
38078: CALL 38391 0 2
38082: GO 38054
38084: POP
38085: POP
// for i in ai_vehicles_attack [ base ] do
38086: LD_ADDR_VAR 0 2
38090: PUSH
38091: LD_EXP 78
38095: PUSH
38096: LD_VAR 0 1
38100: ARRAY
38101: PUSH
38102: FOR_IN
38103: IFFALSE 38132
// if IsDead ( i ) then
38105: LD_VAR 0 2
38109: PPUSH
38110: CALL_OW 301
38114: IFFALSE 38130
// RemoveVehicleFromVariables ( base , i ) ;
38116: LD_VAR 0 1
38120: PPUSH
38121: LD_VAR 0 2
38125: PPUSH
38126: CALL 38391 0 2
38130: GO 38102
38132: POP
38133: POP
// end ;
38134: GO 38035
38136: POP
38137: POP
// enable ;
38138: ENABLE
// end ;
38139: PPOPN 2
38141: END
// export function RemoveBuildingFromVariables ( base , building ) ; var temp_list ; begin
38142: LD_INT 0
38144: PPUSH
38145: PPUSH
// temp_list = ai_all_buildings [ base ] diff building ;
38146: LD_ADDR_VAR 0 4
38150: PUSH
38151: LD_EXP 86
38155: PUSH
38156: LD_VAR 0 1
38160: ARRAY
38161: PUSH
38162: LD_VAR 0 2
38166: DIFF
38167: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
38168: LD_ADDR_EXP 86
38172: PUSH
38173: LD_EXP 86
38177: PPUSH
38178: LD_VAR 0 1
38182: PPUSH
38183: LD_VAR 0 4
38187: PPUSH
38188: CALL_OW 1
38192: ST_TO_ADDR
// temp_list = ai_excepted_buildings [ base ] diff building ;
38193: LD_ADDR_VAR 0 4
38197: PUSH
38198: LD_EXP 107
38202: PUSH
38203: LD_VAR 0 1
38207: ARRAY
38208: PUSH
38209: LD_VAR 0 2
38213: DIFF
38214: ST_TO_ADDR
// ai_excepted_buildings = Replace ( ai_excepted_buildings , base , temp_list ) ;
38215: LD_ADDR_EXP 107
38219: PUSH
38220: LD_EXP 107
38224: PPUSH
38225: LD_VAR 0 1
38229: PPUSH
38230: LD_VAR 0 4
38234: PPUSH
38235: CALL_OW 1
38239: ST_TO_ADDR
// temp_list = ai_dismantle_these_buildings [ base ] diff building ;
38240: LD_ADDR_VAR 0 4
38244: PUSH
38245: LD_EXP 109
38249: PUSH
38250: LD_VAR 0 1
38254: ARRAY
38255: PUSH
38256: LD_VAR 0 2
38260: DIFF
38261: ST_TO_ADDR
// ai_dismantle_these_buildings = Replace ( ai_dismantle_these_buildings , base , temp_list ) ;
38262: LD_ADDR_EXP 109
38266: PUSH
38267: LD_EXP 109
38271: PPUSH
38272: LD_VAR 0 1
38276: PPUSH
38277: LD_VAR 0 4
38281: PPUSH
38282: CALL_OW 1
38286: ST_TO_ADDR
// if building = ai_building_under_construction [ base ] then
38287: LD_VAR 0 2
38291: PUSH
38292: LD_EXP 84
38296: PUSH
38297: LD_VAR 0 1
38301: ARRAY
38302: EQUAL
38303: IFFALSE 38328
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
38305: LD_ADDR_EXP 84
38309: PUSH
38310: LD_EXP 84
38314: PPUSH
38315: LD_VAR 0 1
38319: PPUSH
38320: LD_INT 0
38322: PPUSH
38323: CALL_OW 1
38327: ST_TO_ADDR
// if building = ai_sib_bomb_fact [ base ] then
38328: LD_VAR 0 2
38332: PUSH
38333: LD_EXP 73
38337: PUSH
38338: LD_VAR 0 1
38342: ARRAY
38343: EQUAL
38344: IFFALSE 38369
// ai_sib_bomb_fact = Replace ( ai_sib_bomb_fact , base , 0 ) ;
38346: LD_ADDR_EXP 73
38350: PUSH
38351: LD_EXP 73
38355: PPUSH
38356: LD_VAR 0 1
38360: PPUSH
38361: LD_INT 0
38363: PPUSH
38364: CALL_OW 1
38368: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , building , false ) ;
38369: LD_VAR 0 1
38373: PPUSH
38374: LD_VAR 0 2
38378: PPUSH
38379: LD_INT 0
38381: PPUSH
38382: CALL 22547 0 3
// end ;
38386: LD_VAR 0 3
38390: RET
// function RemoveVehicleFromVariables ( base , vehicle ) ; var temp_list ; begin
38391: LD_INT 0
38393: PPUSH
38394: PPUSH
// if vehicle in ai_vehicles_defend [ base ] then
38395: LD_VAR 0 2
38399: PUSH
38400: LD_EXP 77
38404: PUSH
38405: LD_VAR 0 1
38409: ARRAY
38410: IN
38411: IFFALSE 38460
// begin temp_list = ai_vehicles_defend [ base ] diff vehicle ;
38413: LD_ADDR_VAR 0 4
38417: PUSH
38418: LD_EXP 77
38422: PUSH
38423: LD_VAR 0 1
38427: ARRAY
38428: PUSH
38429: LD_VAR 0 2
38433: DIFF
38434: ST_TO_ADDR
// ai_vehicles_defend = Replace ( ai_vehicles_defend , base , temp_list ) ;
38435: LD_ADDR_EXP 77
38439: PUSH
38440: LD_EXP 77
38444: PPUSH
38445: LD_VAR 0 1
38449: PPUSH
38450: LD_VAR 0 4
38454: PPUSH
38455: CALL_OW 1
38459: ST_TO_ADDR
// end ; if vehicle in ai_vehicles_attack [ base ] then
38460: LD_VAR 0 2
38464: PUSH
38465: LD_EXP 78
38469: PUSH
38470: LD_VAR 0 1
38474: ARRAY
38475: IN
38476: IFFALSE 38525
// begin temp_list = ai_vehicles_attack [ base ] diff vehicle ;
38478: LD_ADDR_VAR 0 4
38482: PUSH
38483: LD_EXP 78
38487: PUSH
38488: LD_VAR 0 1
38492: ARRAY
38493: PUSH
38494: LD_VAR 0 2
38498: DIFF
38499: ST_TO_ADDR
// ai_vehicles_attack = Replace ( ai_vehicles_attack , base , temp_list ) ;
38500: LD_ADDR_EXP 78
38504: PUSH
38505: LD_EXP 78
38509: PPUSH
38510: LD_VAR 0 1
38514: PPUSH
38515: LD_VAR 0 4
38519: PPUSH
38520: CALL_OW 1
38524: ST_TO_ADDR
// end ; if vehicle in ai_taufield_vehicles [ base ] then
38525: LD_VAR 0 2
38529: PUSH
38530: LD_EXP 110
38534: PUSH
38535: LD_VAR 0 1
38539: ARRAY
38540: IN
38541: IFFALSE 38590
// begin temp_list = ai_taufield_vehicles [ base ] diff vehicle ;
38543: LD_ADDR_VAR 0 4
38547: PUSH
38548: LD_EXP 110
38552: PUSH
38553: LD_VAR 0 1
38557: ARRAY
38558: PUSH
38559: LD_VAR 0 2
38563: DIFF
38564: ST_TO_ADDR
// ai_taufield_vehicles = Replace ( ai_taufield_vehicles , base , temp_list ) ;
38565: LD_ADDR_EXP 110
38569: PUSH
38570: LD_EXP 110
38574: PPUSH
38575: LD_VAR 0 1
38579: PPUSH
38580: LD_VAR 0 4
38584: PPUSH
38585: CALL_OW 1
38589: ST_TO_ADDR
// end ; if vehicle in ai_implosion_vehicles [ base ] then
38590: LD_VAR 0 2
38594: PUSH
38595: LD_EXP 111
38599: PUSH
38600: LD_VAR 0 1
38604: ARRAY
38605: IN
38606: IFFALSE 38655
// begin temp_list = ai_implosion_vehicles [ base ] diff vehicle ;
38608: LD_ADDR_VAR 0 4
38612: PUSH
38613: LD_EXP 111
38617: PUSH
38618: LD_VAR 0 1
38622: ARRAY
38623: PUSH
38624: LD_VAR 0 2
38628: DIFF
38629: ST_TO_ADDR
// ai_implosion_vehicles = Replace ( ai_implosion_vehicles , base , temp_list ) ;
38630: LD_ADDR_EXP 111
38634: PUSH
38635: LD_EXP 111
38639: PPUSH
38640: LD_VAR 0 1
38644: PPUSH
38645: LD_VAR 0 4
38649: PPUSH
38650: CALL_OW 1
38654: ST_TO_ADDR
// end ; if vehicle in ai_control_tower_vehicles [ base ] then
38655: LD_VAR 0 2
38659: PUSH
38660: LD_EXP 105
38664: PUSH
38665: LD_VAR 0 1
38669: ARRAY
38670: IN
38671: IFFALSE 38720
// begin temp_list = ai_control_tower_vehicles [ base ] diff vehicle ;
38673: LD_ADDR_VAR 0 4
38677: PUSH
38678: LD_EXP 105
38682: PUSH
38683: LD_VAR 0 1
38687: ARRAY
38688: PUSH
38689: LD_VAR 0 2
38693: DIFF
38694: ST_TO_ADDR
// ai_control_tower_vehicles = Replace ( ai_control_tower_vehicles , base , temp_list ) ;
38695: LD_ADDR_EXP 105
38699: PUSH
38700: LD_EXP 105
38704: PPUSH
38705: LD_VAR 0 1
38709: PPUSH
38710: LD_VAR 0 4
38714: PPUSH
38715: CALL_OW 1
38719: ST_TO_ADDR
// end ; if vehicle = ai_cargo_bay [ base ] then
38720: LD_VAR 0 2
38724: PUSH
38725: LD_EXP 95
38729: PUSH
38730: LD_VAR 0 1
38734: ARRAY
38735: EQUAL
38736: IFFALSE 38786
// begin ai_cargo_bay = Replace ( ai_cargo_bay , base , 0 ) ;
38738: LD_ADDR_EXP 95
38742: PUSH
38743: LD_EXP 95
38747: PPUSH
38748: LD_VAR 0 1
38752: PPUSH
38753: LD_INT 0
38755: PPUSH
38756: CALL_OW 1
38760: ST_TO_ADDR
// ai_cargo_bay_destroy_tick = Replace ( ai_cargo_bay_destroy_tick , base , tick ) ;
38761: LD_ADDR_EXP 97
38765: PUSH
38766: LD_EXP 97
38770: PPUSH
38771: LD_VAR 0 1
38775: PPUSH
38776: LD_OWVAR 1
38780: PPUSH
38781: CALL_OW 1
38785: ST_TO_ADDR
// end ; if vehicle = ai_crane [ base ] then
38786: LD_VAR 0 2
38790: PUSH
38791: LD_EXP 98
38795: PUSH
38796: LD_VAR 0 1
38800: ARRAY
38801: EQUAL
38802: IFFALSE 38939
// begin ai_crane = Replace ( ai_crane , base , 0 ) ;
38804: LD_ADDR_EXP 98
38808: PUSH
38809: LD_EXP 98
38813: PPUSH
38814: LD_VAR 0 1
38818: PPUSH
38819: LD_INT 0
38821: PPUSH
38822: CALL_OW 1
38826: ST_TO_ADDR
// ai_crane_destroy_tick = Replace ( ai_crane_destroy_tick , base , tick ) ;
38827: LD_ADDR_EXP 100
38831: PUSH
38832: LD_EXP 100
38836: PPUSH
38837: LD_VAR 0 1
38841: PPUSH
38842: LD_OWVAR 1
38846: PPUSH
38847: CALL_OW 1
38851: ST_TO_ADDR
// ai_crane_driver = Replace ( ai_crane_driver , base , 0 ) ;
38852: LD_ADDR_EXP 102
38856: PUSH
38857: LD_EXP 102
38861: PPUSH
38862: LD_VAR 0 1
38866: PPUSH
38867: LD_INT 0
38869: PPUSH
38870: CALL_OW 1
38874: ST_TO_ADDR
// ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , false ) ;
38875: LD_ADDR_EXP 101
38879: PUSH
38880: LD_EXP 101
38884: PPUSH
38885: LD_VAR 0 1
38889: PPUSH
38890: LD_INT 0
38892: PPUSH
38893: CALL_OW 1
38897: ST_TO_ADDR
// if vehicle = ai_building_constructor [ base ] then
38898: LD_VAR 0 2
38902: PUSH
38903: LD_EXP 87
38907: PUSH
38908: LD_VAR 0 1
38912: ARRAY
38913: EQUAL
38914: IFFALSE 38939
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
38916: LD_ADDR_EXP 87
38920: PUSH
38921: LD_EXP 87
38925: PPUSH
38926: LD_VAR 0 1
38930: PPUSH
38931: LD_INT 0
38933: PPUSH
38934: CALL_OW 1
38938: ST_TO_ADDR
// end ; if vehicle in ai_sib_bomb_vehicles [ base ] then
38939: LD_VAR 0 2
38943: PUSH
38944: LD_EXP 117
38948: PUSH
38949: LD_VAR 0 1
38953: ARRAY
38954: IN
38955: IFFALSE 39004
// begin temp_list = ai_sib_bomb_vehicles [ base ] diff vehicle ;
38957: LD_ADDR_VAR 0 4
38961: PUSH
38962: LD_EXP 117
38966: PUSH
38967: LD_VAR 0 1
38971: ARRAY
38972: PUSH
38973: LD_VAR 0 2
38977: DIFF
38978: ST_TO_ADDR
// ai_sib_bomb_vehicles = Replace ( ai_sib_bomb_vehicles , base , temp_list ) ;
38979: LD_ADDR_EXP 117
38983: PUSH
38984: LD_EXP 117
38988: PPUSH
38989: LD_VAR 0 1
38993: PPUSH
38994: LD_VAR 0 4
38998: PPUSH
38999: CALL_OW 1
39003: ST_TO_ADDR
// end ; if vehicle in ai_behemoths [ base ] then
39004: LD_VAR 0 2
39008: PUSH
39009: LD_EXP 113
39013: PUSH
39014: LD_VAR 0 1
39018: ARRAY
39019: IN
39020: IFFALSE 39069
// begin temp_list = ai_behemoths [ base ] diff vehicle ;
39022: LD_ADDR_VAR 0 4
39026: PUSH
39027: LD_EXP 113
39031: PUSH
39032: LD_VAR 0 1
39036: ARRAY
39037: PUSH
39038: LD_VAR 0 2
39042: DIFF
39043: ST_TO_ADDR
// ai_behemoths = Replace ( ai_behemoths , base , temp_list ) ;
39044: LD_ADDR_EXP 113
39048: PUSH
39049: LD_EXP 113
39053: PPUSH
39054: LD_VAR 0 1
39058: PPUSH
39059: LD_VAR 0 4
39063: PPUSH
39064: CALL_OW 1
39068: ST_TO_ADDR
// end ; if vehicle in ai_retreating_vehicles_defend [ base ] then
39069: LD_VAR 0 2
39073: PUSH
39074: LD_EXP 79
39078: PUSH
39079: LD_VAR 0 1
39083: ARRAY
39084: IN
39085: IFFALSE 39134
// begin temp_list = ai_retreating_vehicles_defend [ base ] diff vehicle ;
39087: LD_ADDR_VAR 0 4
39091: PUSH
39092: LD_EXP 79
39096: PUSH
39097: LD_VAR 0 1
39101: ARRAY
39102: PUSH
39103: LD_VAR 0 2
39107: DIFF
39108: ST_TO_ADDR
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
39109: LD_ADDR_EXP 79
39113: PUSH
39114: LD_EXP 79
39118: PPUSH
39119: LD_VAR 0 1
39123: PPUSH
39124: LD_VAR 0 4
39128: PPUSH
39129: CALL_OW 1
39133: ST_TO_ADDR
// end ; if vehicle in ai_vehicles_being_repaired [ base ] then
39134: LD_VAR 0 2
39138: PUSH
39139: LD_EXP 80
39143: PUSH
39144: LD_VAR 0 1
39148: ARRAY
39149: IN
39150: IFFALSE 39199
// begin temp_list = ai_vehicles_being_repaired [ base ] diff vehicle ;
39152: LD_ADDR_VAR 0 4
39156: PUSH
39157: LD_EXP 80
39161: PUSH
39162: LD_VAR 0 1
39166: ARRAY
39167: PUSH
39168: LD_VAR 0 2
39172: DIFF
39173: ST_TO_ADDR
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
39174: LD_ADDR_EXP 80
39178: PUSH
39179: LD_EXP 80
39183: PPUSH
39184: LD_VAR 0 1
39188: PPUSH
39189: LD_VAR 0 4
39193: PPUSH
39194: CALL_OW 1
39198: ST_TO_ADDR
// end ; if vehicle in ai_refuel_vehicles_list [ base ] then
39199: LD_VAR 0 2
39203: PUSH
39204: LD_EXP 81
39208: PUSH
39209: LD_VAR 0 1
39213: ARRAY
39214: IN
39215: IFFALSE 39264
// begin temp_list = ai_refuel_vehicles_list [ base ] diff vehicle ;
39217: LD_ADDR_VAR 0 4
39221: PUSH
39222: LD_EXP 81
39226: PUSH
39227: LD_VAR 0 1
39231: ARRAY
39232: PUSH
39233: LD_VAR 0 2
39237: DIFF
39238: ST_TO_ADDR
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
39239: LD_ADDR_EXP 81
39243: PUSH
39244: LD_EXP 81
39248: PPUSH
39249: LD_VAR 0 1
39253: PPUSH
39254: LD_VAR 0 4
39258: PPUSH
39259: CALL_OW 1
39263: ST_TO_ADDR
// end ; if vehicle = ai_vehicle_being_moved [ base ] then
39264: LD_VAR 0 2
39268: PUSH
39269: LD_EXP 88
39273: PUSH
39274: LD_VAR 0 1
39278: ARRAY
39279: EQUAL
39280: IFFALSE 39305
// ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
39282: LD_ADDR_EXP 88
39286: PUSH
39287: LD_EXP 88
39291: PPUSH
39292: LD_VAR 0 1
39296: PPUSH
39297: LD_INT 0
39299: PPUSH
39300: CALL_OW 1
39304: ST_TO_ADDR
// if vehicle in ai_vehicles_having_been_moved [ base ] then
39305: LD_VAR 0 2
39309: PUSH
39310: LD_EXP 89
39314: PUSH
39315: LD_VAR 0 1
39319: ARRAY
39320: IN
39321: IFFALSE 39370
// begin temp_list = ai_vehicles_having_been_moved [ base ] diff vehicle ;
39323: LD_ADDR_VAR 0 4
39327: PUSH
39328: LD_EXP 89
39332: PUSH
39333: LD_VAR 0 1
39337: ARRAY
39338: PUSH
39339: LD_VAR 0 2
39343: DIFF
39344: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , temp_list ) ;
39345: LD_ADDR_EXP 89
39349: PUSH
39350: LD_EXP 89
39354: PPUSH
39355: LD_VAR 0 1
39359: PPUSH
39360: LD_VAR 0 4
39364: PPUSH
39365: CALL_OW 1
39369: ST_TO_ADDR
// end ; end ;
39370: LD_VAR 0 3
39374: RET
// export function RemoveHumanFromVariables ( base , human , check_if_base_is_dead ) ; var temp_list , i ; begin
39375: LD_INT 0
39377: PPUSH
39378: PPUSH
39379: PPUSH
// result = false ;
39380: LD_ADDR_VAR 0 4
39384: PUSH
39385: LD_INT 0
39387: ST_TO_ADDR
// if human in ai_soldiers [ base ] then
39388: LD_VAR 0 2
39392: PUSH
39393: LD_EXP 50
39397: PUSH
39398: LD_VAR 0 1
39402: ARRAY
39403: IN
39404: IFFALSE 39461
// begin temp_list = ai_soldiers [ base ] diff human ;
39406: LD_ADDR_VAR 0 5
39410: PUSH
39411: LD_EXP 50
39415: PUSH
39416: LD_VAR 0 1
39420: ARRAY
39421: PUSH
39422: LD_VAR 0 2
39426: DIFF
39427: ST_TO_ADDR
// ai_soldiers = Replace ( ai_soldiers , base , temp_list ) ;
39428: LD_ADDR_EXP 50
39432: PUSH
39433: LD_EXP 50
39437: PPUSH
39438: LD_VAR 0 1
39442: PPUSH
39443: LD_VAR 0 5
39447: PPUSH
39448: CALL_OW 1
39452: ST_TO_ADDR
// result = true ;
39453: LD_ADDR_VAR 0 4
39457: PUSH
39458: LD_INT 1
39460: ST_TO_ADDR
// end ; if human in ai_attacking_soldiers [ base ] then
39461: LD_VAR 0 2
39465: PUSH
39466: LD_EXP 51
39470: PUSH
39471: LD_VAR 0 1
39475: ARRAY
39476: IN
39477: IFFALSE 39534
// begin temp_list = ai_attacking_soldiers [ base ] diff human ;
39479: LD_ADDR_VAR 0 5
39483: PUSH
39484: LD_EXP 51
39488: PUSH
39489: LD_VAR 0 1
39493: ARRAY
39494: PUSH
39495: LD_VAR 0 2
39499: DIFF
39500: ST_TO_ADDR
// ai_attacking_soldiers = Replace ( ai_attacking_soldiers , base , temp_list ) ;
39501: LD_ADDR_EXP 51
39505: PUSH
39506: LD_EXP 51
39510: PPUSH
39511: LD_VAR 0 1
39515: PPUSH
39516: LD_VAR 0 5
39520: PPUSH
39521: CALL_OW 1
39525: ST_TO_ADDR
// result = true ;
39526: LD_ADDR_VAR 0 4
39530: PUSH
39531: LD_INT 1
39533: ST_TO_ADDR
// end ; if human in ai_engineers [ base ] then
39534: LD_VAR 0 2
39538: PUSH
39539: LD_EXP 52
39543: PUSH
39544: LD_VAR 0 1
39548: ARRAY
39549: IN
39550: IFFALSE 39607
// begin temp_list = ai_engineers [ base ] diff human ;
39552: LD_ADDR_VAR 0 5
39556: PUSH
39557: LD_EXP 52
39561: PUSH
39562: LD_VAR 0 1
39566: ARRAY
39567: PUSH
39568: LD_VAR 0 2
39572: DIFF
39573: ST_TO_ADDR
// ai_engineers = Replace ( ai_engineers , base , temp_list ) ;
39574: LD_ADDR_EXP 52
39578: PUSH
39579: LD_EXP 52
39583: PPUSH
39584: LD_VAR 0 1
39588: PPUSH
39589: LD_VAR 0 5
39593: PPUSH
39594: CALL_OW 1
39598: ST_TO_ADDR
// result = true ;
39599: LD_ADDR_VAR 0 4
39603: PUSH
39604: LD_INT 1
39606: ST_TO_ADDR
// end ; if human in ai_apemen_engineers [ base ] then
39607: LD_VAR 0 2
39611: PUSH
39612: LD_EXP 57
39616: PUSH
39617: LD_VAR 0 1
39621: ARRAY
39622: IN
39623: IFFALSE 39680
// begin temp_list = ai_apemen_engineers [ base ] diff human ;
39625: LD_ADDR_VAR 0 5
39629: PUSH
39630: LD_EXP 57
39634: PUSH
39635: LD_VAR 0 1
39639: ARRAY
39640: PUSH
39641: LD_VAR 0 2
39645: DIFF
39646: ST_TO_ADDR
// ai_apemen_engineers = Replace ( ai_apemen_engineers , base , temp_list ) ;
39647: LD_ADDR_EXP 57
39651: PUSH
39652: LD_EXP 57
39656: PPUSH
39657: LD_VAR 0 1
39661: PPUSH
39662: LD_VAR 0 5
39666: PPUSH
39667: CALL_OW 1
39671: ST_TO_ADDR
// result = true ;
39672: LD_ADDR_VAR 0 4
39676: PUSH
39677: LD_INT 1
39679: ST_TO_ADDR
// end ; if human in ai_mechanics_defend [ base ] then
39680: LD_VAR 0 2
39684: PUSH
39685: LD_EXP 53
39689: PUSH
39690: LD_VAR 0 1
39694: ARRAY
39695: IN
39696: IFFALSE 39753
// begin temp_list = ai_mechanics_defend [ base ] diff human ;
39698: LD_ADDR_VAR 0 5
39702: PUSH
39703: LD_EXP 53
39707: PUSH
39708: LD_VAR 0 1
39712: ARRAY
39713: PUSH
39714: LD_VAR 0 2
39718: DIFF
39719: ST_TO_ADDR
// ai_mechanics_defend = Replace ( ai_mechanics_defend , base , temp_list ) ;
39720: LD_ADDR_EXP 53
39724: PUSH
39725: LD_EXP 53
39729: PPUSH
39730: LD_VAR 0 1
39734: PPUSH
39735: LD_VAR 0 5
39739: PPUSH
39740: CALL_OW 1
39744: ST_TO_ADDR
// result = true ;
39745: LD_ADDR_VAR 0 4
39749: PUSH
39750: LD_INT 1
39752: ST_TO_ADDR
// end ; if human in ai_mechanics_attack [ base ] then
39753: LD_VAR 0 2
39757: PUSH
39758: LD_EXP 54
39762: PUSH
39763: LD_VAR 0 1
39767: ARRAY
39768: IN
39769: IFFALSE 39826
// begin temp_list = ai_mechanics_attack [ base ] diff human ;
39771: LD_ADDR_VAR 0 5
39775: PUSH
39776: LD_EXP 54
39780: PUSH
39781: LD_VAR 0 1
39785: ARRAY
39786: PUSH
39787: LD_VAR 0 2
39791: DIFF
39792: ST_TO_ADDR
// ai_mechanics_attack = Replace ( ai_mechanics_attack , base , temp_list ) ;
39793: LD_ADDR_EXP 54
39797: PUSH
39798: LD_EXP 54
39802: PPUSH
39803: LD_VAR 0 1
39807: PPUSH
39808: LD_VAR 0 5
39812: PPUSH
39813: CALL_OW 1
39817: ST_TO_ADDR
// result = true ;
39818: LD_ADDR_VAR 0 4
39822: PUSH
39823: LD_INT 1
39825: ST_TO_ADDR
// end ; if human in ai_sib_bomb_mechanics [ base ] then
39826: LD_VAR 0 2
39830: PUSH
39831: LD_EXP 75
39835: PUSH
39836: LD_VAR 0 1
39840: ARRAY
39841: IN
39842: IFFALSE 39899
// begin temp_list = ai_sib_bomb_mechanics [ base ] diff human ;
39844: LD_ADDR_VAR 0 5
39848: PUSH
39849: LD_EXP 75
39853: PUSH
39854: LD_VAR 0 1
39858: ARRAY
39859: PUSH
39860: LD_VAR 0 2
39864: DIFF
39865: ST_TO_ADDR
// ai_sib_bomb_mechanics = Replace ( ai_sib_bomb_mechanics , base , temp_list ) ;
39866: LD_ADDR_EXP 75
39870: PUSH
39871: LD_EXP 75
39875: PPUSH
39876: LD_VAR 0 1
39880: PPUSH
39881: LD_VAR 0 5
39885: PPUSH
39886: CALL_OW 1
39890: ST_TO_ADDR
// result = true ;
39891: LD_ADDR_VAR 0 4
39895: PUSH
39896: LD_INT 1
39898: ST_TO_ADDR
// end ; if human in ai_scientists [ base ] then
39899: LD_VAR 0 2
39903: PUSH
39904: LD_EXP 55
39908: PUSH
39909: LD_VAR 0 1
39913: ARRAY
39914: IN
39915: IFFALSE 39972
// begin temp_list = ai_scientists [ base ] diff human ;
39917: LD_ADDR_VAR 0 5
39921: PUSH
39922: LD_EXP 55
39926: PUSH
39927: LD_VAR 0 1
39931: ARRAY
39932: PUSH
39933: LD_VAR 0 2
39937: DIFF
39938: ST_TO_ADDR
// ai_scientists = Replace ( ai_scientists , base , temp_list ) ;
39939: LD_ADDR_EXP 55
39943: PUSH
39944: LD_EXP 55
39948: PPUSH
39949: LD_VAR 0 1
39953: PPUSH
39954: LD_VAR 0 5
39958: PPUSH
39959: CALL_OW 1
39963: ST_TO_ADDR
// result = true ;
39964: LD_ADDR_VAR 0 4
39968: PUSH
39969: LD_INT 1
39971: ST_TO_ADDR
// end ; if human in ai_attacking_scientists [ base ] then
39972: LD_VAR 0 2
39976: PUSH
39977: LD_EXP 56
39981: PUSH
39982: LD_VAR 0 1
39986: ARRAY
39987: IN
39988: IFFALSE 40045
// begin temp_list = ai_attacking_scientists [ base ] diff human ;
39990: LD_ADDR_VAR 0 5
39994: PUSH
39995: LD_EXP 56
39999: PUSH
40000: LD_VAR 0 1
40004: ARRAY
40005: PUSH
40006: LD_VAR 0 2
40010: DIFF
40011: ST_TO_ADDR
// ai_attacking_scientists = Replace ( ai_attacking_scientists , base , temp_list ) ;
40012: LD_ADDR_EXP 56
40016: PUSH
40017: LD_EXP 56
40021: PPUSH
40022: LD_VAR 0 1
40026: PPUSH
40027: LD_VAR 0 5
40031: PPUSH
40032: CALL_OW 1
40036: ST_TO_ADDR
// result = true ;
40037: LD_ADDR_VAR 0 4
40041: PUSH
40042: LD_INT 1
40044: ST_TO_ADDR
// end ; if human in ai_heal_these_humans [ base ] then
40045: LD_VAR 0 2
40049: PUSH
40050: LD_EXP 85
40054: PUSH
40055: LD_VAR 0 1
40059: ARRAY
40060: IN
40061: IFFALSE 40110
// begin temp_list = ai_heal_these_humans [ base ] diff human ;
40063: LD_ADDR_VAR 0 5
40067: PUSH
40068: LD_EXP 85
40072: PUSH
40073: LD_VAR 0 1
40077: ARRAY
40078: PUSH
40079: LD_VAR 0 2
40083: DIFF
40084: ST_TO_ADDR
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
40085: LD_ADDR_EXP 85
40089: PUSH
40090: LD_EXP 85
40094: PPUSH
40095: LD_VAR 0 1
40099: PPUSH
40100: LD_VAR 0 5
40104: PPUSH
40105: CALL_OW 1
40109: ST_TO_ADDR
// end ; if human = ai_building_constructor [ base ] then
40110: LD_VAR 0 2
40114: PUSH
40115: LD_EXP 87
40119: PUSH
40120: LD_VAR 0 1
40124: ARRAY
40125: EQUAL
40126: IFFALSE 40151
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
40128: LD_ADDR_EXP 87
40132: PUSH
40133: LD_EXP 87
40137: PPUSH
40138: LD_VAR 0 1
40142: PPUSH
40143: LD_INT 0
40145: PPUSH
40146: CALL_OW 1
40150: ST_TO_ADDR
// if human in ai_retreating_attacking_humans [ base ] then
40151: LD_VAR 0 2
40155: PUSH
40156: LD_EXP 104
40160: PUSH
40161: LD_VAR 0 1
40165: ARRAY
40166: IN
40167: IFFALSE 40216
// begin temp_list = ai_retreating_attacking_humans [ base ] diff human ;
40169: LD_ADDR_VAR 0 5
40173: PUSH
40174: LD_EXP 104
40178: PUSH
40179: LD_VAR 0 1
40183: ARRAY
40184: PUSH
40185: LD_VAR 0 2
40189: DIFF
40190: ST_TO_ADDR
// ai_retreating_attacking_humans = Replace ( ai_retreating_attacking_humans , base , temp_list ) ;
40191: LD_ADDR_EXP 104
40195: PUSH
40196: LD_EXP 104
40200: PPUSH
40201: LD_VAR 0 1
40205: PPUSH
40206: LD_VAR 0 5
40210: PPUSH
40211: CALL_OW 1
40215: ST_TO_ADDR
// end ; if human = ai_crane_driver [ base ] then
40216: LD_VAR 0 2
40220: PUSH
40221: LD_EXP 102
40225: PUSH
40226: LD_VAR 0 1
40230: ARRAY
40231: EQUAL
40232: IFFALSE 40257
// ai_crane_driver = Replace ( ai_crane_driver , base , 0 ) ;
40234: LD_ADDR_EXP 102
40238: PUSH
40239: LD_EXP 102
40243: PPUSH
40244: LD_VAR 0 1
40248: PPUSH
40249: LD_INT 0
40251: PPUSH
40252: CALL_OW 1
40256: ST_TO_ADDR
// if check_if_base_is_dead then
40257: LD_VAR 0 3
40261: IFFALSE 40395
// if ( ( ai_soldiers [ base ] ^ ai_attacking_soldiers [ base ] ^ ai_engineers [ base ] ^ ai_apemen_engineers [ base ] ^ ai_mechanics_defend [ base ] ^ ai_mechanics_attack [ base ] ^ ai_sib_bomb_mechanics [ base ] ^ ai_scientists [ base ] ^ ai_attacking_scientists [ base ] ) diff 0 ) = 0 then
40263: LD_EXP 50
40267: PUSH
40268: LD_VAR 0 1
40272: ARRAY
40273: PUSH
40274: LD_EXP 51
40278: PUSH
40279: LD_VAR 0 1
40283: ARRAY
40284: ADD
40285: PUSH
40286: LD_EXP 52
40290: PUSH
40291: LD_VAR 0 1
40295: ARRAY
40296: ADD
40297: PUSH
40298: LD_EXP 57
40302: PUSH
40303: LD_VAR 0 1
40307: ARRAY
40308: ADD
40309: PUSH
40310: LD_EXP 53
40314: PUSH
40315: LD_VAR 0 1
40319: ARRAY
40320: ADD
40321: PUSH
40322: LD_EXP 54
40326: PUSH
40327: LD_VAR 0 1
40331: ARRAY
40332: ADD
40333: PUSH
40334: LD_EXP 75
40338: PUSH
40339: LD_VAR 0 1
40343: ARRAY
40344: ADD
40345: PUSH
40346: LD_EXP 55
40350: PUSH
40351: LD_VAR 0 1
40355: ARRAY
40356: ADD
40357: PUSH
40358: LD_EXP 56
40362: PUSH
40363: LD_VAR 0 1
40367: ARRAY
40368: ADD
40369: PUSH
40370: LD_INT 0
40372: DIFF
40373: PUSH
40374: LD_INT 0
40376: EQUAL
40377: IFFALSE 40395
// begin ai_bases = ai_bases diff base ;
40379: LD_ADDR_EXP 49
40383: PUSH
40384: LD_EXP 49
40388: PUSH
40389: LD_VAR 0 1
40393: DIFF
40394: ST_TO_ADDR
// end ; end ;
40395: LD_VAR 0 4
40399: RET
// export function GetBaseArea ( base ) ; begin
40400: LD_INT 0
40402: PPUSH
// case base of 1 :
40403: LD_VAR 0 1
40407: PUSH
40408: LD_INT 1
40410: DOUBLE
40411: EQUAL
40412: IFTRUE 40416
40414: GO 40427
40416: POP
// result = base_legion ; 2 :
40417: LD_ADDR_VAR 0 2
40421: PUSH
40422: LD_INT 1
40424: ST_TO_ADDR
40425: GO 40466
40427: LD_INT 2
40429: DOUBLE
40430: EQUAL
40431: IFTRUE 40435
40433: GO 40446
40435: POP
// result = base_russians ; 3 :
40436: LD_ADDR_VAR 0 2
40440: PUSH
40441: LD_INT 2
40443: ST_TO_ADDR
40444: GO 40466
40446: LD_INT 3
40448: DOUBLE
40449: EQUAL
40450: IFTRUE 40454
40452: GO 40465
40454: POP
// result = base_us ; end ;
40455: LD_ADDR_VAR 0 2
40459: PUSH
40460: LD_INT 3
40462: ST_TO_ADDR
40463: GO 40466
40465: POP
// end ;
40466: LD_VAR 0 2
40470: RET
// export function GetBaseSide ( base ) ; begin
40471: LD_INT 0
40473: PPUSH
// case base of 1 :
40474: LD_VAR 0 1
40478: PUSH
40479: LD_INT 1
40481: DOUBLE
40482: EQUAL
40483: IFTRUE 40487
40485: GO 40500
40487: POP
// result = legion ; 2 :
40488: LD_ADDR_VAR 0 2
40492: PUSH
40493: LD_EXP 6
40497: ST_TO_ADDR
40498: GO 40543
40500: LD_INT 2
40502: DOUBLE
40503: EQUAL
40504: IFTRUE 40508
40506: GO 40521
40508: POP
// result = russians ; 3 :
40509: LD_ADDR_VAR 0 2
40513: PUSH
40514: LD_EXP 3
40518: ST_TO_ADDR
40519: GO 40543
40521: LD_INT 3
40523: DOUBLE
40524: EQUAL
40525: IFTRUE 40529
40527: GO 40542
40529: POP
// result = americans ; end ;
40530: LD_ADDR_VAR 0 2
40534: PUSH
40535: LD_EXP 7
40539: ST_TO_ADDR
40540: GO 40543
40542: POP
// end ;
40543: LD_VAR 0 2
40547: RET
// export function GetBaseNation ( base ) ; begin
40548: LD_INT 0
40550: PPUSH
// case base of 1 :
40551: LD_VAR 0 1
40555: PUSH
40556: LD_INT 1
40558: DOUBLE
40559: EQUAL
40560: IFTRUE 40564
40562: GO 40575
40564: POP
// result = nation_arabian ; 2 :
40565: LD_ADDR_VAR 0 2
40569: PUSH
40570: LD_INT 2
40572: ST_TO_ADDR
40573: GO 40614
40575: LD_INT 2
40577: DOUBLE
40578: EQUAL
40579: IFTRUE 40583
40581: GO 40594
40583: POP
// result = nation_russian ; 3 :
40584: LD_ADDR_VAR 0 2
40588: PUSH
40589: LD_INT 3
40591: ST_TO_ADDR
40592: GO 40614
40594: LD_INT 3
40596: DOUBLE
40597: EQUAL
40598: IFTRUE 40602
40600: GO 40613
40602: POP
// result = nation_american ; end ;
40603: LD_ADDR_VAR 0 2
40607: PUSH
40608: LD_INT 1
40610: ST_TO_ADDR
40611: GO 40614
40613: POP
// end ;
40614: LD_VAR 0 2
40618: RET
// export function FindBase ( un ) ; var base ; begin
40619: LD_INT 0
40621: PPUSH
40622: PPUSH
// result = 0 ;
40623: LD_ADDR_VAR 0 2
40627: PUSH
40628: LD_INT 0
40630: ST_TO_ADDR
// for base in ai_bases do
40631: LD_ADDR_VAR 0 3
40635: PUSH
40636: LD_EXP 49
40640: PUSH
40641: FOR_IN
40642: IFFALSE 40681
// if IsInArea ( un , GetBaseArea ( base ) ) then
40644: LD_VAR 0 1
40648: PPUSH
40649: LD_VAR 0 3
40653: PPUSH
40654: CALL 40400 0 1
40658: PPUSH
40659: CALL_OW 308
40663: IFFALSE 40679
// begin result = base ;
40665: LD_ADDR_VAR 0 2
40669: PUSH
40670: LD_VAR 0 3
40674: ST_TO_ADDR
// exit ;
40675: POP
40676: POP
40677: GO 40683
// end ;
40679: GO 40641
40681: POP
40682: POP
// end ;
40683: LD_VAR 0 2
40687: RET
// every 0 0$1 + 0 0$0.1 do var side , i , temp_list , buildings_list , soldiers_list , temp_unit , base , val , special_units , bunkers , under_attack , j , area ; var temp_list_2 , special_defenders ;
40688: GO 40690
40690: DISABLE
40691: LD_INT 0
40693: PPUSH
40694: PPUSH
40695: PPUSH
40696: PPUSH
40697: PPUSH
40698: PPUSH
40699: PPUSH
40700: PPUSH
40701: PPUSH
40702: PPUSH
40703: PPUSH
40704: PPUSH
40705: PPUSH
40706: PPUSH
40707: PPUSH
// begin repeat if ai_bases = 0 then
40708: LD_EXP 49
40712: PUSH
40713: LD_INT 0
40715: EQUAL
40716: IFFALSE 40720
// exit ;
40718: GO 42738
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
40720: LD_INT 35
40722: PUSH
40723: LD_EXP 49
40727: PUSH
40728: LD_INT 0
40730: PLUS
40731: MOD
40732: PPUSH
40733: CALL_OW 67
// for base in ai_bases do
40737: LD_ADDR_VAR 0 7
40741: PUSH
40742: LD_EXP 49
40746: PUSH
40747: FOR_IN
40748: IFFALSE 42732
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
40750: LD_INT 35
40752: PUSH
40753: LD_EXP 49
40757: PUSH
40758: LD_INT 0
40760: PLUS
40761: DIV
40762: PPUSH
40763: CALL_OW 67
// side = GetBaseSide ( base ) ;
40767: LD_ADDR_VAR 0 1
40771: PUSH
40772: LD_VAR 0 7
40776: PPUSH
40777: CALL 40471 0 1
40781: ST_TO_ADDR
// soldiers_list = ai_soldiers [ base ] diff ( ai_excepted_soldiers [ base ] ^ [ Platonov , Powell , LegionLeader ] ) ;
40782: LD_ADDR_VAR 0 5
40786: PUSH
40787: LD_EXP 50
40791: PUSH
40792: LD_VAR 0 7
40796: ARRAY
40797: PUSH
40798: LD_EXP 58
40802: PUSH
40803: LD_VAR 0 7
40807: ARRAY
40808: PUSH
40809: LD_EXP 33
40813: PUSH
40814: LD_EXP 36
40818: PUSH
40819: LD_EXP 45
40823: PUSH
40824: EMPTY
40825: LIST
40826: LIST
40827: LIST
40828: ADD
40829: DIFF
40830: ST_TO_ADDR
// under_attack := BaseUnderAttack ( base , - 1 ) ;
40831: LD_ADDR_VAR 0 11
40835: PUSH
40836: LD_VAR 0 7
40840: PPUSH
40841: LD_INT 1
40843: NEG
40844: PPUSH
40845: CALL 55912 0 2
40849: ST_TO_ADDR
// case base of 1 :
40850: LD_VAR 0 7
40854: PUSH
40855: LD_INT 1
40857: DOUBLE
40858: EQUAL
40859: IFTRUE 40863
40861: GO 40876
40863: POP
// val = LegionLeader ; 2 :
40864: LD_ADDR_VAR 0 8
40868: PUSH
40869: LD_EXP 45
40873: ST_TO_ADDR
40874: GO 40939
40876: LD_INT 2
40878: DOUBLE
40879: EQUAL
40880: IFTRUE 40884
40882: GO 40897
40884: POP
// val = Platonov ; 3 :
40885: LD_ADDR_VAR 0 8
40889: PUSH
40890: LD_EXP 33
40894: ST_TO_ADDR
40895: GO 40939
40897: LD_INT 3
40899: DOUBLE
40900: EQUAL
40901: IFTRUE 40905
40903: GO 40938
40905: POP
// if PowellAttack = 0 then
40906: LD_EXP 139
40910: PUSH
40911: LD_INT 0
40913: EQUAL
40914: IFFALSE 40928
// val = Powell else
40916: LD_ADDR_VAR 0 8
40920: PUSH
40921: LD_EXP 36
40925: ST_TO_ADDR
40926: GO 40936
// val = 0 ; end ;
40928: LD_ADDR_VAR 0 8
40932: PUSH
40933: LD_INT 0
40935: ST_TO_ADDR
40936: GO 40939
40938: POP
// if val > 0 and IsLive ( val ) and not val in ai_heal_these_humans [ base ] then
40939: LD_VAR 0 8
40943: PUSH
40944: LD_INT 0
40946: GREATER
40947: PUSH
40948: LD_VAR 0 8
40952: PPUSH
40953: CALL_OW 300
40957: AND
40958: PUSH
40959: LD_VAR 0 8
40963: PUSH
40964: LD_EXP 85
40968: PUSH
40969: LD_VAR 0 7
40973: ARRAY
40974: IN
40975: NOT
40976: AND
40977: IFFALSE 41153
// begin if GetLives ( val ) <= 500 or ( GetLives ( val ) < 1000 and not under_attack ) then
40979: LD_VAR 0 8
40983: PPUSH
40984: CALL_OW 256
40988: PUSH
40989: LD_INT 500
40991: LESSEQUAL
40992: PUSH
40993: LD_VAR 0 8
40997: PPUSH
40998: CALL_OW 256
41002: PUSH
41003: LD_INT 1000
41005: LESS
41006: PUSH
41007: LD_VAR 0 11
41011: NOT
41012: AND
41013: OR
41014: IFFALSE 41065
// begin temp_list = ai_heal_these_humans [ base ] ^ val ;
41016: LD_ADDR_VAR 0 3
41020: PUSH
41021: LD_EXP 85
41025: PUSH
41026: LD_VAR 0 7
41030: ARRAY
41031: PUSH
41032: LD_VAR 0 8
41036: ADD
41037: ST_TO_ADDR
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
41038: LD_ADDR_EXP 85
41042: PUSH
41043: LD_EXP 85
41047: PPUSH
41048: LD_VAR 0 7
41052: PPUSH
41053: LD_VAR 0 3
41057: PPUSH
41058: CALL_OW 1
41062: ST_TO_ADDR
// end else
41063: GO 41153
// if ai_depots [ base ] > 0 then
41065: LD_EXP 59
41069: PUSH
41070: LD_VAR 0 7
41074: ARRAY
41075: PUSH
41076: LD_INT 0
41078: GREATER
41079: IFFALSE 41153
// DistributeHumansToBuildings ( base , [ val ] , UnitFilter ( ai_depots [ base ] [ 1 ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , 0 , 6 , true , true ) ;
41081: LD_VAR 0 7
41085: PPUSH
41086: LD_VAR 0 8
41090: PUSH
41091: EMPTY
41092: LIST
41093: PPUSH
41094: LD_EXP 59
41098: PUSH
41099: LD_VAR 0 7
41103: ARRAY
41104: PUSH
41105: LD_INT 1
41107: ARRAY
41108: PPUSH
41109: LD_INT 50
41111: PUSH
41112: EMPTY
41113: LIST
41114: PUSH
41115: LD_INT 3
41117: PUSH
41118: LD_INT 57
41120: PUSH
41121: EMPTY
41122: LIST
41123: PUSH
41124: EMPTY
41125: LIST
41126: LIST
41127: PUSH
41128: EMPTY
41129: LIST
41130: LIST
41131: PPUSH
41132: CALL_OW 72
41136: PPUSH
41137: LD_INT 0
41139: PPUSH
41140: LD_INT 6
41142: PPUSH
41143: LD_INT 1
41145: PPUSH
41146: LD_INT 1
41148: PPUSH
41149: CALL 45286 0 7
// end ; if base in [ 8 ] and under_attack then
41153: LD_VAR 0 7
41157: PUSH
41158: LD_INT 8
41160: PUSH
41161: EMPTY
41162: LIST
41163: IN
41164: PUSH
41165: LD_VAR 0 11
41169: AND
41170: IFFALSE 41349
// begin special_defenders = UnitFilter ( soldiers_list , [ f_not , [ f_inside ] ] ) ;
41172: LD_ADDR_VAR 0 15
41176: PUSH
41177: LD_VAR 0 5
41181: PPUSH
41182: LD_INT 3
41184: PUSH
41185: LD_INT 54
41187: PUSH
41188: EMPTY
41189: LIST
41190: PUSH
41191: EMPTY
41192: LIST
41193: LIST
41194: PPUSH
41195: CALL_OW 72
41199: ST_TO_ADDR
// for i in ai_armouries [ base ] do
41200: LD_ADDR_VAR 0 2
41204: PUSH
41205: LD_EXP 62
41209: PUSH
41210: LD_VAR 0 7
41214: ARRAY
41215: PUSH
41216: FOR_IN
41217: IFFALSE 41345
// begin temp_list = UnitFilter ( UnitsInside ( i ) , [ f_or , [ f_class , class_sniper ] , [ f_class , class_mortar ] , [ f_class , class_bazooker ] ] ) ;
41219: LD_ADDR_VAR 0 3
41223: PUSH
41224: LD_VAR 0 2
41228: PPUSH
41229: CALL_OW 313
41233: PPUSH
41234: LD_INT 2
41236: PUSH
41237: LD_INT 25
41239: PUSH
41240: LD_INT 5
41242: PUSH
41243: EMPTY
41244: LIST
41245: LIST
41246: PUSH
41247: LD_INT 25
41249: PUSH
41250: LD_INT 8
41252: PUSH
41253: EMPTY
41254: LIST
41255: LIST
41256: PUSH
41257: LD_INT 25
41259: PUSH
41260: LD_INT 9
41262: PUSH
41263: EMPTY
41264: LIST
41265: LIST
41266: PUSH
41267: EMPTY
41268: LIST
41269: LIST
41270: LIST
41271: LIST
41272: PPUSH
41273: CALL_OW 72
41277: ST_TO_ADDR
// for j = 1 to temp_list - [ 5 , 4 , 3 ] [ difficulty ] do
41278: LD_ADDR_VAR 0 12
41282: PUSH
41283: DOUBLE
41284: LD_INT 1
41286: DEC
41287: ST_TO_ADDR
41288: LD_VAR 0 3
41292: PUSH
41293: LD_INT 5
41295: PUSH
41296: LD_INT 4
41298: PUSH
41299: LD_INT 3
41301: PUSH
41302: EMPTY
41303: LIST
41304: LIST
41305: LIST
41306: PUSH
41307: LD_OWVAR 67
41311: ARRAY
41312: MINUS
41313: PUSH
41314: FOR_TO
41315: IFFALSE 41341
// special_defenders = special_defenders ^ temp_list [ j ] ;
41317: LD_ADDR_VAR 0 15
41321: PUSH
41322: LD_VAR 0 15
41326: PUSH
41327: LD_VAR 0 3
41331: PUSH
41332: LD_VAR 0 12
41336: ARRAY
41337: ADD
41338: ST_TO_ADDR
41339: GO 41314
41341: POP
41342: POP
// end ;
41343: GO 41216
41345: POP
41346: POP
// end else
41347: GO 41356
// special_defenders = [ ] ;
41349: LD_ADDR_VAR 0 15
41353: PUSH
41354: EMPTY
41355: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
41356: LD_ADDR_VAR 0 3
41360: PUSH
41361: LD_EXP 85
41365: PUSH
41366: LD_VAR 0 7
41370: ARRAY
41371: ST_TO_ADDR
// for i in soldiers_list diff ai_heal_these_humans [ base ] do
41372: LD_ADDR_VAR 0 2
41376: PUSH
41377: LD_VAR 0 5
41381: PUSH
41382: LD_EXP 85
41386: PUSH
41387: LD_VAR 0 7
41391: ARRAY
41392: DIFF
41393: PUSH
41394: FOR_IN
41395: IFFALSE 41458
// if GetLives ( i ) <= 500 or ( GetLives ( i ) < 800 and not i in special_defenders ) then
41397: LD_VAR 0 2
41401: PPUSH
41402: CALL_OW 256
41406: PUSH
41407: LD_INT 500
41409: LESSEQUAL
41410: PUSH
41411: LD_VAR 0 2
41415: PPUSH
41416: CALL_OW 256
41420: PUSH
41421: LD_INT 800
41423: LESS
41424: PUSH
41425: LD_VAR 0 2
41429: PUSH
41430: LD_VAR 0 15
41434: IN
41435: NOT
41436: AND
41437: OR
41438: IFFALSE 41456
// temp_list = temp_list ^ i ;
41440: LD_ADDR_VAR 0 3
41444: PUSH
41445: LD_VAR 0 3
41449: PUSH
41450: LD_VAR 0 2
41454: ADD
41455: ST_TO_ADDR
41456: GO 41394
41458: POP
41459: POP
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
41460: LD_ADDR_EXP 85
41464: PUSH
41465: LD_EXP 85
41469: PPUSH
41470: LD_VAR 0 7
41474: PPUSH
41475: LD_VAR 0 3
41479: PPUSH
41480: CALL_OW 1
41484: ST_TO_ADDR
// if not under_attack then
41485: LD_VAR 0 11
41489: NOT
41490: IFFALSE 41583
// begin for i in ai_heal_these_humans [ base ] do
41492: LD_ADDR_VAR 0 2
41496: PUSH
41497: LD_EXP 85
41501: PUSH
41502: LD_VAR 0 7
41506: ARRAY
41507: PUSH
41508: FOR_IN
41509: IFFALSE 41581
// if i in soldiers_list then
41511: LD_VAR 0 2
41515: PUSH
41516: LD_VAR 0 5
41520: IN
41521: IFFALSE 41579
// case GetType ( IsInUnit ( i ) ) of unit_vehicle :
41523: LD_VAR 0 2
41527: PPUSH
41528: CALL_OW 310
41532: PPUSH
41533: CALL_OW 247
41537: PUSH
41538: LD_INT 2
41540: DOUBLE
41541: EQUAL
41542: IFTRUE 41546
41544: GO 41558
41546: POP
// ComExitVehicle ( i ) ; unit_building :
41547: LD_VAR 0 2
41551: PPUSH
41552: CALL_OW 121
41556: GO 41579
41558: LD_INT 3
41560: DOUBLE
41561: EQUAL
41562: IFTRUE 41566
41564: GO 41578
41566: POP
// ComExitBuilding ( i ) ; end ;
41567: LD_VAR 0 2
41571: PPUSH
41572: CALL_OW 122
41576: GO 41579
41578: POP
41579: GO 41508
41581: POP
41582: POP
// end ; soldiers_list = soldiers_list diff ai_heal_these_humans [ base ] ;
41583: LD_ADDR_VAR 0 5
41587: PUSH
41588: LD_VAR 0 5
41592: PUSH
41593: LD_EXP 85
41597: PUSH
41598: LD_VAR 0 7
41602: ARRAY
41603: DIFF
41604: ST_TO_ADDR
// special_defenders = special_defenders diff ai_heal_these_humans [ base ] ;
41605: LD_ADDR_VAR 0 15
41609: PUSH
41610: LD_VAR 0 15
41614: PUSH
41615: LD_EXP 85
41619: PUSH
41620: LD_VAR 0 7
41624: ARRAY
41625: DIFF
41626: ST_TO_ADDR
// if soldiers_list = 0 then
41627: LD_VAR 0 5
41631: PUSH
41632: LD_INT 0
41634: EQUAL
41635: IFFALSE 41639
// continue ;
41637: GO 40747
// bunkers = [ ] ;
41639: LD_ADDR_VAR 0 10
41643: PUSH
41644: EMPTY
41645: ST_TO_ADDR
// temp_list = unitfilter ( ai_bunkers [ base ] , [ f_not , [ f_btype , b_breastwork ] ] ) ;
41646: LD_ADDR_VAR 0 3
41650: PUSH
41651: LD_EXP 63
41655: PUSH
41656: LD_VAR 0 7
41660: ARRAY
41661: PPUSH
41662: LD_INT 3
41664: PUSH
41665: LD_INT 30
41667: PUSH
41668: LD_INT 31
41670: PUSH
41671: EMPTY
41672: LIST
41673: LIST
41674: PUSH
41675: EMPTY
41676: LIST
41677: LIST
41678: PPUSH
41679: CALL_OW 72
41683: ST_TO_ADDR
// for i = 1 to temp_list do
41684: LD_ADDR_VAR 0 2
41688: PUSH
41689: DOUBLE
41690: LD_INT 1
41692: DEC
41693: ST_TO_ADDR
41694: LD_VAR 0 3
41698: PUSH
41699: FOR_TO
41700: IFFALSE 41777
// if GetBase ( temp_list [ i ] ) > 0 then
41702: LD_VAR 0 3
41706: PUSH
41707: LD_VAR 0 2
41711: ARRAY
41712: PPUSH
41713: CALL_OW 274
41717: PUSH
41718: LD_INT 0
41720: GREATER
41721: IFFALSE 41775
// if GetEnergy ( GetBase ( temp_list [ i ] ) ) [ 4 ] > 0 then
41723: LD_VAR 0 3
41727: PUSH
41728: LD_VAR 0 2
41732: ARRAY
41733: PPUSH
41734: CALL_OW 274
41738: PPUSH
41739: CALL_OW 278
41743: PUSH
41744: LD_INT 4
41746: ARRAY
41747: PUSH
41748: LD_INT 0
41750: GREATER
41751: IFFALSE 41775
// bunkers = bunkers ^ temp_list [ i ] ;
41753: LD_ADDR_VAR 0 10
41757: PUSH
41758: LD_VAR 0 10
41762: PUSH
41763: LD_VAR 0 3
41767: PUSH
41768: LD_VAR 0 2
41772: ARRAY
41773: ADD
41774: ST_TO_ADDR
41775: GO 41699
41777: POP
41778: POP
// bunkers = bunkers ^ unitfilter ( ai_bunkers [ base ] , [ f_btype , b_breastwork ] ) ;
41779: LD_ADDR_VAR 0 10
41783: PUSH
41784: LD_VAR 0 10
41788: PUSH
41789: LD_EXP 63
41793: PUSH
41794: LD_VAR 0 7
41798: ARRAY
41799: PPUSH
41800: LD_INT 30
41802: PUSH
41803: LD_INT 31
41805: PUSH
41806: EMPTY
41807: LIST
41808: LIST
41809: PPUSH
41810: CALL_OW 72
41814: ADD
41815: ST_TO_ADDR
// buildings_list = [ ] ;
41816: LD_ADDR_VAR 0 4
41820: PUSH
41821: EMPTY
41822: ST_TO_ADDR
// for i in UnitFilter ( bunkers , [ f_ok ] ) do
41823: LD_ADDR_VAR 0 2
41827: PUSH
41828: LD_VAR 0 10
41832: PPUSH
41833: LD_INT 50
41835: PUSH
41836: EMPTY
41837: LIST
41838: PPUSH
41839: CALL_OW 72
41843: PUSH
41844: FOR_IN
41845: IFFALSE 41921
// begin temp_unit = UnitsInside ( i ) ;
41847: LD_ADDR_VAR 0 6
41851: PUSH
41852: LD_VAR 0 2
41856: PPUSH
41857: CALL_OW 313
41861: ST_TO_ADDR
// if temp_unit = 0 and not i in ai_units_irradiated then
41862: LD_VAR 0 6
41866: PUSH
41867: LD_INT 0
41869: EQUAL
41870: PUSH
41871: LD_VAR 0 2
41875: PUSH
41876: LD_EXP 158
41880: IN
41881: NOT
41882: AND
41883: IFFALSE 41903
// buildings_list = buildings_list ^ i else
41885: LD_ADDR_VAR 0 4
41889: PUSH
41890: LD_VAR 0 4
41894: PUSH
41895: LD_VAR 0 2
41899: ADD
41900: ST_TO_ADDR
41901: GO 41919
// soldiers_list = soldiers_list diff temp_unit ;
41903: LD_ADDR_VAR 0 5
41907: PUSH
41908: LD_VAR 0 5
41912: PUSH
41913: LD_VAR 0 6
41917: DIFF
41918: ST_TO_ADDR
// end ;
41919: GO 41844
41921: POP
41922: POP
// if buildings_list > 0 then
41923: LD_VAR 0 4
41927: PUSH
41928: LD_INT 0
41930: GREATER
41931: IFFALSE 42636
// begin if not under_attack then
41933: LD_VAR 0 11
41937: NOT
41938: IFFALSE 42008
// begin temp_list = [ ] ;
41940: LD_ADDR_VAR 0 3
41944: PUSH
41945: EMPTY
41946: ST_TO_ADDR
// for i in soldiers_list do
41947: LD_ADDR_VAR 0 2
41951: PUSH
41952: LD_VAR 0 5
41956: PUSH
41957: FOR_IN
41958: IFFALSE 41986
// temp_list = temp_list ^ GetSkill ( i , skill_combat ) ;
41960: LD_ADDR_VAR 0 3
41964: PUSH
41965: LD_VAR 0 3
41969: PUSH
41970: LD_VAR 0 2
41974: PPUSH
41975: LD_INT 1
41977: PPUSH
41978: CALL_OW 259
41982: ADD
41983: ST_TO_ADDR
41984: GO 41957
41986: POP
41987: POP
// soldiers_list = SortListByListDesc ( soldiers_list , temp_list ) ;
41988: LD_ADDR_VAR 0 5
41992: PUSH
41993: LD_VAR 0 5
41997: PPUSH
41998: LD_VAR 0 3
42002: PPUSH
42003: CALL_OW 77
42007: ST_TO_ADDR
// end ; special_units = UnitFilter ( soldiers_list , [ f_or , [ f_class , class_bazooker ] , [ f_class , class_sniper ] , [ f_class , class_mortar ] ] ) ;
42008: LD_ADDR_VAR 0 9
42012: PUSH
42013: LD_VAR 0 5
42017: PPUSH
42018: LD_INT 2
42020: PUSH
42021: LD_INT 25
42023: PUSH
42024: LD_INT 9
42026: PUSH
42027: EMPTY
42028: LIST
42029: LIST
42030: PUSH
42031: LD_INT 25
42033: PUSH
42034: LD_INT 5
42036: PUSH
42037: EMPTY
42038: LIST
42039: LIST
42040: PUSH
42041: LD_INT 25
42043: PUSH
42044: LD_INT 8
42046: PUSH
42047: EMPTY
42048: LIST
42049: LIST
42050: PUSH
42051: EMPTY
42052: LIST
42053: LIST
42054: LIST
42055: LIST
42056: PPUSH
42057: CALL_OW 72
42061: ST_TO_ADDR
// soldiers_list = soldiers_list diff special_units ;
42062: LD_ADDR_VAR 0 5
42066: PUSH
42067: LD_VAR 0 5
42071: PUSH
42072: LD_VAR 0 9
42076: DIFF
42077: ST_TO_ADDR
// for i = 1 to buildings_list do
42078: LD_ADDR_VAR 0 2
42082: PUSH
42083: DOUBLE
42084: LD_INT 1
42086: DEC
42087: ST_TO_ADDR
42088: LD_VAR 0 4
42092: PUSH
42093: FOR_TO
42094: IFFALSE 42632
// begin if soldiers_list = 0 then
42096: LD_VAR 0 5
42100: PUSH
42101: LD_INT 0
42103: EQUAL
42104: IFFALSE 42135
// begin if special_units = 0 then
42106: LD_VAR 0 9
42110: PUSH
42111: LD_INT 0
42113: EQUAL
42114: IFFALSE 42118
// break ;
42116: GO 42632
// soldiers_list = special_units ;
42118: LD_ADDR_VAR 0 5
42122: PUSH
42123: LD_VAR 0 9
42127: ST_TO_ADDR
// special_units = [ ] ;
42128: LD_ADDR_VAR 0 9
42132: PUSH
42133: EMPTY
42134: ST_TO_ADDR
// end ; if not under_attack then
42135: LD_VAR 0 11
42139: NOT
42140: IFFALSE 42205
// begin if GetBType ( buildings_list [ i ] ) = b_breastwork and special_units > 0 then
42142: LD_VAR 0 4
42146: PUSH
42147: LD_VAR 0 2
42151: ARRAY
42152: PPUSH
42153: CALL_OW 266
42157: PUSH
42158: LD_INT 31
42160: EQUAL
42161: PUSH
42162: LD_VAR 0 9
42166: PUSH
42167: LD_INT 0
42169: GREATER
42170: AND
42171: IFFALSE 42189
// temp_unit = special_units [ 1 ] else
42173: LD_ADDR_VAR 0 6
42177: PUSH
42178: LD_VAR 0 9
42182: PUSH
42183: LD_INT 1
42185: ARRAY
42186: ST_TO_ADDR
42187: GO 42203
// temp_unit = soldiers_list [ 1 ] ;
42189: LD_ADDR_VAR 0 6
42193: PUSH
42194: LD_VAR 0 5
42198: PUSH
42199: LD_INT 1
42201: ARRAY
42202: ST_TO_ADDR
// end else
42203: GO 42334
// begin if GetBType ( buildings_list [ i ] ) = b_breastwork and special_units > 0 then
42205: LD_VAR 0 4
42209: PUSH
42210: LD_VAR 0 2
42214: ARRAY
42215: PPUSH
42216: CALL_OW 266
42220: PUSH
42221: LD_INT 31
42223: EQUAL
42224: PUSH
42225: LD_VAR 0 9
42229: PUSH
42230: LD_INT 0
42232: GREATER
42233: AND
42234: IFFALSE 42248
// temp_list_2 = special_units else
42236: LD_ADDR_VAR 0 14
42240: PUSH
42241: LD_VAR 0 9
42245: ST_TO_ADDR
42246: GO 42258
// temp_list_2 = soldiers_list ;
42248: LD_ADDR_VAR 0 14
42252: PUSH
42253: LD_VAR 0 5
42257: ST_TO_ADDR
// temp_list = [ ] ;
42258: LD_ADDR_VAR 0 3
42262: PUSH
42263: EMPTY
42264: ST_TO_ADDR
// for j in temp_list_2 do
42265: LD_ADDR_VAR 0 12
42269: PUSH
42270: LD_VAR 0 14
42274: PUSH
42275: FOR_IN
42276: IFFALSE 42312
// temp_list = temp_list ^ GetDistUnits ( j , buildings_list [ i ] ) ;
42278: LD_ADDR_VAR 0 3
42282: PUSH
42283: LD_VAR 0 3
42287: PUSH
42288: LD_VAR 0 12
42292: PPUSH
42293: LD_VAR 0 4
42297: PUSH
42298: LD_VAR 0 2
42302: ARRAY
42303: PPUSH
42304: CALL_OW 296
42308: ADD
42309: ST_TO_ADDR
42310: GO 42275
42312: POP
42313: POP
// temp_unit = WorstFromListByList ( temp_list_2 , temp_list ) ;
42314: LD_ADDR_VAR 0 6
42318: PUSH
42319: LD_VAR 0 14
42323: PPUSH
42324: LD_VAR 0 3
42328: PPUSH
42329: CALL_OW 78
42333: ST_TO_ADDR
// end ; if GetClass ( temp_unit ) in [ class_mortar , class_bazooker , class_sniper ] and ai_armouries [ base ] > 0 then
42334: LD_VAR 0 6
42338: PPUSH
42339: CALL_OW 257
42343: PUSH
42344: LD_INT 8
42346: PUSH
42347: LD_INT 9
42349: PUSH
42350: LD_INT 5
42352: PUSH
42353: EMPTY
42354: LIST
42355: LIST
42356: LIST
42357: IN
42358: PUSH
42359: LD_EXP 62
42363: PUSH
42364: LD_VAR 0 7
42368: ARRAY
42369: PUSH
42370: LD_INT 0
42372: GREATER
42373: AND
42374: IFFALSE 42492
// begin if GetBType ( IsInUnit ( temp_unit ) ) in [ b_barracks , b_armoury ] then
42376: LD_VAR 0 6
42380: PPUSH
42381: CALL_OW 310
42385: PPUSH
42386: CALL_OW 266
42390: PUSH
42391: LD_INT 5
42393: PUSH
42394: LD_INT 4
42396: PUSH
42397: EMPTY
42398: LIST
42399: LIST
42400: IN
42401: IFFALSE 42417
// ComChangeProfession ( temp_unit , class_soldier ) else
42403: LD_VAR 0 6
42407: PPUSH
42408: LD_INT 1
42410: PPUSH
42411: CALL_OW 123
42415: GO 42490
// if IsInUnit ( temp_unit ) then
42417: LD_VAR 0 6
42421: PPUSH
42422: CALL_OW 310
42426: IFFALSE 42454
// ComMoveUnit ( temp_unit , ai_armouries [ base ] [ 1 ] ) else
42428: LD_VAR 0 6
42432: PPUSH
42433: LD_EXP 62
42437: PUSH
42438: LD_VAR 0 7
42442: ARRAY
42443: PUSH
42444: LD_INT 1
42446: ARRAY
42447: PPUSH
42448: CALL_OW 112
42452: GO 42490
// begin ComEnterUnit ( temp_unit , ai_armouries [ base ] [ 1 ] ) ;
42454: LD_VAR 0 6
42458: PPUSH
42459: LD_EXP 62
42463: PUSH
42464: LD_VAR 0 7
42468: ARRAY
42469: PUSH
42470: LD_INT 1
42472: ARRAY
42473: PPUSH
42474: CALL_OW 120
// AddComChangeProfession ( temp_unit , class_soldier ) ;
42478: LD_VAR 0 6
42482: PPUSH
42483: LD_INT 1
42485: PPUSH
42486: CALL_OW 183
// end ; end else
42490: GO 42598
// if IsOk ( buildings_list [ i ] ) then
42492: LD_VAR 0 4
42496: PUSH
42497: LD_VAR 0 2
42501: ARRAY
42502: PPUSH
42503: CALL_OW 302
42507: IFFALSE 42531
// ComEnterUnit ( temp_unit , buildings_list [ i ] ) else
42509: LD_VAR 0 6
42513: PPUSH
42514: LD_VAR 0 4
42518: PUSH
42519: LD_VAR 0 2
42523: ARRAY
42524: PPUSH
42525: CALL_OW 120
42529: GO 42598
// if GetDistUnits ( temp_unit , buildings_list [ i ] ) > 4 then
42531: LD_VAR 0 6
42535: PPUSH
42536: LD_VAR 0 4
42540: PUSH
42541: LD_VAR 0 2
42545: ARRAY
42546: PPUSH
42547: CALL_OW 296
42551: PUSH
42552: LD_INT 4
42554: GREATER
42555: IFFALSE 42598
// ComAgressiveMove ( temp_unit , GetX ( buildings_list [ i ] ) , GetY ( buildings_list [ i ] ) ) ;
42557: LD_VAR 0 6
42561: PPUSH
42562: LD_VAR 0 4
42566: PUSH
42567: LD_VAR 0 2
42571: ARRAY
42572: PPUSH
42573: CALL_OW 250
42577: PPUSH
42578: LD_VAR 0 4
42582: PUSH
42583: LD_VAR 0 2
42587: ARRAY
42588: PPUSH
42589: CALL_OW 251
42593: PPUSH
42594: CALL_OW 114
// soldiers_list = soldiers_list diff temp_unit ;
42598: LD_ADDR_VAR 0 5
42602: PUSH
42603: LD_VAR 0 5
42607: PUSH
42608: LD_VAR 0 6
42612: DIFF
42613: ST_TO_ADDR
// special_units = special_units diff temp_unit ;
42614: LD_ADDR_VAR 0 9
42618: PUSH
42619: LD_VAR 0 9
42623: PUSH
42624: LD_VAR 0 6
42628: DIFF
42629: ST_TO_ADDR
// end ;
42630: GO 42093
42632: POP
42633: POP
// end else
42634: GO 42643
// special_units = [ ] ;
42636: LD_ADDR_VAR 0 9
42640: PUSH
42641: EMPTY
42642: ST_TO_ADDR
// temp_list = UnitFilter ( ai_armouries [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) diff ai_units_irradiated ;
42643: LD_ADDR_VAR 0 3
42647: PUSH
42648: LD_EXP 62
42652: PUSH
42653: LD_VAR 0 7
42657: ARRAY
42658: PPUSH
42659: LD_INT 50
42661: PUSH
42662: EMPTY
42663: LIST
42664: PUSH
42665: LD_INT 3
42667: PUSH
42668: LD_INT 57
42670: PUSH
42671: EMPTY
42672: LIST
42673: PUSH
42674: EMPTY
42675: LIST
42676: LIST
42677: PUSH
42678: EMPTY
42679: LIST
42680: LIST
42681: PPUSH
42682: CALL_OW 72
42686: PUSH
42687: LD_EXP 158
42691: DIFF
42692: ST_TO_ADDR
// DistributeHumansToBuildings ( base , soldiers_list ^ special_units , temp_list , false , 6 , true , true ) ;
42693: LD_VAR 0 7
42697: PPUSH
42698: LD_VAR 0 5
42702: PUSH
42703: LD_VAR 0 9
42707: ADD
42708: PPUSH
42709: LD_VAR 0 3
42713: PPUSH
42714: LD_INT 0
42716: PPUSH
42717: LD_INT 6
42719: PPUSH
42720: LD_INT 1
42722: PPUSH
42723: LD_INT 1
42725: PPUSH
42726: CALL 45286 0 7
// end ;
42730: GO 40747
42732: POP
42733: POP
// until false ;
42734: LD_INT 0
42736: IFFALSE 40708
// end ;
42738: PPOPN 15
42740: END
// every 0 0$1 + 0 0$0.2 do var i , un , base , temp_list , temp_list_2 ;
42741: GO 42743
42743: DISABLE
42744: LD_INT 0
42746: PPUSH
42747: PPUSH
42748: PPUSH
42749: PPUSH
42750: PPUSH
// begin repeat wait ( 0 0$0.5 ) ;
42751: LD_INT 18
42753: PPUSH
42754: CALL_OW 67
// ai_mines = ai_mines diff 0 ;
42758: LD_ADDR_EXP 156
42762: PUSH
42763: LD_EXP 156
42767: PUSH
42768: LD_INT 0
42770: DIFF
42771: ST_TO_ADDR
// if not 1 in ai_bases then
42772: LD_INT 1
42774: PUSH
42775: LD_EXP 49
42779: IN
42780: NOT
42781: IFFALSE 42785
// exit ;
42783: GO 42864
// for i in ai_mines do
42785: LD_ADDR_VAR 0 1
42789: PUSH
42790: LD_EXP 156
42794: PUSH
42795: FOR_IN
42796: IFFALSE 42858
// if GetSide ( HexInfo ( i [ 1 ] , i [ 2 ] ) ) = 2 then
42798: LD_VAR 0 1
42802: PUSH
42803: LD_INT 1
42805: ARRAY
42806: PPUSH
42807: LD_VAR 0 1
42811: PUSH
42812: LD_INT 2
42814: ARRAY
42815: PPUSH
42816: CALL_OW 428
42820: PPUSH
42821: CALL_OW 255
42825: PUSH
42826: LD_INT 2
42828: EQUAL
42829: IFFALSE 42856
// LaunchMineAtPos ( i [ 1 ] , i [ 2 ] , 8 ) ;
42831: LD_VAR 0 1
42835: PUSH
42836: LD_INT 1
42838: ARRAY
42839: PPUSH
42840: LD_VAR 0 1
42844: PUSH
42845: LD_INT 2
42847: ARRAY
42848: PPUSH
42849: LD_INT 8
42851: PPUSH
42852: CALL_OW 456
42856: GO 42795
42858: POP
42859: POP
// until false ;
42860: LD_INT 0
42862: IFFALSE 42751
// end ;
42864: PPOPN 5
42866: END
// every 0 0$1 + 0 0$0.4 do var side , base , i , temp_list , un1 , temp_list_2 , temp_value , val ; var sopo_cooldown ;
42867: GO 42869
42869: DISABLE
42870: LD_INT 0
42872: PPUSH
42873: PPUSH
42874: PPUSH
42875: PPUSH
42876: PPUSH
42877: PPUSH
42878: PPUSH
42879: PPUSH
42880: PPUSH
// begin sopo_cooldown = [ ] ;
42881: LD_ADDR_VAR 0 9
42885: PUSH
42886: EMPTY
42887: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
42888: LD_INT 35
42890: PPUSH
42891: CALL_OW 67
// for base in ai_bases do
42895: LD_ADDR_VAR 0 2
42899: PUSH
42900: LD_EXP 49
42904: PUSH
42905: FOR_IN
42906: IFFALSE 43252
// begin if base in [ 1 , 2 ] then
42908: LD_VAR 0 2
42912: PUSH
42913: LD_INT 1
42915: PUSH
42916: LD_INT 2
42918: PUSH
42919: EMPTY
42920: LIST
42921: LIST
42922: IN
42923: IFFALSE 42927
// continue ;
42925: GO 42905
// side = GetBaseSide ( base ) ;
42927: LD_ADDR_VAR 0 1
42931: PUSH
42932: LD_VAR 0 2
42936: PPUSH
42937: CALL 40471 0 1
42941: ST_TO_ADDR
// for i in ai_soldiers [ base ] do
42942: LD_ADDR_VAR 0 3
42946: PUSH
42947: LD_EXP 50
42951: PUSH
42952: LD_VAR 0 2
42956: ARRAY
42957: PUSH
42958: FOR_IN
42959: IFFALSE 43026
// if sopo_cooldown >= i then
42961: LD_VAR 0 9
42965: PUSH
42966: LD_VAR 0 3
42970: GREATEREQUAL
42971: IFFALSE 43024
// if sopo_cooldown [ i ] > 0 0$0 then
42973: LD_VAR 0 9
42977: PUSH
42978: LD_VAR 0 3
42982: ARRAY
42983: PUSH
42984: LD_INT 0
42986: GREATER
42987: IFFALSE 43024
// sopo_cooldown = Replace ( sopo_cooldown , i , sopo_cooldown [ i ] - 0 0$0.5 ) ;
42989: LD_ADDR_VAR 0 9
42993: PUSH
42994: LD_VAR 0 9
42998: PPUSH
42999: LD_VAR 0 3
43003: PPUSH
43004: LD_VAR 0 9
43008: PUSH
43009: LD_VAR 0 3
43013: ARRAY
43014: PUSH
43015: LD_INT 18
43017: MINUS
43018: PPUSH
43019: CALL_OW 1
43023: ST_TO_ADDR
43024: GO 42958
43026: POP
43027: POP
// for i in ai_soldiers [ base ] diff ai_heal_these_humans [ base ] do
43028: LD_ADDR_VAR 0 3
43032: PUSH
43033: LD_EXP 50
43037: PUSH
43038: LD_VAR 0 2
43042: ARRAY
43043: PUSH
43044: LD_EXP 85
43048: PUSH
43049: LD_VAR 0 2
43053: ARRAY
43054: DIFF
43055: PUSH
43056: FOR_IN
43057: IFFALSE 43248
// if GetClass ( i ) = class_sniper then
43059: LD_VAR 0 3
43063: PPUSH
43064: CALL_OW 257
43068: PUSH
43069: LD_INT 5
43071: EQUAL
43072: IFFALSE 43246
// begin temp_list = GetTaskList ( i ) ;
43074: LD_ADDR_VAR 0 4
43078: PUSH
43079: LD_VAR 0 3
43083: PPUSH
43084: CALL_OW 437
43088: ST_TO_ADDR
// if temp_list > 0 then
43089: LD_VAR 0 4
43093: PUSH
43094: LD_INT 0
43096: GREATER
43097: IFFALSE 43119
// if temp_list [ 1 ] [ 1 ] = n then
43099: LD_VAR 0 4
43103: PUSH
43104: LD_INT 1
43106: ARRAY
43107: PUSH
43108: LD_INT 1
43110: ARRAY
43111: PUSH
43112: LD_STRING n
43114: EQUAL
43115: IFFALSE 43119
// continue ;
43117: GO 43056
// un1 = Attacks ( i ) ;
43119: LD_ADDR_VAR 0 5
43123: PUSH
43124: LD_VAR 0 3
43128: PPUSH
43129: CALL_OW 320
43133: ST_TO_ADDR
// if un1 > 0 and GetType ( un1 ) = unit_human then
43134: LD_VAR 0 5
43138: PUSH
43139: LD_INT 0
43141: GREATER
43142: PUSH
43143: LD_VAR 0 5
43147: PPUSH
43148: CALL_OW 247
43152: PUSH
43153: LD_INT 1
43155: EQUAL
43156: AND
43157: IFFALSE 43246
// begin val = true ;
43159: LD_ADDR_VAR 0 8
43163: PUSH
43164: LD_INT 1
43166: ST_TO_ADDR
// if sopo_cooldown >= i then
43167: LD_VAR 0 9
43171: PUSH
43172: LD_VAR 0 3
43176: GREATEREQUAL
43177: IFFALSE 43203
// if sopo_cooldown [ i ] > 0 0$0 then
43179: LD_VAR 0 9
43183: PUSH
43184: LD_VAR 0 3
43188: ARRAY
43189: PUSH
43190: LD_INT 0
43192: GREATER
43193: IFFALSE 43203
// val = false ;
43195: LD_ADDR_VAR 0 8
43199: PUSH
43200: LD_INT 0
43202: ST_TO_ADDR
// if val then
43203: LD_VAR 0 8
43207: IFFALSE 43246
// begin ComAttackSoporific ( i , un1 ) ;
43209: LD_VAR 0 3
43213: PPUSH
43214: LD_VAR 0 5
43218: PPUSH
43219: CALL_OW 166
// sopo_cooldown = Replace ( sopo_cooldown , i , 0 0$10 ) ;
43223: LD_ADDR_VAR 0 9
43227: PUSH
43228: LD_VAR 0 9
43232: PPUSH
43233: LD_VAR 0 3
43237: PPUSH
43238: LD_INT 350
43240: PPUSH
43241: CALL_OW 1
43245: ST_TO_ADDR
// end ; end ; end ;
43246: GO 43056
43248: POP
43249: POP
// end ;
43250: GO 42905
43252: POP
43253: POP
// until false ;
43254: LD_INT 0
43256: IFFALSE 42888
// end ;
43258: PPOPN 9
43260: END
// every 0 0$1 + 0 0$0.1 do var side , base , i , temp_list , un1 , temp_list_2 , temp_value , val , lapsers ;
43261: GO 43263
43263: DISABLE
43264: LD_INT 0
43266: PPUSH
43267: PPUSH
43268: PPUSH
43269: PPUSH
43270: PPUSH
43271: PPUSH
43272: PPUSH
43273: PPUSH
43274: PPUSH
// begin repeat wait ( 0 0$1 ) ;
43275: LD_INT 35
43277: PPUSH
43278: CALL_OW 67
// for base in ai_bases do
43282: LD_ADDR_VAR 0 2
43286: PUSH
43287: LD_EXP 49
43291: PUSH
43292: FOR_IN
43293: IFFALSE 43973
// begin if base in [ 1 , 3 ] then
43295: LD_VAR 0 2
43299: PUSH
43300: LD_INT 1
43302: PUSH
43303: LD_INT 3
43305: PUSH
43306: EMPTY
43307: LIST
43308: LIST
43309: IN
43310: IFFALSE 43314
// continue ;
43312: GO 43292
// side = GetBaseSide ( base ) ;
43314: LD_ADDR_VAR 0 1
43318: PUSH
43319: LD_VAR 0 2
43323: PPUSH
43324: CALL 40471 0 1
43328: ST_TO_ADDR
// lapsers = [ ] ;
43329: LD_ADDR_VAR 0 9
43333: PUSH
43334: EMPTY
43335: ST_TO_ADDR
// for i in ai_bunkers [ base ] ^ ai_turrets [ base ] do
43336: LD_ADDR_VAR 0 3
43340: PUSH
43341: LD_EXP 63
43345: PUSH
43346: LD_VAR 0 2
43350: ARRAY
43351: PUSH
43352: LD_EXP 64
43356: PUSH
43357: LD_VAR 0 2
43361: ARRAY
43362: ADD
43363: PUSH
43364: FOR_IN
43365: IFFALSE 43480
// if GetBase ( i ) > 0 then
43367: LD_VAR 0 3
43371: PPUSH
43372: CALL_OW 274
43376: PUSH
43377: LD_INT 0
43379: GREATER
43380: IFFALSE 43478
// if GetBWeapon ( i ) = ru_time_lapser and IsOk ( i ) and ( UnitsInside ( i ) > 0 or GetBType ( i ) = b_turret ) and GetEnergy ( GetBase ( i ) ) [ 4 ] > 0 then
43382: LD_VAR 0 3
43386: PPUSH
43387: CALL_OW 269
43391: PUSH
43392: LD_INT 49
43394: EQUAL
43395: PUSH
43396: LD_VAR 0 3
43400: PPUSH
43401: CALL_OW 302
43405: AND
43406: PUSH
43407: LD_VAR 0 3
43411: PPUSH
43412: CALL_OW 313
43416: PUSH
43417: LD_INT 0
43419: GREATER
43420: PUSH
43421: LD_VAR 0 3
43425: PPUSH
43426: CALL_OW 266
43430: PUSH
43431: LD_INT 33
43433: EQUAL
43434: OR
43435: AND
43436: PUSH
43437: LD_VAR 0 3
43441: PPUSH
43442: CALL_OW 274
43446: PPUSH
43447: CALL_OW 278
43451: PUSH
43452: LD_INT 4
43454: ARRAY
43455: PUSH
43456: LD_INT 0
43458: GREATER
43459: AND
43460: IFFALSE 43478
// lapsers = lapsers ^ i ;
43462: LD_ADDR_VAR 0 9
43466: PUSH
43467: LD_VAR 0 9
43471: PUSH
43472: LD_VAR 0 3
43476: ADD
43477: ST_TO_ADDR
43478: GO 43364
43480: POP
43481: POP
// for i in ai_soldiers [ base ] diff ai_heal_these_humans [ base ] do
43482: LD_ADDR_VAR 0 3
43486: PUSH
43487: LD_EXP 50
43491: PUSH
43492: LD_VAR 0 2
43496: ARRAY
43497: PUSH
43498: LD_EXP 85
43502: PUSH
43503: LD_VAR 0 2
43507: ARRAY
43508: DIFF
43509: PUSH
43510: FOR_IN
43511: IFFALSE 43969
// if GetClass ( i ) = class_bazooker then
43513: LD_VAR 0 3
43517: PPUSH
43518: CALL_OW 257
43522: PUSH
43523: LD_INT 9
43525: EQUAL
43526: IFFALSE 43967
// begin temp_list = GetTaskList ( i ) ;
43528: LD_ADDR_VAR 0 4
43532: PUSH
43533: LD_VAR 0 3
43537: PPUSH
43538: CALL_OW 437
43542: ST_TO_ADDR
// if temp_list > 0 then
43543: LD_VAR 0 4
43547: PUSH
43548: LD_INT 0
43550: GREATER
43551: IFFALSE 43591
// if temp_list [ 1 ] [ 1 ] = & or temp_list [ 1 ] [ 1 ] = % then
43553: LD_VAR 0 4
43557: PUSH
43558: LD_INT 1
43560: ARRAY
43561: PUSH
43562: LD_INT 1
43564: ARRAY
43565: PUSH
43566: LD_STRING &
43568: EQUAL
43569: PUSH
43570: LD_VAR 0 4
43574: PUSH
43575: LD_INT 1
43577: ARRAY
43578: PUSH
43579: LD_INT 1
43581: ARRAY
43582: PUSH
43583: LD_STRING %
43585: EQUAL
43586: OR
43587: IFFALSE 43591
// continue ;
43589: GO 43510
// un1 = Attacks ( i ) ;
43591: LD_ADDR_VAR 0 5
43595: PUSH
43596: LD_VAR 0 3
43600: PPUSH
43601: CALL_OW 320
43605: ST_TO_ADDR
// if un1 > 0 and DangerousUnits ( [ un1 ] ) > 0 then
43606: LD_VAR 0 5
43610: PUSH
43611: LD_INT 0
43613: GREATER
43614: PUSH
43615: LD_VAR 0 5
43619: PUSH
43620: EMPTY
43621: LIST
43622: PPUSH
43623: CALL 33428 0 1
43627: PUSH
43628: LD_INT 0
43630: GREATER
43631: AND
43632: IFFALSE 43967
// begin temp_list_2 = [ GetX ( un1 ) , GetY ( un1 ) ] ;
43634: LD_ADDR_VAR 0 6
43638: PUSH
43639: LD_VAR 0 5
43643: PPUSH
43644: CALL_OW 250
43648: PUSH
43649: LD_VAR 0 5
43653: PPUSH
43654: CALL_OW 251
43658: PUSH
43659: EMPTY
43660: LIST
43661: LIST
43662: ST_TO_ADDR
// temp_value = false ;
43663: LD_ADDR_VAR 0 7
43667: PUSH
43668: LD_INT 0
43670: ST_TO_ADDR
// for val in ai_time_shift_hexes [ base ] ^ ai_time_shift_hexes_underway [ base ] do
43671: LD_ADDR_VAR 0 8
43675: PUSH
43676: LD_EXP 121
43680: PUSH
43681: LD_VAR 0 2
43685: ARRAY
43686: PUSH
43687: LD_EXP 122
43691: PUSH
43692: LD_VAR 0 2
43696: ARRAY
43697: ADD
43698: PUSH
43699: FOR_IN
43700: IFFALSE 43772
// if GetDistXY ( temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , val [ 1 ] , val [ 2 ] ) <= ai_time_shift_data [ side ] [ 2 ] then
43702: LD_VAR 0 6
43706: PUSH
43707: LD_INT 1
43709: ARRAY
43710: PPUSH
43711: LD_VAR 0 6
43715: PUSH
43716: LD_INT 2
43718: ARRAY
43719: PPUSH
43720: LD_VAR 0 8
43724: PUSH
43725: LD_INT 1
43727: ARRAY
43728: PPUSH
43729: LD_VAR 0 8
43733: PUSH
43734: LD_INT 2
43736: ARRAY
43737: PPUSH
43738: CALL_OW 298
43742: PUSH
43743: LD_EXP 120
43747: PUSH
43748: LD_VAR 0 1
43752: ARRAY
43753: PUSH
43754: LD_INT 2
43756: ARRAY
43757: LESSEQUAL
43758: IFFALSE 43770
// begin temp_value = true ;
43760: LD_ADDR_VAR 0 7
43764: PUSH
43765: LD_INT 1
43767: ST_TO_ADDR
// break ;
43768: GO 43772
// end ;
43770: GO 43699
43772: POP
43773: POP
// if not temp_value then
43774: LD_VAR 0 7
43778: NOT
43779: IFFALSE 43856
// for val in lapsers do
43781: LD_ADDR_VAR 0 8
43785: PUSH
43786: LD_VAR 0 9
43790: PUSH
43791: FOR_IN
43792: IFFALSE 43854
// if GetDistXY ( temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , GetX ( val ) , GetY ( val ) ) <= 11 then
43794: LD_VAR 0 6
43798: PUSH
43799: LD_INT 1
43801: ARRAY
43802: PPUSH
43803: LD_VAR 0 6
43807: PUSH
43808: LD_INT 2
43810: ARRAY
43811: PPUSH
43812: LD_VAR 0 8
43816: PPUSH
43817: CALL_OW 250
43821: PPUSH
43822: LD_VAR 0 8
43826: PPUSH
43827: CALL_OW 251
43831: PPUSH
43832: CALL_OW 298
43836: PUSH
43837: LD_INT 11
43839: LESSEQUAL
43840: IFFALSE 43852
// begin temp_value = true ;
43842: LD_ADDR_VAR 0 7
43846: PUSH
43847: LD_INT 1
43849: ST_TO_ADDR
// break ;
43850: GO 43854
// end ;
43852: GO 43791
43854: POP
43855: POP
// if not temp_value then
43856: LD_VAR 0 7
43860: NOT
43861: IFFALSE 43967
// begin ComTimeShift ( i , temp_list_2 [ 1 ] , temp_list_2 [ 2 ] ) ;
43863: LD_VAR 0 3
43867: PPUSH
43868: LD_VAR 0 6
43872: PUSH
43873: LD_INT 1
43875: ARRAY
43876: PPUSH
43877: LD_VAR 0 6
43881: PUSH
43882: LD_INT 2
43884: ARRAY
43885: PPUSH
43886: CALL_OW 154
// temp_list = Insert ( ai_time_shift_hexes_underway [ base ] , 1 , [ temp_list_2 [ 1 ] , temp_list_2 [ 2 ] , i ] ) ;
43890: LD_ADDR_VAR 0 4
43894: PUSH
43895: LD_EXP 122
43899: PUSH
43900: LD_VAR 0 2
43904: ARRAY
43905: PPUSH
43906: LD_INT 1
43908: PPUSH
43909: LD_VAR 0 6
43913: PUSH
43914: LD_INT 1
43916: ARRAY
43917: PUSH
43918: LD_VAR 0 6
43922: PUSH
43923: LD_INT 2
43925: ARRAY
43926: PUSH
43927: LD_VAR 0 3
43931: PUSH
43932: EMPTY
43933: LIST
43934: LIST
43935: LIST
43936: PPUSH
43937: CALL_OW 2
43941: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
43942: LD_ADDR_EXP 122
43946: PUSH
43947: LD_EXP 122
43951: PPUSH
43952: LD_VAR 0 2
43956: PPUSH
43957: LD_VAR 0 4
43961: PPUSH
43962: CALL_OW 1
43966: ST_TO_ADDR
// end ; end ; end ;
43967: GO 43510
43969: POP
43970: POP
// end ;
43971: GO 43292
43973: POP
43974: POP
// until false ;
43975: LD_INT 0
43977: IFFALSE 43275
// end ;
43979: PPOPN 9
43981: END
// every 0 0$1 + 0 0$0.2 do var base , i , temp_list , un1 , temp_list_2 , temp_value ; var shooting_delay ;
43982: GO 43984
43984: DISABLE
43985: LD_INT 0
43987: PPUSH
43988: PPUSH
43989: PPUSH
43990: PPUSH
43991: PPUSH
43992: PPUSH
43993: PPUSH
// begin shooting_delay = [ 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 ] ;
43994: LD_ADDR_VAR 0 7
43998: PUSH
43999: LD_INT 0
44001: PUSH
44002: LD_INT 0
44004: PUSH
44005: LD_INT 0
44007: PUSH
44008: LD_INT 0
44010: PUSH
44011: EMPTY
44012: LIST
44013: LIST
44014: LIST
44015: LIST
44016: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
44017: LD_INT 35
44019: PPUSH
44020: CALL_OW 67
// if difficulty = 1 then
44024: LD_OWVAR 67
44028: PUSH
44029: LD_INT 1
44031: EQUAL
44032: IFFALSE 44036
// exit ;
44034: GO 44525
// for base in ai_bases do
44036: LD_ADDR_VAR 0 1
44040: PUSH
44041: LD_EXP 49
44045: PUSH
44046: FOR_IN
44047: IFFALSE 44519
// begin if base in [ 1 , 3 ] then
44049: LD_VAR 0 1
44053: PUSH
44054: LD_INT 1
44056: PUSH
44057: LD_INT 3
44059: PUSH
44060: EMPTY
44061: LIST
44062: LIST
44063: IN
44064: IFFALSE 44068
// continue ;
44066: GO 44046
// if shooting_delay [ base ] > 0 0$0 then
44068: LD_VAR 0 7
44072: PUSH
44073: LD_VAR 0 1
44077: ARRAY
44078: PUSH
44079: LD_INT 0
44081: GREATER
44082: IFFALSE 44121
// begin shooting_delay = Replace ( shooting_delay , base , shooting_delay [ base ] - 0 0$1 ) ;
44084: LD_ADDR_VAR 0 7
44088: PUSH
44089: LD_VAR 0 7
44093: PPUSH
44094: LD_VAR 0 1
44098: PPUSH
44099: LD_VAR 0 7
44103: PUSH
44104: LD_VAR 0 1
44108: ARRAY
44109: PUSH
44110: LD_INT 35
44112: MINUS
44113: PPUSH
44114: CALL_OW 1
44118: ST_TO_ADDR
// continue ;
44119: GO 44046
// end ; if Rand ( 1 , 10 ) > 1 then
44121: LD_INT 1
44123: PPUSH
44124: LD_INT 10
44126: PPUSH
44127: CALL_OW 12
44131: PUSH
44132: LD_INT 1
44134: GREATER
44135: IFFALSE 44139
// continue ;
44137: GO 44046
// temp_list = [ ] ;
44139: LD_ADDR_VAR 0 3
44143: PUSH
44144: EMPTY
44145: ST_TO_ADDR
// for i in ai_soldiers [ base ] diff ai_heal_these_humans [ base ] do
44146: LD_ADDR_VAR 0 2
44150: PUSH
44151: LD_EXP 50
44155: PUSH
44156: LD_VAR 0 1
44160: ARRAY
44161: PUSH
44162: LD_EXP 85
44166: PUSH
44167: LD_VAR 0 1
44171: ARRAY
44172: DIFF
44173: PUSH
44174: FOR_IN
44175: IFFALSE 44218
// if IsInUnit ( i ) in ai_armouries [ base ] then
44177: LD_VAR 0 2
44181: PPUSH
44182: CALL_OW 310
44186: PUSH
44187: LD_EXP 62
44191: PUSH
44192: LD_VAR 0 1
44196: ARRAY
44197: IN
44198: IFFALSE 44216
// temp_list = temp_list ^ i ;
44200: LD_ADDR_VAR 0 3
44204: PUSH
44205: LD_VAR 0 3
44209: PUSH
44210: LD_VAR 0 2
44214: ADD
44215: ST_TO_ADDR
44216: GO 44174
44218: POP
44219: POP
// for i in temp_list do
44220: LD_ADDR_VAR 0 2
44224: PUSH
44225: LD_VAR 0 3
44229: PUSH
44230: FOR_IN
44231: IFFALSE 44515
// if GetClass ( i ) = class_bazooker then
44233: LD_VAR 0 2
44237: PPUSH
44238: CALL_OW 257
44242: PUSH
44243: LD_INT 9
44245: EQUAL
44246: IFFALSE 44513
// begin temp_list = GetTaskList ( i ) ;
44248: LD_ADDR_VAR 0 3
44252: PUSH
44253: LD_VAR 0 2
44257: PPUSH
44258: CALL_OW 437
44262: ST_TO_ADDR
// if temp_list > 0 then
44263: LD_VAR 0 3
44267: PUSH
44268: LD_INT 0
44270: GREATER
44271: IFFALSE 44311
// if temp_list [ 1 ] [ 1 ] = & or temp_list [ 1 ] [ 1 ] = % then
44273: LD_VAR 0 3
44277: PUSH
44278: LD_INT 1
44280: ARRAY
44281: PUSH
44282: LD_INT 1
44284: ARRAY
44285: PUSH
44286: LD_STRING &
44288: EQUAL
44289: PUSH
44290: LD_VAR 0 3
44294: PUSH
44295: LD_INT 1
44297: ARRAY
44298: PUSH
44299: LD_INT 1
44301: ARRAY
44302: PUSH
44303: LD_STRING %
44305: EQUAL
44306: OR
44307: IFFALSE 44311
// continue ;
44309: GO 44230
// un1 = Attacks ( i ) ;
44311: LD_ADDR_VAR 0 4
44315: PUSH
44316: LD_VAR 0 2
44320: PPUSH
44321: CALL_OW 320
44325: ST_TO_ADDR
// if un1 > 0 and not IsInArea ( un1 , GetBaseArea ( base ) ) then
44326: LD_VAR 0 4
44330: PUSH
44331: LD_INT 0
44333: GREATER
44334: PUSH
44335: LD_VAR 0 4
44339: PPUSH
44340: LD_VAR 0 1
44344: PPUSH
44345: CALL 40400 0 1
44349: PPUSH
44350: CALL_OW 308
44354: NOT
44355: AND
44356: IFFALSE 44513
// begin temp_list_2 = [ GetX ( un1 ) , GetY ( un1 ) ] ;
44358: LD_ADDR_VAR 0 5
44362: PUSH
44363: LD_VAR 0 4
44367: PPUSH
44368: CALL_OW 250
44372: PUSH
44373: LD_VAR 0 4
44377: PPUSH
44378: CALL_OW 251
44382: PUSH
44383: EMPTY
44384: LIST
44385: LIST
44386: ST_TO_ADDR
// temp_value = AI_GetTurnDirection ( GetX ( i ) , GetY ( i ) , temp_list_2 [ 1 ] , temp_list_2 [ 2 ] ) ;
44387: LD_ADDR_VAR 0 6
44391: PUSH
44392: LD_VAR 0 2
44396: PPUSH
44397: CALL_OW 250
44401: PPUSH
44402: LD_VAR 0 2
44406: PPUSH
44407: CALL_OW 251
44411: PPUSH
44412: LD_VAR 0 5
44416: PUSH
44417: LD_INT 1
44419: ARRAY
44420: PPUSH
44421: LD_VAR 0 5
44425: PUSH
44426: LD_INT 2
44428: ARRAY
44429: PPUSH
44430: CALL 85686 0 4
44434: ST_TO_ADDR
// ComSpaceShift ( i , ShiftX ( temp_list_2 [ 1 ] , temp_value , 1 ) , ShiftY ( temp_list_2 [ 2 ] , temp_value , 1 ) ) ;
44435: LD_VAR 0 2
44439: PPUSH
44440: LD_VAR 0 5
44444: PUSH
44445: LD_INT 1
44447: ARRAY
44448: PPUSH
44449: LD_VAR 0 6
44453: PPUSH
44454: LD_INT 1
44456: PPUSH
44457: CALL_OW 272
44461: PPUSH
44462: LD_VAR 0 5
44466: PUSH
44467: LD_INT 2
44469: ARRAY
44470: PPUSH
44471: LD_VAR 0 6
44475: PPUSH
44476: LD_INT 1
44478: PPUSH
44479: CALL_OW 273
44483: PPUSH
44484: CALL_OW 153
// shooting_delay = Replace ( shooting_delay , base , 0 0$10 ) ;
44488: LD_ADDR_VAR 0 7
44492: PUSH
44493: LD_VAR 0 7
44497: PPUSH
44498: LD_VAR 0 1
44502: PPUSH
44503: LD_INT 350
44505: PPUSH
44506: CALL_OW 1
44510: ST_TO_ADDR
// break ;
44511: GO 44515
// end ; end ;
44513: GO 44230
44515: POP
44516: POP
// end ;
44517: GO 44046
44519: POP
44520: POP
// until false ;
44521: LD_INT 0
44523: IFFALSE 44017
// end ;
44525: PPOPN 7
44527: END
// every 0 0$1 do var base , side , val , temp_value , temp_list ;
44528: GO 44530
44530: DISABLE
44531: LD_INT 0
44533: PPUSH
44534: PPUSH
44535: PPUSH
44536: PPUSH
44537: PPUSH
// begin repeat wait ( 1 ) ;
44538: LD_INT 1
44540: PPUSH
44541: CALL_OW 67
// for base in ai_bases do
44545: LD_ADDR_VAR 0 1
44549: PUSH
44550: LD_EXP 49
44554: PUSH
44555: FOR_IN
44556: IFFALSE 44974
// begin if base in [ 1 , 3 ] then
44558: LD_VAR 0 1
44562: PUSH
44563: LD_INT 1
44565: PUSH
44566: LD_INT 3
44568: PUSH
44569: EMPTY
44570: LIST
44571: LIST
44572: IN
44573: IFFALSE 44577
// continue ;
44575: GO 44555
// side = GetBaseSide ( base ) ;
44577: LD_ADDR_VAR 0 2
44581: PUSH
44582: LD_VAR 0 1
44586: PPUSH
44587: CALL 40471 0 1
44591: ST_TO_ADDR
// val = 1 ;
44592: LD_ADDR_VAR 0 3
44596: PUSH
44597: LD_INT 1
44599: ST_TO_ADDR
// while val <= ai_time_shift_hexes_underway [ base ] do
44600: LD_VAR 0 3
44604: PUSH
44605: LD_EXP 122
44609: PUSH
44610: LD_VAR 0 1
44614: ARRAY
44615: LESSEQUAL
44616: IFFALSE 44972
// begin temp_value = false ;
44618: LD_ADDR_VAR 0 4
44622: PUSH
44623: LD_INT 0
44625: ST_TO_ADDR
// temp_list = GetTaskList ( ai_time_shift_hexes_underway [ base ] [ val ] [ 3 ] ) ;
44626: LD_ADDR_VAR 0 5
44630: PUSH
44631: LD_EXP 122
44635: PUSH
44636: LD_VAR 0 1
44640: ARRAY
44641: PUSH
44642: LD_VAR 0 3
44646: ARRAY
44647: PUSH
44648: LD_INT 3
44650: ARRAY
44651: PPUSH
44652: CALL_OW 437
44656: ST_TO_ADDR
// if IsOk ( ai_time_shift_hexes_underway [ base ] [ val ] [ 3 ] ) then
44657: LD_EXP 122
44661: PUSH
44662: LD_VAR 0 1
44666: ARRAY
44667: PUSH
44668: LD_VAR 0 3
44672: ARRAY
44673: PUSH
44674: LD_INT 3
44676: ARRAY
44677: PPUSH
44678: CALL_OW 302
44682: IFFALSE 44733
// begin if temp_list = 0 then
44684: LD_VAR 0 5
44688: PUSH
44689: LD_INT 0
44691: EQUAL
44692: IFFALSE 44704
// temp_value = true else
44694: LD_ADDR_VAR 0 4
44698: PUSH
44699: LD_INT 1
44701: ST_TO_ADDR
44702: GO 44731
// if not temp_list [ 1 ] [ 1 ] = & then
44704: LD_VAR 0 5
44708: PUSH
44709: LD_INT 1
44711: ARRAY
44712: PUSH
44713: LD_INT 1
44715: ARRAY
44716: PUSH
44717: LD_STRING &
44719: EQUAL
44720: NOT
44721: IFFALSE 44731
// temp_value = true ;
44723: LD_ADDR_VAR 0 4
44727: PUSH
44728: LD_INT 1
44730: ST_TO_ADDR
// end else
44731: GO 44786
// begin temp_list = Delete ( ai_time_shift_hexes_underway [ base ] , val ) ;
44733: LD_ADDR_VAR 0 5
44737: PUSH
44738: LD_EXP 122
44742: PUSH
44743: LD_VAR 0 1
44747: ARRAY
44748: PPUSH
44749: LD_VAR 0 3
44753: PPUSH
44754: CALL_OW 3
44758: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
44759: LD_ADDR_EXP 122
44763: PUSH
44764: LD_EXP 122
44768: PPUSH
44769: LD_VAR 0 1
44773: PPUSH
44774: LD_VAR 0 5
44778: PPUSH
44779: CALL_OW 1
44783: ST_TO_ADDR
// continue ;
44784: GO 44600
// end ; if temp_value then
44786: LD_VAR 0 4
44790: IFFALSE 44956
// begin temp_list = Insert ( ai_time_shift_hexes [ base ] , 1 , [ ai_time_shift_hexes_underway [ base ] [ val ] [ 1 ] , ai_time_shift_hexes_underway [ base ] [ val ] [ 2 ] , ai_time_shift_data [ side ] [ 1 ] ] ) ;
44792: LD_ADDR_VAR 0 5
44796: PUSH
44797: LD_EXP 121
44801: PUSH
44802: LD_VAR 0 1
44806: ARRAY
44807: PPUSH
44808: LD_INT 1
44810: PPUSH
44811: LD_EXP 122
44815: PUSH
44816: LD_VAR 0 1
44820: ARRAY
44821: PUSH
44822: LD_VAR 0 3
44826: ARRAY
44827: PUSH
44828: LD_INT 1
44830: ARRAY
44831: PUSH
44832: LD_EXP 122
44836: PUSH
44837: LD_VAR 0 1
44841: ARRAY
44842: PUSH
44843: LD_VAR 0 3
44847: ARRAY
44848: PUSH
44849: LD_INT 2
44851: ARRAY
44852: PUSH
44853: LD_EXP 120
44857: PUSH
44858: LD_VAR 0 2
44862: ARRAY
44863: PUSH
44864: LD_INT 1
44866: ARRAY
44867: PUSH
44868: EMPTY
44869: LIST
44870: LIST
44871: LIST
44872: PPUSH
44873: CALL_OW 2
44877: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
44878: LD_ADDR_EXP 121
44882: PUSH
44883: LD_EXP 121
44887: PPUSH
44888: LD_VAR 0 1
44892: PPUSH
44893: LD_VAR 0 5
44897: PPUSH
44898: CALL_OW 1
44902: ST_TO_ADDR
// temp_list = Delete ( ai_time_shift_hexes_underway [ base ] , val ) ;
44903: LD_ADDR_VAR 0 5
44907: PUSH
44908: LD_EXP 122
44912: PUSH
44913: LD_VAR 0 1
44917: ARRAY
44918: PPUSH
44919: LD_VAR 0 3
44923: PPUSH
44924: CALL_OW 3
44928: ST_TO_ADDR
// ai_time_shift_hexes_underway = Replace ( ai_time_shift_hexes_underway , base , temp_list ) ;
44929: LD_ADDR_EXP 122
44933: PUSH
44934: LD_EXP 122
44938: PPUSH
44939: LD_VAR 0 1
44943: PPUSH
44944: LD_VAR 0 5
44948: PPUSH
44949: CALL_OW 1
44953: ST_TO_ADDR
// continue ;
44954: GO 44600
// end ; val = val + 1 ;
44956: LD_ADDR_VAR 0 3
44960: PUSH
44961: LD_VAR 0 3
44965: PUSH
44966: LD_INT 1
44968: PLUS
44969: ST_TO_ADDR
// end ;
44970: GO 44600
// end ;
44972: GO 44555
44974: POP
44975: POP
// until false ;
44976: LD_INT 0
44978: IFFALSE 44538
// end ;
44980: PPOPN 5
44982: END
// every 0 0$1 + 0 0$0.3 do var base , side , val , temp_list , time ;
44983: GO 44985
44985: DISABLE
44986: LD_INT 0
44988: PPUSH
44989: PPUSH
44990: PPUSH
44991: PPUSH
44992: PPUSH
// begin repeat wait ( 0 0$1 ) ;
44993: LD_INT 35
44995: PPUSH
44996: CALL_OW 67
// for base in ai_bases do
45000: LD_ADDR_VAR 0 1
45004: PUSH
45005: LD_EXP 49
45009: PUSH
45010: FOR_IN
45011: IFFALSE 45277
// begin if base in [ 3 , 4 ] then
45013: LD_VAR 0 1
45017: PUSH
45018: LD_INT 3
45020: PUSH
45021: LD_INT 4
45023: PUSH
45024: EMPTY
45025: LIST
45026: LIST
45027: IN
45028: IFFALSE 45032
// continue ;
45030: GO 45010
// side = GetBaseSide ( base ) ;
45032: LD_ADDR_VAR 0 2
45036: PUSH
45037: LD_VAR 0 1
45041: PPUSH
45042: CALL 40471 0 1
45046: ST_TO_ADDR
// val = 1 ;
45047: LD_ADDR_VAR 0 3
45051: PUSH
45052: LD_INT 1
45054: ST_TO_ADDR
// while val <= ai_time_shift_hexes [ base ] do
45055: LD_VAR 0 3
45059: PUSH
45060: LD_EXP 121
45064: PUSH
45065: LD_VAR 0 1
45069: ARRAY
45070: LESSEQUAL
45071: IFFALSE 45275
// begin time = ai_time_shift_hexes [ base ] [ val ] [ 3 ] - 0 0$1 ;
45073: LD_ADDR_VAR 0 5
45077: PUSH
45078: LD_EXP 121
45082: PUSH
45083: LD_VAR 0 1
45087: ARRAY
45088: PUSH
45089: LD_VAR 0 3
45093: ARRAY
45094: PUSH
45095: LD_INT 3
45097: ARRAY
45098: PUSH
45099: LD_INT 35
45101: MINUS
45102: ST_TO_ADDR
// if time <= 0 0$0 then
45103: LD_VAR 0 5
45107: PUSH
45108: LD_INT 0
45110: LESSEQUAL
45111: IFFALSE 45168
// begin temp_list = Delete ( ai_time_shift_hexes [ base ] , val ) ;
45113: LD_ADDR_VAR 0 4
45117: PUSH
45118: LD_EXP 121
45122: PUSH
45123: LD_VAR 0 1
45127: ARRAY
45128: PPUSH
45129: LD_VAR 0 3
45133: PPUSH
45134: CALL_OW 3
45138: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
45139: LD_ADDR_EXP 121
45143: PUSH
45144: LD_EXP 121
45148: PPUSH
45149: LD_VAR 0 1
45153: PPUSH
45154: LD_VAR 0 4
45158: PPUSH
45159: CALL_OW 1
45163: ST_TO_ADDR
// continue ;
45164: GO 45055
// end else
45166: GO 45259
// begin temp_list = Replace ( ai_time_shift_hexes [ base ] [ val ] , 3 , time ) ;
45168: LD_ADDR_VAR 0 4
45172: PUSH
45173: LD_EXP 121
45177: PUSH
45178: LD_VAR 0 1
45182: ARRAY
45183: PUSH
45184: LD_VAR 0 3
45188: ARRAY
45189: PPUSH
45190: LD_INT 3
45192: PPUSH
45193: LD_VAR 0 5
45197: PPUSH
45198: CALL_OW 1
45202: ST_TO_ADDR
// temp_list = Replace ( ai_time_shift_hexes [ base ] , val , temp_list ) ;
45203: LD_ADDR_VAR 0 4
45207: PUSH
45208: LD_EXP 121
45212: PUSH
45213: LD_VAR 0 1
45217: ARRAY
45218: PPUSH
45219: LD_VAR 0 3
45223: PPUSH
45224: LD_VAR 0 4
45228: PPUSH
45229: CALL_OW 1
45233: ST_TO_ADDR
// ai_time_shift_hexes = Replace ( ai_time_shift_hexes , base , temp_list ) ;
45234: LD_ADDR_EXP 121
45238: PUSH
45239: LD_EXP 121
45243: PPUSH
45244: LD_VAR 0 1
45248: PPUSH
45249: LD_VAR 0 4
45253: PPUSH
45254: CALL_OW 1
45258: ST_TO_ADDR
// end ; val = val + 1 ;
45259: LD_ADDR_VAR 0 3
45263: PUSH
45264: LD_VAR 0 3
45268: PUSH
45269: LD_INT 1
45271: PLUS
45272: ST_TO_ADDR
// end ;
45273: GO 45055
// end ;
45275: GO 45010
45277: POP
45278: POP
// until false ;
45279: LD_INT 0
45281: IFFALSE 44993
// end ;
45283: PPOPN 5
45285: END
// function DistributeHumansToBuildings ( base , human_list , building_list , change_to_this_class , building_capacity , help_building , aggressive_pullback ) ; var i , temp_list , val , temp_unit , area , special_un_count , counter , k , under_attack ; begin
45286: LD_INT 0
45288: PPUSH
45289: PPUSH
45290: PPUSH
45291: PPUSH
45292: PPUSH
45293: PPUSH
45294: PPUSH
45295: PPUSH
45296: PPUSH
45297: PPUSH
// if human_list = 0 then
45298: LD_VAR 0 2
45302: PUSH
45303: LD_INT 0
45305: EQUAL
45306: IFFALSE 45310
// exit ;
45308: GO 46704
// area = GetBaseArea ( base ) ;
45310: LD_ADDR_VAR 0 13
45314: PUSH
45315: LD_VAR 0 1
45319: PPUSH
45320: CALL 40400 0 1
45324: ST_TO_ADDR
// under_attack = BaseUnderAttack ( base , - 1 ) ;
45325: LD_ADDR_VAR 0 17
45329: PUSH
45330: LD_VAR 0 1
45334: PPUSH
45335: LD_INT 1
45337: NEG
45338: PPUSH
45339: CALL 55912 0 2
45343: ST_TO_ADDR
// if not GetClass ( human_list [ 1 ] ) in [ class_engineer , class_apeman_engineer , class_mechanic , class_scientistic ] and building_list > 0 then
45344: LD_VAR 0 2
45348: PUSH
45349: LD_INT 1
45351: ARRAY
45352: PPUSH
45353: CALL_OW 257
45357: PUSH
45358: LD_INT 2
45360: PUSH
45361: LD_INT 16
45363: PUSH
45364: LD_INT 3
45366: PUSH
45367: LD_INT 4
45369: PUSH
45370: EMPTY
45371: LIST
45372: LIST
45373: LIST
45374: LIST
45375: IN
45376: NOT
45377: PUSH
45378: LD_VAR 0 3
45382: PUSH
45383: LD_INT 0
45385: GREATER
45386: AND
45387: IFFALSE 45476
// begin val = 0 ;
45389: LD_ADDR_VAR 0 11
45393: PUSH
45394: LD_INT 0
45396: ST_TO_ADDR
// for i in human_list do
45397: LD_ADDR_VAR 0 9
45401: PUSH
45402: LD_VAR 0 2
45406: PUSH
45407: FOR_IN
45408: IFFALSE 45452
// if GetClass ( i ) in [ class_sniper , class_mortar , class_bazooker ] then
45410: LD_VAR 0 9
45414: PPUSH
45415: CALL_OW 257
45419: PUSH
45420: LD_INT 5
45422: PUSH
45423: LD_INT 8
45425: PUSH
45426: LD_INT 9
45428: PUSH
45429: EMPTY
45430: LIST
45431: LIST
45432: LIST
45433: IN
45434: IFFALSE 45450
// val = val + 1 ;
45436: LD_ADDR_VAR 0 11
45440: PUSH
45441: LD_VAR 0 11
45445: PUSH
45446: LD_INT 1
45448: PLUS
45449: ST_TO_ADDR
45450: GO 45407
45452: POP
45453: POP
// special_un_count = val div ( building_list + 0 ) ;
45454: LD_ADDR_VAR 0 14
45458: PUSH
45459: LD_VAR 0 11
45463: PUSH
45464: LD_VAR 0 3
45468: PUSH
45469: LD_INT 0
45471: PLUS
45472: DIV
45473: ST_TO_ADDR
// end else
45474: GO 45484
// special_un_count = 0 ;
45476: LD_ADDR_VAR 0 14
45480: PUSH
45481: LD_INT 0
45483: ST_TO_ADDR
// val = building_list + 0 ;
45484: LD_ADDR_VAR 0 11
45488: PUSH
45489: LD_VAR 0 3
45493: PUSH
45494: LD_INT 0
45496: PLUS
45497: ST_TO_ADDR
// while val > 0 and human_list > 0 do
45498: LD_VAR 0 11
45502: PUSH
45503: LD_INT 0
45505: GREATER
45506: PUSH
45507: LD_VAR 0 2
45511: PUSH
45512: LD_INT 0
45514: GREATER
45515: AND
45516: IFFALSE 46438
// begin temp_list = [ ] ;
45518: LD_ADDR_VAR 0 10
45522: PUSH
45523: EMPTY
45524: ST_TO_ADDR
// for i in human_list do
45525: LD_ADDR_VAR 0 9
45529: PUSH
45530: LD_VAR 0 2
45534: PUSH
45535: FOR_IN
45536: IFFALSE 45579
// if IsInUnit ( i ) = building_list [ val ] then
45538: LD_VAR 0 9
45542: PPUSH
45543: CALL_OW 310
45547: PUSH
45548: LD_VAR 0 3
45552: PUSH
45553: LD_VAR 0 11
45557: ARRAY
45558: EQUAL
45559: IFFALSE 45577
// temp_list = temp_list ^ i ;
45561: LD_ADDR_VAR 0 10
45565: PUSH
45566: LD_VAR 0 10
45570: PUSH
45571: LD_VAR 0 9
45575: ADD
45576: ST_TO_ADDR
45577: GO 45535
45579: POP
45580: POP
// human_list = temp_list ^ ( human_list diff temp_list ) ;
45581: LD_ADDR_VAR 0 2
45585: PUSH
45586: LD_VAR 0 10
45590: PUSH
45591: LD_VAR 0 2
45595: PUSH
45596: LD_VAR 0 10
45600: DIFF
45601: ADD
45602: ST_TO_ADDR
// counter = 0 ;
45603: LD_ADDR_VAR 0 15
45607: PUSH
45608: LD_INT 0
45610: ST_TO_ADDR
// temp_list = [ ] ;
45611: LD_ADDR_VAR 0 10
45615: PUSH
45616: EMPTY
45617: ST_TO_ADDR
// for i = 1 to human_list div val do
45618: LD_ADDR_VAR 0 9
45622: PUSH
45623: DOUBLE
45624: LD_INT 1
45626: DEC
45627: ST_TO_ADDR
45628: LD_VAR 0 2
45632: PUSH
45633: LD_VAR 0 11
45637: DIV
45638: PUSH
45639: FOR_TO
45640: IFFALSE 46005
// begin if i > building_capacity then
45642: LD_VAR 0 9
45646: PUSH
45647: LD_VAR 0 5
45651: GREATER
45652: IFFALSE 45656
// break ;
45654: GO 46005
// if special_un_count = 0 then
45656: LD_VAR 0 14
45660: PUSH
45661: LD_INT 0
45663: EQUAL
45664: IFFALSE 45706
// begin temp_list = temp_list ^ human_list [ 1 ] ;
45666: LD_ADDR_VAR 0 10
45670: PUSH
45671: LD_VAR 0 10
45675: PUSH
45676: LD_VAR 0 2
45680: PUSH
45681: LD_INT 1
45683: ARRAY
45684: ADD
45685: ST_TO_ADDR
// human_list = Delete ( human_list , 1 ) ;
45686: LD_ADDR_VAR 0 2
45690: PUSH
45691: LD_VAR 0 2
45695: PPUSH
45696: LD_INT 1
45698: PPUSH
45699: CALL_OW 3
45703: ST_TO_ADDR
// end else
45704: GO 46003
// if counter = special_un_count then
45706: LD_VAR 0 15
45710: PUSH
45711: LD_VAR 0 14
45715: EQUAL
45716: IFFALSE 45855
// begin temp_unit = 0 ;
45718: LD_ADDR_VAR 0 12
45722: PUSH
45723: LD_INT 0
45725: ST_TO_ADDR
// for k = 1 to human_list do
45726: LD_ADDR_VAR 0 16
45730: PUSH
45731: DOUBLE
45732: LD_INT 1
45734: DEC
45735: ST_TO_ADDR
45736: LD_VAR 0 2
45740: PUSH
45741: FOR_TO
45742: IFFALSE 45791
// if not GetClass ( human_list [ k ] ) in [ class_sniper , class_mortar , class_bazooker ] then
45744: LD_VAR 0 2
45748: PUSH
45749: LD_VAR 0 16
45753: ARRAY
45754: PPUSH
45755: CALL_OW 257
45759: PUSH
45760: LD_INT 5
45762: PUSH
45763: LD_INT 8
45765: PUSH
45766: LD_INT 9
45768: PUSH
45769: EMPTY
45770: LIST
45771: LIST
45772: LIST
45773: IN
45774: NOT
45775: IFFALSE 45789
// begin temp_unit = k ;
45777: LD_ADDR_VAR 0 12
45781: PUSH
45782: LD_VAR 0 16
45786: ST_TO_ADDR
// break ;
45787: GO 45791
// end ;
45789: GO 45741
45791: POP
45792: POP
// if temp_unit = 0 then
45793: LD_VAR 0 12
45797: PUSH
45798: LD_INT 0
45800: EQUAL
45801: IFFALSE 45811
// temp_unit = 1 ;
45803: LD_ADDR_VAR 0 12
45807: PUSH
45808: LD_INT 1
45810: ST_TO_ADDR
// temp_list = temp_list ^ human_list [ temp_unit ] ;
45811: LD_ADDR_VAR 0 10
45815: PUSH
45816: LD_VAR 0 10
45820: PUSH
45821: LD_VAR 0 2
45825: PUSH
45826: LD_VAR 0 12
45830: ARRAY
45831: ADD
45832: ST_TO_ADDR
// human_list = Delete ( human_list , temp_unit ) ;
45833: LD_ADDR_VAR 0 2
45837: PUSH
45838: LD_VAR 0 2
45842: PPUSH
45843: LD_VAR 0 12
45847: PPUSH
45848: CALL_OW 3
45852: ST_TO_ADDR
// end else
45853: GO 46003
// begin counter = counter + 1 ;
45855: LD_ADDR_VAR 0 15
45859: PUSH
45860: LD_VAR 0 15
45864: PUSH
45865: LD_INT 1
45867: PLUS
45868: ST_TO_ADDR
// temp_unit = 0 ;
45869: LD_ADDR_VAR 0 12
45873: PUSH
45874: LD_INT 0
45876: ST_TO_ADDR
// for k = 1 to human_list do
45877: LD_ADDR_VAR 0 16
45881: PUSH
45882: DOUBLE
45883: LD_INT 1
45885: DEC
45886: ST_TO_ADDR
45887: LD_VAR 0 2
45891: PUSH
45892: FOR_TO
45893: IFFALSE 45941
// if GetClass ( human_list [ k ] ) in [ class_sniper , class_mortar , class_bazooker ] then
45895: LD_VAR 0 2
45899: PUSH
45900: LD_VAR 0 16
45904: ARRAY
45905: PPUSH
45906: CALL_OW 257
45910: PUSH
45911: LD_INT 5
45913: PUSH
45914: LD_INT 8
45916: PUSH
45917: LD_INT 9
45919: PUSH
45920: EMPTY
45921: LIST
45922: LIST
45923: LIST
45924: IN
45925: IFFALSE 45939
// begin temp_unit = k ;
45927: LD_ADDR_VAR 0 12
45931: PUSH
45932: LD_VAR 0 16
45936: ST_TO_ADDR
// break ;
45937: GO 45941
// end ;
45939: GO 45892
45941: POP
45942: POP
// if temp_unit = 0 then
45943: LD_VAR 0 12
45947: PUSH
45948: LD_INT 0
45950: EQUAL
45951: IFFALSE 45961
// temp_unit = 1 ;
45953: LD_ADDR_VAR 0 12
45957: PUSH
45958: LD_INT 1
45960: ST_TO_ADDR
// temp_list = temp_list ^ human_list [ temp_unit ] ;
45961: LD_ADDR_VAR 0 10
45965: PUSH
45966: LD_VAR 0 10
45970: PUSH
45971: LD_VAR 0 2
45975: PUSH
45976: LD_VAR 0 12
45980: ARRAY
45981: ADD
45982: ST_TO_ADDR
// human_list = Delete ( human_list , temp_unit ) ;
45983: LD_ADDR_VAR 0 2
45987: PUSH
45988: LD_VAR 0 2
45992: PPUSH
45993: LD_VAR 0 12
45997: PPUSH
45998: CALL_OW 3
46002: ST_TO_ADDR
// end ; end ;
46003: GO 45639
46005: POP
46006: POP
// for i in temp_list do
46007: LD_ADDR_VAR 0 9
46011: PUSH
46012: LD_VAR 0 10
46016: PUSH
46017: FOR_IN
46018: IFFALSE 46420
// begin temp_unit = IsInUnit ( i ) ;
46020: LD_ADDR_VAR 0 12
46024: PUSH
46025: LD_VAR 0 9
46029: PPUSH
46030: CALL_OW 310
46034: ST_TO_ADDR
// if temp_unit <> building_list [ val ] then
46035: LD_VAR 0 12
46039: PUSH
46040: LD_VAR 0 3
46044: PUSH
46045: LD_VAR 0 11
46049: ARRAY
46050: NONEQUAL
46051: IFFALSE 46418
// case GetType ( IsInUnit ( i ) ) of unit_vehicle :
46053: LD_VAR 0 9
46057: PPUSH
46058: CALL_OW 310
46062: PPUSH
46063: CALL_OW 247
46067: PUSH
46068: LD_INT 2
46070: DOUBLE
46071: EQUAL
46072: IFTRUE 46076
46074: GO 46088
46076: POP
// ComExitVehicle ( i ) ; unit_building :
46077: LD_VAR 0 9
46081: PPUSH
46082: CALL_OW 121
46086: GO 46418
46088: LD_INT 3
46090: DOUBLE
46091: EQUAL
46092: IFTRUE 46096
46094: GO 46108
46096: POP
// ComExitBuilding ( i ) ; else
46097: LD_VAR 0 9
46101: PPUSH
46102: CALL_OW 122
46106: GO 46418
46108: POP
// begin if IsInArea ( i , area ) or not aggressive_pullback then
46109: LD_VAR 0 9
46113: PPUSH
46114: LD_VAR 0 13
46118: PPUSH
46119: CALL_OW 308
46123: PUSH
46124: LD_VAR 0 7
46128: NOT
46129: OR
46130: IFFALSE 46154
// ComEnterUnit ( i , building_list [ val ] ) else
46132: LD_VAR 0 9
46136: PPUSH
46137: LD_VAR 0 3
46141: PUSH
46142: LD_VAR 0 11
46146: ARRAY
46147: PPUSH
46148: CALL_OW 120
46152: GO 46195
// ComAgressiveMove ( i , GetX ( building_list [ val ] ) , GetY ( building_list [ val ] ) ) ;
46154: LD_VAR 0 9
46158: PPUSH
46159: LD_VAR 0 3
46163: PUSH
46164: LD_VAR 0 11
46168: ARRAY
46169: PPUSH
46170: CALL_OW 250
46174: PPUSH
46175: LD_VAR 0 3
46179: PUSH
46180: LD_VAR 0 11
46184: ARRAY
46185: PPUSH
46186: CALL_OW 251
46190: PPUSH
46191: CALL_OW 114
// if change_to_this_class > 0 then
46195: LD_VAR 0 4
46199: PUSH
46200: LD_INT 0
46202: GREATER
46203: IFFALSE 46304
// begin if GetClass ( i ) <> change_to_this_class and GetNation ( i ) <> nation_nature then
46205: LD_VAR 0 9
46209: PPUSH
46210: CALL_OW 257
46214: PUSH
46215: LD_VAR 0 4
46219: NONEQUAL
46220: PUSH
46221: LD_VAR 0 9
46225: PPUSH
46226: CALL_OW 248
46230: PUSH
46231: LD_INT 0
46233: NONEQUAL
46234: AND
46235: IFFALSE 46302
// if not ( change_to_this_class in [ class_sniper , class_mortar , class_bazooker ] and not GetBType ( building_list [ val ] ) in [ b_barracks , b_fort ] ) then
46237: LD_VAR 0 4
46241: PUSH
46242: LD_INT 5
46244: PUSH
46245: LD_INT 8
46247: PUSH
46248: LD_INT 9
46250: PUSH
46251: EMPTY
46252: LIST
46253: LIST
46254: LIST
46255: IN
46256: PUSH
46257: LD_VAR 0 3
46261: PUSH
46262: LD_VAR 0 11
46266: ARRAY
46267: PPUSH
46268: CALL_OW 266
46272: PUSH
46273: LD_INT 5
46275: PUSH
46276: LD_INT 35
46278: PUSH
46279: EMPTY
46280: LIST
46281: LIST
46282: IN
46283: NOT
46284: AND
46285: NOT
46286: IFFALSE 46302
// AddComChangeProfession ( i , change_to_this_class ) ;
46288: LD_VAR 0 9
46292: PPUSH
46293: LD_VAR 0 4
46297: PPUSH
46298: CALL_OW 183
// end else
46302: GO 46418
// begin if GetBType ( building_list [ val ] ) in [ b_barracks , b_fort ] then
46304: LD_VAR 0 3
46308: PUSH
46309: LD_VAR 0 11
46313: ARRAY
46314: PPUSH
46315: CALL_OW 266
46319: PUSH
46320: LD_INT 5
46322: PUSH
46323: LD_INT 35
46325: PUSH
46326: EMPTY
46327: LIST
46328: LIST
46329: IN
46330: IFFALSE 46418
// case GetNation ( building_list [ val ] ) of nation_american :
46332: LD_VAR 0 3
46336: PUSH
46337: LD_VAR 0 11
46341: ARRAY
46342: PPUSH
46343: CALL_OW 248
46347: PUSH
46348: LD_INT 1
46350: DOUBLE
46351: EQUAL
46352: IFTRUE 46356
46354: GO 46371
46356: POP
// AddComChangeProfession ( i , class_sniper ) ; nation_arabian :
46357: LD_VAR 0 9
46361: PPUSH
46362: LD_INT 5
46364: PPUSH
46365: CALL_OW 183
46369: GO 46418
46371: LD_INT 2
46373: DOUBLE
46374: EQUAL
46375: IFTRUE 46379
46377: GO 46394
46379: POP
// AddComChangeProfession ( i , class_mortar ) ; nation_russian :
46380: LD_VAR 0 9
46384: PPUSH
46385: LD_INT 8
46387: PPUSH
46388: CALL_OW 183
46392: GO 46418
46394: LD_INT 3
46396: DOUBLE
46397: EQUAL
46398: IFTRUE 46402
46400: GO 46417
46402: POP
// AddComChangeProfession ( i , class_bazooker ) ; end ;
46403: LD_VAR 0 9
46407: PPUSH
46408: LD_INT 9
46410: PPUSH
46411: CALL_OW 183
46415: GO 46418
46417: POP
// end ; end ; end ; end ;
46418: GO 46017
46420: POP
46421: POP
// val = val - 1 ;
46422: LD_ADDR_VAR 0 11
46426: PUSH
46427: LD_VAR 0 11
46431: PUSH
46432: LD_INT 1
46434: MINUS
46435: ST_TO_ADDR
// end ;
46436: GO 45498
// if human_list > 0 then
46438: LD_VAR 0 2
46442: PUSH
46443: LD_INT 0
46445: GREATER
46446: IFFALSE 46704
// if ai_building_under_construction [ base ] > 0 and help_building and not under_attack then
46448: LD_EXP 84
46452: PUSH
46453: LD_VAR 0 1
46457: ARRAY
46458: PUSH
46459: LD_INT 0
46461: GREATER
46462: PUSH
46463: LD_VAR 0 6
46467: AND
46468: PUSH
46469: LD_VAR 0 17
46473: NOT
46474: AND
46475: IFFALSE 46551
// begin for i in GetHumansOutOfUnits ( human_list ) do
46477: LD_ADDR_VAR 0 9
46481: PUSH
46482: LD_VAR 0 2
46486: PPUSH
46487: CALL 55807 0 1
46491: PUSH
46492: FOR_IN
46493: IFFALSE 46547
// SetTaskList ( i , [ [ h , 0 , 0 , ai_building_under_construction [ base ] , 0 , 0 , 0 ] ] ) ;
46495: LD_VAR 0 9
46499: PPUSH
46500: LD_STRING h
46502: PUSH
46503: LD_INT 0
46505: PUSH
46506: LD_INT 0
46508: PUSH
46509: LD_EXP 84
46513: PUSH
46514: LD_VAR 0 1
46518: ARRAY
46519: PUSH
46520: LD_INT 0
46522: PUSH
46523: LD_INT 0
46525: PUSH
46526: LD_INT 0
46528: PUSH
46529: EMPTY
46530: LIST
46531: LIST
46532: LIST
46533: LIST
46534: LIST
46535: LIST
46536: LIST
46537: PUSH
46538: EMPTY
46539: LIST
46540: PPUSH
46541: CALL_OW 446
46545: GO 46492
46547: POP
46548: POP
// end else
46549: GO 46704
// for i in GetHumansOutOfUnits ( human_list ) do
46551: LD_ADDR_VAR 0 9
46555: PUSH
46556: LD_VAR 0 2
46560: PPUSH
46561: CALL 55807 0 1
46565: PUSH
46566: FOR_IN
46567: IFFALSE 46702
// if GetDistUnitXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 4 then
46569: LD_VAR 0 9
46573: PPUSH
46574: LD_EXP 83
46578: PUSH
46579: LD_VAR 0 1
46583: ARRAY
46584: PUSH
46585: LD_INT 1
46587: ARRAY
46588: PPUSH
46589: LD_EXP 83
46593: PUSH
46594: LD_VAR 0 1
46598: ARRAY
46599: PUSH
46600: LD_INT 2
46602: ARRAY
46603: PPUSH
46604: CALL_OW 297
46608: PUSH
46609: LD_INT 4
46611: GREATER
46612: IFFALSE 46700
// if aggressive_pullback then
46614: LD_VAR 0 7
46618: IFFALSE 46661
// ComAgressiveMove ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) else
46620: LD_VAR 0 9
46624: PPUSH
46625: LD_EXP 83
46629: PUSH
46630: LD_VAR 0 1
46634: ARRAY
46635: PUSH
46636: LD_INT 1
46638: ARRAY
46639: PPUSH
46640: LD_EXP 83
46644: PUSH
46645: LD_VAR 0 1
46649: ARRAY
46650: PUSH
46651: LD_INT 2
46653: ARRAY
46654: PPUSH
46655: CALL_OW 114
46659: GO 46700
// ComMoveXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
46661: LD_VAR 0 9
46665: PPUSH
46666: LD_EXP 83
46670: PUSH
46671: LD_VAR 0 1
46675: ARRAY
46676: PUSH
46677: LD_INT 1
46679: ARRAY
46680: PPUSH
46681: LD_EXP 83
46685: PUSH
46686: LD_VAR 0 1
46690: ARRAY
46691: PUSH
46692: LD_INT 2
46694: ARRAY
46695: PPUSH
46696: CALL_OW 111
46700: GO 46566
46702: POP
46703: POP
// end ;
46704: LD_VAR 0 8
46708: RET
// every 0 0$1 + 0 0$0.3 do var side , i , engineers_list , temp_list , buildings_list , temp_unit , away_dist , temp_list_2 , base , apemen_engineers_list , temp ; var humans_list , crane_usable , b_value , engineers_not_allowed_to_repair_area , crane_not_allowed_to_repair_area , workers_list ; var k , repairing_buildings , under_attack , is_dismantling ; var crane_is_refueling , try_rebuild_again_time ;
46709: GO 46711
46711: DISABLE
46712: LD_INT 0
46714: PPUSH
46715: PPUSH
46716: PPUSH
46717: PPUSH
46718: PPUSH
46719: PPUSH
46720: PPUSH
46721: PPUSH
46722: PPUSH
46723: PPUSH
46724: PPUSH
46725: PPUSH
46726: PPUSH
46727: PPUSH
46728: PPUSH
46729: PPUSH
46730: PPUSH
46731: PPUSH
46732: PPUSH
46733: PPUSH
46734: PPUSH
46735: PPUSH
46736: PPUSH
// begin crane_is_refueling = [ false , false , false , false ] ;
46737: LD_ADDR_VAR 0 22
46741: PUSH
46742: LD_INT 0
46744: PUSH
46745: LD_INT 0
46747: PUSH
46748: LD_INT 0
46750: PUSH
46751: LD_INT 0
46753: PUSH
46754: EMPTY
46755: LIST
46756: LIST
46757: LIST
46758: LIST
46759: ST_TO_ADDR
// try_rebuild_again_time = [ ] ;
46760: LD_ADDR_VAR 0 23
46764: PUSH
46765: EMPTY
46766: ST_TO_ADDR
// for base in ai_bases do
46767: LD_ADDR_VAR 0 9
46771: PUSH
46772: LD_EXP 49
46776: PUSH
46777: FOR_IN
46778: IFFALSE 46805
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , 0 0$0 ) ;
46780: LD_ADDR_VAR 0 23
46784: PUSH
46785: LD_VAR 0 23
46789: PPUSH
46790: LD_VAR 0 9
46794: PPUSH
46795: LD_INT 0
46797: PPUSH
46798: CALL_OW 1
46802: ST_TO_ADDR
46803: GO 46777
46805: POP
46806: POP
// repeat if ai_bases = 0 then
46807: LD_EXP 49
46811: PUSH
46812: LD_INT 0
46814: EQUAL
46815: IFFALSE 46819
// exit ;
46817: GO 54693
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
46819: LD_INT 35
46821: PUSH
46822: LD_EXP 49
46826: PUSH
46827: LD_INT 0
46829: PLUS
46830: MOD
46831: PPUSH
46832: CALL_OW 67
// for base in ai_bases do
46836: LD_ADDR_VAR 0 9
46840: PUSH
46841: LD_EXP 49
46845: PUSH
46846: FOR_IN
46847: IFFALSE 54687
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
46849: LD_INT 35
46851: PUSH
46852: LD_EXP 49
46856: PUSH
46857: LD_INT 0
46859: PLUS
46860: DIV
46861: PPUSH
46862: CALL_OW 67
// side = GetBaseSide ( base ) ;
46866: LD_ADDR_VAR 0 1
46870: PUSH
46871: LD_VAR 0 9
46875: PPUSH
46876: CALL 40471 0 1
46880: ST_TO_ADDR
// under_attack := BaseUnderAttack ( base , - 1 ) ;
46881: LD_ADDR_VAR 0 20
46885: PUSH
46886: LD_VAR 0 9
46890: PPUSH
46891: LD_INT 1
46893: NEG
46894: PPUSH
46895: CALL 55912 0 2
46899: ST_TO_ADDR
// if under_attack then
46900: LD_VAR 0 20
46904: IFFALSE 46951
// begin ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
46906: LD_ADDR_EXP 88
46910: PUSH
46911: LD_EXP 88
46915: PPUSH
46916: LD_VAR 0 9
46920: PPUSH
46921: LD_INT 0
46923: PPUSH
46924: CALL_OW 1
46928: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , [ ] ) ;
46929: LD_ADDR_EXP 89
46933: PUSH
46934: LD_EXP 89
46938: PPUSH
46939: LD_VAR 0 9
46943: PPUSH
46944: EMPTY
46945: PPUSH
46946: CALL_OW 1
46950: ST_TO_ADDR
// end ; if ai_cannot_rebuild_these_buildings [ base ] > 0 and ( ai_engineers [ base ] > 0 or try_rebuild_again_time [ base ] >= 0 0$20 ) then
46951: LD_EXP 91
46955: PUSH
46956: LD_VAR 0 9
46960: ARRAY
46961: PUSH
46962: LD_INT 0
46964: GREATER
46965: PUSH
46966: LD_EXP 52
46970: PUSH
46971: LD_VAR 0 9
46975: ARRAY
46976: PUSH
46977: LD_INT 0
46979: GREATER
46980: PUSH
46981: LD_VAR 0 23
46985: PUSH
46986: LD_VAR 0 9
46990: ARRAY
46991: PUSH
46992: LD_INT 700
46994: GREATEREQUAL
46995: OR
46996: AND
46997: IFFALSE 47046
// begin ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , [ ] ) ;
46999: LD_ADDR_EXP 91
47003: PUSH
47004: LD_EXP 91
47008: PPUSH
47009: LD_VAR 0 9
47013: PPUSH
47014: EMPTY
47015: PPUSH
47016: CALL_OW 1
47020: ST_TO_ADDR
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , 0 0$0 ) ;
47021: LD_ADDR_VAR 0 23
47025: PUSH
47026: LD_VAR 0 23
47030: PPUSH
47031: LD_VAR 0 9
47035: PPUSH
47036: LD_INT 0
47038: PPUSH
47039: CALL_OW 1
47043: ST_TO_ADDR
// end else
47044: GO 47081
// try_rebuild_again_time = Replace ( try_rebuild_again_time , base , try_rebuild_again_time [ base ] + 0 0$1 ) ;
47046: LD_ADDR_VAR 0 23
47050: PUSH
47051: LD_VAR 0 23
47055: PPUSH
47056: LD_VAR 0 9
47060: PPUSH
47061: LD_VAR 0 23
47065: PUSH
47066: LD_VAR 0 9
47070: ARRAY
47071: PUSH
47072: LD_INT 35
47074: PLUS
47075: PPUSH
47076: CALL_OW 1
47080: ST_TO_ADDR
// engineers_list = ai_engineers [ base ] diff ai_heal_these_humans [ base ] ;
47081: LD_ADDR_VAR 0 3
47085: PUSH
47086: LD_EXP 52
47090: PUSH
47091: LD_VAR 0 9
47095: ARRAY
47096: PUSH
47097: LD_EXP 85
47101: PUSH
47102: LD_VAR 0 9
47106: ARRAY
47107: DIFF
47108: ST_TO_ADDR
// apemen_engineers_list = ai_apemen_engineers [ base ] diff ai_heal_these_humans [ base ] ;
47109: LD_ADDR_VAR 0 10
47113: PUSH
47114: LD_EXP 57
47118: PUSH
47119: LD_VAR 0 9
47123: ARRAY
47124: PUSH
47125: LD_EXP 85
47129: PUSH
47130: LD_VAR 0 9
47134: ARRAY
47135: DIFF
47136: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
47137: LD_ADDR_VAR 0 4
47141: PUSH
47142: LD_EXP 85
47146: PUSH
47147: LD_VAR 0 9
47151: ARRAY
47152: ST_TO_ADDR
// humans_list = engineers_list ^ apemen_engineers_list ;
47153: LD_ADDR_VAR 0 12
47157: PUSH
47158: LD_VAR 0 3
47162: PUSH
47163: LD_VAR 0 10
47167: ADD
47168: ST_TO_ADDR
// i = 1 ;
47169: LD_ADDR_VAR 0 2
47173: PUSH
47174: LD_INT 1
47176: ST_TO_ADDR
// while i <= humans_list do
47177: LD_VAR 0 2
47181: PUSH
47182: LD_VAR 0 12
47186: LESSEQUAL
47187: IFFALSE 47314
// begin if GetLives ( humans_list [ i ] ) <= 700 then
47189: LD_VAR 0 12
47193: PUSH
47194: LD_VAR 0 2
47198: ARRAY
47199: PPUSH
47200: CALL_OW 256
47204: PUSH
47205: LD_INT 700
47207: LESSEQUAL
47208: IFFALSE 47298
// begin temp_list = temp_list ^ humans_list [ i ] ;
47210: LD_ADDR_VAR 0 4
47214: PUSH
47215: LD_VAR 0 4
47219: PUSH
47220: LD_VAR 0 12
47224: PUSH
47225: LD_VAR 0 2
47229: ARRAY
47230: ADD
47231: ST_TO_ADDR
// engineers_list = engineers_list diff humans_list [ i ] ;
47232: LD_ADDR_VAR 0 3
47236: PUSH
47237: LD_VAR 0 3
47241: PUSH
47242: LD_VAR 0 12
47246: PUSH
47247: LD_VAR 0 2
47251: ARRAY
47252: DIFF
47253: ST_TO_ADDR
// apemen_engineers_list = apemen_engineers_list diff humans_list [ i ] ;
47254: LD_ADDR_VAR 0 10
47258: PUSH
47259: LD_VAR 0 10
47263: PUSH
47264: LD_VAR 0 12
47268: PUSH
47269: LD_VAR 0 2
47273: ARRAY
47274: DIFF
47275: ST_TO_ADDR
// humans_list = Delete ( humans_list , i ) ;
47276: LD_ADDR_VAR 0 12
47280: PUSH
47281: LD_VAR 0 12
47285: PPUSH
47286: LD_VAR 0 2
47290: PPUSH
47291: CALL_OW 3
47295: ST_TO_ADDR
// continue ;
47296: GO 47177
// end ; i = i + 1 ;
47298: LD_ADDR_VAR 0 2
47302: PUSH
47303: LD_VAR 0 2
47307: PUSH
47308: LD_INT 1
47310: PLUS
47311: ST_TO_ADDR
// end ;
47312: GO 47177
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
47314: LD_ADDR_EXP 85
47318: PUSH
47319: LD_EXP 85
47323: PPUSH
47324: LD_VAR 0 9
47328: PPUSH
47329: LD_VAR 0 4
47333: PPUSH
47334: CALL_OW 1
47338: ST_TO_ADDR
// crane_usable = false ;
47339: LD_ADDR_VAR 0 13
47343: PUSH
47344: LD_INT 0
47346: ST_TO_ADDR
// if ai_crane [ base ] > 0 then
47347: LD_EXP 98
47351: PUSH
47352: LD_VAR 0 9
47356: ARRAY
47357: PUSH
47358: LD_INT 0
47360: GREATER
47361: IFFALSE 47983
// begin if GetControl ( ai_crane [ base ] ) = control_manual and not ai_crane [ base ] = ai_vehicle_being_moved [ base ] then
47363: LD_EXP 98
47367: PUSH
47368: LD_VAR 0 9
47372: ARRAY
47373: PPUSH
47374: CALL_OW 263
47378: PUSH
47379: LD_INT 1
47381: EQUAL
47382: PUSH
47383: LD_EXP 98
47387: PUSH
47388: LD_VAR 0 9
47392: ARRAY
47393: PUSH
47394: LD_EXP 88
47398: PUSH
47399: LD_VAR 0 9
47403: ARRAY
47404: EQUAL
47405: NOT
47406: AND
47407: IFFALSE 47475
// begin temp_list = UnitsInside ( ai_crane [ base ] ) ;
47409: LD_ADDR_VAR 0 4
47413: PUSH
47414: LD_EXP 98
47418: PUSH
47419: LD_VAR 0 9
47423: ARRAY
47424: PPUSH
47425: CALL_OW 313
47429: ST_TO_ADDR
// if temp_list > 0 then
47430: LD_VAR 0 4
47434: PUSH
47435: LD_INT 0
47437: GREATER
47438: IFFALSE 47475
// if temp_list [ 1 ] <> ai_crane_driver [ base ] then
47440: LD_VAR 0 4
47444: PUSH
47445: LD_INT 1
47447: ARRAY
47448: PUSH
47449: LD_EXP 102
47453: PUSH
47454: LD_VAR 0 9
47458: ARRAY
47459: NONEQUAL
47460: IFFALSE 47475
// ComExitVehicle ( temp_list [ 1 ] ) ;
47462: LD_VAR 0 4
47466: PUSH
47467: LD_INT 1
47469: ARRAY
47470: PPUSH
47471: CALL_OW 121
// end ; if GetLives ( ai_crane [ base ] ) <= 500 or ( ai_crane_driver [ base ] > 0 and GetLives ( ai_crane_driver [ base ] ) <= 500 ) or ( ai_crane_is_being_repaired [ base ] and ( GetLives ( ai_crane [ base ] ) < 1000 or ( ai_crane_driver [ base ] > 0 and GetLives ( ai_crane_driver [ base ] ) < 1000 ) ) ) then
47475: LD_EXP 98
47479: PUSH
47480: LD_VAR 0 9
47484: ARRAY
47485: PPUSH
47486: CALL_OW 256
47490: PUSH
47491: LD_INT 500
47493: LESSEQUAL
47494: PUSH
47495: LD_EXP 102
47499: PUSH
47500: LD_VAR 0 9
47504: ARRAY
47505: PUSH
47506: LD_INT 0
47508: GREATER
47509: PUSH
47510: LD_EXP 102
47514: PUSH
47515: LD_VAR 0 9
47519: ARRAY
47520: PPUSH
47521: CALL_OW 256
47525: PUSH
47526: LD_INT 500
47528: LESSEQUAL
47529: AND
47530: OR
47531: PUSH
47532: LD_EXP 101
47536: PUSH
47537: LD_VAR 0 9
47541: ARRAY
47542: PUSH
47543: LD_EXP 98
47547: PUSH
47548: LD_VAR 0 9
47552: ARRAY
47553: PPUSH
47554: CALL_OW 256
47558: PUSH
47559: LD_INT 1000
47561: LESS
47562: PUSH
47563: LD_EXP 102
47567: PUSH
47568: LD_VAR 0 9
47572: ARRAY
47573: PUSH
47574: LD_INT 0
47576: GREATER
47577: PUSH
47578: LD_EXP 102
47582: PUSH
47583: LD_VAR 0 9
47587: ARRAY
47588: PPUSH
47589: CALL_OW 256
47593: PUSH
47594: LD_INT 1000
47596: LESS
47597: AND
47598: OR
47599: AND
47600: OR
47601: IFFALSE 47724
// begin ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , true ) ;
47603: LD_ADDR_EXP 101
47607: PUSH
47608: LD_EXP 101
47612: PPUSH
47613: LD_VAR 0 9
47617: PPUSH
47618: LD_INT 1
47620: PPUSH
47621: CALL_OW 1
47625: ST_TO_ADDR
// if GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 6 then
47626: LD_EXP 98
47630: PUSH
47631: LD_VAR 0 9
47635: ARRAY
47636: PPUSH
47637: LD_EXP 83
47641: PUSH
47642: LD_VAR 0 9
47646: ARRAY
47647: PUSH
47648: LD_INT 1
47650: ARRAY
47651: PPUSH
47652: LD_EXP 83
47656: PUSH
47657: LD_VAR 0 9
47661: ARRAY
47662: PUSH
47663: LD_INT 2
47665: ARRAY
47666: PPUSH
47667: CALL_OW 297
47671: PUSH
47672: LD_INT 6
47674: GREATER
47675: IFFALSE 47722
// ComMoveXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
47677: LD_EXP 98
47681: PUSH
47682: LD_VAR 0 9
47686: ARRAY
47687: PPUSH
47688: LD_EXP 83
47692: PUSH
47693: LD_VAR 0 9
47697: ARRAY
47698: PUSH
47699: LD_INT 1
47701: ARRAY
47702: PPUSH
47703: LD_EXP 83
47707: PUSH
47708: LD_VAR 0 9
47712: ARRAY
47713: PUSH
47714: LD_INT 2
47716: ARRAY
47717: PPUSH
47718: CALL_OW 111
// end else
47722: GO 47983
// begin ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , false ) ;
47724: LD_ADDR_EXP 101
47728: PUSH
47729: LD_EXP 101
47733: PPUSH
47734: LD_VAR 0 9
47738: PPUSH
47739: LD_INT 0
47741: PPUSH
47742: CALL_OW 1
47746: ST_TO_ADDR
// if GetEngine ( ai_crane [ base ] ) = engine_combustion then
47747: LD_EXP 98
47751: PUSH
47752: LD_VAR 0 9
47756: ARRAY
47757: PPUSH
47758: CALL_OW 262
47762: PUSH
47763: LD_INT 1
47765: EQUAL
47766: IFFALSE 47962
// begin i = GetFuel ( ai_crane [ base ] ) ;
47768: LD_ADDR_VAR 0 2
47772: PUSH
47773: LD_EXP 98
47777: PUSH
47778: LD_VAR 0 9
47782: ARRAY
47783: PPUSH
47784: CALL_OW 261
47788: ST_TO_ADDR
// temp = NearestUnitToUnit ( unitfilter ( ai_depots [ base ] , [ f_ok ] ) , ai_crane [ base ] ) ;
47789: LD_ADDR_VAR 0 11
47793: PUSH
47794: LD_EXP 59
47798: PUSH
47799: LD_VAR 0 9
47803: ARRAY
47804: PPUSH
47805: LD_INT 50
47807: PUSH
47808: EMPTY
47809: LIST
47810: PPUSH
47811: CALL_OW 72
47815: PPUSH
47816: LD_EXP 98
47820: PUSH
47821: LD_VAR 0 9
47825: ARRAY
47826: PPUSH
47827: CALL_OW 74
47831: ST_TO_ADDR
// if i > 90 or temp = 0 then
47832: LD_VAR 0 2
47836: PUSH
47837: LD_INT 90
47839: GREATER
47840: PUSH
47841: LD_VAR 0 11
47845: PUSH
47846: LD_INT 0
47848: EQUAL
47849: OR
47850: IFFALSE 47877
// crane_is_refueling = Replace ( crane_is_refueling , base , false ) else
47852: LD_ADDR_VAR 0 22
47856: PUSH
47857: LD_VAR 0 22
47861: PPUSH
47862: LD_VAR 0 9
47866: PPUSH
47867: LD_INT 0
47869: PPUSH
47870: CALL_OW 1
47874: ST_TO_ADDR
47875: GO 47962
// if i < 25 or crane_is_refueling [ base ] then
47877: LD_VAR 0 2
47881: PUSH
47882: LD_INT 25
47884: LESS
47885: PUSH
47886: LD_VAR 0 22
47890: PUSH
47891: LD_VAR 0 9
47895: ARRAY
47896: OR
47897: IFFALSE 47962
// begin ComMoveUnit ( ai_crane [ base ] , temp ) ;
47899: LD_EXP 98
47903: PUSH
47904: LD_VAR 0 9
47908: ARRAY
47909: PPUSH
47910: LD_VAR 0 11
47914: PPUSH
47915: CALL_OW 112
// AddComRefuel ( ai_crane [ base ] , temp ) ;
47919: LD_EXP 98
47923: PUSH
47924: LD_VAR 0 9
47928: ARRAY
47929: PPUSH
47930: LD_VAR 0 11
47934: PPUSH
47935: CALL_OW 210
// crane_is_refueling = Replace ( crane_is_refueling , base , true ) ;
47939: LD_ADDR_VAR 0 22
47943: PUSH
47944: LD_VAR 0 22
47948: PPUSH
47949: LD_VAR 0 9
47953: PPUSH
47954: LD_INT 1
47956: PPUSH
47957: CALL_OW 1
47961: ST_TO_ADDR
// end ; end ; if not crane_is_refueling [ base ] then
47962: LD_VAR 0 22
47966: PUSH
47967: LD_VAR 0 9
47971: ARRAY
47972: NOT
47973: IFFALSE 47983
// crane_usable = true ;
47975: LD_ADDR_VAR 0 13
47979: PUSH
47980: LD_INT 1
47982: ST_TO_ADDR
// end ; end ; if engineers_list = 0 and apemen_engineers_list = 0 and not crane_usable then
47983: LD_VAR 0 3
47987: PUSH
47988: LD_INT 0
47990: EQUAL
47991: PUSH
47992: LD_VAR 0 10
47996: PUSH
47997: LD_INT 0
47999: EQUAL
48000: AND
48001: PUSH
48002: LD_VAR 0 13
48006: NOT
48007: AND
48008: IFFALSE 48012
// continue ;
48010: GO 46846
// temp_list_2 = UnitFilter ( engineers_list , [ f_class , class_engineer ] ) ;
48012: LD_ADDR_VAR 0 8
48016: PUSH
48017: LD_VAR 0 3
48021: PPUSH
48022: LD_INT 25
48024: PUSH
48025: LD_INT 2
48027: PUSH
48028: EMPTY
48029: LIST
48030: LIST
48031: PPUSH
48032: CALL_OW 72
48036: ST_TO_ADDR
// if ai_captured_buildings [ base ] > 0 and temp_list_2 > 0 then
48037: LD_EXP 72
48041: PUSH
48042: LD_VAR 0 9
48046: ARRAY
48047: PUSH
48048: LD_INT 0
48050: GREATER
48051: PUSH
48052: LD_VAR 0 8
48056: PUSH
48057: LD_INT 0
48059: GREATER
48060: AND
48061: IFFALSE 48339
// begin temp_list = [ ] ;
48063: LD_ADDR_VAR 0 4
48067: PUSH
48068: EMPTY
48069: ST_TO_ADDR
// for i in ai_captured_buildings [ base ] do
48070: LD_ADDR_VAR 0 2
48074: PUSH
48075: LD_EXP 72
48079: PUSH
48080: LD_VAR 0 9
48084: ARRAY
48085: PUSH
48086: FOR_IN
48087: IFFALSE 48143
// if GetBType ( i ) in [ b_depot , b_warehouse ] then
48089: LD_VAR 0 2
48093: PPUSH
48094: CALL_OW 266
48098: PUSH
48099: LD_INT 0
48101: PUSH
48102: LD_INT 1
48104: PUSH
48105: EMPTY
48106: LIST
48107: LIST
48108: IN
48109: IFFALSE 48127
// temp_list = temp_list ^ 1 else
48111: LD_ADDR_VAR 0 4
48115: PUSH
48116: LD_VAR 0 4
48120: PUSH
48121: LD_INT 1
48123: ADD
48124: ST_TO_ADDR
48125: GO 48141
// temp_list = temp_list ^ 0 ;
48127: LD_ADDR_VAR 0 4
48131: PUSH
48132: LD_VAR 0 4
48136: PUSH
48137: LD_INT 0
48139: ADD
48140: ST_TO_ADDR
48141: GO 48086
48143: POP
48144: POP
// temp_list = SortListByListDesc ( ai_captured_buildings [ base ] , temp_list ) ;
48145: LD_ADDR_VAR 0 4
48149: PUSH
48150: LD_EXP 72
48154: PUSH
48155: LD_VAR 0 9
48159: ARRAY
48160: PPUSH
48161: LD_VAR 0 4
48165: PPUSH
48166: CALL_OW 77
48170: ST_TO_ADDR
// temp_list_2 = GetHumansOutOfUnits ( temp_list_2 ) ;
48171: LD_ADDR_VAR 0 8
48175: PUSH
48176: LD_VAR 0 8
48180: PPUSH
48181: CALL 55807 0 1
48185: ST_TO_ADDR
// if temp_list_2 > 0 then
48186: LD_VAR 0 8
48190: PUSH
48191: LD_INT 0
48193: GREATER
48194: IFFALSE 48310
// begin temp_list_2 = SortListByListDesc ( temp_list_2 , temp_list_2 ) ;
48196: LD_ADDR_VAR 0 8
48200: PUSH
48201: LD_VAR 0 8
48205: PPUSH
48206: LD_VAR 0 8
48210: PPUSH
48211: CALL_OW 77
48215: ST_TO_ADDR
// SetTaskList ( temp_list_2 [ 1 ] , [ [ e , GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) , temp_list [ 1 ] , 0 , 0 , 0 ] ] ) ;
48216: LD_VAR 0 8
48220: PUSH
48221: LD_INT 1
48223: ARRAY
48224: PPUSH
48225: LD_STRING e
48227: PUSH
48228: LD_VAR 0 4
48232: PUSH
48233: LD_INT 1
48235: ARRAY
48236: PPUSH
48237: CALL_OW 250
48241: PUSH
48242: LD_VAR 0 4
48246: PUSH
48247: LD_INT 1
48249: ARRAY
48250: PPUSH
48251: CALL_OW 251
48255: PUSH
48256: LD_VAR 0 4
48260: PUSH
48261: LD_INT 1
48263: ARRAY
48264: PUSH
48265: LD_INT 0
48267: PUSH
48268: LD_INT 0
48270: PUSH
48271: LD_INT 0
48273: PUSH
48274: EMPTY
48275: LIST
48276: LIST
48277: LIST
48278: LIST
48279: LIST
48280: LIST
48281: LIST
48282: PUSH
48283: EMPTY
48284: LIST
48285: PPUSH
48286: CALL_OW 446
// engineers_list = engineers_list diff temp_list_2 [ 1 ] ;
48290: LD_ADDR_VAR 0 3
48294: PUSH
48295: LD_VAR 0 3
48299: PUSH
48300: LD_VAR 0 8
48304: PUSH
48305: LD_INT 1
48307: ARRAY
48308: DIFF
48309: ST_TO_ADDR
// end ; if engineers_list = 0 and apemen_engineers_list = 0 and not crane_usable then
48310: LD_VAR 0 3
48314: PUSH
48315: LD_INT 0
48317: EQUAL
48318: PUSH
48319: LD_VAR 0 10
48323: PUSH
48324: LD_INT 0
48326: EQUAL
48327: AND
48328: PUSH
48329: LD_VAR 0 13
48333: NOT
48334: AND
48335: IFFALSE 48339
// continue ;
48337: GO 46846
// end ; case base of 1 :
48339: LD_VAR 0 9
48343: PUSH
48344: LD_INT 1
48346: DOUBLE
48347: EQUAL
48348: IFTRUE 48352
48350: GO 48371
48352: POP
// begin engineers_not_allowed_to_repair_area = 0 ;
48353: LD_ADDR_VAR 0 15
48357: PUSH
48358: LD_INT 0
48360: ST_TO_ADDR
// crane_not_allowed_to_repair_area = 0 ;
48361: LD_ADDR_VAR 0 16
48365: PUSH
48366: LD_INT 0
48368: ST_TO_ADDR
// end ; 2 :
48369: GO 48453
48371: LD_INT 2
48373: DOUBLE
48374: EQUAL
48375: IFTRUE 48379
48377: GO 48398
48379: POP
// begin engineers_not_allowed_to_repair_area = 0 ;
48380: LD_ADDR_VAR 0 15
48384: PUSH
48385: LD_INT 0
48387: ST_TO_ADDR
// crane_not_allowed_to_repair_area = 0 ;
48388: LD_ADDR_VAR 0 16
48392: PUSH
48393: LD_INT 0
48395: ST_TO_ADDR
// end ; 3 :
48396: GO 48453
48398: LD_INT 3
48400: DOUBLE
48401: EQUAL
48402: IFTRUE 48406
48404: GO 48425
48406: POP
// begin engineers_not_allowed_to_repair_area = 0 ;
48407: LD_ADDR_VAR 0 15
48411: PUSH
48412: LD_INT 0
48414: ST_TO_ADDR
// crane_not_allowed_to_repair_area = 0 ;
48415: LD_ADDR_VAR 0 16
48419: PUSH
48420: LD_INT 0
48422: ST_TO_ADDR
// end ; 4 :
48423: GO 48453
48425: LD_INT 4
48427: DOUBLE
48428: EQUAL
48429: IFTRUE 48433
48431: GO 48452
48433: POP
// begin engineers_not_allowed_to_repair_area = 0 ;
48434: LD_ADDR_VAR 0 15
48438: PUSH
48439: LD_INT 0
48441: ST_TO_ADDR
// crane_not_allowed_to_repair_area = 0 ;
48442: LD_ADDR_VAR 0 16
48446: PUSH
48447: LD_INT 0
48449: ST_TO_ADDR
// end ; end ;
48450: GO 48453
48452: POP
// repairing_buildings = [ false , false , false ] ;
48453: LD_ADDR_VAR 0 19
48457: PUSH
48458: LD_INT 0
48460: PUSH
48461: LD_INT 0
48463: PUSH
48464: LD_INT 0
48466: PUSH
48467: EMPTY
48468: LIST
48469: LIST
48470: LIST
48471: ST_TO_ADDR
// for k = 1 to 3 do
48472: LD_ADDR_VAR 0 18
48476: PUSH
48477: DOUBLE
48478: LD_INT 1
48480: DEC
48481: ST_TO_ADDR
48482: LD_INT 3
48484: PUSH
48485: FOR_TO
48486: IFFALSE 49195
// begin i = 1 ;
48488: LD_ADDR_VAR 0 2
48492: PUSH
48493: LD_INT 1
48495: ST_TO_ADDR
// buildings_list = [ ] ;
48496: LD_ADDR_VAR 0 5
48500: PUSH
48501: EMPTY
48502: ST_TO_ADDR
// repeat case i of 1 :
48503: LD_VAR 0 2
48507: PUSH
48508: LD_INT 1
48510: DOUBLE
48511: EQUAL
48512: IFTRUE 48516
48514: GO 48565
48516: POP
// buildings_list = UnitFilter ( ai_all_buildings [ base ] diff ai_dismantle_these_buildings [ base ] , [ f_not , [ f_ok ] ] ) ; 2 :
48517: LD_ADDR_VAR 0 5
48521: PUSH
48522: LD_EXP 86
48526: PUSH
48527: LD_VAR 0 9
48531: ARRAY
48532: PUSH
48533: LD_EXP 109
48537: PUSH
48538: LD_VAR 0 9
48542: ARRAY
48543: DIFF
48544: PPUSH
48545: LD_INT 3
48547: PUSH
48548: LD_INT 50
48550: PUSH
48551: EMPTY
48552: LIST
48553: PUSH
48554: EMPTY
48555: LIST
48556: LIST
48557: PPUSH
48558: CALL_OW 72
48562: ST_TO_ADDR
48563: GO 48627
48565: LD_INT 2
48567: DOUBLE
48568: EQUAL
48569: IFTRUE 48573
48571: GO 48626
48573: POP
// buildings_list = UnitFilter ( ai_all_buildings [ base ] diff ai_dismantle_these_buildings [ base ] , [ f_not , [ f_lives , 1000 ] ] ) ; end ;
48574: LD_ADDR_VAR 0 5
48578: PUSH
48579: LD_EXP 86
48583: PUSH
48584: LD_VAR 0 9
48588: ARRAY
48589: PUSH
48590: LD_EXP 109
48594: PUSH
48595: LD_VAR 0 9
48599: ARRAY
48600: DIFF
48601: PPUSH
48602: LD_INT 3
48604: PUSH
48605: LD_INT 24
48607: PUSH
48608: LD_INT 1000
48610: PUSH
48611: EMPTY
48612: LIST
48613: LIST
48614: PUSH
48615: EMPTY
48616: LIST
48617: LIST
48618: PPUSH
48619: CALL_OW 72
48623: ST_TO_ADDR
48624: GO 48627
48626: POP
// case k of 2 :
48627: LD_VAR 0 18
48631: PUSH
48632: LD_INT 2
48634: DOUBLE
48635: EQUAL
48636: IFTRUE 48640
48638: GO 48693
48640: POP
// begin if under_attack and engineers_not_allowed_to_repair_area > 0 then
48641: LD_VAR 0 20
48645: PUSH
48646: LD_VAR 0 15
48650: PUSH
48651: LD_INT 0
48653: GREATER
48654: AND
48655: IFFALSE 48691
// buildings_list = UnitFilter ( buildings_list , [ f_not , [ f_inarea , engineers_not_allowed_to_repair_area ] ] ) ;
48657: LD_ADDR_VAR 0 5
48661: PUSH
48662: LD_VAR 0 5
48666: PPUSH
48667: LD_INT 3
48669: PUSH
48670: LD_INT 95
48672: PUSH
48673: LD_VAR 0 15
48677: PUSH
48678: EMPTY
48679: LIST
48680: LIST
48681: PUSH
48682: EMPTY
48683: LIST
48684: LIST
48685: PPUSH
48686: CALL_OW 72
48690: ST_TO_ADDR
// end ; 3 :
48691: GO 48749
48693: LD_INT 3
48695: DOUBLE
48696: EQUAL
48697: IFTRUE 48701
48699: GO 48748
48701: POP
// begin if crane_not_allowed_to_repair_area > 0 then
48702: LD_VAR 0 16
48706: PUSH
48707: LD_INT 0
48709: GREATER
48710: IFFALSE 48746
// buildings_list = UnitFilter ( buildings_list , [ f_not , [ f_inarea , crane_not_allowed_to_repair_area ] ] ) ;
48712: LD_ADDR_VAR 0 5
48716: PUSH
48717: LD_VAR 0 5
48721: PPUSH
48722: LD_INT 3
48724: PUSH
48725: LD_INT 95
48727: PUSH
48728: LD_VAR 0 16
48732: PUSH
48733: EMPTY
48734: LIST
48735: LIST
48736: PUSH
48737: EMPTY
48738: LIST
48739: LIST
48740: PPUSH
48741: CALL_OW 72
48745: ST_TO_ADDR
// end ; end ;
48746: GO 48749
48748: POP
// i = i + 1 ;
48749: LD_ADDR_VAR 0 2
48753: PUSH
48754: LD_VAR 0 2
48758: PUSH
48759: LD_INT 1
48761: PLUS
48762: ST_TO_ADDR
// until buildings_list > 0 or i > 2 ;
48763: LD_VAR 0 5
48767: PUSH
48768: LD_INT 0
48770: GREATER
48771: PUSH
48772: LD_VAR 0 2
48776: PUSH
48777: LD_INT 2
48779: GREATER
48780: OR
48781: IFFALSE 48503
// buildings_list = buildings_list diff ai_units_irradiated ;
48783: LD_ADDR_VAR 0 5
48787: PUSH
48788: LD_VAR 0 5
48792: PUSH
48793: LD_EXP 158
48797: DIFF
48798: ST_TO_ADDR
// if buildings_list > 0 then
48799: LD_VAR 0 5
48803: PUSH
48804: LD_INT 0
48806: GREATER
48807: IFFALSE 49193
// begin case k of 1 :
48809: LD_VAR 0 18
48813: PUSH
48814: LD_INT 1
48816: DOUBLE
48817: EQUAL
48818: IFTRUE 48822
48820: GO 48873
48822: POP
// begin if apemen_engineers_list > 0 then
48823: LD_VAR 0 10
48827: PUSH
48828: LD_INT 0
48830: GREATER
48831: IFFALSE 48856
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
48833: LD_ADDR_VAR 0 19
48837: PUSH
48838: LD_VAR 0 19
48842: PPUSH
48843: LD_VAR 0 18
48847: PPUSH
48848: LD_INT 1
48850: PPUSH
48851: CALL_OW 1
48855: ST_TO_ADDR
// workers_list = GetHumansOutOfUnits ( apemen_engineers_list ) ;
48856: LD_ADDR_VAR 0 17
48860: PUSH
48861: LD_VAR 0 10
48865: PPUSH
48866: CALL 55807 0 1
48870: ST_TO_ADDR
// end ; 2 :
48871: GO 49041
48873: LD_INT 2
48875: DOUBLE
48876: EQUAL
48877: IFTRUE 48881
48879: GO 48932
48881: POP
// begin if engineers_list > 0 then
48882: LD_VAR 0 3
48886: PUSH
48887: LD_INT 0
48889: GREATER
48890: IFFALSE 48915
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
48892: LD_ADDR_VAR 0 19
48896: PUSH
48897: LD_VAR 0 19
48901: PPUSH
48902: LD_VAR 0 18
48906: PPUSH
48907: LD_INT 1
48909: PPUSH
48910: CALL_OW 1
48914: ST_TO_ADDR
// workers_list = GetHumansOutOfUnits ( engineers_list ) ;
48915: LD_ADDR_VAR 0 17
48919: PUSH
48920: LD_VAR 0 3
48924: PPUSH
48925: CALL 55807 0 1
48929: ST_TO_ADDR
// end ; 3 :
48930: GO 49041
48932: LD_INT 3
48934: DOUBLE
48935: EQUAL
48936: IFTRUE 48940
48938: GO 49040
48940: POP
// begin if ai_crane [ base ] > 0 then
48941: LD_EXP 98
48945: PUSH
48946: LD_VAR 0 9
48950: ARRAY
48951: PUSH
48952: LD_INT 0
48954: GREATER
48955: IFFALSE 48980
// repairing_buildings = Replace ( repairing_buildings , k , true ) ;
48957: LD_ADDR_VAR 0 19
48961: PUSH
48962: LD_VAR 0 19
48966: PPUSH
48967: LD_VAR 0 18
48971: PPUSH
48972: LD_INT 1
48974: PPUSH
48975: CALL_OW 1
48979: ST_TO_ADDR
// if ai_crane [ base ] > 0 and crane_usable then
48980: LD_EXP 98
48984: PUSH
48985: LD_VAR 0 9
48989: ARRAY
48990: PUSH
48991: LD_INT 0
48993: GREATER
48994: PUSH
48995: LD_VAR 0 13
48999: AND
49000: IFFALSE 49031
// begin workers_list = [ ai_crane [ base ] ] ;
49002: LD_ADDR_VAR 0 17
49006: PUSH
49007: LD_EXP 98
49011: PUSH
49012: LD_VAR 0 9
49016: ARRAY
49017: PUSH
49018: EMPTY
49019: LIST
49020: ST_TO_ADDR
// crane_usable = false ;
49021: LD_ADDR_VAR 0 13
49025: PUSH
49026: LD_INT 0
49028: ST_TO_ADDR
// end else
49029: GO 49038
// workers_list = [ ] ;
49031: LD_ADDR_VAR 0 17
49035: PUSH
49036: EMPTY
49037: ST_TO_ADDR
// end ; end ;
49038: GO 49041
49040: POP
// repeat i = 1 ;
49041: LD_ADDR_VAR 0 2
49045: PUSH
49046: LD_INT 1
49048: ST_TO_ADDR
// while i <= buildings_list do
49049: LD_VAR 0 2
49053: PUSH
49054: LD_VAR 0 5
49058: LESSEQUAL
49059: IFFALSE 49183
// begin if workers_list = 0 then
49061: LD_VAR 0 17
49065: PUSH
49066: LD_INT 0
49068: EQUAL
49069: IFFALSE 49073
// break ;
49071: GO 49183
// temp_unit = NearestUnitToUnit ( workers_list , buildings_list [ i ] ) ;
49073: LD_ADDR_VAR 0 6
49077: PUSH
49078: LD_VAR 0 17
49082: PPUSH
49083: LD_VAR 0 5
49087: PUSH
49088: LD_VAR 0 2
49092: ARRAY
49093: PPUSH
49094: CALL_OW 74
49098: ST_TO_ADDR
// ComRepairBuilding ( temp_unit , buildings_list [ i ] ) ;
49099: LD_VAR 0 6
49103: PPUSH
49104: LD_VAR 0 5
49108: PUSH
49109: LD_VAR 0 2
49113: ARRAY
49114: PPUSH
49115: CALL_OW 130
// workers_list = workers_list diff temp_unit ;
49119: LD_ADDR_VAR 0 17
49123: PUSH
49124: LD_VAR 0 17
49128: PUSH
49129: LD_VAR 0 6
49133: DIFF
49134: ST_TO_ADDR
// engineers_list = engineers_list diff temp_unit ;
49135: LD_ADDR_VAR 0 3
49139: PUSH
49140: LD_VAR 0 3
49144: PUSH
49145: LD_VAR 0 6
49149: DIFF
49150: ST_TO_ADDR
// apemen_engineers_list = apemen_engineers_list diff temp_unit ;
49151: LD_ADDR_VAR 0 10
49155: PUSH
49156: LD_VAR 0 10
49160: PUSH
49161: LD_VAR 0 6
49165: DIFF
49166: ST_TO_ADDR
// i = i + 1 ;
49167: LD_ADDR_VAR 0 2
49171: PUSH
49172: LD_VAR 0 2
49176: PUSH
49177: LD_INT 1
49179: PLUS
49180: ST_TO_ADDR
// end ;
49181: GO 49049
// until workers_list = 0 ;
49183: LD_VAR 0 17
49187: PUSH
49188: LD_INT 0
49190: EQUAL
49191: IFFALSE 49041
// end ; end ;
49193: GO 48485
49195: POP
49196: POP
// if true in repairing_buildings then
49197: LD_INT 1
49199: PUSH
49200: LD_VAR 0 19
49204: IN
49205: IFFALSE 49352
// begin temp_list = [ ] ;
49207: LD_ADDR_VAR 0 4
49211: PUSH
49212: EMPTY
49213: ST_TO_ADDR
// if not repairing_buildings [ 1 ] then
49214: LD_VAR 0 19
49218: PUSH
49219: LD_INT 1
49221: ARRAY
49222: NOT
49223: IFFALSE 49241
// temp_list = temp_list ^ apemen_engineers_list ;
49225: LD_ADDR_VAR 0 4
49229: PUSH
49230: LD_VAR 0 4
49234: PUSH
49235: LD_VAR 0 10
49239: ADD
49240: ST_TO_ADDR
// if not repairing_buildings [ 2 ] then
49241: LD_VAR 0 19
49245: PUSH
49246: LD_INT 2
49248: ARRAY
49249: NOT
49250: IFFALSE 49268
// temp_list = temp_list ^ engineers_list ;
49252: LD_ADDR_VAR 0 4
49256: PUSH
49257: LD_VAR 0 4
49261: PUSH
49262: LD_VAR 0 3
49266: ADD
49267: ST_TO_ADDR
// DistributeHumansToBuildings ( base , temp_list , UnitFilter ( ai_depots [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_engineer , [ 5 , 5 , 5 ] [ base ] , false , false ) ;
49268: LD_VAR 0 9
49272: PPUSH
49273: LD_VAR 0 4
49277: PPUSH
49278: LD_EXP 59
49282: PUSH
49283: LD_VAR 0 9
49287: ARRAY
49288: PPUSH
49289: LD_INT 50
49291: PUSH
49292: EMPTY
49293: LIST
49294: PUSH
49295: LD_INT 3
49297: PUSH
49298: LD_INT 57
49300: PUSH
49301: EMPTY
49302: LIST
49303: PUSH
49304: EMPTY
49305: LIST
49306: LIST
49307: PUSH
49308: EMPTY
49309: LIST
49310: LIST
49311: PPUSH
49312: CALL_OW 72
49316: PPUSH
49317: LD_INT 2
49319: PPUSH
49320: LD_INT 5
49322: PUSH
49323: LD_INT 5
49325: PUSH
49326: LD_INT 5
49328: PUSH
49329: EMPTY
49330: LIST
49331: LIST
49332: LIST
49333: PUSH
49334: LD_VAR 0 9
49338: ARRAY
49339: PPUSH
49340: LD_INT 0
49342: PPUSH
49343: LD_INT 0
49345: PPUSH
49346: CALL 45286 0 7
// continue ;
49350: GO 46846
// end ; if not under_attack then
49352: LD_VAR 0 20
49356: NOT
49357: IFFALSE 54465
// begin if ai_building_under_construction [ base ] > 0 then
49359: LD_EXP 84
49363: PUSH
49364: LD_VAR 0 9
49368: ARRAY
49369: PUSH
49370: LD_INT 0
49372: GREATER
49373: IFFALSE 49547
// if BuildingStatus ( ai_building_under_construction [ base ] ) = bs_build then
49375: LD_EXP 84
49379: PUSH
49380: LD_VAR 0 9
49384: ARRAY
49385: PPUSH
49386: CALL_OW 461
49390: PUSH
49391: LD_INT 1
49393: EQUAL
49394: IFFALSE 49509
// begin temp_list_2 = GetHumansOutOfUnits ( engineers_list ^ apemen_engineers_list ) ;
49396: LD_ADDR_VAR 0 8
49400: PUSH
49401: LD_VAR 0 3
49405: PUSH
49406: LD_VAR 0 10
49410: ADD
49411: PPUSH
49412: CALL 55807 0 1
49416: ST_TO_ADDR
// if crane_usable and not IsInArea ( ai_building_under_construction [ base ] , crane_not_allowed_to_repair_area ) then
49417: LD_VAR 0 13
49421: PUSH
49422: LD_EXP 84
49426: PUSH
49427: LD_VAR 0 9
49431: ARRAY
49432: PPUSH
49433: LD_VAR 0 16
49437: PPUSH
49438: CALL_OW 308
49442: NOT
49443: AND
49444: IFFALSE 49468
// temp_list_2 = temp_list_2 ^ ai_crane [ base ] ;
49446: LD_ADDR_VAR 0 8
49450: PUSH
49451: LD_VAR 0 8
49455: PUSH
49456: LD_EXP 98
49460: PUSH
49461: LD_VAR 0 9
49465: ARRAY
49466: ADD
49467: ST_TO_ADDR
// for i in temp_list_2 do
49468: LD_ADDR_VAR 0 2
49472: PUSH
49473: LD_VAR 0 8
49477: PUSH
49478: FOR_IN
49479: IFFALSE 49503
// ComRepairBuilding ( i , ai_building_under_construction [ base ] ) ;
49481: LD_VAR 0 2
49485: PPUSH
49486: LD_EXP 84
49490: PUSH
49491: LD_VAR 0 9
49495: ARRAY
49496: PPUSH
49497: CALL_OW 130
49501: GO 49478
49503: POP
49504: POP
// continue ;
49505: GO 46846
// end else
49507: GO 49547
// begin ComCancel ( ai_building_under_construction [ base ] ) ;
49509: LD_EXP 84
49513: PUSH
49514: LD_VAR 0 9
49518: ARRAY
49519: PPUSH
49520: CALL_OW 127
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
49524: LD_ADDR_EXP 84
49528: PUSH
49529: LD_EXP 84
49533: PPUSH
49534: LD_VAR 0 9
49538: PPUSH
49539: LD_INT 0
49541: PPUSH
49542: CALL_OW 1
49546: ST_TO_ADDR
// end ; if ai_dismantle_these_buildings [ base ] > 0 and engineers_list > 0 then
49547: LD_EXP 109
49551: PUSH
49552: LD_VAR 0 9
49556: ARRAY
49557: PUSH
49558: LD_INT 0
49560: GREATER
49561: PUSH
49562: LD_VAR 0 3
49566: PUSH
49567: LD_INT 0
49569: GREATER
49570: AND
49571: IFFALSE 49735
// begin is_dismantling = true ;
49573: LD_ADDR_VAR 0 21
49577: PUSH
49578: LD_INT 1
49580: ST_TO_ADDR
// if ai_building_constructor [ base ] in engineers_list then
49581: LD_EXP 87
49585: PUSH
49586: LD_VAR 0 9
49590: ARRAY
49591: PUSH
49592: LD_VAR 0 3
49596: IN
49597: IFFALSE 49617
// k = ai_building_constructor [ base ] else
49599: LD_ADDR_VAR 0 18
49603: PUSH
49604: LD_EXP 87
49608: PUSH
49609: LD_VAR 0 9
49613: ARRAY
49614: ST_TO_ADDR
49615: GO 49637
// k = BestFromListByList ( engineers_list , engineers_list ) ;
49617: LD_ADDR_VAR 0 18
49621: PUSH
49622: LD_VAR 0 3
49626: PPUSH
49627: LD_VAR 0 3
49631: PPUSH
49632: CALL_OW 79
49636: ST_TO_ADDR
// engineers_list = engineers_list diff k ;
49637: LD_ADDR_VAR 0 3
49641: PUSH
49642: LD_VAR 0 3
49646: PUSH
49647: LD_VAR 0 18
49651: DIFF
49652: ST_TO_ADDR
// case GetType ( IsInUnit ( k ) ) of unit_vehicle :
49653: LD_VAR 0 18
49657: PPUSH
49658: CALL_OW 310
49662: PPUSH
49663: CALL_OW 247
49667: PUSH
49668: LD_INT 2
49670: DOUBLE
49671: EQUAL
49672: IFTRUE 49676
49674: GO 49688
49676: POP
// ComExitVehicle ( k ) ; unit_building :
49677: LD_VAR 0 18
49681: PPUSH
49682: CALL_OW 121
49686: GO 49733
49688: LD_INT 3
49690: DOUBLE
49691: EQUAL
49692: IFTRUE 49696
49694: GO 49708
49696: POP
// ComExitBuilding ( k ) ; else
49697: LD_VAR 0 18
49701: PPUSH
49702: CALL_OW 122
49706: GO 49733
49708: POP
// ComDismantle ( k , ai_dismantle_these_buildings [ base ] [ 1 ] ) ; end ;
49709: LD_VAR 0 18
49713: PPUSH
49714: LD_EXP 109
49718: PUSH
49719: LD_VAR 0 9
49723: ARRAY
49724: PUSH
49725: LD_INT 1
49727: ARRAY
49728: PPUSH
49729: CALL_OW 167
// end else
49733: GO 49743
// is_dismantling = false ;
49735: LD_ADDR_VAR 0 21
49739: PUSH
49740: LD_INT 0
49742: ST_TO_ADDR
// if ( ai_all_buildings [ base ] - ai_excepted_buildings [ base ] < ai_buildings_locations [ base ] or ai_upcoming_building_data [ base ] > 0 ) and not is_dismantling then
49743: LD_EXP 86
49747: PUSH
49748: LD_VAR 0 9
49752: ARRAY
49753: PUSH
49754: LD_EXP 107
49758: PUSH
49759: LD_VAR 0 9
49763: ARRAY
49764: MINUS
49765: PUSH
49766: LD_EXP 71
49770: PUSH
49771: LD_VAR 0 9
49775: ARRAY
49776: LESS
49777: PUSH
49778: LD_EXP 90
49782: PUSH
49783: LD_VAR 0 9
49787: ARRAY
49788: PUSH
49789: LD_INT 0
49791: GREATER
49792: OR
49793: PUSH
49794: LD_VAR 0 21
49798: NOT
49799: AND
49800: IFFALSE 54277
// begin if ai_upcoming_building_data [ base ] = 0 then
49802: LD_EXP 90
49806: PUSH
49807: LD_VAR 0 9
49811: ARRAY
49812: PUSH
49813: LD_INT 0
49815: EQUAL
49816: IFFALSE 50244
// begin temp_list = [ ] ;
49818: LD_ADDR_VAR 0 4
49822: PUSH
49823: EMPTY
49824: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
49825: LD_ADDR_VAR 0 2
49829: PUSH
49830: LD_EXP 71
49834: PUSH
49835: LD_VAR 0 9
49839: ARRAY
49840: PUSH
49841: FOR_IN
49842: IFFALSE 49911
// if GetBType ( HexInfo ( i [ 1 ] , i [ 2 ] ) ) = - 1 and not i in ai_cannot_rebuild_these_buildings [ base ] then
49844: LD_VAR 0 2
49848: PUSH
49849: LD_INT 1
49851: ARRAY
49852: PPUSH
49853: LD_VAR 0 2
49857: PUSH
49858: LD_INT 2
49860: ARRAY
49861: PPUSH
49862: CALL_OW 428
49866: PPUSH
49867: CALL_OW 266
49871: PUSH
49872: LD_INT 1
49874: NEG
49875: EQUAL
49876: PUSH
49877: LD_VAR 0 2
49881: PUSH
49882: LD_EXP 91
49886: PUSH
49887: LD_VAR 0 9
49891: ARRAY
49892: IN
49893: NOT
49894: AND
49895: IFFALSE 49909
// begin temp_list = i ;
49897: LD_ADDR_VAR 0 4
49901: PUSH
49902: LD_VAR 0 2
49906: ST_TO_ADDR
// break ;
49907: GO 49911
// end ;
49909: GO 49841
49911: POP
49912: POP
// if temp_list > 0 then
49913: LD_VAR 0 4
49917: PUSH
49918: LD_INT 0
49920: GREATER
49921: IFFALSE 50244
// begin if temp_list [ 4 ] = b_bunker and GetBaseNation ( base ) in [ nation_american , nation_russian ] then
49923: LD_VAR 0 4
49927: PUSH
49928: LD_INT 4
49930: ARRAY
49931: PUSH
49932: LD_INT 32
49934: EQUAL
49935: PUSH
49936: LD_VAR 0 9
49940: PPUSH
49941: CALL 40548 0 1
49945: PUSH
49946: LD_INT 1
49948: PUSH
49949: LD_INT 3
49951: PUSH
49952: EMPTY
49953: LIST
49954: LIST
49955: IN
49956: AND
49957: IFFALSE 50219
// begin k = 0 ;
49959: LD_ADDR_VAR 0 18
49963: PUSH
49964: LD_INT 0
49966: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
49967: LD_ADDR_VAR 0 2
49971: PUSH
49972: LD_EXP 71
49976: PUSH
49977: LD_VAR 0 9
49981: ARRAY
49982: PUSH
49983: FOR_IN
49984: IFFALSE 50035
// if i [ 4 ] in [ b_breastwork , b_bunker , b_armoury , b_barracks , b_fort ] then
49986: LD_VAR 0 2
49990: PUSH
49991: LD_INT 4
49993: ARRAY
49994: PUSH
49995: LD_INT 31
49997: PUSH
49998: LD_INT 32
50000: PUSH
50001: LD_INT 4
50003: PUSH
50004: LD_INT 5
50006: PUSH
50007: LD_INT 35
50009: PUSH
50010: EMPTY
50011: LIST
50012: LIST
50013: LIST
50014: LIST
50015: LIST
50016: IN
50017: IFFALSE 50033
// k = k + 1 ;
50019: LD_ADDR_VAR 0 18
50023: PUSH
50024: LD_VAR 0 18
50028: PUSH
50029: LD_INT 1
50031: PLUS
50032: ST_TO_ADDR
50033: GO 49983
50035: POP
50036: POP
// if k > ai_soldiers [ base ] then
50037: LD_VAR 0 18
50041: PUSH
50042: LD_EXP 50
50046: PUSH
50047: LD_VAR 0 9
50051: ARRAY
50052: GREATER
50053: IFFALSE 50219
// begin for i = 1 to ai_buildings_locations [ base ] do
50055: LD_ADDR_VAR 0 2
50059: PUSH
50060: DOUBLE
50061: LD_INT 1
50063: DEC
50064: ST_TO_ADDR
50065: LD_EXP 71
50069: PUSH
50070: LD_VAR 0 9
50074: ARRAY
50075: PUSH
50076: FOR_TO
50077: IFFALSE 50196
// if ai_buildings_locations [ base ] [ i ] = temp_list then
50079: LD_EXP 71
50083: PUSH
50084: LD_VAR 0 9
50088: ARRAY
50089: PUSH
50090: LD_VAR 0 2
50094: ARRAY
50095: PUSH
50096: LD_VAR 0 4
50100: EQUAL
50101: IFFALSE 50194
// begin temp_list_2 = Replace ( ai_buildings_locations [ base ] [ i ] , 4 , b_turret ) ;
50103: LD_ADDR_VAR 0 8
50107: PUSH
50108: LD_EXP 71
50112: PUSH
50113: LD_VAR 0 9
50117: ARRAY
50118: PUSH
50119: LD_VAR 0 2
50123: ARRAY
50124: PPUSH
50125: LD_INT 4
50127: PPUSH
50128: LD_INT 33
50130: PPUSH
50131: CALL_OW 1
50135: ST_TO_ADDR
// temp_list_2 = Replace ( ai_buildings_locations [ base ] , i , temp_list_2 ) ;
50136: LD_ADDR_VAR 0 8
50140: PUSH
50141: LD_EXP 71
50145: PUSH
50146: LD_VAR 0 9
50150: ARRAY
50151: PPUSH
50152: LD_VAR 0 2
50156: PPUSH
50157: LD_VAR 0 8
50161: PPUSH
50162: CALL_OW 1
50166: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list_2 ) ;
50167: LD_ADDR_EXP 71
50171: PUSH
50172: LD_EXP 71
50176: PPUSH
50177: LD_VAR 0 9
50181: PPUSH
50182: LD_VAR 0 8
50186: PPUSH
50187: CALL_OW 1
50191: ST_TO_ADDR
// break ;
50192: GO 50196
// end ;
50194: GO 50076
50196: POP
50197: POP
// temp_list = Replace ( temp_list , 4 , b_turret ) ;
50198: LD_ADDR_VAR 0 4
50202: PUSH
50203: LD_VAR 0 4
50207: PPUSH
50208: LD_INT 4
50210: PPUSH
50211: LD_INT 33
50213: PPUSH
50214: CALL_OW 1
50218: ST_TO_ADDR
// end ; end ; ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , temp_list ) ;
50219: LD_ADDR_EXP 90
50223: PUSH
50224: LD_EXP 90
50228: PPUSH
50229: LD_VAR 0 9
50233: PPUSH
50234: LD_VAR 0 4
50238: PPUSH
50239: CALL_OW 1
50243: ST_TO_ADDR
// end ; end ; if ai_upcoming_building_data [ base ] > 0 then
50244: LD_EXP 90
50248: PUSH
50249: LD_VAR 0 9
50253: ARRAY
50254: PUSH
50255: LD_INT 0
50257: GREATER
50258: IFFALSE 54277
// begin if ai_building_constructor [ base ] = 0 then
50260: LD_EXP 87
50264: PUSH
50265: LD_VAR 0 9
50269: ARRAY
50270: PUSH
50271: LD_INT 0
50273: EQUAL
50274: IFFALSE 50592
// begin temp_list_2 = UnitFilter ( ai_engineers [ base ] , [ f_class , class_engineer ] ) ;
50276: LD_ADDR_VAR 0 8
50280: PUSH
50281: LD_EXP 52
50285: PUSH
50286: LD_VAR 0 9
50290: ARRAY
50291: PPUSH
50292: LD_INT 25
50294: PUSH
50295: LD_INT 2
50297: PUSH
50298: EMPTY
50299: LIST
50300: LIST
50301: PPUSH
50302: CALL_OW 72
50306: ST_TO_ADDR
// if temp_list_2 > 0 then
50307: LD_VAR 0 8
50311: PUSH
50312: LD_INT 0
50314: GREATER
50315: IFFALSE 50402
// begin temp_list = [ ] ;
50317: LD_ADDR_VAR 0 4
50321: PUSH
50322: EMPTY
50323: ST_TO_ADDR
// for i in temp_list_2 do
50324: LD_ADDR_VAR 0 2
50328: PUSH
50329: LD_VAR 0 8
50333: PUSH
50334: FOR_IN
50335: IFFALSE 50363
// temp_list = temp_list ^ GetSkill ( i , skill_engineering ) ;
50337: LD_ADDR_VAR 0 4
50341: PUSH
50342: LD_VAR 0 4
50346: PUSH
50347: LD_VAR 0 2
50351: PPUSH
50352: LD_INT 2
50354: PPUSH
50355: CALL_OW 259
50359: ADD
50360: ST_TO_ADDR
50361: GO 50334
50363: POP
50364: POP
// ai_building_constructor = Replace ( ai_building_constructor , base , BestFromListByList ( temp_list_2 , temp_list ) ) ;
50365: LD_ADDR_EXP 87
50369: PUSH
50370: LD_EXP 87
50374: PPUSH
50375: LD_VAR 0 9
50379: PPUSH
50380: LD_VAR 0 8
50384: PPUSH
50385: LD_VAR 0 4
50389: PPUSH
50390: CALL_OW 79
50394: PPUSH
50395: CALL_OW 1
50399: ST_TO_ADDR
// end else
50400: GO 50592
// if ai_engineers [ base ] = 0 and ai_crane [ base ] > 0 and crane_usable then
50402: LD_EXP 52
50406: PUSH
50407: LD_VAR 0 9
50411: ARRAY
50412: PUSH
50413: LD_INT 0
50415: EQUAL
50416: PUSH
50417: LD_EXP 98
50421: PUSH
50422: LD_VAR 0 9
50426: ARRAY
50427: PUSH
50428: LD_INT 0
50430: GREATER
50431: AND
50432: PUSH
50433: LD_VAR 0 13
50437: AND
50438: IFFALSE 50592
// begin if InArea ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , crane_not_allowed_to_repair_area ) then
50440: LD_EXP 90
50444: PUSH
50445: LD_VAR 0 9
50449: ARRAY
50450: PUSH
50451: LD_INT 1
50453: ARRAY
50454: PPUSH
50455: LD_EXP 90
50459: PUSH
50460: LD_VAR 0 9
50464: ARRAY
50465: PUSH
50466: LD_INT 2
50468: ARRAY
50469: PPUSH
50470: LD_VAR 0 16
50474: PPUSH
50475: CALL_OW 309
50479: IFFALSE 50561
// begin temp_list = ai_cannot_rebuild_these_buildings [ base ] ^ [ ai_upcoming_building_data [ base ] ] ;
50481: LD_ADDR_VAR 0 4
50485: PUSH
50486: LD_EXP 91
50490: PUSH
50491: LD_VAR 0 9
50495: ARRAY
50496: PUSH
50497: LD_EXP 90
50501: PUSH
50502: LD_VAR 0 9
50506: ARRAY
50507: PUSH
50508: EMPTY
50509: LIST
50510: ADD
50511: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , temp_list ) ;
50512: LD_ADDR_EXP 91
50516: PUSH
50517: LD_EXP 91
50521: PPUSH
50522: LD_VAR 0 9
50526: PPUSH
50527: LD_VAR 0 4
50531: PPUSH
50532: CALL_OW 1
50536: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
50537: LD_ADDR_EXP 90
50541: PUSH
50542: LD_EXP 90
50546: PPUSH
50547: LD_VAR 0 9
50551: PPUSH
50552: EMPTY
50553: PPUSH
50554: CALL_OW 1
50558: ST_TO_ADDR
// end else
50559: GO 50592
// ai_building_constructor = Replace ( ai_building_constructor , base , ai_crane [ base ] ) ;
50561: LD_ADDR_EXP 87
50565: PUSH
50566: LD_EXP 87
50570: PPUSH
50571: LD_VAR 0 9
50575: PPUSH
50576: LD_EXP 98
50580: PUSH
50581: LD_VAR 0 9
50585: ARRAY
50586: PPUSH
50587: CALL_OW 1
50591: ST_TO_ADDR
// end ; end ; if ai_building_constructor [ base ] > 0 and ( ai_building_constructor [ base ] in engineers_list or ( ai_building_constructor [ base ] = ai_crane [ base ] and crane_usable ) ) then
50592: LD_EXP 87
50596: PUSH
50597: LD_VAR 0 9
50601: ARRAY
50602: PUSH
50603: LD_INT 0
50605: GREATER
50606: PUSH
50607: LD_EXP 87
50611: PUSH
50612: LD_VAR 0 9
50616: ARRAY
50617: PUSH
50618: LD_VAR 0 3
50622: IN
50623: PUSH
50624: LD_EXP 87
50628: PUSH
50629: LD_VAR 0 9
50633: ARRAY
50634: PUSH
50635: LD_EXP 98
50639: PUSH
50640: LD_VAR 0 9
50644: ARRAY
50645: EQUAL
50646: PUSH
50647: LD_VAR 0 13
50651: AND
50652: OR
50653: AND
50654: IFFALSE 54277
// begin engineers_list = engineers_list diff ai_building_constructor [ base ] ;
50656: LD_ADDR_VAR 0 3
50660: PUSH
50661: LD_VAR 0 3
50665: PUSH
50666: LD_EXP 87
50670: PUSH
50671: LD_VAR 0 9
50675: ARRAY
50676: DIFF
50677: ST_TO_ADDR
// if ai_building_constructor [ base ] = ai_crane [ base ] then
50678: LD_EXP 87
50682: PUSH
50683: LD_VAR 0 9
50687: ARRAY
50688: PUSH
50689: LD_EXP 98
50693: PUSH
50694: LD_VAR 0 9
50698: ARRAY
50699: EQUAL
50700: IFFALSE 50710
// crane_usable = false ;
50702: LD_ADDR_VAR 0 13
50706: PUSH
50707: LD_INT 0
50709: ST_TO_ADDR
// away_dist = 7 ;
50710: LD_ADDR_VAR 0 7
50714: PUSH
50715: LD_INT 7
50717: ST_TO_ADDR
// if ai_vehicle_being_moved [ base ] = 0 then
50718: LD_EXP 88
50722: PUSH
50723: LD_VAR 0 9
50727: ARRAY
50728: PUSH
50729: LD_INT 0
50731: EQUAL
50732: IFFALSE 54019
// begin temp_list = UnitFilter ( ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ ai_control_tower_vehicles [ base ] ^ ai_crane [ base ] ^ ai_cargo_bay [ base ] ^ ai_sib_bomb_vehicles [ base ] , [ [ f_control , control_manual ] , [ f_empty ] , [ f_distxy , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , away_dist ] ] ) ;
50734: LD_ADDR_VAR 0 4
50738: PUSH
50739: LD_EXP 77
50743: PUSH
50744: LD_VAR 0 9
50748: ARRAY
50749: PUSH
50750: LD_EXP 110
50754: PUSH
50755: LD_VAR 0 9
50759: ARRAY
50760: ADD
50761: PUSH
50762: LD_EXP 111
50766: PUSH
50767: LD_VAR 0 9
50771: ARRAY
50772: ADD
50773: PUSH
50774: LD_EXP 105
50778: PUSH
50779: LD_VAR 0 9
50783: ARRAY
50784: ADD
50785: PUSH
50786: LD_EXP 98
50790: PUSH
50791: LD_VAR 0 9
50795: ARRAY
50796: ADD
50797: PUSH
50798: LD_EXP 95
50802: PUSH
50803: LD_VAR 0 9
50807: ARRAY
50808: ADD
50809: PUSH
50810: LD_EXP 117
50814: PUSH
50815: LD_VAR 0 9
50819: ARRAY
50820: ADD
50821: PPUSH
50822: LD_INT 33
50824: PUSH
50825: LD_INT 1
50827: PUSH
50828: EMPTY
50829: LIST
50830: LIST
50831: PUSH
50832: LD_INT 58
50834: PUSH
50835: EMPTY
50836: LIST
50837: PUSH
50838: LD_INT 92
50840: PUSH
50841: LD_EXP 90
50845: PUSH
50846: LD_VAR 0 9
50850: ARRAY
50851: PUSH
50852: LD_INT 1
50854: ARRAY
50855: PUSH
50856: LD_EXP 90
50860: PUSH
50861: LD_VAR 0 9
50865: ARRAY
50866: PUSH
50867: LD_INT 2
50869: ARRAY
50870: PUSH
50871: LD_VAR 0 7
50875: PUSH
50876: EMPTY
50877: LIST
50878: LIST
50879: LIST
50880: LIST
50881: PUSH
50882: EMPTY
50883: LIST
50884: LIST
50885: LIST
50886: PPUSH
50887: CALL_OW 72
50891: ST_TO_ADDR
// if temp_list > 0 then
50892: LD_VAR 0 4
50896: PUSH
50897: LD_INT 0
50899: GREATER
50900: IFFALSE 51111
// begin if ai_building_constructor [ base ] = ai_crane [ base ] then
50902: LD_EXP 87
50906: PUSH
50907: LD_VAR 0 9
50911: ARRAY
50912: PUSH
50913: LD_EXP 98
50917: PUSH
50918: LD_VAR 0 9
50922: ARRAY
50923: EQUAL
50924: IFFALSE 51029
// begin temp_list = ai_cannot_rebuild_these_buildings [ base ] ^ [ ai_upcoming_building_data [ base ] ] ;
50926: LD_ADDR_VAR 0 4
50930: PUSH
50931: LD_EXP 91
50935: PUSH
50936: LD_VAR 0 9
50940: ARRAY
50941: PUSH
50942: LD_EXP 90
50946: PUSH
50947: LD_VAR 0 9
50951: ARRAY
50952: PUSH
50953: EMPTY
50954: LIST
50955: ADD
50956: ST_TO_ADDR
// ai_cannot_rebuild_these_buildings = Replace ( ai_cannot_rebuild_these_buildings , base , temp_list ) ;
50957: LD_ADDR_EXP 91
50961: PUSH
50962: LD_EXP 91
50966: PPUSH
50967: LD_VAR 0 9
50971: PPUSH
50972: LD_VAR 0 4
50976: PPUSH
50977: CALL_OW 1
50981: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
50982: LD_ADDR_EXP 90
50986: PUSH
50987: LD_EXP 90
50991: PPUSH
50992: LD_VAR 0 9
50996: PPUSH
50997: EMPTY
50998: PPUSH
50999: CALL_OW 1
51003: ST_TO_ADDR
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
51004: LD_ADDR_EXP 87
51008: PUSH
51009: LD_EXP 87
51013: PPUSH
51014: LD_VAR 0 9
51018: PPUSH
51019: LD_INT 0
51021: PPUSH
51022: CALL_OW 1
51026: ST_TO_ADDR
// end else
51027: GO 51109
// begin ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , temp_list [ 1 ] ) ;
51029: LD_ADDR_EXP 88
51033: PUSH
51034: LD_EXP 88
51038: PPUSH
51039: LD_VAR 0 9
51043: PPUSH
51044: LD_VAR 0 4
51048: PUSH
51049: LD_INT 1
51051: ARRAY
51052: PPUSH
51053: CALL_OW 1
51057: ST_TO_ADDR
// temp_list_2 = ai_vehicles_having_been_moved [ base ] ^ temp_list [ 1 ] ;
51058: LD_ADDR_VAR 0 8
51062: PUSH
51063: LD_EXP 89
51067: PUSH
51068: LD_VAR 0 9
51072: ARRAY
51073: PUSH
51074: LD_VAR 0 4
51078: PUSH
51079: LD_INT 1
51081: ARRAY
51082: ADD
51083: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , temp_list_2 ) ;
51084: LD_ADDR_EXP 89
51088: PUSH
51089: LD_EXP 89
51093: PPUSH
51094: LD_VAR 0 9
51098: PPUSH
51099: LD_VAR 0 8
51103: PPUSH
51104: CALL_OW 1
51108: ST_TO_ADDR
// end ; end else
51109: GO 54017
// case GetType ( IsInUnit ( ai_building_constructor [ base ] ) ) of unit_building :
51111: LD_EXP 87
51115: PUSH
51116: LD_VAR 0 9
51120: ARRAY
51121: PPUSH
51122: CALL_OW 310
51126: PPUSH
51127: CALL_OW 247
51131: PUSH
51132: LD_INT 3
51134: DOUBLE
51135: EQUAL
51136: IFTRUE 51140
51138: GO 51158
51140: POP
// ComExitBuilding ( ai_building_constructor [ base ] ) ; unit_vehicle :
51141: LD_EXP 87
51145: PUSH
51146: LD_VAR 0 9
51150: ARRAY
51151: PPUSH
51152: CALL_OW 122
51156: GO 54017
51158: LD_INT 2
51160: DOUBLE
51161: EQUAL
51162: IFTRUE 51166
51164: GO 51184
51166: POP
// ComExitVehicle ( ai_building_constructor [ base ] ) ; else
51167: LD_EXP 87
51171: PUSH
51172: LD_VAR 0 9
51176: ARRAY
51177: PPUSH
51178: CALL_OW 121
51182: GO 54017
51184: POP
// case GetBType ( HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ) of - 1 :
51185: LD_EXP 90
51189: PUSH
51190: LD_VAR 0 9
51194: ARRAY
51195: PUSH
51196: LD_INT 1
51198: ARRAY
51199: PPUSH
51200: LD_EXP 90
51204: PUSH
51205: LD_VAR 0 9
51209: ARRAY
51210: PUSH
51211: LD_INT 2
51213: ARRAY
51214: PPUSH
51215: CALL_OW 428
51219: PPUSH
51220: CALL_OW 266
51224: PUSH
51225: LD_INT 1
51227: NEG
51228: DOUBLE
51229: EQUAL
51230: IFTRUE 51234
51232: GO 53494
51234: POP
// begin case ai_upcoming_building_data [ base ] [ 4 ] of b_warehouse :
51235: LD_EXP 90
51239: PUSH
51240: LD_VAR 0 9
51244: ARRAY
51245: PUSH
51246: LD_INT 4
51248: ARRAY
51249: PUSH
51250: LD_INT 1
51252: DOUBLE
51253: EQUAL
51254: IFTRUE 51258
51256: GO 51269
51258: POP
// i = b_depot ; b_factory :
51259: LD_ADDR_VAR 0 2
51263: PUSH
51264: LD_INT 0
51266: ST_TO_ADDR
51267: GO 51353
51269: LD_INT 3
51271: DOUBLE
51272: EQUAL
51273: IFTRUE 51277
51275: GO 51288
51277: POP
// i = b_workshop ; b_lab_half , b_lab_full :
51278: LD_ADDR_VAR 0 2
51282: PUSH
51283: LD_INT 2
51285: ST_TO_ADDR
51286: GO 51353
51288: LD_INT 7
51290: DOUBLE
51291: EQUAL
51292: IFTRUE 51302
51294: LD_INT 8
51296: DOUBLE
51297: EQUAL
51298: IFTRUE 51302
51300: GO 51313
51302: POP
// i = b_lab ; b_barracks :
51303: LD_ADDR_VAR 0 2
51307: PUSH
51308: LD_INT 6
51310: ST_TO_ADDR
51311: GO 51353
51313: LD_INT 5
51315: DOUBLE
51316: EQUAL
51317: IFTRUE 51321
51319: GO 51332
51321: POP
// i = b_armoury ; else
51322: LD_ADDR_VAR 0 2
51326: PUSH
51327: LD_INT 4
51329: ST_TO_ADDR
51330: GO 51353
51332: POP
// i = ai_upcoming_building_data [ base ] [ 4 ] ; end ;
51333: LD_ADDR_VAR 0 2
51337: PUSH
51338: LD_EXP 90
51342: PUSH
51343: LD_VAR 0 9
51347: ARRAY
51348: PUSH
51349: LD_INT 4
51351: ARRAY
51352: ST_TO_ADDR
// case i of b_depot :
51353: LD_VAR 0 2
51357: PUSH
51358: LD_INT 0
51360: DOUBLE
51361: EQUAL
51362: IFTRUE 51366
51364: GO 51443
51366: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51367: LD_EXP 87
51371: PUSH
51372: LD_VAR 0 9
51376: ARRAY
51377: PPUSH
51378: CALL_OW 248
51382: PUSH
51383: LD_INT 3
51385: DOUBLE
51386: EQUAL
51387: IFTRUE 51391
51389: GO 51402
51391: POP
// b_value = 64 ; nation_american :
51392: LD_ADDR_VAR 0 14
51396: PUSH
51397: LD_INT 64
51399: ST_TO_ADDR
51400: GO 51441
51402: LD_INT 1
51404: DOUBLE
51405: EQUAL
51406: IFTRUE 51410
51408: GO 51421
51410: POP
// b_value = 1 ; nation_arabian :
51411: LD_ADDR_VAR 0 14
51415: PUSH
51416: LD_INT 1
51418: ST_TO_ADDR
51419: GO 51441
51421: LD_INT 2
51423: DOUBLE
51424: EQUAL
51425: IFTRUE 51429
51427: GO 51440
51429: POP
// b_value = 34 ; end ;
51430: LD_ADDR_VAR 0 14
51434: PUSH
51435: LD_INT 34
51437: ST_TO_ADDR
51438: GO 51441
51440: POP
// end ; b_workshop :
51441: GO 53336
51443: LD_INT 2
51445: DOUBLE
51446: EQUAL
51447: IFTRUE 51451
51449: GO 51528
51451: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51452: LD_EXP 87
51456: PUSH
51457: LD_VAR 0 9
51461: ARRAY
51462: PPUSH
51463: CALL_OW 248
51467: PUSH
51468: LD_INT 3
51470: DOUBLE
51471: EQUAL
51472: IFTRUE 51476
51474: GO 51487
51476: POP
// b_value = 68 ; nation_american :
51477: LD_ADDR_VAR 0 14
51481: PUSH
51482: LD_INT 68
51484: ST_TO_ADDR
51485: GO 51526
51487: LD_INT 1
51489: DOUBLE
51490: EQUAL
51491: IFTRUE 51495
51493: GO 51506
51495: POP
// b_value = 5 ; nation_arabian :
51496: LD_ADDR_VAR 0 14
51500: PUSH
51501: LD_INT 5
51503: ST_TO_ADDR
51504: GO 51526
51506: LD_INT 2
51508: DOUBLE
51509: EQUAL
51510: IFTRUE 51514
51512: GO 51525
51514: POP
// b_value = 38 ; end ;
51515: LD_ADDR_VAR 0 14
51519: PUSH
51520: LD_INT 38
51522: ST_TO_ADDR
51523: GO 51526
51525: POP
// end ; b_armoury :
51526: GO 53336
51528: LD_INT 4
51530: DOUBLE
51531: EQUAL
51532: IFTRUE 51536
51534: GO 51613
51536: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51537: LD_EXP 87
51541: PUSH
51542: LD_VAR 0 9
51546: ARRAY
51547: PPUSH
51548: CALL_OW 248
51552: PUSH
51553: LD_INT 3
51555: DOUBLE
51556: EQUAL
51557: IFTRUE 51561
51559: GO 51572
51561: POP
// b_value = 66 ; nation_american :
51562: LD_ADDR_VAR 0 14
51566: PUSH
51567: LD_INT 66
51569: ST_TO_ADDR
51570: GO 51611
51572: LD_INT 1
51574: DOUBLE
51575: EQUAL
51576: IFTRUE 51580
51578: GO 51591
51580: POP
// b_value = 3 ; nation_arabian :
51581: LD_ADDR_VAR 0 14
51585: PUSH
51586: LD_INT 3
51588: ST_TO_ADDR
51589: GO 51611
51591: LD_INT 2
51593: DOUBLE
51594: EQUAL
51595: IFTRUE 51599
51597: GO 51610
51599: POP
// b_value = 36 ; end ;
51600: LD_ADDR_VAR 0 14
51604: PUSH
51605: LD_INT 36
51607: ST_TO_ADDR
51608: GO 51611
51610: POP
// end ; b_lab :
51611: GO 53336
51613: LD_INT 6
51615: DOUBLE
51616: EQUAL
51617: IFTRUE 51621
51619: GO 51698
51621: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51622: LD_EXP 87
51626: PUSH
51627: LD_VAR 0 9
51631: ARRAY
51632: PPUSH
51633: CALL_OW 248
51637: PUSH
51638: LD_INT 3
51640: DOUBLE
51641: EQUAL
51642: IFTRUE 51646
51644: GO 51657
51646: POP
// b_value = 77 ; nation_american :
51647: LD_ADDR_VAR 0 14
51651: PUSH
51652: LD_INT 77
51654: ST_TO_ADDR
51655: GO 51696
51657: LD_INT 1
51659: DOUBLE
51660: EQUAL
51661: IFTRUE 51665
51663: GO 51676
51665: POP
// b_value = 17 ; nation_arabian :
51666: LD_ADDR_VAR 0 14
51670: PUSH
51671: LD_INT 17
51673: ST_TO_ADDR
51674: GO 51696
51676: LD_INT 2
51678: DOUBLE
51679: EQUAL
51680: IFTRUE 51684
51682: GO 51695
51684: POP
// b_value = 48 ; end ;
51685: LD_ADDR_VAR 0 14
51689: PUSH
51690: LD_INT 48
51692: ST_TO_ADDR
51693: GO 51696
51695: POP
// end ; b_oil_power :
51696: GO 53336
51698: LD_INT 26
51700: DOUBLE
51701: EQUAL
51702: IFTRUE 51706
51704: GO 51783
51706: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51707: LD_EXP 87
51711: PUSH
51712: LD_VAR 0 9
51716: ARRAY
51717: PPUSH
51718: CALL_OW 248
51722: PUSH
51723: LD_INT 3
51725: DOUBLE
51726: EQUAL
51727: IFTRUE 51731
51729: GO 51742
51731: POP
// b_value = 85 ; nation_american :
51732: LD_ADDR_VAR 0 14
51736: PUSH
51737: LD_INT 85
51739: ST_TO_ADDR
51740: GO 51781
51742: LD_INT 1
51744: DOUBLE
51745: EQUAL
51746: IFTRUE 51750
51748: GO 51761
51750: POP
// b_value = 25 ; nation_arabian :
51751: LD_ADDR_VAR 0 14
51755: PUSH
51756: LD_INT 25
51758: ST_TO_ADDR
51759: GO 51781
51761: LD_INT 2
51763: DOUBLE
51764: EQUAL
51765: IFTRUE 51769
51767: GO 51780
51769: POP
// b_value = 56 ; end ;
51770: LD_ADDR_VAR 0 14
51774: PUSH
51775: LD_INT 56
51777: ST_TO_ADDR
51778: GO 51781
51780: POP
// end ; b_solar_power :
51781: GO 53336
51783: LD_INT 27
51785: DOUBLE
51786: EQUAL
51787: IFTRUE 51791
51789: GO 51869
51791: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51792: LD_EXP 87
51796: PUSH
51797: LD_VAR 0 9
51801: ARRAY
51802: PPUSH
51803: CALL_OW 248
51807: PUSH
51808: LD_INT 3
51810: DOUBLE
51811: EQUAL
51812: IFTRUE 51816
51814: GO 51828
51816: POP
// b_value = - 7 ; nation_american :
51817: LD_ADDR_VAR 0 14
51821: PUSH
51822: LD_INT 7
51824: NEG
51825: ST_TO_ADDR
51826: GO 51867
51828: LD_INT 1
51830: DOUBLE
51831: EQUAL
51832: IFTRUE 51836
51834: GO 51847
51836: POP
// b_value = 26 ; nation_arabian :
51837: LD_ADDR_VAR 0 14
51841: PUSH
51842: LD_INT 26
51844: ST_TO_ADDR
51845: GO 51867
51847: LD_INT 2
51849: DOUBLE
51850: EQUAL
51851: IFTRUE 51855
51853: GO 51866
51855: POP
// b_value = 57 ; end ;
51856: LD_ADDR_VAR 0 14
51860: PUSH
51861: LD_INT 57
51863: ST_TO_ADDR
51864: GO 51867
51866: POP
// end ; b_siberite_power :
51867: GO 53336
51869: LD_INT 28
51871: DOUBLE
51872: EQUAL
51873: IFTRUE 51877
51875: GO 51954
51877: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51878: LD_EXP 87
51882: PUSH
51883: LD_VAR 0 9
51887: ARRAY
51888: PPUSH
51889: CALL_OW 248
51893: PUSH
51894: LD_INT 3
51896: DOUBLE
51897: EQUAL
51898: IFTRUE 51902
51900: GO 51913
51902: POP
// b_value = 86 ; nation_american :
51903: LD_ADDR_VAR 0 14
51907: PUSH
51908: LD_INT 86
51910: ST_TO_ADDR
51911: GO 51952
51913: LD_INT 1
51915: DOUBLE
51916: EQUAL
51917: IFTRUE 51921
51919: GO 51932
51921: POP
// b_value = 27 ; nation_arabian :
51922: LD_ADDR_VAR 0 14
51926: PUSH
51927: LD_INT 27
51929: ST_TO_ADDR
51930: GO 51952
51932: LD_INT 2
51934: DOUBLE
51935: EQUAL
51936: IFTRUE 51940
51938: GO 51951
51940: POP
// b_value = 58 ; end ;
51941: LD_ADDR_VAR 0 14
51945: PUSH
51946: LD_INT 58
51948: ST_TO_ADDR
51949: GO 51952
51951: POP
// end ; b_oil_mine :
51952: GO 53336
51954: LD_INT 29
51956: DOUBLE
51957: EQUAL
51958: IFTRUE 51962
51960: GO 52039
51962: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
51963: LD_EXP 87
51967: PUSH
51968: LD_VAR 0 9
51972: ARRAY
51973: PPUSH
51974: CALL_OW 248
51978: PUSH
51979: LD_INT 3
51981: DOUBLE
51982: EQUAL
51983: IFTRUE 51987
51985: GO 51998
51987: POP
// b_value = 87 ; nation_american :
51988: LD_ADDR_VAR 0 14
51992: PUSH
51993: LD_INT 87
51995: ST_TO_ADDR
51996: GO 52037
51998: LD_INT 1
52000: DOUBLE
52001: EQUAL
52002: IFTRUE 52006
52004: GO 52017
52006: POP
// b_value = 28 ; nation_arabian :
52007: LD_ADDR_VAR 0 14
52011: PUSH
52012: LD_INT 28
52014: ST_TO_ADDR
52015: GO 52037
52017: LD_INT 2
52019: DOUBLE
52020: EQUAL
52021: IFTRUE 52025
52023: GO 52036
52025: POP
// b_value = 59 ; end ;
52026: LD_ADDR_VAR 0 14
52030: PUSH
52031: LD_INT 59
52033: ST_TO_ADDR
52034: GO 52037
52036: POP
// end ; b_siberite_mine :
52037: GO 53336
52039: LD_INT 30
52041: DOUBLE
52042: EQUAL
52043: IFTRUE 52047
52045: GO 52124
52047: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52048: LD_EXP 87
52052: PUSH
52053: LD_VAR 0 9
52057: ARRAY
52058: PPUSH
52059: CALL_OW 248
52063: PUSH
52064: LD_INT 3
52066: DOUBLE
52067: EQUAL
52068: IFTRUE 52072
52070: GO 52083
52072: POP
// b_value = 88 ; nation_american :
52073: LD_ADDR_VAR 0 14
52077: PUSH
52078: LD_INT 88
52080: ST_TO_ADDR
52081: GO 52122
52083: LD_INT 1
52085: DOUBLE
52086: EQUAL
52087: IFTRUE 52091
52089: GO 52102
52091: POP
// b_value = 29 ; nation_arabian :
52092: LD_ADDR_VAR 0 14
52096: PUSH
52097: LD_INT 29
52099: ST_TO_ADDR
52100: GO 52122
52102: LD_INT 2
52104: DOUBLE
52105: EQUAL
52106: IFTRUE 52110
52108: GO 52121
52110: POP
// b_value = 60 ; end ;
52111: LD_ADDR_VAR 0 14
52115: PUSH
52116: LD_INT 60
52118: ST_TO_ADDR
52119: GO 52122
52121: POP
// end ; b_breastwork :
52122: GO 53336
52124: LD_INT 31
52126: DOUBLE
52127: EQUAL
52128: IFTRUE 52132
52130: GO 52209
52132: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52133: LD_EXP 87
52137: PUSH
52138: LD_VAR 0 9
52142: ARRAY
52143: PPUSH
52144: CALL_OW 248
52148: PUSH
52149: LD_INT 3
52151: DOUBLE
52152: EQUAL
52153: IFTRUE 52157
52155: GO 52168
52157: POP
// b_value = 89 ; nation_american :
52158: LD_ADDR_VAR 0 14
52162: PUSH
52163: LD_INT 89
52165: ST_TO_ADDR
52166: GO 52207
52168: LD_INT 1
52170: DOUBLE
52171: EQUAL
52172: IFTRUE 52176
52174: GO 52187
52176: POP
// b_value = 30 ; nation_arabian :
52177: LD_ADDR_VAR 0 14
52181: PUSH
52182: LD_INT 30
52184: ST_TO_ADDR
52185: GO 52207
52187: LD_INT 2
52189: DOUBLE
52190: EQUAL
52191: IFTRUE 52195
52193: GO 52206
52195: POP
// b_value = 61 ; end ;
52196: LD_ADDR_VAR 0 14
52200: PUSH
52201: LD_INT 61
52203: ST_TO_ADDR
52204: GO 52207
52206: POP
// end ; b_bunker :
52207: GO 53336
52209: LD_INT 32
52211: DOUBLE
52212: EQUAL
52213: IFTRUE 52217
52215: GO 52294
52217: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52218: LD_EXP 87
52222: PUSH
52223: LD_VAR 0 9
52227: ARRAY
52228: PPUSH
52229: CALL_OW 248
52233: PUSH
52234: LD_INT 3
52236: DOUBLE
52237: EQUAL
52238: IFTRUE 52242
52240: GO 52253
52242: POP
// b_value = 90 ; nation_american :
52243: LD_ADDR_VAR 0 14
52247: PUSH
52248: LD_INT 90
52250: ST_TO_ADDR
52251: GO 52292
52253: LD_INT 1
52255: DOUBLE
52256: EQUAL
52257: IFTRUE 52261
52259: GO 52272
52261: POP
// b_value = 31 ; nation_arabian :
52262: LD_ADDR_VAR 0 14
52266: PUSH
52267: LD_INT 31
52269: ST_TO_ADDR
52270: GO 52292
52272: LD_INT 2
52274: DOUBLE
52275: EQUAL
52276: IFTRUE 52280
52278: GO 52291
52280: POP
// b_value = 62 ; end ;
52281: LD_ADDR_VAR 0 14
52285: PUSH
52286: LD_INT 62
52288: ST_TO_ADDR
52289: GO 52292
52291: POP
// end ; b_turret :
52292: GO 53336
52294: LD_INT 33
52296: DOUBLE
52297: EQUAL
52298: IFTRUE 52302
52300: GO 52380
52302: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52303: LD_EXP 87
52307: PUSH
52308: LD_VAR 0 9
52312: ARRAY
52313: PPUSH
52314: CALL_OW 248
52318: PUSH
52319: LD_INT 3
52321: DOUBLE
52322: EQUAL
52323: IFTRUE 52327
52325: GO 52338
52327: POP
// b_value = 91 ; nation_american :
52328: LD_ADDR_VAR 0 14
52332: PUSH
52333: LD_INT 91
52335: ST_TO_ADDR
52336: GO 52378
52338: LD_INT 1
52340: DOUBLE
52341: EQUAL
52342: IFTRUE 52346
52344: GO 52357
52346: POP
// b_value = 32 ; nation_arabian :
52347: LD_ADDR_VAR 0 14
52351: PUSH
52352: LD_INT 32
52354: ST_TO_ADDR
52355: GO 52378
52357: LD_INT 2
52359: DOUBLE
52360: EQUAL
52361: IFTRUE 52365
52363: GO 52377
52365: POP
// b_value = - 7 ; end ;
52366: LD_ADDR_VAR 0 14
52370: PUSH
52371: LD_INT 7
52373: NEG
52374: ST_TO_ADDR
52375: GO 52378
52377: POP
// end ; b_teleport :
52378: GO 53336
52380: LD_INT 34
52382: DOUBLE
52383: EQUAL
52384: IFTRUE 52388
52386: GO 52467
52388: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52389: LD_EXP 87
52393: PUSH
52394: LD_VAR 0 9
52398: ARRAY
52399: PPUSH
52400: CALL_OW 248
52404: PUSH
52405: LD_INT 3
52407: DOUBLE
52408: EQUAL
52409: IFTRUE 52413
52411: GO 52424
52413: POP
// b_value = 92 ; nation_american :
52414: LD_ADDR_VAR 0 14
52418: PUSH
52419: LD_INT 92
52421: ST_TO_ADDR
52422: GO 52465
52424: LD_INT 1
52426: DOUBLE
52427: EQUAL
52428: IFTRUE 52432
52430: GO 52444
52432: POP
// b_value = - 7 ; nation_arabian :
52433: LD_ADDR_VAR 0 14
52437: PUSH
52438: LD_INT 7
52440: NEG
52441: ST_TO_ADDR
52442: GO 52465
52444: LD_INT 2
52446: DOUBLE
52447: EQUAL
52448: IFTRUE 52452
52450: GO 52464
52452: POP
// b_value = - 7 ; end ;
52453: LD_ADDR_VAR 0 14
52457: PUSH
52458: LD_INT 7
52460: NEG
52461: ST_TO_ADDR
52462: GO 52465
52464: POP
// end ; b_control_tower :
52465: GO 53336
52467: LD_INT 36
52469: DOUBLE
52470: EQUAL
52471: IFTRUE 52475
52473: GO 52554
52475: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52476: LD_EXP 87
52480: PUSH
52481: LD_VAR 0 9
52485: ARRAY
52486: PPUSH
52487: CALL_OW 248
52491: PUSH
52492: LD_INT 3
52494: DOUBLE
52495: EQUAL
52496: IFTRUE 52500
52498: GO 52512
52500: POP
// b_value = - 7 ; nation_american :
52501: LD_ADDR_VAR 0 14
52505: PUSH
52506: LD_INT 7
52508: NEG
52509: ST_TO_ADDR
52510: GO 52552
52512: LD_INT 1
52514: DOUBLE
52515: EQUAL
52516: IFTRUE 52520
52518: GO 52531
52520: POP
// b_value = 94 ; nation_arabian :
52521: LD_ADDR_VAR 0 14
52525: PUSH
52526: LD_INT 94
52528: ST_TO_ADDR
52529: GO 52552
52531: LD_INT 2
52533: DOUBLE
52534: EQUAL
52535: IFTRUE 52539
52537: GO 52551
52539: POP
// b_value = - 7 ; end ;
52540: LD_ADDR_VAR 0 14
52544: PUSH
52545: LD_INT 7
52547: NEG
52548: ST_TO_ADDR
52549: GO 52552
52551: POP
// end ; b_ext_track :
52552: GO 53336
52554: LD_INT 16
52556: DOUBLE
52557: EQUAL
52558: IFTRUE 52562
52560: GO 52639
52562: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52563: LD_EXP 87
52567: PUSH
52568: LD_VAR 0 9
52572: ARRAY
52573: PPUSH
52574: CALL_OW 248
52578: PUSH
52579: LD_INT 3
52581: DOUBLE
52582: EQUAL
52583: IFTRUE 52587
52585: GO 52598
52587: POP
// b_value = 70 ; nation_american :
52588: LD_ADDR_VAR 0 14
52592: PUSH
52593: LD_INT 70
52595: ST_TO_ADDR
52596: GO 52637
52598: LD_INT 1
52600: DOUBLE
52601: EQUAL
52602: IFTRUE 52606
52604: GO 52617
52606: POP
// b_value = 7 ; nation_arabian :
52607: LD_ADDR_VAR 0 14
52611: PUSH
52612: LD_INT 7
52614: ST_TO_ADDR
52615: GO 52637
52617: LD_INT 2
52619: DOUBLE
52620: EQUAL
52621: IFTRUE 52625
52623: GO 52636
52625: POP
// b_value = 40 ; end ;
52626: LD_ADDR_VAR 0 14
52630: PUSH
52631: LD_INT 40
52633: ST_TO_ADDR
52634: GO 52637
52636: POP
// end ; b_ext_gun :
52637: GO 53336
52639: LD_INT 17
52641: DOUBLE
52642: EQUAL
52643: IFTRUE 52647
52645: GO 52724
52647: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52648: LD_EXP 87
52652: PUSH
52653: LD_VAR 0 9
52657: ARRAY
52658: PPUSH
52659: CALL_OW 248
52663: PUSH
52664: LD_INT 3
52666: DOUBLE
52667: EQUAL
52668: IFTRUE 52672
52670: GO 52683
52672: POP
// b_value = 71 ; nation_american :
52673: LD_ADDR_VAR 0 14
52677: PUSH
52678: LD_INT 71
52680: ST_TO_ADDR
52681: GO 52722
52683: LD_INT 1
52685: DOUBLE
52686: EQUAL
52687: IFTRUE 52691
52689: GO 52702
52691: POP
// b_value = 8 ; nation_arabian :
52692: LD_ADDR_VAR 0 14
52696: PUSH
52697: LD_INT 8
52699: ST_TO_ADDR
52700: GO 52722
52702: LD_INT 2
52704: DOUBLE
52705: EQUAL
52706: IFTRUE 52710
52708: GO 52721
52710: POP
// b_value = 41 ; end ;
52711: LD_ADDR_VAR 0 14
52715: PUSH
52716: LD_INT 41
52718: ST_TO_ADDR
52719: GO 52722
52721: POP
// end ; b_ext_rocket :
52722: GO 53336
52724: LD_INT 18
52726: DOUBLE
52727: EQUAL
52728: IFTRUE 52732
52730: GO 52809
52732: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52733: LD_EXP 87
52737: PUSH
52738: LD_VAR 0 9
52742: ARRAY
52743: PPUSH
52744: CALL_OW 248
52748: PUSH
52749: LD_INT 3
52751: DOUBLE
52752: EQUAL
52753: IFTRUE 52757
52755: GO 52768
52757: POP
// b_value = 72 ; nation_american :
52758: LD_ADDR_VAR 0 14
52762: PUSH
52763: LD_INT 72
52765: ST_TO_ADDR
52766: GO 52807
52768: LD_INT 1
52770: DOUBLE
52771: EQUAL
52772: IFTRUE 52776
52774: GO 52787
52776: POP
// b_value = 9 ; nation_arabian :
52777: LD_ADDR_VAR 0 14
52781: PUSH
52782: LD_INT 9
52784: ST_TO_ADDR
52785: GO 52807
52787: LD_INT 2
52789: DOUBLE
52790: EQUAL
52791: IFTRUE 52795
52793: GO 52806
52795: POP
// b_value = 42 ; end ;
52796: LD_ADDR_VAR 0 14
52800: PUSH
52801: LD_INT 42
52803: ST_TO_ADDR
52804: GO 52807
52806: POP
// end ; b_ext_noncombat :
52807: GO 53336
52809: LD_INT 19
52811: DOUBLE
52812: EQUAL
52813: IFTRUE 52817
52815: GO 52895
52817: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52818: LD_EXP 87
52822: PUSH
52823: LD_VAR 0 9
52827: ARRAY
52828: PPUSH
52829: CALL_OW 248
52833: PUSH
52834: LD_INT 3
52836: DOUBLE
52837: EQUAL
52838: IFTRUE 52842
52840: GO 52853
52842: POP
// b_value = 73 ; nation_american :
52843: LD_ADDR_VAR 0 14
52847: PUSH
52848: LD_INT 73
52850: ST_TO_ADDR
52851: GO 52893
52853: LD_INT 1
52855: DOUBLE
52856: EQUAL
52857: IFTRUE 52861
52859: GO 52872
52861: POP
// b_value = 10 ; nation_arabian :
52862: LD_ADDR_VAR 0 14
52866: PUSH
52867: LD_INT 10
52869: ST_TO_ADDR
52870: GO 52893
52872: LD_INT 2
52874: DOUBLE
52875: EQUAL
52876: IFTRUE 52880
52878: GO 52892
52880: POP
// b_value = - 7 ; end ;
52881: LD_ADDR_VAR 0 14
52885: PUSH
52886: LD_INT 7
52888: NEG
52889: ST_TO_ADDR
52890: GO 52893
52892: POP
// end ; b_ext_radar :
52893: GO 53336
52895: LD_INT 20
52897: DOUBLE
52898: EQUAL
52899: IFTRUE 52903
52901: GO 52981
52903: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52904: LD_EXP 87
52908: PUSH
52909: LD_VAR 0 9
52913: ARRAY
52914: PPUSH
52915: CALL_OW 248
52919: PUSH
52920: LD_INT 3
52922: DOUBLE
52923: EQUAL
52924: IFTRUE 52928
52926: GO 52940
52928: POP
// b_value = - 7 ; nation_american :
52929: LD_ADDR_VAR 0 14
52933: PUSH
52934: LD_INT 7
52936: NEG
52937: ST_TO_ADDR
52938: GO 52979
52940: LD_INT 1
52942: DOUBLE
52943: EQUAL
52944: IFTRUE 52948
52946: GO 52959
52948: POP
// b_value = 11 ; nation_arabian :
52949: LD_ADDR_VAR 0 14
52953: PUSH
52954: LD_INT 11
52956: ST_TO_ADDR
52957: GO 52979
52959: LD_INT 2
52961: DOUBLE
52962: EQUAL
52963: IFTRUE 52967
52965: GO 52978
52967: POP
// b_value = 44 ; end ;
52968: LD_ADDR_VAR 0 14
52972: PUSH
52973: LD_INT 44
52975: ST_TO_ADDR
52976: GO 52979
52978: POP
// end ; b_ext_siberium :
52979: GO 53336
52981: LD_INT 21
52983: DOUBLE
52984: EQUAL
52985: IFTRUE 52989
52987: GO 53066
52989: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
52990: LD_EXP 87
52994: PUSH
52995: LD_VAR 0 9
52999: ARRAY
53000: PPUSH
53001: CALL_OW 248
53005: PUSH
53006: LD_INT 3
53008: DOUBLE
53009: EQUAL
53010: IFTRUE 53014
53012: GO 53025
53014: POP
// b_value = 75 ; nation_american :
53015: LD_ADDR_VAR 0 14
53019: PUSH
53020: LD_INT 75
53022: ST_TO_ADDR
53023: GO 53064
53025: LD_INT 1
53027: DOUBLE
53028: EQUAL
53029: IFTRUE 53033
53031: GO 53044
53033: POP
// b_value = 12 ; nation_arabian :
53034: LD_ADDR_VAR 0 14
53038: PUSH
53039: LD_INT 12
53041: ST_TO_ADDR
53042: GO 53064
53044: LD_INT 2
53046: DOUBLE
53047: EQUAL
53048: IFTRUE 53052
53050: GO 53063
53052: POP
// b_value = 45 ; end ;
53053: LD_ADDR_VAR 0 14
53057: PUSH
53058: LD_INT 45
53060: ST_TO_ADDR
53061: GO 53064
53063: POP
// end ; b_ext_stitch :
53064: GO 53336
53066: LD_INT 23
53068: DOUBLE
53069: EQUAL
53070: IFTRUE 53074
53072: GO 53153
53074: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
53075: LD_EXP 87
53079: PUSH
53080: LD_VAR 0 9
53084: ARRAY
53085: PPUSH
53086: CALL_OW 248
53090: PUSH
53091: LD_INT 3
53093: DOUBLE
53094: EQUAL
53095: IFTRUE 53099
53097: GO 53111
53099: POP
// b_value = - 7 ; nation_american :
53100: LD_ADDR_VAR 0 14
53104: PUSH
53105: LD_INT 7
53107: NEG
53108: ST_TO_ADDR
53109: GO 53151
53111: LD_INT 1
53113: DOUBLE
53114: EQUAL
53115: IFTRUE 53119
53117: GO 53131
53119: POP
// b_value = - 7 ; nation_arabian :
53120: LD_ADDR_VAR 0 14
53124: PUSH
53125: LD_INT 7
53127: NEG
53128: ST_TO_ADDR
53129: GO 53151
53131: LD_INT 2
53133: DOUBLE
53134: EQUAL
53135: IFTRUE 53139
53137: GO 53150
53139: POP
// b_value = 43 ; end ;
53140: LD_ADDR_VAR 0 14
53144: PUSH
53145: LD_INT 43
53147: ST_TO_ADDR
53148: GO 53151
53150: POP
// end ; b_ext_computer :
53151: GO 53336
53153: LD_INT 24
53155: DOUBLE
53156: EQUAL
53157: IFTRUE 53161
53159: GO 53239
53161: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
53162: LD_EXP 87
53166: PUSH
53167: LD_VAR 0 9
53171: ARRAY
53172: PPUSH
53173: CALL_OW 248
53177: PUSH
53178: LD_INT 3
53180: DOUBLE
53181: EQUAL
53182: IFTRUE 53186
53184: GO 53197
53186: POP
// b_value = 76 ; nation_american :
53187: LD_ADDR_VAR 0 14
53191: PUSH
53192: LD_INT 76
53194: ST_TO_ADDR
53195: GO 53237
53197: LD_INT 1
53199: DOUBLE
53200: EQUAL
53201: IFTRUE 53205
53203: GO 53216
53205: POP
// b_value = 15 ; nation_arabian :
53206: LD_ADDR_VAR 0 14
53210: PUSH
53211: LD_INT 15
53213: ST_TO_ADDR
53214: GO 53237
53216: LD_INT 2
53218: DOUBLE
53219: EQUAL
53220: IFTRUE 53224
53222: GO 53236
53224: POP
// b_value = - 7 ; end ;
53225: LD_ADDR_VAR 0 14
53229: PUSH
53230: LD_INT 7
53232: NEG
53233: ST_TO_ADDR
53234: GO 53237
53236: POP
// end ; b_ext_laser :
53237: GO 53336
53239: LD_INT 25
53241: DOUBLE
53242: EQUAL
53243: IFTRUE 53247
53245: GO 53326
53247: POP
// begin case GetNation ( ai_building_constructor [ base ] ) of nation_russian :
53248: LD_EXP 87
53252: PUSH
53253: LD_VAR 0 9
53257: ARRAY
53258: PPUSH
53259: CALL_OW 248
53263: PUSH
53264: LD_INT 3
53266: DOUBLE
53267: EQUAL
53268: IFTRUE 53272
53270: GO 53284
53272: POP
// b_value = - 7 ; nation_american :
53273: LD_ADDR_VAR 0 14
53277: PUSH
53278: LD_INT 7
53280: NEG
53281: ST_TO_ADDR
53282: GO 53324
53284: LD_INT 1
53286: DOUBLE
53287: EQUAL
53288: IFTRUE 53292
53290: GO 53303
53292: POP
// b_value = 16 ; nation_arabian :
53293: LD_ADDR_VAR 0 14
53297: PUSH
53298: LD_INT 16
53300: ST_TO_ADDR
53301: GO 53324
53303: LD_INT 2
53305: DOUBLE
53306: EQUAL
53307: IFTRUE 53311
53309: GO 53323
53311: POP
// b_value = - 7 ; end ;
53312: LD_ADDR_VAR 0 14
53316: PUSH
53317: LD_INT 7
53319: NEG
53320: ST_TO_ADDR
53321: GO 53324
53323: POP
// end ; else
53324: GO 53336
53326: POP
// b_value = - 42 ; end ;
53327: LD_ADDR_VAR 0 14
53331: PUSH
53332: LD_INT 42
53334: NEG
53335: ST_TO_ADDR
// if ai_upcoming_building_data [ base ] [ 1 ] > 0 and ai_upcoming_building_data [ base ] [ 2 ] > 0 and b_value > 0 and ai_upcoming_building_data [ base ] [ 3 ] > 0 then
53336: LD_EXP 90
53340: PUSH
53341: LD_VAR 0 9
53345: ARRAY
53346: PUSH
53347: LD_INT 1
53349: ARRAY
53350: PUSH
53351: LD_INT 0
53353: GREATER
53354: PUSH
53355: LD_EXP 90
53359: PUSH
53360: LD_VAR 0 9
53364: ARRAY
53365: PUSH
53366: LD_INT 2
53368: ARRAY
53369: PUSH
53370: LD_INT 0
53372: GREATER
53373: AND
53374: PUSH
53375: LD_VAR 0 14
53379: PUSH
53380: LD_INT 0
53382: GREATER
53383: AND
53384: PUSH
53385: LD_EXP 90
53389: PUSH
53390: LD_VAR 0 9
53394: ARRAY
53395: PUSH
53396: LD_INT 3
53398: ARRAY
53399: PUSH
53400: LD_INT 0
53402: GREATER
53403: AND
53404: IFFALSE 53492
// SetTaskList ( ai_building_constructor [ base ] , [ [ B , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , 0 , b_value , ai_upcoming_building_data [ base ] [ 3 ] , 0 ] ] ) ;
53406: LD_EXP 87
53410: PUSH
53411: LD_VAR 0 9
53415: ARRAY
53416: PPUSH
53417: LD_STRING B
53419: PUSH
53420: LD_EXP 90
53424: PUSH
53425: LD_VAR 0 9
53429: ARRAY
53430: PUSH
53431: LD_INT 1
53433: ARRAY
53434: PUSH
53435: LD_EXP 90
53439: PUSH
53440: LD_VAR 0 9
53444: ARRAY
53445: PUSH
53446: LD_INT 2
53448: ARRAY
53449: PUSH
53450: LD_INT 0
53452: PUSH
53453: LD_VAR 0 14
53457: PUSH
53458: LD_EXP 90
53462: PUSH
53463: LD_VAR 0 9
53467: ARRAY
53468: PUSH
53469: LD_INT 3
53471: ARRAY
53472: PUSH
53473: LD_INT 0
53475: PUSH
53476: EMPTY
53477: LIST
53478: LIST
53479: LIST
53480: LIST
53481: LIST
53482: LIST
53483: LIST
53484: PUSH
53485: EMPTY
53486: LIST
53487: PPUSH
53488: CALL_OW 446
// end ; b_depot :
53492: GO 54017
53494: LD_INT 0
53496: DOUBLE
53497: EQUAL
53498: IFTRUE 53502
53500: GO 53579
53502: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
53503: LD_ADDR_VAR 0 6
53507: PUSH
53508: LD_EXP 90
53512: PUSH
53513: LD_VAR 0 9
53517: ARRAY
53518: PUSH
53519: LD_INT 1
53521: ARRAY
53522: PPUSH
53523: LD_EXP 90
53527: PUSH
53528: LD_VAR 0 9
53532: ARRAY
53533: PUSH
53534: LD_INT 2
53536: ARRAY
53537: PPUSH
53538: CALL_OW 428
53542: ST_TO_ADDR
// ComUpgrade ( temp_unit ) ;
53543: LD_VAR 0 6
53547: PPUSH
53548: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
53552: LD_ADDR_EXP 84
53556: PUSH
53557: LD_EXP 84
53561: PPUSH
53562: LD_VAR 0 9
53566: PPUSH
53567: LD_VAR 0 6
53571: PPUSH
53572: CALL_OW 1
53576: ST_TO_ADDR
// end ; b_workshop :
53577: GO 54017
53579: LD_INT 2
53581: DOUBLE
53582: EQUAL
53583: IFTRUE 53587
53585: GO 53664
53587: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
53588: LD_ADDR_VAR 0 6
53592: PUSH
53593: LD_EXP 90
53597: PUSH
53598: LD_VAR 0 9
53602: ARRAY
53603: PUSH
53604: LD_INT 1
53606: ARRAY
53607: PPUSH
53608: LD_EXP 90
53612: PUSH
53613: LD_VAR 0 9
53617: ARRAY
53618: PUSH
53619: LD_INT 2
53621: ARRAY
53622: PPUSH
53623: CALL_OW 428
53627: ST_TO_ADDR
// ComUpgrade ( temp_unit ) ;
53628: LD_VAR 0 6
53632: PPUSH
53633: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
53637: LD_ADDR_EXP 84
53641: PUSH
53642: LD_EXP 84
53646: PPUSH
53647: LD_VAR 0 9
53651: PPUSH
53652: LD_VAR 0 6
53656: PPUSH
53657: CALL_OW 1
53661: ST_TO_ADDR
// end ; b_lab , b_lab_half :
53662: GO 54017
53664: LD_INT 6
53666: DOUBLE
53667: EQUAL
53668: IFTRUE 53678
53670: LD_INT 7
53672: DOUBLE
53673: EQUAL
53674: IFTRUE 53678
53676: GO 53931
53678: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
53679: LD_ADDR_VAR 0 6
53683: PUSH
53684: LD_EXP 90
53688: PUSH
53689: LD_VAR 0 9
53693: ARRAY
53694: PUSH
53695: LD_INT 1
53697: ARRAY
53698: PPUSH
53699: LD_EXP 90
53703: PUSH
53704: LD_VAR 0 9
53708: ARRAY
53709: PUSH
53710: LD_INT 2
53712: ARRAY
53713: PPUSH
53714: CALL_OW 428
53718: ST_TO_ADDR
// if ai_upcoming_building_data [ base ] [ 5 ] <> b_lab_basic and not ai_upcoming_building_data [ base ] [ 5 ] in [ GetLabKind ( temp_unit , 1 ) , GetLabKind ( temp_unit , 2 ) ] then
53719: LD_EXP 90
53723: PUSH
53724: LD_VAR 0 9
53728: ARRAY
53729: PUSH
53730: LD_INT 5
53732: ARRAY
53733: PUSH
53734: LD_INT 9
53736: NONEQUAL
53737: PUSH
53738: LD_EXP 90
53742: PUSH
53743: LD_VAR 0 9
53747: ARRAY
53748: PUSH
53749: LD_INT 5
53751: ARRAY
53752: PUSH
53753: LD_VAR 0 6
53757: PPUSH
53758: LD_INT 1
53760: PPUSH
53761: CALL_OW 268
53765: PUSH
53766: LD_VAR 0 6
53770: PPUSH
53771: LD_INT 2
53773: PPUSH
53774: CALL_OW 268
53778: PUSH
53779: EMPTY
53780: LIST
53781: LIST
53782: IN
53783: NOT
53784: AND
53785: IFFALSE 53813
// begin ComUpgradeLab ( temp_unit , ai_upcoming_building_data [ base ] [ 5 ] ) ;
53787: LD_VAR 0 6
53791: PPUSH
53792: LD_EXP 90
53796: PUSH
53797: LD_VAR 0 9
53801: ARRAY
53802: PUSH
53803: LD_INT 5
53805: ARRAY
53806: PPUSH
53807: CALL_OW 147
// end else
53811: GO 53904
// if ai_upcoming_building_data [ base ] [ 6 ] <> b_lab_basic then
53813: LD_EXP 90
53817: PUSH
53818: LD_VAR 0 9
53822: ARRAY
53823: PUSH
53824: LD_INT 6
53826: ARRAY
53827: PUSH
53828: LD_INT 9
53830: NONEQUAL
53831: IFFALSE 53859
// begin ComUpgradeLab ( temp_unit , ai_upcoming_building_data [ base ] [ 6 ] ) ;
53833: LD_VAR 0 6
53837: PPUSH
53838: LD_EXP 90
53842: PUSH
53843: LD_VAR 0 9
53847: ARRAY
53848: PUSH
53849: LD_INT 6
53851: ARRAY
53852: PPUSH
53853: CALL_OW 147
// end else
53857: GO 53904
// begin ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
53859: LD_ADDR_EXP 87
53863: PUSH
53864: LD_EXP 87
53868: PPUSH
53869: LD_VAR 0 9
53873: PPUSH
53874: LD_INT 0
53876: PPUSH
53877: CALL_OW 1
53881: ST_TO_ADDR
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
53882: LD_ADDR_EXP 90
53886: PUSH
53887: LD_EXP 90
53891: PPUSH
53892: LD_VAR 0 9
53896: PPUSH
53897: EMPTY
53898: PPUSH
53899: CALL_OW 1
53903: ST_TO_ADDR
// end ; ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
53904: LD_ADDR_EXP 84
53908: PUSH
53909: LD_EXP 84
53913: PPUSH
53914: LD_VAR 0 9
53918: PPUSH
53919: LD_VAR 0 6
53923: PPUSH
53924: CALL_OW 1
53928: ST_TO_ADDR
// end ; b_armoury :
53929: GO 54017
53931: LD_INT 4
53933: DOUBLE
53934: EQUAL
53935: IFTRUE 53939
53937: GO 54016
53939: POP
// begin temp_unit = HexInfo ( ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) ;
53940: LD_ADDR_VAR 0 6
53944: PUSH
53945: LD_EXP 90
53949: PUSH
53950: LD_VAR 0 9
53954: ARRAY
53955: PUSH
53956: LD_INT 1
53958: ARRAY
53959: PPUSH
53960: LD_EXP 90
53964: PUSH
53965: LD_VAR 0 9
53969: ARRAY
53970: PUSH
53971: LD_INT 2
53973: ARRAY
53974: PPUSH
53975: CALL_OW 428
53979: ST_TO_ADDR
// ComUpgrade ( temp_unit ) ;
53980: LD_VAR 0 6
53984: PPUSH
53985: CALL_OW 146
// ai_building_under_construction = Replace ( ai_building_under_construction , base , temp_unit ) ;
53989: LD_ADDR_EXP 84
53993: PUSH
53994: LD_EXP 84
53998: PPUSH
53999: LD_VAR 0 9
54003: PPUSH
54004: LD_VAR 0 6
54008: PPUSH
54009: CALL_OW 1
54013: ST_TO_ADDR
// end ; end ; end ;
54014: GO 54017
54016: POP
// end else
54017: GO 54277
// if UnitsInside ( ai_vehicle_being_moved [ base ] ) > 0 then
54019: LD_EXP 88
54023: PUSH
54024: LD_VAR 0 9
54028: ARRAY
54029: PPUSH
54030: CALL_OW 313
54034: PUSH
54035: LD_INT 0
54037: GREATER
54038: IFFALSE 54177
// begin if GetDistUnitXY ( ai_vehicle_being_moved [ base ] , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] ) <= away_dist then
54040: LD_EXP 88
54044: PUSH
54045: LD_VAR 0 9
54049: ARRAY
54050: PPUSH
54051: LD_EXP 90
54055: PUSH
54056: LD_VAR 0 9
54060: ARRAY
54061: PUSH
54062: LD_INT 1
54064: ARRAY
54065: PPUSH
54066: LD_EXP 90
54070: PUSH
54071: LD_VAR 0 9
54075: ARRAY
54076: PUSH
54077: LD_INT 2
54079: ARRAY
54080: PPUSH
54081: CALL_OW 297
54085: PUSH
54086: LD_VAR 0 7
54090: LESSEQUAL
54091: IFFALSE 54152
// AI_GetAwayFromXY ( ai_vehicle_being_moved [ base ] , ai_upcoming_building_data [ base ] [ 1 ] , ai_upcoming_building_data [ base ] [ 2 ] , away_dist + 2 , false ) else
54093: LD_EXP 88
54097: PUSH
54098: LD_VAR 0 9
54102: ARRAY
54103: PPUSH
54104: LD_EXP 90
54108: PUSH
54109: LD_VAR 0 9
54113: ARRAY
54114: PUSH
54115: LD_INT 1
54117: ARRAY
54118: PPUSH
54119: LD_EXP 90
54123: PUSH
54124: LD_VAR 0 9
54128: ARRAY
54129: PUSH
54130: LD_INT 2
54132: ARRAY
54133: PPUSH
54134: LD_VAR 0 7
54138: PUSH
54139: LD_INT 2
54141: PLUS
54142: PPUSH
54143: LD_INT 0
54145: PPUSH
54146: CALL 84024 0 5
54150: GO 54175
// ai_vehicle_being_moved = Replace ( ai_vehicle_being_moved , base , 0 ) ;
54152: LD_ADDR_EXP 88
54156: PUSH
54157: LD_EXP 88
54161: PPUSH
54162: LD_VAR 0 9
54166: PPUSH
54167: LD_INT 0
54169: PPUSH
54170: CALL_OW 1
54174: ST_TO_ADDR
// end else
54175: GO 54277
// case GetType ( IsInUnit ( ai_building_constructor [ base ] ) ) of unit_building :
54177: LD_EXP 87
54181: PUSH
54182: LD_VAR 0 9
54186: ARRAY
54187: PPUSH
54188: CALL_OW 310
54192: PPUSH
54193: CALL_OW 247
54197: PUSH
54198: LD_INT 3
54200: DOUBLE
54201: EQUAL
54202: IFTRUE 54206
54204: GO 54224
54206: POP
// ComExitBuilding ( ai_building_constructor [ base ] ) ; unit_vehicle :
54207: LD_EXP 87
54211: PUSH
54212: LD_VAR 0 9
54216: ARRAY
54217: PPUSH
54218: CALL_OW 122
54222: GO 54277
54224: LD_INT 2
54226: DOUBLE
54227: EQUAL
54228: IFTRUE 54232
54230: GO 54250
54232: POP
// ComExitVehicle ( ai_building_constructor [ base ] ) ; else
54233: LD_EXP 87
54237: PUSH
54238: LD_VAR 0 9
54242: ARRAY
54243: PPUSH
54244: CALL_OW 121
54248: GO 54277
54250: POP
// ComEnterUnit ( ai_building_constructor [ base ] , ai_vehicle_being_moved [ base ] ) ; end ;
54251: LD_EXP 87
54255: PUSH
54256: LD_VAR 0 9
54260: ARRAY
54261: PPUSH
54262: LD_EXP 88
54266: PUSH
54267: LD_VAR 0 9
54271: ARRAY
54272: PPUSH
54273: CALL_OW 120
// end ; end ; end ; if ( engineers_list ^ apemen_engineers_list ) > 0 and ai_depots [ base ] [ 1 ] > 0 then
54277: LD_VAR 0 3
54281: PUSH
54282: LD_VAR 0 10
54286: ADD
54287: PUSH
54288: LD_INT 0
54290: GREATER
54291: PUSH
54292: LD_EXP 59
54296: PUSH
54297: LD_VAR 0 9
54301: ARRAY
54302: PUSH
54303: LD_INT 1
54305: ARRAY
54306: PUSH
54307: LD_INT 0
54309: GREATER
54310: AND
54311: IFFALSE 54465
// begin temp_list = GetListOfCratesInArea ( GetBaseArea ( base ) ) ;
54313: LD_ADDR_VAR 0 4
54317: PUSH
54318: LD_VAR 0 9
54322: PPUSH
54323: CALL 40400 0 1
54327: PPUSH
54328: CALL_OW 435
54332: ST_TO_ADDR
// while temp_list > 0 do
54333: LD_VAR 0 4
54337: PUSH
54338: LD_INT 0
54340: GREATER
54341: IFFALSE 54465
// begin if GetResourceTypeXY ( temp_list [ 1 ] , temp_list [ 2 ] ) = mat_artifact then
54343: LD_VAR 0 4
54347: PUSH
54348: LD_INT 1
54350: ARRAY
54351: PPUSH
54352: LD_VAR 0 4
54356: PUSH
54357: LD_INT 2
54359: ARRAY
54360: PPUSH
54361: CALL_OW 283
54365: PUSH
54366: LD_INT 4
54368: EQUAL
54369: IFFALSE 54409
// begin temp_list = Delete ( temp_list , 1 ) ;
54371: LD_ADDR_VAR 0 4
54375: PUSH
54376: LD_VAR 0 4
54380: PPUSH
54381: LD_INT 1
54383: PPUSH
54384: CALL_OW 3
54388: ST_TO_ADDR
// temp_list = Delete ( temp_list , 1 ) ;
54389: LD_ADDR_VAR 0 4
54393: PUSH
54394: LD_VAR 0 4
54398: PPUSH
54399: LD_INT 1
54401: PPUSH
54402: CALL_OW 3
54406: ST_TO_ADDR
// continue ;
54407: GO 54333
// end ; ComCollect ( GetHumansOutOfUnits ( engineers_list ^ apemen_engineers_list ) , temp_list [ 1 ] , temp_list [ 2 ] ) ;
54409: LD_VAR 0 3
54413: PUSH
54414: LD_VAR 0 10
54418: ADD
54419: PPUSH
54420: CALL 55807 0 1
54424: PPUSH
54425: LD_VAR 0 4
54429: PUSH
54430: LD_INT 1
54432: ARRAY
54433: PPUSH
54434: LD_VAR 0 4
54438: PUSH
54439: LD_INT 2
54441: ARRAY
54442: PPUSH
54443: CALL_OW 117
// engineers_list = [ ] ;
54447: LD_ADDR_VAR 0 3
54451: PUSH
54452: EMPTY
54453: ST_TO_ADDR
// apemen_engineers_list = [ ] ;
54454: LD_ADDR_VAR 0 10
54458: PUSH
54459: EMPTY
54460: ST_TO_ADDR
// break ;
54461: GO 54465
// end ;
54463: GO 54333
// end ; end ; DistributeHumansToBuildings ( base , engineers_list ^ apemen_engineers_list , UnitFilter ( ai_depots [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_engineer , [ 5 , 5 , 5 ] [ base ] , false , false ) ;
54465: LD_VAR 0 9
54469: PPUSH
54470: LD_VAR 0 3
54474: PUSH
54475: LD_VAR 0 10
54479: ADD
54480: PPUSH
54481: LD_EXP 59
54485: PUSH
54486: LD_VAR 0 9
54490: ARRAY
54491: PPUSH
54492: LD_INT 50
54494: PUSH
54495: EMPTY
54496: LIST
54497: PUSH
54498: LD_INT 3
54500: PUSH
54501: LD_INT 57
54503: PUSH
54504: EMPTY
54505: LIST
54506: PUSH
54507: EMPTY
54508: LIST
54509: LIST
54510: PUSH
54511: EMPTY
54512: LIST
54513: LIST
54514: PPUSH
54515: CALL_OW 72
54519: PPUSH
54520: LD_INT 2
54522: PPUSH
54523: LD_INT 5
54525: PUSH
54526: LD_INT 5
54528: PUSH
54529: LD_INT 5
54531: PUSH
54532: EMPTY
54533: LIST
54534: LIST
54535: LIST
54536: PUSH
54537: LD_VAR 0 9
54541: ARRAY
54542: PPUSH
54543: LD_INT 0
54545: PPUSH
54546: LD_INT 0
54548: PPUSH
54549: CALL 45286 0 7
// if crane_usable then
54553: LD_VAR 0 13
54557: IFFALSE 54685
// if not IsInArea ( ai_crane [ base ] , GetBaseArea ( base ) ) then
54559: LD_EXP 98
54563: PUSH
54564: LD_VAR 0 9
54568: ARRAY
54569: PPUSH
54570: LD_VAR 0 9
54574: PPUSH
54575: CALL 40400 0 1
54579: PPUSH
54580: CALL_OW 308
54584: NOT
54585: IFFALSE 54634
// ComMoveXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) else
54587: LD_EXP 98
54591: PUSH
54592: LD_VAR 0 9
54596: ARRAY
54597: PPUSH
54598: LD_EXP 83
54602: PUSH
54603: LD_VAR 0 9
54607: ARRAY
54608: PUSH
54609: LD_INT 1
54611: ARRAY
54612: PPUSH
54613: LD_EXP 83
54617: PUSH
54618: LD_VAR 0 9
54622: ARRAY
54623: PUSH
54624: LD_INT 2
54626: ARRAY
54627: PPUSH
54628: CALL_OW 111
54632: GO 54685
// if GetLives ( ai_crane [ base ] ) < 1000 and not under_attack then
54634: LD_EXP 98
54638: PUSH
54639: LD_VAR 0 9
54643: ARRAY
54644: PPUSH
54645: CALL_OW 256
54649: PUSH
54650: LD_INT 1000
54652: LESS
54653: PUSH
54654: LD_VAR 0 20
54658: NOT
54659: AND
54660: IFFALSE 54685
// ai_crane_is_being_repaired = Replace ( ai_crane_is_being_repaired , base , true ) ;
54662: LD_ADDR_EXP 101
54666: PUSH
54667: LD_EXP 101
54671: PPUSH
54672: LD_VAR 0 9
54676: PPUSH
54677: LD_INT 1
54679: PPUSH
54680: CALL_OW 1
54684: ST_TO_ADDR
// end ;
54685: GO 46846
54687: POP
54688: POP
// until false ;
54689: LD_INT 0
54691: IFFALSE 46807
// end ;
54693: PPOPN 23
54695: END
// on BuildingStarted ( building , builder ) do var side , temp_list , base , i ;
54696: LD_INT 0
54698: PPUSH
54699: PPUSH
54700: PPUSH
54701: PPUSH
// begin side = GetSide ( building ) ;
54702: LD_ADDR_VAR 0 3
54706: PUSH
54707: LD_VAR 0 1
54711: PPUSH
54712: CALL_OW 255
54716: ST_TO_ADDR
// if side = you then
54717: LD_VAR 0 3
54721: PUSH
54722: LD_EXP 2
54726: EQUAL
54727: IFFALSE 54731
// exit ;
54729: GO 54855
// base = FindBase ( building ) ;
54731: LD_ADDR_VAR 0 5
54735: PUSH
54736: LD_VAR 0 1
54740: PPUSH
54741: CALL 40619 0 1
54745: ST_TO_ADDR
// if base = 0 then
54746: LD_VAR 0 5
54750: PUSH
54751: LD_INT 0
54753: EQUAL
54754: IFFALSE 54758
// exit ;
54756: GO 54855
// ai_building_constructor = Replace ( ai_building_constructor , base , 0 ) ;
54758: LD_ADDR_EXP 87
54762: PUSH
54763: LD_EXP 87
54767: PPUSH
54768: LD_VAR 0 5
54772: PPUSH
54773: LD_INT 0
54775: PPUSH
54776: CALL_OW 1
54780: ST_TO_ADDR
// ai_vehicles_having_been_moved = Replace ( ai_vehicles_having_been_moved , base , [ ] ) ;
54781: LD_ADDR_EXP 89
54785: PUSH
54786: LD_EXP 89
54790: PPUSH
54791: LD_VAR 0 5
54795: PPUSH
54796: EMPTY
54797: PPUSH
54798: CALL_OW 1
54802: ST_TO_ADDR
// ai_building_under_construction = Replace ( ai_building_under_construction , base , building ) ;
54803: LD_ADDR_EXP 84
54807: PUSH
54808: LD_EXP 84
54812: PPUSH
54813: LD_VAR 0 5
54817: PPUSH
54818: LD_VAR 0 1
54822: PPUSH
54823: CALL_OW 1
54827: ST_TO_ADDR
// if GetSide ( building ) = 1 then
54828: LD_VAR 0 1
54832: PPUSH
54833: CALL_OW 255
54837: PUSH
54838: LD_INT 1
54840: EQUAL
54841: IFFALSE 54855
// DoNotAttack ( 4 , building ) ;
54843: LD_INT 4
54845: PPUSH
54846: LD_VAR 0 1
54850: PPUSH
54851: CALL_OW 471
// end ;
54855: PPOPN 6
54857: END
// on BuildingComplete ( building ) do var side , temp_list , temp_unit , base , i , hex ;
54858: LD_INT 0
54860: PPUSH
54861: PPUSH
54862: PPUSH
54863: PPUSH
54864: PPUSH
54865: PPUSH
// begin side = GetSide ( building ) ;
54866: LD_ADDR_VAR 0 2
54870: PUSH
54871: LD_VAR 0 1
54875: PPUSH
54876: CALL_OW 255
54880: ST_TO_ADDR
// if side = you then
54881: LD_VAR 0 2
54885: PUSH
54886: LD_EXP 2
54890: EQUAL
54891: IFFALSE 54895
// exit ;
54893: GO 55237
// base = FindBase ( building ) ;
54895: LD_ADDR_VAR 0 5
54899: PUSH
54900: LD_VAR 0 1
54904: PPUSH
54905: CALL 40619 0 1
54909: ST_TO_ADDR
// if base = 0 then
54910: LD_VAR 0 5
54914: PUSH
54915: LD_INT 0
54917: EQUAL
54918: IFFALSE 54922
// exit ;
54920: GO 55237
// if ai_sib_bomb_fact_location [ base ] > 0 then
54922: LD_EXP 74
54926: PUSH
54927: LD_VAR 0 5
54931: ARRAY
54932: PUSH
54933: LD_INT 0
54935: GREATER
54936: IFFALSE 55027
// if ai_upcoming_building_data [ base ] [ 1 ] = ai_sib_bomb_fact_location [ base ] [ 1 ] and ai_upcoming_building_data [ base ] [ 2 ] = ai_sib_bomb_fact_location [ base ] [ 2 ] then
54938: LD_EXP 90
54942: PUSH
54943: LD_VAR 0 5
54947: ARRAY
54948: PUSH
54949: LD_INT 1
54951: ARRAY
54952: PUSH
54953: LD_EXP 74
54957: PUSH
54958: LD_VAR 0 5
54962: ARRAY
54963: PUSH
54964: LD_INT 1
54966: ARRAY
54967: EQUAL
54968: PUSH
54969: LD_EXP 90
54973: PUSH
54974: LD_VAR 0 5
54978: ARRAY
54979: PUSH
54980: LD_INT 2
54982: ARRAY
54983: PUSH
54984: LD_EXP 74
54988: PUSH
54989: LD_VAR 0 5
54993: ARRAY
54994: PUSH
54995: LD_INT 2
54997: ARRAY
54998: EQUAL
54999: AND
55000: IFFALSE 55027
// ai_sib_bomb_fact = Replace ( ai_sib_bomb_fact , base , building ) ;
55002: LD_ADDR_EXP 73
55006: PUSH
55007: LD_EXP 73
55011: PPUSH
55012: LD_VAR 0 5
55016: PPUSH
55017: LD_VAR 0 1
55021: PPUSH
55022: CALL_OW 1
55026: ST_TO_ADDR
// hex = [ GetX ( building ) , GetY ( building ) ] ;
55027: LD_ADDR_VAR 0 7
55031: PUSH
55032: LD_VAR 0 1
55036: PPUSH
55037: CALL_OW 250
55041: PUSH
55042: LD_VAR 0 1
55046: PPUSH
55047: CALL_OW 251
55051: PUSH
55052: EMPTY
55053: LIST
55054: LIST
55055: ST_TO_ADDR
// if hex in ai_fact_extension_replace_locations [ base ] then
55056: LD_VAR 0 7
55060: PUSH
55061: LD_EXP 108
55065: PUSH
55066: LD_VAR 0 5
55070: ARRAY
55071: IN
55072: IFFALSE 55159
// begin for i in ai_facts [ base ] do
55074: LD_ADDR_VAR 0 6
55078: PUSH
55079: LD_EXP 61
55083: PUSH
55084: LD_VAR 0 5
55088: ARRAY
55089: PUSH
55090: FOR_IN
55091: IFFALSE 55157
// if ai_facts_with_ext_rebuild_map >= i then
55093: LD_EXP 119
55097: PUSH
55098: LD_VAR 0 6
55102: GREATEREQUAL
55103: IFFALSE 55155
// begin temp_list = ai_facts_with_ext_rebuild_map [ i ] diff [ hex ] ;
55105: LD_ADDR_VAR 0 3
55109: PUSH
55110: LD_EXP 119
55114: PUSH
55115: LD_VAR 0 6
55119: ARRAY
55120: PUSH
55121: LD_VAR 0 7
55125: PUSH
55126: EMPTY
55127: LIST
55128: DIFF
55129: ST_TO_ADDR
// ai_facts_with_ext_rebuild_map = Replace ( ai_facts_with_ext_rebuild_map , i , temp_list ) ;
55130: LD_ADDR_EXP 119
55134: PUSH
55135: LD_EXP 119
55139: PPUSH
55140: LD_VAR 0 6
55144: PPUSH
55145: LD_VAR 0 3
55149: PPUSH
55150: CALL_OW 1
55154: ST_TO_ADDR
// end ;
55155: GO 55090
55157: POP
55158: POP
// end ; BuildUpgradeCommon ( base , building ) ;
55159: LD_VAR 0 5
55163: PPUSH
55164: LD_VAR 0 1
55168: PPUSH
55169: CALL 55318 0 2
// temp_list = ai_all_buildings [ base ] ^ building ;
55173: LD_ADDR_VAR 0 3
55177: PUSH
55178: LD_EXP 86
55182: PUSH
55183: LD_VAR 0 5
55187: ARRAY
55188: PUSH
55189: LD_VAR 0 1
55193: ADD
55194: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
55195: LD_ADDR_EXP 86
55199: PUSH
55200: LD_EXP 86
55204: PPUSH
55205: LD_VAR 0 5
55209: PPUSH
55210: LD_VAR 0 3
55214: PPUSH
55215: CALL_OW 1
55219: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , building , true ) ;
55220: LD_VAR 0 5
55224: PPUSH
55225: LD_VAR 0 1
55229: PPUSH
55230: LD_INT 1
55232: PPUSH
55233: CALL 22547 0 3
// end ;
55237: PPOPN 7
55239: END
// on UpgradeComplete ( building ) do var side , temp_list , base ;
55240: LD_INT 0
55242: PPUSH
55243: PPUSH
55244: PPUSH
// begin side = GetSide ( building ) ;
55245: LD_ADDR_VAR 0 2
55249: PUSH
55250: LD_VAR 0 1
55254: PPUSH
55255: CALL_OW 255
55259: ST_TO_ADDR
// if side = you then
55260: LD_VAR 0 2
55264: PUSH
55265: LD_EXP 2
55269: EQUAL
55270: IFFALSE 55274
// exit ;
55272: GO 55315
// base = FindBase ( building ) ;
55274: LD_ADDR_VAR 0 4
55278: PUSH
55279: LD_VAR 0 1
55283: PPUSH
55284: CALL 40619 0 1
55288: ST_TO_ADDR
// if base = 0 then
55289: LD_VAR 0 4
55293: PUSH
55294: LD_INT 0
55296: EQUAL
55297: IFFALSE 55301
// exit ;
55299: GO 55315
// BuildUpgradeCommon ( base , building ) ;
55301: LD_VAR 0 4
55305: PPUSH
55306: LD_VAR 0 1
55310: PPUSH
55311: CALL 55318 0 2
// end ;
55315: PPOPN 4
55317: END
// function BuildUpgradeCommon ( base , building ) ; begin
55318: LD_INT 0
55320: PPUSH
// if GetBType ( building ) = ai_upcoming_building_data [ base ] [ 4 ] then
55321: LD_VAR 0 2
55325: PPUSH
55326: CALL_OW 266
55330: PUSH
55331: LD_EXP 90
55335: PUSH
55336: LD_VAR 0 1
55340: ARRAY
55341: PUSH
55342: LD_INT 4
55344: ARRAY
55345: EQUAL
55346: IFFALSE 55370
// ai_upcoming_building_data = Replace ( ai_upcoming_building_data , base , [ ] ) ;
55348: LD_ADDR_EXP 90
55352: PUSH
55353: LD_EXP 90
55357: PPUSH
55358: LD_VAR 0 1
55362: PPUSH
55363: EMPTY
55364: PPUSH
55365: CALL_OW 1
55369: ST_TO_ADDR
// ai_building_under_construction = Replace ( ai_building_under_construction , base , 0 ) ;
55370: LD_ADDR_EXP 84
55374: PUSH
55375: LD_EXP 84
55379: PPUSH
55380: LD_VAR 0 1
55384: PPUSH
55385: LD_INT 0
55387: PPUSH
55388: CALL_OW 1
55392: ST_TO_ADDR
// end ;
55393: LD_VAR 0 3
55397: RET
// on BuildingCaptured ( captured_building , building_former_side , capturing_unit ) do var temp_list , base , i ;
55398: LD_INT 0
55400: PPUSH
55401: PPUSH
55402: PPUSH
// begin if GetBType ( captured_building ) in [ b_depot , b_warehouse ] then
55403: LD_VAR 0 1
55407: PPUSH
55408: CALL_OW 266
55412: PUSH
55413: LD_INT 0
55415: PUSH
55416: LD_INT 1
55418: PUSH
55419: EMPTY
55420: LIST
55421: LIST
55422: IN
55423: IFFALSE 55564
// begin SetResourceType ( GetBase ( captured_building ) , mat_cans , [ 100 , 50 , 0 ] [ difficulty ] + Rand ( 0 , 3 ) * 10 ) ;
55425: LD_VAR 0 1
55429: PPUSH
55430: CALL_OW 274
55434: PPUSH
55435: LD_INT 1
55437: PPUSH
55438: LD_INT 100
55440: PUSH
55441: LD_INT 50
55443: PUSH
55444: LD_INT 0
55446: PUSH
55447: EMPTY
55448: LIST
55449: LIST
55450: LIST
55451: PUSH
55452: LD_OWVAR 67
55456: ARRAY
55457: PUSH
55458: LD_INT 0
55460: PPUSH
55461: LD_INT 3
55463: PPUSH
55464: CALL_OW 12
55468: PUSH
55469: LD_INT 10
55471: MUL
55472: PLUS
55473: PPUSH
55474: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_oil , [ 200 , 150 , 100 ] [ difficulty ] + Rand ( 0 , 100 ) ) ;
55478: LD_VAR 0 1
55482: PPUSH
55483: CALL_OW 274
55487: PPUSH
55488: LD_INT 2
55490: PPUSH
55491: LD_INT 200
55493: PUSH
55494: LD_INT 150
55496: PUSH
55497: LD_INT 100
55499: PUSH
55500: EMPTY
55501: LIST
55502: LIST
55503: LIST
55504: PUSH
55505: LD_OWVAR 67
55509: ARRAY
55510: PUSH
55511: LD_INT 0
55513: PPUSH
55514: LD_INT 100
55516: PPUSH
55517: CALL_OW 12
55521: PLUS
55522: PPUSH
55523: CALL_OW 277
// SetResourceType ( GetBase ( captured_building ) , mat_siberit , [ 20 , 10 , 0 ] [ difficulty ] ) ;
55527: LD_VAR 0 1
55531: PPUSH
55532: CALL_OW 274
55536: PPUSH
55537: LD_INT 3
55539: PPUSH
55540: LD_INT 20
55542: PUSH
55543: LD_INT 10
55545: PUSH
55546: LD_INT 0
55548: PUSH
55549: EMPTY
55550: LIST
55551: LIST
55552: LIST
55553: PUSH
55554: LD_OWVAR 67
55558: ARRAY
55559: PPUSH
55560: CALL_OW 277
// end ; base = FindBase ( captured_building ) ;
55564: LD_ADDR_VAR 0 5
55568: PUSH
55569: LD_VAR 0 1
55573: PPUSH
55574: CALL 40619 0 1
55578: ST_TO_ADDR
// if base = 0 then
55579: LD_VAR 0 5
55583: PUSH
55584: LD_INT 0
55586: EQUAL
55587: IFFALSE 55591
// exit ;
55589: GO 55804
// if building_former_side = GetBaseSide ( base ) then
55591: LD_VAR 0 2
55595: PUSH
55596: LD_VAR 0 5
55600: PPUSH
55601: CALL 40471 0 1
55605: EQUAL
55606: IFFALSE 55671
// begin RemoveBuildingFromVariables ( base , captured_building ) ;
55608: LD_VAR 0 5
55612: PPUSH
55613: LD_VAR 0 1
55617: PPUSH
55618: CALL 38142 0 2
// temp_list = ai_captured_buildings [ base ] ^ captured_building ;
55622: LD_ADDR_VAR 0 4
55626: PUSH
55627: LD_EXP 72
55631: PUSH
55632: LD_VAR 0 5
55636: ARRAY
55637: PUSH
55638: LD_VAR 0 1
55642: ADD
55643: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
55644: LD_ADDR_EXP 72
55648: PUSH
55649: LD_EXP 72
55653: PPUSH
55654: LD_VAR 0 5
55658: PPUSH
55659: LD_VAR 0 4
55663: PPUSH
55664: CALL_OW 1
55668: ST_TO_ADDR
// end else
55669: GO 55804
// begin if GetSide ( captured_building ) = GetBaseSide ( base ) then
55671: LD_VAR 0 1
55675: PPUSH
55676: CALL_OW 255
55680: PUSH
55681: LD_VAR 0 5
55685: PPUSH
55686: CALL 40471 0 1
55690: EQUAL
55691: IFFALSE 55804
// begin temp_list = ai_all_buildings [ base ] ^ captured_building ;
55693: LD_ADDR_VAR 0 4
55697: PUSH
55698: LD_EXP 86
55702: PUSH
55703: LD_VAR 0 5
55707: ARRAY
55708: PUSH
55709: LD_VAR 0 1
55713: ADD
55714: ST_TO_ADDR
// ai_all_buildings = Replace ( ai_all_buildings , base , temp_list ) ;
55715: LD_ADDR_EXP 86
55719: PUSH
55720: LD_EXP 86
55724: PPUSH
55725: LD_VAR 0 5
55729: PPUSH
55730: LD_VAR 0 4
55734: PPUSH
55735: CALL_OW 1
55739: ST_TO_ADDR
// UpdateBuildingBasicVariables ( base , captured_building , true ) ;
55740: LD_VAR 0 5
55744: PPUSH
55745: LD_VAR 0 1
55749: PPUSH
55750: LD_INT 1
55752: PPUSH
55753: CALL 22547 0 3
// temp_list = ai_captured_buildings [ base ] diff captured_building ;
55757: LD_ADDR_VAR 0 4
55761: PUSH
55762: LD_EXP 72
55766: PUSH
55767: LD_VAR 0 5
55771: ARRAY
55772: PUSH
55773: LD_VAR 0 1
55777: DIFF
55778: ST_TO_ADDR
// ai_captured_buildings = Replace ( ai_captured_buildings , base , temp_list ) ;
55779: LD_ADDR_EXP 72
55783: PUSH
55784: LD_EXP 72
55788: PPUSH
55789: LD_VAR 0 5
55793: PPUSH
55794: LD_VAR 0 4
55798: PPUSH
55799: CALL_OW 1
55803: ST_TO_ADDR
// end ; end ; end ;
55804: PPOPN 6
55806: END
// export function GetHumansOutOfUnits ( un_list ) ; var i ; begin
55807: LD_INT 0
55809: PPUSH
55810: PPUSH
// result = [ ] ;
55811: LD_ADDR_VAR 0 2
55815: PUSH
55816: EMPTY
55817: ST_TO_ADDR
// for i in un_list do
55818: LD_ADDR_VAR 0 3
55822: PUSH
55823: LD_VAR 0 1
55827: PUSH
55828: FOR_IN
55829: IFFALSE 55905
// case GetType ( IsInUnit ( i ) ) of unit_building :
55831: LD_VAR 0 3
55835: PPUSH
55836: CALL_OW 310
55840: PPUSH
55841: CALL_OW 247
55845: PUSH
55846: LD_INT 3
55848: DOUBLE
55849: EQUAL
55850: IFTRUE 55854
55852: GO 55866
55854: POP
// ComExitBuilding ( i ) ; unit_vehicle :
55855: LD_VAR 0 3
55859: PPUSH
55860: CALL_OW 122
55864: GO 55903
55866: LD_INT 2
55868: DOUBLE
55869: EQUAL
55870: IFTRUE 55874
55872: GO 55886
55874: POP
// ComExitVehicle ( i ) ; else
55875: LD_VAR 0 3
55879: PPUSH
55880: CALL_OW 121
55884: GO 55903
55886: POP
// result = result ^ i ; end ;
55887: LD_ADDR_VAR 0 2
55891: PUSH
55892: LD_VAR 0 2
55896: PUSH
55897: LD_VAR 0 3
55901: ADD
55902: ST_TO_ADDR
55903: GO 55828
55905: POP
55906: POP
// end ;
55907: LD_VAR 0 2
55911: RET
// export function BaseUnderAttack ( base , attack_side ) ; var area , i , val , def_side , temp_list , temp ; begin
55912: LD_INT 0
55914: PPUSH
55915: PPUSH
55916: PPUSH
55917: PPUSH
55918: PPUSH
55919: PPUSH
55920: PPUSH
// result = false ;
55921: LD_ADDR_VAR 0 3
55925: PUSH
55926: LD_INT 0
55928: ST_TO_ADDR
// def_side = GetBaseSide ( base ) ;
55929: LD_ADDR_VAR 0 7
55933: PUSH
55934: LD_VAR 0 1
55938: PPUSH
55939: CALL 40471 0 1
55943: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
55944: LD_ADDR_VAR 0 4
55948: PUSH
55949: LD_VAR 0 1
55953: PPUSH
55954: CALL 40400 0 1
55958: ST_TO_ADDR
// if attack_side = def_side then
55959: LD_VAR 0 2
55963: PUSH
55964: LD_VAR 0 7
55968: EQUAL
55969: IFFALSE 55973
// exit ;
55971: GO 56625
// if attack_side = - 1 then
55973: LD_VAR 0 2
55977: PUSH
55978: LD_INT 1
55980: NEG
55981: EQUAL
55982: IFFALSE 56318
// begin for i = 1 to 8 do
55984: LD_ADDR_VAR 0 5
55988: PUSH
55989: DOUBLE
55990: LD_INT 1
55992: DEC
55993: ST_TO_ADDR
55994: LD_INT 8
55996: PUSH
55997: FOR_TO
55998: IFFALSE 56067
// if ai_sib_bomb_used_time_matrix [ base ] [ i ] > - 1 and ai_sib_bomb_used_time_matrix [ base ] [ i ] + ai_sib_bomb_contamination_duration >= tick then
56000: LD_EXP 126
56004: PUSH
56005: LD_VAR 0 1
56009: ARRAY
56010: PUSH
56011: LD_VAR 0 5
56015: ARRAY
56016: PUSH
56017: LD_INT 1
56019: NEG
56020: GREATER
56021: PUSH
56022: LD_EXP 126
56026: PUSH
56027: LD_VAR 0 1
56031: ARRAY
56032: PUSH
56033: LD_VAR 0 5
56037: ARRAY
56038: PUSH
56039: LD_EXP 127
56043: PLUS
56044: PUSH
56045: LD_OWVAR 1
56049: GREATEREQUAL
56050: AND
56051: IFFALSE 56065
// begin result = true ;
56053: LD_ADDR_VAR 0 3
56057: PUSH
56058: LD_INT 1
56060: ST_TO_ADDR
// exit ;
56061: POP
56062: POP
56063: GO 56625
// end ;
56065: GO 55997
56067: POP
56068: POP
// temp_list = FilterAllUnits ( [ [ f_enemy , def_side ] , [ f_inarea , area ] ] ) ;
56069: LD_ADDR_VAR 0 8
56073: PUSH
56074: LD_INT 81
56076: PUSH
56077: LD_VAR 0 7
56081: PUSH
56082: EMPTY
56083: LIST
56084: LIST
56085: PUSH
56086: LD_INT 95
56088: PUSH
56089: LD_VAR 0 4
56093: PUSH
56094: EMPTY
56095: LIST
56096: LIST
56097: PUSH
56098: EMPTY
56099: LIST
56100: LIST
56101: PPUSH
56102: CALL_OW 69
56106: ST_TO_ADDR
// if def_side = Americans then
56107: LD_VAR 0 7
56111: PUSH
56112: LD_EXP 7
56116: EQUAL
56117: IFFALSE 56147
// temp_list = temp_list diff FilterAllUnits ( [ f_side , americans_alt ] ) ;
56119: LD_ADDR_VAR 0 8
56123: PUSH
56124: LD_VAR 0 8
56128: PUSH
56129: LD_INT 22
56131: PUSH
56132: LD_EXP 8
56136: PUSH
56137: EMPTY
56138: LIST
56139: LIST
56140: PPUSH
56141: CALL_OW 69
56145: DIFF
56146: ST_TO_ADDR
// if temp_list > 0 then
56147: LD_VAR 0 8
56151: PUSH
56152: LD_INT 0
56154: GREATER
56155: IFFALSE 56167
// begin result = true ;
56157: LD_ADDR_VAR 0 3
56161: PUSH
56162: LD_INT 1
56164: ST_TO_ADDR
// exit ;
56165: GO 56625
// end ; val = true ;
56167: LD_ADDR_VAR 0 6
56171: PUSH
56172: LD_INT 1
56174: ST_TO_ADDR
// for i in ai_contact_time [ def_side ] do
56175: LD_ADDR_VAR 0 5
56179: PUSH
56180: LD_EXP 123
56184: PUSH
56185: LD_VAR 0 7
56189: ARRAY
56190: PUSH
56191: FOR_IN
56192: IFFALSE 56216
// if i < 0 0$10 then
56194: LD_VAR 0 5
56198: PUSH
56199: LD_INT 350
56201: LESS
56202: IFFALSE 56214
// begin val = false ;
56204: LD_ADDR_VAR 0 6
56208: PUSH
56209: LD_INT 0
56211: ST_TO_ADDR
// break ;
56212: GO 56216
// end ;
56214: GO 56191
56216: POP
56217: POP
// if ContactTime ( def_side ) >= 0 0$10 and val then
56218: LD_VAR 0 7
56222: PPUSH
56223: CALL_OW 462
56227: PUSH
56228: LD_INT 350
56230: GREATEREQUAL
56231: PUSH
56232: LD_VAR 0 6
56236: AND
56237: IFFALSE 56241
// exit ;
56239: GO 56625
// temp = [ le_attack_detection , ru_attack_detection , us_attack_detection ] [ base ] ;
56241: LD_ADDR_VAR 0 9
56245: PUSH
56246: LD_INT 53
56248: PUSH
56249: LD_INT 54
56251: PUSH
56252: LD_INT 55
56254: PUSH
56255: EMPTY
56256: LIST
56257: LIST
56258: LIST
56259: PUSH
56260: LD_VAR 0 1
56264: ARRAY
56265: ST_TO_ADDR
// if FilterUnitsInArea ( temp , [ [ f_enemy , def_side ] , [ f_not , [ f_side , 4 ] ] ] ) = 0 then
56266: LD_VAR 0 9
56270: PPUSH
56271: LD_INT 81
56273: PUSH
56274: LD_VAR 0 7
56278: PUSH
56279: EMPTY
56280: LIST
56281: LIST
56282: PUSH
56283: LD_INT 3
56285: PUSH
56286: LD_INT 22
56288: PUSH
56289: LD_INT 4
56291: PUSH
56292: EMPTY
56293: LIST
56294: LIST
56295: PUSH
56296: EMPTY
56297: LIST
56298: LIST
56299: PUSH
56300: EMPTY
56301: LIST
56302: LIST
56303: PPUSH
56304: CALL_OW 70
56308: PUSH
56309: LD_INT 0
56311: EQUAL
56312: IFFALSE 56316
// exit ;
56314: GO 56625
// end else
56316: GO 56617
// begin if ai_sib_bomb_used_time_matrix [ base ] [ attack_side ] > - 1 and ai_sib_bomb_used_time_matrix [ base ] [ attack_side ] + ai_sib_bomb_contamination_duration >= tick then
56318: LD_EXP 126
56322: PUSH
56323: LD_VAR 0 1
56327: ARRAY
56328: PUSH
56329: LD_VAR 0 2
56333: ARRAY
56334: PUSH
56335: LD_INT 1
56337: NEG
56338: GREATER
56339: PUSH
56340: LD_EXP 126
56344: PUSH
56345: LD_VAR 0 1
56349: ARRAY
56350: PUSH
56351: LD_VAR 0 2
56355: ARRAY
56356: PUSH
56357: LD_EXP 127
56361: PLUS
56362: PUSH
56363: LD_OWVAR 1
56367: GREATEREQUAL
56368: AND
56369: IFFALSE 56381
// begin result = true ;
56371: LD_ADDR_VAR 0 3
56375: PUSH
56376: LD_INT 1
56378: ST_TO_ADDR
// exit ;
56379: GO 56625
// end ; if FilterAllUnits ( [ [ f_side , attack_side ] , [ f_inarea , area ] ] ) > 0 then
56381: LD_INT 22
56383: PUSH
56384: LD_VAR 0 2
56388: PUSH
56389: EMPTY
56390: LIST
56391: LIST
56392: PUSH
56393: LD_INT 95
56395: PUSH
56396: LD_VAR 0 4
56400: PUSH
56401: EMPTY
56402: LIST
56403: LIST
56404: PUSH
56405: EMPTY
56406: LIST
56407: LIST
56408: PPUSH
56409: CALL_OW 69
56413: PUSH
56414: LD_INT 0
56416: GREATER
56417: IFFALSE 56429
// begin result = true ;
56419: LD_ADDR_VAR 0 3
56423: PUSH
56424: LD_INT 1
56426: ST_TO_ADDR
// exit ;
56427: GO 56625
// end ; if ContactTime ( [ def_side , attack_side ] ) >= 0 0$10 and ai_contact_time [ def_side ] [ attack_side ] >= 0 0$10 then
56429: LD_VAR 0 7
56433: PUSH
56434: LD_VAR 0 2
56438: PUSH
56439: EMPTY
56440: LIST
56441: LIST
56442: PPUSH
56443: CALL_OW 462
56447: PUSH
56448: LD_INT 350
56450: GREATEREQUAL
56451: PUSH
56452: LD_EXP 123
56456: PUSH
56457: LD_VAR 0 7
56461: ARRAY
56462: PUSH
56463: LD_VAR 0 2
56467: ARRAY
56468: PUSH
56469: LD_INT 350
56471: GREATEREQUAL
56472: AND
56473: IFFALSE 56477
// exit ;
56475: GO 56625
// temp_list = [ ] ;
56477: LD_ADDR_VAR 0 8
56481: PUSH
56482: EMPTY
56483: ST_TO_ADDR
// for i in ( ai_bases diff base ) do
56484: LD_ADDR_VAR 0 5
56488: PUSH
56489: LD_EXP 49
56493: PUSH
56494: LD_VAR 0 1
56498: DIFF
56499: PUSH
56500: FOR_IN
56501: IFFALSE 56547
// temp_list = Insert ( temp_list , 1 , [ f_not , [ f_inarea , GetBaseArea ( i ) ] ] ) ;
56503: LD_ADDR_VAR 0 8
56507: PUSH
56508: LD_VAR 0 8
56512: PPUSH
56513: LD_INT 1
56515: PPUSH
56516: LD_INT 3
56518: PUSH
56519: LD_INT 95
56521: PUSH
56522: LD_VAR 0 5
56526: PPUSH
56527: CALL 40400 0 1
56531: PUSH
56532: EMPTY
56533: LIST
56534: LIST
56535: PUSH
56536: EMPTY
56537: LIST
56538: LIST
56539: PPUSH
56540: CALL_OW 2
56544: ST_TO_ADDR
56545: GO 56500
56547: POP
56548: POP
// temp_list = FilterAllUnits ( [ [ f_side , attack_side ] , [ f_not , [ f_type , unit_building ] ] ] ^ temp_list ) ;
56549: LD_ADDR_VAR 0 8
56553: PUSH
56554: LD_INT 22
56556: PUSH
56557: LD_VAR 0 2
56561: PUSH
56562: EMPTY
56563: LIST
56564: LIST
56565: PUSH
56566: LD_INT 3
56568: PUSH
56569: LD_INT 21
56571: PUSH
56572: LD_INT 3
56574: PUSH
56575: EMPTY
56576: LIST
56577: LIST
56578: PUSH
56579: EMPTY
56580: LIST
56581: LIST
56582: PUSH
56583: EMPTY
56584: LIST
56585: LIST
56586: PUSH
56587: LD_VAR 0 8
56591: ADD
56592: PPUSH
56593: CALL_OW 69
56597: ST_TO_ADDR
// if not AnyNearBaseArea ( temp_list , base ) then
56598: LD_VAR 0 8
56602: PPUSH
56603: LD_VAR 0 1
56607: PPUSH
56608: CALL 56701 0 2
56612: NOT
56613: IFFALSE 56617
// exit ;
56615: GO 56625
// end ; result = true ;
56617: LD_ADDR_VAR 0 3
56621: PUSH
56622: LD_INT 1
56624: ST_TO_ADDR
// end ;
56625: LD_VAR 0 3
56629: RET
// export function ListFilterNearArea ( list , area ) ; var i ; begin
56630: LD_INT 0
56632: PPUSH
56633: PPUSH
// result = [ ] ;
56634: LD_ADDR_VAR 0 3
56638: PUSH
56639: EMPTY
56640: ST_TO_ADDR
// for i in list do
56641: LD_ADDR_VAR 0 4
56645: PUSH
56646: LD_VAR 0 1
56650: PUSH
56651: FOR_IN
56652: IFFALSE 56694
// if GetDistUnitArea ( i , area ) <= ai_near_base_dist then
56654: LD_VAR 0 4
56658: PPUSH
56659: LD_VAR 0 2
56663: PPUSH
56664: CALL_OW 299
56668: PUSH
56669: LD_EXP 92
56673: LESSEQUAL
56674: IFFALSE 56692
// result = result ^ i ;
56676: LD_ADDR_VAR 0 3
56680: PUSH
56681: LD_VAR 0 3
56685: PUSH
56686: LD_VAR 0 4
56690: ADD
56691: ST_TO_ADDR
56692: GO 56651
56694: POP
56695: POP
// end ;
56696: LD_VAR 0 3
56700: RET
// function AnyNearBaseArea ( list , base ) ; var i , area ; begin
56701: LD_INT 0
56703: PPUSH
56704: PPUSH
56705: PPUSH
// result = false ;
56706: LD_ADDR_VAR 0 3
56710: PUSH
56711: LD_INT 0
56713: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
56714: LD_ADDR_VAR 0 5
56718: PUSH
56719: LD_VAR 0 2
56723: PPUSH
56724: CALL 40400 0 1
56728: ST_TO_ADDR
// for i in list do
56729: LD_ADDR_VAR 0 4
56733: PUSH
56734: LD_VAR 0 1
56738: PUSH
56739: FOR_IN
56740: IFFALSE 56776
// if GetDistUnitArea ( i , area ) <= ai_near_base_dist then
56742: LD_VAR 0 4
56746: PPUSH
56747: LD_VAR 0 5
56751: PPUSH
56752: CALL_OW 299
56756: PUSH
56757: LD_EXP 92
56761: LESSEQUAL
56762: IFFALSE 56774
// begin result = true ;
56764: LD_ADDR_VAR 0 3
56768: PUSH
56769: LD_INT 1
56771: ST_TO_ADDR
// break ;
56772: GO 56776
// end ;
56774: GO 56739
56776: POP
56777: POP
// end ;
56778: LD_VAR 0 3
56782: RET
// on Command ( com ) do var i , temp_list , hex_list , un , k , target_hex , temp ;
56783: LD_INT 0
56785: PPUSH
56786: PPUSH
56787: PPUSH
56788: PPUSH
56789: PPUSH
56790: PPUSH
56791: PPUSH
// begin if com = 74 then
56792: LD_VAR 0 1
56796: PUSH
56797: LD_INT 74
56799: EQUAL
56800: IFFALSE 56939
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , ru_cargo_bay ] , [ f_weapon , us_cargo_bay ] ] ] ) do
56802: LD_ADDR_VAR 0 2
56806: PUSH
56807: LD_INT 22
56809: PUSH
56810: LD_INT 2
56812: PUSH
56813: EMPTY
56814: LIST
56815: LIST
56816: PUSH
56817: LD_INT 2
56819: PUSH
56820: LD_INT 34
56822: PUSH
56823: LD_INT 32
56825: PUSH
56826: EMPTY
56827: LIST
56828: LIST
56829: PUSH
56830: LD_INT 34
56832: PUSH
56833: LD_INT 51
56835: PUSH
56836: EMPTY
56837: LIST
56838: LIST
56839: PUSH
56840: LD_INT 34
56842: PUSH
56843: LD_INT 12
56845: PUSH
56846: EMPTY
56847: LIST
56848: LIST
56849: PUSH
56850: EMPTY
56851: LIST
56852: LIST
56853: LIST
56854: LIST
56855: PUSH
56856: EMPTY
56857: LIST
56858: LIST
56859: PPUSH
56860: CALL_OW 69
56864: PUSH
56865: FOR_IN
56866: IFFALSE 56937
// if GetTaskList ( i ) > 0 then
56868: LD_VAR 0 2
56872: PPUSH
56873: CALL_OW 437
56877: PUSH
56878: LD_INT 0
56880: GREATER
56881: IFFALSE 56935
// if GetTaskList ( i ) [ 1 ] [ 1 ] = m then
56883: LD_VAR 0 2
56887: PPUSH
56888: CALL_OW 437
56892: PUSH
56893: LD_INT 1
56895: ARRAY
56896: PUSH
56897: LD_INT 1
56899: ARRAY
56900: PUSH
56901: LD_STRING m
56903: EQUAL
56904: IFFALSE 56935
// if GetCargo ( i , mat_artifact ) = 40 then
56906: LD_VAR 0 2
56910: PPUSH
56911: LD_INT 4
56913: PPUSH
56914: CALL_OW 289
56918: PUSH
56919: LD_INT 40
56921: EQUAL
56922: IFFALSE 56935
// begin ArtifactUse ( i ) ;
56924: LD_VAR 0 2
56928: PPUSH
56929: CALL 114678 0 1
// break ;
56933: GO 56937
// end ;
56935: GO 56865
56937: POP
56938: POP
// if com = 71 then
56939: LD_VAR 0 1
56943: PUSH
56944: LD_INT 71
56946: EQUAL
56947: IFFALSE 57168
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] ] ) do
56949: LD_ADDR_VAR 0 2
56953: PUSH
56954: LD_INT 22
56956: PUSH
56957: LD_INT 2
56959: PUSH
56960: EMPTY
56961: LIST
56962: LIST
56963: PUSH
56964: LD_INT 25
56966: PUSH
56967: LD_INT 4
56969: PUSH
56970: EMPTY
56971: LIST
56972: LIST
56973: PUSH
56974: EMPTY
56975: LIST
56976: LIST
56977: PPUSH
56978: CALL_OW 69
56982: PUSH
56983: FOR_IN
56984: IFFALSE 57166
// if GetTaskList ( i ) > 0 then
56986: LD_VAR 0 2
56990: PPUSH
56991: CALL_OW 437
56995: PUSH
56996: LD_INT 0
56998: GREATER
56999: IFFALSE 57164
// if GetTaskList ( i ) [ 1 ] [ 1 ] = G then
57001: LD_VAR 0 2
57005: PPUSH
57006: CALL_OW 437
57010: PUSH
57011: LD_INT 1
57013: ARRAY
57014: PUSH
57015: LD_INT 1
57017: ARRAY
57018: PUSH
57019: LD_STRING G
57021: EQUAL
57022: IFFALSE 57164
// begin temp = [ GetTaskList ( i ) [ 1 ] [ 2 ] , GetTaskList ( i ) [ 1 ] [ 3 ] ] ;
57024: LD_ADDR_VAR 0 8
57028: PUSH
57029: LD_VAR 0 2
57033: PPUSH
57034: CALL_OW 437
57038: PUSH
57039: LD_INT 1
57041: ARRAY
57042: PUSH
57043: LD_INT 2
57045: ARRAY
57046: PUSH
57047: LD_VAR 0 2
57051: PPUSH
57052: CALL_OW 437
57056: PUSH
57057: LD_INT 1
57059: ARRAY
57060: PUSH
57061: LD_INT 3
57063: ARRAY
57064: PUSH
57065: EMPTY
57066: LIST
57067: LIST
57068: ST_TO_ADDR
// if not InArea ( temp [ 1 ] , temp [ 2 ] , ContaminationArea1 ) and not InArea ( temp [ 1 ] , temp [ 2 ] , ContaminationArea2 ) and not InArea ( temp [ 1 ] , temp [ 2 ] , ContaminationArea3 ) then
57069: LD_VAR 0 8
57073: PUSH
57074: LD_INT 1
57076: ARRAY
57077: PPUSH
57078: LD_VAR 0 8
57082: PUSH
57083: LD_INT 2
57085: ARRAY
57086: PPUSH
57087: LD_INT 38
57089: PPUSH
57090: CALL_OW 309
57094: NOT
57095: PUSH
57096: LD_VAR 0 8
57100: PUSH
57101: LD_INT 1
57103: ARRAY
57104: PPUSH
57105: LD_VAR 0 8
57109: PUSH
57110: LD_INT 2
57112: ARRAY
57113: PPUSH
57114: LD_INT 39
57116: PPUSH
57117: CALL_OW 309
57121: NOT
57122: AND
57123: PUSH
57124: LD_VAR 0 8
57128: PUSH
57129: LD_INT 1
57131: ARRAY
57132: PPUSH
57133: LD_VAR 0 8
57137: PUSH
57138: LD_INT 2
57140: ARRAY
57141: PPUSH
57142: LD_INT 40
57144: PPUSH
57145: CALL_OW 309
57149: NOT
57150: AND
57151: IFFALSE 57164
// SetTaskList ( i , [ ] ) ;
57153: LD_VAR 0 2
57157: PPUSH
57158: EMPTY
57159: PPUSH
57160: CALL_OW 446
// end ;
57164: GO 56983
57166: POP
57167: POP
// if com = 124 then
57168: LD_VAR 0 1
57172: PUSH
57173: LD_INT 124
57175: EQUAL
57176: IFFALSE 57587
// begin for i in FilterAllUnits ( [ f_side , you ] ) do
57178: LD_ADDR_VAR 0 2
57182: PUSH
57183: LD_INT 22
57185: PUSH
57186: LD_EXP 2
57190: PUSH
57191: EMPTY
57192: LIST
57193: LIST
57194: PPUSH
57195: CALL_OW 69
57199: PUSH
57200: FOR_IN
57201: IFFALSE 57585
// if IsSelected ( i ) and HasTask ( i ) then
57203: LD_VAR 0 2
57207: PPUSH
57208: CALL_OW 306
57212: PUSH
57213: LD_VAR 0 2
57217: PPUSH
57218: CALL_OW 314
57222: AND
57223: IFFALSE 57583
// begin target_hex = [ ] ;
57225: LD_ADDR_VAR 0 7
57229: PUSH
57230: EMPTY
57231: ST_TO_ADDR
// for k in GetTaskList ( i ) do
57232: LD_ADDR_VAR 0 6
57236: PUSH
57237: LD_VAR 0 2
57241: PPUSH
57242: CALL_OW 437
57246: PUSH
57247: FOR_IN
57248: IFFALSE 57295
// if k [ 1 ] = | then
57250: LD_VAR 0 6
57254: PUSH
57255: LD_INT 1
57257: ARRAY
57258: PUSH
57259: LD_STRING |
57261: EQUAL
57262: IFFALSE 57293
// begin target_hex = [ k [ 2 ] , k [ 3 ] ] ;
57264: LD_ADDR_VAR 0 7
57268: PUSH
57269: LD_VAR 0 6
57273: PUSH
57274: LD_INT 2
57276: ARRAY
57277: PUSH
57278: LD_VAR 0 6
57282: PUSH
57283: LD_INT 3
57285: ARRAY
57286: PUSH
57287: EMPTY
57288: LIST
57289: LIST
57290: ST_TO_ADDR
// break ;
57291: GO 57295
// end ;
57293: GO 57247
57295: POP
57296: POP
// if target_hex > 0 then
57297: LD_VAR 0 7
57301: PUSH
57302: LD_INT 0
57304: GREATER
57305: IFFALSE 57583
// begin hex_list = target_hex ;
57307: LD_ADDR_VAR 0 4
57311: PUSH
57312: LD_VAR 0 7
57316: ST_TO_ADDR
// temp_list = [ ] ;
57317: LD_ADDR_VAR 0 3
57321: PUSH
57322: EMPTY
57323: ST_TO_ADDR
// for k = 0 to 5 do
57324: LD_ADDR_VAR 0 6
57328: PUSH
57329: DOUBLE
57330: LD_INT 0
57332: DEC
57333: ST_TO_ADDR
57334: LD_INT 5
57336: PUSH
57337: FOR_TO
57338: IFFALSE 57408
// temp_list = Insert ( temp_list , 1 , [ ShiftX ( hex_list [ 1 ] , k , 1 ) , ShiftY ( hex_list [ 2 ] , k , 1 ) ] ) ;
57340: LD_ADDR_VAR 0 3
57344: PUSH
57345: LD_VAR 0 3
57349: PPUSH
57350: LD_INT 1
57352: PPUSH
57353: LD_VAR 0 4
57357: PUSH
57358: LD_INT 1
57360: ARRAY
57361: PPUSH
57362: LD_VAR 0 6
57366: PPUSH
57367: LD_INT 1
57369: PPUSH
57370: CALL_OW 272
57374: PUSH
57375: LD_VAR 0 4
57379: PUSH
57380: LD_INT 2
57382: ARRAY
57383: PPUSH
57384: LD_VAR 0 6
57388: PPUSH
57389: LD_INT 1
57391: PPUSH
57392: CALL_OW 273
57396: PUSH
57397: EMPTY
57398: LIST
57399: LIST
57400: PPUSH
57401: CALL_OW 2
57405: ST_TO_ADDR
57406: GO 57337
57408: POP
57409: POP
// hex_list = [ hex_list ] ^ temp_list ;
57410: LD_ADDR_VAR 0 4
57414: PUSH
57415: LD_VAR 0 4
57419: PUSH
57420: EMPTY
57421: LIST
57422: PUSH
57423: LD_VAR 0 3
57427: ADD
57428: ST_TO_ADDR
// temp_list = [ ] ;
57429: LD_ADDR_VAR 0 3
57433: PUSH
57434: EMPTY
57435: ST_TO_ADDR
// for k in hex_list do
57436: LD_ADDR_VAR 0 6
57440: PUSH
57441: LD_VAR 0 4
57445: PUSH
57446: FOR_IN
57447: IFFALSE 57581
// begin un = HexInfo ( k [ 1 ] , k [ 2 ] ) ;
57449: LD_ADDR_VAR 0 5
57453: PUSH
57454: LD_VAR 0 6
57458: PUSH
57459: LD_INT 1
57461: ARRAY
57462: PPUSH
57463: LD_VAR 0 6
57467: PUSH
57468: LD_INT 2
57470: ARRAY
57471: PPUSH
57472: CALL_OW 428
57476: ST_TO_ADDR
// if un > 0 and not un in temp_list then
57477: LD_VAR 0 5
57481: PUSH
57482: LD_INT 0
57484: GREATER
57485: PUSH
57486: LD_VAR 0 5
57490: PUSH
57491: LD_VAR 0 3
57495: IN
57496: NOT
57497: AND
57498: IFFALSE 57579
// begin ai_attack_ground_info_initial = Insert ( ai_attack_ground_info_initial , 1 , [ i , un , GetSide ( un ) , target_hex [ 1 ] , target_hex [ 2 ] ] ) ;
57500: LD_ADDR_EXP 124
57504: PUSH
57505: LD_EXP 124
57509: PPUSH
57510: LD_INT 1
57512: PPUSH
57513: LD_VAR 0 2
57517: PUSH
57518: LD_VAR 0 5
57522: PUSH
57523: LD_VAR 0 5
57527: PPUSH
57528: CALL_OW 255
57532: PUSH
57533: LD_VAR 0 7
57537: PUSH
57538: LD_INT 1
57540: ARRAY
57541: PUSH
57542: LD_VAR 0 7
57546: PUSH
57547: LD_INT 2
57549: ARRAY
57550: PUSH
57551: EMPTY
57552: LIST
57553: LIST
57554: LIST
57555: LIST
57556: LIST
57557: PPUSH
57558: CALL_OW 2
57562: ST_TO_ADDR
// temp_list = temp_list ^ un ;
57563: LD_ADDR_VAR 0 3
57567: PUSH
57568: LD_VAR 0 3
57572: PUSH
57573: LD_VAR 0 5
57577: ADD
57578: ST_TO_ADDR
// end ; end ;
57579: GO 57446
57581: POP
57582: POP
// end ; end ;
57583: GO 57200
57585: POP
57586: POP
// end ; end ;
57587: PPOPN 8
57589: END
// every 0 0$1 + 0 0$0.1 do var a , b , temp_list , temp_list_2 , yup , i , t ;
57590: GO 57592
57592: DISABLE
57593: LD_INT 0
57595: PPUSH
57596: PPUSH
57597: PPUSH
57598: PPUSH
57599: PPUSH
57600: PPUSH
57601: PPUSH
// begin repeat wait ( 0 0$0.5 ) ;
57602: LD_INT 18
57604: PPUSH
57605: CALL_OW 67
// i = 1 ;
57609: LD_ADDR_VAR 0 6
57613: PUSH
57614: LD_INT 1
57616: ST_TO_ADDR
// while i <= ai_attack_ground_info_initial do
57617: LD_VAR 0 6
57621: PUSH
57622: LD_EXP 124
57626: LESSEQUAL
57627: IFFALSE 57790
// begin yup = false ;
57629: LD_ADDR_VAR 0 5
57633: PUSH
57634: LD_INT 0
57636: ST_TO_ADDR
// for t in GetTaskList ( ai_attack_ground_info_initial [ i ] [ 1 ] ) do
57637: LD_ADDR_VAR 0 7
57641: PUSH
57642: LD_EXP 124
57646: PUSH
57647: LD_VAR 0 6
57651: ARRAY
57652: PUSH
57653: LD_INT 1
57655: ARRAY
57656: PPUSH
57657: CALL_OW 437
57661: PUSH
57662: FOR_IN
57663: IFFALSE 57743
// if t [ 1 ] = | then
57665: LD_VAR 0 7
57669: PUSH
57670: LD_INT 1
57672: ARRAY
57673: PUSH
57674: LD_STRING |
57676: EQUAL
57677: IFFALSE 57741
// if t [ 2 ] = ai_attack_ground_info_initial [ i ] [ 4 ] and t [ 3 ] = ai_attack_ground_info_initial [ i ] [ 5 ] then
57679: LD_VAR 0 7
57683: PUSH
57684: LD_INT 2
57686: ARRAY
57687: PUSH
57688: LD_EXP 124
57692: PUSH
57693: LD_VAR 0 6
57697: ARRAY
57698: PUSH
57699: LD_INT 4
57701: ARRAY
57702: EQUAL
57703: PUSH
57704: LD_VAR 0 7
57708: PUSH
57709: LD_INT 3
57711: ARRAY
57712: PUSH
57713: LD_EXP 124
57717: PUSH
57718: LD_VAR 0 6
57722: ARRAY
57723: PUSH
57724: LD_INT 5
57726: ARRAY
57727: EQUAL
57728: AND
57729: IFFALSE 57741
// begin yup = true ;
57731: LD_ADDR_VAR 0 5
57735: PUSH
57736: LD_INT 1
57738: ST_TO_ADDR
// break ;
57739: GO 57743
// end ;
57741: GO 57662
57743: POP
57744: POP
// if not yup then
57745: LD_VAR 0 5
57749: NOT
57750: IFFALSE 57774
// begin ai_attack_ground_info_initial = Delete ( ai_attack_ground_info_initial , i ) ;
57752: LD_ADDR_EXP 124
57756: PUSH
57757: LD_EXP 124
57761: PPUSH
57762: LD_VAR 0 6
57766: PPUSH
57767: CALL_OW 3
57771: ST_TO_ADDR
// continue ;
57772: GO 57617
// end ; i = i + 1 ;
57774: LD_ADDR_VAR 0 6
57778: PUSH
57779: LD_VAR 0 6
57783: PUSH
57784: LD_INT 1
57786: PLUS
57787: ST_TO_ADDR
// end ;
57788: GO 57617
// i = 1 ;
57790: LD_ADDR_VAR 0 6
57794: PUSH
57795: LD_INT 1
57797: ST_TO_ADDR
// while i <= ai_attack_ground_info_sustain do
57798: LD_VAR 0 6
57802: PUSH
57803: LD_EXP 125
57807: LESSEQUAL
57808: IFFALSE 57971
// begin yup = false ;
57810: LD_ADDR_VAR 0 5
57814: PUSH
57815: LD_INT 0
57817: ST_TO_ADDR
// for t in GetTaskList ( ai_attack_ground_info_sustain [ i ] [ 1 ] ) do
57818: LD_ADDR_VAR 0 7
57822: PUSH
57823: LD_EXP 125
57827: PUSH
57828: LD_VAR 0 6
57832: ARRAY
57833: PUSH
57834: LD_INT 1
57836: ARRAY
57837: PPUSH
57838: CALL_OW 437
57842: PUSH
57843: FOR_IN
57844: IFFALSE 57924
// if t [ 1 ] = | then
57846: LD_VAR 0 7
57850: PUSH
57851: LD_INT 1
57853: ARRAY
57854: PUSH
57855: LD_STRING |
57857: EQUAL
57858: IFFALSE 57922
// if t [ 2 ] = ai_attack_ground_info_sustain [ i ] [ 4 ] and t [ 3 ] = ai_attack_ground_info_sustain [ i ] [ 5 ] then
57860: LD_VAR 0 7
57864: PUSH
57865: LD_INT 2
57867: ARRAY
57868: PUSH
57869: LD_EXP 125
57873: PUSH
57874: LD_VAR 0 6
57878: ARRAY
57879: PUSH
57880: LD_INT 4
57882: ARRAY
57883: EQUAL
57884: PUSH
57885: LD_VAR 0 7
57889: PUSH
57890: LD_INT 3
57892: ARRAY
57893: PUSH
57894: LD_EXP 125
57898: PUSH
57899: LD_VAR 0 6
57903: ARRAY
57904: PUSH
57905: LD_INT 5
57907: ARRAY
57908: EQUAL
57909: AND
57910: IFFALSE 57922
// begin yup = true ;
57912: LD_ADDR_VAR 0 5
57916: PUSH
57917: LD_INT 1
57919: ST_TO_ADDR
// break ;
57920: GO 57924
// end ;
57922: GO 57843
57924: POP
57925: POP
// if not yup then
57926: LD_VAR 0 5
57930: NOT
57931: IFFALSE 57955
// begin ai_attack_ground_info_sustain = Delete ( ai_attack_ground_info_sustain , i ) ;
57933: LD_ADDR_EXP 125
57937: PUSH
57938: LD_EXP 125
57942: PPUSH
57943: LD_VAR 0 6
57947: PPUSH
57948: CALL_OW 3
57952: ST_TO_ADDR
// continue ;
57953: GO 57798
// end ; i = i + 1 ;
57955: LD_ADDR_VAR 0 6
57959: PUSH
57960: LD_VAR 0 6
57964: PUSH
57965: LD_INT 1
57967: PLUS
57968: ST_TO_ADDR
// end ;
57969: GO 57798
// temp_list = ai_contact_time ;
57971: LD_ADDR_VAR 0 3
57975: PUSH
57976: LD_EXP 123
57980: ST_TO_ADDR
// for a = 1 to temp_list do
57981: LD_ADDR_VAR 0 1
57985: PUSH
57986: DOUBLE
57987: LD_INT 1
57989: DEC
57990: ST_TO_ADDR
57991: LD_VAR 0 3
57995: PUSH
57996: FOR_TO
57997: IFFALSE 58123
// for b = 1 to temp_list [ a ] do
57999: LD_ADDR_VAR 0 2
58003: PUSH
58004: DOUBLE
58005: LD_INT 1
58007: DEC
58008: ST_TO_ADDR
58009: LD_VAR 0 3
58013: PUSH
58014: LD_VAR 0 1
58018: ARRAY
58019: PUSH
58020: FOR_TO
58021: IFFALSE 58119
// if temp_list [ a ] [ b ] < 100000 then
58023: LD_VAR 0 3
58027: PUSH
58028: LD_VAR 0 1
58032: ARRAY
58033: PUSH
58034: LD_VAR 0 2
58038: ARRAY
58039: PUSH
58040: LD_INT 100000
58042: LESS
58043: IFFALSE 58117
// begin temp_list_2 = Replace ( ai_contact_time [ a ] , b , temp_list [ a ] [ b ] + 0 0$0.5 ) ;
58045: LD_ADDR_VAR 0 4
58049: PUSH
58050: LD_EXP 123
58054: PUSH
58055: LD_VAR 0 1
58059: ARRAY
58060: PPUSH
58061: LD_VAR 0 2
58065: PPUSH
58066: LD_VAR 0 3
58070: PUSH
58071: LD_VAR 0 1
58075: ARRAY
58076: PUSH
58077: LD_VAR 0 2
58081: ARRAY
58082: PUSH
58083: LD_INT 18
58085: PLUS
58086: PPUSH
58087: CALL_OW 1
58091: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a , temp_list_2 ) ;
58092: LD_ADDR_EXP 123
58096: PUSH
58097: LD_EXP 123
58101: PPUSH
58102: LD_VAR 0 1
58106: PPUSH
58107: LD_VAR 0 4
58111: PPUSH
58112: CALL_OW 1
58116: ST_TO_ADDR
// end ;
58117: GO 58020
58119: POP
58120: POP
58121: GO 57996
58123: POP
58124: POP
// for a in ai_attack_ground_info_initial do
58125: LD_ADDR_VAR 0 1
58129: PUSH
58130: LD_EXP 124
58134: PUSH
58135: FOR_IN
58136: IFFALSE 58342
// begin if IsDead ( a [ 2 ] ) or UnitShoot ( a [ 2 ] ) = a [ 1 ] then
58138: LD_VAR 0 1
58142: PUSH
58143: LD_INT 2
58145: ARRAY
58146: PPUSH
58147: CALL_OW 301
58151: PUSH
58152: LD_VAR 0 1
58156: PUSH
58157: LD_INT 2
58159: ARRAY
58160: PPUSH
58161: CALL_OW 504
58165: PUSH
58166: LD_VAR 0 1
58170: PUSH
58171: LD_INT 1
58173: ARRAY
58174: EQUAL
58175: OR
58176: IFFALSE 58340
// begin temp_list = Replace ( ai_contact_time [ you ] , a [ 3 ] , 0 ) ;
58178: LD_ADDR_VAR 0 3
58182: PUSH
58183: LD_EXP 123
58187: PUSH
58188: LD_EXP 2
58192: ARRAY
58193: PPUSH
58194: LD_VAR 0 1
58198: PUSH
58199: LD_INT 3
58201: ARRAY
58202: PPUSH
58203: LD_INT 0
58205: PPUSH
58206: CALL_OW 1
58210: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , you , temp_list ) ;
58211: LD_ADDR_EXP 123
58215: PUSH
58216: LD_EXP 123
58220: PPUSH
58221: LD_EXP 2
58225: PPUSH
58226: LD_VAR 0 3
58230: PPUSH
58231: CALL_OW 1
58235: ST_TO_ADDR
// temp_list = Replace ( ai_contact_time [ a [ 3 ] ] , you , 0 ) ;
58236: LD_ADDR_VAR 0 3
58240: PUSH
58241: LD_EXP 123
58245: PUSH
58246: LD_VAR 0 1
58250: PUSH
58251: LD_INT 3
58253: ARRAY
58254: ARRAY
58255: PPUSH
58256: LD_EXP 2
58260: PPUSH
58261: LD_INT 0
58263: PPUSH
58264: CALL_OW 1
58268: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a [ 3 ] , temp_list ) ;
58269: LD_ADDR_EXP 123
58273: PUSH
58274: LD_EXP 123
58278: PPUSH
58279: LD_VAR 0 1
58283: PUSH
58284: LD_INT 3
58286: ARRAY
58287: PPUSH
58288: LD_VAR 0 3
58292: PPUSH
58293: CALL_OW 1
58297: ST_TO_ADDR
// ai_attack_ground_info_initial = ai_attack_ground_info_initial diff [ a ] ;
58298: LD_ADDR_EXP 124
58302: PUSH
58303: LD_EXP 124
58307: PUSH
58308: LD_VAR 0 1
58312: PUSH
58313: EMPTY
58314: LIST
58315: DIFF
58316: ST_TO_ADDR
// ai_attack_ground_info_sustain = Insert ( ai_attack_ground_info_sustain , 1 , a ) ;
58317: LD_ADDR_EXP 125
58321: PUSH
58322: LD_EXP 125
58326: PPUSH
58327: LD_INT 1
58329: PPUSH
58330: LD_VAR 0 1
58334: PPUSH
58335: CALL_OW 2
58339: ST_TO_ADDR
// end ; end ;
58340: GO 58135
58342: POP
58343: POP
// for a in ai_attack_ground_info_sustain do
58344: LD_ADDR_VAR 0 1
58348: PUSH
58349: LD_EXP 125
58353: PUSH
58354: FOR_IN
58355: IFFALSE 58479
// begin temp_list = Replace ( ai_contact_time [ you ] , a [ 3 ] , 0 ) ;
58357: LD_ADDR_VAR 0 3
58361: PUSH
58362: LD_EXP 123
58366: PUSH
58367: LD_EXP 2
58371: ARRAY
58372: PPUSH
58373: LD_VAR 0 1
58377: PUSH
58378: LD_INT 3
58380: ARRAY
58381: PPUSH
58382: LD_INT 0
58384: PPUSH
58385: CALL_OW 1
58389: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , you , temp_list ) ;
58390: LD_ADDR_EXP 123
58394: PUSH
58395: LD_EXP 123
58399: PPUSH
58400: LD_EXP 2
58404: PPUSH
58405: LD_VAR 0 3
58409: PPUSH
58410: CALL_OW 1
58414: ST_TO_ADDR
// temp_list = Replace ( ai_contact_time [ a [ 3 ] ] , you , 0 ) ;
58415: LD_ADDR_VAR 0 3
58419: PUSH
58420: LD_EXP 123
58424: PUSH
58425: LD_VAR 0 1
58429: PUSH
58430: LD_INT 3
58432: ARRAY
58433: ARRAY
58434: PPUSH
58435: LD_EXP 2
58439: PPUSH
58440: LD_INT 0
58442: PPUSH
58443: CALL_OW 1
58447: ST_TO_ADDR
// ai_contact_time = Replace ( ai_contact_time , a [ 3 ] , temp_list ) ;
58448: LD_ADDR_EXP 123
58452: PUSH
58453: LD_EXP 123
58457: PPUSH
58458: LD_VAR 0 1
58462: PUSH
58463: LD_INT 3
58465: ARRAY
58466: PPUSH
58467: LD_VAR 0 3
58471: PPUSH
58472: CALL_OW 1
58476: ST_TO_ADDR
// end ;
58477: GO 58354
58479: POP
58480: POP
// until false ;
58481: LD_INT 0
58483: IFFALSE 57602
// end ;
58485: PPOPN 7
58487: END
// every 0 0$1 + 0 0$0.4 do var side , i , j , mechanics_list , temp_list , temp_list_3 , temp_unit , temp , vehicles_list , allowed_to_repair_vehicles ; var under_attack , free_parking_spots , k , base , area , temp_list_2 , remote_mechanics , parked_vehicles , n , a ; var temp_list_4 , temp_list_5 , num_control_stations , free_behemoth_parking_spots , parked_behemoths , already_inside_mecs ; var vehicles_to_consider , vehicles_allowed_to_park , human_pullback_hex_max_dist , vehicles_to_park ; var vehicles_drivers , remote_driver_vehicles , pullback_hex , pullback_hex_patrol , patrol_units , pullback_hex_hovercrafts ;
58488: GO 58490
58490: DISABLE
58491: LD_INT 0
58493: PPUSH
58494: PPUSH
58495: PPUSH
58496: PPUSH
58497: PPUSH
58498: PPUSH
58499: PPUSH
58500: PPUSH
58501: PPUSH
58502: PPUSH
58503: PPUSH
58504: PPUSH
58505: PPUSH
58506: PPUSH
58507: PPUSH
58508: PPUSH
58509: PPUSH
58510: PPUSH
58511: PPUSH
58512: PPUSH
58513: PPUSH
58514: PPUSH
58515: PPUSH
58516: PPUSH
58517: PPUSH
58518: PPUSH
58519: PPUSH
58520: PPUSH
58521: PPUSH
58522: PPUSH
58523: PPUSH
58524: PPUSH
58525: PPUSH
58526: PPUSH
58527: PPUSH
58528: PPUSH
// begin vehicles_drivers = [ ] ;
58529: LD_ADDR_VAR 0 31
58533: PUSH
58534: EMPTY
58535: ST_TO_ADDR
// remote_driver_vehicles = [ [ ] , [ ] , [ ] ] ;
58536: LD_ADDR_VAR 0 32
58540: PUSH
58541: EMPTY
58542: PUSH
58543: EMPTY
58544: PUSH
58545: EMPTY
58546: PUSH
58547: EMPTY
58548: LIST
58549: LIST
58550: LIST
58551: ST_TO_ADDR
// repeat if ai_bases = 0 then
58552: LD_EXP 49
58556: PUSH
58557: LD_INT 0
58559: EQUAL
58560: IFFALSE 58564
// exit ;
58562: GO 69107
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
58564: LD_INT 35
58566: PUSH
58567: LD_EXP 49
58571: PUSH
58572: LD_INT 0
58574: PLUS
58575: MOD
58576: PPUSH
58577: CALL_OW 67
// for base in ai_bases do
58581: LD_ADDR_VAR 0 14
58585: PUSH
58586: LD_EXP 49
58590: PUSH
58591: FOR_IN
58592: IFFALSE 69101
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
58594: LD_INT 35
58596: PUSH
58597: LD_EXP 49
58601: PUSH
58602: LD_INT 0
58604: PLUS
58605: DIV
58606: PPUSH
58607: CALL_OW 67
// side = GetBaseSide ( base ) ;
58611: LD_ADDR_VAR 0 1
58615: PUSH
58616: LD_VAR 0 14
58620: PPUSH
58621: CALL 40471 0 1
58625: ST_TO_ADDR
// area = GetBaseArea ( base ) ;
58626: LD_ADDR_VAR 0 15
58630: PUSH
58631: LD_VAR 0 14
58635: PPUSH
58636: CALL 40400 0 1
58640: ST_TO_ADDR
// under_attack = BaseUnderAttack ( base , - 1 ) ;
58641: LD_ADDR_VAR 0 11
58645: PUSH
58646: LD_VAR 0 14
58650: PPUSH
58651: LD_INT 1
58653: NEG
58654: PPUSH
58655: CALL 55912 0 2
58659: ST_TO_ADDR
// for i in ai_vehicles_defend [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] do
58660: LD_ADDR_VAR 0 2
58664: PUSH
58665: LD_EXP 77
58669: PUSH
58670: LD_VAR 0 14
58674: ARRAY
58675: PUSH
58676: LD_EXP 110
58680: PUSH
58681: LD_VAR 0 14
58685: ARRAY
58686: ADD
58687: PUSH
58688: LD_EXP 111
58692: PUSH
58693: LD_VAR 0 14
58697: ARRAY
58698: ADD
58699: PUSH
58700: FOR_IN
58701: IFFALSE 58796
// if vehicles_drivers >= i then
58703: LD_VAR 0 31
58707: PUSH
58708: LD_VAR 0 2
58712: GREATEREQUAL
58713: IFFALSE 58794
// if vehicles_drivers [ i ] > 0 then
58715: LD_VAR 0 31
58719: PUSH
58720: LD_VAR 0 2
58724: ARRAY
58725: PUSH
58726: LD_INT 0
58728: GREATER
58729: IFFALSE 58794
// if IsInUnit ( vehicles_drivers [ i ] ) = i or IsDead ( vehicles_drivers [ i ] ) then
58731: LD_VAR 0 31
58735: PUSH
58736: LD_VAR 0 2
58740: ARRAY
58741: PPUSH
58742: CALL_OW 310
58746: PUSH
58747: LD_VAR 0 2
58751: EQUAL
58752: PUSH
58753: LD_VAR 0 31
58757: PUSH
58758: LD_VAR 0 2
58762: ARRAY
58763: PPUSH
58764: CALL_OW 301
58768: OR
58769: IFFALSE 58794
// vehicles_drivers = Replace ( vehicles_drivers , i , 0 ) ;
58771: LD_ADDR_VAR 0 31
58775: PUSH
58776: LD_VAR 0 31
58780: PPUSH
58781: LD_VAR 0 2
58785: PPUSH
58786: LD_INT 0
58788: PPUSH
58789: CALL_OW 1
58793: ST_TO_ADDR
58794: GO 58700
58796: POP
58797: POP
// if ai_crane [ base ] > 0 and GetControl ( ai_crane [ base ] ) = control_manual and ai_crane_driver [ base ] = 0 and ai_mechanics_defend [ base ] > 0 then
58798: LD_EXP 98
58802: PUSH
58803: LD_VAR 0 14
58807: ARRAY
58808: PUSH
58809: LD_INT 0
58811: GREATER
58812: PUSH
58813: LD_EXP 98
58817: PUSH
58818: LD_VAR 0 14
58822: ARRAY
58823: PPUSH
58824: CALL_OW 263
58828: PUSH
58829: LD_INT 1
58831: EQUAL
58832: AND
58833: PUSH
58834: LD_EXP 102
58838: PUSH
58839: LD_VAR 0 14
58843: ARRAY
58844: PUSH
58845: LD_INT 0
58847: EQUAL
58848: AND
58849: PUSH
58850: LD_EXP 53
58854: PUSH
58855: LD_VAR 0 14
58859: ARRAY
58860: PUSH
58861: LD_INT 0
58863: GREATER
58864: AND
58865: IFFALSE 59016
// begin ai_crane_driver = Replace ( ai_crane_driver , base , FindBestCraneDriver ( base ) ) ;
58867: LD_ADDR_EXP 102
58871: PUSH
58872: LD_EXP 102
58876: PPUSH
58877: LD_VAR 0 14
58881: PPUSH
58882: LD_VAR 0 14
58886: PPUSH
58887: CALL 69421 0 1
58891: PPUSH
58892: CALL_OW 1
58896: ST_TO_ADDR
// for i = 1 to remote_driver_vehicles [ base ] + 0 do
58897: LD_ADDR_VAR 0 2
58901: PUSH
58902: DOUBLE
58903: LD_INT 1
58905: DEC
58906: ST_TO_ADDR
58907: LD_VAR 0 32
58911: PUSH
58912: LD_VAR 0 14
58916: ARRAY
58917: PUSH
58918: LD_INT 0
58920: PLUS
58921: PUSH
58922: FOR_TO
58923: IFFALSE 59014
// if remote_driver_vehicles [ base ] [ i ] [ 1 ] = ai_crane_driver [ base ] then
58925: LD_VAR 0 32
58929: PUSH
58930: LD_VAR 0 14
58934: ARRAY
58935: PUSH
58936: LD_VAR 0 2
58940: ARRAY
58941: PUSH
58942: LD_INT 1
58944: ARRAY
58945: PUSH
58946: LD_EXP 102
58950: PUSH
58951: LD_VAR 0 14
58955: ARRAY
58956: EQUAL
58957: IFFALSE 59012
// begin temp_list = Delete ( remote_driver_vehicles [ base ] , i ) ;
58959: LD_ADDR_VAR 0 5
58963: PUSH
58964: LD_VAR 0 32
58968: PUSH
58969: LD_VAR 0 14
58973: ARRAY
58974: PPUSH
58975: LD_VAR 0 2
58979: PPUSH
58980: CALL_OW 3
58984: ST_TO_ADDR
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list ) ;
58985: LD_ADDR_VAR 0 32
58989: PUSH
58990: LD_VAR 0 32
58994: PPUSH
58995: LD_VAR 0 14
58999: PPUSH
59000: LD_VAR 0 5
59004: PPUSH
59005: CALL_OW 1
59009: ST_TO_ADDR
// break ;
59010: GO 59014
// end ;
59012: GO 58922
59014: POP
59015: POP
// end ; mechanics_list = UnitFilter ( ai_mechanics_defend [ base ] diff ( ai_heal_these_humans [ base ] ^ ai_crane_driver [ base ] ) , [ f_not , [ f_driving ] ] ) ;
59016: LD_ADDR_VAR 0 4
59020: PUSH
59021: LD_EXP 53
59025: PUSH
59026: LD_VAR 0 14
59030: ARRAY
59031: PUSH
59032: LD_EXP 85
59036: PUSH
59037: LD_VAR 0 14
59041: ARRAY
59042: PUSH
59043: LD_EXP 102
59047: PUSH
59048: LD_VAR 0 14
59052: ARRAY
59053: ADD
59054: DIFF
59055: PPUSH
59056: LD_INT 3
59058: PUSH
59059: LD_INT 55
59061: PUSH
59062: EMPTY
59063: LIST
59064: PUSH
59065: EMPTY
59066: LIST
59067: LIST
59068: PPUSH
59069: CALL_OW 72
59073: ST_TO_ADDR
// if ai_crane_driver [ base ] > 0 and not IsOk ( ai_crane [ base ] ) then
59074: LD_EXP 102
59078: PUSH
59079: LD_VAR 0 14
59083: ARRAY
59084: PUSH
59085: LD_INT 0
59087: GREATER
59088: PUSH
59089: LD_EXP 98
59093: PUSH
59094: LD_VAR 0 14
59098: ARRAY
59099: PPUSH
59100: CALL_OW 302
59104: NOT
59105: AND
59106: IFFALSE 59130
// mechanics_list = mechanics_list ^ ai_crane_driver [ base ] ;
59108: LD_ADDR_VAR 0 4
59112: PUSH
59113: LD_VAR 0 4
59117: PUSH
59118: LD_EXP 102
59122: PUSH
59123: LD_VAR 0 14
59127: ARRAY
59128: ADD
59129: ST_TO_ADDR
// remote_mechanics = [ ] ;
59130: LD_ADDR_VAR 0 17
59134: PUSH
59135: EMPTY
59136: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
59137: LD_ADDR_VAR 0 5
59141: PUSH
59142: LD_EXP 85
59146: PUSH
59147: LD_VAR 0 14
59151: ARRAY
59152: ST_TO_ADDR
// i = 1 ;
59153: LD_ADDR_VAR 0 2
59157: PUSH
59158: LD_INT 1
59160: ST_TO_ADDR
// while i <= mechanics_list do
59161: LD_VAR 0 2
59165: PUSH
59166: LD_VAR 0 4
59170: LESSEQUAL
59171: IFFALSE 59254
// begin if GetLives ( mechanics_list [ i ] ) <= 900 then
59173: LD_VAR 0 4
59177: PUSH
59178: LD_VAR 0 2
59182: ARRAY
59183: PPUSH
59184: CALL_OW 256
59188: PUSH
59189: LD_INT 900
59191: LESSEQUAL
59192: IFFALSE 59238
// begin temp_list = temp_list ^ mechanics_list [ i ] ;
59194: LD_ADDR_VAR 0 5
59198: PUSH
59199: LD_VAR 0 5
59203: PUSH
59204: LD_VAR 0 4
59208: PUSH
59209: LD_VAR 0 2
59213: ARRAY
59214: ADD
59215: ST_TO_ADDR
// mechanics_list = Delete ( mechanics_list , i ) ;
59216: LD_ADDR_VAR 0 4
59220: PUSH
59221: LD_VAR 0 4
59225: PPUSH
59226: LD_VAR 0 2
59230: PPUSH
59231: CALL_OW 3
59235: ST_TO_ADDR
// continue ;
59236: GO 59161
// end ; i = i + 1 ;
59238: LD_ADDR_VAR 0 2
59242: PUSH
59243: LD_VAR 0 2
59247: PUSH
59248: LD_INT 1
59250: PLUS
59251: ST_TO_ADDR
// end ;
59252: GO 59161
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
59254: LD_ADDR_EXP 85
59258: PUSH
59259: LD_EXP 85
59263: PPUSH
59264: LD_VAR 0 14
59268: PPUSH
59269: LD_VAR 0 5
59273: PPUSH
59274: CALL_OW 1
59278: ST_TO_ADDR
// if ai_control_tower [ base ] > 0 or ai_control_tower_vehicles [ base ] > 0 then
59279: LD_EXP 69
59283: PUSH
59284: LD_VAR 0 14
59288: ARRAY
59289: PUSH
59290: LD_INT 0
59292: GREATER
59293: PUSH
59294: LD_EXP 105
59298: PUSH
59299: LD_VAR 0 14
59303: ARRAY
59304: PUSH
59305: LD_INT 0
59307: GREATER
59308: OR
59309: IFFALSE 61089
// begin temp_list = remote_driver_vehicles [ base ] ;
59311: LD_ADDR_VAR 0 5
59315: PUSH
59316: LD_VAR 0 32
59320: PUSH
59321: LD_VAR 0 14
59325: ARRAY
59326: ST_TO_ADDR
// vehicles_list = [ ] ;
59327: LD_ADDR_VAR 0 9
59331: PUSH
59332: EMPTY
59333: ST_TO_ADDR
// i = 1 ;
59334: LD_ADDR_VAR 0 2
59338: PUSH
59339: LD_INT 1
59341: ST_TO_ADDR
// while i <= temp_list do
59342: LD_VAR 0 2
59346: PUSH
59347: LD_VAR 0 5
59351: LESSEQUAL
59352: IFFALSE 59624
// begin if IsDead ( temp_list [ i ] [ 1 ] ) then
59354: LD_VAR 0 5
59358: PUSH
59359: LD_VAR 0 2
59363: ARRAY
59364: PUSH
59365: LD_INT 1
59367: ARRAY
59368: PPUSH
59369: CALL_OW 301
59373: IFFALSE 59399
// begin temp_list = Delete ( temp_list , i ) ;
59375: LD_ADDR_VAR 0 5
59379: PUSH
59380: LD_VAR 0 5
59384: PPUSH
59385: LD_VAR 0 2
59389: PPUSH
59390: CALL_OW 3
59394: ST_TO_ADDR
// continue ;
59395: GO 59342
// end else
59397: GO 59582
// begin temp_list_3 = temp_list [ i ] [ 2 ] ;
59399: LD_ADDR_VAR 0 6
59403: PUSH
59404: LD_VAR 0 5
59408: PUSH
59409: LD_VAR 0 2
59413: ARRAY
59414: PUSH
59415: LD_INT 2
59417: ARRAY
59418: ST_TO_ADDR
// k = 1 ;
59419: LD_ADDR_VAR 0 13
59423: PUSH
59424: LD_INT 1
59426: ST_TO_ADDR
// while k <= temp_list_3 do
59427: LD_VAR 0 13
59431: PUSH
59432: LD_VAR 0 6
59436: LESSEQUAL
59437: IFFALSE 59494
// begin if IsDead ( temp_list_3 [ k ] ) then
59439: LD_VAR 0 6
59443: PUSH
59444: LD_VAR 0 13
59448: ARRAY
59449: PPUSH
59450: CALL_OW 301
59454: IFFALSE 59478
// begin temp_list_3 = Delete ( temp_list_3 , k ) ;
59456: LD_ADDR_VAR 0 6
59460: PUSH
59461: LD_VAR 0 6
59465: PPUSH
59466: LD_VAR 0 13
59470: PPUSH
59471: CALL_OW 3
59475: ST_TO_ADDR
// continue ;
59476: GO 59427
// end ; k = k + 1 ;
59478: LD_ADDR_VAR 0 13
59482: PUSH
59483: LD_VAR 0 13
59487: PUSH
59488: LD_INT 1
59490: PLUS
59491: ST_TO_ADDR
// end ;
59492: GO 59427
// if temp_list_3 > 0 then
59494: LD_VAR 0 6
59498: PUSH
59499: LD_INT 0
59501: GREATER
59502: IFFALSE 59560
// begin temp_list_2 = Replace ( temp_list [ i ] , 2 , temp_list_3 ) ;
59504: LD_ADDR_VAR 0 16
59508: PUSH
59509: LD_VAR 0 5
59513: PUSH
59514: LD_VAR 0 2
59518: ARRAY
59519: PPUSH
59520: LD_INT 2
59522: PPUSH
59523: LD_VAR 0 6
59527: PPUSH
59528: CALL_OW 1
59532: ST_TO_ADDR
// temp_list = Replace ( temp_list , i , temp_list_2 ) ;
59533: LD_ADDR_VAR 0 5
59537: PUSH
59538: LD_VAR 0 5
59542: PPUSH
59543: LD_VAR 0 2
59547: PPUSH
59548: LD_VAR 0 16
59552: PPUSH
59553: CALL_OW 1
59557: ST_TO_ADDR
// end else
59558: GO 59582
// begin temp_list = Delete ( temp_list , i ) ;
59560: LD_ADDR_VAR 0 5
59564: PUSH
59565: LD_VAR 0 5
59569: PPUSH
59570: LD_VAR 0 2
59574: PPUSH
59575: CALL_OW 3
59579: ST_TO_ADDR
// continue ;
59580: GO 59342
// end ; end ; vehicles_list = vehicles_list ^ temp_list [ i ] [ 2 ] ;
59582: LD_ADDR_VAR 0 9
59586: PUSH
59587: LD_VAR 0 9
59591: PUSH
59592: LD_VAR 0 5
59596: PUSH
59597: LD_VAR 0 2
59601: ARRAY
59602: PUSH
59603: LD_INT 2
59605: ARRAY
59606: ADD
59607: ST_TO_ADDR
// i = i + 1 ;
59608: LD_ADDR_VAR 0 2
59612: PUSH
59613: LD_VAR 0 2
59617: PUSH
59618: LD_INT 1
59620: PLUS
59621: ST_TO_ADDR
// end ;
59622: GO 59342
// num_control_stations = [ 7 , 0 , ai_control_tower [ base ] * 3 ] [ base ] ;
59624: LD_ADDR_VAR 0 23
59628: PUSH
59629: LD_INT 7
59631: PUSH
59632: LD_INT 0
59634: PUSH
59635: LD_EXP 69
59639: PUSH
59640: LD_VAR 0 14
59644: ARRAY
59645: PUSH
59646: LD_INT 3
59648: MUL
59649: PUSH
59650: EMPTY
59651: LIST
59652: LIST
59653: LIST
59654: PUSH
59655: LD_VAR 0 14
59659: ARRAY
59660: ST_TO_ADDR
// while temp_list > num_control_stations do
59661: LD_VAR 0 5
59665: PUSH
59666: LD_VAR 0 23
59670: GREATER
59671: IFFALSE 59729
// begin vehicles_list = vehicles_list diff temp_list [ temp_list + 0 ] [ 2 ] ;
59673: LD_ADDR_VAR 0 9
59677: PUSH
59678: LD_VAR 0 9
59682: PUSH
59683: LD_VAR 0 5
59687: PUSH
59688: LD_VAR 0 5
59692: PUSH
59693: LD_INT 0
59695: PLUS
59696: ARRAY
59697: PUSH
59698: LD_INT 2
59700: ARRAY
59701: DIFF
59702: ST_TO_ADDR
// temp_list = Delete ( temp_list , temp_list + 0 ) ;
59703: LD_ADDR_VAR 0 5
59707: PUSH
59708: LD_VAR 0 5
59712: PPUSH
59713: LD_VAR 0 5
59717: PUSH
59718: LD_INT 0
59720: PLUS
59721: PPUSH
59722: CALL_OW 3
59726: ST_TO_ADDR
// end ;
59727: GO 59661
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list ) ;
59729: LD_ADDR_VAR 0 32
59733: PUSH
59734: LD_VAR 0 32
59738: PPUSH
59739: LD_VAR 0 14
59743: PPUSH
59744: LD_VAR 0 5
59748: PPUSH
59749: CALL_OW 1
59753: ST_TO_ADDR
// if base = 1 then
59754: LD_VAR 0 14
59758: PUSH
59759: LD_INT 1
59761: EQUAL
59762: IFFALSE 59789
// patrol_units = ai_patrol [ 1 ] diff - 1 ^ 0 else
59764: LD_ADDR_VAR 0 35
59768: PUSH
59769: LD_EXP 183
59773: PUSH
59774: LD_INT 1
59776: ARRAY
59777: PUSH
59778: LD_INT 1
59780: NEG
59781: PUSH
59782: LD_INT 0
59784: ADD
59785: DIFF
59786: ST_TO_ADDR
59787: GO 59831
// if base = 3 then
59789: LD_VAR 0 14
59793: PUSH
59794: LD_INT 3
59796: EQUAL
59797: IFFALSE 59824
// patrol_units = ai_patrol [ 2 ] diff - 1 ^ 0 else
59799: LD_ADDR_VAR 0 35
59803: PUSH
59804: LD_EXP 183
59808: PUSH
59809: LD_INT 2
59811: ARRAY
59812: PUSH
59813: LD_INT 1
59815: NEG
59816: PUSH
59817: LD_INT 0
59819: ADD
59820: DIFF
59821: ST_TO_ADDR
59822: GO 59831
// patrol_units = [ ] ;
59824: LD_ADDR_VAR 0 35
59828: PUSH
59829: EMPTY
59830: ST_TO_ADDR
// if base = 1 then
59831: LD_VAR 0 14
59835: PUSH
59836: LD_INT 1
59838: EQUAL
59839: IFFALSE 59860
// i = ai_hovercrafts diff 0 ^ - 1 ;
59841: LD_ADDR_VAR 0 2
59845: PUSH
59846: LD_EXP 148
59850: PUSH
59851: LD_INT 0
59853: PUSH
59854: LD_INT 1
59856: NEG
59857: ADD
59858: DIFF
59859: ST_TO_ADDR
// temp_list = UnitFilter ( ( ai_vehicles_defend [ base ] ^ ( ai_cargo_bay [ base ] diff 0 ) ^ ( ai_crane [ base ] diff 0 ) ^ ( patrol_units ) ^ ( i ) ^ ai_vehicles_attack [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ ai_sib_bomb_vehicles [ base ] ) diff vehicles_list , [ f_control , control_remote ] ) ;
59860: LD_ADDR_VAR 0 5
59864: PUSH
59865: LD_EXP 77
59869: PUSH
59870: LD_VAR 0 14
59874: ARRAY
59875: PUSH
59876: LD_EXP 95
59880: PUSH
59881: LD_VAR 0 14
59885: ARRAY
59886: PUSH
59887: LD_INT 0
59889: DIFF
59890: ADD
59891: PUSH
59892: LD_EXP 98
59896: PUSH
59897: LD_VAR 0 14
59901: ARRAY
59902: PUSH
59903: LD_INT 0
59905: DIFF
59906: ADD
59907: PUSH
59908: LD_VAR 0 35
59912: ADD
59913: PUSH
59914: LD_VAR 0 2
59918: ADD
59919: PUSH
59920: LD_EXP 78
59924: PUSH
59925: LD_VAR 0 14
59929: ARRAY
59930: ADD
59931: PUSH
59932: LD_EXP 110
59936: PUSH
59937: LD_VAR 0 14
59941: ARRAY
59942: ADD
59943: PUSH
59944: LD_EXP 111
59948: PUSH
59949: LD_VAR 0 14
59953: ARRAY
59954: ADD
59955: PUSH
59956: LD_EXP 117
59960: PUSH
59961: LD_VAR 0 14
59965: ARRAY
59966: ADD
59967: PUSH
59968: LD_VAR 0 9
59972: DIFF
59973: PPUSH
59974: LD_INT 33
59976: PUSH
59977: LD_INT 2
59979: PUSH
59980: EMPTY
59981: LIST
59982: LIST
59983: PPUSH
59984: CALL_OW 72
59988: ST_TO_ADDR
// if temp_list > 0 then
59989: LD_VAR 0 5
59993: PUSH
59994: LD_INT 0
59996: GREATER
59997: IFFALSE 60745
// begin temp_list_3 = mechanics_list ;
59999: LD_ADDR_VAR 0 6
60003: PUSH
60004: LD_VAR 0 4
60008: ST_TO_ADDR
// for i in remote_driver_vehicles [ base ] do
60009: LD_ADDR_VAR 0 2
60013: PUSH
60014: LD_VAR 0 32
60018: PUSH
60019: LD_VAR 0 14
60023: ARRAY
60024: PUSH
60025: FOR_IN
60026: IFFALSE 60050
// temp_list_3 = temp_list_3 diff i [ 1 ] ;
60028: LD_ADDR_VAR 0 6
60032: PUSH
60033: LD_VAR 0 6
60037: PUSH
60038: LD_VAR 0 2
60042: PUSH
60043: LD_INT 1
60045: ARRAY
60046: DIFF
60047: ST_TO_ADDR
60048: GO 60025
60050: POP
60051: POP
// if temp_list_3 > 0 then
60052: LD_VAR 0 6
60056: PUSH
60057: LD_INT 0
60059: GREATER
60060: IFFALSE 60086
// temp_list_3 = temp_list_3 diff FindMinSkill ( temp_list_3 , skill_mechanical ) ;
60062: LD_ADDR_VAR 0 6
60066: PUSH
60067: LD_VAR 0 6
60071: PUSH
60072: LD_VAR 0 6
60076: PPUSH
60077: LD_INT 3
60079: PPUSH
60080: CALL_OW 443
60084: DIFF
60085: ST_TO_ADDR
// i = 1 ;
60086: LD_ADDR_VAR 0 2
60090: PUSH
60091: LD_INT 1
60093: ST_TO_ADDR
// while i <= temp_list do
60094: LD_VAR 0 2
60098: PUSH
60099: LD_VAR 0 5
60103: LESSEQUAL
60104: IFFALSE 60745
// begin a = 1 ;
60106: LD_ADDR_VAR 0 20
60110: PUSH
60111: LD_INT 1
60113: ST_TO_ADDR
// while a <= remote_driver_vehicles [ base ] do
60114: LD_VAR 0 20
60118: PUSH
60119: LD_VAR 0 32
60123: PUSH
60124: LD_VAR 0 14
60128: ARRAY
60129: LESSEQUAL
60130: IFFALSE 60210
// begin if remote_driver_vehicles [ base ] [ a ] [ 2 ] < 2 and GetSkill ( remote_driver_vehicles [ base ] [ a ] [ 1 ] , skill_mechanical ) >= 2 then
60132: LD_VAR 0 32
60136: PUSH
60137: LD_VAR 0 14
60141: ARRAY
60142: PUSH
60143: LD_VAR 0 20
60147: ARRAY
60148: PUSH
60149: LD_INT 2
60151: ARRAY
60152: PUSH
60153: LD_INT 2
60155: LESS
60156: PUSH
60157: LD_VAR 0 32
60161: PUSH
60162: LD_VAR 0 14
60166: ARRAY
60167: PUSH
60168: LD_VAR 0 20
60172: ARRAY
60173: PUSH
60174: LD_INT 1
60176: ARRAY
60177: PPUSH
60178: LD_INT 3
60180: PPUSH
60181: CALL_OW 259
60185: PUSH
60186: LD_INT 2
60188: GREATEREQUAL
60189: AND
60190: IFFALSE 60194
// break ;
60192: GO 60210
// a = a + 1 ;
60194: LD_ADDR_VAR 0 20
60198: PUSH
60199: LD_VAR 0 20
60203: PUSH
60204: LD_INT 1
60206: PLUS
60207: ST_TO_ADDR
// end ;
60208: GO 60114
// if a > remote_driver_vehicles [ base ] then
60210: LD_VAR 0 20
60214: PUSH
60215: LD_VAR 0 32
60219: PUSH
60220: LD_VAR 0 14
60224: ARRAY
60225: GREATER
60226: IFFALSE 60600
// begin if remote_driver_vehicles [ base ] >= num_control_stations then
60228: LD_VAR 0 32
60232: PUSH
60233: LD_VAR 0 14
60237: ARRAY
60238: PUSH
60239: LD_VAR 0 23
60243: GREATEREQUAL
60244: IFFALSE 60253
// begin temp_list_3 = [ ] ;
60246: LD_ADDR_VAR 0 6
60250: PUSH
60251: EMPTY
60252: ST_TO_ADDR
// end ; if temp_list_3 > 0 then
60253: LD_VAR 0 6
60257: PUSH
60258: LD_INT 0
60260: GREATER
60261: IFFALSE 60381
// begin temp_unit = FindMaxSkill ( temp_list_3 , skill_mechanical ) ;
60263: LD_ADDR_VAR 0 7
60267: PUSH
60268: LD_VAR 0 6
60272: PPUSH
60273: LD_INT 3
60275: PPUSH
60276: CALL_OW 433
60280: ST_TO_ADDR
// temp_list_3 = temp_list_3 diff temp_unit ;
60281: LD_ADDR_VAR 0 6
60285: PUSH
60286: LD_VAR 0 6
60290: PUSH
60291: LD_VAR 0 7
60295: DIFF
60296: ST_TO_ADDR
// temp_list_2 = remote_driver_vehicles [ base ] ^ [ [ temp_unit , [ temp_list [ i ] ] ] ] ;
60297: LD_ADDR_VAR 0 16
60301: PUSH
60302: LD_VAR 0 32
60306: PUSH
60307: LD_VAR 0 14
60311: ARRAY
60312: PUSH
60313: LD_VAR 0 7
60317: PUSH
60318: LD_VAR 0 5
60322: PUSH
60323: LD_VAR 0 2
60327: ARRAY
60328: PUSH
60329: EMPTY
60330: LIST
60331: PUSH
60332: EMPTY
60333: LIST
60334: LIST
60335: PUSH
60336: EMPTY
60337: LIST
60338: ADD
60339: ST_TO_ADDR
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list_2 ) ;
60340: LD_ADDR_VAR 0 32
60344: PUSH
60345: LD_VAR 0 32
60349: PPUSH
60350: LD_VAR 0 14
60354: PPUSH
60355: LD_VAR 0 16
60359: PPUSH
60360: CALL_OW 1
60364: ST_TO_ADDR
// i = i + 1 ;
60365: LD_ADDR_VAR 0 2
60369: PUSH
60370: LD_VAR 0 2
60374: PUSH
60375: LD_INT 1
60377: PLUS
60378: ST_TO_ADDR
// continue ;
60379: GO 60094
// end ; temp_list_4 = [ ] ;
60381: LD_ADDR_VAR 0 21
60385: PUSH
60386: EMPTY
60387: ST_TO_ADDR
// for a in remote_driver_vehicles [ base ] do
60388: LD_ADDR_VAR 0 20
60392: PUSH
60393: LD_VAR 0 32
60397: PUSH
60398: LD_VAR 0 14
60402: ARRAY
60403: PUSH
60404: FOR_IN
60405: IFFALSE 60456
// if GetSkill ( a [ 1 ] , skill_mechanical ) > a [ 2 ] then
60407: LD_VAR 0 20
60411: PUSH
60412: LD_INT 1
60414: ARRAY
60415: PPUSH
60416: LD_INT 3
60418: PPUSH
60419: CALL_OW 259
60423: PUSH
60424: LD_VAR 0 20
60428: PUSH
60429: LD_INT 2
60431: ARRAY
60432: GREATER
60433: IFFALSE 60454
// temp_list_4 = temp_list_4 ^ [ a ] ;
60435: LD_ADDR_VAR 0 21
60439: PUSH
60440: LD_VAR 0 21
60444: PUSH
60445: LD_VAR 0 20
60449: PUSH
60450: EMPTY
60451: LIST
60452: ADD
60453: ST_TO_ADDR
60454: GO 60404
60456: POP
60457: POP
// if temp_list_4 = 0 then
60458: LD_VAR 0 21
60462: PUSH
60463: LD_INT 0
60465: EQUAL
60466: IFFALSE 60470
// break ;
60468: GO 60745
// temp_list_2 = [ ] ;
60470: LD_ADDR_VAR 0 16
60474: PUSH
60475: EMPTY
60476: ST_TO_ADDR
// for a in temp_list_4 do
60477: LD_ADDR_VAR 0 20
60481: PUSH
60482: LD_VAR 0 21
60486: PUSH
60487: FOR_IN
60488: IFFALSE 60516
// temp_list_2 = temp_list_2 ^ ( a [ 2 ] + 0 ) ;
60490: LD_ADDR_VAR 0 16
60494: PUSH
60495: LD_VAR 0 16
60499: PUSH
60500: LD_VAR 0 20
60504: PUSH
60505: LD_INT 2
60507: ARRAY
60508: PUSH
60509: LD_INT 0
60511: PLUS
60512: ADD
60513: ST_TO_ADDR
60514: GO 60487
60516: POP
60517: POP
// temp_list_2 = WorstFromListByList ( temp_list_4 , temp_list_2 ) ;
60518: LD_ADDR_VAR 0 16
60522: PUSH
60523: LD_VAR 0 21
60527: PPUSH
60528: LD_VAR 0 16
60532: PPUSH
60533: CALL_OW 78
60537: ST_TO_ADDR
// for a = 1 to remote_driver_vehicles [ base ] do
60538: LD_ADDR_VAR 0 20
60542: PUSH
60543: DOUBLE
60544: LD_INT 1
60546: DEC
60547: ST_TO_ADDR
60548: LD_VAR 0 32
60552: PUSH
60553: LD_VAR 0 14
60557: ARRAY
60558: PUSH
60559: FOR_TO
60560: IFFALSE 60598
// if remote_driver_vehicles [ base ] [ a ] [ 1 ] = temp_list_2 [ 1 ] then
60562: LD_VAR 0 32
60566: PUSH
60567: LD_VAR 0 14
60571: ARRAY
60572: PUSH
60573: LD_VAR 0 20
60577: ARRAY
60578: PUSH
60579: LD_INT 1
60581: ARRAY
60582: PUSH
60583: LD_VAR 0 16
60587: PUSH
60588: LD_INT 1
60590: ARRAY
60591: EQUAL
60592: IFFALSE 60596
// break ;
60594: GO 60598
60596: GO 60559
60598: POP
60599: POP
// end ; temp_list_2 = remote_driver_vehicles [ base ] [ a ] [ 2 ] ^ temp_list [ i ] ;
60600: LD_ADDR_VAR 0 16
60604: PUSH
60605: LD_VAR 0 32
60609: PUSH
60610: LD_VAR 0 14
60614: ARRAY
60615: PUSH
60616: LD_VAR 0 20
60620: ARRAY
60621: PUSH
60622: LD_INT 2
60624: ARRAY
60625: PUSH
60626: LD_VAR 0 5
60630: PUSH
60631: LD_VAR 0 2
60635: ARRAY
60636: ADD
60637: ST_TO_ADDR
// temp_list_2 = Replace ( remote_driver_vehicles [ base ] [ a ] , 2 , temp_list_2 ) ;
60638: LD_ADDR_VAR 0 16
60642: PUSH
60643: LD_VAR 0 32
60647: PUSH
60648: LD_VAR 0 14
60652: ARRAY
60653: PUSH
60654: LD_VAR 0 20
60658: ARRAY
60659: PPUSH
60660: LD_INT 2
60662: PPUSH
60663: LD_VAR 0 16
60667: PPUSH
60668: CALL_OW 1
60672: ST_TO_ADDR
// temp_list_2 = Replace ( remote_driver_vehicles [ base ] , a , temp_list_2 ) ;
60673: LD_ADDR_VAR 0 16
60677: PUSH
60678: LD_VAR 0 32
60682: PUSH
60683: LD_VAR 0 14
60687: ARRAY
60688: PPUSH
60689: LD_VAR 0 20
60693: PPUSH
60694: LD_VAR 0 16
60698: PPUSH
60699: CALL_OW 1
60703: ST_TO_ADDR
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list_2 ) ;
60704: LD_ADDR_VAR 0 32
60708: PUSH
60709: LD_VAR 0 32
60713: PPUSH
60714: LD_VAR 0 14
60718: PPUSH
60719: LD_VAR 0 16
60723: PPUSH
60724: CALL_OW 1
60728: ST_TO_ADDR
// i = i + 1 ;
60729: LD_ADDR_VAR 0 2
60733: PUSH
60734: LD_VAR 0 2
60738: PUSH
60739: LD_INT 1
60741: PLUS
60742: ST_TO_ADDR
// end ;
60743: GO 60094
// end ; for i in remote_driver_vehicles [ base ] do
60745: LD_ADDR_VAR 0 2
60749: PUSH
60750: LD_VAR 0 32
60754: PUSH
60755: LD_VAR 0 14
60759: ARRAY
60760: PUSH
60761: FOR_IN
60762: IFFALSE 60786
// remote_mechanics = remote_mechanics ^ i [ 1 ] ;
60764: LD_ADDR_VAR 0 17
60768: PUSH
60769: LD_VAR 0 17
60773: PUSH
60774: LD_VAR 0 2
60778: PUSH
60779: LD_INT 1
60781: ARRAY
60782: ADD
60783: ST_TO_ADDR
60784: GO 60761
60786: POP
60787: POP
// mechanics_list = mechanics_list diff remote_mechanics ;
60788: LD_ADDR_VAR 0 4
60792: PUSH
60793: LD_VAR 0 4
60797: PUSH
60798: LD_VAR 0 17
60802: DIFF
60803: ST_TO_ADDR
// remote_mechanics = remote_mechanics diff ai_heal_these_humans [ base ] ;
60804: LD_ADDR_VAR 0 17
60808: PUSH
60809: LD_VAR 0 17
60813: PUSH
60814: LD_EXP 85
60818: PUSH
60819: LD_VAR 0 14
60823: ARRAY
60824: DIFF
60825: ST_TO_ADDR
// if mechanics_list = 0 and remote_driver_vehicles [ base ] > 0 then
60826: LD_VAR 0 4
60830: PUSH
60831: LD_INT 0
60833: EQUAL
60834: PUSH
60835: LD_VAR 0 32
60839: PUSH
60840: LD_VAR 0 14
60844: ARRAY
60845: PUSH
60846: LD_INT 0
60848: GREATER
60849: AND
60850: IFFALSE 61087
// begin n = 0 ;
60852: LD_ADDR_VAR 0 19
60856: PUSH
60857: LD_INT 0
60859: ST_TO_ADDR
// a = 9999 ;
60860: LD_ADDR_VAR 0 20
60864: PUSH
60865: LD_INT 9999
60867: ST_TO_ADDR
// for i = 1 to ( remote_driver_vehicles [ base ] + 0 ) do
60868: LD_ADDR_VAR 0 2
60872: PUSH
60873: DOUBLE
60874: LD_INT 1
60876: DEC
60877: ST_TO_ADDR
60878: LD_VAR 0 32
60882: PUSH
60883: LD_VAR 0 14
60887: ARRAY
60888: PUSH
60889: LD_INT 0
60891: PLUS
60892: PUSH
60893: FOR_TO
60894: IFFALSE 60970
// begin if remote_driver_vehicles [ base ] [ i ] [ 2 ] + 0 < a then
60896: LD_VAR 0 32
60900: PUSH
60901: LD_VAR 0 14
60905: ARRAY
60906: PUSH
60907: LD_VAR 0 2
60911: ARRAY
60912: PUSH
60913: LD_INT 2
60915: ARRAY
60916: PUSH
60917: LD_INT 0
60919: PLUS
60920: PUSH
60921: LD_VAR 0 20
60925: LESS
60926: IFFALSE 60968
// begin a = remote_driver_vehicles [ base ] [ i ] [ 2 ] + 0 ;
60928: LD_ADDR_VAR 0 20
60932: PUSH
60933: LD_VAR 0 32
60937: PUSH
60938: LD_VAR 0 14
60942: ARRAY
60943: PUSH
60944: LD_VAR 0 2
60948: ARRAY
60949: PUSH
60950: LD_INT 2
60952: ARRAY
60953: PUSH
60954: LD_INT 0
60956: PLUS
60957: ST_TO_ADDR
// n = i ;
60958: LD_ADDR_VAR 0 19
60962: PUSH
60963: LD_VAR 0 2
60967: ST_TO_ADDR
// end ; end ;
60968: GO 60893
60970: POP
60971: POP
// mechanics_list = mechanics_list ^ remote_driver_vehicles [ base ] [ n ] [ 1 ] ;
60972: LD_ADDR_VAR 0 4
60976: PUSH
60977: LD_VAR 0 4
60981: PUSH
60982: LD_VAR 0 32
60986: PUSH
60987: LD_VAR 0 14
60991: ARRAY
60992: PUSH
60993: LD_VAR 0 19
60997: ARRAY
60998: PUSH
60999: LD_INT 1
61001: ARRAY
61002: ADD
61003: ST_TO_ADDR
// remote_mechanics = remote_mechanics diff remote_driver_vehicles [ base ] [ n ] [ 1 ] ;
61004: LD_ADDR_VAR 0 17
61008: PUSH
61009: LD_VAR 0 17
61013: PUSH
61014: LD_VAR 0 32
61018: PUSH
61019: LD_VAR 0 14
61023: ARRAY
61024: PUSH
61025: LD_VAR 0 19
61029: ARRAY
61030: PUSH
61031: LD_INT 1
61033: ARRAY
61034: DIFF
61035: ST_TO_ADDR
// temp_list_2 = Delete ( remote_driver_vehicles [ base ] , n ) ;
61036: LD_ADDR_VAR 0 16
61040: PUSH
61041: LD_VAR 0 32
61045: PUSH
61046: LD_VAR 0 14
61050: ARRAY
61051: PPUSH
61052: LD_VAR 0 19
61056: PPUSH
61057: CALL_OW 3
61061: ST_TO_ADDR
// remote_driver_vehicles = Replace ( remote_driver_vehicles , base , temp_list_2 ) ;
61062: LD_ADDR_VAR 0 32
61066: PUSH
61067: LD_VAR 0 32
61071: PPUSH
61072: LD_VAR 0 14
61076: PPUSH
61077: LD_VAR 0 16
61081: PPUSH
61082: CALL_OW 1
61086: ST_TO_ADDR
// end ; end else
61087: GO 61111
// begin remote_driver_vehicles = Replace ( remote_driver_vehicles , base , [ ] ) ;
61089: LD_ADDR_VAR 0 32
61093: PUSH
61094: LD_VAR 0 32
61098: PPUSH
61099: LD_VAR 0 14
61103: PPUSH
61104: EMPTY
61105: PPUSH
61106: CALL_OW 1
61110: ST_TO_ADDR
// end ; if base = 2 and ai_behemoths [ base ] + UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_ok ] , [ f_weapon , 59 ] ] ) < MaxNumBehemoths ( base ) and mechanics_list > 2 then
61111: LD_VAR 0 14
61115: PUSH
61116: LD_INT 2
61118: EQUAL
61119: PUSH
61120: LD_EXP 113
61124: PUSH
61125: LD_VAR 0 14
61129: ARRAY
61130: PUSH
61131: LD_EXP 78
61135: PUSH
61136: LD_VAR 0 14
61140: ARRAY
61141: PPUSH
61142: LD_INT 50
61144: PUSH
61145: EMPTY
61146: LIST
61147: PUSH
61148: LD_INT 34
61150: PUSH
61151: LD_INT 59
61153: PUSH
61154: EMPTY
61155: LIST
61156: LIST
61157: PUSH
61158: EMPTY
61159: LIST
61160: LIST
61161: PPUSH
61162: CALL_OW 72
61166: PLUS
61167: PUSH
61168: LD_VAR 0 14
61172: PPUSH
61173: CALL 69694 0 1
61177: LESS
61178: AND
61179: PUSH
61180: LD_VAR 0 4
61184: PUSH
61185: LD_INT 2
61187: GREATER
61188: AND
61189: IFFALSE 61418
// begin temp_list = [ ] ;
61191: LD_ADDR_VAR 0 5
61195: PUSH
61196: EMPTY
61197: ST_TO_ADDR
// for i = 3 to mechanics_list + 0 do
61198: LD_ADDR_VAR 0 2
61202: PUSH
61203: DOUBLE
61204: LD_INT 3
61206: DEC
61207: ST_TO_ADDR
61208: LD_VAR 0 4
61212: PUSH
61213: LD_INT 0
61215: PLUS
61216: PUSH
61217: FOR_TO
61218: IFFALSE 61260
// begin temp_list = temp_list ^ mechanics_list [ 1 ] ;
61220: LD_ADDR_VAR 0 5
61224: PUSH
61225: LD_VAR 0 5
61229: PUSH
61230: LD_VAR 0 4
61234: PUSH
61235: LD_INT 1
61237: ARRAY
61238: ADD
61239: ST_TO_ADDR
// mechanics_list = Delete ( mechanics_list , 1 ) ;
61240: LD_ADDR_VAR 0 4
61244: PUSH
61245: LD_VAR 0 4
61249: PPUSH
61250: LD_INT 1
61252: PPUSH
61253: CALL_OW 3
61257: ST_TO_ADDR
// end ;
61258: GO 61217
61260: POP
61261: POP
// temp_unit = HexInfo ( ai_behemoth_construction_hex [ base ] [ 1 ] , ai_behemoth_construction_hex [ base ] [ 2 ] ) ;
61262: LD_ADDR_VAR 0 7
61266: PUSH
61267: LD_EXP 115
61271: PUSH
61272: LD_VAR 0 14
61276: ARRAY
61277: PUSH
61278: LD_INT 1
61280: ARRAY
61281: PPUSH
61282: LD_EXP 115
61286: PUSH
61287: LD_VAR 0 14
61291: ARRAY
61292: PUSH
61293: LD_INT 2
61295: ARRAY
61296: PPUSH
61297: CALL_OW 428
61301: ST_TO_ADDR
// if HexInfo ( ai_behemoth_construction_hex [ base ] [ 1 ] , ai_behemoth_construction_hex [ base ] [ 2 ] ) = 0 then
61302: LD_EXP 115
61306: PUSH
61307: LD_VAR 0 14
61311: ARRAY
61312: PUSH
61313: LD_INT 1
61315: ARRAY
61316: PPUSH
61317: LD_EXP 115
61321: PUSH
61322: LD_VAR 0 14
61326: ARRAY
61327: PUSH
61328: LD_INT 2
61330: ARRAY
61331: PPUSH
61332: CALL_OW 428
61336: PUSH
61337: LD_INT 0
61339: EQUAL
61340: IFFALSE 61389
// ComBuildBehemoth ( temp_list , b_behemoth , ai_behemoth_construction_hex [ base ] [ 1 ] , ai_behemoth_construction_hex [ base ] [ 2 ] , 0 ) else
61342: LD_VAR 0 5
61346: PPUSH
61347: LD_INT 37
61349: PPUSH
61350: LD_EXP 115
61354: PUSH
61355: LD_VAR 0 14
61359: ARRAY
61360: PUSH
61361: LD_INT 1
61363: ARRAY
61364: PPUSH
61365: LD_EXP 115
61369: PUSH
61370: LD_VAR 0 14
61374: ARRAY
61375: PUSH
61376: LD_INT 2
61378: ARRAY
61379: PPUSH
61380: LD_INT 0
61382: PPUSH
61383: CALL_OW 170
61387: GO 61418
// if GetBType ( temp_unit ) = b_behemoth then
61389: LD_VAR 0 7
61393: PPUSH
61394: CALL_OW 266
61398: PUSH
61399: LD_INT 37
61401: EQUAL
61402: IFFALSE 61418
// ComRepairBuilding ( temp_list , temp_unit ) ;
61404: LD_VAR 0 5
61408: PPUSH
61409: LD_VAR 0 7
61413: PPUSH
61414: CALL_OW 130
// end ; temp_list = [ ] ;
61418: LD_ADDR_VAR 0 5
61422: PUSH
61423: EMPTY
61424: ST_TO_ADDR
// for i in ai_vehicles_being_repaired [ base ] do
61425: LD_ADDR_VAR 0 2
61429: PUSH
61430: LD_EXP 80
61434: PUSH
61435: LD_VAR 0 14
61439: ARRAY
61440: PUSH
61441: FOR_IN
61442: IFFALSE 61477
// if GetLives ( i ) < 1000 then
61444: LD_VAR 0 2
61448: PPUSH
61449: CALL_OW 256
61453: PUSH
61454: LD_INT 1000
61456: LESS
61457: IFFALSE 61475
// temp_list = temp_list ^ i ;
61459: LD_ADDR_VAR 0 5
61463: PUSH
61464: LD_VAR 0 5
61468: PUSH
61469: LD_VAR 0 2
61473: ADD
61474: ST_TO_ADDR
61475: GO 61441
61477: POP
61478: POP
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
61479: LD_ADDR_EXP 80
61483: PUSH
61484: LD_EXP 80
61488: PPUSH
61489: LD_VAR 0 14
61493: PPUSH
61494: LD_VAR 0 5
61498: PPUSH
61499: CALL_OW 1
61503: ST_TO_ADDR
// temp_list = [ ] ;
61504: LD_ADDR_VAR 0 5
61508: PUSH
61509: EMPTY
61510: ST_TO_ADDR
// for i in ai_retreating_vehicles_defend [ base ] do
61511: LD_ADDR_VAR 0 2
61515: PUSH
61516: LD_EXP 79
61520: PUSH
61521: LD_VAR 0 14
61525: ARRAY
61526: PUSH
61527: FOR_IN
61528: IFFALSE 61563
// if GetLives ( i ) < 1000 then
61530: LD_VAR 0 2
61534: PPUSH
61535: CALL_OW 256
61539: PUSH
61540: LD_INT 1000
61542: LESS
61543: IFFALSE 61561
// temp_list = temp_list ^ i ;
61545: LD_ADDR_VAR 0 5
61549: PUSH
61550: LD_VAR 0 5
61554: PUSH
61555: LD_VAR 0 2
61559: ADD
61560: ST_TO_ADDR
61561: GO 61527
61563: POP
61564: POP
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
61565: LD_ADDR_EXP 79
61569: PUSH
61570: LD_EXP 79
61574: PPUSH
61575: LD_VAR 0 14
61579: PPUSH
61580: LD_VAR 0 5
61584: PPUSH
61585: CALL_OW 1
61589: ST_TO_ADDR
// temp_list = ai_retreating_vehicles_defend [ base ] ;
61590: LD_ADDR_VAR 0 5
61594: PUSH
61595: LD_EXP 79
61599: PUSH
61600: LD_VAR 0 14
61604: ARRAY
61605: ST_TO_ADDR
// for i in ai_vehicles_defend [ base ] diff ai_retreating_vehicles_defend [ base ] do
61606: LD_ADDR_VAR 0 2
61610: PUSH
61611: LD_EXP 77
61615: PUSH
61616: LD_VAR 0 14
61620: ARRAY
61621: PUSH
61622: LD_EXP 79
61626: PUSH
61627: LD_VAR 0 14
61631: ARRAY
61632: DIFF
61633: PUSH
61634: FOR_IN
61635: IFFALSE 61670
// if GetLives ( i ) <= 250 then
61637: LD_VAR 0 2
61641: PPUSH
61642: CALL_OW 256
61646: PUSH
61647: LD_INT 250
61649: LESSEQUAL
61650: IFFALSE 61668
// temp_list = temp_list ^ i ;
61652: LD_ADDR_VAR 0 5
61656: PUSH
61657: LD_VAR 0 5
61661: PUSH
61662: LD_VAR 0 2
61666: ADD
61667: ST_TO_ADDR
61668: GO 61634
61670: POP
61671: POP
// ai_retreating_vehicles_defend = Replace ( ai_retreating_vehicles_defend , base , temp_list ) ;
61672: LD_ADDR_EXP 79
61676: PUSH
61677: LD_EXP 79
61681: PPUSH
61682: LD_VAR 0 14
61686: PPUSH
61687: LD_VAR 0 5
61691: PPUSH
61692: CALL_OW 1
61696: ST_TO_ADDR
// if not under_attack then
61697: LD_VAR 0 11
61701: NOT
61702: IFFALSE 61840
// begin temp_list = [ ] ;
61704: LD_ADDR_VAR 0 5
61708: PUSH
61709: EMPTY
61710: ST_TO_ADDR
// for i in ai_refuel_vehicles_list [ base ] diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) do
61711: LD_ADDR_VAR 0 2
61715: PUSH
61716: LD_EXP 81
61720: PUSH
61721: LD_VAR 0 14
61725: ARRAY
61726: PUSH
61727: LD_EXP 79
61731: PUSH
61732: LD_VAR 0 14
61736: ARRAY
61737: PUSH
61738: LD_EXP 80
61742: PUSH
61743: LD_VAR 0 14
61747: ARRAY
61748: ADD
61749: PUSH
61750: LD_EXP 88
61754: PUSH
61755: LD_VAR 0 14
61759: ARRAY
61760: ADD
61761: PUSH
61762: LD_EXP 89
61766: PUSH
61767: LD_VAR 0 14
61771: ARRAY
61772: ADD
61773: DIFF
61774: PUSH
61775: FOR_IN
61776: IFFALSE 61811
// if GetFuel ( i ) < 95 then
61778: LD_VAR 0 2
61782: PPUSH
61783: CALL_OW 261
61787: PUSH
61788: LD_INT 95
61790: LESS
61791: IFFALSE 61809
// temp_list = temp_list ^ i ;
61793: LD_ADDR_VAR 0 5
61797: PUSH
61798: LD_VAR 0 5
61802: PUSH
61803: LD_VAR 0 2
61807: ADD
61808: ST_TO_ADDR
61809: GO 61775
61811: POP
61812: POP
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
61813: LD_ADDR_EXP 81
61817: PUSH
61818: LD_EXP 81
61822: PPUSH
61823: LD_VAR 0 14
61827: PPUSH
61828: LD_VAR 0 5
61832: PPUSH
61833: CALL_OW 1
61837: ST_TO_ADDR
// end else
61838: GO 61862
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , [ ] ) ;
61840: LD_ADDR_EXP 81
61844: PUSH
61845: LD_EXP 81
61849: PPUSH
61850: LD_VAR 0 14
61854: PPUSH
61855: EMPTY
61856: PPUSH
61857: CALL_OW 1
61861: ST_TO_ADDR
// vehicles_to_consider = ai_vehicles_defend [ base ] ^ ai_control_tower_vehicles [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ patrol_units ;
61862: LD_ADDR_VAR 0 27
61866: PUSH
61867: LD_EXP 77
61871: PUSH
61872: LD_VAR 0 14
61876: ARRAY
61877: PUSH
61878: LD_EXP 105
61882: PUSH
61883: LD_VAR 0 14
61887: ARRAY
61888: ADD
61889: PUSH
61890: LD_EXP 110
61894: PUSH
61895: LD_VAR 0 14
61899: ARRAY
61900: ADD
61901: PUSH
61902: LD_EXP 111
61906: PUSH
61907: LD_VAR 0 14
61911: ARRAY
61912: ADD
61913: PUSH
61914: LD_VAR 0 35
61918: ADD
61919: ST_TO_ADDR
// if under_attack then
61920: LD_VAR 0 11
61924: IFFALSE 62355
// begin vehicles_list = ai_vehicles_defend [ base ] diff ( ai_refuel_vehicles_list [ base ] ^ ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) ;
61926: LD_ADDR_VAR 0 9
61930: PUSH
61931: LD_EXP 77
61935: PUSH
61936: LD_VAR 0 14
61940: ARRAY
61941: PUSH
61942: LD_EXP 81
61946: PUSH
61947: LD_VAR 0 14
61951: ARRAY
61952: PUSH
61953: LD_EXP 79
61957: PUSH
61958: LD_VAR 0 14
61962: ARRAY
61963: ADD
61964: PUSH
61965: LD_EXP 80
61969: PUSH
61970: LD_VAR 0 14
61974: ARRAY
61975: ADD
61976: PUSH
61977: LD_EXP 89
61981: PUSH
61982: LD_VAR 0 14
61986: ARRAY
61987: ADD
61988: PUSH
61989: LD_EXP 88
61993: PUSH
61994: LD_VAR 0 14
61998: ARRAY
61999: ADD
62000: DIFF
62001: ST_TO_ADDR
// temp_list = UnitFilter ( vehicles_list , [ [ f_control , control_manual ] , [ f_ok ] , [ f_empty ] ] ) ;
62002: LD_ADDR_VAR 0 5
62006: PUSH
62007: LD_VAR 0 9
62011: PPUSH
62012: LD_INT 33
62014: PUSH
62015: LD_INT 1
62017: PUSH
62018: EMPTY
62019: LIST
62020: LIST
62021: PUSH
62022: LD_INT 50
62024: PUSH
62025: EMPTY
62026: LIST
62027: PUSH
62028: LD_INT 58
62030: PUSH
62031: EMPTY
62032: LIST
62033: PUSH
62034: EMPTY
62035: LIST
62036: LIST
62037: LIST
62038: PPUSH
62039: CALL_OW 72
62043: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
62044: LD_ADDR_VAR 0 5
62048: PUSH
62049: LD_VAR 0 5
62053: PPUSH
62054: LD_VAR 0 4
62058: PPUSH
62059: LD_VAR 0 31
62063: PPUSH
62064: CALL 69110 0 3
62068: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
62069: LD_ADDR_VAR 0 4
62073: PUSH
62074: LD_VAR 0 5
62078: PUSH
62079: LD_INT 1
62081: ARRAY
62082: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
62083: LD_ADDR_VAR 0 31
62087: PUSH
62088: LD_VAR 0 5
62092: PUSH
62093: LD_INT 2
62095: ARRAY
62096: ST_TO_ADDR
// case base of 1 :
62097: LD_VAR 0 14
62101: PUSH
62102: LD_INT 1
62104: DOUBLE
62105: EQUAL
62106: IFTRUE 62110
62108: GO 62120
62110: POP
// temp_list = [ ] ; 2 :
62111: LD_ADDR_VAR 0 5
62115: PUSH
62116: EMPTY
62117: ST_TO_ADDR
62118: GO 62175
62120: LD_INT 2
62122: DOUBLE
62123: EQUAL
62124: IFTRUE 62128
62126: GO 62138
62128: POP
// temp_list = [ ] ; 3 :
62129: LD_ADDR_VAR 0 5
62133: PUSH
62134: EMPTY
62135: ST_TO_ADDR
62136: GO 62175
62138: LD_INT 3
62140: DOUBLE
62141: EQUAL
62142: IFTRUE 62146
62144: GO 62156
62146: POP
// temp_list = [ ] ; 4 :
62147: LD_ADDR_VAR 0 5
62151: PUSH
62152: EMPTY
62153: ST_TO_ADDR
62154: GO 62175
62156: LD_INT 4
62158: DOUBLE
62159: EQUAL
62160: IFTRUE 62164
62162: GO 62174
62164: POP
// temp_list = [ ] ; end ;
62165: LD_ADDR_VAR 0 5
62169: PUSH
62170: EMPTY
62171: ST_TO_ADDR
62172: GO 62175
62174: POP
// if temp_list > 0 then
62175: LD_VAR 0 5
62179: PUSH
62180: LD_INT 0
62182: GREATER
62183: IFFALSE 62224
// ComAgressiveMove ( vehicles_list , GetX ( temp_list [ 1 ] ) , GetY ( temp_list [ 1 ] ) ) else
62185: LD_VAR 0 9
62189: PPUSH
62190: LD_VAR 0 5
62194: PUSH
62195: LD_INT 1
62197: ARRAY
62198: PPUSH
62199: CALL_OW 250
62203: PPUSH
62204: LD_VAR 0 5
62208: PUSH
62209: LD_INT 1
62211: ARRAY
62212: PPUSH
62213: CALL_OW 251
62217: PPUSH
62218: CALL_OW 114
62222: GO 62353
// begin temp_list = FilterAllUnits ( [ [ f_enemy , side ] , [ f_inarea , area ] ] ) ;
62224: LD_ADDR_VAR 0 5
62228: PUSH
62229: LD_INT 81
62231: PUSH
62232: LD_VAR 0 1
62236: PUSH
62237: EMPTY
62238: LIST
62239: LIST
62240: PUSH
62241: LD_INT 95
62243: PUSH
62244: LD_VAR 0 15
62248: PUSH
62249: EMPTY
62250: LIST
62251: LIST
62252: PUSH
62253: EMPTY
62254: LIST
62255: LIST
62256: PPUSH
62257: CALL_OW 69
62261: ST_TO_ADDR
// if base = 3 then
62262: LD_VAR 0 14
62266: PUSH
62267: LD_INT 3
62269: EQUAL
62270: IFFALSE 62300
// temp_list = temp_list diff FilterAllUnits ( [ f_side , americans_alt ] ) ;
62272: LD_ADDR_VAR 0 5
62276: PUSH
62277: LD_VAR 0 5
62281: PUSH
62282: LD_INT 22
62284: PUSH
62285: LD_EXP 8
62289: PUSH
62290: EMPTY
62291: LIST
62292: LIST
62293: PPUSH
62294: CALL_OW 69
62298: DIFF
62299: ST_TO_ADDR
// if temp_list > 0 then
62300: LD_VAR 0 5
62304: PUSH
62305: LD_INT 0
62307: GREATER
62308: IFFALSE 62353
// begin temp_list_2 = DangerousUnits ( temp_list ) ;
62310: LD_ADDR_VAR 0 16
62314: PUSH
62315: LD_VAR 0 5
62319: PPUSH
62320: CALL 33428 0 1
62324: ST_TO_ADDR
// if temp_list_2 = 0 then
62325: LD_VAR 0 16
62329: PUSH
62330: LD_INT 0
62332: EQUAL
62333: IFFALSE 62353
// ComAttackUnit ( vehicles_list , temp_list [ 1 ] ) ;
62335: LD_VAR 0 9
62339: PPUSH
62340: LD_VAR 0 5
62344: PUSH
62345: LD_INT 1
62347: ARRAY
62348: PPUSH
62349: CALL_OW 115
// end ; end ; end else
62353: GO 63474
// begin if unitfilter ( ai_depots [ base ] , [ f_ok ] ) > 0 then
62355: LD_EXP 59
62359: PUSH
62360: LD_VAR 0 14
62364: ARRAY
62365: PPUSH
62366: LD_INT 50
62368: PUSH
62369: EMPTY
62370: LIST
62371: PPUSH
62372: CALL_OW 72
62376: PUSH
62377: LD_INT 0
62379: GREATER
62380: IFFALSE 62803
// begin temp_list = ai_refuel_vehicles_list [ base ] ;
62382: LD_ADDR_VAR 0 5
62386: PUSH
62387: LD_EXP 81
62391: PUSH
62392: LD_VAR 0 14
62396: ARRAY
62397: ST_TO_ADDR
// for i in vehicles_to_consider diff ai_refuel_vehicles_list [ base ] do
62398: LD_ADDR_VAR 0 2
62402: PUSH
62403: LD_VAR 0 27
62407: PUSH
62408: LD_EXP 81
62412: PUSH
62413: LD_VAR 0 14
62417: ARRAY
62418: DIFF
62419: PUSH
62420: FOR_IN
62421: IFFALSE 62471
// if GetFuel ( i ) < 70 and GetEngine ( i ) = engine_combustion then
62423: LD_VAR 0 2
62427: PPUSH
62428: CALL_OW 261
62432: PUSH
62433: LD_INT 70
62435: LESS
62436: PUSH
62437: LD_VAR 0 2
62441: PPUSH
62442: CALL_OW 262
62446: PUSH
62447: LD_INT 1
62449: EQUAL
62450: AND
62451: IFFALSE 62469
// temp_list = temp_list ^ i ;
62453: LD_ADDR_VAR 0 5
62457: PUSH
62458: LD_VAR 0 5
62462: PUSH
62463: LD_VAR 0 2
62467: ADD
62468: ST_TO_ADDR
62469: GO 62420
62471: POP
62472: POP
// temp_list = temp_list diff ( ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) ;
62473: LD_ADDR_VAR 0 5
62477: PUSH
62478: LD_VAR 0 5
62482: PUSH
62483: LD_EXP 79
62487: PUSH
62488: LD_VAR 0 14
62492: ARRAY
62493: PUSH
62494: LD_EXP 80
62498: PUSH
62499: LD_VAR 0 14
62503: ARRAY
62504: ADD
62505: PUSH
62506: LD_EXP 88
62510: PUSH
62511: LD_VAR 0 14
62515: ARRAY
62516: ADD
62517: PUSH
62518: LD_EXP 89
62522: PUSH
62523: LD_VAR 0 14
62527: ARRAY
62528: ADD
62529: DIFF
62530: ST_TO_ADDR
// ai_refuel_vehicles_list = Replace ( ai_refuel_vehicles_list , base , temp_list ) ;
62531: LD_ADDR_EXP 81
62535: PUSH
62536: LD_EXP 81
62540: PPUSH
62541: LD_VAR 0 14
62545: PPUSH
62546: LD_VAR 0 5
62550: PPUSH
62551: CALL_OW 1
62555: ST_TO_ADDR
// temp_list = UnitFilter ( ai_refuel_vehicles_list [ base ] , [ [ f_control , control_manual ] , [ f_empty ] , [ f_ok ] ] ) diff ai_control_tower_vehicles [ base ] ;
62556: LD_ADDR_VAR 0 5
62560: PUSH
62561: LD_EXP 81
62565: PUSH
62566: LD_VAR 0 14
62570: ARRAY
62571: PPUSH
62572: LD_INT 33
62574: PUSH
62575: LD_INT 1
62577: PUSH
62578: EMPTY
62579: LIST
62580: LIST
62581: PUSH
62582: LD_INT 58
62584: PUSH
62585: EMPTY
62586: LIST
62587: PUSH
62588: LD_INT 50
62590: PUSH
62591: EMPTY
62592: LIST
62593: PUSH
62594: EMPTY
62595: LIST
62596: LIST
62597: LIST
62598: PPUSH
62599: CALL_OW 72
62603: PUSH
62604: LD_EXP 105
62608: PUSH
62609: LD_VAR 0 14
62613: ARRAY
62614: DIFF
62615: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
62616: LD_ADDR_VAR 0 5
62620: PUSH
62621: LD_VAR 0 5
62625: PPUSH
62626: LD_VAR 0 4
62630: PPUSH
62631: LD_VAR 0 31
62635: PPUSH
62636: CALL 69110 0 3
62640: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
62641: LD_ADDR_VAR 0 4
62645: PUSH
62646: LD_VAR 0 5
62650: PUSH
62651: LD_INT 1
62653: ARRAY
62654: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
62655: LD_ADDR_VAR 0 31
62659: PUSH
62660: LD_VAR 0 5
62664: PUSH
62665: LD_INT 2
62667: ARRAY
62668: ST_TO_ADDR
// for i in ai_refuel_vehicles_list [ base ] do
62669: LD_ADDR_VAR 0 2
62673: PUSH
62674: LD_EXP 81
62678: PUSH
62679: LD_VAR 0 14
62683: ARRAY
62684: PUSH
62685: FOR_IN
62686: IFFALSE 62801
// begin if IsInArea ( i , area ) then
62688: LD_VAR 0 2
62692: PPUSH
62693: LD_VAR 0 15
62697: PPUSH
62698: CALL_OW 308
62702: IFFALSE 62760
// begin temp = NearestUnitToUnit ( ai_depots [ base ] , i ) ;
62704: LD_ADDR_VAR 0 8
62708: PUSH
62709: LD_EXP 59
62713: PUSH
62714: LD_VAR 0 14
62718: ARRAY
62719: PPUSH
62720: LD_VAR 0 2
62724: PPUSH
62725: CALL_OW 74
62729: ST_TO_ADDR
// ComMoveUnit ( i , temp ) ;
62730: LD_VAR 0 2
62734: PPUSH
62735: LD_VAR 0 8
62739: PPUSH
62740: CALL_OW 112
// AddComRefuel ( i , temp ) ;
62744: LD_VAR 0 2
62748: PPUSH
62749: LD_VAR 0 8
62753: PPUSH
62754: CALL_OW 210
// end else
62758: GO 62799
// ComAgressiveMove ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
62760: LD_VAR 0 2
62764: PPUSH
62765: LD_EXP 83
62769: PUSH
62770: LD_VAR 0 14
62774: ARRAY
62775: PUSH
62776: LD_INT 1
62778: ARRAY
62779: PPUSH
62780: LD_EXP 83
62784: PUSH
62785: LD_VAR 0 14
62789: ARRAY
62790: PUSH
62791: LD_INT 2
62793: ARRAY
62794: PPUSH
62795: CALL_OW 114
// end ;
62799: GO 62685
62801: POP
62802: POP
// end ; pullback_hex = [ [ 94 , 177 ] , [ 202 , 197 ] , [ 232 , 170 ] ] ;
62803: LD_ADDR_VAR 0 33
62807: PUSH
62808: LD_INT 94
62810: PUSH
62811: LD_INT 177
62813: PUSH
62814: EMPTY
62815: LIST
62816: LIST
62817: PUSH
62818: LD_INT 202
62820: PUSH
62821: LD_INT 197
62823: PUSH
62824: EMPTY
62825: LIST
62826: LIST
62827: PUSH
62828: LD_INT 232
62830: PUSH
62831: LD_INT 170
62833: PUSH
62834: EMPTY
62835: LIST
62836: LIST
62837: PUSH
62838: EMPTY
62839: LIST
62840: LIST
62841: LIST
62842: ST_TO_ADDR
// pullback_hex_patrol = [ [ 84 , 159 ] , [ ] , [ 210 , 141 ] ] ;
62843: LD_ADDR_VAR 0 34
62847: PUSH
62848: LD_INT 84
62850: PUSH
62851: LD_INT 159
62853: PUSH
62854: EMPTY
62855: LIST
62856: LIST
62857: PUSH
62858: EMPTY
62859: PUSH
62860: LD_INT 210
62862: PUSH
62863: LD_INT 141
62865: PUSH
62866: EMPTY
62867: LIST
62868: LIST
62869: PUSH
62870: EMPTY
62871: LIST
62872: LIST
62873: LIST
62874: ST_TO_ADDR
// pullback_hex_hovercrafts = [ 116 , 149 ] ;
62875: LD_ADDR_VAR 0 36
62879: PUSH
62880: LD_INT 116
62882: PUSH
62883: LD_INT 149
62885: PUSH
62886: EMPTY
62887: LIST
62888: LIST
62889: ST_TO_ADDR
// for i in UnitFilter ( vehicles_to_consider , [ f_not , [ f_control , control_manual ] ] ) ^ patrol_units diff ( ai_refuel_vehicles_list [ base ] ^ ai_retreating_vehicles_defend [ base ] ^ ai_vehicles_being_repaired [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) do
62890: LD_ADDR_VAR 0 2
62894: PUSH
62895: LD_VAR 0 27
62899: PPUSH
62900: LD_INT 3
62902: PUSH
62903: LD_INT 33
62905: PUSH
62906: LD_INT 1
62908: PUSH
62909: EMPTY
62910: LIST
62911: LIST
62912: PUSH
62913: EMPTY
62914: LIST
62915: LIST
62916: PPUSH
62917: CALL_OW 72
62921: PUSH
62922: LD_VAR 0 35
62926: ADD
62927: PUSH
62928: LD_EXP 81
62932: PUSH
62933: LD_VAR 0 14
62937: ARRAY
62938: PUSH
62939: LD_EXP 79
62943: PUSH
62944: LD_VAR 0 14
62948: ARRAY
62949: ADD
62950: PUSH
62951: LD_EXP 80
62955: PUSH
62956: LD_VAR 0 14
62960: ARRAY
62961: ADD
62962: PUSH
62963: LD_EXP 88
62967: PUSH
62968: LD_VAR 0 14
62972: ARRAY
62973: ADD
62974: PUSH
62975: LD_EXP 89
62979: PUSH
62980: LD_VAR 0 14
62984: ARRAY
62985: ADD
62986: DIFF
62987: PUSH
62988: FOR_IN
62989: IFFALSE 63223
// if i in ai_vehicles_defend [ base ] then
62991: LD_VAR 0 2
62995: PUSH
62996: LD_EXP 77
63000: PUSH
63001: LD_VAR 0 14
63005: ARRAY
63006: IN
63007: IFFALSE 63095
// begin if GetDistUnitXY ( i , pullback_hex [ base ] [ 1 ] , pullback_hex [ base ] [ 2 ] ) > 10 then
63009: LD_VAR 0 2
63013: PPUSH
63014: LD_VAR 0 33
63018: PUSH
63019: LD_VAR 0 14
63023: ARRAY
63024: PUSH
63025: LD_INT 1
63027: ARRAY
63028: PPUSH
63029: LD_VAR 0 33
63033: PUSH
63034: LD_VAR 0 14
63038: ARRAY
63039: PUSH
63040: LD_INT 2
63042: ARRAY
63043: PPUSH
63044: CALL_OW 297
63048: PUSH
63049: LD_INT 10
63051: GREATER
63052: IFFALSE 63093
// ComMoveXy ( i , pullback_hex [ base ] [ 1 ] , pullback_hex [ base ] [ 2 ] ) ;
63054: LD_VAR 0 2
63058: PPUSH
63059: LD_VAR 0 33
63063: PUSH
63064: LD_VAR 0 14
63068: ARRAY
63069: PUSH
63070: LD_INT 1
63072: ARRAY
63073: PPUSH
63074: LD_VAR 0 33
63078: PUSH
63079: LD_VAR 0 14
63083: ARRAY
63084: PUSH
63085: LD_INT 2
63087: ARRAY
63088: PPUSH
63089: CALL_OW 111
// end else
63093: GO 63221
// if ( base = 1 and not 1 in ai_patrol_out ) or ( base = 3 and not 2 in ai_patrol_out ) then
63095: LD_VAR 0 14
63099: PUSH
63100: LD_INT 1
63102: EQUAL
63103: PUSH
63104: LD_INT 1
63106: PUSH
63107: LD_EXP 187
63111: IN
63112: NOT
63113: AND
63114: PUSH
63115: LD_VAR 0 14
63119: PUSH
63120: LD_INT 3
63122: EQUAL
63123: PUSH
63124: LD_INT 2
63126: PUSH
63127: LD_EXP 187
63131: IN
63132: NOT
63133: AND
63134: OR
63135: IFFALSE 63221
// if GetDistUnitXY ( i , pullback_hex_patrol [ base ] [ 1 ] , pullback_hex_patrol [ base ] [ 2 ] ) > 6 then
63137: LD_VAR 0 2
63141: PPUSH
63142: LD_VAR 0 34
63146: PUSH
63147: LD_VAR 0 14
63151: ARRAY
63152: PUSH
63153: LD_INT 1
63155: ARRAY
63156: PPUSH
63157: LD_VAR 0 34
63161: PUSH
63162: LD_VAR 0 14
63166: ARRAY
63167: PUSH
63168: LD_INT 2
63170: ARRAY
63171: PPUSH
63172: CALL_OW 297
63176: PUSH
63177: LD_INT 6
63179: GREATER
63180: IFFALSE 63221
// ComMoveXy ( i , pullback_hex_patrol [ base ] [ 1 ] , pullback_hex_patrol [ base ] [ 2 ] ) ;
63182: LD_VAR 0 2
63186: PPUSH
63187: LD_VAR 0 34
63191: PUSH
63192: LD_VAR 0 14
63196: ARRAY
63197: PUSH
63198: LD_INT 1
63200: ARRAY
63201: PPUSH
63202: LD_VAR 0 34
63206: PUSH
63207: LD_VAR 0 14
63211: ARRAY
63212: PUSH
63213: LD_INT 2
63215: ARRAY
63216: PPUSH
63217: CALL_OW 111
63221: GO 62988
63223: POP
63224: POP
// if not 2 in mb_bases and base = 2 then
63225: LD_INT 2
63227: PUSH
63228: LD_EXP 160
63232: IN
63233: NOT
63234: PUSH
63235: LD_VAR 0 14
63239: PUSH
63240: LD_INT 2
63242: EQUAL
63243: AND
63244: IFFALSE 63368
// for i = 1 to 2 do
63246: LD_ADDR_VAR 0 2
63250: PUSH
63251: DOUBLE
63252: LD_INT 1
63254: DEC
63255: ST_TO_ADDR
63256: LD_INT 2
63258: PUSH
63259: FOR_TO
63260: IFFALSE 63366
// if mb_vehicles [ 2 ] [ i ] > 0 then
63262: LD_EXP 164
63266: PUSH
63267: LD_INT 2
63269: ARRAY
63270: PUSH
63271: LD_VAR 0 2
63275: ARRAY
63276: PUSH
63277: LD_INT 0
63279: GREATER
63280: IFFALSE 63364
// if GetDistUnitXY ( mb_vehicles [ 2 ] [ i ] , [ 169 , 172 ] [ i ] , 171 ) > 5 then
63282: LD_EXP 164
63286: PUSH
63287: LD_INT 2
63289: ARRAY
63290: PUSH
63291: LD_VAR 0 2
63295: ARRAY
63296: PPUSH
63297: LD_INT 169
63299: PUSH
63300: LD_INT 172
63302: PUSH
63303: EMPTY
63304: LIST
63305: LIST
63306: PUSH
63307: LD_VAR 0 2
63311: ARRAY
63312: PPUSH
63313: LD_INT 171
63315: PPUSH
63316: CALL_OW 297
63320: PUSH
63321: LD_INT 5
63323: GREATER
63324: IFFALSE 63364
// ComMoveXY ( mb_vehicles [ 2 ] [ i ] , [ 169 , 172 ] [ i ] , 171 ) ;
63326: LD_EXP 164
63330: PUSH
63331: LD_INT 2
63333: ARRAY
63334: PUSH
63335: LD_VAR 0 2
63339: ARRAY
63340: PPUSH
63341: LD_INT 169
63343: PUSH
63344: LD_INT 172
63346: PUSH
63347: EMPTY
63348: LIST
63349: LIST
63350: PUSH
63351: LD_VAR 0 2
63355: ARRAY
63356: PPUSH
63357: LD_INT 171
63359: PPUSH
63360: CALL_OW 111
63364: GO 63259
63366: POP
63367: POP
// if base = 1 and ai_hovercrafts_out = 0 then
63368: LD_VAR 0 14
63372: PUSH
63373: LD_INT 1
63375: EQUAL
63376: PUSH
63377: LD_EXP 153
63381: PUSH
63382: LD_INT 0
63384: EQUAL
63385: AND
63386: IFFALSE 63474
// for i in ai_hovercrafts diff 0 ^ - 1 do
63388: LD_ADDR_VAR 0 2
63392: PUSH
63393: LD_EXP 148
63397: PUSH
63398: LD_INT 0
63400: PUSH
63401: LD_INT 1
63403: NEG
63404: ADD
63405: DIFF
63406: PUSH
63407: FOR_IN
63408: IFFALSE 63472
// if GetDistUnitXY ( i , pullback_hex_hovercrafts [ 1 ] , pullback_hex_hovercrafts [ 2 ] ) > 7 then
63410: LD_VAR 0 2
63414: PPUSH
63415: LD_VAR 0 36
63419: PUSH
63420: LD_INT 1
63422: ARRAY
63423: PPUSH
63424: LD_VAR 0 36
63428: PUSH
63429: LD_INT 2
63431: ARRAY
63432: PPUSH
63433: CALL_OW 297
63437: PUSH
63438: LD_INT 7
63440: GREATER
63441: IFFALSE 63470
// ComMoveXY ( i , pullback_hex_hovercrafts [ 1 ] , pullback_hex_hovercrafts [ 2 ] ) ;
63443: LD_VAR 0 2
63447: PPUSH
63448: LD_VAR 0 36
63452: PUSH
63453: LD_INT 1
63455: ARRAY
63456: PPUSH
63457: LD_VAR 0 36
63461: PUSH
63462: LD_INT 2
63464: ARRAY
63465: PPUSH
63466: CALL_OW 111
63470: GO 63407
63472: POP
63473: POP
// end ; free_parking_spots = [ ] ;
63474: LD_ADDR_VAR 0 12
63478: PUSH
63479: EMPTY
63480: ST_TO_ADDR
// parked_vehicles = [ ] ;
63481: LD_ADDR_VAR 0 18
63485: PUSH
63486: EMPTY
63487: ST_TO_ADDR
// vehicles_allowed_to_park = UnitFilter ( vehicles_to_consider , [ f_control , control_manual ] ) ;
63488: LD_ADDR_VAR 0 28
63492: PUSH
63493: LD_VAR 0 27
63497: PPUSH
63498: LD_INT 33
63500: PUSH
63501: LD_INT 1
63503: PUSH
63504: EMPTY
63505: LIST
63506: LIST
63507: PPUSH
63508: CALL_OW 72
63512: ST_TO_ADDR
// case ( vehicles_to_consider diff vehicles_allowed_to_park ) + 0 of 0 .. 1 :
63513: LD_VAR 0 27
63517: PUSH
63518: LD_VAR 0 28
63522: DIFF
63523: PUSH
63524: LD_INT 0
63526: PLUS
63527: PUSH
63528: LD_INT 0
63530: DOUBLE
63531: GREATEREQUAL
63532: IFFALSE 63540
63534: LD_INT 1
63536: DOUBLE
63537: LESSEQUAL
63538: IFTRUE 63542
63540: GO 63553
63542: POP
// human_pullback_hex_max_dist = 4 ; 2 :
63543: LD_ADDR_VAR 0 29
63547: PUSH
63548: LD_INT 4
63550: ST_TO_ADDR
63551: GO 63606
63553: LD_INT 2
63555: DOUBLE
63556: EQUAL
63557: IFTRUE 63561
63559: GO 63572
63561: POP
// human_pullback_hex_max_dist = 5 ; 3 .. 4 :
63562: LD_ADDR_VAR 0 29
63566: PUSH
63567: LD_INT 5
63569: ST_TO_ADDR
63570: GO 63606
63572: LD_INT 3
63574: DOUBLE
63575: GREATEREQUAL
63576: IFFALSE 63584
63578: LD_INT 4
63580: DOUBLE
63581: LESSEQUAL
63582: IFTRUE 63586
63584: GO 63597
63586: POP
// human_pullback_hex_max_dist = 6 ; else
63587: LD_ADDR_VAR 0 29
63591: PUSH
63592: LD_INT 6
63594: ST_TO_ADDR
63595: GO 63606
63597: POP
// human_pullback_hex_max_dist = 7 ; end ;
63598: LD_ADDR_VAR 0 29
63602: PUSH
63603: LD_INT 7
63605: ST_TO_ADDR
// for i in ai_vehicle_pullback_hexes [ base ] do
63606: LD_ADDR_VAR 0 2
63610: PUSH
63611: LD_EXP 82
63615: PUSH
63616: LD_VAR 0 14
63620: ARRAY
63621: PUSH
63622: FOR_IN
63623: IFFALSE 63809
// begin temp_unit = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
63625: LD_ADDR_VAR 0 7
63629: PUSH
63630: LD_VAR 0 2
63634: PUSH
63635: LD_INT 1
63637: ARRAY
63638: PPUSH
63639: LD_VAR 0 2
63643: PUSH
63644: LD_INT 2
63646: ARRAY
63647: PPUSH
63648: CALL_OW 428
63652: ST_TO_ADDR
// if temp_unit in vehicles_allowed_to_park then
63653: LD_VAR 0 7
63657: PUSH
63658: LD_VAR 0 28
63662: IN
63663: IFFALSE 63683
// begin parked_vehicles = parked_vehicles ^ temp_unit ;
63665: LD_ADDR_VAR 0 18
63669: PUSH
63670: LD_VAR 0 18
63674: PUSH
63675: LD_VAR 0 7
63679: ADD
63680: ST_TO_ADDR
// end else
63681: GO 63807
// if temp_unit = 0 or not ( GetType ( temp_unit ) = unit_building or ( GetType ( temp_unit ) = unit_vehicle and ( ( GetControl ( temp_unit ) = control_manual and IsDrivenBy ( temp_unit ) = 0 ) or ( GetControl ( temp_unit ) = control_remote and IsControledBy ( temp_unit ) = 0 ) ) ) ) then
63683: LD_VAR 0 7
63687: PUSH
63688: LD_INT 0
63690: EQUAL
63691: PUSH
63692: LD_VAR 0 7
63696: PPUSH
63697: CALL_OW 247
63701: PUSH
63702: LD_INT 3
63704: EQUAL
63705: PUSH
63706: LD_VAR 0 7
63710: PPUSH
63711: CALL_OW 247
63715: PUSH
63716: LD_INT 2
63718: EQUAL
63719: PUSH
63720: LD_VAR 0 7
63724: PPUSH
63725: CALL_OW 263
63729: PUSH
63730: LD_INT 1
63732: EQUAL
63733: PUSH
63734: LD_VAR 0 7
63738: PPUSH
63739: CALL_OW 311
63743: PUSH
63744: LD_INT 0
63746: EQUAL
63747: AND
63748: PUSH
63749: LD_VAR 0 7
63753: PPUSH
63754: CALL_OW 263
63758: PUSH
63759: LD_INT 2
63761: EQUAL
63762: PUSH
63763: LD_VAR 0 7
63767: PPUSH
63768: CALL_OW 312
63772: PUSH
63773: LD_INT 0
63775: EQUAL
63776: AND
63777: OR
63778: AND
63779: OR
63780: NOT
63781: OR
63782: IFFALSE 63807
// free_parking_spots = Insert ( free_parking_spots , 1 , i ) ;
63784: LD_ADDR_VAR 0 12
63788: PUSH
63789: LD_VAR 0 12
63793: PPUSH
63794: LD_INT 1
63796: PPUSH
63797: LD_VAR 0 2
63801: PPUSH
63802: CALL_OW 2
63806: ST_TO_ADDR
// end ;
63807: GO 63622
63809: POP
63810: POP
// free_behemoth_parking_spots = [ ] ;
63811: LD_ADDR_VAR 0 24
63815: PUSH
63816: EMPTY
63817: ST_TO_ADDR
// parked_behemoths = [ ] ;
63818: LD_ADDR_VAR 0 25
63822: PUSH
63823: EMPTY
63824: ST_TO_ADDR
// for i in ai_behemoth_parking_hexes [ base ] do
63825: LD_ADDR_VAR 0 2
63829: PUSH
63830: LD_EXP 114
63834: PUSH
63835: LD_VAR 0 14
63839: ARRAY
63840: PUSH
63841: FOR_IN
63842: IFFALSE 64056
// begin temp_unit = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
63844: LD_ADDR_VAR 0 7
63848: PUSH
63849: LD_VAR 0 2
63853: PUSH
63854: LD_INT 1
63856: ARRAY
63857: PPUSH
63858: LD_VAR 0 2
63862: PUSH
63863: LD_INT 2
63865: ARRAY
63866: PPUSH
63867: CALL_OW 428
63871: ST_TO_ADDR
// if temp_unit > 0 and GetType ( temp_unit ) = unit_vehicle and GetWeapon ( temp_unit ) = 59 then
63872: LD_VAR 0 7
63876: PUSH
63877: LD_INT 0
63879: GREATER
63880: PUSH
63881: LD_VAR 0 7
63885: PPUSH
63886: CALL_OW 247
63890: PUSH
63891: LD_INT 2
63893: EQUAL
63894: AND
63895: PUSH
63896: LD_VAR 0 7
63900: PPUSH
63901: CALL_OW 264
63905: PUSH
63906: LD_INT 59
63908: EQUAL
63909: AND
63910: IFFALSE 63930
// begin parked_behemoths = parked_behemoths ^ temp_unit ;
63912: LD_ADDR_VAR 0 25
63916: PUSH
63917: LD_VAR 0 25
63921: PUSH
63922: LD_VAR 0 7
63926: ADD
63927: ST_TO_ADDR
// end else
63928: GO 64054
// if temp_unit = 0 or not ( GetType ( temp_unit ) = unit_building or ( GetType ( temp_unit ) = unit_vehicle and ( ( GetControl ( temp_unit ) = control_manual and IsDrivenBy ( temp_unit ) = 0 ) or ( GetControl ( temp_unit ) = control_remote and IsControledBy ( temp_unit ) = 0 ) ) ) ) then
63930: LD_VAR 0 7
63934: PUSH
63935: LD_INT 0
63937: EQUAL
63938: PUSH
63939: LD_VAR 0 7
63943: PPUSH
63944: CALL_OW 247
63948: PUSH
63949: LD_INT 3
63951: EQUAL
63952: PUSH
63953: LD_VAR 0 7
63957: PPUSH
63958: CALL_OW 247
63962: PUSH
63963: LD_INT 2
63965: EQUAL
63966: PUSH
63967: LD_VAR 0 7
63971: PPUSH
63972: CALL_OW 263
63976: PUSH
63977: LD_INT 1
63979: EQUAL
63980: PUSH
63981: LD_VAR 0 7
63985: PPUSH
63986: CALL_OW 311
63990: PUSH
63991: LD_INT 0
63993: EQUAL
63994: AND
63995: PUSH
63996: LD_VAR 0 7
64000: PPUSH
64001: CALL_OW 263
64005: PUSH
64006: LD_INT 2
64008: EQUAL
64009: PUSH
64010: LD_VAR 0 7
64014: PPUSH
64015: CALL_OW 312
64019: PUSH
64020: LD_INT 0
64022: EQUAL
64023: AND
64024: OR
64025: AND
64026: OR
64027: NOT
64028: OR
64029: IFFALSE 64054
// free_behemoth_parking_spots = Insert ( free_behemoth_parking_spots , 1 , i ) ;
64031: LD_ADDR_VAR 0 24
64035: PUSH
64036: LD_VAR 0 24
64040: PPUSH
64041: LD_INT 1
64043: PPUSH
64044: LD_VAR 0 2
64048: PPUSH
64049: CALL_OW 2
64053: ST_TO_ADDR
// end ;
64054: GO 63841
64056: POP
64057: POP
// if under_attack then
64058: LD_VAR 0 11
64062: IFFALSE 64649
// begin vehicles_to_park = ( ai_vehicles_being_repaired [ base ] union ai_retreating_vehicles_defend [ base ] ) isect vehicles_allowed_to_park ;
64064: LD_ADDR_VAR 0 30
64068: PUSH
64069: LD_EXP 80
64073: PUSH
64074: LD_VAR 0 14
64078: ARRAY
64079: PUSH
64080: LD_EXP 79
64084: PUSH
64085: LD_VAR 0 14
64089: ARRAY
64090: UNION
64091: PUSH
64092: LD_VAR 0 28
64096: ISECT
64097: ST_TO_ADDR
// vehicles_to_park = UnitFilter ( vehicles_to_park diff parked_vehicles , [ f_ok ] ) ;
64098: LD_ADDR_VAR 0 30
64102: PUSH
64103: LD_VAR 0 30
64107: PUSH
64108: LD_VAR 0 18
64112: DIFF
64113: PPUSH
64114: LD_INT 50
64116: PUSH
64117: EMPTY
64118: LIST
64119: PPUSH
64120: CALL_OW 72
64124: ST_TO_ADDR
// vehicles_to_park = vehicles_to_park union UnitFilter ( ai_control_tower_vehicles [ base ] diff ( parked_vehicles ^ ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) , [ f_ok ] ) ;
64125: LD_ADDR_VAR 0 30
64129: PUSH
64130: LD_VAR 0 30
64134: PUSH
64135: LD_EXP 105
64139: PUSH
64140: LD_VAR 0 14
64144: ARRAY
64145: PUSH
64146: LD_VAR 0 18
64150: PUSH
64151: LD_EXP 81
64155: PUSH
64156: LD_VAR 0 14
64160: ARRAY
64161: ADD
64162: PUSH
64163: LD_EXP 89
64167: PUSH
64168: LD_VAR 0 14
64172: ARRAY
64173: ADD
64174: PUSH
64175: LD_EXP 88
64179: PUSH
64180: LD_VAR 0 14
64184: ARRAY
64185: ADD
64186: DIFF
64187: PPUSH
64188: LD_INT 50
64190: PUSH
64191: EMPTY
64192: LIST
64193: PPUSH
64194: CALL_OW 72
64198: UNION
64199: ST_TO_ADDR
// temp_list = [ ] ;
64200: LD_ADDR_VAR 0 5
64204: PUSH
64205: EMPTY
64206: ST_TO_ADDR
// temp_list_3 = ( ai_vehicles_being_repaired [ base ] union ai_retreating_vehicles_defend [ base ] ) isect parked_vehicles ;
64207: LD_ADDR_VAR 0 6
64211: PUSH
64212: LD_EXP 80
64216: PUSH
64217: LD_VAR 0 14
64221: ARRAY
64222: PUSH
64223: LD_EXP 79
64227: PUSH
64228: LD_VAR 0 14
64232: ARRAY
64233: UNION
64234: PUSH
64235: LD_VAR 0 18
64239: ISECT
64240: ST_TO_ADDR
// temp_list_3 = UnitFilter ( temp_list_3 , [ f_ok ] ) diff ai_control_tower_vehicles [ base ] ;
64241: LD_ADDR_VAR 0 6
64245: PUSH
64246: LD_VAR 0 6
64250: PPUSH
64251: LD_INT 50
64253: PUSH
64254: EMPTY
64255: LIST
64256: PPUSH
64257: CALL_OW 72
64261: PUSH
64262: LD_EXP 105
64266: PUSH
64267: LD_VAR 0 14
64271: ARRAY
64272: DIFF
64273: ST_TO_ADDR
// for i in temp_list_3 do
64274: LD_ADDR_VAR 0 2
64278: PUSH
64279: LD_VAR 0 6
64283: PUSH
64284: FOR_IN
64285: IFFALSE 64342
// if UnitShoot ( i ) > 0 then
64287: LD_VAR 0 2
64291: PPUSH
64292: CALL_OW 504
64296: PUSH
64297: LD_INT 0
64299: GREATER
64300: IFFALSE 64340
// if GetSide ( UnitShoot ( i ) ) <> side then
64302: LD_VAR 0 2
64306: PPUSH
64307: CALL_OW 504
64311: PPUSH
64312: CALL_OW 255
64316: PUSH
64317: LD_VAR 0 1
64321: NONEQUAL
64322: IFFALSE 64340
// temp_list = temp_list ^ i ;
64324: LD_ADDR_VAR 0 5
64328: PUSH
64329: LD_VAR 0 5
64333: PUSH
64334: LD_VAR 0 2
64338: ADD
64339: ST_TO_ADDR
64340: GO 64284
64342: POP
64343: POP
// for i in ai_mechanics_defend [ base ] do
64344: LD_ADDR_VAR 0 2
64348: PUSH
64349: LD_EXP 53
64353: PUSH
64354: LD_VAR 0 14
64358: ARRAY
64359: PUSH
64360: FOR_IN
64361: IFFALSE 64439
// if UnitShoot ( i ) > 0 then
64363: LD_VAR 0 2
64367: PPUSH
64368: CALL_OW 504
64372: PUSH
64373: LD_INT 0
64375: GREATER
64376: IFFALSE 64437
// if GetSide ( UnitShoot ( i ) ) <> side then
64378: LD_VAR 0 2
64382: PPUSH
64383: CALL_OW 504
64387: PPUSH
64388: CALL_OW 255
64392: PUSH
64393: LD_VAR 0 1
64397: NONEQUAL
64398: IFFALSE 64437
// temp_list = temp_list union UnitFilter ( temp_list_3 , [ f_dist , i , 5 ] ) ;
64400: LD_ADDR_VAR 0 5
64404: PUSH
64405: LD_VAR 0 5
64409: PUSH
64410: LD_VAR 0 6
64414: PPUSH
64415: LD_INT 91
64417: PUSH
64418: LD_VAR 0 2
64422: PUSH
64423: LD_INT 5
64425: PUSH
64426: EMPTY
64427: LIST
64428: LIST
64429: LIST
64430: PPUSH
64431: CALL_OW 72
64435: UNION
64436: ST_TO_ADDR
64437: GO 64360
64439: POP
64440: POP
// for i in temp_list_3 diff temp_list do
64441: LD_ADDR_VAR 0 2
64445: PUSH
64446: LD_VAR 0 6
64450: PUSH
64451: LD_VAR 0 5
64455: DIFF
64456: PUSH
64457: FOR_IN
64458: IFFALSE 64539
// begin if not i in ( ai_refuel_vehicles_list [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) then
64460: LD_VAR 0 2
64464: PUSH
64465: LD_EXP 81
64469: PUSH
64470: LD_VAR 0 14
64474: ARRAY
64475: PUSH
64476: LD_EXP 88
64480: PUSH
64481: LD_VAR 0 14
64485: ARRAY
64486: ADD
64487: PUSH
64488: LD_EXP 89
64492: PUSH
64493: LD_VAR 0 14
64497: ARRAY
64498: ADD
64499: IN
64500: NOT
64501: IFFALSE 64537
// begin k = IsDrivenBy ( i ) ;
64503: LD_ADDR_VAR 0 13
64507: PUSH
64508: LD_VAR 0 2
64512: PPUSH
64513: CALL_OW 311
64517: ST_TO_ADDR
// if k > 0 then
64518: LD_VAR 0 13
64522: PUSH
64523: LD_INT 0
64525: GREATER
64526: IFFALSE 64537
// ComExitVehicle ( k ) ;
64528: LD_VAR 0 13
64532: PPUSH
64533: CALL_OW 121
// end ; end ;
64537: GO 64457
64539: POP
64540: POP
// temp_list = UnitFilter ( temp_list ^ vehicles_to_park , [ [ f_control , control_manual ] , [ f_empty ] ] ) diff ai_control_tower_vehicles [ base ] ;
64541: LD_ADDR_VAR 0 5
64545: PUSH
64546: LD_VAR 0 5
64550: PUSH
64551: LD_VAR 0 30
64555: ADD
64556: PPUSH
64557: LD_INT 33
64559: PUSH
64560: LD_INT 1
64562: PUSH
64563: EMPTY
64564: LIST
64565: LIST
64566: PUSH
64567: LD_INT 58
64569: PUSH
64570: EMPTY
64571: LIST
64572: PUSH
64573: EMPTY
64574: LIST
64575: LIST
64576: PPUSH
64577: CALL_OW 72
64581: PUSH
64582: LD_EXP 105
64586: PUSH
64587: LD_VAR 0 14
64591: ARRAY
64592: DIFF
64593: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
64594: LD_ADDR_VAR 0 5
64598: PUSH
64599: LD_VAR 0 5
64603: PPUSH
64604: LD_VAR 0 4
64608: PPUSH
64609: LD_VAR 0 31
64613: PPUSH
64614: CALL 69110 0 3
64618: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
64619: LD_ADDR_VAR 0 4
64623: PUSH
64624: LD_VAR 0 5
64628: PUSH
64629: LD_INT 1
64631: ARRAY
64632: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
64633: LD_ADDR_VAR 0 31
64637: PUSH
64638: LD_VAR 0 5
64642: PUSH
64643: LD_INT 2
64645: ARRAY
64646: ST_TO_ADDR
// end else
64647: GO 64937
// begin vehicles_to_park = UnitFilter ( vehicles_allowed_to_park diff ( parked_vehicles ^ ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) , [ f_ok ] ) ;
64649: LD_ADDR_VAR 0 30
64653: PUSH
64654: LD_VAR 0 28
64658: PUSH
64659: LD_VAR 0 18
64663: PUSH
64664: LD_EXP 81
64668: PUSH
64669: LD_VAR 0 14
64673: ARRAY
64674: ADD
64675: PUSH
64676: LD_EXP 89
64680: PUSH
64681: LD_VAR 0 14
64685: ARRAY
64686: ADD
64687: PUSH
64688: LD_EXP 88
64692: PUSH
64693: LD_VAR 0 14
64697: ARRAY
64698: ADD
64699: DIFF
64700: PPUSH
64701: LD_INT 50
64703: PUSH
64704: EMPTY
64705: LIST
64706: PPUSH
64707: CALL_OW 72
64711: ST_TO_ADDR
// for i in parked_vehicles do
64712: LD_ADDR_VAR 0 2
64716: PUSH
64717: LD_VAR 0 18
64721: PUSH
64722: FOR_IN
64723: IFFALSE 64835
// begin if not i in ( ai_refuel_vehicles_list [ base ] ^ ai_vehicle_being_moved [ base ] ^ ai_vehicles_having_been_moved [ base ] ) then
64725: LD_VAR 0 2
64729: PUSH
64730: LD_EXP 81
64734: PUSH
64735: LD_VAR 0 14
64739: ARRAY
64740: PUSH
64741: LD_EXP 88
64745: PUSH
64746: LD_VAR 0 14
64750: ARRAY
64751: ADD
64752: PUSH
64753: LD_EXP 89
64757: PUSH
64758: LD_VAR 0 14
64762: ARRAY
64763: ADD
64764: IN
64765: NOT
64766: IFFALSE 64833
// begin k = IsDrivenBy ( i ) ;
64768: LD_ADDR_VAR 0 13
64772: PUSH
64773: LD_VAR 0 2
64777: PPUSH
64778: CALL_OW 311
64782: ST_TO_ADDR
// if k > 0 and not ( k in remote_mechanics and i in ai_control_tower_vehicles [ base ] ) then
64783: LD_VAR 0 13
64787: PUSH
64788: LD_INT 0
64790: GREATER
64791: PUSH
64792: LD_VAR 0 13
64796: PUSH
64797: LD_VAR 0 17
64801: IN
64802: PUSH
64803: LD_VAR 0 2
64807: PUSH
64808: LD_EXP 105
64812: PUSH
64813: LD_VAR 0 14
64817: ARRAY
64818: IN
64819: AND
64820: NOT
64821: AND
64822: IFFALSE 64833
// begin ComExitVehicle ( k ) ;
64824: LD_VAR 0 13
64828: PPUSH
64829: CALL_OW 121
// end ; end ; end ;
64833: GO 64722
64835: POP
64836: POP
// temp_list = UnitFilter ( vehicles_to_park , [ [ f_control , control_manual ] , [ f_empty ] ] ) diff ai_control_tower_vehicles [ base ] ;
64837: LD_ADDR_VAR 0 5
64841: PUSH
64842: LD_VAR 0 30
64846: PPUSH
64847: LD_INT 33
64849: PUSH
64850: LD_INT 1
64852: PUSH
64853: EMPTY
64854: LIST
64855: LIST
64856: PUSH
64857: LD_INT 58
64859: PUSH
64860: EMPTY
64861: LIST
64862: PUSH
64863: EMPTY
64864: LIST
64865: LIST
64866: PPUSH
64867: CALL_OW 72
64871: PUSH
64872: LD_EXP 105
64876: PUSH
64877: LD_VAR 0 14
64881: ARRAY
64882: DIFF
64883: ST_TO_ADDR
// temp_list = FindDriverHelper ( temp_list , mechanics_list , vehicles_drivers ) ;
64884: LD_ADDR_VAR 0 5
64888: PUSH
64889: LD_VAR 0 5
64893: PPUSH
64894: LD_VAR 0 4
64898: PPUSH
64899: LD_VAR 0 31
64903: PPUSH
64904: CALL 69110 0 3
64908: ST_TO_ADDR
// mechanics_list = temp_list [ 1 ] ;
64909: LD_ADDR_VAR 0 4
64913: PUSH
64914: LD_VAR 0 5
64918: PUSH
64919: LD_INT 1
64921: ARRAY
64922: ST_TO_ADDR
// vehicles_drivers = temp_list [ 2 ] ;
64923: LD_ADDR_VAR 0 31
64927: PUSH
64928: LD_VAR 0 5
64932: PUSH
64933: LD_INT 2
64935: ARRAY
64936: ST_TO_ADDR
// end ; while vehicles_to_park > 0 do
64937: LD_VAR 0 30
64941: PUSH
64942: LD_INT 0
64944: GREATER
64945: IFFALSE 65129
// begin if free_parking_spots = 0 then
64947: LD_VAR 0 12
64951: PUSH
64952: LD_INT 0
64954: EQUAL
64955: IFFALSE 64959
// break ;
64957: GO 65129
// temp_list = [ ] ;
64959: LD_ADDR_VAR 0 5
64963: PUSH
64964: EMPTY
64965: ST_TO_ADDR
// for k in free_parking_spots do
64966: LD_ADDR_VAR 0 13
64970: PUSH
64971: LD_VAR 0 12
64975: PUSH
64976: FOR_IN
64977: IFFALSE 65024
// temp_list = temp_list ^ GetDistUnitXY ( vehicles_to_park [ 1 ] , k [ 1 ] , k [ 2 ] ) ;
64979: LD_ADDR_VAR 0 5
64983: PUSH
64984: LD_VAR 0 5
64988: PUSH
64989: LD_VAR 0 30
64993: PUSH
64994: LD_INT 1
64996: ARRAY
64997: PPUSH
64998: LD_VAR 0 13
65002: PUSH
65003: LD_INT 1
65005: ARRAY
65006: PPUSH
65007: LD_VAR 0 13
65011: PUSH
65012: LD_INT 2
65014: ARRAY
65015: PPUSH
65016: CALL_OW 297
65020: ADD
65021: ST_TO_ADDR
65022: GO 64976
65024: POP
65025: POP
// temp_list = WorstFromListByList ( free_parking_spots , temp_list ) ;
65026: LD_ADDR_VAR 0 5
65030: PUSH
65031: LD_VAR 0 12
65035: PPUSH
65036: LD_VAR 0 5
65040: PPUSH
65041: CALL_OW 78
65045: ST_TO_ADDR
// ComMoveXY ( vehicles_to_park [ 1 ] , temp_list [ 1 ] , temp_list [ 2 ] ) ;
65046: LD_VAR 0 30
65050: PUSH
65051: LD_INT 1
65053: ARRAY
65054: PPUSH
65055: LD_VAR 0 5
65059: PUSH
65060: LD_INT 1
65062: ARRAY
65063: PPUSH
65064: LD_VAR 0 5
65068: PUSH
65069: LD_INT 2
65071: ARRAY
65072: PPUSH
65073: CALL_OW 111
// AddComHold ( vehicles_to_park [ 1 ] ) ;
65077: LD_VAR 0 30
65081: PUSH
65082: LD_INT 1
65084: ARRAY
65085: PPUSH
65086: CALL_OW 200
// free_parking_spots = free_parking_spots diff [ temp_list ] ;
65090: LD_ADDR_VAR 0 12
65094: PUSH
65095: LD_VAR 0 12
65099: PUSH
65100: LD_VAR 0 5
65104: PUSH
65105: EMPTY
65106: LIST
65107: DIFF
65108: ST_TO_ADDR
// vehicles_to_park = Delete ( vehicles_to_park , 1 ) ;
65109: LD_ADDR_VAR 0 30
65113: PUSH
65114: LD_VAR 0 30
65118: PPUSH
65119: LD_INT 1
65121: PPUSH
65122: CALL_OW 3
65126: ST_TO_ADDR
// end ;
65127: GO 64937
// temp_list_2 = FilterUnitsInArea ( BehemothDefend , [ f_side , 2 ] ) ;
65129: LD_ADDR_VAR 0 16
65133: PUSH
65134: LD_INT 51
65136: PPUSH
65137: LD_INT 22
65139: PUSH
65140: LD_INT 2
65142: PUSH
65143: EMPTY
65144: LIST
65145: LIST
65146: PPUSH
65147: CALL_OW 70
65151: ST_TO_ADDR
// if temp_list_2 > 0 then
65152: LD_VAR 0 16
65156: PUSH
65157: LD_INT 0
65159: GREATER
65160: IFFALSE 65217
// begin for i in ai_behemoths [ base ] diff ArtUse_Beh_damaged do
65162: LD_ADDR_VAR 0 2
65166: PUSH
65167: LD_EXP 113
65171: PUSH
65172: LD_VAR 0 14
65176: ARRAY
65177: PUSH
65178: LD_EXP 208
65182: DIFF
65183: PUSH
65184: FOR_IN
65185: IFFALSE 65213
// ComMoveUnit ( i , NearestUnitToUnit ( temp_list_2 , i ) ) ;
65187: LD_VAR 0 2
65191: PPUSH
65192: LD_VAR 0 16
65196: PPUSH
65197: LD_VAR 0 2
65201: PPUSH
65202: CALL_OW 74
65206: PPUSH
65207: CALL_OW 112
65211: GO 65184
65213: POP
65214: POP
// end else
65215: GO 65969
// begin for i in ai_behemoths [ base ] diff ai_behemoth_damaged [ base ] ^ parked_behemoths ^ ArtUse_Beh_damaged do
65217: LD_ADDR_VAR 0 2
65221: PUSH
65222: LD_EXP 113
65226: PUSH
65227: LD_VAR 0 14
65231: ARRAY
65232: PUSH
65233: LD_EXP 147
65237: PUSH
65238: LD_VAR 0 14
65242: ARRAY
65243: PUSH
65244: LD_VAR 0 25
65248: ADD
65249: PUSH
65250: LD_EXP 208
65254: ADD
65255: DIFF
65256: PUSH
65257: FOR_IN
65258: IFFALSE 65414
// if free_behemoth_parking_spots > 0 then
65260: LD_VAR 0 24
65264: PUSH
65265: LD_INT 0
65267: GREATER
65268: IFFALSE 65410
// begin temp_list = [ ] ;
65270: LD_ADDR_VAR 0 5
65274: PUSH
65275: EMPTY
65276: ST_TO_ADDR
// for k in free_behemoth_parking_spots do
65277: LD_ADDR_VAR 0 13
65281: PUSH
65282: LD_VAR 0 24
65286: PUSH
65287: FOR_IN
65288: IFFALSE 65331
// temp_list = temp_list ^ GetDistUnitXY ( i , k [ 1 ] , k [ 2 ] ) ;
65290: LD_ADDR_VAR 0 5
65294: PUSH
65295: LD_VAR 0 5
65299: PUSH
65300: LD_VAR 0 2
65304: PPUSH
65305: LD_VAR 0 13
65309: PUSH
65310: LD_INT 1
65312: ARRAY
65313: PPUSH
65314: LD_VAR 0 13
65318: PUSH
65319: LD_INT 2
65321: ARRAY
65322: PPUSH
65323: CALL_OW 297
65327: ADD
65328: ST_TO_ADDR
65329: GO 65287
65331: POP
65332: POP
// temp_list = WorstFromListByList ( free_behemoth_parking_spots , temp_list ) ;
65333: LD_ADDR_VAR 0 5
65337: PUSH
65338: LD_VAR 0 24
65342: PPUSH
65343: LD_VAR 0 5
65347: PPUSH
65348: CALL_OW 78
65352: ST_TO_ADDR
// ComMoveXY ( i , temp_list [ 1 ] , temp_list [ 2 ] ) ;
65353: LD_VAR 0 2
65357: PPUSH
65358: LD_VAR 0 5
65362: PUSH
65363: LD_INT 1
65365: ARRAY
65366: PPUSH
65367: LD_VAR 0 5
65371: PUSH
65372: LD_INT 2
65374: ARRAY
65375: PPUSH
65376: CALL_OW 111
// AddComHold ( i ) ;
65380: LD_VAR 0 2
65384: PPUSH
65385: CALL_OW 200
// free_behemoth_parking_spots = free_behemoth_parking_spots diff [ temp_list ] ;
65389: LD_ADDR_VAR 0 24
65393: PUSH
65394: LD_VAR 0 24
65398: PUSH
65399: LD_VAR 0 5
65403: PUSH
65404: EMPTY
65405: LIST
65406: DIFF
65407: ST_TO_ADDR
// end else
65408: GO 65412
// break ;
65410: GO 65414
65412: GO 65257
65414: POP
65415: POP
// for i in ai_behemoths [ base ] diff ai_behemoth_damaged [ base ] do
65416: LD_ADDR_VAR 0 2
65420: PUSH
65421: LD_EXP 113
65425: PUSH
65426: LD_VAR 0 14
65430: ARRAY
65431: PUSH
65432: LD_EXP 147
65436: PUSH
65437: LD_VAR 0 14
65441: ARRAY
65442: DIFF
65443: PUSH
65444: FOR_IN
65445: IFFALSE 65501
// if GetLives ( i ) < 600 then
65447: LD_VAR 0 2
65451: PPUSH
65452: CALL_OW 256
65456: PUSH
65457: LD_INT 600
65459: LESS
65460: IFFALSE 65499
// ai_behemoth_damaged = Replace ( ai_behemoth_damaged , base , ai_behemoth_damaged [ base ] ^ i ) ;
65462: LD_ADDR_EXP 147
65466: PUSH
65467: LD_EXP 147
65471: PPUSH
65472: LD_VAR 0 14
65476: PPUSH
65477: LD_EXP 147
65481: PUSH
65482: LD_VAR 0 14
65486: ARRAY
65487: PUSH
65488: LD_VAR 0 2
65492: ADD
65493: PPUSH
65494: CALL_OW 1
65498: ST_TO_ADDR
65499: GO 65444
65501: POP
65502: POP
// for i in ai_behemoth_damaged [ base ] diff ArtUse_Beh_damaged do
65503: LD_ADDR_VAR 0 2
65507: PUSH
65508: LD_EXP 147
65512: PUSH
65513: LD_VAR 0 14
65517: ARRAY
65518: PUSH
65519: LD_EXP 208
65523: DIFF
65524: PUSH
65525: FOR_IN
65526: IFFALSE 65967
// begin if GetLives ( i ) = 1000 then
65528: LD_VAR 0 2
65532: PPUSH
65533: CALL_OW 256
65537: PUSH
65538: LD_INT 1000
65540: EQUAL
65541: IFFALSE 65582
// begin ai_behemoth_damaged = Replace ( ai_behemoth_damaged , base , ai_behemoth_damaged [ base ] diff i ) ;
65543: LD_ADDR_EXP 147
65547: PUSH
65548: LD_EXP 147
65552: PPUSH
65553: LD_VAR 0 14
65557: PPUSH
65558: LD_EXP 147
65562: PUSH
65563: LD_VAR 0 14
65567: ARRAY
65568: PUSH
65569: LD_VAR 0 2
65573: DIFF
65574: PPUSH
65575: CALL_OW 1
65579: ST_TO_ADDR
// break ;
65580: GO 65967
// end ; temp_list = 999 ;
65582: LD_ADDR_VAR 0 5
65586: PUSH
65587: LD_INT 999
65589: ST_TO_ADDR
// temp = 1 ;
65590: LD_ADDR_VAR 0 8
65594: PUSH
65595: LD_INT 1
65597: ST_TO_ADDR
// for j = 1 to ai_behemoth_retreat_hexes [ base ] do
65598: LD_ADDR_VAR 0 3
65602: PUSH
65603: DOUBLE
65604: LD_INT 1
65606: DEC
65607: ST_TO_ADDR
65608: LD_EXP 146
65612: PUSH
65613: LD_VAR 0 14
65617: ARRAY
65618: PUSH
65619: FOR_TO
65620: IFFALSE 65750
// if GetDistUnitXY ( i , ai_behemoth_retreat_hexes [ base ] [ j ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ j ] [ 2 ] ) < temp_list then
65622: LD_VAR 0 2
65626: PPUSH
65627: LD_EXP 146
65631: PUSH
65632: LD_VAR 0 14
65636: ARRAY
65637: PUSH
65638: LD_VAR 0 3
65642: ARRAY
65643: PUSH
65644: LD_INT 1
65646: ARRAY
65647: PPUSH
65648: LD_EXP 146
65652: PUSH
65653: LD_VAR 0 14
65657: ARRAY
65658: PUSH
65659: LD_VAR 0 3
65663: ARRAY
65664: PUSH
65665: LD_INT 2
65667: ARRAY
65668: PPUSH
65669: CALL_OW 297
65673: PUSH
65674: LD_VAR 0 5
65678: LESS
65679: IFFALSE 65748
// begin temp_list = GetDistUnitXY ( i , ai_behemoth_retreat_hexes [ base ] [ j ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ j ] [ 2 ] ) ;
65681: LD_ADDR_VAR 0 5
65685: PUSH
65686: LD_VAR 0 2
65690: PPUSH
65691: LD_EXP 146
65695: PUSH
65696: LD_VAR 0 14
65700: ARRAY
65701: PUSH
65702: LD_VAR 0 3
65706: ARRAY
65707: PUSH
65708: LD_INT 1
65710: ARRAY
65711: PPUSH
65712: LD_EXP 146
65716: PUSH
65717: LD_VAR 0 14
65721: ARRAY
65722: PUSH
65723: LD_VAR 0 3
65727: ARRAY
65728: PUSH
65729: LD_INT 2
65731: ARRAY
65732: PPUSH
65733: CALL_OW 297
65737: ST_TO_ADDR
// temp = j ;
65738: LD_ADDR_VAR 0 8
65742: PUSH
65743: LD_VAR 0 3
65747: ST_TO_ADDR
// end ;
65748: GO 65619
65750: POP
65751: POP
// if HexInfo ( ai_behemoth_retreat_hexes [ base ] [ temp ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 2 ] ) = 0 then
65752: LD_EXP 146
65756: PUSH
65757: LD_VAR 0 14
65761: ARRAY
65762: PUSH
65763: LD_VAR 0 8
65767: ARRAY
65768: PUSH
65769: LD_INT 1
65771: ARRAY
65772: PPUSH
65773: LD_EXP 146
65777: PUSH
65778: LD_VAR 0 14
65782: ARRAY
65783: PUSH
65784: LD_VAR 0 8
65788: ARRAY
65789: PUSH
65790: LD_INT 2
65792: ARRAY
65793: PPUSH
65794: CALL_OW 428
65798: PUSH
65799: LD_INT 0
65801: EQUAL
65802: IFFALSE 65857
// ComMoveXY ( i , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 2 ] ) else
65804: LD_VAR 0 2
65808: PPUSH
65809: LD_EXP 146
65813: PUSH
65814: LD_VAR 0 14
65818: ARRAY
65819: PUSH
65820: LD_VAR 0 8
65824: ARRAY
65825: PUSH
65826: LD_INT 1
65828: ARRAY
65829: PPUSH
65830: LD_EXP 146
65834: PUSH
65835: LD_VAR 0 14
65839: ARRAY
65840: PUSH
65841: LD_VAR 0 8
65845: ARRAY
65846: PUSH
65847: LD_INT 2
65849: ARRAY
65850: PPUSH
65851: CALL_OW 111
65855: GO 65965
// if GetDistUnitXY ( i , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 2 ] ) > 4 then
65857: LD_VAR 0 2
65861: PPUSH
65862: LD_EXP 146
65866: PUSH
65867: LD_VAR 0 14
65871: ARRAY
65872: PUSH
65873: LD_VAR 0 8
65877: ARRAY
65878: PUSH
65879: LD_INT 1
65881: ARRAY
65882: PPUSH
65883: LD_EXP 146
65887: PUSH
65888: LD_VAR 0 14
65892: ARRAY
65893: PUSH
65894: LD_VAR 0 8
65898: ARRAY
65899: PUSH
65900: LD_INT 2
65902: ARRAY
65903: PPUSH
65904: CALL_OW 297
65908: PUSH
65909: LD_INT 4
65911: GREATER
65912: IFFALSE 65965
// ComMoveXY ( i , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 1 ] , ai_behemoth_retreat_hexes [ base ] [ temp ] [ 2 ] ) ;
65914: LD_VAR 0 2
65918: PPUSH
65919: LD_EXP 146
65923: PUSH
65924: LD_VAR 0 14
65928: ARRAY
65929: PUSH
65930: LD_VAR 0 8
65934: ARRAY
65935: PUSH
65936: LD_INT 1
65938: ARRAY
65939: PPUSH
65940: LD_EXP 146
65944: PUSH
65945: LD_VAR 0 14
65949: ARRAY
65950: PUSH
65951: LD_VAR 0 8
65955: ARRAY
65956: PUSH
65957: LD_INT 2
65959: ARRAY
65960: PPUSH
65961: CALL_OW 111
// end ;
65965: GO 65525
65967: POP
65968: POP
// end ; if under_attack then
65969: LD_VAR 0 11
65973: IFFALSE 66125
// begin for i in UnitFilter ( ( ai_retreating_vehicles_defend [ base ] union ai_vehicles_being_repaired [ base ] ) diff vehicles_allowed_to_park ^ ai_behemoth_damaged [ base ] , [ f_ok ] ) do
65975: LD_ADDR_VAR 0 2
65979: PUSH
65980: LD_EXP 79
65984: PUSH
65985: LD_VAR 0 14
65989: ARRAY
65990: PUSH
65991: LD_EXP 80
65995: PUSH
65996: LD_VAR 0 14
66000: ARRAY
66001: UNION
66002: PUSH
66003: LD_VAR 0 28
66007: PUSH
66008: LD_EXP 147
66012: PUSH
66013: LD_VAR 0 14
66017: ARRAY
66018: ADD
66019: DIFF
66020: PPUSH
66021: LD_INT 50
66023: PUSH
66024: EMPTY
66025: LIST
66026: PPUSH
66027: CALL_OW 72
66031: PUSH
66032: FOR_IN
66033: IFFALSE 66123
// begin if GetDistUnitXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > human_pullback_hex_max_dist then
66035: LD_VAR 0 2
66039: PPUSH
66040: LD_EXP 83
66044: PUSH
66045: LD_VAR 0 14
66049: ARRAY
66050: PUSH
66051: LD_INT 1
66053: ARRAY
66054: PPUSH
66055: LD_EXP 83
66059: PUSH
66060: LD_VAR 0 14
66064: ARRAY
66065: PUSH
66066: LD_INT 2
66068: ARRAY
66069: PPUSH
66070: CALL_OW 297
66074: PUSH
66075: LD_VAR 0 29
66079: GREATER
66080: IFFALSE 66121
// ComMoveXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
66082: LD_VAR 0 2
66086: PPUSH
66087: LD_EXP 83
66091: PUSH
66092: LD_VAR 0 14
66096: ARRAY
66097: PUSH
66098: LD_INT 1
66100: ARRAY
66101: PPUSH
66102: LD_EXP 83
66106: PUSH
66107: LD_VAR 0 14
66111: ARRAY
66112: PUSH
66113: LD_INT 2
66115: ARRAY
66116: PPUSH
66117: CALL_OW 111
// end ;
66121: GO 66032
66123: POP
66124: POP
// end ; if under_attack then
66125: LD_VAR 0 11
66129: IFFALSE 66250
// begin allowed_to_repair_vehicles = parked_vehicles ^ UnitFilter ( vehicles_to_consider diff vehicles_allowed_to_park , [ f_distxy , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] , human_pullback_hex_max_dist ] ) ;
66131: LD_ADDR_VAR 0 10
66135: PUSH
66136: LD_VAR 0 18
66140: PUSH
66141: LD_VAR 0 27
66145: PUSH
66146: LD_VAR 0 28
66150: DIFF
66151: PPUSH
66152: LD_INT 92
66154: PUSH
66155: LD_EXP 83
66159: PUSH
66160: LD_VAR 0 14
66164: ARRAY
66165: PUSH
66166: LD_INT 1
66168: ARRAY
66169: PUSH
66170: LD_EXP 83
66174: PUSH
66175: LD_VAR 0 14
66179: ARRAY
66180: PUSH
66181: LD_INT 2
66183: ARRAY
66184: PUSH
66185: LD_VAR 0 29
66189: PUSH
66190: EMPTY
66191: LIST
66192: LIST
66193: LIST
66194: LIST
66195: PPUSH
66196: CALL_OW 72
66200: ADD
66201: ST_TO_ADDR
// allowed_to_repair_vehicles = allowed_to_repair_vehicles diff ( ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) ;
66202: LD_ADDR_VAR 0 10
66206: PUSH
66207: LD_VAR 0 10
66211: PUSH
66212: LD_EXP 81
66216: PUSH
66217: LD_VAR 0 14
66221: ARRAY
66222: PUSH
66223: LD_EXP 89
66227: PUSH
66228: LD_VAR 0 14
66232: ARRAY
66233: ADD
66234: PUSH
66235: LD_EXP 88
66239: PUSH
66240: LD_VAR 0 14
66244: ARRAY
66245: ADD
66246: DIFF
66247: ST_TO_ADDR
// end else
66248: GO 66469
// begin allowed_to_repair_vehicles = vehicles_to_consider diff ( ai_refuel_vehicles_list [ base ] ^ ai_vehicles_having_been_moved [ base ] ^ ai_vehicle_being_moved [ base ] ) ;
66250: LD_ADDR_VAR 0 10
66254: PUSH
66255: LD_VAR 0 27
66259: PUSH
66260: LD_EXP 81
66264: PUSH
66265: LD_VAR 0 14
66269: ARRAY
66270: PUSH
66271: LD_EXP 89
66275: PUSH
66276: LD_VAR 0 14
66280: ARRAY
66281: ADD
66282: PUSH
66283: LD_EXP 88
66287: PUSH
66288: LD_VAR 0 14
66292: ARRAY
66293: ADD
66294: DIFF
66295: ST_TO_ADDR
// allowed_to_repair_vehicles = allowed_to_repair_vehicles ^ UnitFilter ( ai_cargo_bay [ base ] diff 0 , [ f_inarea , area ] ) ;
66296: LD_ADDR_VAR 0 10
66300: PUSH
66301: LD_VAR 0 10
66305: PUSH
66306: LD_EXP 95
66310: PUSH
66311: LD_VAR 0 14
66315: ARRAY
66316: PUSH
66317: LD_INT 0
66319: DIFF
66320: PPUSH
66321: LD_INT 95
66323: PUSH
66324: LD_VAR 0 15
66328: PUSH
66329: EMPTY
66330: LIST
66331: LIST
66332: PPUSH
66333: CALL_OW 72
66337: ADD
66338: ST_TO_ADDR
// allowed_to_repair_vehicles = allowed_to_repair_vehicles ^ ai_behemoth_damaged [ base ] diff ai_units_irradiated ;
66339: LD_ADDR_VAR 0 10
66343: PUSH
66344: LD_VAR 0 10
66348: PUSH
66349: LD_EXP 147
66353: PUSH
66354: LD_VAR 0 14
66358: ARRAY
66359: ADD
66360: PUSH
66361: LD_EXP 158
66365: DIFF
66366: ST_TO_ADDR
// i = 1 ;
66367: LD_ADDR_VAR 0 2
66371: PUSH
66372: LD_INT 1
66374: ST_TO_ADDR
// while i <= allowed_to_repair_vehicles do
66375: LD_VAR 0 2
66379: PUSH
66380: LD_VAR 0 10
66384: LESSEQUAL
66385: IFFALSE 66469
// begin if not IsOk ( allowed_to_repair_vehicles [ i ] ) and GetDistUnitArea ( allowed_to_repair_vehicles [ i ] , area ) > 7 then
66387: LD_VAR 0 10
66391: PUSH
66392: LD_VAR 0 2
66396: ARRAY
66397: PPUSH
66398: CALL_OW 302
66402: NOT
66403: PUSH
66404: LD_VAR 0 10
66408: PUSH
66409: LD_VAR 0 2
66413: ARRAY
66414: PPUSH
66415: LD_VAR 0 15
66419: PPUSH
66420: CALL_OW 299
66424: PUSH
66425: LD_INT 7
66427: GREATER
66428: AND
66429: IFFALSE 66453
// begin allowed_to_repair_vehicles = Delete ( allowed_to_repair_vehicles , i ) ;
66431: LD_ADDR_VAR 0 10
66435: PUSH
66436: LD_VAR 0 10
66440: PPUSH
66441: LD_VAR 0 2
66445: PPUSH
66446: CALL_OW 3
66450: ST_TO_ADDR
// continue ;
66451: GO 66375
// end ; i = i + 1 ;
66453: LD_ADDR_VAR 0 2
66457: PUSH
66458: LD_VAR 0 2
66462: PUSH
66463: LD_INT 1
66465: PLUS
66466: ST_TO_ADDR
// end ;
66467: GO 66375
// end ; allowed_to_repair_vehicles = UnitFilter ( allowed_to_repair_vehicles , [ [ f_not , [ f_lives , 1000 ] ] , [ f_or , [ f_not , [ f_ok ] ] , [ f_inarea , area ] ] ] ) ;
66469: LD_ADDR_VAR 0 10
66473: PUSH
66474: LD_VAR 0 10
66478: PPUSH
66479: LD_INT 3
66481: PUSH
66482: LD_INT 24
66484: PUSH
66485: LD_INT 1000
66487: PUSH
66488: EMPTY
66489: LIST
66490: LIST
66491: PUSH
66492: EMPTY
66493: LIST
66494: LIST
66495: PUSH
66496: LD_INT 2
66498: PUSH
66499: LD_INT 3
66501: PUSH
66502: LD_INT 50
66504: PUSH
66505: EMPTY
66506: LIST
66507: PUSH
66508: EMPTY
66509: LIST
66510: LIST
66511: PUSH
66512: LD_INT 95
66514: PUSH
66515: LD_VAR 0 15
66519: PUSH
66520: EMPTY
66521: LIST
66522: LIST
66523: PUSH
66524: EMPTY
66525: LIST
66526: LIST
66527: LIST
66528: PUSH
66529: EMPTY
66530: LIST
66531: LIST
66532: PPUSH
66533: CALL_OW 72
66537: ST_TO_ADDR
// if ai_crane [ base ] > 0 then
66538: LD_EXP 98
66542: PUSH
66543: LD_VAR 0 14
66547: ARRAY
66548: PUSH
66549: LD_INT 0
66551: GREATER
66552: IFFALSE 67143
// begin k = false ;
66554: LD_ADDR_VAR 0 13
66558: PUSH
66559: LD_INT 0
66561: ST_TO_ADDR
// if ai_crane_is_being_repaired [ base ] and ( GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) <= 6 or ( IsInArea ( ai_crane [ base ] , area ) and not under_attack ) ) then
66562: LD_EXP 101
66566: PUSH
66567: LD_VAR 0 14
66571: ARRAY
66572: PUSH
66573: LD_EXP 98
66577: PUSH
66578: LD_VAR 0 14
66582: ARRAY
66583: PPUSH
66584: LD_EXP 83
66588: PUSH
66589: LD_VAR 0 14
66593: ARRAY
66594: PUSH
66595: LD_INT 1
66597: ARRAY
66598: PPUSH
66599: LD_EXP 83
66603: PUSH
66604: LD_VAR 0 14
66608: ARRAY
66609: PUSH
66610: LD_INT 2
66612: ARRAY
66613: PPUSH
66614: CALL_OW 297
66618: PUSH
66619: LD_INT 6
66621: LESSEQUAL
66622: PUSH
66623: LD_EXP 98
66627: PUSH
66628: LD_VAR 0 14
66632: ARRAY
66633: PPUSH
66634: LD_VAR 0 15
66638: PPUSH
66639: CALL_OW 308
66643: PUSH
66644: LD_VAR 0 11
66648: NOT
66649: AND
66650: OR
66651: AND
66652: IFFALSE 66923
// begin if GetLives ( ai_crane [ base ] ) < 1000 then
66654: LD_EXP 98
66658: PUSH
66659: LD_VAR 0 14
66663: ARRAY
66664: PPUSH
66665: CALL_OW 256
66669: PUSH
66670: LD_INT 1000
66672: LESS
66673: IFFALSE 66697
// allowed_to_repair_vehicles = ai_crane [ base ] ^ allowed_to_repair_vehicles ;
66675: LD_ADDR_VAR 0 10
66679: PUSH
66680: LD_EXP 98
66684: PUSH
66685: LD_VAR 0 14
66689: ARRAY
66690: PUSH
66691: LD_VAR 0 10
66695: ADD
66696: ST_TO_ADDR
// if ai_crane_driver [ base ] > 0 then
66697: LD_EXP 102
66701: PUSH
66702: LD_VAR 0 14
66706: ARRAY
66707: PUSH
66708: LD_INT 0
66710: GREATER
66711: IFFALSE 66921
// begin if GetLives ( ai_crane_driver [ base ] ) = 1000 then
66713: LD_EXP 102
66717: PUSH
66718: LD_VAR 0 14
66722: ARRAY
66723: PPUSH
66724: CALL_OW 256
66728: PUSH
66729: LD_INT 1000
66731: EQUAL
66732: IFFALSE 66758
// begin mechanics_list = mechanics_list ^ ai_crane_driver [ base ] ;
66734: LD_ADDR_VAR 0 4
66738: PUSH
66739: LD_VAR 0 4
66743: PUSH
66744: LD_EXP 102
66748: PUSH
66749: LD_VAR 0 14
66753: ARRAY
66754: ADD
66755: ST_TO_ADDR
// end else
66756: GO 66921
// begin if GetDistUnitXY ( ai_crane [ base ] , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) <= 6 then
66758: LD_EXP 98
66762: PUSH
66763: LD_VAR 0 14
66767: ARRAY
66768: PPUSH
66769: LD_EXP 83
66773: PUSH
66774: LD_VAR 0 14
66778: ARRAY
66779: PUSH
66780: LD_INT 1
66782: ARRAY
66783: PPUSH
66784: LD_EXP 83
66788: PUSH
66789: LD_VAR 0 14
66793: ARRAY
66794: PUSH
66795: LD_INT 2
66797: ARRAY
66798: PPUSH
66799: CALL_OW 297
66803: PUSH
66804: LD_INT 6
66806: LESSEQUAL
66807: IFFALSE 66913
// begin if GetHumansOutOfUnits ( [ ai_crane_driver [ base ] ] ) > 0 and not ai_crane_driver [ base ] in ai_heal_these_humans [ base ] then
66809: LD_EXP 102
66813: PUSH
66814: LD_VAR 0 14
66818: ARRAY
66819: PUSH
66820: EMPTY
66821: LIST
66822: PPUSH
66823: CALL 55807 0 1
66827: PUSH
66828: LD_INT 0
66830: GREATER
66831: PUSH
66832: LD_EXP 102
66836: PUSH
66837: LD_VAR 0 14
66841: ARRAY
66842: PUSH
66843: LD_EXP 85
66847: PUSH
66848: LD_VAR 0 14
66852: ARRAY
66853: IN
66854: NOT
66855: AND
66856: IFFALSE 66911
// begin temp_list = ai_heal_these_humans [ base ] ^ ai_crane_driver [ base ] ;
66858: LD_ADDR_VAR 0 5
66862: PUSH
66863: LD_EXP 85
66867: PUSH
66868: LD_VAR 0 14
66872: ARRAY
66873: PUSH
66874: LD_EXP 102
66878: PUSH
66879: LD_VAR 0 14
66883: ARRAY
66884: ADD
66885: ST_TO_ADDR
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
66886: LD_ADDR_EXP 85
66890: PUSH
66891: LD_EXP 85
66895: PPUSH
66896: LD_VAR 0 14
66900: PPUSH
66901: LD_VAR 0 5
66905: PPUSH
66906: CALL_OW 1
66910: ST_TO_ADDR
// end ; end else
66911: GO 66921
// k = true ;
66913: LD_ADDR_VAR 0 13
66917: PUSH
66918: LD_INT 1
66920: ST_TO_ADDR
// end ; end ; end else
66921: GO 66931
// k = true ;
66923: LD_ADDR_VAR 0 13
66927: PUSH
66928: LD_INT 1
66930: ST_TO_ADDR
// if k then
66931: LD_VAR 0 13
66935: IFFALSE 67143
// begin if IsOk ( ai_crane [ base ] ) and ai_crane_driver [ base ] > 0 and not ai_crane_driver [ base ] in mechanics_list and not ai_crane_driver [ base ] in ai_heal_these_humans [ base ] then
66937: LD_EXP 98
66941: PUSH
66942: LD_VAR 0 14
66946: ARRAY
66947: PPUSH
66948: CALL_OW 302
66952: PUSH
66953: LD_EXP 102
66957: PUSH
66958: LD_VAR 0 14
66962: ARRAY
66963: PUSH
66964: LD_INT 0
66966: GREATER
66967: AND
66968: PUSH
66969: LD_EXP 102
66973: PUSH
66974: LD_VAR 0 14
66978: ARRAY
66979: PUSH
66980: LD_VAR 0 4
66984: IN
66985: NOT
66986: AND
66987: PUSH
66988: LD_EXP 102
66992: PUSH
66993: LD_VAR 0 14
66997: ARRAY
66998: PUSH
66999: LD_EXP 85
67003: PUSH
67004: LD_VAR 0 14
67008: ARRAY
67009: IN
67010: NOT
67011: AND
67012: IFFALSE 67143
// begin if IsInUnit ( ai_crane_driver [ base ] ) <> ai_crane [ base ] then
67014: LD_EXP 102
67018: PUSH
67019: LD_VAR 0 14
67023: ARRAY
67024: PPUSH
67025: CALL_OW 310
67029: PUSH
67030: LD_EXP 98
67034: PUSH
67035: LD_VAR 0 14
67039: ARRAY
67040: NONEQUAL
67041: IFFALSE 67143
// case GetType ( IsInUnit ( ai_crane_driver [ base ] ) ) of unit_building :
67043: LD_EXP 102
67047: PUSH
67048: LD_VAR 0 14
67052: ARRAY
67053: PPUSH
67054: CALL_OW 310
67058: PPUSH
67059: CALL_OW 247
67063: PUSH
67064: LD_INT 3
67066: DOUBLE
67067: EQUAL
67068: IFTRUE 67072
67070: GO 67090
67072: POP
// ComExitBuilding ( ai_crane_driver [ base ] ) ; unit_vehicle :
67073: LD_EXP 102
67077: PUSH
67078: LD_VAR 0 14
67082: ARRAY
67083: PPUSH
67084: CALL_OW 122
67088: GO 67143
67090: LD_INT 2
67092: DOUBLE
67093: EQUAL
67094: IFTRUE 67098
67096: GO 67116
67098: POP
// ComExitVehicle ( ai_crane_driver [ base ] ) ; else
67099: LD_EXP 102
67103: PUSH
67104: LD_VAR 0 14
67108: ARRAY
67109: PPUSH
67110: CALL_OW 121
67114: GO 67143
67116: POP
// ComEnterUnit ( ai_crane_driver [ base ] , ai_crane [ base ] ) ; end ;
67117: LD_EXP 102
67121: PUSH
67122: LD_VAR 0 14
67126: ARRAY
67127: PPUSH
67128: LD_EXP 98
67132: PUSH
67133: LD_VAR 0 14
67137: ARRAY
67138: PPUSH
67139: CALL_OW 120
// end ; end ; end ; if mechanics_list = 0 and remote_mechanics = 0 then
67143: LD_VAR 0 4
67147: PUSH
67148: LD_INT 0
67150: EQUAL
67151: PUSH
67152: LD_VAR 0 17
67156: PUSH
67157: LD_INT 0
67159: EQUAL
67160: AND
67161: IFFALSE 67165
// continue ;
67163: GO 58591
// allowed_to_repair_vehicles = allowed_to_repair_vehicles diff ai_vehicles_being_repaired [ base ] ;
67165: LD_ADDR_VAR 0 10
67169: PUSH
67170: LD_VAR 0 10
67174: PUSH
67175: LD_EXP 80
67179: PUSH
67180: LD_VAR 0 14
67184: ARRAY
67185: DIFF
67186: ST_TO_ADDR
// if allowed_to_repair_vehicles > 0 or ai_vehicles_being_repaired [ base ] > 0 then
67187: LD_VAR 0 10
67191: PUSH
67192: LD_INT 0
67194: GREATER
67195: PUSH
67196: LD_EXP 80
67200: PUSH
67201: LD_VAR 0 14
67205: ARRAY
67206: PUSH
67207: LD_INT 0
67209: GREATER
67210: OR
67211: IFFALSE 67630
// begin if remote_mechanics > 0 then
67213: LD_VAR 0 17
67217: PUSH
67218: LD_INT 0
67220: GREATER
67221: IFFALSE 67374
// begin if under_attack or UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_control , control_remote ] , [ f_ok ] ] ) > 0 then
67223: LD_VAR 0 11
67227: PUSH
67228: LD_EXP 78
67232: PUSH
67233: LD_VAR 0 14
67237: ARRAY
67238: PPUSH
67239: LD_INT 33
67241: PUSH
67242: LD_INT 2
67244: PUSH
67245: EMPTY
67246: LIST
67247: LIST
67248: PUSH
67249: LD_INT 50
67251: PUSH
67252: EMPTY
67253: LIST
67254: PUSH
67255: EMPTY
67256: LIST
67257: LIST
67258: PPUSH
67259: CALL_OW 72
67263: PUSH
67264: LD_INT 0
67266: GREATER
67267: OR
67268: IFFALSE 67374
// begin for i in remote_driver_vehicles [ base ] do
67270: LD_ADDR_VAR 0 2
67274: PUSH
67275: LD_VAR 0 32
67279: PUSH
67280: LD_VAR 0 14
67284: ARRAY
67285: PUSH
67286: FOR_IN
67287: IFFALSE 67372
// if UnitFilter ( i [ 2 ] , [ f_ok ] ) = 0 and i [ 1 ] in remote_mechanics then
67289: LD_VAR 0 2
67293: PUSH
67294: LD_INT 2
67296: ARRAY
67297: PPUSH
67298: LD_INT 50
67300: PUSH
67301: EMPTY
67302: LIST
67303: PPUSH
67304: CALL_OW 72
67308: PUSH
67309: LD_INT 0
67311: EQUAL
67312: PUSH
67313: LD_VAR 0 2
67317: PUSH
67318: LD_INT 1
67320: ARRAY
67321: PUSH
67322: LD_VAR 0 17
67326: IN
67327: AND
67328: IFFALSE 67370
// begin mechanics_list = mechanics_list ^ i [ 1 ] ;
67330: LD_ADDR_VAR 0 4
67334: PUSH
67335: LD_VAR 0 4
67339: PUSH
67340: LD_VAR 0 2
67344: PUSH
67345: LD_INT 1
67347: ARRAY
67348: ADD
67349: ST_TO_ADDR
// remote_mechanics = remote_mechanics diff i [ 1 ] ;
67350: LD_ADDR_VAR 0 17
67354: PUSH
67355: LD_VAR 0 17
67359: PUSH
67360: LD_VAR 0 2
67364: PUSH
67365: LD_INT 1
67367: ARRAY
67368: DIFF
67369: ST_TO_ADDR
// end ;
67370: GO 67286
67372: POP
67373: POP
// end ; end ; if allowed_to_repair_vehicles > 0 then
67374: LD_VAR 0 10
67378: PUSH
67379: LD_INT 0
67381: GREATER
67382: IFFALSE 67599
// begin k = false ;
67384: LD_ADDR_VAR 0 13
67388: PUSH
67389: LD_INT 0
67391: ST_TO_ADDR
// if ai_vehicles_being_repaired [ base ] = 0 then
67392: LD_EXP 80
67396: PUSH
67397: LD_VAR 0 14
67401: ARRAY
67402: PUSH
67403: LD_INT 0
67405: EQUAL
67406: IFFALSE 67418
// k = true else
67408: LD_ADDR_VAR 0 13
67412: PUSH
67413: LD_INT 1
67415: ST_TO_ADDR
67416: GO 67481
// if IsOk ( ai_vehicles_being_repaired [ base ] [ 1 ] ) then
67418: LD_EXP 80
67422: PUSH
67423: LD_VAR 0 14
67427: ARRAY
67428: PUSH
67429: LD_INT 1
67431: ARRAY
67432: PPUSH
67433: CALL_OW 302
67437: IFFALSE 67481
// begin allowed_to_repair_vehicles = UnitFilter ( allowed_to_repair_vehicles , [ f_not , [ f_ok ] ] ) ;
67439: LD_ADDR_VAR 0 10
67443: PUSH
67444: LD_VAR 0 10
67448: PPUSH
67449: LD_INT 3
67451: PUSH
67452: LD_INT 50
67454: PUSH
67455: EMPTY
67456: LIST
67457: PUSH
67458: EMPTY
67459: LIST
67460: LIST
67461: PPUSH
67462: CALL_OW 72
67466: ST_TO_ADDR
// k := allowed_to_repair_vehicles > 0 ;
67467: LD_ADDR_VAR 0 13
67471: PUSH
67472: LD_VAR 0 10
67476: PUSH
67477: LD_INT 0
67479: GREATER
67480: ST_TO_ADDR
// end ; if k then
67481: LD_VAR 0 13
67485: IFFALSE 67599
// begin temp_list = [ ] ;
67487: LD_ADDR_VAR 0 5
67491: PUSH
67492: EMPTY
67493: ST_TO_ADDR
// for i in allowed_to_repair_vehicles do
67494: LD_ADDR_VAR 0 2
67498: PUSH
67499: LD_VAR 0 10
67503: PUSH
67504: FOR_IN
67505: IFFALSE 67530
// temp_list = temp_list ^ GetLives ( i ) ;
67507: LD_ADDR_VAR 0 5
67511: PUSH
67512: LD_VAR 0 5
67516: PUSH
67517: LD_VAR 0 2
67521: PPUSH
67522: CALL_OW 256
67526: ADD
67527: ST_TO_ADDR
67528: GO 67504
67530: POP
67531: POP
// temp_unit = WorstFromListByList ( allowed_to_repair_vehicles , temp_list ) ;
67532: LD_ADDR_VAR 0 7
67536: PUSH
67537: LD_VAR 0 10
67541: PPUSH
67542: LD_VAR 0 5
67546: PPUSH
67547: CALL_OW 78
67551: ST_TO_ADDR
// temp_list = temp_unit ^ ai_vehicles_being_repaired [ base ] ;
67552: LD_ADDR_VAR 0 5
67556: PUSH
67557: LD_VAR 0 7
67561: PUSH
67562: LD_EXP 80
67566: PUSH
67567: LD_VAR 0 14
67571: ARRAY
67572: ADD
67573: ST_TO_ADDR
// ai_vehicles_being_repaired = Replace ( ai_vehicles_being_repaired , base , temp_list ) ;
67574: LD_ADDR_EXP 80
67578: PUSH
67579: LD_EXP 80
67583: PPUSH
67584: LD_VAR 0 14
67588: PPUSH
67589: LD_VAR 0 5
67593: PPUSH
67594: CALL_OW 1
67598: ST_TO_ADDR
// end ; end ; ComRepairVehicle ( GetHumansOutOfUnits ( mechanics_list ) , ai_vehicles_being_repaired [ base ] [ 1 ] ) ;
67599: LD_VAR 0 4
67603: PPUSH
67604: CALL 55807 0 1
67608: PPUSH
67609: LD_EXP 80
67613: PUSH
67614: LD_VAR 0 14
67618: ARRAY
67619: PUSH
67620: LD_INT 1
67622: ARRAY
67623: PPUSH
67624: CALL_OW 129
// end else
67628: GO 67707
// begin DistributeHumansToBuildings ( base , mechanics_list , UnitFilter ( ai_facts [ base ] diff ai_sib_bomb_fact [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_mechanic , 6 , true , false ) ;
67630: LD_VAR 0 14
67634: PPUSH
67635: LD_VAR 0 4
67639: PPUSH
67640: LD_EXP 61
67644: PUSH
67645: LD_VAR 0 14
67649: ARRAY
67650: PUSH
67651: LD_EXP 73
67655: PUSH
67656: LD_VAR 0 14
67660: ARRAY
67661: DIFF
67662: PPUSH
67663: LD_INT 50
67665: PUSH
67666: EMPTY
67667: LIST
67668: PUSH
67669: LD_INT 3
67671: PUSH
67672: LD_INT 57
67674: PUSH
67675: EMPTY
67676: LIST
67677: PUSH
67678: EMPTY
67679: LIST
67680: LIST
67681: PUSH
67682: EMPTY
67683: LIST
67684: LIST
67685: PPUSH
67686: CALL_OW 72
67690: PPUSH
67691: LD_INT 3
67693: PPUSH
67694: LD_INT 6
67696: PPUSH
67697: LD_INT 1
67699: PPUSH
67700: LD_INT 0
67702: PPUSH
67703: CALL 45286 0 7
// end ; if remote_driver_vehicles [ base ] > 0 then
67707: LD_VAR 0 32
67711: PUSH
67712: LD_VAR 0 14
67716: ARRAY
67717: PUSH
67718: LD_INT 0
67720: GREATER
67721: IFFALSE 69099
// begin if unitfilter ( ai_control_tower [ base ] , [ f_ok ] ) = 0 and UnitFilter ( ai_control_tower_vehicles [ base ] , [ f_ok ] ) = 0 then
67723: LD_EXP 69
67727: PUSH
67728: LD_VAR 0 14
67732: ARRAY
67733: PPUSH
67734: LD_INT 50
67736: PUSH
67737: EMPTY
67738: LIST
67739: PPUSH
67740: CALL_OW 72
67744: PUSH
67745: LD_INT 0
67747: EQUAL
67748: PUSH
67749: LD_EXP 105
67753: PUSH
67754: LD_VAR 0 14
67758: ARRAY
67759: PPUSH
67760: LD_INT 50
67762: PUSH
67763: EMPTY
67764: LIST
67765: PPUSH
67766: CALL_OW 72
67770: PUSH
67771: LD_INT 0
67773: EQUAL
67774: AND
67775: IFFALSE 67856
// begin DistributeHumansToBuildings ( base , remote_mechanics , UnitFilter ( ai_facts [ base ] diff ai_sib_bomb_fact [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_mechanic , 6 , true , false ) ;
67777: LD_VAR 0 14
67781: PPUSH
67782: LD_VAR 0 17
67786: PPUSH
67787: LD_EXP 61
67791: PUSH
67792: LD_VAR 0 14
67796: ARRAY
67797: PUSH
67798: LD_EXP 73
67802: PUSH
67803: LD_VAR 0 14
67807: ARRAY
67808: DIFF
67809: PPUSH
67810: LD_INT 50
67812: PUSH
67813: EMPTY
67814: LIST
67815: PUSH
67816: LD_INT 3
67818: PUSH
67819: LD_INT 57
67821: PUSH
67822: EMPTY
67823: LIST
67824: PUSH
67825: EMPTY
67826: LIST
67827: LIST
67828: PUSH
67829: EMPTY
67830: LIST
67831: LIST
67832: PPUSH
67833: CALL_OW 72
67837: PPUSH
67838: LD_INT 3
67840: PPUSH
67841: LD_INT 6
67843: PPUSH
67844: LD_INT 1
67846: PPUSH
67847: LD_INT 0
67849: PPUSH
67850: CALL 45286 0 7
// end else
67854: GO 69099
// begin temp_list_3 = [ [ ] , 0 ] ;
67856: LD_ADDR_VAR 0 6
67860: PUSH
67861: EMPTY
67862: PUSH
67863: LD_INT 0
67865: PUSH
67866: EMPTY
67867: LIST
67868: LIST
67869: ST_TO_ADDR
// temp_list_2 = [ ] ;
67870: LD_ADDR_VAR 0 16
67874: PUSH
67875: EMPTY
67876: ST_TO_ADDR
// already_inside_mecs = [ ] ;
67877: LD_ADDR_VAR 0 26
67881: PUSH
67882: EMPTY
67883: ST_TO_ADDR
// for i in remote_driver_vehicles [ base ] do
67884: LD_ADDR_VAR 0 2
67888: PUSH
67889: LD_VAR 0 32
67893: PUSH
67894: LD_VAR 0 14
67898: ARRAY
67899: PUSH
67900: FOR_IN
67901: IFFALSE 68105
// begin if GetClass ( i [ 1 ] ) <> class_mechanic then
67903: LD_VAR 0 2
67907: PUSH
67908: LD_INT 1
67910: ARRAY
67911: PPUSH
67912: CALL_OW 257
67916: PUSH
67917: LD_INT 3
67919: NONEQUAL
67920: IFFALSE 67924
// continue ;
67922: GO 67900
// k = IsInUnit ( i [ 1 ] ) ;
67924: LD_ADDR_VAR 0 13
67928: PUSH
67929: LD_VAR 0 2
67933: PUSH
67934: LD_INT 1
67936: ARRAY
67937: PPUSH
67938: CALL_OW 310
67942: ST_TO_ADDR
// if k > 0 and ( k in ai_control_tower_vehicles [ base ] or k in ai_control_tower [ base ] ) then
67943: LD_VAR 0 13
67947: PUSH
67948: LD_INT 0
67950: GREATER
67951: PUSH
67952: LD_VAR 0 13
67956: PUSH
67957: LD_EXP 105
67961: PUSH
67962: LD_VAR 0 14
67966: ARRAY
67967: IN
67968: PUSH
67969: LD_VAR 0 13
67973: PUSH
67974: LD_EXP 69
67978: PUSH
67979: LD_VAR 0 14
67983: ARRAY
67984: IN
67985: OR
67986: AND
67987: IFFALSE 68103
// begin already_inside_mecs = already_inside_mecs ^ i [ 1 ] ;
67989: LD_ADDR_VAR 0 26
67993: PUSH
67994: LD_VAR 0 26
67998: PUSH
67999: LD_VAR 0 2
68003: PUSH
68004: LD_INT 1
68006: ARRAY
68007: ADD
68008: ST_TO_ADDR
// if k in ai_control_tower_vehicles [ base ] then
68009: LD_VAR 0 13
68013: PUSH
68014: LD_EXP 105
68018: PUSH
68019: LD_VAR 0 14
68023: ARRAY
68024: IN
68025: IFFALSE 68072
// begin temp_list = temp_list_3 [ 1 ] ^ k ;
68027: LD_ADDR_VAR 0 5
68031: PUSH
68032: LD_VAR 0 6
68036: PUSH
68037: LD_INT 1
68039: ARRAY
68040: PUSH
68041: LD_VAR 0 13
68045: ADD
68046: ST_TO_ADDR
// temp_list_3 = Replace ( temp_list_3 , 1 , temp_list ) ;
68047: LD_ADDR_VAR 0 6
68051: PUSH
68052: LD_VAR 0 6
68056: PPUSH
68057: LD_INT 1
68059: PPUSH
68060: LD_VAR 0 5
68064: PPUSH
68065: CALL_OW 1
68069: ST_TO_ADDR
// end else
68070: GO 68103
// temp_list_3 = Replace ( temp_list_3 , 2 , temp_list_3 [ 2 ] + 1 ) ;
68072: LD_ADDR_VAR 0 6
68076: PUSH
68077: LD_VAR 0 6
68081: PPUSH
68082: LD_INT 2
68084: PPUSH
68085: LD_VAR 0 6
68089: PUSH
68090: LD_INT 2
68092: ARRAY
68093: PUSH
68094: LD_INT 1
68096: PLUS
68097: PPUSH
68098: CALL_OW 1
68102: ST_TO_ADDR
// end ; end ;
68103: GO 67900
68105: POP
68106: POP
// for i in remote_driver_vehicles [ base ] do
68107: LD_ADDR_VAR 0 2
68111: PUSH
68112: LD_VAR 0 32
68116: PUSH
68117: LD_VAR 0 14
68121: ARRAY
68122: PUSH
68123: FOR_IN
68124: IFFALSE 69020
// begin if not i [ 1 ] in remote_mechanics then
68126: LD_VAR 0 2
68130: PUSH
68131: LD_INT 1
68133: ARRAY
68134: PUSH
68135: LD_VAR 0 17
68139: IN
68140: NOT
68141: IFFALSE 68145
// continue ;
68143: GO 68123
// if GetClass ( i [ 1 ] ) <> class_mechanic then
68145: LD_VAR 0 2
68149: PUSH
68150: LD_INT 1
68152: ARRAY
68153: PPUSH
68154: CALL_OW 257
68158: PUSH
68159: LD_INT 3
68161: NONEQUAL
68162: IFFALSE 68370
// begin temp_unit = 0 ;
68164: LD_ADDR_VAR 0 7
68168: PUSH
68169: LD_INT 0
68171: ST_TO_ADDR
// for k in ai_facts [ base ] do
68172: LD_ADDR_VAR 0 13
68176: PUSH
68177: LD_EXP 61
68181: PUSH
68182: LD_VAR 0 14
68186: ARRAY
68187: PUSH
68188: FOR_IN
68189: IFFALSE 68231
// if IsOk ( k ) and UnitsInside ( k ) < 6 then
68191: LD_VAR 0 13
68195: PPUSH
68196: CALL_OW 302
68200: PUSH
68201: LD_VAR 0 13
68205: PPUSH
68206: CALL_OW 313
68210: PUSH
68211: LD_INT 6
68213: LESS
68214: AND
68215: IFFALSE 68229
// begin temp_unit = k ;
68217: LD_ADDR_VAR 0 7
68221: PUSH
68222: LD_VAR 0 13
68226: ST_TO_ADDR
// break ;
68227: GO 68231
// end ;
68229: GO 68188
68231: POP
68232: POP
// if temp_unit > 0 then
68233: LD_VAR 0 7
68237: PUSH
68238: LD_INT 0
68240: GREATER
68241: IFFALSE 68368
// begin if IsInUnit ( i [ 1 ] ) = temp_unit then
68243: LD_VAR 0 2
68247: PUSH
68248: LD_INT 1
68250: ARRAY
68251: PPUSH
68252: CALL_OW 310
68256: PUSH
68257: LD_VAR 0 7
68261: EQUAL
68262: IFFALSE 68282
// ComChangeProfession ( i [ 1 ] , class_mechanic ) else
68264: LD_VAR 0 2
68268: PUSH
68269: LD_INT 1
68271: ARRAY
68272: PPUSH
68273: LD_INT 3
68275: PPUSH
68276: CALL_OW 123
68280: GO 68368
// begin case GetType ( IsInUnit ( i [ 1 ] ) ) of unit_building :
68282: LD_VAR 0 2
68286: PUSH
68287: LD_INT 1
68289: ARRAY
68290: PPUSH
68291: CALL_OW 310
68295: PPUSH
68296: CALL_OW 247
68300: PUSH
68301: LD_INT 3
68303: DOUBLE
68304: EQUAL
68305: IFTRUE 68309
68307: GO 68325
68309: POP
// ComExitBuilding ( i [ 1 ] ) ; unit_vehicle :
68310: LD_VAR 0 2
68314: PUSH
68315: LD_INT 1
68317: ARRAY
68318: PPUSH
68319: CALL_OW 122
68323: GO 68368
68325: LD_INT 2
68327: DOUBLE
68328: EQUAL
68329: IFTRUE 68333
68331: GO 68349
68333: POP
// ComExitVehicle ( i [ 1 ] ) ; else
68334: LD_VAR 0 2
68338: PUSH
68339: LD_INT 1
68341: ARRAY
68342: PPUSH
68343: CALL_OW 121
68347: GO 68368
68349: POP
// ComEnterUnit ( i [ 1 ] , temp_unit ) ; end ;
68350: LD_VAR 0 2
68354: PUSH
68355: LD_INT 1
68357: ARRAY
68358: PPUSH
68359: LD_VAR 0 7
68363: PPUSH
68364: CALL_OW 120
// end ; end ; end else
68368: GO 69018
// begin temp_unit = 0 ;
68370: LD_ADDR_VAR 0 7
68374: PUSH
68375: LD_INT 0
68377: ST_TO_ADDR
// if i [ 1 ] in already_inside_mecs then
68378: LD_VAR 0 2
68382: PUSH
68383: LD_INT 1
68385: ARRAY
68386: PUSH
68387: LD_VAR 0 26
68391: IN
68392: IFFALSE 68415
// begin temp_unit = IsInUnit ( i [ 1 ] ) ;
68394: LD_ADDR_VAR 0 7
68398: PUSH
68399: LD_VAR 0 2
68403: PUSH
68404: LD_INT 1
68406: ARRAY
68407: PPUSH
68408: CALL_OW 310
68412: ST_TO_ADDR
// end else
68413: GO 68789
// begin if ( ai_control_tower_vehicles [ base ] diff temp_list_3 [ 1 ] ) > 0 then
68415: LD_EXP 105
68419: PUSH
68420: LD_VAR 0 14
68424: ARRAY
68425: PUSH
68426: LD_VAR 0 6
68430: PUSH
68431: LD_INT 1
68433: ARRAY
68434: DIFF
68435: PUSH
68436: LD_INT 0
68438: GREATER
68439: IFFALSE 68632
// begin temp_list = [ GetX ( i [ 1 ] ) , GetY ( i [ 1 ] ) ] ;
68441: LD_ADDR_VAR 0 5
68445: PUSH
68446: LD_VAR 0 2
68450: PUSH
68451: LD_INT 1
68453: ARRAY
68454: PPUSH
68455: CALL_OW 250
68459: PUSH
68460: LD_VAR 0 2
68464: PUSH
68465: LD_INT 1
68467: ARRAY
68468: PPUSH
68469: CALL_OW 251
68473: PUSH
68474: EMPTY
68475: LIST
68476: LIST
68477: ST_TO_ADDR
// temp_list_4 = [ ] ;
68478: LD_ADDR_VAR 0 21
68482: PUSH
68483: EMPTY
68484: ST_TO_ADDR
// temp_list_5 = ai_control_tower_vehicles [ base ] diff temp_list_3 [ 1 ] ;
68485: LD_ADDR_VAR 0 22
68489: PUSH
68490: LD_EXP 105
68494: PUSH
68495: LD_VAR 0 14
68499: ARRAY
68500: PUSH
68501: LD_VAR 0 6
68505: PUSH
68506: LD_INT 1
68508: ARRAY
68509: DIFF
68510: ST_TO_ADDR
// for k in temp_list_5 do
68511: LD_ADDR_VAR 0 13
68515: PUSH
68516: LD_VAR 0 22
68520: PUSH
68521: FOR_IN
68522: IFFALSE 68565
// temp_list_4 = temp_list_4 ^ GetDistUnitXY ( k , temp_list [ 1 ] , temp_list [ 2 ] ) ;
68524: LD_ADDR_VAR 0 21
68528: PUSH
68529: LD_VAR 0 21
68533: PUSH
68534: LD_VAR 0 13
68538: PPUSH
68539: LD_VAR 0 5
68543: PUSH
68544: LD_INT 1
68546: ARRAY
68547: PPUSH
68548: LD_VAR 0 5
68552: PUSH
68553: LD_INT 2
68555: ARRAY
68556: PPUSH
68557: CALL_OW 297
68561: ADD
68562: ST_TO_ADDR
68563: GO 68521
68565: POP
68566: POP
// temp_unit = WorstFromListByList ( temp_list_5 , temp_list_4 ) ;
68567: LD_ADDR_VAR 0 7
68571: PUSH
68572: LD_VAR 0 22
68576: PPUSH
68577: LD_VAR 0 21
68581: PPUSH
68582: CALL_OW 78
68586: ST_TO_ADDR
// temp_list = temp_list_3 [ 1 ] ^ temp_unit ;
68587: LD_ADDR_VAR 0 5
68591: PUSH
68592: LD_VAR 0 6
68596: PUSH
68597: LD_INT 1
68599: ARRAY
68600: PUSH
68601: LD_VAR 0 7
68605: ADD
68606: ST_TO_ADDR
// temp_list_3 = Replace ( temp_list_3 , 1 , temp_list ) ;
68607: LD_ADDR_VAR 0 6
68611: PUSH
68612: LD_VAR 0 6
68616: PPUSH
68617: LD_INT 1
68619: PPUSH
68620: LD_VAR 0 5
68624: PPUSH
68625: CALL_OW 1
68629: ST_TO_ADDR
// end else
68630: GO 68789
// if UnitFilter ( ai_control_tower [ base ] , [ f_ok ] ) > 0 and temp_list_3 [ 2 ] < 6 then
68632: LD_EXP 69
68636: PUSH
68637: LD_VAR 0 14
68641: ARRAY
68642: PPUSH
68643: LD_INT 50
68645: PUSH
68646: EMPTY
68647: LIST
68648: PPUSH
68649: CALL_OW 72
68653: PUSH
68654: LD_INT 0
68656: GREATER
68657: PUSH
68658: LD_VAR 0 6
68662: PUSH
68663: LD_INT 2
68665: ARRAY
68666: PUSH
68667: LD_INT 6
68669: LESS
68670: AND
68671: IFFALSE 68773
// begin if UnitsInside ( ai_control_tower [ base ] [ 1 ] ) < 3 then
68673: LD_EXP 69
68677: PUSH
68678: LD_VAR 0 14
68682: ARRAY
68683: PUSH
68684: LD_INT 1
68686: ARRAY
68687: PPUSH
68688: CALL_OW 313
68692: PUSH
68693: LD_INT 3
68695: LESS
68696: IFFALSE 68720
// temp_unit = ai_control_tower [ base ] [ 1 ] else
68698: LD_ADDR_VAR 0 7
68702: PUSH
68703: LD_EXP 69
68707: PUSH
68708: LD_VAR 0 14
68712: ARRAY
68713: PUSH
68714: LD_INT 1
68716: ARRAY
68717: ST_TO_ADDR
68718: GO 68740
// temp_unit = ai_control_tower [ base ] [ 2 ] ;
68720: LD_ADDR_VAR 0 7
68724: PUSH
68725: LD_EXP 69
68729: PUSH
68730: LD_VAR 0 14
68734: ARRAY
68735: PUSH
68736: LD_INT 2
68738: ARRAY
68739: ST_TO_ADDR
// temp_list_3 = Replace ( temp_list_3 , 2 , temp_list_3 [ 2 ] + 1 ) ;
68740: LD_ADDR_VAR 0 6
68744: PUSH
68745: LD_VAR 0 6
68749: PPUSH
68750: LD_INT 2
68752: PPUSH
68753: LD_VAR 0 6
68757: PUSH
68758: LD_INT 2
68760: ARRAY
68761: PUSH
68762: LD_INT 1
68764: PLUS
68765: PPUSH
68766: CALL_OW 1
68770: ST_TO_ADDR
// end else
68771: GO 68789
// temp_list_2 = temp_list_2 ^ i ;
68773: LD_ADDR_VAR 0 16
68777: PUSH
68778: LD_VAR 0 16
68782: PUSH
68783: LD_VAR 0 2
68787: ADD
68788: ST_TO_ADDR
// end ; if temp_unit > 0 then
68789: LD_VAR 0 7
68793: PUSH
68794: LD_INT 0
68796: GREATER
68797: IFFALSE 69018
// begin k = IsInUnit ( i [ 1 ] ) ;
68799: LD_ADDR_VAR 0 13
68803: PUSH
68804: LD_VAR 0 2
68808: PUSH
68809: LD_INT 1
68811: ARRAY
68812: PPUSH
68813: CALL_OW 310
68817: ST_TO_ADDR
// if k <> temp_unit then
68818: LD_VAR 0 13
68822: PUSH
68823: LD_VAR 0 7
68827: NONEQUAL
68828: IFFALSE 68909
// begin case GetType ( k ) of unit_building :
68830: LD_VAR 0 13
68834: PPUSH
68835: CALL_OW 247
68839: PUSH
68840: LD_INT 3
68842: DOUBLE
68843: EQUAL
68844: IFTRUE 68848
68846: GO 68864
68848: POP
// ComExitBuilding ( i [ 1 ] ) ; unit_vehicle :
68849: LD_VAR 0 2
68853: PUSH
68854: LD_INT 1
68856: ARRAY
68857: PPUSH
68858: CALL_OW 122
68862: GO 68907
68864: LD_INT 2
68866: DOUBLE
68867: EQUAL
68868: IFTRUE 68872
68870: GO 68888
68872: POP
// ComExitVehicle ( i [ 1 ] ) ; else
68873: LD_VAR 0 2
68877: PUSH
68878: LD_INT 1
68880: ARRAY
68881: PPUSH
68882: CALL_OW 121
68886: GO 68907
68888: POP
// ComEnterUnit ( i [ 1 ] , temp_unit ) ; end ;
68889: LD_VAR 0 2
68893: PUSH
68894: LD_INT 1
68896: ARRAY
68897: PPUSH
68898: LD_VAR 0 7
68902: PPUSH
68903: CALL_OW 120
// end else
68907: GO 69018
// for k in i [ 2 ] do
68909: LD_ADDR_VAR 0 13
68913: PUSH
68914: LD_VAR 0 2
68918: PUSH
68919: LD_INT 2
68921: ARRAY
68922: PUSH
68923: FOR_IN
68924: IFFALSE 69016
// if IsOk ( k ) and IsControledBy ( k ) <> i [ 1 ] then
68926: LD_VAR 0 13
68930: PPUSH
68931: CALL_OW 302
68935: PUSH
68936: LD_VAR 0 13
68940: PPUSH
68941: CALL_OW 312
68945: PUSH
68946: LD_VAR 0 2
68950: PUSH
68951: LD_INT 1
68953: ARRAY
68954: NONEQUAL
68955: AND
68956: IFFALSE 68978
// ComLinkTo ( k , i [ 1 ] ) else
68958: LD_VAR 0 13
68962: PPUSH
68963: LD_VAR 0 2
68967: PUSH
68968: LD_INT 1
68970: ARRAY
68971: PPUSH
68972: CALL_OW 135
68976: GO 69014
// if not IsOk ( k ) and IsControledBy ( k ) > 0 then
68978: LD_VAR 0 13
68982: PPUSH
68983: CALL_OW 302
68987: NOT
68988: PUSH
68989: LD_VAR 0 13
68993: PPUSH
68994: CALL_OW 312
68998: PUSH
68999: LD_INT 0
69001: GREATER
69002: AND
69003: IFFALSE 69014
// ComUnlink ( k ) ;
69005: LD_VAR 0 13
69009: PPUSH
69010: CALL_OW 136
69014: GO 68923
69016: POP
69017: POP
// end ; end ; end ;
69018: GO 68123
69020: POP
69021: POP
// DistributeHumansToBuildings ( base , temp_list_2 , UnitFilter ( ai_facts [ base ] diff ai_sib_bomb_fact [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_mechanic , 6 , true , false ) ;
69022: LD_VAR 0 14
69026: PPUSH
69027: LD_VAR 0 16
69031: PPUSH
69032: LD_EXP 61
69036: PUSH
69037: LD_VAR 0 14
69041: ARRAY
69042: PUSH
69043: LD_EXP 73
69047: PUSH
69048: LD_VAR 0 14
69052: ARRAY
69053: DIFF
69054: PPUSH
69055: LD_INT 50
69057: PUSH
69058: EMPTY
69059: LIST
69060: PUSH
69061: LD_INT 3
69063: PUSH
69064: LD_INT 57
69066: PUSH
69067: EMPTY
69068: LIST
69069: PUSH
69070: EMPTY
69071: LIST
69072: LIST
69073: PUSH
69074: EMPTY
69075: LIST
69076: LIST
69077: PPUSH
69078: CALL_OW 72
69082: PPUSH
69083: LD_INT 3
69085: PPUSH
69086: LD_INT 6
69088: PPUSH
69089: LD_INT 1
69091: PPUSH
69092: LD_INT 0
69094: PPUSH
69095: CALL 45286 0 7
// end ; end ; end ;
69099: GO 58591
69101: POP
69102: POP
// until false ;
69103: LD_INT 0
69105: IFFALSE 58552
// end ;
69107: PPOPN 36
69109: END
// function FindDriverHelper ( vehicles_list , mechanics_list , vehicles_drivers ) ; var i , k , temp_unit ; begin
69110: LD_INT 0
69112: PPUSH
69113: PPUSH
69114: PPUSH
69115: PPUSH
// for i in vehicles_list do
69116: LD_ADDR_VAR 0 5
69120: PUSH
69121: LD_VAR 0 1
69125: PUSH
69126: FOR_IN
69127: IFFALSE 69395
// begin if mechanics_list = 0 then
69129: LD_VAR 0 2
69133: PUSH
69134: LD_INT 0
69136: EQUAL
69137: IFFALSE 69141
// break ;
69139: GO 69395
// k = false ;
69141: LD_ADDR_VAR 0 6
69145: PUSH
69146: LD_INT 0
69148: ST_TO_ADDR
// if vehicles_drivers < i then
69149: LD_VAR 0 3
69153: PUSH
69154: LD_VAR 0 5
69158: LESS
69159: IFFALSE 69171
// k = true else
69161: LD_ADDR_VAR 0 6
69165: PUSH
69166: LD_INT 1
69168: ST_TO_ADDR
69169: GO 69198
// if not vehicles_drivers [ i ] in mechanics_list then
69171: LD_VAR 0 3
69175: PUSH
69176: LD_VAR 0 5
69180: ARRAY
69181: PUSH
69182: LD_VAR 0 2
69186: IN
69187: NOT
69188: IFFALSE 69198
// k = true ;
69190: LD_ADDR_VAR 0 6
69194: PUSH
69195: LD_INT 1
69197: ST_TO_ADDR
// if k then
69198: LD_VAR 0 6
69202: IFFALSE 69239
// vehicles_drivers = Replace ( vehicles_drivers , i , AllNearestUnitToUnit ( mechanics_list , i ) ) ;
69204: LD_ADDR_VAR 0 3
69208: PUSH
69209: LD_VAR 0 3
69213: PPUSH
69214: LD_VAR 0 5
69218: PPUSH
69219: LD_VAR 0 2
69223: PPUSH
69224: LD_VAR 0 5
69228: PPUSH
69229: CALL_OW 75
69233: PPUSH
69234: CALL_OW 1
69238: ST_TO_ADDR
// if vehicles_drivers [ i ] > 0 then
69239: LD_VAR 0 3
69243: PUSH
69244: LD_VAR 0 5
69248: ARRAY
69249: PUSH
69250: LD_INT 0
69252: GREATER
69253: IFFALSE 69393
// begin temp_unit = IsInUnit ( vehicles_drivers [ i ] ) ;
69255: LD_ADDR_VAR 0 7
69259: PUSH
69260: LD_VAR 0 3
69264: PUSH
69265: LD_VAR 0 5
69269: ARRAY
69270: PPUSH
69271: CALL_OW 310
69275: ST_TO_ADDR
// if temp_unit <> i then
69276: LD_VAR 0 7
69280: PUSH
69281: LD_VAR 0 5
69285: NONEQUAL
69286: IFFALSE 69371
// case GetType ( temp_unit ) of unit_vehicle :
69288: LD_VAR 0 7
69292: PPUSH
69293: CALL_OW 247
69297: PUSH
69298: LD_INT 2
69300: DOUBLE
69301: EQUAL
69302: IFTRUE 69306
69304: GO 69324
69306: POP
// ComExitVehicle ( vehicles_drivers [ i ] ) ; unit_building :
69307: LD_VAR 0 3
69311: PUSH
69312: LD_VAR 0 5
69316: ARRAY
69317: PPUSH
69318: CALL_OW 121
69322: GO 69371
69324: LD_INT 3
69326: DOUBLE
69327: EQUAL
69328: IFTRUE 69332
69330: GO 69350
69332: POP
// ComExitBuilding ( vehicles_drivers [ i ] ) ; else
69333: LD_VAR 0 3
69337: PUSH
69338: LD_VAR 0 5
69342: ARRAY
69343: PPUSH
69344: CALL_OW 122
69348: GO 69371
69350: POP
// ComEnterUnit ( vehicles_drivers [ i ] , i ) ; end ;
69351: LD_VAR 0 3
69355: PUSH
69356: LD_VAR 0 5
69360: ARRAY
69361: PPUSH
69362: LD_VAR 0 5
69366: PPUSH
69367: CALL_OW 120
// mechanics_list = mechanics_list diff vehicles_drivers [ i ] ;
69371: LD_ADDR_VAR 0 2
69375: PUSH
69376: LD_VAR 0 2
69380: PUSH
69381: LD_VAR 0 3
69385: PUSH
69386: LD_VAR 0 5
69390: ARRAY
69391: DIFF
69392: ST_TO_ADDR
// end ; end ;
69393: GO 69126
69395: POP
69396: POP
// result = [ mechanics_list , vehicles_drivers ] ;
69397: LD_ADDR_VAR 0 4
69401: PUSH
69402: LD_VAR 0 2
69406: PUSH
69407: LD_VAR 0 3
69411: PUSH
69412: EMPTY
69413: LIST
69414: LIST
69415: ST_TO_ADDR
// end ;
69416: LD_VAR 0 4
69420: RET
// function FindBestCraneDriver ( base ) ; var i , temp_list ; begin
69421: LD_INT 0
69423: PPUSH
69424: PPUSH
69425: PPUSH
// if ai_mechanics_defend [ base ] = 0 then
69426: LD_EXP 53
69430: PUSH
69431: LD_VAR 0 1
69435: ARRAY
69436: PUSH
69437: LD_INT 0
69439: EQUAL
69440: IFFALSE 69452
// begin result = 0 ;
69442: LD_ADDR_VAR 0 2
69446: PUSH
69447: LD_INT 0
69449: ST_TO_ADDR
// exit ;
69450: GO 69546
// end ; temp_list = [ ] ;
69452: LD_ADDR_VAR 0 4
69456: PUSH
69457: EMPTY
69458: ST_TO_ADDR
// for i in ai_mechanics_defend [ base ] do
69459: LD_ADDR_VAR 0 3
69463: PUSH
69464: LD_EXP 53
69468: PUSH
69469: LD_VAR 0 1
69473: ARRAY
69474: PUSH
69475: FOR_IN
69476: IFFALSE 69518
// temp_list = temp_list ^ ( GetSkill ( i , skill_engineering ) + GetSkill ( i , skill_mechanical ) ) ;
69478: LD_ADDR_VAR 0 4
69482: PUSH
69483: LD_VAR 0 4
69487: PUSH
69488: LD_VAR 0 3
69492: PPUSH
69493: LD_INT 2
69495: PPUSH
69496: CALL_OW 259
69500: PUSH
69501: LD_VAR 0 3
69505: PPUSH
69506: LD_INT 3
69508: PPUSH
69509: CALL_OW 259
69513: PLUS
69514: ADD
69515: ST_TO_ADDR
69516: GO 69475
69518: POP
69519: POP
// result = BestFromListByList ( ai_mechanics_defend [ base ] , temp_list ) ;
69520: LD_ADDR_VAR 0 2
69524: PUSH
69525: LD_EXP 53
69529: PUSH
69530: LD_VAR 0 1
69534: ARRAY
69535: PPUSH
69536: LD_VAR 0 4
69540: PPUSH
69541: CALL_OW 79
69545: ST_TO_ADDR
// end ;
69546: LD_VAR 0 2
69550: RET
// function MaxNumTaufieldVehicles ( base ) ; var t ; begin
69551: LD_INT 0
69553: PPUSH
69554: PPUSH
// case base of 1 :
69555: LD_VAR 0 1
69559: PUSH
69560: LD_INT 1
69562: DOUBLE
69563: EQUAL
69564: IFTRUE 69568
69566: GO 69579
69568: POP
// result = 0 ; 2 :
69569: LD_ADDR_VAR 0 2
69573: PUSH
69574: LD_INT 0
69576: ST_TO_ADDR
69577: GO 69618
69579: LD_INT 2
69581: DOUBLE
69582: EQUAL
69583: IFTRUE 69587
69585: GO 69598
69587: POP
// result = 0 ; 3 :
69588: LD_ADDR_VAR 0 2
69592: PUSH
69593: LD_INT 0
69595: ST_TO_ADDR
69596: GO 69618
69598: LD_INT 3
69600: DOUBLE
69601: EQUAL
69602: IFTRUE 69606
69604: GO 69617
69606: POP
// result = 0 ; end ;
69607: LD_ADDR_VAR 0 2
69611: PUSH
69612: LD_INT 0
69614: ST_TO_ADDR
69615: GO 69618
69617: POP
// end ;
69618: LD_VAR 0 2
69622: RET
// function MaxNumImplosionVehicles ( base ) ; begin
69623: LD_INT 0
69625: PPUSH
// case base of 1 :
69626: LD_VAR 0 1
69630: PUSH
69631: LD_INT 1
69633: DOUBLE
69634: EQUAL
69635: IFTRUE 69639
69637: GO 69650
69639: POP
// result = 0 ; 2 :
69640: LD_ADDR_VAR 0 2
69644: PUSH
69645: LD_INT 0
69647: ST_TO_ADDR
69648: GO 69689
69650: LD_INT 2
69652: DOUBLE
69653: EQUAL
69654: IFTRUE 69658
69656: GO 69669
69658: POP
// result = 0 ; 3 :
69659: LD_ADDR_VAR 0 2
69663: PUSH
69664: LD_INT 0
69666: ST_TO_ADDR
69667: GO 69689
69669: LD_INT 3
69671: DOUBLE
69672: EQUAL
69673: IFTRUE 69677
69675: GO 69688
69677: POP
// result = 0 ; end ;
69678: LD_ADDR_VAR 0 2
69682: PUSH
69683: LD_INT 0
69685: ST_TO_ADDR
69686: GO 69689
69688: POP
// end ;
69689: LD_VAR 0 2
69693: RET
// function MaxNumBehemoths ( base ) ; var t ; begin
69694: LD_INT 0
69696: PPUSH
69697: PPUSH
// case base of 1 :
69698: LD_VAR 0 1
69702: PUSH
69703: LD_INT 1
69705: DOUBLE
69706: EQUAL
69707: IFTRUE 69711
69709: GO 69722
69711: POP
// result = 0 ; 2 :
69712: LD_ADDR_VAR 0 2
69716: PUSH
69717: LD_INT 0
69719: ST_TO_ADDR
69720: GO 69761
69722: LD_INT 2
69724: DOUBLE
69725: EQUAL
69726: IFTRUE 69730
69728: GO 69741
69730: POP
// result = 3 ; 3 :
69731: LD_ADDR_VAR 0 2
69735: PUSH
69736: LD_INT 3
69738: ST_TO_ADDR
69739: GO 69761
69741: LD_INT 3
69743: DOUBLE
69744: EQUAL
69745: IFTRUE 69749
69747: GO 69760
69749: POP
// result = 0 ; end ;
69750: LD_ADDR_VAR 0 2
69754: PUSH
69755: LD_INT 0
69757: ST_TO_ADDR
69758: GO 69761
69760: POP
// end ;
69761: LD_VAR 0 2
69765: RET
// every 0 0$1 + 0 0$0.6 do var i , temp_value , temp_unit , temp_list , base , idle_factories , fact , b , construct_list ; var vehicle_prod_delay , saved_construct_list , under_attack ; var temp , temp2 , chassis , engine , control , weapon , factory ;
69766: GO 69768
69768: DISABLE
69769: LD_INT 0
69771: PPUSH
69772: PPUSH
69773: PPUSH
69774: PPUSH
69775: PPUSH
69776: PPUSH
69777: PPUSH
69778: PPUSH
69779: PPUSH
69780: PPUSH
69781: PPUSH
69782: PPUSH
69783: PPUSH
69784: PPUSH
69785: PPUSH
69786: PPUSH
69787: PPUSH
69788: PPUSH
69789: PPUSH
// begin vehicle_prod_delay = [ 0 0$0 , 0 0$0 , 0 0$0 , 0 0$0 ] ;
69790: LD_ADDR_VAR 0 10
69794: PUSH
69795: LD_INT 0
69797: PUSH
69798: LD_INT 0
69800: PUSH
69801: LD_INT 0
69803: PUSH
69804: LD_INT 0
69806: PUSH
69807: EMPTY
69808: LIST
69809: LIST
69810: LIST
69811: LIST
69812: ST_TO_ADDR
// saved_construct_list = [ [ ] , [ ] , [ ] , [ ] ] ;
69813: LD_ADDR_VAR 0 11
69817: PUSH
69818: EMPTY
69819: PUSH
69820: EMPTY
69821: PUSH
69822: EMPTY
69823: PUSH
69824: EMPTY
69825: PUSH
69826: EMPTY
69827: LIST
69828: LIST
69829: LIST
69830: LIST
69831: ST_TO_ADDR
// repeat if ai_bases = 0 then
69832: LD_EXP 49
69836: PUSH
69837: LD_INT 0
69839: EQUAL
69840: IFFALSE 69844
// exit ;
69842: GO 73165
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
69844: LD_INT 35
69846: PUSH
69847: LD_EXP 49
69851: PUSH
69852: LD_INT 0
69854: PLUS
69855: MOD
69856: PPUSH
69857: CALL_OW 67
// for base in ai_bases do
69861: LD_ADDR_VAR 0 5
69865: PUSH
69866: LD_EXP 49
69870: PUSH
69871: FOR_IN
69872: IFFALSE 73159
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
69874: LD_INT 35
69876: PUSH
69877: LD_EXP 49
69881: PUSH
69882: LD_INT 0
69884: PLUS
69885: DIV
69886: PPUSH
69887: CALL_OW 67
// under_attack = BaseUnderAttack ( base , - 1 ) ;
69891: LD_ADDR_VAR 0 12
69895: PUSH
69896: LD_VAR 0 5
69900: PPUSH
69901: LD_INT 1
69903: NEG
69904: PPUSH
69905: CALL 55912 0 2
69909: ST_TO_ADDR
// if under_attack and ai_vehicles_defend [ base ] >= [ 0 , 1 , 2 ] [ difficulty ] then
69910: LD_VAR 0 12
69914: PUSH
69915: LD_EXP 77
69919: PUSH
69920: LD_VAR 0 5
69924: ARRAY
69925: PUSH
69926: LD_INT 0
69928: PUSH
69929: LD_INT 1
69931: PUSH
69932: LD_INT 2
69934: PUSH
69935: EMPTY
69936: LIST
69937: LIST
69938: LIST
69939: PUSH
69940: LD_OWVAR 67
69944: ARRAY
69945: GREATEREQUAL
69946: AND
69947: IFFALSE 69989
// begin vehicle_prod_delay = Replace ( vehicle_prod_delay , base , [ 1 1$15 , 0 0$45 , 0 0$30 ] [ difficulty ] ) ;
69949: LD_ADDR_VAR 0 10
69953: PUSH
69954: LD_VAR 0 10
69958: PPUSH
69959: LD_VAR 0 5
69963: PPUSH
69964: LD_INT 2625
69966: PUSH
69967: LD_INT 1575
69969: PUSH
69970: LD_INT 1050
69972: PUSH
69973: EMPTY
69974: LIST
69975: LIST
69976: LIST
69977: PUSH
69978: LD_OWVAR 67
69982: ARRAY
69983: PPUSH
69984: CALL_OW 1
69988: ST_TO_ADDR
// end ; idle_factories = [ ] ;
69989: LD_ADDR_VAR 0 6
69993: PUSH
69994: EMPTY
69995: ST_TO_ADDR
// for i in ai_facts [ base ] diff ai_sib_bomb_fact [ base ] do
69996: LD_ADDR_VAR 0 1
70000: PUSH
70001: LD_EXP 61
70005: PUSH
70006: LD_VAR 0 5
70010: ARRAY
70011: PUSH
70012: LD_EXP 73
70016: PUSH
70017: LD_VAR 0 5
70021: ARRAY
70022: DIFF
70023: PUSH
70024: FOR_IN
70025: IFFALSE 70136
// if BuildingStatus ( i ) = bs_idle and IsOk ( i ) and GetBType ( i ) = b_factory then
70027: LD_VAR 0 1
70031: PPUSH
70032: CALL_OW 461
70036: PUSH
70037: LD_INT 2
70039: EQUAL
70040: PUSH
70041: LD_VAR 0 1
70045: PPUSH
70046: CALL_OW 302
70050: AND
70051: PUSH
70052: LD_VAR 0 1
70056: PPUSH
70057: CALL_OW 266
70061: PUSH
70062: LD_INT 3
70064: EQUAL
70065: AND
70066: IFFALSE 70134
// begin b = true ;
70068: LD_ADDR_VAR 0 8
70072: PUSH
70073: LD_INT 1
70075: ST_TO_ADDR
// if ai_facts_with_ext_rebuild_map >= i then
70076: LD_EXP 119
70080: PUSH
70081: LD_VAR 0 1
70085: GREATEREQUAL
70086: IFFALSE 70112
// if ai_facts_with_ext_rebuild_map [ i ] > 0 then
70088: LD_EXP 119
70092: PUSH
70093: LD_VAR 0 1
70097: ARRAY
70098: PUSH
70099: LD_INT 0
70101: GREATER
70102: IFFALSE 70112
// b = false ;
70104: LD_ADDR_VAR 0 8
70108: PUSH
70109: LD_INT 0
70111: ST_TO_ADDR
// if b then
70112: LD_VAR 0 8
70116: IFFALSE 70134
// idle_factories = idle_factories ^ i ;
70118: LD_ADDR_VAR 0 6
70122: PUSH
70123: LD_VAR 0 6
70127: PUSH
70128: LD_VAR 0 1
70132: ADD
70133: ST_TO_ADDR
// end ;
70134: GO 70024
70136: POP
70137: POP
// if idle_factories = 0 then
70138: LD_VAR 0 6
70142: PUSH
70143: LD_INT 0
70145: EQUAL
70146: IFFALSE 70150
// continue ;
70148: GO 69871
// temp_value = false ;
70150: LD_ADDR_VAR 0 2
70154: PUSH
70155: LD_INT 0
70157: ST_TO_ADDR
// for i in ai_buildings_locations [ base ] do
70158: LD_ADDR_VAR 0 1
70162: PUSH
70163: LD_EXP 71
70167: PUSH
70168: LD_VAR 0 5
70172: ARRAY
70173: PUSH
70174: FOR_IN
70175: IFFALSE 70422
// if i [ 4 ] in [ b_bunker , b_turret ] then
70177: LD_VAR 0 1
70181: PUSH
70182: LD_INT 4
70184: ARRAY
70185: PUSH
70186: LD_INT 32
70188: PUSH
70189: LD_INT 33
70191: PUSH
70192: EMPTY
70193: LIST
70194: LIST
70195: IN
70196: IFFALSE 70420
// begin temp_unit = HexInfo ( i [ 1 ] , i [ 2 ] ) ;
70198: LD_ADDR_VAR 0 3
70202: PUSH
70203: LD_VAR 0 1
70207: PUSH
70208: LD_INT 1
70210: ARRAY
70211: PPUSH
70212: LD_VAR 0 1
70216: PUSH
70217: LD_INT 2
70219: ARRAY
70220: PPUSH
70221: CALL_OW 428
70225: ST_TO_ADDR
// if GetBType ( temp_unit ) in [ b_bunker , b_turret ] and not IsConstructed ( temp_unit ) and GetBWeapon ( temp_unit ) = 0 then
70226: LD_VAR 0 3
70230: PPUSH
70231: CALL_OW 266
70235: PUSH
70236: LD_INT 32
70238: PUSH
70239: LD_INT 33
70241: PUSH
70242: EMPTY
70243: LIST
70244: LIST
70245: IN
70246: PUSH
70247: LD_VAR 0 3
70251: PPUSH
70252: CALL_OW 304
70256: NOT
70257: AND
70258: PUSH
70259: LD_VAR 0 3
70263: PPUSH
70264: CALL_OW 269
70268: PUSH
70269: LD_INT 0
70271: EQUAL
70272: AND
70273: IFFALSE 70420
// begin b = false ;
70275: LD_ADDR_VAR 0 8
70279: PUSH
70280: LD_INT 0
70282: ST_TO_ADDR
// if not under_attack then
70283: LD_VAR 0 12
70287: NOT
70288: IFFALSE 70300
// b = true else
70290: LD_ADDR_VAR 0 8
70294: PUSH
70295: LD_INT 1
70297: ST_TO_ADDR
70298: GO 70339
// begin if CanFactConstructThis ( idle_factories [ 1 ] , i [ 7 ] , false ) = 1 then
70300: LD_VAR 0 6
70304: PUSH
70305: LD_INT 1
70307: ARRAY
70308: PPUSH
70309: LD_VAR 0 1
70313: PUSH
70314: LD_INT 7
70316: ARRAY
70317: PPUSH
70318: LD_INT 0
70320: PPUSH
70321: CALL 73631 0 3
70325: PUSH
70326: LD_INT 1
70328: EQUAL
70329: IFFALSE 70339
// b = true ;
70331: LD_ADDR_VAR 0 8
70335: PUSH
70336: LD_INT 1
70338: ST_TO_ADDR
// end ; if b then
70339: LD_VAR 0 8
70343: IFFALSE 70420
// begin if FactConstruct ( base , [ idle_factories [ 1 ] ] , [ temp_unit , - 1 , - 1 , i [ 7 ] ] , false ) in [ 0 , 1 ] then
70345: LD_VAR 0 5
70349: PPUSH
70350: LD_VAR 0 6
70354: PUSH
70355: LD_INT 1
70357: ARRAY
70358: PUSH
70359: EMPTY
70360: LIST
70361: PPUSH
70362: LD_VAR 0 3
70366: PUSH
70367: LD_INT 1
70369: NEG
70370: PUSH
70371: LD_INT 1
70373: NEG
70374: PUSH
70375: LD_VAR 0 1
70379: PUSH
70380: LD_INT 7
70382: ARRAY
70383: PUSH
70384: EMPTY
70385: LIST
70386: LIST
70387: LIST
70388: LIST
70389: PPUSH
70390: LD_INT 0
70392: PPUSH
70393: CALL 73168 0 4
70397: PUSH
70398: LD_INT 0
70400: PUSH
70401: LD_INT 1
70403: PUSH
70404: EMPTY
70405: LIST
70406: LIST
70407: IN
70408: IFFALSE 70420
// begin temp_value = true ;
70410: LD_ADDR_VAR 0 2
70414: PUSH
70415: LD_INT 1
70417: ST_TO_ADDR
// break ;
70418: GO 70422
// end ; end ; end ; end ;
70420: GO 70174
70422: POP
70423: POP
// if temp_value then
70424: LD_VAR 0 2
70428: IFFALSE 70432
// continue ;
70430: GO 69871
// if base = 1 then
70432: LD_VAR 0 5
70436: PUSH
70437: LD_INT 1
70439: EQUAL
70440: IFFALSE 70495
// begin b = CheckAndFixArControlTowerAmount ( base , idle_factories , false ) ;
70442: LD_ADDR_VAR 0 8
70446: PUSH
70447: LD_VAR 0 5
70451: PPUSH
70452: LD_VAR 0 6
70456: PPUSH
70457: LD_INT 0
70459: PPUSH
70460: CALL 73329 0 3
70464: ST_TO_ADDR
// if b <> - 1 then
70465: LD_VAR 0 8
70469: PUSH
70470: LD_INT 1
70472: NEG
70473: NONEQUAL
70474: IFFALSE 70495
// begin if b in [ 0 , 1 ] then
70476: LD_VAR 0 8
70480: PUSH
70481: LD_INT 0
70483: PUSH
70484: LD_INT 1
70486: PUSH
70487: EMPTY
70488: LIST
70489: LIST
70490: IN
70491: IFFALSE 70495
// continue ;
70493: GO 69871
// end ; end ; if base in [ 2 , 3 ] and difficulty > 1 then
70495: LD_VAR 0 5
70499: PUSH
70500: LD_INT 2
70502: PUSH
70503: LD_INT 3
70505: PUSH
70506: EMPTY
70507: LIST
70508: LIST
70509: IN
70510: PUSH
70511: LD_OWVAR 67
70515: PUSH
70516: LD_INT 1
70518: GREATER
70519: AND
70520: IFFALSE 70945
// begin if ai_crane [ base ] = 0 and not ai_crane_under_construction [ base ] and tick - ai_crane_destroy_tick [ base ] >= [ 8 8$0 , 6 6$0 , 4 4$0 ] [ difficulty ] then
70522: LD_EXP 98
70526: PUSH
70527: LD_VAR 0 5
70531: ARRAY
70532: PUSH
70533: LD_INT 0
70535: EQUAL
70536: PUSH
70537: LD_EXP 99
70541: PUSH
70542: LD_VAR 0 5
70546: ARRAY
70547: NOT
70548: AND
70549: PUSH
70550: LD_OWVAR 1
70554: PUSH
70555: LD_EXP 100
70559: PUSH
70560: LD_VAR 0 5
70564: ARRAY
70565: MINUS
70566: PUSH
70567: LD_INT 16800
70569: PUSH
70570: LD_INT 12600
70572: PUSH
70573: LD_INT 8400
70575: PUSH
70576: EMPTY
70577: LIST
70578: LIST
70579: LIST
70580: PUSH
70581: LD_OWVAR 67
70585: ARRAY
70586: GREATEREQUAL
70587: AND
70588: IFFALSE 70945
// begin temp_list = [ ] ;
70590: LD_ADDR_VAR 0 4
70594: PUSH
70595: EMPTY
70596: ST_TO_ADDR
// case GetBaseNation ( base ) of nation_american :
70597: LD_VAR 0 5
70601: PPUSH
70602: CALL 40548 0 1
70606: PUSH
70607: LD_INT 1
70609: DOUBLE
70610: EQUAL
70611: IFTRUE 70615
70613: GO 70690
70615: POP
// begin temp_list = [ us_medium_tracked , engine_siberite , control_remote , us_crane ] ;
70616: LD_ADDR_VAR 0 4
70620: PUSH
70621: LD_INT 3
70623: PUSH
70624: LD_INT 3
70626: PUSH
70627: LD_INT 2
70629: PUSH
70630: LD_INT 13
70632: PUSH
70633: EMPTY
70634: LIST
70635: LIST
70636: LIST
70637: LIST
70638: ST_TO_ADDR
// if ai_mechanics_defend [ base ] + ai_mechanics_attack [ base ] = 1 then
70639: LD_EXP 53
70643: PUSH
70644: LD_VAR 0 5
70648: ARRAY
70649: PUSH
70650: LD_EXP 54
70654: PUSH
70655: LD_VAR 0 5
70659: ARRAY
70660: PLUS
70661: PUSH
70662: LD_INT 1
70664: EQUAL
70665: IFFALSE 70688
// temp_list = Replace ( temp_list , 3 , control_computer ) ;
70667: LD_ADDR_VAR 0 4
70671: PUSH
70672: LD_VAR 0 4
70676: PPUSH
70677: LD_INT 3
70679: PPUSH
70680: LD_INT 3
70682: PPUSH
70683: CALL_OW 1
70687: ST_TO_ADDR
// end ; nation_russian :
70688: GO 70774
70690: LD_INT 3
70692: DOUBLE
70693: EQUAL
70694: IFTRUE 70698
70696: GO 70773
70698: POP
// begin temp_list = [ ru_medium_tracked , engine_combustion , control_manual , ru_crane ] ;
70699: LD_ADDR_VAR 0 4
70703: PUSH
70704: LD_INT 22
70706: PUSH
70707: LD_INT 1
70709: PUSH
70710: LD_INT 1
70712: PUSH
70713: LD_INT 52
70715: PUSH
70716: EMPTY
70717: LIST
70718: LIST
70719: LIST
70720: LIST
70721: ST_TO_ADDR
// if ai_mechanics_defend [ base ] + ai_mechanics_attack [ base ] = 1 then
70722: LD_EXP 53
70726: PUSH
70727: LD_VAR 0 5
70731: ARRAY
70732: PUSH
70733: LD_EXP 54
70737: PUSH
70738: LD_VAR 0 5
70742: ARRAY
70743: PLUS
70744: PUSH
70745: LD_INT 1
70747: EQUAL
70748: IFFALSE 70771
// temp_list = Replace ( temp_list , 3 , control_computer ) ;
70750: LD_ADDR_VAR 0 4
70754: PUSH
70755: LD_VAR 0 4
70759: PPUSH
70760: LD_INT 3
70762: PPUSH
70763: LD_INT 3
70765: PPUSH
70766: CALL_OW 1
70770: ST_TO_ADDR
// end ; end ;
70771: GO 70774
70773: POP
// if temp_list > 0 then
70774: LD_VAR 0 4
70778: PUSH
70779: LD_INT 0
70781: GREATER
70782: IFFALSE 70945
// begin b = 0 ;
70784: LD_ADDR_VAR 0 8
70788: PUSH
70789: LD_INT 0
70791: ST_TO_ADDR
// temp = [ 0 , ru_fact_2 , us_fact_2 ] [ base ] ;
70792: LD_ADDR_VAR 0 13
70796: PUSH
70797: LD_INT 0
70799: PUSH
70800: LD_INT 756
70802: PUSH
70803: LD_INT 372
70805: PUSH
70806: EMPTY
70807: LIST
70808: LIST
70809: LIST
70810: PUSH
70811: LD_VAR 0 5
70815: ARRAY
70816: ST_TO_ADDR
// if IsIdle ( temp ) then
70817: LD_VAR 0 13
70821: PPUSH
70822: CALL_OW 316
70826: IFFALSE 70945
// if CanBeConstructed ( temp , temp_list [ 1 ] , temp_list [ 2 ] , temp_list [ 3 ] , temp_list [ 4 ] ) then
70828: LD_VAR 0 13
70832: PPUSH
70833: LD_VAR 0 4
70837: PUSH
70838: LD_INT 1
70840: ARRAY
70841: PPUSH
70842: LD_VAR 0 4
70846: PUSH
70847: LD_INT 2
70849: ARRAY
70850: PPUSH
70851: LD_VAR 0 4
70855: PUSH
70856: LD_INT 3
70858: ARRAY
70859: PPUSH
70860: LD_VAR 0 4
70864: PUSH
70865: LD_INT 4
70867: ARRAY
70868: PPUSH
70869: CALL_OW 448
70873: IFFALSE 70945
// begin ComConstruct ( temp , temp_list [ 1 ] , temp_list [ 2 ] , temp_list [ 3 ] , temp_list [ 4 ] ) ;
70875: LD_VAR 0 13
70879: PPUSH
70880: LD_VAR 0 4
70884: PUSH
70885: LD_INT 1
70887: ARRAY
70888: PPUSH
70889: LD_VAR 0 4
70893: PUSH
70894: LD_INT 2
70896: ARRAY
70897: PPUSH
70898: LD_VAR 0 4
70902: PUSH
70903: LD_INT 3
70905: ARRAY
70906: PPUSH
70907: LD_VAR 0 4
70911: PUSH
70912: LD_INT 4
70914: ARRAY
70915: PPUSH
70916: CALL_OW 125
// ai_crane_under_construction = Replace ( ai_crane_under_construction , base , true ) ;
70920: LD_ADDR_EXP 99
70924: PUSH
70925: LD_EXP 99
70929: PPUSH
70930: LD_VAR 0 5
70934: PPUSH
70935: LD_INT 1
70937: PPUSH
70938: CALL_OW 1
70942: ST_TO_ADDR
// continue ;
70943: GO 69871
// end ; end ; end ; end ; temp = 0 ;
70945: LD_ADDR_VAR 0 13
70949: PUSH
70950: LD_INT 0
70952: ST_TO_ADDR
// if vehicle_prod_delay [ base ] > 0 0$0 then
70953: LD_VAR 0 10
70957: PUSH
70958: LD_VAR 0 5
70962: ARRAY
70963: PUSH
70964: LD_INT 0
70966: GREATER
70967: IFFALSE 71012
// begin vehicle_prod_delay = Replace ( vehicle_prod_delay , base , vehicle_prod_delay [ base ] - 0 0$1 ) ;
70969: LD_ADDR_VAR 0 10
70973: PUSH
70974: LD_VAR 0 10
70978: PPUSH
70979: LD_VAR 0 5
70983: PPUSH
70984: LD_VAR 0 10
70988: PUSH
70989: LD_VAR 0 5
70993: ARRAY
70994: PUSH
70995: LD_INT 35
70997: MINUS
70998: PPUSH
70999: CALL_OW 1
71003: ST_TO_ADDR
// temp = 1 ;
71004: LD_ADDR_VAR 0 13
71008: PUSH
71009: LD_INT 1
71011: ST_TO_ADDR
// end ; if ai_vehicles_defend [ base ] + UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_ok ] , [ f_not , [ f_weapon , 59 ] ] , [ f_not , [ f_weapon , ar_selfpropelled_bomb ] ] , [ f_not , [ f_weapon , ru_time_lapser ] ] ] ) < MaxNumWarVehicles [ base ] and temp = 0 then
71012: LD_EXP 77
71016: PUSH
71017: LD_VAR 0 5
71021: ARRAY
71022: PUSH
71023: LD_EXP 78
71027: PUSH
71028: LD_VAR 0 5
71032: ARRAY
71033: PPUSH
71034: LD_INT 50
71036: PUSH
71037: EMPTY
71038: LIST
71039: PUSH
71040: LD_INT 3
71042: PUSH
71043: LD_INT 34
71045: PUSH
71046: LD_INT 59
71048: PUSH
71049: EMPTY
71050: LIST
71051: LIST
71052: PUSH
71053: EMPTY
71054: LIST
71055: LIST
71056: PUSH
71057: LD_INT 3
71059: PUSH
71060: LD_INT 34
71062: PUSH
71063: LD_INT 29
71065: PUSH
71066: EMPTY
71067: LIST
71068: LIST
71069: PUSH
71070: EMPTY
71071: LIST
71072: LIST
71073: PUSH
71074: LD_INT 3
71076: PUSH
71077: LD_INT 34
71079: PUSH
71080: LD_INT 49
71082: PUSH
71083: EMPTY
71084: LIST
71085: LIST
71086: PUSH
71087: EMPTY
71088: LIST
71089: LIST
71090: PUSH
71091: EMPTY
71092: LIST
71093: LIST
71094: LIST
71095: LIST
71096: PPUSH
71097: CALL_OW 72
71101: PLUS
71102: PUSH
71103: LD_EXP 133
71107: PUSH
71108: LD_VAR 0 5
71112: ARRAY
71113: LESS
71114: PUSH
71115: LD_VAR 0 13
71119: PUSH
71120: LD_INT 0
71122: EQUAL
71123: AND
71124: IFFALSE 72032
// begin if saved_construct_list [ base ] > 0 and not under_attack then
71126: LD_VAR 0 11
71130: PUSH
71131: LD_VAR 0 5
71135: ARRAY
71136: PUSH
71137: LD_INT 0
71139: GREATER
71140: PUSH
71141: LD_VAR 0 12
71145: NOT
71146: AND
71147: IFFALSE 71167
// begin construct_list = saved_construct_list [ base ] ;
71149: LD_ADDR_VAR 0 9
71153: PUSH
71154: LD_VAR 0 11
71158: PUSH
71159: LD_VAR 0 5
71163: ARRAY
71164: ST_TO_ADDR
// end else
71165: GO 71896
// begin construct_list = [ ] ;
71167: LD_ADDR_VAR 0 9
71171: PUSH
71172: EMPTY
71173: ST_TO_ADDR
// idle_factories = idle_factories diff [ ru_fact_2 , us_fact_2 ] ;
71174: LD_ADDR_VAR 0 6
71178: PUSH
71179: LD_VAR 0 6
71183: PUSH
71184: LD_INT 756
71186: PUSH
71187: LD_INT 372
71189: PUSH
71190: EMPTY
71191: LIST
71192: LIST
71193: DIFF
71194: ST_TO_ADDR
// if idle_factories = 0 then
71195: LD_VAR 0 6
71199: PUSH
71200: LD_INT 0
71202: EQUAL
71203: IFFALSE 71207
// continue ;
71205: GO 69871
// case base of 2 :
71207: LD_VAR 0 5
71211: PUSH
71212: LD_INT 2
71214: DOUBLE
71215: EQUAL
71216: IFTRUE 71220
71218: GO 71488
71220: POP
// begin temp_list = [ ru_gun , ru_heavy_gun , ru_rocket_launcher , ru_rocket , ru_gatling_gun ] ;
71221: LD_ADDR_VAR 0 4
71225: PUSH
71226: LD_INT 44
71228: PUSH
71229: LD_INT 46
71231: PUSH
71232: LD_INT 45
71234: PUSH
71235: LD_INT 47
71237: PUSH
71238: LD_INT 43
71240: PUSH
71241: EMPTY
71242: LIST
71243: LIST
71244: LIST
71245: LIST
71246: LIST
71247: ST_TO_ADDR
// if difficulty = 2 then
71248: LD_OWVAR 67
71252: PUSH
71253: LD_INT 2
71255: EQUAL
71256: IFFALSE 71272
// temp_list = temp_list ^ ru_heavy_gun ;
71258: LD_ADDR_VAR 0 4
71262: PUSH
71263: LD_VAR 0 4
71267: PUSH
71268: LD_INT 46
71270: ADD
71271: ST_TO_ADDR
// if difficulty = 3 then
71272: LD_OWVAR 67
71276: PUSH
71277: LD_INT 3
71279: EQUAL
71280: IFFALSE 71321
// begin temp_list = Replace ( temp_list , 1 , ru_heavy_gun ) ;
71282: LD_ADDR_VAR 0 4
71286: PUSH
71287: LD_VAR 0 4
71291: PPUSH
71292: LD_INT 1
71294: PPUSH
71295: LD_INT 46
71297: PPUSH
71298: CALL_OW 1
71302: ST_TO_ADDR
// temp_list = Delete ( temp_list , 3 ) ;
71303: LD_ADDR_VAR 0 4
71307: PUSH
71308: LD_VAR 0 4
71312: PPUSH
71313: LD_INT 3
71315: PPUSH
71316: CALL_OW 3
71320: ST_TO_ADDR
// end ; temp_value = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
71321: LD_ADDR_VAR 0 2
71325: PUSH
71326: LD_VAR 0 4
71330: PUSH
71331: LD_INT 1
71333: PPUSH
71334: LD_VAR 0 4
71338: PUSH
71339: LD_INT 0
71341: PLUS
71342: PPUSH
71343: CALL_OW 12
71347: ARRAY
71348: ST_TO_ADDR
// if under_attack then
71349: LD_VAR 0 12
71353: IFFALSE 71390
// if CanFactConstructThis ( idle_factories [ 1 ] , temp_value , false ) <> 1 then
71355: LD_VAR 0 6
71359: PUSH
71360: LD_INT 1
71362: ARRAY
71363: PPUSH
71364: LD_VAR 0 2
71368: PPUSH
71369: LD_INT 0
71371: PPUSH
71372: CALL 73631 0 3
71376: PUSH
71377: LD_INT 1
71379: NONEQUAL
71380: IFFALSE 71390
// temp_value = ru_heavy_machine_gun ;
71382: LD_ADDR_VAR 0 2
71386: PUSH
71387: LD_INT 42
71389: ST_TO_ADDR
// if Rand ( 1 , [ 2 , 3 , 4 ] [ difficulty ] ) = 1 and not temp_value in [ ru_heavy_gun , ru_rocket ] then
71390: LD_INT 1
71392: PPUSH
71393: LD_INT 2
71395: PUSH
71396: LD_INT 3
71398: PUSH
71399: LD_INT 4
71401: PUSH
71402: EMPTY
71403: LIST
71404: LIST
71405: LIST
71406: PUSH
71407: LD_OWVAR 67
71411: ARRAY
71412: PPUSH
71413: CALL_OW 12
71417: PUSH
71418: LD_INT 1
71420: EQUAL
71421: PUSH
71422: LD_VAR 0 2
71426: PUSH
71427: LD_INT 46
71429: PUSH
71430: LD_INT 47
71432: PUSH
71433: EMPTY
71434: LIST
71435: LIST
71436: IN
71437: NOT
71438: AND
71439: IFFALSE 71451
// i = ru_medium_tracked else
71441: LD_ADDR_VAR 0 1
71445: PUSH
71446: LD_INT 22
71448: ST_TO_ADDR
71449: GO 71459
// i = ru_heavy_tracked ;
71451: LD_ADDR_VAR 0 1
71455: PUSH
71456: LD_INT 24
71458: ST_TO_ADDR
// construct_list = [ i , engine_siberite , control_computer , temp_value ] ;
71459: LD_ADDR_VAR 0 9
71463: PUSH
71464: LD_VAR 0 1
71468: PUSH
71469: LD_INT 3
71471: PUSH
71472: LD_INT 3
71474: PUSH
71475: LD_VAR 0 2
71479: PUSH
71480: EMPTY
71481: LIST
71482: LIST
71483: LIST
71484: LIST
71485: ST_TO_ADDR
// end ; 1 :
71486: GO 71896
71488: LD_INT 1
71490: DOUBLE
71491: EQUAL
71492: IFTRUE 71496
71494: GO 71612
71496: POP
// begin temp_list = [ ar_gun , ar_rocket_launcher , ar_gatling_gun ] ;
71497: LD_ADDR_VAR 0 4
71501: PUSH
71502: LD_INT 27
71504: PUSH
71505: LD_INT 28
71507: PUSH
71508: LD_INT 25
71510: PUSH
71511: EMPTY
71512: LIST
71513: LIST
71514: LIST
71515: ST_TO_ADDR
// temp_value = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
71516: LD_ADDR_VAR 0 2
71520: PUSH
71521: LD_VAR 0 4
71525: PUSH
71526: LD_INT 1
71528: PPUSH
71529: LD_VAR 0 4
71533: PUSH
71534: LD_INT 0
71536: PLUS
71537: PPUSH
71538: CALL_OW 12
71542: ARRAY
71543: ST_TO_ADDR
// if under_attack then
71544: LD_VAR 0 12
71548: IFFALSE 71585
// if CanFactConstructThis ( idle_factories [ 1 ] , temp_value , false ) <> 1 then
71550: LD_VAR 0 6
71554: PUSH
71555: LD_INT 1
71557: ARRAY
71558: PPUSH
71559: LD_VAR 0 2
71563: PPUSH
71564: LD_INT 0
71566: PPUSH
71567: CALL 73631 0 3
71571: PUSH
71572: LD_INT 1
71574: NONEQUAL
71575: IFFALSE 71585
// temp_value = ar_double_machine_gun ;
71577: LD_ADDR_VAR 0 2
71581: PUSH
71582: LD_INT 24
71584: ST_TO_ADDR
// construct_list = [ ar_half_tracked , engine_siberite , control_remote , temp_value ] ;
71585: LD_ADDR_VAR 0 9
71589: PUSH
71590: LD_INT 14
71592: PUSH
71593: LD_INT 3
71595: PUSH
71596: LD_INT 2
71598: PUSH
71599: LD_VAR 0 2
71603: PUSH
71604: EMPTY
71605: LIST
71606: LIST
71607: LIST
71608: LIST
71609: ST_TO_ADDR
// end ; 3 :
71610: GO 71896
71612: LD_INT 3
71614: DOUBLE
71615: EQUAL
71616: IFTRUE 71620
71618: GO 71895
71620: POP
// begin temp_list = [ us_double_gun , us_heavy_gun , us_rocket_launcher , us_gatling_gun ] ;
71621: LD_ADDR_VAR 0 4
71625: PUSH
71626: LD_INT 5
71628: PUSH
71629: LD_INT 6
71631: PUSH
71632: LD_INT 7
71634: PUSH
71635: LD_INT 4
71637: PUSH
71638: EMPTY
71639: LIST
71640: LIST
71641: LIST
71642: LIST
71643: ST_TO_ADDR
// if difficulty = 2 then
71644: LD_OWVAR 67
71648: PUSH
71649: LD_INT 2
71651: EQUAL
71652: IFFALSE 71668
// temp_list = temp_list ^ us_heavy_gun ;
71654: LD_ADDR_VAR 0 4
71658: PUSH
71659: LD_VAR 0 4
71663: PUSH
71664: LD_INT 6
71666: ADD
71667: ST_TO_ADDR
// if difficulty = 3 then
71668: LD_OWVAR 67
71672: PUSH
71673: LD_INT 3
71675: EQUAL
71676: IFFALSE 71699
// temp_list = Replace ( temp_list , 1 , us_heavy_gun ) ;
71678: LD_ADDR_VAR 0 4
71682: PUSH
71683: LD_VAR 0 4
71687: PPUSH
71688: LD_INT 1
71690: PPUSH
71691: LD_INT 6
71693: PPUSH
71694: CALL_OW 1
71698: ST_TO_ADDR
// temp_value = temp_list [ Rand ( 1 , temp_list + 0 ) ] ;
71699: LD_ADDR_VAR 0 2
71703: PUSH
71704: LD_VAR 0 4
71708: PUSH
71709: LD_INT 1
71711: PPUSH
71712: LD_VAR 0 4
71716: PUSH
71717: LD_INT 0
71719: PLUS
71720: PPUSH
71721: CALL_OW 12
71725: ARRAY
71726: ST_TO_ADDR
// if under_attack then
71727: LD_VAR 0 12
71731: IFFALSE 71768
// if CanFactConstructThis ( idle_factories [ 1 ] , temp_value , false ) <> 1 then
71733: LD_VAR 0 6
71737: PUSH
71738: LD_INT 1
71740: ARRAY
71741: PPUSH
71742: LD_VAR 0 2
71746: PPUSH
71747: LD_INT 0
71749: PPUSH
71750: CALL 73631 0 3
71754: PUSH
71755: LD_INT 1
71757: NONEQUAL
71758: IFFALSE 71768
// temp_value = us_machine_gun ;
71760: LD_ADDR_VAR 0 2
71764: PUSH
71765: LD_INT 2
71767: ST_TO_ADDR
// if Rand ( 1 , [ 2 , 3 , 4 ] [ difficulty ] ) = 1 and not temp_value = us_heavy_gun then
71768: LD_INT 1
71770: PPUSH
71771: LD_INT 2
71773: PUSH
71774: LD_INT 3
71776: PUSH
71777: LD_INT 4
71779: PUSH
71780: EMPTY
71781: LIST
71782: LIST
71783: LIST
71784: PUSH
71785: LD_OWVAR 67
71789: ARRAY
71790: PPUSH
71791: CALL_OW 12
71795: PUSH
71796: LD_INT 1
71798: EQUAL
71799: PUSH
71800: LD_VAR 0 2
71804: PUSH
71805: LD_INT 6
71807: EQUAL
71808: NOT
71809: AND
71810: IFFALSE 71822
// i = us_medium_tracked else
71812: LD_ADDR_VAR 0 1
71816: PUSH
71817: LD_INT 3
71819: ST_TO_ADDR
71820: GO 71866
// if Rand ( 1 , 3 ) = 1 and difficulty < 3 then
71822: LD_INT 1
71824: PPUSH
71825: LD_INT 3
71827: PPUSH
71828: CALL_OW 12
71832: PUSH
71833: LD_INT 1
71835: EQUAL
71836: PUSH
71837: LD_OWVAR 67
71841: PUSH
71842: LD_INT 3
71844: LESS
71845: AND
71846: IFFALSE 71858
// i = us_heavy_tracked else
71848: LD_ADDR_VAR 0 1
71852: PUSH
71853: LD_INT 4
71855: ST_TO_ADDR
71856: GO 71866
// i = us_morphling ;
71858: LD_ADDR_VAR 0 1
71862: PUSH
71863: LD_INT 5
71865: ST_TO_ADDR
// construct_list = [ i , engine_siberite , control_remote , temp_value ] ;
71866: LD_ADDR_VAR 0 9
71870: PUSH
71871: LD_VAR 0 1
71875: PUSH
71876: LD_INT 3
71878: PUSH
71879: LD_INT 2
71881: PUSH
71882: LD_VAR 0 2
71886: PUSH
71887: EMPTY
71888: LIST
71889: LIST
71890: LIST
71891: LIST
71892: ST_TO_ADDR
// end ; end ;
71893: GO 71896
71895: POP
// end ; if construct_list > 0 then
71896: LD_VAR 0 9
71900: PUSH
71901: LD_INT 0
71903: GREATER
71904: IFFALSE 72028
// begin b = FactConstruct ( base , [ idle_factories [ 1 ] ] , construct_list , base = 3 ) ;
71906: LD_ADDR_VAR 0 8
71910: PUSH
71911: LD_VAR 0 5
71915: PPUSH
71916: LD_VAR 0 6
71920: PUSH
71921: LD_INT 1
71923: ARRAY
71924: PUSH
71925: EMPTY
71926: LIST
71927: PPUSH
71928: LD_VAR 0 9
71932: PPUSH
71933: LD_VAR 0 5
71937: PUSH
71938: LD_INT 3
71940: EQUAL
71941: PPUSH
71942: CALL 73168 0 4
71946: ST_TO_ADDR
// case b of 0 :
71947: LD_VAR 0 8
71951: PUSH
71952: LD_INT 0
71954: DOUBLE
71955: EQUAL
71956: IFTRUE 71960
71958: GO 71988
71960: POP
// saved_construct_list = Replace ( saved_construct_list , base , construct_list ) ; 1 , 2 :
71961: LD_ADDR_VAR 0 11
71965: PUSH
71966: LD_VAR 0 11
71970: PPUSH
71971: LD_VAR 0 5
71975: PPUSH
71976: LD_VAR 0 9
71980: PPUSH
71981: CALL_OW 1
71985: ST_TO_ADDR
71986: GO 72028
71988: LD_INT 1
71990: DOUBLE
71991: EQUAL
71992: IFTRUE 72002
71994: LD_INT 2
71996: DOUBLE
71997: EQUAL
71998: IFTRUE 72002
72000: GO 72027
72002: POP
// saved_construct_list = Replace ( saved_construct_list , base , [ ] ) ; end ;
72003: LD_ADDR_VAR 0 11
72007: PUSH
72008: LD_VAR 0 11
72012: PPUSH
72013: LD_VAR 0 5
72017: PPUSH
72018: EMPTY
72019: PPUSH
72020: CALL_OW 1
72024: ST_TO_ADDR
72025: GO 72028
72027: POP
// end ; continue ;
72028: GO 69871
// end else
72030: GO 72922
// begin if base = 3 then
72032: LD_VAR 0 5
72036: PUSH
72037: LD_INT 3
72039: EQUAL
72040: IFFALSE 72052
// temp2 = 2 else
72042: LD_ADDR_VAR 0 14
72046: PUSH
72047: LD_INT 2
72049: ST_TO_ADDR
72050: GO 72260
// if base = 2 then
72052: LD_VAR 0 5
72056: PUSH
72057: LD_INT 2
72059: EQUAL
72060: IFFALSE 72252
// begin if not 2 in mb_bases then
72062: LD_INT 2
72064: PUSH
72065: LD_EXP 160
72069: IN
72070: NOT
72071: IFFALSE 72248
// begin for i = 1 to 2 do
72073: LD_ADDR_VAR 0 1
72077: PUSH
72078: DOUBLE
72079: LD_INT 1
72081: DEC
72082: ST_TO_ADDR
72083: LD_INT 2
72085: PUSH
72086: FOR_TO
72087: IFFALSE 72246
// if IsOk ( mb_vehicles [ 2 ] [ i ] ) = 0 then
72089: LD_EXP 164
72093: PUSH
72094: LD_INT 2
72096: ARRAY
72097: PUSH
72098: LD_VAR 0 1
72102: ARRAY
72103: PPUSH
72104: CALL_OW 302
72108: PUSH
72109: LD_INT 0
72111: EQUAL
72112: IFFALSE 72244
// begin chassis = ru_medium_tracked ;
72114: LD_ADDR_VAR 0 15
72118: PUSH
72119: LD_INT 22
72121: ST_TO_ADDR
// engine = engine_combustion ;
72122: LD_ADDR_VAR 0 16
72126: PUSH
72127: LD_INT 1
72129: ST_TO_ADDR
// control = control_computer ;
72130: LD_ADDR_VAR 0 17
72134: PUSH
72135: LD_INT 3
72137: ST_TO_ADDR
// weapon = ru_gun ;
72138: LD_ADDR_VAR 0 18
72142: PUSH
72143: LD_INT 44
72145: ST_TO_ADDR
// factory = ru_fact_1 ;
72146: LD_ADDR_VAR 0 19
72150: PUSH
72151: LD_INT 283
72153: ST_TO_ADDR
// ComConstruct ( factory , chassis , engine , control , weapon ) ;
72154: LD_VAR 0 19
72158: PPUSH
72159: LD_VAR 0 15
72163: PPUSH
72164: LD_VAR 0 16
72168: PPUSH
72169: LD_VAR 0 17
72173: PPUSH
72174: LD_VAR 0 18
72178: PPUSH
72179: CALL_OW 125
// temp = mb_vehicles [ 2 ] ;
72183: LD_ADDR_VAR 0 13
72187: PUSH
72188: LD_EXP 164
72192: PUSH
72193: LD_INT 2
72195: ARRAY
72196: ST_TO_ADDR
// temp = Replace ( temp , i , - 1 ) ;
72197: LD_ADDR_VAR 0 13
72201: PUSH
72202: LD_VAR 0 13
72206: PPUSH
72207: LD_VAR 0 1
72211: PPUSH
72212: LD_INT 1
72214: NEG
72215: PPUSH
72216: CALL_OW 1
72220: ST_TO_ADDR
// mb_vehicles = Replace ( mb_vehicles , 2 , temp ) ;
72221: LD_ADDR_EXP 164
72225: PUSH
72226: LD_EXP 164
72230: PPUSH
72231: LD_INT 2
72233: PPUSH
72234: LD_VAR 0 13
72238: PPUSH
72239: CALL_OW 1
72243: ST_TO_ADDR
// end ;
72244: GO 72086
72246: POP
72247: POP
// end ; continue ;
72248: GO 69871
// end else
72250: GO 72260
// temp2 = 1 ;
72252: LD_ADDR_VAR 0 14
72256: PUSH
72257: LD_INT 1
72259: ST_TO_ADDR
// temp_list = ai_patrol_weapons [ temp2 ] ;
72260: LD_ADDR_VAR 0 4
72264: PUSH
72265: LD_EXP 186
72269: PUSH
72270: LD_VAR 0 14
72274: ARRAY
72275: ST_TO_ADDR
// if not - 1 in ai_patrol [ temp2 ] and not temp2 in ai_patrol_out and not ai_patrol_status [ temp2 ] = - 1 then
72276: LD_INT 1
72278: NEG
72279: PUSH
72280: LD_EXP 183
72284: PUSH
72285: LD_VAR 0 14
72289: ARRAY
72290: IN
72291: NOT
72292: PUSH
72293: LD_VAR 0 14
72297: PUSH
72298: LD_EXP 187
72302: IN
72303: NOT
72304: AND
72305: PUSH
72306: LD_EXP 190
72310: PUSH
72311: LD_VAR 0 14
72315: ARRAY
72316: PUSH
72317: LD_INT 1
72319: NEG
72320: EQUAL
72321: NOT
72322: AND
72323: IFFALSE 72691
// for i = 1 to ai_patrol [ temp2 ] do
72325: LD_ADDR_VAR 0 1
72329: PUSH
72330: DOUBLE
72331: LD_INT 1
72333: DEC
72334: ST_TO_ADDR
72335: LD_EXP 183
72339: PUSH
72340: LD_VAR 0 14
72344: ARRAY
72345: PUSH
72346: FOR_TO
72347: IFFALSE 72689
// if ai_patrol [ temp2 ] [ i ] = 0 or IsDead ( ai_patrol [ temp2 ] [ i ] ) then
72349: LD_EXP 183
72353: PUSH
72354: LD_VAR 0 14
72358: ARRAY
72359: PUSH
72360: LD_VAR 0 1
72364: ARRAY
72365: PUSH
72366: LD_INT 0
72368: EQUAL
72369: PUSH
72370: LD_EXP 183
72374: PUSH
72375: LD_VAR 0 14
72379: ARRAY
72380: PUSH
72381: LD_VAR 0 1
72385: ARRAY
72386: PPUSH
72387: CALL_OW 301
72391: OR
72392: IFFALSE 72687
// begin engine = engine_siberite ;
72394: LD_ADDR_VAR 0 16
72398: PUSH
72399: LD_INT 3
72401: ST_TO_ADDR
// control = control_remote ;
72402: LD_ADDR_VAR 0 17
72406: PUSH
72407: LD_INT 2
72409: ST_TO_ADDR
// weapon = temp_list [ i ] ;
72410: LD_ADDR_VAR 0 18
72414: PUSH
72415: LD_VAR 0 4
72419: PUSH
72420: LD_VAR 0 1
72424: ARRAY
72425: ST_TO_ADDR
// if base = 1 then
72426: LD_VAR 0 5
72430: PUSH
72431: LD_INT 1
72433: EQUAL
72434: IFFALSE 72446
// chassis = ar_half_tracked else
72436: LD_ADDR_VAR 0 15
72440: PUSH
72441: LD_INT 14
72443: ST_TO_ADDR
72444: GO 72495
// if temp_list [ i ] in [ us_double_laser , us_laser , us_heavy_gun , us_rocket_launcher ] then
72446: LD_VAR 0 4
72450: PUSH
72451: LD_VAR 0 1
72455: ARRAY
72456: PUSH
72457: LD_INT 10
72459: PUSH
72460: LD_INT 9
72462: PUSH
72463: LD_INT 6
72465: PUSH
72466: LD_INT 7
72468: PUSH
72469: EMPTY
72470: LIST
72471: LIST
72472: LIST
72473: LIST
72474: IN
72475: IFFALSE 72487
// chassis = us_morphling else
72477: LD_ADDR_VAR 0 15
72481: PUSH
72482: LD_INT 5
72484: ST_TO_ADDR
72485: GO 72495
// chassis = us_medium_tracked ;
72487: LD_ADDR_VAR 0 15
72491: PUSH
72492: LD_INT 3
72494: ST_TO_ADDR
// case base of 1 :
72495: LD_VAR 0 5
72499: PUSH
72500: LD_INT 1
72502: DOUBLE
72503: EQUAL
72504: IFTRUE 72508
72506: GO 72544
72508: POP
// begin factory = le_fact_1 ;
72509: LD_ADDR_VAR 0 19
72513: PUSH
72514: LD_INT 158
72516: ST_TO_ADDR
// if CanFactConstructThis ( factory , weapon , true ) <> 1 then
72517: LD_VAR 0 19
72521: PPUSH
72522: LD_VAR 0 18
72526: PPUSH
72527: LD_INT 1
72529: PPUSH
72530: CALL 73631 0 3
72534: PUSH
72535: LD_INT 1
72537: NONEQUAL
72538: IFFALSE 72542
// continue ;
72540: GO 72346
// end ; 3 :
72542: GO 72591
72544: LD_INT 3
72546: DOUBLE
72547: EQUAL
72548: IFTRUE 72552
72550: GO 72590
72552: POP
// if weapon in [ us_double_laser , us_laser ] then
72553: LD_VAR 0 18
72557: PUSH
72558: LD_INT 10
72560: PUSH
72561: LD_INT 9
72563: PUSH
72564: EMPTY
72565: LIST
72566: LIST
72567: IN
72568: IFFALSE 72580
// factory = us_fact_2 else
72570: LD_ADDR_VAR 0 19
72574: PUSH
72575: LD_INT 372
72577: ST_TO_ADDR
72578: GO 72588
// factory = us_fact_1 ; end ;
72580: LD_ADDR_VAR 0 19
72584: PUSH
72585: LD_INT 366
72587: ST_TO_ADDR
72588: GO 72591
72590: POP
// ComConstruct ( factory , chassis , engine , control , weapon ) ;
72591: LD_VAR 0 19
72595: PPUSH
72596: LD_VAR 0 15
72600: PPUSH
72601: LD_VAR 0 16
72605: PPUSH
72606: LD_VAR 0 17
72610: PPUSH
72611: LD_VAR 0 18
72615: PPUSH
72616: CALL_OW 125
// temp = ai_patrol [ temp2 ] ;
72620: LD_ADDR_VAR 0 13
72624: PUSH
72625: LD_EXP 183
72629: PUSH
72630: LD_VAR 0 14
72634: ARRAY
72635: ST_TO_ADDR
// temp = Replace ( temp , i , - 1 ) ;
72636: LD_ADDR_VAR 0 13
72640: PUSH
72641: LD_VAR 0 13
72645: PPUSH
72646: LD_VAR 0 1
72650: PPUSH
72651: LD_INT 1
72653: NEG
72654: PPUSH
72655: CALL_OW 1
72659: ST_TO_ADDR
// ai_patrol = Replace ( ai_patrol , temp2 , temp ) ;
72660: LD_ADDR_EXP 183
72664: PUSH
72665: LD_EXP 183
72669: PPUSH
72670: LD_VAR 0 14
72674: PPUSH
72675: LD_VAR 0 13
72679: PPUSH
72680: CALL_OW 1
72684: ST_TO_ADDR
// break ;
72685: GO 72689
// end ;
72687: GO 72346
72689: POP
72690: POP
// if temp2 = 1 and ai_hovercrafts_out = 0 and not - 1 in ai_patrol [ temp2 ] and not - 1 in ai_hovercrafts and not ai_hovercrafts_status = - 1 then
72691: LD_VAR 0 14
72695: PUSH
72696: LD_INT 1
72698: EQUAL
72699: PUSH
72700: LD_EXP 153
72704: PUSH
72705: LD_INT 0
72707: EQUAL
72708: AND
72709: PUSH
72710: LD_INT 1
72712: NEG
72713: PUSH
72714: LD_EXP 183
72718: PUSH
72719: LD_VAR 0 14
72723: ARRAY
72724: IN
72725: NOT
72726: AND
72727: PUSH
72728: LD_INT 1
72730: NEG
72731: PUSH
72732: LD_EXP 148
72736: IN
72737: NOT
72738: AND
72739: PUSH
72740: LD_EXP 150
72744: PUSH
72745: LD_INT 1
72747: NEG
72748: EQUAL
72749: NOT
72750: AND
72751: IFFALSE 72922
// for i = 1 to ai_hovercrafts do
72753: LD_ADDR_VAR 0 1
72757: PUSH
72758: DOUBLE
72759: LD_INT 1
72761: DEC
72762: ST_TO_ADDR
72763: LD_EXP 148
72767: PUSH
72768: FOR_TO
72769: IFFALSE 72920
// if ai_hovercrafts [ i ] = 0 or IsDead ( ai_hovercrafts [ i ] ) then
72771: LD_EXP 148
72775: PUSH
72776: LD_VAR 0 1
72780: ARRAY
72781: PUSH
72782: LD_INT 0
72784: EQUAL
72785: PUSH
72786: LD_EXP 148
72790: PUSH
72791: LD_VAR 0 1
72795: ARRAY
72796: PPUSH
72797: CALL_OW 301
72801: OR
72802: IFFALSE 72918
// begin chassis = ar_hovercraft ;
72804: LD_ADDR_VAR 0 15
72808: PUSH
72809: LD_INT 11
72811: ST_TO_ADDR
// engine = engine_combustion ;
72812: LD_ADDR_VAR 0 16
72816: PUSH
72817: LD_INT 1
72819: ST_TO_ADDR
// control = control_remote ;
72820: LD_ADDR_VAR 0 17
72824: PUSH
72825: LD_INT 2
72827: ST_TO_ADDR
// weapon = [ ar_light_gun , ar_double_machine_gun ] [ rand ( 1 , 2 ) ] ;
72828: LD_ADDR_VAR 0 18
72832: PUSH
72833: LD_INT 23
72835: PUSH
72836: LD_INT 24
72838: PUSH
72839: EMPTY
72840: LIST
72841: LIST
72842: PUSH
72843: LD_INT 1
72845: PPUSH
72846: LD_INT 2
72848: PPUSH
72849: CALL_OW 12
72853: ARRAY
72854: ST_TO_ADDR
// factory = le_fact_1 ;
72855: LD_ADDR_VAR 0 19
72859: PUSH
72860: LD_INT 158
72862: ST_TO_ADDR
// ComConstruct ( factory , chassis , engine , control , weapon ) ;
72863: LD_VAR 0 19
72867: PPUSH
72868: LD_VAR 0 15
72872: PPUSH
72873: LD_VAR 0 16
72877: PPUSH
72878: LD_VAR 0 17
72882: PPUSH
72883: LD_VAR 0 18
72887: PPUSH
72888: CALL_OW 125
// ai_hovercrafts = Replace ( ai_hovercrafts , i , - 1 ) ;
72892: LD_ADDR_EXP 148
72896: PUSH
72897: LD_EXP 148
72901: PPUSH
72902: LD_VAR 0 1
72906: PPUSH
72907: LD_INT 1
72909: NEG
72910: PPUSH
72911: CALL_OW 1
72915: ST_TO_ADDR
// break ;
72916: GO 72920
// end ;
72918: GO 72768
72920: POP
72921: POP
// end ; if base = 2 and ai_taufield_vehicles [ base ] + UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_ok ] , [ f_weapon , ru_time_lapser ] ] ) < MaxNumTaufieldVehicles ( base ) then
72922: LD_VAR 0 5
72926: PUSH
72927: LD_INT 2
72929: EQUAL
72930: PUSH
72931: LD_EXP 110
72935: PUSH
72936: LD_VAR 0 5
72940: ARRAY
72941: PUSH
72942: LD_EXP 78
72946: PUSH
72947: LD_VAR 0 5
72951: ARRAY
72952: PPUSH
72953: LD_INT 50
72955: PUSH
72956: EMPTY
72957: LIST
72958: PUSH
72959: LD_INT 34
72961: PUSH
72962: LD_INT 49
72964: PUSH
72965: EMPTY
72966: LIST
72967: LIST
72968: PUSH
72969: EMPTY
72970: LIST
72971: LIST
72972: PPUSH
72973: CALL_OW 72
72977: PLUS
72978: PUSH
72979: LD_VAR 0 5
72983: PPUSH
72984: CALL 69551 0 1
72988: LESS
72989: AND
72990: IFFALSE 73052
// begin b = FactConstruct ( base , idle_factories , [ ru_medium_tracked , engine_siberite , control_computer , ru_time_lapser ] , false ) ;
72992: LD_ADDR_VAR 0 8
72996: PUSH
72997: LD_VAR 0 5
73001: PPUSH
73002: LD_VAR 0 6
73006: PPUSH
73007: LD_INT 22
73009: PUSH
73010: LD_INT 3
73012: PUSH
73013: LD_INT 3
73015: PUSH
73016: LD_INT 49
73018: PUSH
73019: EMPTY
73020: LIST
73021: LIST
73022: LIST
73023: LIST
73024: PPUSH
73025: LD_INT 0
73027: PPUSH
73028: CALL 73168 0 4
73032: ST_TO_ADDR
// if b in [ 0 , 1 ] then
73033: LD_VAR 0 8
73037: PUSH
73038: LD_INT 0
73040: PUSH
73041: LD_INT 1
73043: PUSH
73044: EMPTY
73045: LIST
73046: LIST
73047: IN
73048: IFFALSE 73052
// continue ;
73050: GO 69871
// end ; if base = 1 and ai_implosion_vehicles [ base ] + UnitFilter ( ai_vehicles_attack [ base ] , [ [ f_ok ] , [ f_weapon , ar_selfpropelled_bomb ] ] ) < MaxNumImplosionVehicles ( base ) then
73052: LD_VAR 0 5
73056: PUSH
73057: LD_INT 1
73059: EQUAL
73060: PUSH
73061: LD_EXP 111
73065: PUSH
73066: LD_VAR 0 5
73070: ARRAY
73071: PUSH
73072: LD_EXP 78
73076: PUSH
73077: LD_VAR 0 5
73081: ARRAY
73082: PPUSH
73083: LD_INT 50
73085: PUSH
73086: EMPTY
73087: LIST
73088: PUSH
73089: LD_INT 34
73091: PUSH
73092: LD_INT 29
73094: PUSH
73095: EMPTY
73096: LIST
73097: LIST
73098: PUSH
73099: EMPTY
73100: LIST
73101: LIST
73102: PPUSH
73103: CALL_OW 72
73107: PLUS
73108: PUSH
73109: LD_VAR 0 5
73113: PPUSH
73114: CALL 69623 0 1
73118: LESS
73119: AND
73120: IFFALSE 73157
// begin FactConstruct ( base , idle_factories , [ ar_half_tracked , engine_siberite , control_remote , ar_selfpropelled_bomb ] , true ) ;
73122: LD_VAR 0 5
73126: PPUSH
73127: LD_VAR 0 6
73131: PPUSH
73132: LD_INT 14
73134: PUSH
73135: LD_INT 3
73137: PUSH
73138: LD_INT 2
73140: PUSH
73141: LD_INT 29
73143: PUSH
73144: EMPTY
73145: LIST
73146: LIST
73147: LIST
73148: LIST
73149: PPUSH
73150: LD_INT 1
73152: PPUSH
73153: CALL 73168 0 4
// end ; end ;
73157: GO 69871
73159: POP
73160: POP
// until false ;
73161: LD_INT 0
73163: IFFALSE 69832
// end ;
73165: PPOPN 19
73167: END
// function FactConstruct ( base , fact_list , construct_list , check_ar_control_tower_amount ) ; var i , temp_list , map_list , val ; begin
73168: LD_INT 0
73170: PPUSH
73171: PPUSH
73172: PPUSH
73173: PPUSH
73174: PPUSH
// if fact_list = 0 then
73175: LD_VAR 0 2
73179: PUSH
73180: LD_INT 0
73182: EQUAL
73183: IFFALSE 73195
// begin result = 2 ;
73185: LD_ADDR_VAR 0 5
73189: PUSH
73190: LD_INT 2
73192: ST_TO_ADDR
// exit ;
73193: GO 73324
// end ; result = CanFactConstructThis ( fact_list [ 1 ] , construct_list [ 4 ] , true ) ;
73195: LD_ADDR_VAR 0 5
73199: PUSH
73200: LD_VAR 0 2
73204: PUSH
73205: LD_INT 1
73207: ARRAY
73208: PPUSH
73209: LD_VAR 0 3
73213: PUSH
73214: LD_INT 4
73216: ARRAY
73217: PPUSH
73218: LD_INT 1
73220: PPUSH
73221: CALL 73631 0 3
73225: ST_TO_ADDR
// if result = 1 then
73226: LD_VAR 0 5
73230: PUSH
73231: LD_INT 1
73233: EQUAL
73234: IFFALSE 73324
// begin if construct_list [ 2 ] = - 1 then
73236: LD_VAR 0 3
73240: PUSH
73241: LD_INT 2
73243: ARRAY
73244: PUSH
73245: LD_INT 1
73247: NEG
73248: EQUAL
73249: IFFALSE 73275
// ComPlaceWeapon ( construct_list [ 1 ] , construct_list [ 4 ] ) else
73251: LD_VAR 0 3
73255: PUSH
73256: LD_INT 1
73258: ARRAY
73259: PPUSH
73260: LD_VAR 0 3
73264: PUSH
73265: LD_INT 4
73267: ARRAY
73268: PPUSH
73269: CALL_OW 148
73273: GO 73324
// ComConstruct ( fact_list [ 1 ] , construct_list [ 1 ] , construct_list [ 2 ] , construct_list [ 3 ] , construct_list [ 4 ] ) ;
73275: LD_VAR 0 2
73279: PUSH
73280: LD_INT 1
73282: ARRAY
73283: PPUSH
73284: LD_VAR 0 3
73288: PUSH
73289: LD_INT 1
73291: ARRAY
73292: PPUSH
73293: LD_VAR 0 3
73297: PUSH
73298: LD_INT 2
73300: ARRAY
73301: PPUSH
73302: LD_VAR 0 3
73306: PUSH
73307: LD_INT 3
73309: ARRAY
73310: PPUSH
73311: LD_VAR 0 3
73315: PUSH
73316: LD_INT 4
73318: ARRAY
73319: PPUSH
73320: CALL_OW 125
// end ; end ;
73324: LD_VAR 0 5
73328: RET
// function CheckAndFixArControlTowerAmount ( base , fact_list , going_to_build_a_vehicle_after_this_check ) ; var temp_list ; begin
73329: LD_INT 0
73331: PPUSH
73332: PPUSH
// temp_list = UnitFilter ( ai_vehicles_defend [ base ] ^ ai_vehicles_attack [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ ai_cargo_bay [ base ] ^ ai_crane [ base ] , [ f_control , control_remote ] ) ;
73333: LD_ADDR_VAR 0 5
73337: PUSH
73338: LD_EXP 77
73342: PUSH
73343: LD_VAR 0 1
73347: ARRAY
73348: PUSH
73349: LD_EXP 78
73353: PUSH
73354: LD_VAR 0 1
73358: ARRAY
73359: ADD
73360: PUSH
73361: LD_EXP 110
73365: PUSH
73366: LD_VAR 0 1
73370: ARRAY
73371: ADD
73372: PUSH
73373: LD_EXP 111
73377: PUSH
73378: LD_VAR 0 1
73382: ARRAY
73383: ADD
73384: PUSH
73385: LD_EXP 95
73389: PUSH
73390: LD_VAR 0 1
73394: ARRAY
73395: ADD
73396: PUSH
73397: LD_EXP 98
73401: PUSH
73402: LD_VAR 0 1
73406: ARRAY
73407: ADD
73408: PPUSH
73409: LD_INT 33
73411: PUSH
73412: LD_INT 2
73414: PUSH
73415: EMPTY
73416: LIST
73417: LIST
73418: PPUSH
73419: CALL_OW 72
73423: ST_TO_ADDR
// if ai_control_tower_vehicles [ base ] < 7 or ( temp_list + 0 > ai_control_tower_vehicles [ base ] * 2 or ( temp_list + 0 >= ai_control_tower_vehicles [ base ] * 2 and going_to_build_a_vehicle_after_this_check ) ) and ai_control_tower_vehicles [ base ] < ai_vehicle_pullback_hexes [ base ] and ai_control_tower_vehicles [ base ] < ( ( ai_mechanics_defend [ base ] ^ ai_mechanics_attack [ base ] ) diff ai_crane_driver [ base ] ) - 1 then
73424: LD_EXP 105
73428: PUSH
73429: LD_VAR 0 1
73433: ARRAY
73434: PUSH
73435: LD_INT 7
73437: LESS
73438: PUSH
73439: LD_VAR 0 5
73443: PUSH
73444: LD_INT 0
73446: PLUS
73447: PUSH
73448: LD_EXP 105
73452: PUSH
73453: LD_VAR 0 1
73457: ARRAY
73458: PUSH
73459: LD_INT 2
73461: MUL
73462: GREATER
73463: PUSH
73464: LD_VAR 0 5
73468: PUSH
73469: LD_INT 0
73471: PLUS
73472: PUSH
73473: LD_EXP 105
73477: PUSH
73478: LD_VAR 0 1
73482: ARRAY
73483: PUSH
73484: LD_INT 2
73486: MUL
73487: GREATEREQUAL
73488: PUSH
73489: LD_VAR 0 3
73493: AND
73494: OR
73495: PUSH
73496: LD_EXP 105
73500: PUSH
73501: LD_VAR 0 1
73505: ARRAY
73506: PUSH
73507: LD_EXP 82
73511: PUSH
73512: LD_VAR 0 1
73516: ARRAY
73517: LESS
73518: AND
73519: PUSH
73520: LD_EXP 105
73524: PUSH
73525: LD_VAR 0 1
73529: ARRAY
73530: PUSH
73531: LD_EXP 53
73535: PUSH
73536: LD_VAR 0 1
73540: ARRAY
73541: PUSH
73542: LD_EXP 54
73546: PUSH
73547: LD_VAR 0 1
73551: ARRAY
73552: ADD
73553: PUSH
73554: LD_EXP 102
73558: PUSH
73559: LD_VAR 0 1
73563: ARRAY
73564: DIFF
73565: PUSH
73566: LD_INT 1
73568: MINUS
73569: LESS
73570: AND
73571: OR
73572: IFFALSE 73617
// begin result = FactConstruct ( base , fact_list , [ ar_half_tracked , engine_siberite , control_manual , ar_control_tower ] , false ) ;
73574: LD_ADDR_VAR 0 4
73578: PUSH
73579: LD_VAR 0 1
73583: PPUSH
73584: LD_VAR 0 2
73588: PPUSH
73589: LD_INT 14
73591: PUSH
73592: LD_INT 3
73594: PUSH
73595: LD_INT 1
73597: PUSH
73598: LD_INT 31
73600: PUSH
73601: EMPTY
73602: LIST
73603: LIST
73604: LIST
73605: LIST
73606: PPUSH
73607: LD_INT 0
73609: PPUSH
73610: CALL 73168 0 4
73614: ST_TO_ADDR
// end else
73615: GO 73626
// result = - 1 ;
73617: LD_ADDR_VAR 0 4
73621: PUSH
73622: LD_INT 1
73624: NEG
73625: ST_TO_ADDR
// end ;
73626: LD_VAR 0 4
73630: RET
// function CanFactConstructThis ( fact , weapon , do_something_about_it ) ; var base , i , temp_list , un , loc_list , btype_list_planned , btype_list_exists , temp_list_2 , temp_list_3 , all_needed , currently_needed ; var fact_ext_replace_loc_list ; begin
73631: LD_INT 0
73633: PPUSH
73634: PPUSH
73635: PPUSH
73636: PPUSH
73637: PPUSH
73638: PPUSH
73639: PPUSH
73640: PPUSH
73641: PPUSH
73642: PPUSH
73643: PPUSH
73644: PPUSH
73645: PPUSH
// base = FindBase ( fact ) ;
73646: LD_ADDR_VAR 0 5
73650: PUSH
73651: LD_VAR 0 1
73655: PPUSH
73656: CALL 40619 0 1
73660: ST_TO_ADDR
// if base = 0 then
73661: LD_VAR 0 5
73665: PUSH
73666: LD_INT 0
73668: EQUAL
73669: IFFALSE 73681
// begin result = 2 ;
73671: LD_ADDR_VAR 0 4
73675: PUSH
73676: LD_INT 2
73678: ST_TO_ADDR
// exit ;
73679: GO 75711
// end ; btype_list_planned = [ ] ;
73681: LD_ADDR_VAR 0 10
73685: PUSH
73686: EMPTY
73687: ST_TO_ADDR
// temp_list = [ GetX ( fact ) , GetY ( fact ) ] ;
73688: LD_ADDR_VAR 0 7
73692: PUSH
73693: LD_VAR 0 1
73697: PPUSH
73698: CALL_OW 250
73702: PUSH
73703: LD_VAR 0 1
73707: PPUSH
73708: CALL_OW 251
73712: PUSH
73713: EMPTY
73714: LIST
73715: LIST
73716: ST_TO_ADDR
// for i = 1 to ai_buildings_locations [ base ] + 0 do
73717: LD_ADDR_VAR 0 6
73721: PUSH
73722: DOUBLE
73723: LD_INT 1
73725: DEC
73726: ST_TO_ADDR
73727: LD_EXP 71
73731: PUSH
73732: LD_VAR 0 5
73736: ARRAY
73737: PUSH
73738: LD_INT 0
73740: PLUS
73741: PUSH
73742: FOR_TO
73743: IFFALSE 74024
// if ai_buildings_locations [ base ] [ i ] [ 4 ] in [ b_ext_computer , b_ext_gun , b_ext_noncombat , b_ext_laser , b_ext_radar , b_ext_radio , b_ext_rocket , b_ext_siberium , b_ext_stitch , b_ext_track ] then
73745: LD_EXP 71
73749: PUSH
73750: LD_VAR 0 5
73754: ARRAY
73755: PUSH
73756: LD_VAR 0 6
73760: ARRAY
73761: PUSH
73762: LD_INT 4
73764: ARRAY
73765: PUSH
73766: LD_INT 24
73768: PUSH
73769: LD_INT 17
73771: PUSH
73772: LD_INT 19
73774: PUSH
73775: LD_INT 25
73777: PUSH
73778: LD_INT 20
73780: PUSH
73781: LD_INT 22
73783: PUSH
73784: LD_INT 18
73786: PUSH
73787: LD_INT 21
73789: PUSH
73790: LD_INT 23
73792: PUSH
73793: LD_INT 16
73795: PUSH
73796: EMPTY
73797: LIST
73798: LIST
73799: LIST
73800: LIST
73801: LIST
73802: LIST
73803: LIST
73804: LIST
73805: LIST
73806: LIST
73807: IN
73808: IFFALSE 74022
// if GetDistXY ( ai_buildings_locations [ base ] [ i ] [ 1 ] , ai_buildings_locations [ base ] [ i ] [ 2 ] , temp_list [ 1 ] , temp_list [ 2 ] ) <= 4 then
73810: LD_EXP 71
73814: PUSH
73815: LD_VAR 0 5
73819: ARRAY
73820: PUSH
73821: LD_VAR 0 6
73825: ARRAY
73826: PUSH
73827: LD_INT 1
73829: ARRAY
73830: PPUSH
73831: LD_EXP 71
73835: PUSH
73836: LD_VAR 0 5
73840: ARRAY
73841: PUSH
73842: LD_VAR 0 6
73846: ARRAY
73847: PUSH
73848: LD_INT 2
73850: ARRAY
73851: PPUSH
73852: LD_VAR 0 7
73856: PUSH
73857: LD_INT 1
73859: ARRAY
73860: PPUSH
73861: LD_VAR 0 7
73865: PUSH
73866: LD_INT 2
73868: ARRAY
73869: PPUSH
73870: CALL_OW 298
73874: PUSH
73875: LD_INT 4
73877: LESSEQUAL
73878: IFFALSE 74022
// begin btype_list_planned = btype_list_planned ^ ai_buildings_locations [ base ] [ i ] [ 4 ] ;
73880: LD_ADDR_VAR 0 10
73884: PUSH
73885: LD_VAR 0 10
73889: PUSH
73890: LD_EXP 71
73894: PUSH
73895: LD_VAR 0 5
73899: ARRAY
73900: PUSH
73901: LD_VAR 0 6
73905: ARRAY
73906: PUSH
73907: LD_INT 4
73909: ARRAY
73910: ADD
73911: ST_TO_ADDR
// un = HexInfo ( ai_buildings_locations [ base ] [ i ] [ 1 ] , ai_buildings_locations [ base ] [ i ] [ 2 ] ) ;
73912: LD_ADDR_VAR 0 8
73916: PUSH
73917: LD_EXP 71
73921: PUSH
73922: LD_VAR 0 5
73926: ARRAY
73927: PUSH
73928: LD_VAR 0 6
73932: ARRAY
73933: PUSH
73934: LD_INT 1
73936: ARRAY
73937: PPUSH
73938: LD_EXP 71
73942: PUSH
73943: LD_VAR 0 5
73947: ARRAY
73948: PUSH
73949: LD_VAR 0 6
73953: ARRAY
73954: PUSH
73955: LD_INT 2
73957: ARRAY
73958: PPUSH
73959: CALL_OW 428
73963: ST_TO_ADDR
// if un > 0 and GetType ( un ) = unit_building and not IsConstructed ( un ) then
73964: LD_VAR 0 8
73968: PUSH
73969: LD_INT 0
73971: GREATER
73972: PUSH
73973: LD_VAR 0 8
73977: PPUSH
73978: CALL_OW 247
73982: PUSH
73983: LD_INT 3
73985: EQUAL
73986: AND
73987: PUSH
73988: LD_VAR 0 8
73992: PPUSH
73993: CALL_OW 304
73997: NOT
73998: AND
73999: IFFALSE 74022
// btype_list_exists = btype_list_exists ^ GetBType ( un ) ;
74001: LD_ADDR_VAR 0 11
74005: PUSH
74006: LD_VAR 0 11
74010: PUSH
74011: LD_VAR 0 8
74015: PPUSH
74016: CALL_OW 266
74020: ADD
74021: ST_TO_ADDR
// end ;
74022: GO 73742
74024: POP
74025: POP
// currently_needed = [ ] ;
74026: LD_ADDR_VAR 0 15
74030: PUSH
74031: EMPTY
74032: ST_TO_ADDR
// case weapon of ar_cargo_bay , ru_cargo_bay , us_cargo_bay , ru_crane , us_crane , ru_bulldozer , us_bulldozer :
74033: LD_VAR 0 2
74037: PUSH
74038: LD_INT 32
74040: DOUBLE
74041: EQUAL
74042: IFTRUE 74082
74044: LD_INT 51
74046: DOUBLE
74047: EQUAL
74048: IFTRUE 74082
74050: LD_INT 12
74052: DOUBLE
74053: EQUAL
74054: IFTRUE 74082
74056: LD_INT 52
74058: DOUBLE
74059: EQUAL
74060: IFTRUE 74082
74062: LD_INT 13
74064: DOUBLE
74065: EQUAL
74066: IFTRUE 74082
74068: LD_INT 53
74070: DOUBLE
74071: EQUAL
74072: IFTRUE 74082
74074: LD_INT 14
74076: DOUBLE
74077: EQUAL
74078: IFTRUE 74082
74080: GO 74316
74082: POP
// begin if ( ( b_ext_noncombat in btype_list_exists and ( b_ext_computer in btype_list_exists or b_ext_radar in btype_list_exists ) ) or ( GetBaseNation ( base ) = nation_arabian and b_ext_stitch in btype_list_exists ) ) and b_ext_siberium in btype_list_exists then
74083: LD_INT 19
74085: PUSH
74086: LD_VAR 0 11
74090: IN
74091: PUSH
74092: LD_INT 24
74094: PUSH
74095: LD_VAR 0 11
74099: IN
74100: PUSH
74101: LD_INT 20
74103: PUSH
74104: LD_VAR 0 11
74108: IN
74109: OR
74110: AND
74111: PUSH
74112: LD_VAR 0 5
74116: PPUSH
74117: CALL 40548 0 1
74121: PUSH
74122: LD_INT 2
74124: EQUAL
74125: PUSH
74126: LD_INT 23
74128: PUSH
74129: LD_VAR 0 11
74133: IN
74134: AND
74135: OR
74136: PUSH
74137: LD_INT 21
74139: PUSH
74140: LD_VAR 0 11
74144: IN
74145: AND
74146: IFFALSE 74160
// begin result = 1 ;
74148: LD_ADDR_VAR 0 4
74152: PUSH
74153: LD_INT 1
74155: ST_TO_ADDR
// exit ;
74156: GO 75711
// end else
74158: GO 74314
// begin if GetBaseNation ( base ) = nation_arabian then
74160: LD_VAR 0 5
74164: PPUSH
74165: CALL 40548 0 1
74169: PUSH
74170: LD_INT 2
74172: EQUAL
74173: IFFALSE 74210
// begin if not b_ext_stitch in btype_list_planned then
74175: LD_INT 23
74177: PUSH
74178: LD_VAR 0 10
74182: IN
74183: NOT
74184: IFFALSE 74197
// currently_needed = [ b_ext_stitch ] ;
74186: LD_ADDR_VAR 0 15
74190: PUSH
74191: LD_INT 23
74193: PUSH
74194: EMPTY
74195: LIST
74196: ST_TO_ADDR
// all_needed = [ b_ext_stitch ] ;
74197: LD_ADDR_VAR 0 14
74201: PUSH
74202: LD_INT 23
74204: PUSH
74205: EMPTY
74206: LIST
74207: ST_TO_ADDR
// end else
74208: GO 74275
// begin if not b_ext_noncombat in btype_list_planned then
74210: LD_INT 19
74212: PUSH
74213: LD_VAR 0 10
74217: IN
74218: NOT
74219: IFFALSE 74235
// currently_needed = currently_needed ^ b_ext_noncombat ;
74221: LD_ADDR_VAR 0 15
74225: PUSH
74226: LD_VAR 0 15
74230: PUSH
74231: LD_INT 19
74233: ADD
74234: ST_TO_ADDR
// if not b_ext_computer in btype_list_planned then
74235: LD_INT 24
74237: PUSH
74238: LD_VAR 0 10
74242: IN
74243: NOT
74244: IFFALSE 74260
// currently_needed = currently_needed ^ b_ext_computer ;
74246: LD_ADDR_VAR 0 15
74250: PUSH
74251: LD_VAR 0 15
74255: PUSH
74256: LD_INT 24
74258: ADD
74259: ST_TO_ADDR
// all_needed = [ b_ext_noncombat , b_ext_computer ] ;
74260: LD_ADDR_VAR 0 14
74264: PUSH
74265: LD_INT 19
74267: PUSH
74268: LD_INT 24
74270: PUSH
74271: EMPTY
74272: LIST
74273: LIST
74274: ST_TO_ADDR
// end ; if not b_ext_siberium in btype_list_planned then
74275: LD_INT 21
74277: PUSH
74278: LD_VAR 0 10
74282: IN
74283: NOT
74284: IFFALSE 74300
// currently_needed = currently_needed ^ b_ext_siberium ;
74286: LD_ADDR_VAR 0 15
74290: PUSH
74291: LD_VAR 0 15
74295: PUSH
74296: LD_INT 21
74298: ADD
74299: ST_TO_ADDR
// all_needed = all_needed ^ b_ext_siberium ;
74300: LD_ADDR_VAR 0 14
74304: PUSH
74305: LD_VAR 0 14
74309: PUSH
74310: LD_INT 21
74312: ADD
74313: ST_TO_ADDR
// end ; end ; us_rocket_launcher , ru_rocket_launcher , ru_rocket , ar_rocket_launcher :
74314: GO 74801
74316: LD_INT 7
74318: DOUBLE
74319: EQUAL
74320: IFTRUE 74342
74322: LD_INT 45
74324: DOUBLE
74325: EQUAL
74326: IFTRUE 74342
74328: LD_INT 47
74330: DOUBLE
74331: EQUAL
74332: IFTRUE 74342
74334: LD_INT 28
74336: DOUBLE
74337: EQUAL
74338: IFTRUE 74342
74340: GO 74400
74342: POP
// begin if b_ext_rocket in btype_list_exists then
74343: LD_INT 18
74345: PUSH
74346: LD_VAR 0 11
74350: IN
74351: IFFALSE 74365
// begin result = 1 ;
74353: LD_ADDR_VAR 0 4
74357: PUSH
74358: LD_INT 1
74360: ST_TO_ADDR
// exit ;
74361: GO 75711
// end else
74363: GO 74398
// begin if not b_ext_rocket in btype_list_planned then
74365: LD_INT 18
74367: PUSH
74368: LD_VAR 0 10
74372: IN
74373: NOT
74374: IFFALSE 74387
// currently_needed = [ b_ext_rocket ] ;
74376: LD_ADDR_VAR 0 15
74380: PUSH
74381: LD_INT 18
74383: PUSH
74384: EMPTY
74385: LIST
74386: ST_TO_ADDR
// all_needed = [ b_ext_rocket ] ;
74387: LD_ADDR_VAR 0 14
74391: PUSH
74392: LD_INT 18
74394: PUSH
74395: EMPTY
74396: LIST
74397: ST_TO_ADDR
// end ; end ; us_light_gun , us_double_gun , us_heavy_gun , ru_gun , ru_heavy_gun , ar_light_gun , ar_gun :
74398: GO 74801
74400: LD_INT 3
74402: DOUBLE
74403: EQUAL
74404: IFTRUE 74444
74406: LD_INT 5
74408: DOUBLE
74409: EQUAL
74410: IFTRUE 74444
74412: LD_INT 6
74414: DOUBLE
74415: EQUAL
74416: IFTRUE 74444
74418: LD_INT 44
74420: DOUBLE
74421: EQUAL
74422: IFTRUE 74444
74424: LD_INT 46
74426: DOUBLE
74427: EQUAL
74428: IFTRUE 74444
74430: LD_INT 23
74432: DOUBLE
74433: EQUAL
74434: IFTRUE 74444
74436: LD_INT 27
74438: DOUBLE
74439: EQUAL
74440: IFTRUE 74444
74442: GO 74502
74444: POP
// begin if b_ext_gun in btype_list_exists then
74445: LD_INT 17
74447: PUSH
74448: LD_VAR 0 11
74452: IN
74453: IFFALSE 74467
// begin result = 1 ;
74455: LD_ADDR_VAR 0 4
74459: PUSH
74460: LD_INT 1
74462: ST_TO_ADDR
// exit ;
74463: GO 75711
// end else
74465: GO 74500
// begin if not b_ext_gun in btype_list_planned then
74467: LD_INT 17
74469: PUSH
74470: LD_VAR 0 10
74474: IN
74475: NOT
74476: IFFALSE 74489
// currently_needed = [ b_ext_gun ] ;
74478: LD_ADDR_VAR 0 15
74482: PUSH
74483: LD_INT 17
74485: PUSH
74486: EMPTY
74487: LIST
74488: ST_TO_ADDR
// all_needed = [ b_ext_gun ] ;
74489: LD_ADDR_VAR 0 14
74493: PUSH
74494: LD_INT 17
74496: PUSH
74497: EMPTY
74498: LIST
74499: ST_TO_ADDR
// end ; end ; us_laser , us_double_laser :
74500: GO 74801
74502: LD_INT 9
74504: DOUBLE
74505: EQUAL
74506: IFTRUE 74516
74508: LD_INT 10
74510: DOUBLE
74511: EQUAL
74512: IFTRUE 74516
74514: GO 74574
74516: POP
// begin if b_ext_laser in btype_list_exists then
74517: LD_INT 25
74519: PUSH
74520: LD_VAR 0 11
74524: IN
74525: IFFALSE 74539
// begin result = 1 ;
74527: LD_ADDR_VAR 0 4
74531: PUSH
74532: LD_INT 1
74534: ST_TO_ADDR
// exit ;
74535: GO 75711
// end else
74537: GO 74572
// begin if not b_ext_laser in btype_list_planned then
74539: LD_INT 25
74541: PUSH
74542: LD_VAR 0 10
74546: IN
74547: NOT
74548: IFFALSE 74561
// currently_needed = [ b_ext_laser ] ;
74550: LD_ADDR_VAR 0 15
74554: PUSH
74555: LD_INT 25
74557: PUSH
74558: EMPTY
74559: LIST
74560: ST_TO_ADDR
// all_needed = [ b_ext_laser ] ;
74561: LD_ADDR_VAR 0 14
74565: PUSH
74566: LD_INT 25
74568: PUSH
74569: EMPTY
74570: LIST
74571: ST_TO_ADDR
// end ; end ; us_radar , ar_radar , ar_control_tower :
74572: GO 74801
74574: LD_INT 11
74576: DOUBLE
74577: EQUAL
74578: IFTRUE 74594
74580: LD_INT 30
74582: DOUBLE
74583: EQUAL
74584: IFTRUE 74594
74586: LD_INT 31
74588: DOUBLE
74589: EQUAL
74590: IFTRUE 74594
74592: GO 74652
74594: POP
// begin if b_ext_radar in btype_list_exists then
74595: LD_INT 20
74597: PUSH
74598: LD_VAR 0 11
74602: IN
74603: IFFALSE 74617
// begin result = 1 ;
74605: LD_ADDR_VAR 0 4
74609: PUSH
74610: LD_INT 1
74612: ST_TO_ADDR
// exit ;
74613: GO 75711
// end else
74615: GO 74650
// begin if not b_ext_radar in btype_list_planned then
74617: LD_INT 20
74619: PUSH
74620: LD_VAR 0 10
74624: IN
74625: NOT
74626: IFFALSE 74639
// currently_needed = [ b_ext_radar ] ;
74628: LD_ADDR_VAR 0 15
74632: PUSH
74633: LD_INT 20
74635: PUSH
74636: EMPTY
74637: LIST
74638: ST_TO_ADDR
// all_needed = [ b_ext_radar ] ;
74639: LD_ADDR_VAR 0 14
74643: PUSH
74644: LD_INT 20
74646: PUSH
74647: EMPTY
74648: LIST
74649: ST_TO_ADDR
// end ; end ; ar_flame_thrower :
74650: GO 74801
74652: LD_INT 26
74654: DOUBLE
74655: EQUAL
74656: IFTRUE 74660
74658: GO 74718
74660: POP
// begin if b_ext_stitch in btype_list_exists then
74661: LD_INT 23
74663: PUSH
74664: LD_VAR 0 11
74668: IN
74669: IFFALSE 74683
// begin result = 1 ;
74671: LD_ADDR_VAR 0 4
74675: PUSH
74676: LD_INT 1
74678: ST_TO_ADDR
// exit ;
74679: GO 75711
// end else
74681: GO 74716
// begin if not b_ext_stitch in btype_list_planned then
74683: LD_INT 23
74685: PUSH
74686: LD_VAR 0 10
74690: IN
74691: NOT
74692: IFFALSE 74705
// currently_needed = [ b_ext_stitch ] ;
74694: LD_ADDR_VAR 0 15
74698: PUSH
74699: LD_INT 23
74701: PUSH
74702: EMPTY
74703: LIST
74704: ST_TO_ADDR
// all_needed = [ b_ext_stitch ] ;
74705: LD_ADDR_VAR 0 14
74709: PUSH
74710: LD_INT 23
74712: PUSH
74713: EMPTY
74714: LIST
74715: ST_TO_ADDR
// end ; end ; ar_selfpropelled_bomb , ru_time_lapser :
74716: GO 74801
74718: LD_INT 29
74720: DOUBLE
74721: EQUAL
74722: IFTRUE 74732
74724: LD_INT 49
74726: DOUBLE
74727: EQUAL
74728: IFTRUE 74732
74730: GO 74790
74732: POP
// begin if b_ext_siberium in btype_list_exists then
74733: LD_INT 21
74735: PUSH
74736: LD_VAR 0 11
74740: IN
74741: IFFALSE 74755
// begin result = 1 ;
74743: LD_ADDR_VAR 0 4
74747: PUSH
74748: LD_INT 1
74750: ST_TO_ADDR
// exit ;
74751: GO 75711
// end else
74753: GO 74788
// begin if not b_ext_siberium in btype_list_planned then
74755: LD_INT 21
74757: PUSH
74758: LD_VAR 0 10
74762: IN
74763: NOT
74764: IFFALSE 74777
// currently_needed = [ b_ext_siberium ] ;
74766: LD_ADDR_VAR 0 15
74770: PUSH
74771: LD_INT 21
74773: PUSH
74774: EMPTY
74775: LIST
74776: ST_TO_ADDR
// all_needed = [ b_ext_siberium ] ;
74777: LD_ADDR_VAR 0 14
74781: PUSH
74782: LD_INT 21
74784: PUSH
74785: EMPTY
74786: LIST
74787: ST_TO_ADDR
// end ; end ; else
74788: GO 74801
74790: POP
// begin result = 1 ;
74791: LD_ADDR_VAR 0 4
74795: PUSH
74796: LD_INT 1
74798: ST_TO_ADDR
// exit ;
74799: GO 75711
// end ; end ; if currently_needed = 0 then
74801: LD_VAR 0 15
74805: PUSH
74806: LD_INT 0
74808: EQUAL
74809: IFFALSE 74821
// begin result = 0 ;
74811: LD_ADDR_VAR 0 4
74815: PUSH
74816: LD_INT 0
74818: ST_TO_ADDR
// end else
74819: GO 75711
// begin if ai_engineers [ base ] = 0 then
74821: LD_EXP 52
74825: PUSH
74826: LD_VAR 0 5
74830: ARRAY
74831: PUSH
74832: LD_INT 0
74834: EQUAL
74835: IFFALSE 74847
// begin result = 2 ;
74837: LD_ADDR_VAR 0 4
74841: PUSH
74842: LD_INT 2
74844: ST_TO_ADDR
// exit ;
74845: GO 75711
// end ; fact_ext_replace_loc_list = [ ] ;
74847: LD_ADDR_VAR 0 16
74851: PUSH
74852: EMPTY
74853: ST_TO_ADDR
// for i in ai_fact_extension_replace_locations [ base ] do
74854: LD_ADDR_VAR 0 6
74858: PUSH
74859: LD_EXP 108
74863: PUSH
74864: LD_VAR 0 5
74868: ARRAY
74869: PUSH
74870: FOR_IN
74871: IFFALSE 74927
// if GetDistUnitXY ( fact , i [ 1 ] , i [ 2 ] ) <= 4 then
74873: LD_VAR 0 1
74877: PPUSH
74878: LD_VAR 0 6
74882: PUSH
74883: LD_INT 1
74885: ARRAY
74886: PPUSH
74887: LD_VAR 0 6
74891: PUSH
74892: LD_INT 2
74894: ARRAY
74895: PPUSH
74896: CALL_OW 297
74900: PUSH
74901: LD_INT 4
74903: LESSEQUAL
74904: IFFALSE 74925
// fact_ext_replace_loc_list = fact_ext_replace_loc_list ^ [ i ] ;
74906: LD_ADDR_VAR 0 16
74910: PUSH
74911: LD_VAR 0 16
74915: PUSH
74916: LD_VAR 0 6
74920: PUSH
74921: EMPTY
74922: LIST
74923: ADD
74924: ST_TO_ADDR
74925: GO 74870
74927: POP
74928: POP
// if fact_ext_replace_loc_list = 0 then
74929: LD_VAR 0 16
74933: PUSH
74934: LD_INT 0
74936: EQUAL
74937: IFFALSE 74949
// begin result = 2 ;
74939: LD_ADDR_VAR 0 4
74943: PUSH
74944: LD_INT 2
74946: ST_TO_ADDR
// exit ;
74947: GO 75711
// end ; if not do_something_about_it then
74949: LD_VAR 0 3
74953: NOT
74954: IFFALSE 74958
// exit ;
74956: GO 75711
// temp_list_2 = [ ] ;
74958: LD_ADDR_VAR 0 12
74962: PUSH
74963: EMPTY
74964: ST_TO_ADDR
// for i = 1 to ai_buildings_locations [ base ] + 0 do
74965: LD_ADDR_VAR 0 6
74969: PUSH
74970: DOUBLE
74971: LD_INT 1
74973: DEC
74974: ST_TO_ADDR
74975: LD_EXP 71
74979: PUSH
74980: LD_VAR 0 5
74984: ARRAY
74985: PUSH
74986: LD_INT 0
74988: PLUS
74989: PUSH
74990: FOR_TO
74991: IFFALSE 75064
// if [ ai_buildings_locations [ base ] [ i ] [ 1 ] , ai_buildings_locations [ base ] [ i ] [ 2 ] ] in fact_ext_replace_loc_list then
74993: LD_EXP 71
74997: PUSH
74998: LD_VAR 0 5
75002: ARRAY
75003: PUSH
75004: LD_VAR 0 6
75008: ARRAY
75009: PUSH
75010: LD_INT 1
75012: ARRAY
75013: PUSH
75014: LD_EXP 71
75018: PUSH
75019: LD_VAR 0 5
75023: ARRAY
75024: PUSH
75025: LD_VAR 0 6
75029: ARRAY
75030: PUSH
75031: LD_INT 2
75033: ARRAY
75034: PUSH
75035: EMPTY
75036: LIST
75037: LIST
75038: PUSH
75039: LD_VAR 0 16
75043: IN
75044: IFFALSE 75062
// temp_list_2 = temp_list_2 ^ i ;
75046: LD_ADDR_VAR 0 12
75050: PUSH
75051: LD_VAR 0 12
75055: PUSH
75056: LD_VAR 0 6
75060: ADD
75061: ST_TO_ADDR
75062: GO 74990
75064: POP
75065: POP
// for i in temp_list_2 do
75066: LD_ADDR_VAR 0 6
75070: PUSH
75071: LD_VAR 0 12
75075: PUSH
75076: FOR_IN
75077: IFFALSE 75496
// begin if currently_needed = 0 then
75079: LD_VAR 0 15
75083: PUSH
75084: LD_INT 0
75086: EQUAL
75087: IFFALSE 75091
// break ;
75089: GO 75496
// if not ai_buildings_locations [ base ] [ i ] [ 4 ] in all_needed then
75091: LD_EXP 71
75095: PUSH
75096: LD_VAR 0 5
75100: ARRAY
75101: PUSH
75102: LD_VAR 0 6
75106: ARRAY
75107: PUSH
75108: LD_INT 4
75110: ARRAY
75111: PUSH
75112: LD_VAR 0 14
75116: IN
75117: NOT
75118: IFFALSE 75494
// begin un = HexInfo ( ai_buildings_locations [ base ] [ i ] [ 1 ] , ai_buildings_locations [ base ] [ i ] [ 2 ] ) ;
75120: LD_ADDR_VAR 0 8
75124: PUSH
75125: LD_EXP 71
75129: PUSH
75130: LD_VAR 0 5
75134: ARRAY
75135: PUSH
75136: LD_VAR 0 6
75140: ARRAY
75141: PUSH
75142: LD_INT 1
75144: ARRAY
75145: PPUSH
75146: LD_EXP 71
75150: PUSH
75151: LD_VAR 0 5
75155: ARRAY
75156: PUSH
75157: LD_VAR 0 6
75161: ARRAY
75162: PUSH
75163: LD_INT 2
75165: ARRAY
75166: PPUSH
75167: CALL_OW 428
75171: ST_TO_ADDR
// if un > 0 and GetType ( un ) = unit_building and not IsConstructed ( un ) then
75172: LD_VAR 0 8
75176: PUSH
75177: LD_INT 0
75179: GREATER
75180: PUSH
75181: LD_VAR 0 8
75185: PPUSH
75186: CALL_OW 247
75190: PUSH
75191: LD_INT 3
75193: EQUAL
75194: AND
75195: PUSH
75196: LD_VAR 0 8
75200: PPUSH
75201: CALL_OW 304
75205: NOT
75206: AND
75207: IFFALSE 75476
// begin temp_list = Replace ( ai_buildings_locations [ base ] [ i ] , 4 , currently_needed [ 1 ] ) ;
75209: LD_ADDR_VAR 0 7
75213: PUSH
75214: LD_EXP 71
75218: PUSH
75219: LD_VAR 0 5
75223: ARRAY
75224: PUSH
75225: LD_VAR 0 6
75229: ARRAY
75230: PPUSH
75231: LD_INT 4
75233: PPUSH
75234: LD_VAR 0 15
75238: PUSH
75239: LD_INT 1
75241: ARRAY
75242: PPUSH
75243: CALL_OW 1
75247: ST_TO_ADDR
// temp_list = Replace ( ai_buildings_locations [ base ] , i , temp_list ) ;
75248: LD_ADDR_VAR 0 7
75252: PUSH
75253: LD_EXP 71
75257: PUSH
75258: LD_VAR 0 5
75262: ARRAY
75263: PPUSH
75264: LD_VAR 0 6
75268: PPUSH
75269: LD_VAR 0 7
75273: PPUSH
75274: CALL_OW 1
75278: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list ) ;
75279: LD_ADDR_EXP 71
75283: PUSH
75284: LD_EXP 71
75288: PPUSH
75289: LD_VAR 0 5
75293: PPUSH
75294: LD_VAR 0 7
75298: PPUSH
75299: CALL_OW 1
75303: ST_TO_ADDR
// temp_list = ai_dismantle_these_buildings [ base ] ^ un ;
75304: LD_ADDR_VAR 0 7
75308: PUSH
75309: LD_EXP 109
75313: PUSH
75314: LD_VAR 0 5
75318: ARRAY
75319: PUSH
75320: LD_VAR 0 8
75324: ADD
75325: ST_TO_ADDR
// ai_dismantle_these_buildings = Replace ( ai_dismantle_these_buildings , base , temp_list ) ;
75326: LD_ADDR_EXP 109
75330: PUSH
75331: LD_EXP 109
75335: PPUSH
75336: LD_VAR 0 5
75340: PPUSH
75341: LD_VAR 0 7
75345: PPUSH
75346: CALL_OW 1
75350: ST_TO_ADDR
// if ai_facts_with_ext_rebuild_map < fact then
75351: LD_EXP 119
75355: PUSH
75356: LD_VAR 0 1
75360: LESS
75361: IFFALSE 75385
// ai_facts_with_ext_rebuild_map = Replace ( ai_facts_with_ext_rebuild_map , fact , [ ] ) ;
75363: LD_ADDR_EXP 119
75367: PUSH
75368: LD_EXP 119
75372: PPUSH
75373: LD_VAR 0 1
75377: PPUSH
75378: EMPTY
75379: PPUSH
75380: CALL_OW 1
75384: ST_TO_ADDR
// temp_list = ai_facts_with_ext_rebuild_map [ fact ] ^ [ [ ai_buildings_locations [ base ] [ i ] [ 1 ] , ai_buildings_locations [ base ] [ i ] [ 2 ] ] ] ;
75385: LD_ADDR_VAR 0 7
75389: PUSH
75390: LD_EXP 119
75394: PUSH
75395: LD_VAR 0 1
75399: ARRAY
75400: PUSH
75401: LD_EXP 71
75405: PUSH
75406: LD_VAR 0 5
75410: ARRAY
75411: PUSH
75412: LD_VAR 0 6
75416: ARRAY
75417: PUSH
75418: LD_INT 1
75420: ARRAY
75421: PUSH
75422: LD_EXP 71
75426: PUSH
75427: LD_VAR 0 5
75431: ARRAY
75432: PUSH
75433: LD_VAR 0 6
75437: ARRAY
75438: PUSH
75439: LD_INT 2
75441: ARRAY
75442: PUSH
75443: EMPTY
75444: LIST
75445: LIST
75446: PUSH
75447: EMPTY
75448: LIST
75449: ADD
75450: ST_TO_ADDR
// ai_facts_with_ext_rebuild_map = Replace ( ai_facts_with_ext_rebuild_map , fact , temp_list ) ;
75451: LD_ADDR_EXP 119
75455: PUSH
75456: LD_EXP 119
75460: PPUSH
75461: LD_VAR 0 1
75465: PPUSH
75466: LD_VAR 0 7
75470: PPUSH
75471: CALL_OW 1
75475: ST_TO_ADDR
// end ; currently_needed = Delete ( currently_needed , 1 ) ;
75476: LD_ADDR_VAR 0 15
75480: PUSH
75481: LD_VAR 0 15
75485: PPUSH
75486: LD_INT 1
75488: PPUSH
75489: CALL_OW 3
75493: ST_TO_ADDR
// end ; end ;
75494: GO 75076
75496: POP
75497: POP
// if temp_list_2 >= 2 then
75498: LD_VAR 0 12
75502: PUSH
75503: LD_INT 2
75505: GREATEREQUAL
75506: IFFALSE 75683
// begin temp_list_3 = ai_buildings_locations [ base ] ;
75508: LD_ADDR_VAR 0 13
75512: PUSH
75513: LD_EXP 71
75517: PUSH
75518: LD_VAR 0 5
75522: ARRAY
75523: ST_TO_ADDR
// temp_list = ai_buildings_locations [ base ] [ temp_list_2 [ 1 ] ] ;
75524: LD_ADDR_VAR 0 7
75528: PUSH
75529: LD_EXP 71
75533: PUSH
75534: LD_VAR 0 5
75538: ARRAY
75539: PUSH
75540: LD_VAR 0 12
75544: PUSH
75545: LD_INT 1
75547: ARRAY
75548: ARRAY
75549: ST_TO_ADDR
// for i = 2 to temp_list_2 + 0 do
75550: LD_ADDR_VAR 0 6
75554: PUSH
75555: DOUBLE
75556: LD_INT 2
75558: DEC
75559: ST_TO_ADDR
75560: LD_VAR 0 12
75564: PUSH
75565: LD_INT 0
75567: PLUS
75568: PUSH
75569: FOR_TO
75570: IFFALSE 75621
// begin temp_list_3 = Replace ( temp_list_3 , temp_list_2 [ i - 1 ] , temp_list_3 [ temp_list_2 [ i ] ] ) ;
75572: LD_ADDR_VAR 0 13
75576: PUSH
75577: LD_VAR 0 13
75581: PPUSH
75582: LD_VAR 0 12
75586: PUSH
75587: LD_VAR 0 6
75591: PUSH
75592: LD_INT 1
75594: MINUS
75595: ARRAY
75596: PPUSH
75597: LD_VAR 0 13
75601: PUSH
75602: LD_VAR 0 12
75606: PUSH
75607: LD_VAR 0 6
75611: ARRAY
75612: ARRAY
75613: PPUSH
75614: CALL_OW 1
75618: ST_TO_ADDR
// end ;
75619: GO 75569
75621: POP
75622: POP
// temp_list_3 = Replace ( temp_list_3 , temp_list_2 [ temp_list_2 + 0 ] , temp_list ) ;
75623: LD_ADDR_VAR 0 13
75627: PUSH
75628: LD_VAR 0 13
75632: PPUSH
75633: LD_VAR 0 12
75637: PUSH
75638: LD_VAR 0 12
75642: PUSH
75643: LD_INT 0
75645: PLUS
75646: ARRAY
75647: PPUSH
75648: LD_VAR 0 7
75652: PPUSH
75653: CALL_OW 1
75657: ST_TO_ADDR
// ai_buildings_locations = Replace ( ai_buildings_locations , base , temp_list_3 ) ;
75658: LD_ADDR_EXP 71
75662: PUSH
75663: LD_EXP 71
75667: PPUSH
75668: LD_VAR 0 5
75672: PPUSH
75673: LD_VAR 0 13
75677: PPUSH
75678: CALL_OW 1
75682: ST_TO_ADDR
// end ; if currently_needed = 0 then
75683: LD_VAR 0 15
75687: PUSH
75688: LD_INT 0
75690: EQUAL
75691: IFFALSE 75703
// result = 0 else
75693: LD_ADDR_VAR 0 4
75697: PUSH
75698: LD_INT 0
75700: ST_TO_ADDR
75701: GO 75711
// result = 2 ;
75703: LD_ADDR_VAR 0 4
75707: PUSH
75708: LD_INT 2
75710: ST_TO_ADDR
// end ; end ;
75711: LD_VAR 0 4
75715: RET
// on VehicleCaptured ( new_identifier , old_identifier , old_side , capturing_unit ) do var temp_list , base ;
75716: LD_INT 0
75718: PPUSH
75719: PPUSH
// begin if old_side = you then
75720: LD_VAR 0 3
75724: PUSH
75725: LD_EXP 2
75729: EQUAL
75730: IFFALSE 75734
// exit ;
75732: GO 75765
// for base in ai_bases do
75734: LD_ADDR_VAR 0 6
75738: PUSH
75739: LD_EXP 49
75743: PUSH
75744: FOR_IN
75745: IFFALSE 75763
// RemoveVehicleFromVariables ( base , old_identifier ) ;
75747: LD_VAR 0 6
75751: PPUSH
75752: LD_VAR 0 2
75756: PPUSH
75757: CALL 38391 0 2
75761: GO 75744
75763: POP
75764: POP
// end ;
75765: PPOPN 6
75767: END
// on VehicleConstructed ( vehicle , factory ) do var side , temp_list , base , un , i , j , temp ;
75768: LD_INT 0
75770: PPUSH
75771: PPUSH
75772: PPUSH
75773: PPUSH
75774: PPUSH
75775: PPUSH
75776: PPUSH
// begin side = GetSide ( vehicle ) ;
75777: LD_ADDR_VAR 0 3
75781: PUSH
75782: LD_VAR 0 1
75786: PPUSH
75787: CALL_OW 255
75791: ST_TO_ADDR
// if side = you then
75792: LD_VAR 0 3
75796: PUSH
75797: LD_EXP 2
75801: EQUAL
75802: IFFALSE 75806
// begin exit ;
75804: GO 76907
// end ; if GetEngine ( vehicle ) = engine_combustion and not GetWeapon ( vehicle ) in [ ru_crane , us_crane ] then
75806: LD_VAR 0 1
75810: PPUSH
75811: CALL_OW 262
75815: PUSH
75816: LD_INT 1
75818: EQUAL
75819: PUSH
75820: LD_VAR 0 1
75824: PPUSH
75825: CALL_OW 264
75829: PUSH
75830: LD_INT 52
75832: PUSH
75833: LD_INT 13
75835: PUSH
75836: EMPTY
75837: LIST
75838: LIST
75839: IN
75840: NOT
75841: AND
75842: IFFALSE 76095
// if GetChassis ( vehicle ) = ar_hovercraft then
75844: LD_VAR 0 1
75848: PPUSH
75849: CALL_OW 265
75853: PUSH
75854: LD_INT 11
75856: EQUAL
75857: IFFALSE 75929
// begin for j = 1 to ai_hovercrafts do
75859: LD_ADDR_VAR 0 8
75863: PUSH
75864: DOUBLE
75865: LD_INT 1
75867: DEC
75868: ST_TO_ADDR
75869: LD_EXP 148
75873: PUSH
75874: FOR_TO
75875: IFFALSE 75925
// if ai_hovercrafts [ j ] = - 1 then
75877: LD_EXP 148
75881: PUSH
75882: LD_VAR 0 8
75886: ARRAY
75887: PUSH
75888: LD_INT 1
75890: NEG
75891: EQUAL
75892: IFFALSE 75923
// begin ai_hovercrafts = Replace ( ai_hovercrafts , j , vehicle ) ;
75894: LD_ADDR_EXP 148
75898: PUSH
75899: LD_EXP 148
75903: PPUSH
75904: LD_VAR 0 8
75908: PPUSH
75909: LD_VAR 0 1
75913: PPUSH
75914: CALL_OW 1
75918: ST_TO_ADDR
// exit ;
75919: POP
75920: POP
75921: GO 76907
// end ;
75923: GO 75874
75925: POP
75926: POP
// end else
75927: GO 76095
// begin i = [ 3 , 0 , 2 , 0 , 0 , 0 , 0 , 1 ] [ side ] ;
75929: LD_ADDR_VAR 0 7
75933: PUSH
75934: LD_INT 3
75936: PUSH
75937: LD_INT 0
75939: PUSH
75940: LD_INT 2
75942: PUSH
75943: LD_INT 0
75945: PUSH
75946: LD_INT 0
75948: PUSH
75949: LD_INT 0
75951: PUSH
75952: LD_INT 0
75954: PUSH
75955: LD_INT 1
75957: PUSH
75958: EMPTY
75959: LIST
75960: LIST
75961: LIST
75962: LIST
75963: LIST
75964: LIST
75965: LIST
75966: LIST
75967: PUSH
75968: LD_VAR 0 3
75972: ARRAY
75973: ST_TO_ADDR
// for j = 1 to mb_vehicles [ i ] do
75974: LD_ADDR_VAR 0 8
75978: PUSH
75979: DOUBLE
75980: LD_INT 1
75982: DEC
75983: ST_TO_ADDR
75984: LD_EXP 164
75988: PUSH
75989: LD_VAR 0 7
75993: ARRAY
75994: PUSH
75995: FOR_TO
75996: IFFALSE 76093
// if mb_vehicles [ i ] [ j ] = - 1 then
75998: LD_EXP 164
76002: PUSH
76003: LD_VAR 0 7
76007: ARRAY
76008: PUSH
76009: LD_VAR 0 8
76013: ARRAY
76014: PUSH
76015: LD_INT 1
76017: NEG
76018: EQUAL
76019: IFFALSE 76091
// begin temp_list = mb_vehicles [ i ] ;
76021: LD_ADDR_VAR 0 4
76025: PUSH
76026: LD_EXP 164
76030: PUSH
76031: LD_VAR 0 7
76035: ARRAY
76036: ST_TO_ADDR
// temp_list = Replace ( temp_list , j , vehicle ) ;
76037: LD_ADDR_VAR 0 4
76041: PUSH
76042: LD_VAR 0 4
76046: PPUSH
76047: LD_VAR 0 8
76051: PPUSH
76052: LD_VAR 0 1
76056: PPUSH
76057: CALL_OW 1
76061: ST_TO_ADDR
// mb_vehicles = Replace ( mb_vehicles , i , temp_list ) ;
76062: LD_ADDR_EXP 164
76066: PUSH
76067: LD_EXP 164
76071: PPUSH
76072: LD_VAR 0 7
76076: PPUSH
76077: LD_VAR 0 4
76081: PPUSH
76082: CALL_OW 1
76086: ST_TO_ADDR
// exit ;
76087: POP
76088: POP
76089: GO 76907
// end ;
76091: GO 75995
76093: POP
76094: POP
// end ; base = FindBase ( vehicle ) ;
76095: LD_ADDR_VAR 0 5
76099: PUSH
76100: LD_VAR 0 1
76104: PPUSH
76105: CALL 40619 0 1
76109: ST_TO_ADDR
// if base = 0 then
76110: LD_VAR 0 5
76114: PUSH
76115: LD_INT 0
76117: EQUAL
76118: IFFALSE 76122
// exit ;
76120: GO 76907
// if GetSide ( vehicle ) = 1 then
76122: LD_VAR 0 1
76126: PPUSH
76127: CALL_OW 255
76131: PUSH
76132: LD_INT 1
76134: EQUAL
76135: IFFALSE 76149
// DoNotAttack ( 4 , vehicle ) ;
76137: LD_INT 4
76139: PPUSH
76140: LD_VAR 0 1
76144: PPUSH
76145: CALL_OW 471
// if base = 3 then
76149: LD_VAR 0 5
76153: PUSH
76154: LD_INT 3
76156: EQUAL
76157: IFFALSE 76169
// temp = 2 else
76159: LD_ADDR_VAR 0 9
76163: PUSH
76164: LD_INT 2
76166: ST_TO_ADDR
76167: GO 76197
// if base = 2 then
76169: LD_VAR 0 5
76173: PUSH
76174: LD_INT 2
76176: EQUAL
76177: IFFALSE 76189
// temp = 0 else
76179: LD_ADDR_VAR 0 9
76183: PUSH
76184: LD_INT 0
76186: ST_TO_ADDR
76187: GO 76197
// temp = 1 ;
76189: LD_ADDR_VAR 0 9
76193: PUSH
76194: LD_INT 1
76196: ST_TO_ADDR
// if temp > 0 then
76197: LD_VAR 0 9
76201: PUSH
76202: LD_INT 0
76204: GREATER
76205: IFFALSE 76475
// if - 1 in ai_patrol [ temp ] and not GetWeapon ( vehicle ) in [ us_crane , ru_siberium_rocket ] then
76207: LD_INT 1
76209: NEG
76210: PUSH
76211: LD_EXP 183
76215: PUSH
76216: LD_VAR 0 9
76220: ARRAY
76221: IN
76222: PUSH
76223: LD_VAR 0 1
76227: PPUSH
76228: CALL_OW 264
76232: PUSH
76233: LD_INT 13
76235: PUSH
76236: LD_INT 48
76238: PUSH
76239: EMPTY
76240: LIST
76241: LIST
76242: IN
76243: NOT
76244: AND
76245: IFFALSE 76475
// for j = 1 to ai_patrol [ temp ] do
76247: LD_ADDR_VAR 0 8
76251: PUSH
76252: DOUBLE
76253: LD_INT 1
76255: DEC
76256: ST_TO_ADDR
76257: LD_EXP 183
76261: PUSH
76262: LD_VAR 0 9
76266: ARRAY
76267: PUSH
76268: FOR_TO
76269: IFFALSE 76473
// if ai_patrol [ temp ] [ j ] = - 1 then
76271: LD_EXP 183
76275: PUSH
76276: LD_VAR 0 9
76280: ARRAY
76281: PUSH
76282: LD_VAR 0 8
76286: ARRAY
76287: PUSH
76288: LD_INT 1
76290: NEG
76291: EQUAL
76292: IFFALSE 76471
// if ai_vehicles_defend [ base ] >= MaxNumWarVehicles [ base ] or GetWeapon ( vehicle ) = ar_selfpropelled_bomb then
76294: LD_EXP 77
76298: PUSH
76299: LD_VAR 0 5
76303: ARRAY
76304: PUSH
76305: LD_EXP 133
76309: PUSH
76310: LD_VAR 0 5
76314: ARRAY
76315: GREATEREQUAL
76316: PUSH
76317: LD_VAR 0 1
76321: PPUSH
76322: CALL_OW 264
76326: PUSH
76327: LD_INT 29
76329: EQUAL
76330: OR
76331: IFFALSE 76405
// begin temp_list = ai_patrol [ temp ] ;
76333: LD_ADDR_VAR 0 4
76337: PUSH
76338: LD_EXP 183
76342: PUSH
76343: LD_VAR 0 9
76347: ARRAY
76348: ST_TO_ADDR
// temp_list = Replace ( temp_list , j , vehicle ) ;
76349: LD_ADDR_VAR 0 4
76353: PUSH
76354: LD_VAR 0 4
76358: PPUSH
76359: LD_VAR 0 8
76363: PPUSH
76364: LD_VAR 0 1
76368: PPUSH
76369: CALL_OW 1
76373: ST_TO_ADDR
// ai_patrol = Replace ( ai_patrol , temp , temp_list ) ;
76374: LD_ADDR_EXP 183
76378: PUSH
76379: LD_EXP 183
76383: PPUSH
76384: LD_VAR 0 9
76388: PPUSH
76389: LD_VAR 0 4
76393: PPUSH
76394: CALL_OW 1
76398: ST_TO_ADDR
// exit ;
76399: POP
76400: POP
76401: GO 76907
// end else
76403: GO 76471
// begin temp_list = ai_patrol [ temp ] ;
76405: LD_ADDR_VAR 0 4
76409: PUSH
76410: LD_EXP 183
76414: PUSH
76415: LD_VAR 0 9
76419: ARRAY
76420: ST_TO_ADDR
// temp_list = Replace ( temp_list , j , 0 ) ;
76421: LD_ADDR_VAR 0 4
76425: PUSH
76426: LD_VAR 0 4
76430: PPUSH
76431: LD_VAR 0 8
76435: PPUSH
76436: LD_INT 0
76438: PPUSH
76439: CALL_OW 1
76443: ST_TO_ADDR
// ai_patrol = Replace ( ai_patrol , temp , temp_list ) ;
76444: LD_ADDR_EXP 183
76448: PUSH
76449: LD_EXP 183
76453: PPUSH
76454: LD_VAR 0 9
76458: PPUSH
76459: LD_VAR 0 4
76463: PPUSH
76464: CALL_OW 1
76468: ST_TO_ADDR
// break ;
76469: GO 76473
// end ;
76471: GO 76268
76473: POP
76474: POP
// case GetWeapon ( vehicle ) of us_cargo_bay , ar_cargo_bay , ru_cargo_bay :
76475: LD_VAR 0 1
76479: PPUSH
76480: CALL_OW 264
76484: PUSH
76485: LD_INT 12
76487: DOUBLE
76488: EQUAL
76489: IFTRUE 76505
76491: LD_INT 32
76493: DOUBLE
76494: EQUAL
76495: IFTRUE 76505
76497: LD_INT 51
76499: DOUBLE
76500: EQUAL
76501: IFTRUE 76505
76503: GO 76556
76505: POP
// begin ai_cargo_bay = Replace ( ai_cargo_bay , base , vehicle ) ;
76506: LD_ADDR_EXP 95
76510: PUSH
76511: LD_EXP 95
76515: PPUSH
76516: LD_VAR 0 5
76520: PPUSH
76521: LD_VAR 0 1
76525: PPUSH
76526: CALL_OW 1
76530: ST_TO_ADDR
// ai_cargo_bay_under_construction = Replace ( ai_cargo_bay_under_construction , base , false ) ;
76531: LD_ADDR_EXP 96
76535: PUSH
76536: LD_EXP 96
76540: PPUSH
76541: LD_VAR 0 5
76545: PPUSH
76546: LD_INT 0
76548: PPUSH
76549: CALL_OW 1
76553: ST_TO_ADDR
// end ; us_crane , ru_crane :
76554: GO 76907
76556: LD_INT 13
76558: DOUBLE
76559: EQUAL
76560: IFTRUE 76570
76562: LD_INT 52
76564: DOUBLE
76565: EQUAL
76566: IFTRUE 76570
76568: GO 76621
76570: POP
// begin ai_crane = Replace ( ai_crane , base , vehicle ) ;
76571: LD_ADDR_EXP 98
76575: PUSH
76576: LD_EXP 98
76580: PPUSH
76581: LD_VAR 0 5
76585: PPUSH
76586: LD_VAR 0 1
76590: PPUSH
76591: CALL_OW 1
76595: ST_TO_ADDR
// ai_crane_under_construction = Replace ( ai_crane_under_construction , base , false ) ;
76596: LD_ADDR_EXP 99
76600: PUSH
76601: LD_EXP 99
76605: PPUSH
76606: LD_VAR 0 5
76610: PPUSH
76611: LD_INT 0
76613: PPUSH
76614: CALL_OW 1
76618: ST_TO_ADDR
// end ; ar_control_tower :
76619: GO 76907
76621: LD_INT 31
76623: DOUBLE
76624: EQUAL
76625: IFTRUE 76629
76627: GO 76679
76629: POP
// begin temp_list = ai_control_tower_vehicles [ base ] ^ vehicle ;
76630: LD_ADDR_VAR 0 4
76634: PUSH
76635: LD_EXP 105
76639: PUSH
76640: LD_VAR 0 5
76644: ARRAY
76645: PUSH
76646: LD_VAR 0 1
76650: ADD
76651: ST_TO_ADDR
// ai_control_tower_vehicles = Replace ( ai_control_tower_vehicles , base , temp_list ) ;
76652: LD_ADDR_EXP 105
76656: PUSH
76657: LD_EXP 105
76661: PPUSH
76662: LD_VAR 0 5
76666: PPUSH
76667: LD_VAR 0 4
76671: PPUSH
76672: CALL_OW 1
76676: ST_TO_ADDR
// end ; ar_selfpropelled_bomb :
76677: GO 76907
76679: LD_INT 29
76681: DOUBLE
76682: EQUAL
76683: IFTRUE 76687
76685: GO 76737
76687: POP
// begin temp_list = ai_implosion_vehicles [ base ] ^ vehicle ;
76688: LD_ADDR_VAR 0 4
76692: PUSH
76693: LD_EXP 111
76697: PUSH
76698: LD_VAR 0 5
76702: ARRAY
76703: PUSH
76704: LD_VAR 0 1
76708: ADD
76709: ST_TO_ADDR
// ai_implosion_vehicles = Replace ( ai_implosion_vehicles , base , temp_list ) ;
76710: LD_ADDR_EXP 111
76714: PUSH
76715: LD_EXP 111
76719: PPUSH
76720: LD_VAR 0 5
76724: PPUSH
76725: LD_VAR 0 4
76729: PPUSH
76730: CALL_OW 1
76734: ST_TO_ADDR
// end ; ru_time_lapser :
76735: GO 76907
76737: LD_INT 49
76739: DOUBLE
76740: EQUAL
76741: IFTRUE 76745
76743: GO 76795
76745: POP
// begin temp_list = ai_taufield_vehicles [ base ] ^ vehicle ;
76746: LD_ADDR_VAR 0 4
76750: PUSH
76751: LD_EXP 110
76755: PUSH
76756: LD_VAR 0 5
76760: ARRAY
76761: PUSH
76762: LD_VAR 0 1
76766: ADD
76767: ST_TO_ADDR
// ai_taufield_vehicles = Replace ( ai_taufield_vehicles , base , temp_list ) ;
76768: LD_ADDR_EXP 110
76772: PUSH
76773: LD_EXP 110
76777: PPUSH
76778: LD_VAR 0 5
76782: PPUSH
76783: LD_VAR 0 4
76787: PPUSH
76788: CALL_OW 1
76792: ST_TO_ADDR
// end ; ru_siberium_rocket , us_siberium_rocket :
76793: GO 76907
76795: LD_INT 48
76797: DOUBLE
76798: EQUAL
76799: IFTRUE 76809
76801: LD_INT 8
76803: DOUBLE
76804: EQUAL
76805: IFTRUE 76809
76807: GO 76859
76809: POP
// begin temp_list = ai_sib_bomb_vehicles [ base ] ^ vehicle ;
76810: LD_ADDR_VAR 0 4
76814: PUSH
76815: LD_EXP 117
76819: PUSH
76820: LD_VAR 0 5
76824: ARRAY
76825: PUSH
76826: LD_VAR 0 1
76830: ADD
76831: ST_TO_ADDR
// ai_sib_bomb_vehicles = Replace ( ai_sib_bomb_vehicles , base , temp_list ) ;
76832: LD_ADDR_EXP 117
76836: PUSH
76837: LD_EXP 117
76841: PPUSH
76842: LD_VAR 0 5
76846: PPUSH
76847: LD_VAR 0 4
76851: PPUSH
76852: CALL_OW 1
76856: ST_TO_ADDR
// end ; else
76857: GO 76907
76859: POP
// begin temp_list = ai_vehicles_defend [ base ] ^ vehicle ;
76860: LD_ADDR_VAR 0 4
76864: PUSH
76865: LD_EXP 77
76869: PUSH
76870: LD_VAR 0 5
76874: ARRAY
76875: PUSH
76876: LD_VAR 0 1
76880: ADD
76881: ST_TO_ADDR
// ai_vehicles_defend = Replace ( ai_vehicles_defend , base , temp_list ) ;
76882: LD_ADDR_EXP 77
76886: PUSH
76887: LD_EXP 77
76891: PPUSH
76892: LD_VAR 0 5
76896: PPUSH
76897: LD_VAR 0 4
76901: PPUSH
76902: CALL_OW 1
76906: ST_TO_ADDR
// end ; end ; end ;
76907: PPOPN 9
76909: END
// on BehemothConstructed ( behe ) do var side , base , temp_list , i ;
76910: LD_INT 0
76912: PPUSH
76913: PPUSH
76914: PPUSH
76915: PPUSH
// begin side = GetSide ( behe ) ;
76916: LD_ADDR_VAR 0 2
76920: PUSH
76921: LD_VAR 0 1
76925: PPUSH
76926: CALL_OW 255
76930: ST_TO_ADDR
// if side = you then
76931: LD_VAR 0 2
76935: PUSH
76936: LD_EXP 2
76940: EQUAL
76941: IFFALSE 76945
// exit ;
76943: GO 77105
// base = 0 ;
76945: LD_ADDR_VAR 0 3
76949: PUSH
76950: LD_INT 0
76952: ST_TO_ADDR
// for i in ai_bases do
76953: LD_ADDR_VAR 0 5
76957: PUSH
76958: LD_EXP 49
76962: PUSH
76963: FOR_IN
76964: IFFALSE 77044
// if i = 2 then
76966: LD_VAR 0 5
76970: PUSH
76971: LD_INT 2
76973: EQUAL
76974: IFFALSE 77042
// if GetX ( behe ) = ai_behemoth_construction_hex [ i ] [ 1 ] and GetY ( behe ) = ai_behemoth_construction_hex [ i ] [ 2 ] then
76976: LD_VAR 0 1
76980: PPUSH
76981: CALL_OW 250
76985: PUSH
76986: LD_EXP 115
76990: PUSH
76991: LD_VAR 0 5
76995: ARRAY
76996: PUSH
76997: LD_INT 1
76999: ARRAY
77000: EQUAL
77001: PUSH
77002: LD_VAR 0 1
77006: PPUSH
77007: CALL_OW 251
77011: PUSH
77012: LD_EXP 115
77016: PUSH
77017: LD_VAR 0 5
77021: ARRAY
77022: PUSH
77023: LD_INT 2
77025: ARRAY
77026: EQUAL
77027: AND
77028: IFFALSE 77042
// begin base = i ;
77030: LD_ADDR_VAR 0 3
77034: PUSH
77035: LD_VAR 0 5
77039: ST_TO_ADDR
// break ;
77040: GO 77044
// end ;
77042: GO 76963
77044: POP
77045: POP
// if base = 0 then
77046: LD_VAR 0 3
77050: PUSH
77051: LD_INT 0
77053: EQUAL
77054: IFFALSE 77058
// exit ;
77056: GO 77105
// temp_list = ai_behemoths [ base ] ^ behe ;
77058: LD_ADDR_VAR 0 4
77062: PUSH
77063: LD_EXP 113
77067: PUSH
77068: LD_VAR 0 3
77072: ARRAY
77073: PUSH
77074: LD_VAR 0 1
77078: ADD
77079: ST_TO_ADDR
// ai_behemoths = Replace ( ai_behemoths , base , temp_list ) ;
77080: LD_ADDR_EXP 113
77084: PUSH
77085: LD_EXP 113
77089: PPUSH
77090: LD_VAR 0 3
77094: PPUSH
77095: LD_VAR 0 4
77099: PPUSH
77100: CALL_OW 1
77104: ST_TO_ADDR
// end ;
77105: PPOPN 5
77107: END
// export function ResetVehicleAttackDelay ( base ) ; var time ; begin
77108: LD_INT 0
77110: PPUSH
77111: PPUSH
// time = [ 5 5$15 , 4 4$30 , 3 3$45 ] [ difficulty ] ;
77112: LD_ADDR_VAR 0 3
77116: PUSH
77117: LD_INT 11025
77119: PUSH
77120: LD_INT 9450
77122: PUSH
77123: LD_INT 7875
77125: PUSH
77126: EMPTY
77127: LIST
77128: LIST
77129: LIST
77130: PUSH
77131: LD_OWVAR 67
77135: ARRAY
77136: ST_TO_ADDR
// ai_vehicle_attack_delay = Replace ( ai_vehicle_attack_delay , base , Rand ( time , time + 0 0$30 ) ) ;
77137: LD_ADDR_EXP 93
77141: PUSH
77142: LD_EXP 93
77146: PPUSH
77147: LD_VAR 0 1
77151: PPUSH
77152: LD_VAR 0 3
77156: PPUSH
77157: LD_VAR 0 3
77161: PUSH
77162: LD_INT 1050
77164: PLUS
77165: PPUSH
77166: CALL_OW 12
77170: PPUSH
77171: CALL_OW 1
77175: ST_TO_ADDR
// end ;
77176: LD_VAR 0 2
77180: RET
// export function ResetHumanAttackDelay ( base ) ; begin
77181: LD_INT 0
77183: PPUSH
// end ;
77184: LD_VAR 0 2
77188: RET
// export function FindNonhumansNearUnit ( side , un , dist , only_dangerous ) ; var weapon_list , temp_list , i , btype , b , val ; begin
77189: LD_INT 0
77191: PPUSH
77192: PPUSH
77193: PPUSH
77194: PPUSH
77195: PPUSH
77196: PPUSH
77197: PPUSH
// temp_list = FilterAllUnits ( [ [ f_enemy , side ] , [ f_not , [ f_type , unit_human ] ] , [ f_dist , un , dist ] , [ f_see , side ] ] ) ;
77198: LD_ADDR_VAR 0 7
77202: PUSH
77203: LD_INT 81
77205: PUSH
77206: LD_VAR 0 1
77210: PUSH
77211: EMPTY
77212: LIST
77213: LIST
77214: PUSH
77215: LD_INT 3
77217: PUSH
77218: LD_INT 21
77220: PUSH
77221: LD_INT 1
77223: PUSH
77224: EMPTY
77225: LIST
77226: LIST
77227: PUSH
77228: EMPTY
77229: LIST
77230: LIST
77231: PUSH
77232: LD_INT 91
77234: PUSH
77235: LD_VAR 0 2
77239: PUSH
77240: LD_VAR 0 3
77244: PUSH
77245: EMPTY
77246: LIST
77247: LIST
77248: LIST
77249: PUSH
77250: LD_INT 101
77252: PUSH
77253: LD_VAR 0 1
77257: PUSH
77258: EMPTY
77259: LIST
77260: LIST
77261: PUSH
77262: EMPTY
77263: LIST
77264: LIST
77265: LIST
77266: LIST
77267: PPUSH
77268: CALL_OW 69
77272: ST_TO_ADDR
// if only_dangerous then
77273: LD_VAR 0 4
77277: IFFALSE 77296
// begin result = DangerousUnits ( temp_list ) ;
77279: LD_ADDR_VAR 0 5
77283: PUSH
77284: LD_VAR 0 7
77288: PPUSH
77289: CALL 33428 0 1
77293: ST_TO_ADDR
// end else
77294: GO 77306
// result = temp_list end ;
77296: LD_ADDR_VAR 0 5
77300: PUSH
77301: LD_VAR 0 7
77305: ST_TO_ADDR
77306: LD_VAR 0 5
77310: RET
// every 0 0$5 do var base , i ;
77311: GO 77313
77313: DISABLE
77314: LD_INT 0
77316: PPUSH
77317: PPUSH
// begin for base in ai_bases do
77318: LD_ADDR_VAR 0 1
77322: PUSH
77323: LD_EXP 49
77327: PUSH
77328: FOR_IN
77329: IFFALSE 77486
// for i in ( ai_vehicles_attack [ base ] ^ ai_vehicles_defend [ base ] ^ ai_cargo_bay [ base ] ^ ai_crane [ base ] ^ ai_taufield_vehicles [ base ] ^ ai_implosion_vehicles [ base ] ^ ai_control_tower_vehicles [ base ] ^ ai_sib_bomb_vehicles [ base ] ) diff 0 do
77331: LD_ADDR_VAR 0 2
77335: PUSH
77336: LD_EXP 78
77340: PUSH
77341: LD_VAR 0 1
77345: ARRAY
77346: PUSH
77347: LD_EXP 77
77351: PUSH
77352: LD_VAR 0 1
77356: ARRAY
77357: ADD
77358: PUSH
77359: LD_EXP 95
77363: PUSH
77364: LD_VAR 0 1
77368: ARRAY
77369: ADD
77370: PUSH
77371: LD_EXP 98
77375: PUSH
77376: LD_VAR 0 1
77380: ARRAY
77381: ADD
77382: PUSH
77383: LD_EXP 110
77387: PUSH
77388: LD_VAR 0 1
77392: ARRAY
77393: ADD
77394: PUSH
77395: LD_EXP 111
77399: PUSH
77400: LD_VAR 0 1
77404: ARRAY
77405: ADD
77406: PUSH
77407: LD_EXP 105
77411: PUSH
77412: LD_VAR 0 1
77416: ARRAY
77417: ADD
77418: PUSH
77419: LD_EXP 117
77423: PUSH
77424: LD_VAR 0 1
77428: ARRAY
77429: ADD
77430: PUSH
77431: LD_INT 0
77433: DIFF
77434: PUSH
77435: FOR_IN
77436: IFFALSE 77482
// if GetFuel ( i ) < 10 and GetEngine ( i ) = engine_combustion then
77438: LD_VAR 0 2
77442: PPUSH
77443: CALL_OW 261
77447: PUSH
77448: LD_INT 10
77450: LESS
77451: PUSH
77452: LD_VAR 0 2
77456: PPUSH
77457: CALL_OW 262
77461: PUSH
77462: LD_INT 1
77464: EQUAL
77465: AND
77466: IFFALSE 77480
// SetFuel ( i , 10 ) ;
77468: LD_VAR 0 2
77472: PPUSH
77473: LD_INT 10
77475: PPUSH
77476: CALL_OW 240
77480: GO 77435
77482: POP
77483: POP
77484: GO 77328
77486: POP
77487: POP
// enable ;
77488: ENABLE
// end ;
77489: PPOPN 2
77491: END
// every 0 0$1 + 0 0$0.7 do var side , i , scientists_list , temp_list , temp_unit , base , k , temp_list_3 , area ;
77492: GO 77494
77494: DISABLE
77495: LD_INT 0
77497: PPUSH
77498: PPUSH
77499: PPUSH
77500: PPUSH
77501: PPUSH
77502: PPUSH
77503: PPUSH
77504: PPUSH
77505: PPUSH
// begin repeat if ai_bases = 0 then
77506: LD_EXP 49
77510: PUSH
77511: LD_INT 0
77513: EQUAL
77514: IFFALSE 77518
// exit ;
77516: GO 78262
// wait ( 0 0$1 mod ( ai_bases + 0 ) ) ;
77518: LD_INT 35
77520: PUSH
77521: LD_EXP 49
77525: PUSH
77526: LD_INT 0
77528: PLUS
77529: MOD
77530: PPUSH
77531: CALL_OW 67
// for base in ai_bases do
77535: LD_ADDR_VAR 0 6
77539: PUSH
77540: LD_EXP 49
77544: PUSH
77545: FOR_IN
77546: IFFALSE 78256
// begin wait ( 0 0$1 div ( ai_bases + 0 ) ) ;
77548: LD_INT 35
77550: PUSH
77551: LD_EXP 49
77555: PUSH
77556: LD_INT 0
77558: PLUS
77559: DIV
77560: PPUSH
77561: CALL_OW 67
// side = GetBaseSide ( base ) ;
77565: LD_ADDR_VAR 0 1
77569: PUSH
77570: LD_VAR 0 6
77574: PPUSH
77575: CALL 40471 0 1
77579: ST_TO_ADDR
// scientists_list = ai_scientists [ base ] diff ai_heal_these_humans [ base ] ;
77580: LD_ADDR_VAR 0 3
77584: PUSH
77585: LD_EXP 55
77589: PUSH
77590: LD_VAR 0 6
77594: ARRAY
77595: PUSH
77596: LD_EXP 85
77600: PUSH
77601: LD_VAR 0 6
77605: ARRAY
77606: DIFF
77607: ST_TO_ADDR
// temp_list = ai_heal_these_humans [ base ] ;
77608: LD_ADDR_VAR 0 4
77612: PUSH
77613: LD_EXP 85
77617: PUSH
77618: LD_VAR 0 6
77622: ARRAY
77623: ST_TO_ADDR
// i = 1 ;
77624: LD_ADDR_VAR 0 2
77628: PUSH
77629: LD_INT 1
77631: ST_TO_ADDR
// while i <= scientists_list do
77632: LD_VAR 0 2
77636: PUSH
77637: LD_VAR 0 3
77641: LESSEQUAL
77642: IFFALSE 77725
// begin if GetLives ( scientists_list [ i ] ) <= 700 then
77644: LD_VAR 0 3
77648: PUSH
77649: LD_VAR 0 2
77653: ARRAY
77654: PPUSH
77655: CALL_OW 256
77659: PUSH
77660: LD_INT 700
77662: LESSEQUAL
77663: IFFALSE 77709
// begin temp_list = temp_list ^ scientists_list [ i ] ;
77665: LD_ADDR_VAR 0 4
77669: PUSH
77670: LD_VAR 0 4
77674: PUSH
77675: LD_VAR 0 3
77679: PUSH
77680: LD_VAR 0 2
77684: ARRAY
77685: ADD
77686: ST_TO_ADDR
// scientists_list = Delete ( scientists_list , i ) ;
77687: LD_ADDR_VAR 0 3
77691: PUSH
77692: LD_VAR 0 3
77696: PPUSH
77697: LD_VAR 0 2
77701: PPUSH
77702: CALL_OW 3
77706: ST_TO_ADDR
// continue ;
77707: GO 77632
// end ; i = i + 1 ;
77709: LD_ADDR_VAR 0 2
77713: PUSH
77714: LD_VAR 0 2
77718: PUSH
77719: LD_INT 1
77721: PLUS
77722: ST_TO_ADDR
// end ;
77723: GO 77632
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
77725: LD_ADDR_EXP 85
77729: PUSH
77730: LD_EXP 85
77734: PPUSH
77735: LD_VAR 0 6
77739: PPUSH
77740: LD_VAR 0 4
77744: PPUSH
77745: CALL_OW 1
77749: ST_TO_ADDR
// temp_list = [ ] ;
77750: LD_ADDR_VAR 0 4
77754: PUSH
77755: EMPTY
77756: ST_TO_ADDR
// for i in ai_heal_these_humans [ base ] do
77757: LD_ADDR_VAR 0 2
77761: PUSH
77762: LD_EXP 85
77766: PUSH
77767: LD_VAR 0 6
77771: ARRAY
77772: PUSH
77773: FOR_IN
77774: IFFALSE 77824
// if GetLives ( i ) < 1000 and IsInUnit ( i ) = 0 then
77776: LD_VAR 0 2
77780: PPUSH
77781: CALL_OW 256
77785: PUSH
77786: LD_INT 1000
77788: LESS
77789: PUSH
77790: LD_VAR 0 2
77794: PPUSH
77795: CALL_OW 310
77799: PUSH
77800: LD_INT 0
77802: EQUAL
77803: AND
77804: IFFALSE 77822
// temp_list = temp_list ^ i ;
77806: LD_ADDR_VAR 0 4
77810: PUSH
77811: LD_VAR 0 4
77815: PUSH
77816: LD_VAR 0 2
77820: ADD
77821: ST_TO_ADDR
77822: GO 77773
77824: POP
77825: POP
// ai_heal_these_humans = Replace ( ai_heal_these_humans , base , temp_list ) ;
77826: LD_ADDR_EXP 85
77830: PUSH
77831: LD_EXP 85
77835: PPUSH
77836: LD_VAR 0 6
77840: PPUSH
77841: LD_VAR 0 4
77845: PPUSH
77846: CALL_OW 1
77850: ST_TO_ADDR
// for i in ai_heal_these_humans [ base ] do
77851: LD_ADDR_VAR 0 2
77855: PUSH
77856: LD_EXP 85
77860: PUSH
77861: LD_VAR 0 6
77865: ARRAY
77866: PUSH
77867: FOR_IN
77868: IFFALSE 77956
// begin if GetDistUnitXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) > 4 then
77870: LD_VAR 0 2
77874: PPUSH
77875: LD_EXP 83
77879: PUSH
77880: LD_VAR 0 6
77884: ARRAY
77885: PUSH
77886: LD_INT 1
77888: ARRAY
77889: PPUSH
77890: LD_EXP 83
77894: PUSH
77895: LD_VAR 0 6
77899: ARRAY
77900: PUSH
77901: LD_INT 2
77903: ARRAY
77904: PPUSH
77905: CALL_OW 297
77909: PUSH
77910: LD_INT 4
77912: GREATER
77913: IFFALSE 77954
// ComMoveXY ( i , ai_human_pullback_hex [ base ] [ 1 ] , ai_human_pullback_hex [ base ] [ 2 ] ) ;
77915: LD_VAR 0 2
77919: PPUSH
77920: LD_EXP 83
77924: PUSH
77925: LD_VAR 0 6
77929: ARRAY
77930: PUSH
77931: LD_INT 1
77933: ARRAY
77934: PPUSH
77935: LD_EXP 83
77939: PUSH
77940: LD_VAR 0 6
77944: ARRAY
77945: PUSH
77946: LD_INT 2
77948: ARRAY
77949: PPUSH
77950: CALL_OW 111
// end ;
77954: GO 77867
77956: POP
77957: POP
// if scientists_list = 0 then
77958: LD_VAR 0 3
77962: PUSH
77963: LD_INT 0
77965: EQUAL
77966: IFFALSE 77970
// continue ;
77968: GO 77545
// if ai_heal_these_humans [ base ] > 0 then
77970: LD_EXP 85
77974: PUSH
77975: LD_VAR 0 6
77979: ARRAY
77980: PUSH
77981: LD_INT 0
77983: GREATER
77984: IFFALSE 78189
// begin area = GetBaseArea ( base ) ;
77986: LD_ADDR_VAR 0 9
77990: PUSH
77991: LD_VAR 0 6
77995: PPUSH
77996: CALL 40400 0 1
78000: ST_TO_ADDR
// temp_list = UnitFilter ( ai_heal_these_humans [ base ] , [ f_inarea , area ] ) ;
78001: LD_ADDR_VAR 0 4
78005: PUSH
78006: LD_EXP 85
78010: PUSH
78011: LD_VAR 0 6
78015: ARRAY
78016: PPUSH
78017: LD_INT 95
78019: PUSH
78020: LD_VAR 0 9
78024: PUSH
78025: EMPTY
78026: LIST
78027: LIST
78028: PPUSH
78029: CALL_OW 72
78033: ST_TO_ADDR
// if temp_list > 0 then
78034: LD_VAR 0 4
78038: PUSH
78039: LD_INT 0
78041: GREATER
78042: IFFALSE 78189
// begin scientists_list = GetHumansOutOfUnits ( scientists_list ) ;
78044: LD_ADDR_VAR 0 3
78048: PUSH
78049: LD_VAR 0 3
78053: PPUSH
78054: CALL 55807 0 1
78058: ST_TO_ADDR
// repeat i = 1 ;
78059: LD_ADDR_VAR 0 2
78063: PUSH
78064: LD_INT 1
78066: ST_TO_ADDR
// while i <= temp_list do
78067: LD_VAR 0 2
78071: PUSH
78072: LD_VAR 0 4
78076: LESSEQUAL
78077: IFFALSE 78169
// begin if scientists_list = 0 then
78079: LD_VAR 0 3
78083: PUSH
78084: LD_INT 0
78086: EQUAL
78087: IFFALSE 78091
// break ;
78089: GO 78169
// temp_unit = NearestUnitToUnit ( scientists_list , temp_list [ i ] ) ;
78091: LD_ADDR_VAR 0 5
78095: PUSH
78096: LD_VAR 0 3
78100: PPUSH
78101: LD_VAR 0 4
78105: PUSH
78106: LD_VAR 0 2
78110: ARRAY
78111: PPUSH
78112: CALL_OW 74
78116: ST_TO_ADDR
// ComHeal ( temp_unit , temp_list [ i ] ) ;
78117: LD_VAR 0 5
78121: PPUSH
78122: LD_VAR 0 4
78126: PUSH
78127: LD_VAR 0 2
78131: ARRAY
78132: PPUSH
78133: CALL_OW 128
// scientists_list = scientists_list diff temp_unit ;
78137: LD_ADDR_VAR 0 3
78141: PUSH
78142: LD_VAR 0 3
78146: PUSH
78147: LD_VAR 0 5
78151: DIFF
78152: ST_TO_ADDR
// i = i + 1 ;
78153: LD_ADDR_VAR 0 2
78157: PUSH
78158: LD_VAR 0 2
78162: PUSH
78163: LD_INT 1
78165: PLUS
78166: ST_TO_ADDR
// end ;
78167: GO 78067
// until scientists_list = 0 ;
78169: LD_VAR 0 3
78173: PUSH
78174: LD_INT 0
78176: EQUAL
78177: IFFALSE 78059
// scientists_list = temp_list_3 ;
78179: LD_ADDR_VAR 0 3
78183: PUSH
78184: LD_VAR 0 8
78188: ST_TO_ADDR
// end ; end ; DistributeHumansToBuildings ( base , scientists_list , UnitFilter ( ai_labs [ base ] , [ [ f_ok ] , [ f_not , [ f_constructed ] ] ] ) , class_scientistic , 6 , true , false ) ;
78189: LD_VAR 0 6
78193: PPUSH
78194: LD_VAR 0 3
78198: PPUSH
78199: LD_EXP 60
78203: PUSH
78204: LD_VAR 0 6
78208: ARRAY
78209: PPUSH
78210: LD_INT 50
78212: PUSH
78213: EMPTY
78214: LIST
78215: PUSH
78216: LD_INT 3
78218: PUSH
78219: LD_INT 57
78221: PUSH
78222: EMPTY
78223: LIST
78224: PUSH
78225: EMPTY
78226: LIST
78227: LIST
78228: PUSH
78229: EMPTY
78230: LIST
78231: LIST
78232: PPUSH
78233: CALL_OW 72
78237: PPUSH
78238: LD_INT 4
78240: PPUSH
78241: LD_INT 6
78243: PPUSH
78244: LD_INT 1
78246: PPUSH
78247: LD_INT 0
78249: PPUSH
78250: CALL 45286 0 7
// end ;
78254: GO 77545
78256: POP
78257: POP
// until false ;
78258: LD_INT 0
78260: IFFALSE 77506
// end ;
78262: PPOPN 9
78264: END
// every 0 0$1 do var i , j , un_list , temp_list , temp_list2 , base ; var le_path , ru_path , us_path , special_attack , hold , temp , temp2 ;
78265: GO 78267
78267: DISABLE
78268: LD_INT 0
78270: PPUSH
78271: PPUSH
78272: PPUSH
78273: PPUSH
78274: PPUSH
78275: PPUSH
78276: PPUSH
78277: PPUSH
78278: PPUSH
78279: PPUSH
78280: PPUSH
78281: PPUSH
78282: PPUSH
// begin Randomize ;
78283: CALL_OW 10
// le_path = [ [ [ 108 , 199 ] , [ 122 , 205 ] , [ 133 , 210 ] , [ 142 , 210 ] , [ 150 , 210 ] , [ 166 , 217 ] , [ 168 , 206 ] , [ 172 , 201 ] , [ 186 , 205 ] ] ] ;
78287: LD_ADDR_VAR 0 7
78291: PUSH
78292: LD_INT 108
78294: PUSH
78295: LD_INT 199
78297: PUSH
78298: EMPTY
78299: LIST
78300: LIST
78301: PUSH
78302: LD_INT 122
78304: PUSH
78305: LD_INT 205
78307: PUSH
78308: EMPTY
78309: LIST
78310: LIST
78311: PUSH
78312: LD_INT 133
78314: PUSH
78315: LD_INT 210
78317: PUSH
78318: EMPTY
78319: LIST
78320: LIST
78321: PUSH
78322: LD_INT 142
78324: PUSH
78325: LD_INT 210
78327: PUSH
78328: EMPTY
78329: LIST
78330: LIST
78331: PUSH
78332: LD_INT 150
78334: PUSH
78335: LD_INT 210
78337: PUSH
78338: EMPTY
78339: LIST
78340: LIST
78341: PUSH
78342: LD_INT 166
78344: PUSH
78345: LD_INT 217
78347: PUSH
78348: EMPTY
78349: LIST
78350: LIST
78351: PUSH
78352: LD_INT 168
78354: PUSH
78355: LD_INT 206
78357: PUSH
78358: EMPTY
78359: LIST
78360: LIST
78361: PUSH
78362: LD_INT 172
78364: PUSH
78365: LD_INT 201
78367: PUSH
78368: EMPTY
78369: LIST
78370: LIST
78371: PUSH
78372: LD_INT 186
78374: PUSH
78375: LD_INT 205
78377: PUSH
78378: EMPTY
78379: LIST
78380: LIST
78381: PUSH
78382: EMPTY
78383: LIST
78384: LIST
78385: LIST
78386: LIST
78387: LIST
78388: LIST
78389: LIST
78390: LIST
78391: LIST
78392: PUSH
78393: EMPTY
78394: LIST
78395: ST_TO_ADDR
// ru_path = [ [ [ 185 , 203 ] , [ 167 , 199 ] , [ 167 , 211 ] , [ 163 , 218 ] , [ 144 , 216 ] , [ 130 , 216 ] , [ 117 , 213 ] , [ 107 , 202 ] , [ 93 , 165 ] ] , [ [ 185 , 203 ] , [ 167 , 199 ] , [ 167 , 211 ] , [ 163 , 218 ] , [ 144 , 216 ] , [ 142 , 204 ] , [ 150 , 197 ] , [ 151 , 184 ] , [ 148 , 173 ] , [ 143 , 161 ] , [ 138 , 150 ] , [ 128 , 137 ] , [ 116 , 148 ] ] , [ [ 200 , 232 ] , [ 193 , 228 ] , [ 120 , 110 ] , [ 120 , 118 ] , [ 122 , 125 ] , [ 122 , 131 ] , [ 117 , 131 ] , [ 112 , 132 ] , [ 114 , 140 ] , [ 117 , 149 ] ] , [ [ 204 , 175 ] , [ 217 , 176 ] , [ 230 , 180 ] , [ 232 , 166 ] ] , [ [ 195 , 170 ] , [ 185 , 163 ] , [ 174 , 148 ] , [ 174 , 137 ] , [ 187 , 136 ] , [ 188 , 127 ] , [ 195 , 119 ] , [ 214 , 138 ] ] ] ;
78396: LD_ADDR_VAR 0 8
78400: PUSH
78401: LD_INT 185
78403: PUSH
78404: LD_INT 203
78406: PUSH
78407: EMPTY
78408: LIST
78409: LIST
78410: PUSH
78411: LD_INT 167
78413: PUSH
78414: LD_INT 199
78416: PUSH
78417: EMPTY
78418: LIST
78419: LIST
78420: PUSH
78421: LD_INT 167
78423: PUSH
78424: LD_INT 211
78426: PUSH
78427: EMPTY
78428: LIST
78429: LIST
78430: PUSH
78431: LD_INT 163
78433: PUSH
78434: LD_INT 218
78436: PUSH
78437: EMPTY
78438: LIST
78439: LIST
78440: PUSH
78441: LD_INT 144
78443: PUSH
78444: LD_INT 216
78446: PUSH
78447: EMPTY
78448: LIST
78449: LIST
78450: PUSH
78451: LD_INT 130
78453: PUSH
78454: LD_INT 216
78456: PUSH
78457: EMPTY
78458: LIST
78459: LIST
78460: PUSH
78461: LD_INT 117
78463: PUSH
78464: LD_INT 213
78466: PUSH
78467: EMPTY
78468: LIST
78469: LIST
78470: PUSH
78471: LD_INT 107
78473: PUSH
78474: LD_INT 202
78476: PUSH
78477: EMPTY
78478: LIST
78479: LIST
78480: PUSH
78481: LD_INT 93
78483: PUSH
78484: LD_INT 165
78486: PUSH
78487: EMPTY
78488: LIST
78489: LIST
78490: PUSH
78491: EMPTY
78492: LIST
78493: LIST
78494: LIST
78495: LIST
78496: LIST
78497: LIST
78498: LIST
78499: LIST
78500: LIST
78501: PUSH
78502: LD_INT 185
78504: PUSH
78505: LD_INT 203
78507: PUSH
78508: EMPTY
78509: LIST
78510: LIST
78511: PUSH
78512: LD_INT 167
78514: PUSH
78515: LD_INT 199
78517: PUSH
78518: EMPTY
78519: LIST
78520: LIST
78521: PUSH
78522: LD_INT 167
78524: PUSH
78525: LD_INT 211
78527: PUSH
78528: EMPTY
78529: LIST
78530: LIST
78531: PUSH
78532: LD_INT 163
78534: PUSH
78535: LD_INT 218
78537: PUSH
78538: EMPTY
78539: LIST
78540: LIST
78541: PUSH
78542: LD_INT 144
78544: PUSH
78545: LD_INT 216
78547: PUSH
78548: EMPTY
78549: LIST
78550: LIST
78551: PUSH
78552: LD_INT 142
78554: PUSH
78555: LD_INT 204
78557: PUSH
78558: EMPTY
78559: LIST
78560: LIST
78561: PUSH
78562: LD_INT 150
78564: PUSH
78565: LD_INT 197
78567: PUSH
78568: EMPTY
78569: LIST
78570: LIST
78571: PUSH
78572: LD_INT 151
78574: PUSH
78575: LD_INT 184
78577: PUSH
78578: EMPTY
78579: LIST
78580: LIST
78581: PUSH
78582: LD_INT 148
78584: PUSH
78585: LD_INT 173
78587: PUSH
78588: EMPTY
78589: LIST
78590: LIST
78591: PUSH
78592: LD_INT 143
78594: PUSH
78595: LD_INT 161
78597: PUSH
78598: EMPTY
78599: LIST
78600: LIST
78601: PUSH
78602: LD_INT 138
78604: PUSH
78605: LD_INT 150
78607: PUSH
78608: EMPTY
78609: LIST
78610: LIST
78611: PUSH
78612: LD_INT 128
78614: PUSH
78615: LD_INT 137
78617: PUSH
78618: EMPTY
78619: LIST
78620: LIST
78621: PUSH
78622: LD_INT 116
78624: PUSH
78625: LD_INT 148
78627: PUSH
78628: EMPTY
78629: LIST
78630: LIST
78631: PUSH
78632: EMPTY
78633: LIST
78634: LIST
78635: LIST
78636: LIST
78637: LIST
78638: LIST
78639: LIST
78640: LIST
78641: LIST
78642: LIST
78643: LIST
78644: LIST
78645: LIST
78646: PUSH
78647: LD_INT 200
78649: PUSH
78650: LD_INT 232
78652: PUSH
78653: EMPTY
78654: LIST
78655: LIST
78656: PUSH
78657: LD_INT 193
78659: PUSH
78660: LD_INT 228
78662: PUSH
78663: EMPTY
78664: LIST
78665: LIST
78666: PUSH
78667: LD_INT 120
78669: PUSH
78670: LD_INT 110
78672: PUSH
78673: EMPTY
78674: LIST
78675: LIST
78676: PUSH
78677: LD_INT 120
78679: PUSH
78680: LD_INT 118
78682: PUSH
78683: EMPTY
78684: LIST
78685: LIST
78686: PUSH
78687: LD_INT 122
78689: PUSH
78690: LD_INT 125
78692: PUSH
78693: EMPTY
78694: LIST
78695: LIST
78696: PUSH
78697: LD_INT 122
78699: PUSH
78700: LD_INT 131
78702: PUSH
78703: EMPTY
78704: LIST
78705: LIST
78706: PUSH
78707: LD_INT 117
78709: PUSH
78710: LD_INT 131
78712: PUSH
78713: EMPTY
78714: LIST
78715: LIST
78716: PUSH
78717: LD_INT 112
78719: PUSH
78720: LD_INT 132
78722: PUSH
78723: EMPTY
78724: LIST
78725: LIST
78726: PUSH
78727: LD_INT 114
78729: PUSH
78730: LD_INT 140
78732: PUSH
78733: EMPTY
78734: LIST
78735: LIST
78736: PUSH
78737: LD_INT 117
78739: PUSH
78740: LD_INT 149
78742: PUSH
78743: EMPTY
78744: LIST
78745: LIST
78746: PUSH
78747: EMPTY
78748: LIST
78749: LIST
78750: LIST
78751: LIST
78752: LIST
78753: LIST
78754: LIST
78755: LIST
78756: LIST
78757: LIST
78758: PUSH
78759: LD_INT 204
78761: PUSH
78762: LD_INT 175
78764: PUSH
78765: EMPTY
78766: LIST
78767: LIST
78768: PUSH
78769: LD_INT 217
78771: PUSH
78772: LD_INT 176
78774: PUSH
78775: EMPTY
78776: LIST
78777: LIST
78778: PUSH
78779: LD_INT 230
78781: PUSH
78782: LD_INT 180
78784: PUSH
78785: EMPTY
78786: LIST
78787: LIST
78788: PUSH
78789: LD_INT 232
78791: PUSH
78792: LD_INT 166
78794: PUSH
78795: EMPTY
78796: LIST
78797: LIST
78798: PUSH
78799: EMPTY
78800: LIST
78801: LIST
78802: LIST
78803: LIST
78804: PUSH
78805: LD_INT 195
78807: PUSH
78808: LD_INT 170
78810: PUSH
78811: EMPTY
78812: LIST
78813: LIST
78814: PUSH
78815: LD_INT 185
78817: PUSH
78818: LD_INT 163
78820: PUSH
78821: EMPTY
78822: LIST
78823: LIST
78824: PUSH
78825: LD_INT 174
78827: PUSH
78828: LD_INT 148
78830: PUSH
78831: EMPTY
78832: LIST
78833: LIST
78834: PUSH
78835: LD_INT 174
78837: PUSH
78838: LD_INT 137
78840: PUSH
78841: EMPTY
78842: LIST
78843: LIST
78844: PUSH
78845: LD_INT 187
78847: PUSH
78848: LD_INT 136
78850: PUSH
78851: EMPTY
78852: LIST
78853: LIST
78854: PUSH
78855: LD_INT 188
78857: PUSH
78858: LD_INT 127
78860: PUSH
78861: EMPTY
78862: LIST
78863: LIST
78864: PUSH
78865: LD_INT 195
78867: PUSH
78868: LD_INT 119
78870: PUSH
78871: EMPTY
78872: LIST
78873: LIST
78874: PUSH
78875: LD_INT 214
78877: PUSH
78878: LD_INT 138
78880: PUSH
78881: EMPTY
78882: LIST
78883: LIST
78884: PUSH
78885: EMPTY
78886: LIST
78887: LIST
78888: LIST
78889: LIST
78890: LIST
78891: LIST
78892: LIST
78893: LIST
78894: PUSH
78895: EMPTY
78896: LIST
78897: LIST
78898: LIST
78899: LIST
78900: LIST
78901: ST_TO_ADDR
// us_path = [ [ [ 242 , 193 ] , [ 232 , 192 ] , [ 221 , 193 ] , [ 223 , 204 ] , [ 211 , 205 ] ] , [ [ 230 , 184 ] , [ 218 , 175 ] , [ 209 , 165 ] , [ 197 , 153 ] , [ 186 , 152 ] , [ 178 , 151 ] , [ 172 , 153 ] , [ 165 , 139 ] , [ 167 , 130 ] ] , [ [ 214 , 130 ] , [ 204 , 116 ] , [ 192 , 114 ] , [ 184 , 115 ] , [ 169 , 114 ] ] ] ;
78902: LD_ADDR_VAR 0 9
78906: PUSH
78907: LD_INT 242
78909: PUSH
78910: LD_INT 193
78912: PUSH
78913: EMPTY
78914: LIST
78915: LIST
78916: PUSH
78917: LD_INT 232
78919: PUSH
78920: LD_INT 192
78922: PUSH
78923: EMPTY
78924: LIST
78925: LIST
78926: PUSH
78927: LD_INT 221
78929: PUSH
78930: LD_INT 193
78932: PUSH
78933: EMPTY
78934: LIST
78935: LIST
78936: PUSH
78937: LD_INT 223
78939: PUSH
78940: LD_INT 204
78942: PUSH
78943: EMPTY
78944: LIST
78945: LIST
78946: PUSH
78947: LD_INT 211
78949: PUSH
78950: LD_INT 205
78952: PUSH
78953: EMPTY
78954: LIST
78955: LIST
78956: PUSH
78957: EMPTY
78958: LIST
78959: LIST
78960: LIST
78961: LIST
78962: LIST
78963: PUSH
78964: LD_INT 230
78966: PUSH
78967: LD_INT 184
78969: PUSH
78970: EMPTY
78971: LIST
78972: LIST
78973: PUSH
78974: LD_INT 218
78976: PUSH
78977: LD_INT 175
78979: PUSH
78980: EMPTY
78981: LIST
78982: LIST
78983: PUSH
78984: LD_INT 209
78986: PUSH
78987: LD_INT 165
78989: PUSH
78990: EMPTY
78991: LIST
78992: LIST
78993: PUSH
78994: LD_INT 197
78996: PUSH
78997: LD_INT 153
78999: PUSH
79000: EMPTY
79001: LIST
79002: LIST
79003: PUSH
79004: LD_INT 186
79006: PUSH
79007: LD_INT 152
79009: PUSH
79010: EMPTY
79011: LIST
79012: LIST
79013: PUSH
79014: LD_INT 178
79016: PUSH
79017: LD_INT 151
79019: PUSH
79020: EMPTY
79021: LIST
79022: LIST
79023: PUSH
79024: LD_INT 172
79026: PUSH
79027: LD_INT 153
79029: PUSH
79030: EMPTY
79031: LIST
79032: LIST
79033: PUSH
79034: LD_INT 165
79036: PUSH
79037: LD_INT 139
79039: PUSH
79040: EMPTY
79041: LIST
79042: LIST
79043: PUSH
79044: LD_INT 167
79046: PUSH
79047: LD_INT 130
79049: PUSH
79050: EMPTY
79051: LIST
79052: LIST
79053: PUSH
79054: EMPTY
79055: LIST
79056: LIST
79057: LIST
79058: LIST
79059: LIST
79060: LIST
79061: LIST
79062: LIST
79063: LIST
79064: PUSH
79065: LD_INT 214
79067: PUSH
79068: LD_INT 130
79070: PUSH
79071: EMPTY
79072: LIST
79073: LIST
79074: PUSH
79075: LD_INT 204
79077: PUSH
79078: LD_INT 116
79080: PUSH
79081: EMPTY
79082: LIST
79083: LIST
79084: PUSH
79085: LD_INT 192
79087: PUSH
79088: LD_INT 114
79090: PUSH
79091: EMPTY
79092: LIST
79093: LIST
79094: PUSH
79095: LD_INT 184
79097: PUSH
79098: LD_INT 115
79100: PUSH
79101: EMPTY
79102: LIST
79103: LIST
79104: PUSH
79105: LD_INT 169
79107: PUSH
79108: LD_INT 114
79110: PUSH
79111: EMPTY
79112: LIST
79113: LIST
79114: PUSH
79115: EMPTY
79116: LIST
79117: LIST
79118: LIST
79119: LIST
79120: LIST
79121: PUSH
79122: EMPTY
79123: LIST
79124: LIST
79125: LIST
79126: ST_TO_ADDR
// temp_list = [ RussianDefences1 , RussianDefences2 , RussianDefences3 , RussianDefences4 ] ;
79127: LD_ADDR_VAR 0 4
79131: PUSH
79132: LD_INT 44
79134: PUSH
79135: LD_INT 45
79137: PUSH
79138: LD_INT 46
79140: PUSH
79141: LD_INT 47
79143: PUSH
79144: EMPTY
79145: LIST
79146: LIST
79147: LIST
79148: LIST
79149: ST_TO_ADDR
// special_attack = [ ] ;
79150: LD_ADDR_VAR 0 10
79154: PUSH
79155: EMPTY
79156: ST_TO_ADDR
// for i = 1 to temp_list do
79157: LD_ADDR_VAR 0 1
79161: PUSH
79162: DOUBLE
79163: LD_INT 1
79165: DEC
79166: ST_TO_ADDR
79167: LD_VAR 0 4
79171: PUSH
79172: FOR_TO
79173: IFFALSE 79341
// if FilterUnitsInArea ( temp_list [ i ] , [ f_btype , b_barracks ] ) = 0 then
79175: LD_VAR 0 4
79179: PUSH
79180: LD_VAR 0 1
79184: ARRAY
79185: PPUSH
79186: LD_INT 30
79188: PUSH
79189: LD_INT 5
79191: PUSH
79192: EMPTY
79193: LIST
79194: LIST
79195: PPUSH
79196: CALL_OW 70
79200: PUSH
79201: LD_INT 0
79203: EQUAL
79204: IFFALSE 79339
// begin temp_list2 = FilterUnitsInArea ( temp_list [ i ] , [ [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_turret ] ] , [ f_ok ] ] ) ;
79206: LD_ADDR_VAR 0 5
79210: PUSH
79211: LD_VAR 0 4
79215: PUSH
79216: LD_VAR 0 1
79220: ARRAY
79221: PPUSH
79222: LD_INT 2
79224: PUSH
79225: LD_INT 30
79227: PUSH
79228: LD_INT 32
79230: PUSH
79231: EMPTY
79232: LIST
79233: LIST
79234: PUSH
79235: LD_INT 30
79237: PUSH
79238: LD_INT 33
79240: PUSH
79241: EMPTY
79242: LIST
79243: LIST
79244: PUSH
79245: EMPTY
79246: LIST
79247: LIST
79248: LIST
79249: PUSH
79250: LD_INT 50
79252: PUSH
79253: EMPTY
79254: LIST
79255: PUSH
79256: EMPTY
79257: LIST
79258: LIST
79259: PPUSH
79260: CALL_OW 70
79264: ST_TO_ADDR
// for j in temp_list2 do
79265: LD_ADDR_VAR 0 2
79269: PUSH
79270: LD_VAR 0 5
79274: PUSH
79275: FOR_IN
79276: IFFALSE 79311
// if GetBase ( j ) = 0 then
79278: LD_VAR 0 2
79282: PPUSH
79283: CALL_OW 274
79287: PUSH
79288: LD_INT 0
79290: EQUAL
79291: IFFALSE 79309
// temp_list2 = temp_list2 diff j ;
79293: LD_ADDR_VAR 0 5
79297: PUSH
79298: LD_VAR 0 5
79302: PUSH
79303: LD_VAR 0 2
79307: DIFF
79308: ST_TO_ADDR
79309: GO 79275
79311: POP
79312: POP
// if temp_list2 < 3 then
79313: LD_VAR 0 5
79317: PUSH
79318: LD_INT 3
79320: LESS
79321: IFFALSE 79339
// special_attack = special_attack ^ i ;
79323: LD_ADDR_VAR 0 10
79327: PUSH
79328: LD_VAR 0 10
79332: PUSH
79333: LD_VAR 0 1
79337: ADD
79338: ST_TO_ADDR
// end ;
79339: GO 79172
79341: POP
79342: POP
// if special_attack > 0 then
79343: LD_VAR 0 10
79347: PUSH
79348: LD_INT 0
79350: GREATER
79351: IFFALSE 79413
// begin FinalAttack = 1 ;
79353: LD_ADDR_EXP 140
79357: PUSH
79358: LD_INT 1
79360: ST_TO_ADDR
// FAttackType = special_attack ;
79361: LD_ADDR_EXP 141
79365: PUSH
79366: LD_VAR 0 10
79370: ST_TO_ADDR
// if AttackStatus = 3 and PowellAttack = 0 and special_attack [ 1 ] < 4 then
79371: LD_EXP 134
79375: PUSH
79376: LD_INT 3
79378: EQUAL
79379: PUSH
79380: LD_EXP 139
79384: PUSH
79385: LD_INT 0
79387: EQUAL
79388: AND
79389: PUSH
79390: LD_VAR 0 10
79394: PUSH
79395: LD_INT 1
79397: ARRAY
79398: PUSH
79399: LD_INT 4
79401: LESS
79402: AND
79403: IFFALSE 79413
// PowellAttack = 1 ;
79405: LD_ADDR_EXP 139
79409: PUSH
79410: LD_INT 1
79412: ST_TO_ADDR
// end ; if special_attack = 0 then
79413: LD_VAR 0 10
79417: PUSH
79418: LD_INT 0
79420: EQUAL
79421: IFFALSE 79431
// begin FinalAttack = 0 ;
79423: LD_ADDR_EXP 140
79427: PUSH
79428: LD_INT 0
79430: ST_TO_ADDR
// end ; for base = 1 to AttackStatus do
79431: LD_ADDR_VAR 0 6
79435: PUSH
79436: DOUBLE
79437: LD_INT 1
79439: DEC
79440: ST_TO_ADDR
79441: LD_EXP 134
79445: PUSH
79446: FOR_TO
79447: IFFALSE 81783
// case AttackStatus [ base ] of 0 :
79449: LD_EXP 134
79453: PUSH
79454: LD_VAR 0 6
79458: ARRAY
79459: PUSH
79460: LD_INT 0
79462: DOUBLE
79463: EQUAL
79464: IFTRUE 79468
79466: GO 79575
79468: POP
// begin if not FinalAttack then
79469: LD_EXP 140
79473: NOT
79474: IFFALSE 79511
// AttackTimer = Replace ( AttackTimer , base , AttackTimer [ base ] - 0 0$1 ) ;
79476: LD_ADDR_EXP 135
79480: PUSH
79481: LD_EXP 135
79485: PPUSH
79486: LD_VAR 0 6
79490: PPUSH
79491: LD_EXP 135
79495: PUSH
79496: LD_VAR 0 6
79500: ARRAY
79501: PUSH
79502: LD_INT 35
79504: MINUS
79505: PPUSH
79506: CALL_OW 1
79510: ST_TO_ADDR
// if AttackTimer [ base ] <= 0 then
79511: LD_EXP 135
79515: PUSH
79516: LD_VAR 0 6
79520: ARRAY
79521: PUSH
79522: LD_INT 0
79524: LESSEQUAL
79525: IFFALSE 79573
// begin AttackStatus = Replace ( AttackStatus , base , 1 ) ;
79527: LD_ADDR_EXP 134
79531: PUSH
79532: LD_EXP 134
79536: PPUSH
79537: LD_VAR 0 6
79541: PPUSH
79542: LD_INT 1
79544: PPUSH
79545: CALL_OW 1
79549: ST_TO_ADDR
// MaxNumWarVehicles = Replace ( MaxNumWarVehicles , base , 6 ) ;
79550: LD_ADDR_EXP 133
79554: PUSH
79555: LD_EXP 133
79559: PPUSH
79560: LD_VAR 0 6
79564: PPUSH
79565: LD_INT 6
79567: PPUSH
79568: CALL_OW 1
79572: ST_TO_ADDR
// end ; end ; 1 :
79573: GO 81781
79575: LD_INT 1
79577: DOUBLE
79578: EQUAL
79579: IFTRUE 79583
79581: GO 80563
79583: POP
// begin if FinalAttack then
79584: LD_EXP 140
79588: IFFALSE 79615
// AttackStatus = Replace ( AttackStatus , base , 0 ) else
79590: LD_ADDR_EXP 134
79594: PUSH
79595: LD_EXP 134
79599: PPUSH
79600: LD_VAR 0 6
79604: PPUSH
79605: LD_INT 0
79607: PPUSH
79608: CALL_OW 1
79612: ST_TO_ADDR
79613: GO 80561
// begin temp_list = ai_vehicles_defend [ base ] ;
79615: LD_ADDR_VAR 0 4
79619: PUSH
79620: LD_EXP 77
79624: PUSH
79625: LD_VAR 0 6
79629: ARRAY
79630: ST_TO_ADDR
// for i in temp_list do
79631: LD_ADDR_VAR 0 1
79635: PUSH
79636: LD_VAR 0 4
79640: PUSH
79641: FOR_IN
79642: IFFALSE 79692
// if IsControledBy ( i ) = 0 and GetControl ( i ) = control_remote then
79644: LD_VAR 0 1
79648: PPUSH
79649: CALL_OW 312
79653: PUSH
79654: LD_INT 0
79656: EQUAL
79657: PUSH
79658: LD_VAR 0 1
79662: PPUSH
79663: CALL_OW 263
79667: PUSH
79668: LD_INT 2
79670: EQUAL
79671: AND
79672: IFFALSE 79690
// temp_list = temp_list diff i ;
79674: LD_ADDR_VAR 0 4
79678: PUSH
79679: LD_VAR 0 4
79683: PUSH
79684: LD_VAR 0 1
79688: DIFF
79689: ST_TO_ADDR
79690: GO 79641
79692: POP
79693: POP
// if temp_list = ai_vehicles_defend [ base ] and temp_list >= MaxNumWarVehicles [ base ] then
79694: LD_VAR 0 4
79698: PUSH
79699: LD_EXP 77
79703: PUSH
79704: LD_VAR 0 6
79708: ARRAY
79709: EQUAL
79710: PUSH
79711: LD_VAR 0 4
79715: PUSH
79716: LD_EXP 133
79720: PUSH
79721: LD_VAR 0 6
79725: ARRAY
79726: GREATEREQUAL
79727: AND
79728: IFFALSE 80561
// begin AttackStatus = Replace ( AttackStatus , base , 2 ) ;
79730: LD_ADDR_EXP 134
79734: PUSH
79735: LD_EXP 134
79739: PPUSH
79740: LD_VAR 0 6
79744: PPUSH
79745: LD_INT 2
79747: PPUSH
79748: CALL_OW 1
79752: ST_TO_ADDR
// MaxNumWarVehicles = Replace ( MaxNumWarVehicles , base , 0 ) ;
79753: LD_ADDR_EXP 133
79757: PUSH
79758: LD_EXP 133
79762: PPUSH
79763: LD_VAR 0 6
79767: PPUSH
79768: LD_INT 0
79770: PPUSH
79771: CALL_OW 1
79775: ST_TO_ADDR
// AttackHexCount = Replace ( AttackHexCount , base , 1 ) ;
79776: LD_ADDR_EXP 138
79780: PUSH
79781: LD_EXP 138
79785: PPUSH
79786: LD_VAR 0 6
79790: PPUSH
79791: LD_INT 1
79793: PPUSH
79794: CALL_OW 1
79798: ST_TO_ADDR
// case base of 1 :
79799: LD_VAR 0 6
79803: PUSH
79804: LD_INT 1
79806: DOUBLE
79807: EQUAL
79808: IFTRUE 79812
79810: GO 79844
79812: POP
// AttackPath = Replace ( AttackPath , base , le_path [ 1 ] ) ; 2 :
79813: LD_ADDR_EXP 137
79817: PUSH
79818: LD_EXP 137
79822: PPUSH
79823: LD_VAR 0 6
79827: PPUSH
79828: LD_VAR 0 7
79832: PUSH
79833: LD_INT 1
79835: ARRAY
79836: PPUSH
79837: CALL_OW 1
79841: ST_TO_ADDR
79842: GO 80493
79844: LD_INT 2
79846: DOUBLE
79847: EQUAL
79848: IFTRUE 79852
79850: GO 80307
79852: POP
// begin temp_list = [ 1 , 2 ] ;
79853: LD_ADDR_VAR 0 4
79857: PUSH
79858: LD_INT 1
79860: PUSH
79861: LD_INT 2
79863: PUSH
79864: EMPTY
79865: LIST
79866: LIST
79867: ST_TO_ADDR
// if 1 in BasesDestroyed then
79868: LD_INT 1
79870: PUSH
79871: LD_EXP 196
79875: IN
79876: IFFALSE 79892
// temp_list = temp_list diff 1 ;
79878: LD_ADDR_VAR 0 4
79882: PUSH
79883: LD_VAR 0 4
79887: PUSH
79888: LD_INT 1
79890: DIFF
79891: ST_TO_ADDR
// if 3 in BasesDestroyed then
79892: LD_INT 3
79894: PUSH
79895: LD_EXP 196
79899: IN
79900: IFFALSE 79916
// temp_list = temp_list diff 2 ;
79902: LD_ADDR_VAR 0 4
79906: PUSH
79907: LD_VAR 0 4
79911: PUSH
79912: LD_INT 2
79914: DIFF
79915: ST_TO_ADDR
// if temp_list = [ ] then
79916: LD_VAR 0 4
79920: PUSH
79921: EMPTY
79922: EQUAL
79923: IFFALSE 79973
// begin AttackStatus = Replace ( AttackStatus , base , 0 ) ;
79925: LD_ADDR_EXP 134
79929: PUSH
79930: LD_EXP 134
79934: PPUSH
79935: LD_VAR 0 6
79939: PPUSH
79940: LD_INT 0
79942: PPUSH
79943: CALL_OW 1
79947: ST_TO_ADDR
// AttackTimer = Replace ( AttackTimer , base , 999 999$0 ) ;
79948: LD_ADDR_EXP 135
79952: PUSH
79953: LD_EXP 135
79957: PPUSH
79958: LD_VAR 0 6
79962: PPUSH
79963: LD_INT 2097900
79965: PPUSH
79966: CALL_OW 1
79970: ST_TO_ADDR
// end else
79971: GO 80305
// if temp_list [ Rand ( 1 , temp_list ) ] = 1 then
79973: LD_VAR 0 4
79977: PUSH
79978: LD_INT 1
79980: PPUSH
79981: LD_VAR 0 4
79985: PPUSH
79986: CALL_OW 12
79990: ARRAY
79991: PUSH
79992: LD_INT 1
79994: EQUAL
79995: IFFALSE 80229
// begin case Rand ( 1 , 3 ) of 1 :
79997: LD_INT 1
79999: PPUSH
80000: LD_INT 3
80002: PPUSH
80003: CALL_OW 12
80007: PUSH
80008: LD_INT 1
80010: DOUBLE
80011: EQUAL
80012: IFTRUE 80016
80014: GO 80048
80016: POP
// AttackPath = Replace ( AttackPath , base , ru_path [ 1 ] ) ; 2 :
80017: LD_ADDR_EXP 137
80021: PUSH
80022: LD_EXP 137
80026: PPUSH
80027: LD_VAR 0 6
80031: PPUSH
80032: LD_VAR 0 8
80036: PUSH
80037: LD_INT 1
80039: ARRAY
80040: PPUSH
80041: CALL_OW 1
80045: ST_TO_ADDR
80046: GO 80227
80048: LD_INT 2
80050: DOUBLE
80051: EQUAL
80052: IFTRUE 80056
80054: GO 80088
80056: POP
// AttackPath = Replace ( AttackPath , base , ru_path [ 2 ] ) ; 3 :
80057: LD_ADDR_EXP 137
80061: PUSH
80062: LD_EXP 137
80066: PPUSH
80067: LD_VAR 0 6
80071: PPUSH
80072: LD_VAR 0 8
80076: PUSH
80077: LD_INT 2
80079: ARRAY
80080: PPUSH
80081: CALL_OW 1
80085: ST_TO_ADDR
80086: GO 80227
80088: LD_INT 3
80090: DOUBLE
80091: EQUAL
80092: IFTRUE 80096
80094: GO 80226
80096: POP
// begin AttackPath = Replace ( AttackPath , base , ru_path [ 3 ] ) ;
80097: LD_ADDR_EXP 137
80101: PUSH
80102: LD_EXP 137
80106: PPUSH
80107: LD_VAR 0 6
80111: PPUSH
80112: LD_VAR 0 8
80116: PUSH
80117: LD_INT 3
80119: ARRAY
80120: PPUSH
80121: CALL_OW 1
80125: ST_TO_ADDR
// for i = 1 to ai_vehicles_defend [ base ] do
80126: LD_ADDR_VAR 0 1
80130: PUSH
80131: DOUBLE
80132: LD_INT 1
80134: DEC
80135: ST_TO_ADDR
80136: LD_EXP 77
80140: PUSH
80141: LD_VAR 0 6
80145: ARRAY
80146: PUSH
80147: FOR_TO
80148: IFFALSE 80222
// if ( i div 2 ) = ( i / 2 ) then
80150: LD_VAR 0 1
80154: PUSH
80155: LD_INT 2
80157: DIV
80158: PUSH
80159: LD_VAR 0 1
80163: PUSH
80164: LD_INT 2
80166: DIVREAL
80167: EQUAL
80168: IFFALSE 80196
// SetTag ( ai_vehicles_defend [ base ] [ i ] , 1 ) else
80170: LD_EXP 77
80174: PUSH
80175: LD_VAR 0 6
80179: ARRAY
80180: PUSH
80181: LD_VAR 0 1
80185: ARRAY
80186: PPUSH
80187: LD_INT 1
80189: PPUSH
80190: CALL_OW 109
80194: GO 80220
// SetTag ( ai_vehicles_defend [ base ] [ i ] , 2 ) ;
80196: LD_EXP 77
80200: PUSH
80201: LD_VAR 0 6
80205: ARRAY
80206: PUSH
80207: LD_VAR 0 1
80211: ARRAY
80212: PPUSH
80213: LD_INT 2
80215: PPUSH
80216: CALL_OW 109
80220: GO 80147
80222: POP
80223: POP
// end ; end ;
80224: GO 80227
80226: POP
// end else
80227: GO 80305
// if Rand ( 1 , 2 ) = 1 then
80229: LD_INT 1
80231: PPUSH
80232: LD_INT 2
80234: PPUSH
80235: CALL_OW 12
80239: PUSH
80240: LD_INT 1
80242: EQUAL
80243: IFFALSE 80276
// AttackPath = Replace ( AttackPath , base , ru_path [ 4 ] ) else
80245: LD_ADDR_EXP 137
80249: PUSH
80250: LD_EXP 137
80254: PPUSH
80255: LD_VAR 0 6
80259: PPUSH
80260: LD_VAR 0 8
80264: PUSH
80265: LD_INT 4
80267: ARRAY
80268: PPUSH
80269: CALL_OW 1
80273: ST_TO_ADDR
80274: GO 80305
// AttackPath = Replace ( AttackPath , base , ru_path [ 5 ] ) ;
80276: LD_ADDR_EXP 137
80280: PUSH
80281: LD_EXP 137
80285: PPUSH
80286: LD_VAR 0 6
80290: PPUSH
80291: LD_VAR 0 8
80295: PUSH
80296: LD_INT 5
80298: ARRAY
80299: PPUSH
80300: CALL_OW 1
80304: ST_TO_ADDR
// end ; 3 :
80305: GO 80493
80307: LD_INT 3
80309: DOUBLE
80310: EQUAL
80311: IFTRUE 80315
80313: GO 80492
80315: POP
// if not 2 in mb_bases then
80316: LD_INT 2
80318: PUSH
80319: LD_EXP 160
80323: IN
80324: NOT
80325: IFFALSE 80358
// AttackPath = Replace ( AttackPath , base , us_path [ 1 ] ) else
80327: LD_ADDR_EXP 137
80331: PUSH
80332: LD_EXP 137
80336: PPUSH
80337: LD_VAR 0 6
80341: PPUSH
80342: LD_VAR 0 9
80346: PUSH
80347: LD_INT 1
80349: ARRAY
80350: PPUSH
80351: CALL_OW 1
80355: ST_TO_ADDR
80356: GO 80490
// case Rand ( 1 , 3 ) of 1 :
80358: LD_INT 1
80360: PPUSH
80361: LD_INT 3
80363: PPUSH
80364: CALL_OW 12
80368: PUSH
80369: LD_INT 1
80371: DOUBLE
80372: EQUAL
80373: IFTRUE 80377
80375: GO 80409
80377: POP
// AttackPath = Replace ( AttackPath , base , us_path [ 1 ] ) ; 2 :
80378: LD_ADDR_EXP 137
80382: PUSH
80383: LD_EXP 137
80387: PPUSH
80388: LD_VAR 0 6
80392: PPUSH
80393: LD_VAR 0 9
80397: PUSH
80398: LD_INT 1
80400: ARRAY
80401: PPUSH
80402: CALL_OW 1
80406: ST_TO_ADDR
80407: GO 80490
80409: LD_INT 2
80411: DOUBLE
80412: EQUAL
80413: IFTRUE 80417
80415: GO 80449
80417: POP
// AttackPath = Replace ( AttackPath , base , us_path [ 2 ] ) ; 3 :
80418: LD_ADDR_EXP 137
80422: PUSH
80423: LD_EXP 137
80427: PPUSH
80428: LD_VAR 0 6
80432: PPUSH
80433: LD_VAR 0 9
80437: PUSH
80438: LD_INT 2
80440: ARRAY
80441: PPUSH
80442: CALL_OW 1
80446: ST_TO_ADDR
80447: GO 80490
80449: LD_INT 3
80451: DOUBLE
80452: EQUAL
80453: IFTRUE 80457
80455: GO 80489
80457: POP
// AttackPath = Replace ( AttackPath , base , us_path [ 3 ] ) ; end ; end ;
80458: LD_ADDR_EXP 137
80462: PUSH
80463: LD_EXP 137
80467: PPUSH
80468: LD_VAR 0 6
80472: PPUSH
80473: LD_VAR 0 9
80477: PUSH
80478: LD_INT 3
80480: ARRAY
80481: PPUSH
80482: CALL_OW 1
80486: ST_TO_ADDR
80487: GO 80490
80489: POP
80490: GO 80493
80492: POP
// AttackUnits = Replace ( AttackUnits , base , ai_vehicles_defend [ base ] ) ;
80493: LD_ADDR_EXP 136
80497: PUSH
80498: LD_EXP 136
80502: PPUSH
80503: LD_VAR 0 6
80507: PPUSH
80508: LD_EXP 77
80512: PUSH
80513: LD_VAR 0 6
80517: ARRAY
80518: PPUSH
80519: CALL_OW 1
80523: ST_TO_ADDR
// for i in ai_vehicles_defend [ base ] do
80524: LD_ADDR_VAR 0 1
80528: PUSH
80529: LD_EXP 77
80533: PUSH
80534: LD_VAR 0 6
80538: ARRAY
80539: PUSH
80540: FOR_IN
80541: IFFALSE 80559
// RemoveVehicleFromVariables ( base , i ) ;
80543: LD_VAR 0 6
80547: PPUSH
80548: LD_VAR 0 1
80552: PPUSH
80553: CALL 38391 0 2
80557: GO 80540
80559: POP
80560: POP
// end ; end ; end ; 2 :
80561: GO 81781
80563: LD_INT 2
80565: DOUBLE
80566: EQUAL
80567: IFTRUE 80571
80569: GO 81780
80571: POP
// begin if GetBType ( HexInfo ( AttackPath [ base ] [ 2 ] [ 1 ] , AttackPath [ base ] [ 2 ] [ 2 ] ) ) = b_teleport then
80572: LD_EXP 137
80576: PUSH
80577: LD_VAR 0 6
80581: ARRAY
80582: PUSH
80583: LD_INT 2
80585: ARRAY
80586: PUSH
80587: LD_INT 1
80589: ARRAY
80590: PPUSH
80591: LD_EXP 137
80595: PUSH
80596: LD_VAR 0 6
80600: ARRAY
80601: PUSH
80602: LD_INT 2
80604: ARRAY
80605: PUSH
80606: LD_INT 2
80608: ARRAY
80609: PPUSH
80610: CALL_OW 428
80614: PPUSH
80615: CALL_OW 266
80619: PUSH
80620: LD_INT 34
80622: EQUAL
80623: IFFALSE 81194
// begin hold = 1 ;
80625: LD_ADDR_VAR 0 11
80629: PUSH
80630: LD_INT 1
80632: ST_TO_ADDR
// temp_list = UnitFilter ( AttackUnits [ base ] , [ f_inarea , base_russians ] ) ;
80633: LD_ADDR_VAR 0 4
80637: PUSH
80638: LD_EXP 136
80642: PUSH
80643: LD_VAR 0 6
80647: ARRAY
80648: PPUSH
80649: LD_INT 95
80651: PUSH
80652: LD_INT 2
80654: PUSH
80655: EMPTY
80656: LIST
80657: LIST
80658: PPUSH
80659: CALL_OW 72
80663: ST_TO_ADDR
// for i in AttackUnits [ base ] diff temp_list do
80664: LD_ADDR_VAR 0 1
80668: PUSH
80669: LD_EXP 136
80673: PUSH
80674: LD_VAR 0 6
80678: ARRAY
80679: PUSH
80680: LD_VAR 0 4
80684: DIFF
80685: PUSH
80686: FOR_IN
80687: IFFALSE 80715
// if GetTaskList ( i ) > 0 then
80689: LD_VAR 0 1
80693: PPUSH
80694: CALL_OW 437
80698: PUSH
80699: LD_INT 0
80701: GREATER
80702: IFFALSE 80713
// ComFree ( i ) ;
80704: LD_VAR 0 1
80708: PPUSH
80709: CALL_OW 139
80713: GO 80686
80715: POP
80716: POP
// if temp_list = [ ] then
80717: LD_VAR 0 4
80721: PUSH
80722: EMPTY
80723: EQUAL
80724: IFFALSE 80775
// begin hold = 0 ;
80726: LD_ADDR_VAR 0 11
80730: PUSH
80731: LD_INT 0
80733: ST_TO_ADDR
// if AttackHexCount [ base ] < 3 then
80734: LD_EXP 138
80738: PUSH
80739: LD_VAR 0 6
80743: ARRAY
80744: PUSH
80745: LD_INT 3
80747: LESS
80748: IFFALSE 80773
// AttackHexCount = Replace ( AttackHexCount , base , 3 ) ;
80750: LD_ADDR_EXP 138
80754: PUSH
80755: LD_EXP 138
80759: PPUSH
80760: LD_VAR 0 6
80764: PPUSH
80765: LD_INT 3
80767: PPUSH
80768: CALL_OW 1
80772: ST_TO_ADDR
// end else
80773: GO 81194
// if unitfilter ( temp_list , [ [ f_not , [ f_distxy , AttackPath [ base ] [ 1 ] [ 1 ] , AttackPath [ base ] [ 1 ] [ 2 ] , 11 ] ] ] ) > 0 then
80775: LD_VAR 0 4
80779: PPUSH
80780: LD_INT 3
80782: PUSH
80783: LD_INT 92
80785: PUSH
80786: LD_EXP 137
80790: PUSH
80791: LD_VAR 0 6
80795: ARRAY
80796: PUSH
80797: LD_INT 1
80799: ARRAY
80800: PUSH
80801: LD_INT 1
80803: ARRAY
80804: PUSH
80805: LD_EXP 137
80809: PUSH
80810: LD_VAR 0 6
80814: ARRAY
80815: PUSH
80816: LD_INT 1
80818: ARRAY
80819: PUSH
80820: LD_INT 2
80822: ARRAY
80823: PUSH
80824: LD_INT 11
80826: PUSH
80827: EMPTY
80828: LIST
80829: LIST
80830: LIST
80831: LIST
80832: PUSH
80833: EMPTY
80834: LIST
80835: LIST
80836: PUSH
80837: EMPTY
80838: LIST
80839: PPUSH
80840: CALL_OW 72
80844: PUSH
80845: LD_INT 0
80847: GREATER
80848: IFFALSE 80969
// begin for i in temp_list do
80850: LD_ADDR_VAR 0 1
80854: PUSH
80855: LD_VAR 0 4
80859: PUSH
80860: FOR_IN
80861: IFFALSE 80965
// if GetDistUnitXY ( i , AttackPath [ base ] [ 1 ] [ 1 ] , AttackPath [ base ] [ 1 ] [ 2 ] ) > 8 then
80863: LD_VAR 0 1
80867: PPUSH
80868: LD_EXP 137
80872: PUSH
80873: LD_VAR 0 6
80877: ARRAY
80878: PUSH
80879: LD_INT 1
80881: ARRAY
80882: PUSH
80883: LD_INT 1
80885: ARRAY
80886: PPUSH
80887: LD_EXP 137
80891: PUSH
80892: LD_VAR 0 6
80896: ARRAY
80897: PUSH
80898: LD_INT 1
80900: ARRAY
80901: PUSH
80902: LD_INT 2
80904: ARRAY
80905: PPUSH
80906: CALL_OW 297
80910: PUSH
80911: LD_INT 8
80913: GREATER
80914: IFFALSE 80963
// ComMoveXY ( i , AttackPath [ base ] [ 1 ] [ 1 ] , AttackPath [ base ] [ 1 ] [ 2 ] ) ;
80916: LD_VAR 0 1
80920: PPUSH
80921: LD_EXP 137
80925: PUSH
80926: LD_VAR 0 6
80930: ARRAY
80931: PUSH
80932: LD_INT 1
80934: ARRAY
80935: PUSH
80936: LD_INT 1
80938: ARRAY
80939: PPUSH
80940: LD_EXP 137
80944: PUSH
80945: LD_VAR 0 6
80949: ARRAY
80950: PUSH
80951: LD_INT 1
80953: ARRAY
80954: PUSH
80955: LD_INT 2
80957: ARRAY
80958: PPUSH
80959: CALL_OW 111
80963: GO 80860
80965: POP
80966: POP
// end else
80967: GO 81194
// begin temp_list2 = FilterAllUnits ( [ f_btype , b_teleport ] ) ;
80969: LD_ADDR_VAR 0 5
80973: PUSH
80974: LD_INT 30
80976: PUSH
80977: LD_INT 34
80979: PUSH
80980: EMPTY
80981: LIST
80982: LIST
80983: PPUSH
80984: CALL_OW 69
80988: ST_TO_ADDR
// if temp_list2 < 2 then
80989: LD_VAR 0 5
80993: PUSH
80994: LD_INT 2
80996: LESS
80997: IFFALSE 81030
// AttackPath = Replace ( AttackPath , base , ru_path [ 2 ] ) else
80999: LD_ADDR_EXP 137
81003: PUSH
81004: LD_EXP 137
81008: PPUSH
81009: LD_VAR 0 6
81013: PPUSH
81014: LD_VAR 0 8
81018: PUSH
81019: LD_INT 2
81021: ARRAY
81022: PPUSH
81023: CALL_OW 1
81027: ST_TO_ADDR
81028: GO 81194
// begin for i in temp_list do
81030: LD_ADDR_VAR 0 1
81034: PUSH
81035: LD_VAR 0 4
81039: PUSH
81040: FOR_IN
81041: IFFALSE 81110
// if GetTag ( i ) = 1 then
81043: LD_VAR 0 1
81047: PPUSH
81048: CALL_OW 110
81052: PUSH
81053: LD_INT 1
81055: EQUAL
81056: IFFALSE 81108
// begin SetTaskList ( i , [ [ q , 0 , 0 , temp_list2 [ 1 ] , 0 , 0 , 0 ] ] ) ;
81058: LD_VAR 0 1
81062: PPUSH
81063: LD_STRING q
81065: PUSH
81066: LD_INT 0
81068: PUSH
81069: LD_INT 0
81071: PUSH
81072: LD_VAR 0 5
81076: PUSH
81077: LD_INT 1
81079: ARRAY
81080: PUSH
81081: LD_INT 0
81083: PUSH
81084: LD_INT 0
81086: PUSH
81087: LD_INT 0
81089: PUSH
81090: EMPTY
81091: LIST
81092: LIST
81093: LIST
81094: LIST
81095: LIST
81096: LIST
81097: LIST
81098: PUSH
81099: EMPTY
81100: LIST
81101: PPUSH
81102: CALL_OW 446
// break ;
81106: GO 81110
// end ;
81108: GO 81040
81110: POP
81111: POP
// for i in temp_list do
81112: LD_ADDR_VAR 0 1
81116: PUSH
81117: LD_VAR 0 4
81121: PUSH
81122: FOR_IN
81123: IFFALSE 81192
// if GetTag ( i ) = 2 then
81125: LD_VAR 0 1
81129: PPUSH
81130: CALL_OW 110
81134: PUSH
81135: LD_INT 2
81137: EQUAL
81138: IFFALSE 81190
// begin SetTaskList ( i , [ [ q , 0 , 0 , temp_list2 [ 2 ] , 0 , 0 , 0 ] ] ) ;
81140: LD_VAR 0 1
81144: PPUSH
81145: LD_STRING q
81147: PUSH
81148: LD_INT 0
81150: PUSH
81151: LD_INT 0
81153: PUSH
81154: LD_VAR 0 5
81158: PUSH
81159: LD_INT 2
81161: ARRAY
81162: PUSH
81163: LD_INT 0
81165: PUSH
81166: LD_INT 0
81168: PUSH
81169: LD_INT 0
81171: PUSH
81172: EMPTY
81173: LIST
81174: LIST
81175: LIST
81176: LIST
81177: LIST
81178: LIST
81179: LIST
81180: PUSH
81181: EMPTY
81182: LIST
81183: PPUSH
81184: CALL_OW 446
// break ;
81188: GO 81192
// end ;
81190: GO 81122
81192: POP
81193: POP
// end ; end ; end ; if not hold then
81194: LD_VAR 0 11
81198: NOT
81199: IFFALSE 81778
// begin if unitfilter ( AttackUnits [ base ] , [ [ f_not , [ f_distxy , AttackPath [ base ] [ AttackHexCount ] [ 1 ] , AttackPath [ base ] [ AttackHexCount ] [ 2 ] , 12 ] ] , [ f_ok ] ] ) = 0 then
81201: LD_EXP 136
81205: PUSH
81206: LD_VAR 0 6
81210: ARRAY
81211: PPUSH
81212: LD_INT 3
81214: PUSH
81215: LD_INT 92
81217: PUSH
81218: LD_EXP 137
81222: PUSH
81223: LD_VAR 0 6
81227: ARRAY
81228: PUSH
81229: LD_EXP 138
81233: ARRAY
81234: PUSH
81235: LD_INT 1
81237: ARRAY
81238: PUSH
81239: LD_EXP 137
81243: PUSH
81244: LD_VAR 0 6
81248: ARRAY
81249: PUSH
81250: LD_EXP 138
81254: ARRAY
81255: PUSH
81256: LD_INT 2
81258: ARRAY
81259: PUSH
81260: LD_INT 12
81262: PUSH
81263: EMPTY
81264: LIST
81265: LIST
81266: LIST
81267: LIST
81268: PUSH
81269: EMPTY
81270: LIST
81271: LIST
81272: PUSH
81273: LD_INT 50
81275: PUSH
81276: EMPTY
81277: LIST
81278: PUSH
81279: EMPTY
81280: LIST
81281: LIST
81282: PPUSH
81283: CALL_OW 72
81287: PUSH
81288: LD_INT 0
81290: EQUAL
81291: IFFALSE 81352
// if AttackHexCount [ base ] < AttackPath [ base ] then
81293: LD_EXP 138
81297: PUSH
81298: LD_VAR 0 6
81302: ARRAY
81303: PUSH
81304: LD_EXP 137
81308: PUSH
81309: LD_VAR 0 6
81313: ARRAY
81314: LESS
81315: IFFALSE 81352
// AttackHexCount = Replace ( AttackHexCount , base , AttackHexCount [ base ] + 1 ) ;
81317: LD_ADDR_EXP 138
81321: PUSH
81322: LD_EXP 138
81326: PPUSH
81327: LD_VAR 0 6
81331: PPUSH
81332: LD_EXP 138
81336: PUSH
81337: LD_VAR 0 6
81341: ARRAY
81342: PUSH
81343: LD_INT 1
81345: PLUS
81346: PPUSH
81347: CALL_OW 1
81351: ST_TO_ADDR
// if AttackHexCount [ base ] >= AttackPath [ base ] then
81352: LD_EXP 138
81356: PUSH
81357: LD_VAR 0 6
81361: ARRAY
81362: PUSH
81363: LD_EXP 137
81367: PUSH
81368: LD_VAR 0 6
81372: ARRAY
81373: GREATEREQUAL
81374: IFFALSE 81464
// begin temp_list = UnitFilter ( AttackUnits [ base ] , [ f_ok ] ) ;
81376: LD_ADDR_VAR 0 4
81380: PUSH
81381: LD_EXP 136
81385: PUSH
81386: LD_VAR 0 6
81390: ARRAY
81391: PPUSH
81392: LD_INT 50
81394: PUSH
81395: EMPTY
81396: LIST
81397: PPUSH
81398: CALL_OW 72
81402: ST_TO_ADDR
// if temp_list > 0 then
81403: LD_VAR 0 4
81407: PUSH
81408: LD_INT 0
81410: GREATER
81411: IFFALSE 81462
// ComAttackUnit ( temp_list , NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , GetSide ( temp_list [ 1 ] ) ] ) , temp_list [ 1 ] ) ) ;
81413: LD_VAR 0 4
81417: PPUSH
81418: LD_INT 81
81420: PUSH
81421: LD_VAR 0 4
81425: PUSH
81426: LD_INT 1
81428: ARRAY
81429: PPUSH
81430: CALL_OW 255
81434: PUSH
81435: EMPTY
81436: LIST
81437: LIST
81438: PPUSH
81439: CALL_OW 69
81443: PPUSH
81444: LD_VAR 0 4
81448: PUSH
81449: LD_INT 1
81451: ARRAY
81452: PPUSH
81453: CALL_OW 74
81457: PPUSH
81458: CALL_OW 115
// end else
81462: GO 81698
// for i in AttackUnits [ base ] do
81464: LD_ADDR_VAR 0 1
81468: PUSH
81469: LD_EXP 136
81473: PUSH
81474: LD_VAR 0 6
81478: ARRAY
81479: PUSH
81480: FOR_IN
81481: IFFALSE 81696
// begin case GetWeapon ( i ) of ru_rocket , ru_rocket_launcher , us_rocket_launcher , ar_rocket_launcher :
81483: LD_VAR 0 1
81487: PPUSH
81488: CALL_OW 264
81492: PUSH
81493: LD_INT 47
81495: DOUBLE
81496: EQUAL
81497: IFTRUE 81519
81499: LD_INT 45
81501: DOUBLE
81502: EQUAL
81503: IFTRUE 81519
81505: LD_INT 7
81507: DOUBLE
81508: EQUAL
81509: IFTRUE 81519
81511: LD_INT 28
81513: DOUBLE
81514: EQUAL
81515: IFTRUE 81519
81517: GO 81530
81519: POP
// temp = 15 ; ru_heavy_gun , us_heavy_gun :
81520: LD_ADDR_VAR 0 12
81524: PUSH
81525: LD_INT 15
81527: ST_TO_ADDR
81528: GO 81564
81530: LD_INT 46
81532: DOUBLE
81533: EQUAL
81534: IFTRUE 81544
81536: LD_INT 6
81538: DOUBLE
81539: EQUAL
81540: IFTRUE 81544
81542: GO 81555
81544: POP
// temp = 12 ; else
81545: LD_ADDR_VAR 0 12
81549: PUSH
81550: LD_INT 12
81552: ST_TO_ADDR
81553: GO 81564
81555: POP
// temp = 10 ; end ;
81556: LD_ADDR_VAR 0 12
81560: PUSH
81561: LD_INT 10
81563: ST_TO_ADDR
// temp2 = FilterAllUnits ( [ [ f_enemy , GetSide ( i ) ] , [ f_dist , i , temp ] ] ) ;
81564: LD_ADDR_VAR 0 13
81568: PUSH
81569: LD_INT 81
81571: PUSH
81572: LD_VAR 0 1
81576: PPUSH
81577: CALL_OW 255
81581: PUSH
81582: EMPTY
81583: LIST
81584: LIST
81585: PUSH
81586: LD_INT 91
81588: PUSH
81589: LD_VAR 0 1
81593: PUSH
81594: LD_VAR 0 12
81598: PUSH
81599: EMPTY
81600: LIST
81601: LIST
81602: LIST
81603: PUSH
81604: EMPTY
81605: LIST
81606: LIST
81607: PPUSH
81608: CALL_OW 69
81612: ST_TO_ADDR
// if temp2 > 0 then
81613: LD_VAR 0 13
81617: PUSH
81618: LD_INT 0
81620: GREATER
81621: IFFALSE 81643
// ComAttackUnit ( i , temp2 [ 1 ] ) else
81623: LD_VAR 0 1
81627: PPUSH
81628: LD_VAR 0 13
81632: PUSH
81633: LD_INT 1
81635: ARRAY
81636: PPUSH
81637: CALL_OW 115
81641: GO 81694
// ComMoveXY ( i , AttackPath [ base ] [ AttackHexCount ] [ 1 ] , AttackPath [ base ] [ AttackHexCount ] [ 2 ] ) ;
81643: LD_VAR 0 1
81647: PPUSH
81648: LD_EXP 137
81652: PUSH
81653: LD_VAR 0 6
81657: ARRAY
81658: PUSH
81659: LD_EXP 138
81663: ARRAY
81664: PUSH
81665: LD_INT 1
81667: ARRAY
81668: PPUSH
81669: LD_EXP 137
81673: PUSH
81674: LD_VAR 0 6
81678: ARRAY
81679: PUSH
81680: LD_EXP 138
81684: ARRAY
81685: PUSH
81686: LD_INT 2
81688: ARRAY
81689: PPUSH
81690: CALL_OW 111
// end ;
81694: GO 81480
81696: POP
81697: POP
// if UnitFilter ( AttackUnits [ base ] , [ f_ok ] ) = 0 and not FinalAttack then
81698: LD_EXP 136
81702: PUSH
81703: LD_VAR 0 6
81707: ARRAY
81708: PPUSH
81709: LD_INT 50
81711: PUSH
81712: EMPTY
81713: LIST
81714: PPUSH
81715: CALL_OW 72
81719: PUSH
81720: LD_INT 0
81722: EQUAL
81723: PUSH
81724: LD_EXP 140
81728: NOT
81729: AND
81730: IFFALSE 81778
// begin AttackStatus = Replace ( AttackStatus , base , 0 ) ;
81732: LD_ADDR_EXP 134
81736: PUSH
81737: LD_EXP 134
81741: PPUSH
81742: LD_VAR 0 6
81746: PPUSH
81747: LD_INT 0
81749: PPUSH
81750: CALL_OW 1
81754: ST_TO_ADDR
// AttackTimer = Replace ( AttackTimer , base , 0 0$30 ) ;
81755: LD_ADDR_EXP 135
81759: PUSH
81760: LD_EXP 135
81764: PPUSH
81765: LD_VAR 0 6
81769: PPUSH
81770: LD_INT 1050
81772: PPUSH
81773: CALL_OW 1
81777: ST_TO_ADDR
// end ; end ; end ; end ;
81778: GO 81781
81780: POP
81781: GO 79446
81783: POP
81784: POP
// enable ;
81785: ENABLE
// end ;
81786: PPOPN 13
81788: END
// every 0 0$1 trigger FinalAttack do var i , j , temp , path , hex , temp_list , temp_list2 , c , un , val , dist ;
81789: LD_EXP 140
81793: IFFALSE 84021
81795: GO 81797
81797: DISABLE
81798: LD_INT 0
81800: PPUSH
81801: PPUSH
81802: PPUSH
81803: PPUSH
81804: PPUSH
81805: PPUSH
81806: PPUSH
81807: PPUSH
81808: PPUSH
81809: PPUSH
81810: PPUSH
// begin for i in [ 1 , 3 ] do
81811: LD_ADDR_VAR 0 1
81815: PUSH
81816: LD_INT 1
81818: PUSH
81819: LD_INT 3
81821: PUSH
81822: EMPTY
81823: LIST
81824: LIST
81825: PUSH
81826: FOR_IN
81827: IFFALSE 81887
// if MaxNumWarVehicles [ i ] = 0 then
81829: LD_EXP 133
81833: PUSH
81834: LD_VAR 0 1
81838: ARRAY
81839: PUSH
81840: LD_INT 0
81842: EQUAL
81843: IFFALSE 81885
// MaxNumWarVehicles = Replace ( MaxNumWarVehicles , i , [ 4 , 5 , 6 ] [ difficulty ] ) ;
81845: LD_ADDR_EXP 133
81849: PUSH
81850: LD_EXP 133
81854: PPUSH
81855: LD_VAR 0 1
81859: PPUSH
81860: LD_INT 4
81862: PUSH
81863: LD_INT 5
81865: PUSH
81866: LD_INT 6
81868: PUSH
81869: EMPTY
81870: LIST
81871: LIST
81872: LIST
81873: PUSH
81874: LD_OWVAR 67
81878: ARRAY
81879: PPUSH
81880: CALL_OW 1
81884: ST_TO_ADDR
81885: GO 81826
81887: POP
81888: POP
// path = [ [ [ 231 , 178 ] , [ 225 , 180 ] , [ 216 , 173 ] ] , [ [ 231 , 178 ] , [ 236 , 187 ] , [ 241 , 194 ] , [ 238 , 201 ] ] , [ [ 231 , 178 ] , [ 236 , 187 ] , [ 246 , 200 ] , [ 252 , 210 ] , [ 254 , 217 ] , [ 254 , 227 ] , [ 257 , 236 ] ] , [ [ 108 , 195 ] , [ 118 , 201 ] , [ 129 , 207 ] , [ 138 , 210 ] , [ 148 , 211 ] ] , ] ;
81889: LD_ADDR_VAR 0 4
81893: PUSH
81894: LD_INT 231
81896: PUSH
81897: LD_INT 178
81899: PUSH
81900: EMPTY
81901: LIST
81902: LIST
81903: PUSH
81904: LD_INT 225
81906: PUSH
81907: LD_INT 180
81909: PUSH
81910: EMPTY
81911: LIST
81912: LIST
81913: PUSH
81914: LD_INT 216
81916: PUSH
81917: LD_INT 173
81919: PUSH
81920: EMPTY
81921: LIST
81922: LIST
81923: PUSH
81924: EMPTY
81925: LIST
81926: LIST
81927: LIST
81928: PUSH
81929: LD_INT 231
81931: PUSH
81932: LD_INT 178
81934: PUSH
81935: EMPTY
81936: LIST
81937: LIST
81938: PUSH
81939: LD_INT 236
81941: PUSH
81942: LD_INT 187
81944: PUSH
81945: EMPTY
81946: LIST
81947: LIST
81948: PUSH
81949: LD_INT 241
81951: PUSH
81952: LD_INT 194
81954: PUSH
81955: EMPTY
81956: LIST
81957: LIST
81958: PUSH
81959: LD_INT 238
81961: PUSH
81962: LD_INT 201
81964: PUSH
81965: EMPTY
81966: LIST
81967: LIST
81968: PUSH
81969: EMPTY
81970: LIST
81971: LIST
81972: LIST
81973: LIST
81974: PUSH
81975: LD_INT 231
81977: PUSH
81978: LD_INT 178
81980: PUSH
81981: EMPTY
81982: LIST
81983: LIST
81984: PUSH
81985: LD_INT 236
81987: PUSH
81988: LD_INT 187
81990: PUSH
81991: EMPTY
81992: LIST
81993: LIST
81994: PUSH
81995: LD_INT 246
81997: PUSH
81998: LD_INT 200
82000: PUSH
82001: EMPTY
82002: LIST
82003: LIST
82004: PUSH
82005: LD_INT 252
82007: PUSH
82008: LD_INT 210
82010: PUSH
82011: EMPTY
82012: LIST
82013: LIST
82014: PUSH
82015: LD_INT 254
82017: PUSH
82018: LD_INT 217
82020: PUSH
82021: EMPTY
82022: LIST
82023: LIST
82024: PUSH
82025: LD_INT 254
82027: PUSH
82028: LD_INT 227
82030: PUSH
82031: EMPTY
82032: LIST
82033: LIST
82034: PUSH
82035: LD_INT 257
82037: PUSH
82038: LD_INT 236
82040: PUSH
82041: EMPTY
82042: LIST
82043: LIST
82044: PUSH
82045: EMPTY
82046: LIST
82047: LIST
82048: LIST
82049: LIST
82050: LIST
82051: LIST
82052: LIST
82053: PUSH
82054: LD_INT 108
82056: PUSH
82057: LD_INT 195
82059: PUSH
82060: EMPTY
82061: LIST
82062: LIST
82063: PUSH
82064: LD_INT 118
82066: PUSH
82067: LD_INT 201
82069: PUSH
82070: EMPTY
82071: LIST
82072: LIST
82073: PUSH
82074: LD_INT 129
82076: PUSH
82077: LD_INT 207
82079: PUSH
82080: EMPTY
82081: LIST
82082: LIST
82083: PUSH
82084: LD_INT 138
82086: PUSH
82087: LD_INT 210
82089: PUSH
82090: EMPTY
82091: LIST
82092: LIST
82093: PUSH
82094: LD_INT 148
82096: PUSH
82097: LD_INT 211
82099: PUSH
82100: EMPTY
82101: LIST
82102: LIST
82103: PUSH
82104: EMPTY
82105: LIST
82106: LIST
82107: LIST
82108: LIST
82109: LIST
82110: PUSH
82111: EMPTY
82112: LIST
82113: LIST
82114: LIST
82115: LIST
82116: ST_TO_ADDR
// hex = [ [ 148 , 211 ] ] ;
82117: LD_ADDR_VAR 0 5
82121: PUSH
82122: LD_INT 148
82124: PUSH
82125: LD_INT 211
82127: PUSH
82128: EMPTY
82129: LIST
82130: LIST
82131: PUSH
82132: EMPTY
82133: LIST
82134: ST_TO_ADDR
// case FAttackType [ 1 ] of 1 :
82135: LD_EXP 141
82139: PUSH
82140: LD_INT 1
82142: ARRAY
82143: PUSH
82144: LD_INT 1
82146: DOUBLE
82147: EQUAL
82148: IFTRUE 82152
82150: GO 82179
82152: POP
// hex = hex ^ [ [ 216 , 173 ] ] ; 2 :
82153: LD_ADDR_VAR 0 5
82157: PUSH
82158: LD_VAR 0 5
82162: PUSH
82163: LD_INT 216
82165: PUSH
82166: LD_INT 173
82168: PUSH
82169: EMPTY
82170: LIST
82171: LIST
82172: PUSH
82173: EMPTY
82174: LIST
82175: ADD
82176: ST_TO_ADDR
82177: GO 82250
82179: LD_INT 2
82181: DOUBLE
82182: EQUAL
82183: IFTRUE 82187
82185: GO 82214
82187: POP
// hex = hex ^ [ [ 238 , 201 ] ] ; 3 :
82188: LD_ADDR_VAR 0 5
82192: PUSH
82193: LD_VAR 0 5
82197: PUSH
82198: LD_INT 238
82200: PUSH
82201: LD_INT 201
82203: PUSH
82204: EMPTY
82205: LIST
82206: LIST
82207: PUSH
82208: EMPTY
82209: LIST
82210: ADD
82211: ST_TO_ADDR
82212: GO 82250
82214: LD_INT 3
82216: DOUBLE
82217: EQUAL
82218: IFTRUE 82222
82220: GO 82249
82222: POP
// hex = hex ^ [ [ 257 , 236 ] ] ; end ;
82223: LD_ADDR_VAR 0 5
82227: PUSH
82228: LD_VAR 0 5
82232: PUSH
82233: LD_INT 257
82235: PUSH
82236: LD_INT 236
82238: PUSH
82239: EMPTY
82240: LIST
82241: LIST
82242: PUSH
82243: EMPTY
82244: LIST
82245: ADD
82246: ST_TO_ADDR
82247: GO 82250
82249: POP
// temp_list = ai_vehicles_defend [ 1 ] ;
82250: LD_ADDR_VAR 0 6
82254: PUSH
82255: LD_EXP 77
82259: PUSH
82260: LD_INT 1
82262: ARRAY
82263: ST_TO_ADDR
// for i in temp_list do
82264: LD_ADDR_VAR 0 1
82268: PUSH
82269: LD_VAR 0 6
82273: PUSH
82274: FOR_IN
82275: IFFALSE 82310
// if IsControledBy ( i ) = 0 then
82277: LD_VAR 0 1
82281: PPUSH
82282: CALL_OW 312
82286: PUSH
82287: LD_INT 0
82289: EQUAL
82290: IFFALSE 82308
// temp_list = temp_list diff i ;
82292: LD_ADDR_VAR 0 6
82296: PUSH
82297: LD_VAR 0 6
82301: PUSH
82302: LD_VAR 0 1
82306: DIFF
82307: ST_TO_ADDR
82308: GO 82274
82310: POP
82311: POP
// if 4 in FAttackType and temp_list = MaxNumWarVehicles [ 1 ] and FinalVehs [ 1 ] = 0 then
82312: LD_INT 4
82314: PUSH
82315: LD_EXP 141
82319: IN
82320: PUSH
82321: LD_VAR 0 6
82325: PUSH
82326: LD_EXP 133
82330: PUSH
82331: LD_INT 1
82333: ARRAY
82334: EQUAL
82335: AND
82336: PUSH
82337: LD_EXP 142
82341: PUSH
82342: LD_INT 1
82344: ARRAY
82345: PUSH
82346: LD_INT 0
82348: EQUAL
82349: AND
82350: IFFALSE 82433
// begin FinalVehs = Replace ( FinalVehs , 1 , ai_vehicles_defend [ 1 ] ) ;
82352: LD_ADDR_EXP 142
82356: PUSH
82357: LD_EXP 142
82361: PPUSH
82362: LD_INT 1
82364: PPUSH
82365: LD_EXP 77
82369: PUSH
82370: LD_INT 1
82372: ARRAY
82373: PPUSH
82374: CALL_OW 1
82378: ST_TO_ADDR
// Fcount = Replace ( Fcount , 1 , 1 ) ;
82379: LD_ADDR_EXP 145
82383: PUSH
82384: LD_EXP 145
82388: PPUSH
82389: LD_INT 1
82391: PPUSH
82392: LD_INT 1
82394: PPUSH
82395: CALL_OW 1
82399: ST_TO_ADDR
// for i in ai_vehicles_defend [ 1 ] do
82400: LD_ADDR_VAR 0 1
82404: PUSH
82405: LD_EXP 77
82409: PUSH
82410: LD_INT 1
82412: ARRAY
82413: PUSH
82414: FOR_IN
82415: IFFALSE 82431
// RemoveVehicleFromVariables ( 1 , i ) ;
82417: LD_INT 1
82419: PPUSH
82420: LD_VAR 0 1
82424: PPUSH
82425: CALL 38391 0 2
82429: GO 82414
82431: POP
82432: POP
// end ; temp_list = ai_vehicles_defend [ 3 ] ;
82433: LD_ADDR_VAR 0 6
82437: PUSH
82438: LD_EXP 77
82442: PUSH
82443: LD_INT 3
82445: ARRAY
82446: ST_TO_ADDR
// for i in temp_list do
82447: LD_ADDR_VAR 0 1
82451: PUSH
82452: LD_VAR 0 6
82456: PUSH
82457: FOR_IN
82458: IFFALSE 82493
// if IsControledBy ( i ) = 0 then
82460: LD_VAR 0 1
82464: PPUSH
82465: CALL_OW 312
82469: PUSH
82470: LD_INT 0
82472: EQUAL
82473: IFFALSE 82491
// temp_list = temp_list diff i ;
82475: LD_ADDR_VAR 0 6
82479: PUSH
82480: LD_VAR 0 6
82484: PUSH
82485: LD_VAR 0 1
82489: DIFF
82490: ST_TO_ADDR
82491: GO 82457
82493: POP
82494: POP
// if FAttackType [ 1 ] < 4 and temp_list = MaxNumWarVehicles [ 3 ] and FinalVehs [ 2 ] = 0 then
82495: LD_EXP 141
82499: PUSH
82500: LD_INT 1
82502: ARRAY
82503: PUSH
82504: LD_INT 4
82506: LESS
82507: PUSH
82508: LD_VAR 0 6
82512: PUSH
82513: LD_EXP 133
82517: PUSH
82518: LD_INT 3
82520: ARRAY
82521: EQUAL
82522: AND
82523: PUSH
82524: LD_EXP 142
82528: PUSH
82529: LD_INT 2
82531: ARRAY
82532: PUSH
82533: LD_INT 0
82535: EQUAL
82536: AND
82537: IFFALSE 82847
// begin temp = FAttackType [ 1 ] ;
82539: LD_ADDR_VAR 0 3
82543: PUSH
82544: LD_EXP 141
82548: PUSH
82549: LD_INT 1
82551: ARRAY
82552: ST_TO_ADDR
// FinalVehs = Replace ( FinalVehs , 2 , ai_vehicles_defend [ 3 ] ) ;
82553: LD_ADDR_EXP 142
82557: PUSH
82558: LD_EXP 142
82562: PPUSH
82563: LD_INT 2
82565: PPUSH
82566: LD_EXP 77
82570: PUSH
82571: LD_INT 3
82573: ARRAY
82574: PPUSH
82575: CALL_OW 1
82579: ST_TO_ADDR
// Fcount = Replace ( Fcount , 2 , 1 ) ;
82580: LD_ADDR_EXP 145
82584: PUSH
82585: LD_EXP 145
82589: PPUSH
82590: LD_INT 2
82592: PPUSH
82593: LD_INT 1
82595: PPUSH
82596: CALL_OW 1
82600: ST_TO_ADDR
// for i in ai_vehicles_defend [ 3 ] do
82601: LD_ADDR_VAR 0 1
82605: PUSH
82606: LD_EXP 77
82610: PUSH
82611: LD_INT 3
82613: ARRAY
82614: PUSH
82615: FOR_IN
82616: IFFALSE 82632
// RemoveVehicleFromVariables ( 3 , i ) ;
82618: LD_INT 3
82620: PPUSH
82621: LD_VAR 0 1
82625: PPUSH
82626: CALL 38391 0 2
82630: GO 82615
82632: POP
82633: POP
// if PowellAttack = 1 then
82634: LD_EXP 139
82638: PUSH
82639: LD_INT 1
82641: EQUAL
82642: IFFALSE 82847
// begin temp_list = Powell ;
82644: LD_ADDR_VAR 0 6
82648: PUSH
82649: LD_EXP 36
82653: ST_TO_ADDR
// RemoveHumanFromVariables ( 3 , Powell , false ) ;
82654: LD_INT 3
82656: PPUSH
82657: LD_EXP 36
82661: PPUSH
82662: LD_INT 0
82664: PPUSH
82665: CALL 39375 0 3
// for i = 1 to 9 do
82669: LD_ADDR_VAR 0 1
82673: PUSH
82674: DOUBLE
82675: LD_INT 1
82677: DEC
82678: ST_TO_ADDR
82679: LD_INT 9
82681: PUSH
82682: FOR_TO
82683: IFFALSE 82804
// begin if i < 5 then
82685: LD_VAR 0 1
82689: PUSH
82690: LD_INT 5
82692: LESS
82693: IFFALSE 82705
// c = class_sniper else
82695: LD_ADDR_VAR 0 8
82699: PUSH
82700: LD_INT 5
82702: ST_TO_ADDR
82703: GO 82713
// c = class_soldier ;
82705: LD_ADDR_VAR 0 8
82709: PUSH
82710: LD_INT 1
82712: ST_TO_ADDR
// temp_list2 = UnitFilter ( ai_soldiers [ 3 ] , [ f_class , c ] ) ;
82713: LD_ADDR_VAR 0 7
82717: PUSH
82718: LD_EXP 50
82722: PUSH
82723: LD_INT 3
82725: ARRAY
82726: PPUSH
82727: LD_INT 25
82729: PUSH
82730: LD_VAR 0 8
82734: PUSH
82735: EMPTY
82736: LIST
82737: LIST
82738: PPUSH
82739: CALL_OW 72
82743: ST_TO_ADDR
// un = BestOfSkill ( temp_list2 , skill_combat ) ;
82744: LD_ADDR_VAR 0 9
82748: PUSH
82749: LD_VAR 0 7
82753: PPUSH
82754: LD_INT 1
82756: PPUSH
82757: CALL 18687 0 2
82761: ST_TO_ADDR
// temp_list = temp_list ^ un ;
82762: LD_ADDR_VAR 0 6
82766: PUSH
82767: LD_VAR 0 6
82771: PUSH
82772: LD_VAR 0 9
82776: ADD
82777: ST_TO_ADDR
// RemoveHumanFromVariables ( 3 , un , false ) ;
82778: LD_INT 3
82780: PPUSH
82781: LD_VAR 0 9
82785: PPUSH
82786: LD_INT 0
82788: PPUSH
82789: CALL 39375 0 3
// ComExitBuilding ( un ) ;
82793: LD_VAR 0 9
82797: PPUSH
82798: CALL_OW 122
// end ;
82802: GO 82682
82804: POP
82805: POP
// FinalVehs = Replace ( FinalVehs , 2 , FinalVehs [ 2 ] ^ temp_list ) ;
82806: LD_ADDR_EXP 142
82810: PUSH
82811: LD_EXP 142
82815: PPUSH
82816: LD_INT 2
82818: PPUSH
82819: LD_EXP 142
82823: PUSH
82824: LD_INT 2
82826: ARRAY
82827: PUSH
82828: LD_VAR 0 6
82832: ADD
82833: PPUSH
82834: CALL_OW 1
82838: ST_TO_ADDR
// PowellAttack = 2 ;
82839: LD_ADDR_EXP 139
82843: PUSH
82844: LD_INT 2
82846: ST_TO_ADDR
// end ; end ; for i = 1 to 2 do
82847: LD_ADDR_VAR 0 1
82851: PUSH
82852: DOUBLE
82853: LD_INT 1
82855: DEC
82856: ST_TO_ADDR
82857: LD_INT 2
82859: PUSH
82860: FOR_TO
82861: IFFALSE 83950
// if FinalVehs [ i ] > 0 then
82863: LD_EXP 142
82867: PUSH
82868: LD_VAR 0 1
82872: ARRAY
82873: PUSH
82874: LD_INT 0
82876: GREATER
82877: IFFALSE 83948
// if Fattacking [ i ] = 0 then
82879: LD_EXP 143
82883: PUSH
82884: LD_VAR 0 1
82888: ARRAY
82889: PUSH
82890: LD_INT 0
82892: EQUAL
82893: IFFALSE 83340
// begin temp = Fcount [ i ] ;
82895: LD_ADDR_VAR 0 3
82899: PUSH
82900: LD_EXP 145
82904: PUSH
82905: LD_VAR 0 1
82909: ARRAY
82910: ST_TO_ADDR
// val = FAttackType [ 1 ] ;
82911: LD_ADDR_VAR 0 10
82915: PUSH
82916: LD_EXP 141
82920: PUSH
82921: LD_INT 1
82923: ARRAY
82924: ST_TO_ADDR
// if Fcount [ i ] = 1 then
82925: LD_EXP 145
82929: PUSH
82930: LD_VAR 0 1
82934: ARRAY
82935: PUSH
82936: LD_INT 1
82938: EQUAL
82939: IFFALSE 83022
// begin for j in path [ val ] do
82941: LD_ADDR_VAR 0 2
82945: PUSH
82946: LD_VAR 0 4
82950: PUSH
82951: LD_VAR 0 10
82955: ARRAY
82956: PUSH
82957: FOR_IN
82958: IFFALSE 82995
// AddComMoveXY ( FinalVehs [ i ] , j [ 1 ] , j [ 2 ] ) ;
82960: LD_EXP 142
82964: PUSH
82965: LD_VAR 0 1
82969: ARRAY
82970: PPUSH
82971: LD_VAR 0 2
82975: PUSH
82976: LD_INT 1
82978: ARRAY
82979: PPUSH
82980: LD_VAR 0 2
82984: PUSH
82985: LD_INT 2
82987: ARRAY
82988: PPUSH
82989: CALL_OW 171
82993: GO 82957
82995: POP
82996: POP
// Fcount = Replace ( Fcount , i , 2 ) ;
82997: LD_ADDR_EXP 145
83001: PUSH
83002: LD_EXP 145
83006: PPUSH
83007: LD_VAR 0 1
83011: PPUSH
83012: LD_INT 2
83014: PPUSH
83015: CALL_OW 1
83019: ST_TO_ADDR
// end else
83020: GO 83144
// for j in FinalVehs [ i ] do
83022: LD_ADDR_VAR 0 2
83026: PUSH
83027: LD_EXP 142
83031: PUSH
83032: LD_VAR 0 1
83036: ARRAY
83037: PUSH
83038: FOR_IN
83039: IFFALSE 83142
// if Hastask ( j ) = 0 and GetDistUnitXY ( j , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] ) > 6 then
83041: LD_VAR 0 2
83045: PPUSH
83046: CALL_OW 314
83050: PUSH
83051: LD_INT 0
83053: EQUAL
83054: PUSH
83055: LD_VAR 0 2
83059: PPUSH
83060: LD_VAR 0 5
83064: PUSH
83065: LD_VAR 0 1
83069: ARRAY
83070: PUSH
83071: LD_INT 1
83073: ARRAY
83074: PPUSH
83075: LD_VAR 0 5
83079: PUSH
83080: LD_VAR 0 1
83084: ARRAY
83085: PUSH
83086: LD_INT 2
83088: ARRAY
83089: PPUSH
83090: CALL_OW 297
83094: PUSH
83095: LD_INT 6
83097: GREATER
83098: AND
83099: IFFALSE 83140
// ComMoveXY ( j , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] ) ;
83101: LD_VAR 0 2
83105: PPUSH
83106: LD_VAR 0 5
83110: PUSH
83111: LD_VAR 0 1
83115: ARRAY
83116: PUSH
83117: LD_INT 1
83119: ARRAY
83120: PPUSH
83121: LD_VAR 0 5
83125: PUSH
83126: LD_VAR 0 1
83130: ARRAY
83131: PUSH
83132: LD_INT 2
83134: ARRAY
83135: PPUSH
83136: CALL_OW 111
83140: GO 83038
83142: POP
83143: POP
// if UnitFilter ( FinalVehs [ i ] , [ [ f_not , [ f_distxy , hex [ i ] [ 1 ] , hex [ i ] [ 2 ] , 6 ] ] , [ f_ok ] ] ) = 0 then
83144: LD_EXP 142
83148: PUSH
83149: LD_VAR 0 1
83153: ARRAY
83154: PPUSH
83155: LD_INT 3
83157: PUSH
83158: LD_INT 92
83160: PUSH
83161: LD_VAR 0 5
83165: PUSH
83166: LD_VAR 0 1
83170: ARRAY
83171: PUSH
83172: LD_INT 1
83174: ARRAY
83175: PUSH
83176: LD_VAR 0 5
83180: PUSH
83181: LD_VAR 0 1
83185: ARRAY
83186: PUSH
83187: LD_INT 2
83189: ARRAY
83190: PUSH
83191: LD_INT 6
83193: PUSH
83194: EMPTY
83195: LIST
83196: LIST
83197: LIST
83198: LIST
83199: PUSH
83200: EMPTY
83201: LIST
83202: LIST
83203: PUSH
83204: LD_INT 50
83206: PUSH
83207: EMPTY
83208: LIST
83209: PUSH
83210: EMPTY
83211: LIST
83212: LIST
83213: PPUSH
83214: CALL_OW 72
83218: PUSH
83219: LD_INT 0
83221: EQUAL
83222: IFFALSE 83247
// Fattacking = Replace ( Fattacking , i , 1 ) ;
83224: LD_ADDR_EXP 143
83228: PUSH
83229: LD_EXP 143
83233: PPUSH
83234: LD_VAR 0 1
83238: PPUSH
83239: LD_INT 1
83241: PPUSH
83242: CALL_OW 1
83246: ST_TO_ADDR
// for j in FilterAllUnits ( [ f_or , [ f_side , 2 ] , [ f_side , 3 ] ] ) do
83247: LD_ADDR_VAR 0 2
83251: PUSH
83252: LD_INT 2
83254: PUSH
83255: LD_INT 22
83257: PUSH
83258: LD_INT 2
83260: PUSH
83261: EMPTY
83262: LIST
83263: LIST
83264: PUSH
83265: LD_INT 22
83267: PUSH
83268: LD_INT 3
83270: PUSH
83271: EMPTY
83272: LIST
83273: LIST
83274: PUSH
83275: EMPTY
83276: LIST
83277: LIST
83278: LIST
83279: PPUSH
83280: CALL_OW 69
83284: PUSH
83285: FOR_IN
83286: IFFALSE 83336
// if Attacks ( j ) in FinalVehs [ i ] then
83288: LD_VAR 0 2
83292: PPUSH
83293: CALL_OW 320
83297: PUSH
83298: LD_EXP 142
83302: PUSH
83303: LD_VAR 0 1
83307: ARRAY
83308: IN
83309: IFFALSE 83334
// Fattacking = Replace ( Fattacking , i , 1 ) ;
83311: LD_ADDR_EXP 143
83315: PUSH
83316: LD_EXP 143
83320: PPUSH
83321: LD_VAR 0 1
83325: PPUSH
83326: LD_INT 1
83328: PPUSH
83329: CALL_OW 1
83333: ST_TO_ADDR
83334: GO 83285
83336: POP
83337: POP
// end else
83338: GO 83948
// begin for j in FinalVehs [ i ] do
83340: LD_ADDR_VAR 0 2
83344: PUSH
83345: LD_EXP 142
83349: PUSH
83350: LD_VAR 0 1
83354: ARRAY
83355: PUSH
83356: FOR_IN
83357: IFFALSE 83410
// if not IsOk ( j ) then
83359: LD_VAR 0 2
83363: PPUSH
83364: CALL_OW 302
83368: NOT
83369: IFFALSE 83408
// FinalVehs = Replace ( FinalVehs , i , FinalVehs [ i ] diff j ) ;
83371: LD_ADDR_EXP 142
83375: PUSH
83376: LD_EXP 142
83380: PPUSH
83381: LD_VAR 0 1
83385: PPUSH
83386: LD_EXP 142
83390: PUSH
83391: LD_VAR 0 1
83395: ARRAY
83396: PUSH
83397: LD_VAR 0 2
83401: DIFF
83402: PPUSH
83403: CALL_OW 1
83407: ST_TO_ADDR
83408: GO 83356
83410: POP
83411: POP
// if FinalVehs [ i ] = 0 then
83412: LD_EXP 142
83416: PUSH
83417: LD_VAR 0 1
83421: ARRAY
83422: PUSH
83423: LD_INT 0
83425: EQUAL
83426: IFFALSE 83453
// begin Fattacking = Replace ( Fattacking , i , 0 ) ;
83428: LD_ADDR_EXP 143
83432: PUSH
83433: LD_EXP 143
83437: PPUSH
83438: LD_VAR 0 1
83442: PPUSH
83443: LD_INT 0
83445: PPUSH
83446: CALL_OW 1
83450: ST_TO_ADDR
// continue ;
83451: GO 82860
// end ; temp_list = [ ] ;
83453: LD_ADDR_VAR 0 6
83457: PUSH
83458: EMPTY
83459: ST_TO_ADDR
// for j in FilterAllUnits ( [ f_side , 2 ] ) do
83460: LD_ADDR_VAR 0 2
83464: PUSH
83465: LD_INT 22
83467: PUSH
83468: LD_INT 2
83470: PUSH
83471: EMPTY
83472: LIST
83473: LIST
83474: PPUSH
83475: CALL_OW 69
83479: PUSH
83480: FOR_IN
83481: IFFALSE 83519
// if GetDistUnitArea ( j , base_russians ) <= 10 then
83483: LD_VAR 0 2
83487: PPUSH
83488: LD_INT 2
83490: PPUSH
83491: CALL_OW 299
83495: PUSH
83496: LD_INT 10
83498: LESSEQUAL
83499: IFFALSE 83517
// temp_list = temp_list ^ j ;
83501: LD_ADDR_VAR 0 6
83505: PUSH
83506: LD_VAR 0 6
83510: PUSH
83511: LD_VAR 0 2
83515: ADD
83516: ST_TO_ADDR
83517: GO 83480
83519: POP
83520: POP
// if temp_list = 0 then
83521: LD_VAR 0 6
83525: PUSH
83526: LD_INT 0
83528: EQUAL
83529: IFFALSE 83593
// begin temp = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 3 ] ) , FinalVehs [ i ] [ 1 ] ) ;
83531: LD_ADDR_VAR 0 3
83535: PUSH
83536: LD_INT 22
83538: PUSH
83539: LD_INT 3
83541: PUSH
83542: EMPTY
83543: LIST
83544: LIST
83545: PPUSH
83546: CALL_OW 69
83550: PPUSH
83551: LD_EXP 142
83555: PUSH
83556: LD_VAR 0 1
83560: ARRAY
83561: PUSH
83562: LD_INT 1
83564: ARRAY
83565: PPUSH
83566: CALL_OW 74
83570: ST_TO_ADDR
// ComAttackUnit ( FinalVehs [ i ] , temp ) ;
83571: LD_EXP 142
83575: PUSH
83576: LD_VAR 0 1
83580: ARRAY
83581: PPUSH
83582: LD_VAR 0 3
83586: PPUSH
83587: CALL_OW 115
// end else
83591: GO 83948
// for j in FinalVehs [ i ] do
83593: LD_ADDR_VAR 0 2
83597: PUSH
83598: LD_EXP 142
83602: PUSH
83603: LD_VAR 0 1
83607: ARRAY
83608: PUSH
83609: FOR_IN
83610: IFFALSE 83946
// begin if GetType ( j ) = unit_human or GetWeapon ( j ) in [ us_gatling_gun , us_rocket_launcher , ar_gatling_gun , ar_flame_thrower , ar_rocket_launcher ] then
83612: LD_VAR 0 2
83616: PPUSH
83617: CALL_OW 247
83621: PUSH
83622: LD_INT 1
83624: EQUAL
83625: PUSH
83626: LD_VAR 0 2
83630: PPUSH
83631: CALL_OW 264
83635: PUSH
83636: LD_INT 4
83638: PUSH
83639: LD_INT 7
83641: PUSH
83642: LD_INT 25
83644: PUSH
83645: LD_INT 26
83647: PUSH
83648: LD_INT 28
83650: PUSH
83651: EMPTY
83652: LIST
83653: LIST
83654: LIST
83655: LIST
83656: LIST
83657: IN
83658: OR
83659: IFFALSE 83678
// temp = [ unit_human , unit_vehicle ] else
83661: LD_ADDR_VAR 0 3
83665: PUSH
83666: LD_INT 1
83668: PUSH
83669: LD_INT 2
83671: PUSH
83672: EMPTY
83673: LIST
83674: LIST
83675: ST_TO_ADDR
83676: GO 83693
// temp = [ unit_vehicle , unit_human ] ;
83678: LD_ADDR_VAR 0 3
83682: PUSH
83683: LD_INT 2
83685: PUSH
83686: LD_INT 1
83688: PUSH
83689: EMPTY
83690: LIST
83691: LIST
83692: ST_TO_ADDR
// temp_list2 = UnitFilter ( temp_list , [ f_type , temp [ 1 ] ] ) ^ UnitFilter ( temp_list , [ f_type , temp [ 2 ] ] ) ;
83693: LD_ADDR_VAR 0 7
83697: PUSH
83698: LD_VAR 0 6
83702: PPUSH
83703: LD_INT 21
83705: PUSH
83706: LD_VAR 0 3
83710: PUSH
83711: LD_INT 1
83713: ARRAY
83714: PUSH
83715: EMPTY
83716: LIST
83717: LIST
83718: PPUSH
83719: CALL_OW 72
83723: PUSH
83724: LD_VAR 0 6
83728: PPUSH
83729: LD_INT 21
83731: PUSH
83732: LD_VAR 0 3
83736: PUSH
83737: LD_INT 2
83739: ARRAY
83740: PUSH
83741: EMPTY
83742: LIST
83743: LIST
83744: PPUSH
83745: CALL_OW 72
83749: ADD
83750: ST_TO_ADDR
// temp = NearestUnitToUnit ( temp_list2 , FinalVehs [ i ] [ 1 ] ) ;
83751: LD_ADDR_VAR 0 3
83755: PUSH
83756: LD_VAR 0 7
83760: PPUSH
83761: LD_EXP 142
83765: PUSH
83766: LD_VAR 0 1
83770: ARRAY
83771: PUSH
83772: LD_INT 1
83774: ARRAY
83775: PPUSH
83776: CALL_OW 74
83780: ST_TO_ADDR
// un = NearestUnitToUnit ( FilterAllUnits ( [ [ f_weapon , 59 ] , [ f_ok ] ] ) , FinalVehs [ i ] [ 1 ] ) ;
83781: LD_ADDR_VAR 0 9
83785: PUSH
83786: LD_INT 34
83788: PUSH
83789: LD_INT 59
83791: PUSH
83792: EMPTY
83793: LIST
83794: LIST
83795: PUSH
83796: LD_INT 50
83798: PUSH
83799: EMPTY
83800: LIST
83801: PUSH
83802: EMPTY
83803: LIST
83804: LIST
83805: PPUSH
83806: CALL_OW 69
83810: PPUSH
83811: LD_EXP 142
83815: PUSH
83816: LD_VAR 0 1
83820: ARRAY
83821: PUSH
83822: LD_INT 1
83824: ARRAY
83825: PPUSH
83826: CALL_OW 74
83830: ST_TO_ADDR
// if GetDistUnits ( un , FinalVehs [ i ] [ 1 ] ) < GetDistUnits ( temp , FinalVehs [ i ] [ 1 ] ) then
83831: LD_VAR 0 9
83835: PPUSH
83836: LD_EXP 142
83840: PUSH
83841: LD_VAR 0 1
83845: ARRAY
83846: PUSH
83847: LD_INT 1
83849: ARRAY
83850: PPUSH
83851: CALL_OW 296
83855: PUSH
83856: LD_VAR 0 3
83860: PPUSH
83861: LD_EXP 142
83865: PUSH
83866: LD_VAR 0 1
83870: ARRAY
83871: PUSH
83872: LD_INT 1
83874: ARRAY
83875: PPUSH
83876: CALL_OW 296
83880: LESS
83881: IFFALSE 83893
// temp = un ;
83883: LD_ADDR_VAR 0 3
83887: PUSH
83888: LD_VAR 0 9
83892: ST_TO_ADDR
// if See ( GetSide ( j ) , temp ) then
83893: LD_VAR 0 2
83897: PPUSH
83898: CALL_OW 255
83902: PPUSH
83903: LD_VAR 0 3
83907: PPUSH
83908: CALL_OW 292
83912: IFFALSE 83930
// ComAttackUnit ( j , temp ) else
83914: LD_VAR 0 2
83918: PPUSH
83919: LD_VAR 0 3
83923: PPUSH
83924: CALL_OW 115
83928: GO 83944
// ComMoveUnit ( j , temp ) ;
83930: LD_VAR 0 2
83934: PPUSH
83935: LD_VAR 0 3
83939: PPUSH
83940: CALL_OW 112
// end ;
83944: GO 83609
83946: POP
83947: POP
// end ;
83948: GO 82860
83950: POP
83951: POP
// if Fdlg = 0 then
83952: LD_EXP 144
83956: PUSH
83957: LD_INT 0
83959: EQUAL
83960: IFFALSE 84020
// if PowellAttack > 0 and IsInArea ( Powell , base_russians ) and See ( 2 , Powell ) then
83962: LD_EXP 139
83966: PUSH
83967: LD_INT 0
83969: GREATER
83970: PUSH
83971: LD_EXP 36
83975: PPUSH
83976: LD_INT 2
83978: PPUSH
83979: CALL_OW 308
83983: AND
83984: PUSH
83985: LD_INT 2
83987: PPUSH
83988: LD_EXP 36
83992: PPUSH
83993: CALL_OW 292
83997: AND
83998: IFFALSE 84020
// begin Fdlg = 1 ;
84000: LD_ADDR_EXP 144
84004: PUSH
84005: LD_INT 1
84007: ST_TO_ADDR
// Say ( Powell , PowellCharge ) ;
84008: LD_EXP 36
84012: PPUSH
84013: LD_STRING PowellCharge
84015: PPUSH
84016: CALL_OW 88
// end ; enable ;
84020: ENABLE
// end ; end_of_file
84021: PPOPN 11
84023: END
// export function AI_GetAwayFromXY ( unit1 , x , y , dist , add ) ; var list_nearest , list_coords , temp_dir , dir_list , b , min_dist , temp_dist , c , rand_num , rand_near_hex , attempts ; begin
84024: LD_INT 0
84026: PPUSH
84027: PPUSH
84028: PPUSH
84029: PPUSH
84030: PPUSH
84031: PPUSH
84032: PPUSH
84033: PPUSH
84034: PPUSH
84035: PPUSH
84036: PPUSH
84037: PPUSH
// if not IsOk ( unit1 ) or dist = 1 or not ValidHex ( x , y ) or GetDistUnitXY ( unit1 , x , y ) >= dist or not add in [ true , false ] then
84038: LD_VAR 0 1
84042: PPUSH
84043: CALL_OW 302
84047: NOT
84048: PUSH
84049: LD_VAR 0 4
84053: PUSH
84054: LD_INT 1
84056: EQUAL
84057: OR
84058: PUSH
84059: LD_VAR 0 2
84063: PPUSH
84064: LD_VAR 0 3
84068: PPUSH
84069: CALL_OW 488
84073: NOT
84074: OR
84075: PUSH
84076: LD_VAR 0 1
84080: PPUSH
84081: LD_VAR 0 2
84085: PPUSH
84086: LD_VAR 0 3
84090: PPUSH
84091: CALL_OW 297
84095: PUSH
84096: LD_VAR 0 4
84100: GREATEREQUAL
84101: OR
84102: PUSH
84103: LD_VAR 0 5
84107: PUSH
84108: LD_INT 1
84110: PUSH
84111: LD_INT 0
84113: PUSH
84114: EMPTY
84115: LIST
84116: LIST
84117: IN
84118: NOT
84119: OR
84120: IFFALSE 84124
// exit ;
84122: GO 85681
// attempts = 0 ;
84124: LD_ADDR_VAR 0 17
84128: PUSH
84129: LD_INT 0
84131: ST_TO_ADDR
// repeat list_nearest = [ ] ;
84132: LD_ADDR_VAR 0 7
84136: PUSH
84137: EMPTY
84138: ST_TO_ADDR
// list_coords = [ ] ;
84139: LD_ADDR_VAR 0 8
84143: PUSH
84144: EMPTY
84145: ST_TO_ADDR
// temp_dir = AI_GetTurnDirection ( x , y , GetX ( unit1 ) , GetY ( unit1 ) ) ;
84146: LD_ADDR_VAR 0 9
84150: PUSH
84151: LD_VAR 0 2
84155: PPUSH
84156: LD_VAR 0 3
84160: PPUSH
84161: LD_VAR 0 1
84165: PPUSH
84166: CALL_OW 250
84170: PPUSH
84171: LD_VAR 0 1
84175: PPUSH
84176: CALL_OW 251
84180: PPUSH
84181: CALL 85686 0 4
84185: ST_TO_ADDR
// if attempts = 0 then
84186: LD_VAR 0 17
84190: PUSH
84191: LD_INT 0
84193: EQUAL
84194: IFFALSE 84302
// begin dir_list = [ temp_dir , temp_dir + 1 , temp_dir - 1 ] ;
84196: LD_ADDR_VAR 0 10
84200: PUSH
84201: LD_VAR 0 9
84205: PUSH
84206: LD_VAR 0 9
84210: PUSH
84211: LD_INT 1
84213: PLUS
84214: PUSH
84215: LD_VAR 0 9
84219: PUSH
84220: LD_INT 1
84222: MINUS
84223: PUSH
84224: EMPTY
84225: LIST
84226: LIST
84227: LIST
84228: ST_TO_ADDR
// if dir_list [ 2 ] = 6 then
84229: LD_VAR 0 10
84233: PUSH
84234: LD_INT 2
84236: ARRAY
84237: PUSH
84238: LD_INT 6
84240: EQUAL
84241: IFFALSE 84264
// dir_list = Replace ( dir_list , 2 , 0 ) ;
84243: LD_ADDR_VAR 0 10
84247: PUSH
84248: LD_VAR 0 10
84252: PPUSH
84253: LD_INT 2
84255: PPUSH
84256: LD_INT 0
84258: PPUSH
84259: CALL_OW 1
84263: ST_TO_ADDR
// if dir_list [ 3 ] = - 1 then
84264: LD_VAR 0 10
84268: PUSH
84269: LD_INT 3
84271: ARRAY
84272: PUSH
84273: LD_INT 1
84275: NEG
84276: EQUAL
84277: IFFALSE 84300
// dir_list = Replace ( dir_list , 3 , 5 ) ;
84279: LD_ADDR_VAR 0 10
84283: PUSH
84284: LD_VAR 0 10
84288: PPUSH
84289: LD_INT 3
84291: PPUSH
84292: LD_INT 5
84294: PPUSH
84295: CALL_OW 1
84299: ST_TO_ADDR
// end else
84300: GO 84339
// dir_list = [ 0 , 1 , 2 , 3 , 4 , 5 ] diff temp_dir ;
84302: LD_ADDR_VAR 0 10
84306: PUSH
84307: LD_INT 0
84309: PUSH
84310: LD_INT 1
84312: PUSH
84313: LD_INT 2
84315: PUSH
84316: LD_INT 3
84318: PUSH
84319: LD_INT 4
84321: PUSH
84322: LD_INT 5
84324: PUSH
84325: EMPTY
84326: LIST
84327: LIST
84328: LIST
84329: LIST
84330: LIST
84331: LIST
84332: PUSH
84333: LD_VAR 0 9
84337: DIFF
84338: ST_TO_ADDR
// for c = 1 to ( dir_list + 0 ) do
84339: LD_ADDR_VAR 0 14
84343: PUSH
84344: DOUBLE
84345: LD_INT 1
84347: DEC
84348: ST_TO_ADDR
84349: LD_VAR 0 10
84353: PUSH
84354: LD_INT 0
84356: PLUS
84357: PUSH
84358: FOR_TO
84359: IFFALSE 84681
// case dir_list [ c ] of 0 :
84361: LD_VAR 0 10
84365: PUSH
84366: LD_VAR 0 14
84370: ARRAY
84371: PUSH
84372: LD_INT 0
84374: DOUBLE
84375: EQUAL
84376: IFTRUE 84380
84378: GO 84421
84380: POP
// list_coords = Insert ( list_coords , 1 , [ x , y - dist ] ) ; 1 :
84381: LD_ADDR_VAR 0 8
84385: PUSH
84386: LD_VAR 0 8
84390: PPUSH
84391: LD_INT 1
84393: PPUSH
84394: LD_VAR 0 2
84398: PUSH
84399: LD_VAR 0 3
84403: PUSH
84404: LD_VAR 0 4
84408: MINUS
84409: PUSH
84410: EMPTY
84411: LIST
84412: LIST
84413: PPUSH
84414: CALL_OW 2
84418: ST_TO_ADDR
84419: GO 84679
84421: LD_INT 1
84423: DOUBLE
84424: EQUAL
84425: IFTRUE 84429
84427: GO 84470
84429: POP
// list_coords = Insert ( list_coords , 1 , [ x + dist , y ] ) ; 2 :
84430: LD_ADDR_VAR 0 8
84434: PUSH
84435: LD_VAR 0 8
84439: PPUSH
84440: LD_INT 1
84442: PPUSH
84443: LD_VAR 0 2
84447: PUSH
84448: LD_VAR 0 4
84452: PLUS
84453: PUSH
84454: LD_VAR 0 3
84458: PUSH
84459: EMPTY
84460: LIST
84461: LIST
84462: PPUSH
84463: CALL_OW 2
84467: ST_TO_ADDR
84468: GO 84679
84470: LD_INT 2
84472: DOUBLE
84473: EQUAL
84474: IFTRUE 84478
84476: GO 84525
84478: POP
// list_coords = Insert ( list_coords , 1 , [ x + dist , y + dist ] ) ; 3 :
84479: LD_ADDR_VAR 0 8
84483: PUSH
84484: LD_VAR 0 8
84488: PPUSH
84489: LD_INT 1
84491: PPUSH
84492: LD_VAR 0 2
84496: PUSH
84497: LD_VAR 0 4
84501: PLUS
84502: PUSH
84503: LD_VAR 0 3
84507: PUSH
84508: LD_VAR 0 4
84512: PLUS
84513: PUSH
84514: EMPTY
84515: LIST
84516: LIST
84517: PPUSH
84518: CALL_OW 2
84522: ST_TO_ADDR
84523: GO 84679
84525: LD_INT 3
84527: DOUBLE
84528: EQUAL
84529: IFTRUE 84533
84531: GO 84574
84533: POP
// list_coords = Insert ( list_coords , 1 , [ x , y + dist ] ) ; 4 :
84534: LD_ADDR_VAR 0 8
84538: PUSH
84539: LD_VAR 0 8
84543: PPUSH
84544: LD_INT 1
84546: PPUSH
84547: LD_VAR 0 2
84551: PUSH
84552: LD_VAR 0 3
84556: PUSH
84557: LD_VAR 0 4
84561: PLUS
84562: PUSH
84563: EMPTY
84564: LIST
84565: LIST
84566: PPUSH
84567: CALL_OW 2
84571: ST_TO_ADDR
84572: GO 84679
84574: LD_INT 4
84576: DOUBLE
84577: EQUAL
84578: IFTRUE 84582
84580: GO 84623
84582: POP
// list_coords = Insert ( list_coords , 1 , [ x - dist , y ] ) ; 5 :
84583: LD_ADDR_VAR 0 8
84587: PUSH
84588: LD_VAR 0 8
84592: PPUSH
84593: LD_INT 1
84595: PPUSH
84596: LD_VAR 0 2
84600: PUSH
84601: LD_VAR 0 4
84605: MINUS
84606: PUSH
84607: LD_VAR 0 3
84611: PUSH
84612: EMPTY
84613: LIST
84614: LIST
84615: PPUSH
84616: CALL_OW 2
84620: ST_TO_ADDR
84621: GO 84679
84623: LD_INT 5
84625: DOUBLE
84626: EQUAL
84627: IFTRUE 84631
84629: GO 84678
84631: POP
// list_coords = Insert ( list_coords , 1 , [ x - dist , y - dist ] ) ; end ;
84632: LD_ADDR_VAR 0 8
84636: PUSH
84637: LD_VAR 0 8
84641: PPUSH
84642: LD_INT 1
84644: PPUSH
84645: LD_VAR 0 2
84649: PUSH
84650: LD_VAR 0 4
84654: MINUS
84655: PUSH
84656: LD_VAR 0 3
84660: PUSH
84661: LD_VAR 0 4
84665: MINUS
84666: PUSH
84667: EMPTY
84668: LIST
84669: LIST
84670: PPUSH
84671: CALL_OW 2
84675: ST_TO_ADDR
84676: GO 84679
84678: POP
84679: GO 84358
84681: POP
84682: POP
// if dist < 30 then
84683: LD_VAR 0 4
84687: PUSH
84688: LD_INT 30
84690: LESS
84691: IFFALSE 84703
// c = 1 else
84693: LD_ADDR_VAR 0 14
84697: PUSH
84698: LD_INT 1
84700: ST_TO_ADDR
84701: GO 84711
// c = 2 ;
84703: LD_ADDR_VAR 0 14
84707: PUSH
84708: LD_INT 2
84710: ST_TO_ADDR
// b = 1 ;
84711: LD_ADDR_VAR 0 11
84715: PUSH
84716: LD_INT 1
84718: ST_TO_ADDR
// while b <= ( dist - 1 ) do
84719: LD_VAR 0 11
84723: PUSH
84724: LD_VAR 0 4
84728: PUSH
84729: LD_INT 1
84731: MINUS
84732: LESSEQUAL
84733: IFFALSE 85161
// begin if 0 in dir_list and 1 in dir_list then
84735: LD_INT 0
84737: PUSH
84738: LD_VAR 0 10
84742: IN
84743: PUSH
84744: LD_INT 1
84746: PUSH
84747: LD_VAR 0 10
84751: IN
84752: AND
84753: IFFALSE 84805
// list_coords = Insert ( list_coords , 1 , [ x + b , y - dist + b ] ) ;
84755: LD_ADDR_VAR 0 8
84759: PUSH
84760: LD_VAR 0 8
84764: PPUSH
84765: LD_INT 1
84767: PPUSH
84768: LD_VAR 0 2
84772: PUSH
84773: LD_VAR 0 11
84777: PLUS
84778: PUSH
84779: LD_VAR 0 3
84783: PUSH
84784: LD_VAR 0 4
84788: MINUS
84789: PUSH
84790: LD_VAR 0 11
84794: PLUS
84795: PUSH
84796: EMPTY
84797: LIST
84798: LIST
84799: PPUSH
84800: CALL_OW 2
84804: ST_TO_ADDR
// if 1 in dir_list and 2 in dir_list then
84805: LD_INT 1
84807: PUSH
84808: LD_VAR 0 10
84812: IN
84813: PUSH
84814: LD_INT 2
84816: PUSH
84817: LD_VAR 0 10
84821: IN
84822: AND
84823: IFFALSE 84869
// list_coords = Insert ( list_coords , 1 , [ x + dist , y + b ] ) ;
84825: LD_ADDR_VAR 0 8
84829: PUSH
84830: LD_VAR 0 8
84834: PPUSH
84835: LD_INT 1
84837: PPUSH
84838: LD_VAR 0 2
84842: PUSH
84843: LD_VAR 0 4
84847: PLUS
84848: PUSH
84849: LD_VAR 0 3
84853: PUSH
84854: LD_VAR 0 11
84858: PLUS
84859: PUSH
84860: EMPTY
84861: LIST
84862: LIST
84863: PPUSH
84864: CALL_OW 2
84868: ST_TO_ADDR
// if 2 in dir_list and 3 in dir_list then
84869: LD_INT 2
84871: PUSH
84872: LD_VAR 0 10
84876: IN
84877: PUSH
84878: LD_INT 3
84880: PUSH
84881: LD_VAR 0 10
84885: IN
84886: AND
84887: IFFALSE 84939
// list_coords = Insert ( list_coords , 1 , [ x + dist - b , y + dist ] ) ;
84889: LD_ADDR_VAR 0 8
84893: PUSH
84894: LD_VAR 0 8
84898: PPUSH
84899: LD_INT 1
84901: PPUSH
84902: LD_VAR 0 2
84906: PUSH
84907: LD_VAR 0 4
84911: PLUS
84912: PUSH
84913: LD_VAR 0 11
84917: MINUS
84918: PUSH
84919: LD_VAR 0 3
84923: PUSH
84924: LD_VAR 0 4
84928: PLUS
84929: PUSH
84930: EMPTY
84931: LIST
84932: LIST
84933: PPUSH
84934: CALL_OW 2
84938: ST_TO_ADDR
// if 3 in dir_list and 4 in dir_list then
84939: LD_INT 3
84941: PUSH
84942: LD_VAR 0 10
84946: IN
84947: PUSH
84948: LD_INT 4
84950: PUSH
84951: LD_VAR 0 10
84955: IN
84956: AND
84957: IFFALSE 85009
// list_coords = Insert ( list_coords , 1 , [ x - b , y + dist - b ] ) ;
84959: LD_ADDR_VAR 0 8
84963: PUSH
84964: LD_VAR 0 8
84968: PPUSH
84969: LD_INT 1
84971: PPUSH
84972: LD_VAR 0 2
84976: PUSH
84977: LD_VAR 0 11
84981: MINUS
84982: PUSH
84983: LD_VAR 0 3
84987: PUSH
84988: LD_VAR 0 4
84992: PLUS
84993: PUSH
84994: LD_VAR 0 11
84998: MINUS
84999: PUSH
85000: EMPTY
85001: LIST
85002: LIST
85003: PPUSH
85004: CALL_OW 2
85008: ST_TO_ADDR
// if 4 in dir_list and 5 in dir_list then
85009: LD_INT 4
85011: PUSH
85012: LD_VAR 0 10
85016: IN
85017: PUSH
85018: LD_INT 5
85020: PUSH
85021: LD_VAR 0 10
85025: IN
85026: AND
85027: IFFALSE 85073
// list_coords = Insert ( list_coords , 1 , [ x - dist , y - b ] ) ;
85029: LD_ADDR_VAR 0 8
85033: PUSH
85034: LD_VAR 0 8
85038: PPUSH
85039: LD_INT 1
85041: PPUSH
85042: LD_VAR 0 2
85046: PUSH
85047: LD_VAR 0 4
85051: MINUS
85052: PUSH
85053: LD_VAR 0 3
85057: PUSH
85058: LD_VAR 0 11
85062: MINUS
85063: PUSH
85064: EMPTY
85065: LIST
85066: LIST
85067: PPUSH
85068: CALL_OW 2
85072: ST_TO_ADDR
// if 5 in dir_list and 0 in dir_list then
85073: LD_INT 5
85075: PUSH
85076: LD_VAR 0 10
85080: IN
85081: PUSH
85082: LD_INT 0
85084: PUSH
85085: LD_VAR 0 10
85089: IN
85090: AND
85091: IFFALSE 85143
// list_coords = Insert ( list_coords , 1 , [ x - dist + b , y - dist ] ) ;
85093: LD_ADDR_VAR 0 8
85097: PUSH
85098: LD_VAR 0 8
85102: PPUSH
85103: LD_INT 1
85105: PPUSH
85106: LD_VAR 0 2
85110: PUSH
85111: LD_VAR 0 4
85115: MINUS
85116: PUSH
85117: LD_VAR 0 11
85121: PLUS
85122: PUSH
85123: LD_VAR 0 3
85127: PUSH
85128: LD_VAR 0 4
85132: MINUS
85133: PUSH
85134: EMPTY
85135: LIST
85136: LIST
85137: PPUSH
85138: CALL_OW 2
85142: ST_TO_ADDR
// b = b + c end ;
85143: LD_ADDR_VAR 0 11
85147: PUSH
85148: LD_VAR 0 11
85152: PUSH
85153: LD_VAR 0 14
85157: PLUS
85158: ST_TO_ADDR
85159: GO 84719
// if list_coords = 0 then
85161: LD_VAR 0 8
85165: PUSH
85166: LD_INT 0
85168: EQUAL
85169: IFFALSE 85173
// exit ;
85171: GO 85681
// repeat min_dist = 5000 ;
85173: LD_ADDR_VAR 0 12
85177: PUSH
85178: LD_INT 5000
85180: ST_TO_ADDR
// for b in list_coords do
85181: LD_ADDR_VAR 0 11
85185: PUSH
85186: LD_VAR 0 8
85190: PUSH
85191: FOR_IN
85192: IFFALSE 85251
// begin temp_dist = GetDistUnitXY ( unit1 , b [ 1 ] , b [ 2 ] ) ;
85194: LD_ADDR_VAR 0 13
85198: PUSH
85199: LD_VAR 0 1
85203: PPUSH
85204: LD_VAR 0 11
85208: PUSH
85209: LD_INT 1
85211: ARRAY
85212: PPUSH
85213: LD_VAR 0 11
85217: PUSH
85218: LD_INT 2
85220: ARRAY
85221: PPUSH
85222: CALL_OW 297
85226: ST_TO_ADDR
// if temp_dist < min_dist then
85227: LD_VAR 0 13
85231: PUSH
85232: LD_VAR 0 12
85236: LESS
85237: IFFALSE 85249
// min_dist = temp_dist ;
85239: LD_ADDR_VAR 0 12
85243: PUSH
85244: LD_VAR 0 13
85248: ST_TO_ADDR
// end ;
85249: GO 85191
85251: POP
85252: POP
// c = 0 ;
85253: LD_ADDR_VAR 0 14
85257: PUSH
85258: LD_INT 0
85260: ST_TO_ADDR
// repeat c = c + 1 ;
85261: LD_ADDR_VAR 0 14
85265: PUSH
85266: LD_VAR 0 14
85270: PUSH
85271: LD_INT 1
85273: PLUS
85274: ST_TO_ADDR
// if GetDistUnitXY ( unit1 , list_coords [ c ] [ 1 ] , list_coords [ c ] [ 2 ] ) = min_dist then
85275: LD_VAR 0 1
85279: PPUSH
85280: LD_VAR 0 8
85284: PUSH
85285: LD_VAR 0 14
85289: ARRAY
85290: PUSH
85291: LD_INT 1
85293: ARRAY
85294: PPUSH
85295: LD_VAR 0 8
85299: PUSH
85300: LD_VAR 0 14
85304: ARRAY
85305: PUSH
85306: LD_INT 2
85308: ARRAY
85309: PPUSH
85310: CALL_OW 297
85314: PUSH
85315: LD_VAR 0 12
85319: EQUAL
85320: IFFALSE 85385
// begin list_nearest = Insert ( list_nearest , 1 , list_coords [ c ] ) ;
85322: LD_ADDR_VAR 0 7
85326: PUSH
85327: LD_VAR 0 7
85331: PPUSH
85332: LD_INT 1
85334: PPUSH
85335: LD_VAR 0 8
85339: PUSH
85340: LD_VAR 0 14
85344: ARRAY
85345: PPUSH
85346: CALL_OW 2
85350: ST_TO_ADDR
// list_coords = Delete ( list_coords , c ) ;
85351: LD_ADDR_VAR 0 8
85355: PUSH
85356: LD_VAR 0 8
85360: PPUSH
85361: LD_VAR 0 14
85365: PPUSH
85366: CALL_OW 3
85370: ST_TO_ADDR
// c = c - 1 ;
85371: LD_ADDR_VAR 0 14
85375: PUSH
85376: LD_VAR 0 14
85380: PUSH
85381: LD_INT 1
85383: MINUS
85384: ST_TO_ADDR
// end ; until c = list_coords ;
85385: LD_VAR 0 14
85389: PUSH
85390: LD_VAR 0 8
85394: EQUAL
85395: IFFALSE 85261
// c = 0 ;
85397: LD_ADDR_VAR 0 14
85401: PUSH
85402: LD_INT 0
85404: ST_TO_ADDR
// if list_nearest > 0 then
85405: LD_VAR 0 7
85409: PUSH
85410: LD_INT 0
85412: GREATER
85413: IFFALSE 85555
// begin repeat rand_num = Rand ( 1 , list_nearest ) ;
85415: LD_ADDR_VAR 0 15
85419: PUSH
85420: LD_INT 1
85422: PPUSH
85423: LD_VAR 0 7
85427: PPUSH
85428: CALL_OW 12
85432: ST_TO_ADDR
// rand_near_hex = list_nearest [ rand_num ] ;
85433: LD_ADDR_VAR 0 16
85437: PUSH
85438: LD_VAR 0 7
85442: PUSH
85443: LD_VAR 0 15
85447: ARRAY
85448: ST_TO_ADDR
// if ValidHex ( rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) > 0 and HexInfo ( rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) = 0 then
85449: LD_VAR 0 16
85453: PUSH
85454: LD_INT 1
85456: ARRAY
85457: PPUSH
85458: LD_VAR 0 16
85462: PUSH
85463: LD_INT 2
85465: ARRAY
85466: PPUSH
85467: CALL_OW 488
85471: PUSH
85472: LD_INT 0
85474: GREATER
85475: PUSH
85476: LD_VAR 0 16
85480: PUSH
85481: LD_INT 1
85483: ARRAY
85484: PPUSH
85485: LD_VAR 0 16
85489: PUSH
85490: LD_INT 2
85492: ARRAY
85493: PPUSH
85494: CALL_OW 428
85498: PUSH
85499: LD_INT 0
85501: EQUAL
85502: AND
85503: IFFALSE 85515
// c = 1 else
85505: LD_ADDR_VAR 0 14
85509: PUSH
85510: LD_INT 1
85512: ST_TO_ADDR
85513: GO 85535
// list_nearest = Delete ( list_nearest , rand_num ) ;
85515: LD_ADDR_VAR 0 7
85519: PUSH
85520: LD_VAR 0 7
85524: PPUSH
85525: LD_VAR 0 15
85529: PPUSH
85530: CALL_OW 3
85534: ST_TO_ADDR
// until c = 1 or list_nearest = 0 ;
85535: LD_VAR 0 14
85539: PUSH
85540: LD_INT 1
85542: EQUAL
85543: PUSH
85544: LD_VAR 0 7
85548: PUSH
85549: LD_INT 0
85551: EQUAL
85552: OR
85553: IFFALSE 85415
// end ; until c = 1 or list_coords = 0 ;
85555: LD_VAR 0 14
85559: PUSH
85560: LD_INT 1
85562: EQUAL
85563: PUSH
85564: LD_VAR 0 8
85568: PUSH
85569: LD_INT 0
85571: EQUAL
85572: OR
85573: IFFALSE 85173
// attempts = attempts + 1 ;
85575: LD_ADDR_VAR 0 17
85579: PUSH
85580: LD_VAR 0 17
85584: PUSH
85585: LD_INT 1
85587: PLUS
85588: ST_TO_ADDR
// until c = 1 or attempts > 1 ;
85589: LD_VAR 0 14
85593: PUSH
85594: LD_INT 1
85596: EQUAL
85597: PUSH
85598: LD_VAR 0 17
85602: PUSH
85603: LD_INT 1
85605: GREATER
85606: OR
85607: IFFALSE 84132
// if c = 1 then
85609: LD_VAR 0 14
85613: PUSH
85614: LD_INT 1
85616: EQUAL
85617: IFFALSE 85681
// if add then
85619: LD_VAR 0 5
85623: IFFALSE 85654
// AddComMoveXY ( unit1 , rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) else
85625: LD_VAR 0 1
85629: PPUSH
85630: LD_VAR 0 16
85634: PUSH
85635: LD_INT 1
85637: ARRAY
85638: PPUSH
85639: LD_VAR 0 16
85643: PUSH
85644: LD_INT 2
85646: ARRAY
85647: PPUSH
85648: CALL_OW 171
85652: GO 85681
// ComMoveXY ( unit1 , rand_near_hex [ 1 ] , rand_near_hex [ 2 ] ) ;
85654: LD_VAR 0 1
85658: PPUSH
85659: LD_VAR 0 16
85663: PUSH
85664: LD_INT 1
85666: ARRAY
85667: PPUSH
85668: LD_VAR 0 16
85672: PUSH
85673: LD_INT 2
85675: ARRAY
85676: PPUSH
85677: CALL_OW 111
// end ;
85681: LD_VAR 0 6
85685: RET
// export function AI_GetTurnDirection ( x1 , y1 , x , y ) ; var dist_1 , dist_2 , b , temp_dist , dir ; begin
85686: LD_INT 0
85688: PPUSH
85689: PPUSH
85690: PPUSH
85691: PPUSH
85692: PPUSH
85693: PPUSH
// if not ValidHex ( x1 , y1 ) or not ValidHex ( x , y ) then
85694: LD_VAR 0 1
85698: PPUSH
85699: LD_VAR 0 2
85703: PPUSH
85704: CALL_OW 488
85708: NOT
85709: PUSH
85710: LD_VAR 0 3
85714: PPUSH
85715: LD_VAR 0 4
85719: PPUSH
85720: CALL_OW 488
85724: NOT
85725: OR
85726: IFFALSE 85739
// begin result = - 1 ;
85728: LD_ADDR_VAR 0 5
85732: PUSH
85733: LD_INT 1
85735: NEG
85736: ST_TO_ADDR
// exit ;
85737: GO 85899
// end ; dist_1 = GetDistXY ( x1 , y1 , x , y ) ;
85739: LD_ADDR_VAR 0 6
85743: PUSH
85744: LD_VAR 0 1
85748: PPUSH
85749: LD_VAR 0 2
85753: PPUSH
85754: LD_VAR 0 3
85758: PPUSH
85759: LD_VAR 0 4
85763: PPUSH
85764: CALL_OW 298
85768: ST_TO_ADDR
// dist_2 = 99999 ;
85769: LD_ADDR_VAR 0 7
85773: PUSH
85774: LD_INT 99999
85776: ST_TO_ADDR
// for b = 0 to 5 do
85777: LD_ADDR_VAR 0 8
85781: PUSH
85782: DOUBLE
85783: LD_INT 0
85785: DEC
85786: ST_TO_ADDR
85787: LD_INT 5
85789: PUSH
85790: FOR_TO
85791: IFFALSE 85887
// begin temp_dist = GetDistXY ( ShiftX ( x1 , b , dist_1 ) , ShiftY ( y1 , b , dist_1 ) , x , y ) ;
85793: LD_ADDR_VAR 0 9
85797: PUSH
85798: LD_VAR 0 1
85802: PPUSH
85803: LD_VAR 0 8
85807: PPUSH
85808: LD_VAR 0 6
85812: PPUSH
85813: CALL_OW 272
85817: PPUSH
85818: LD_VAR 0 2
85822: PPUSH
85823: LD_VAR 0 8
85827: PPUSH
85828: LD_VAR 0 6
85832: PPUSH
85833: CALL_OW 273
85837: PPUSH
85838: LD_VAR 0 3
85842: PPUSH
85843: LD_VAR 0 4
85847: PPUSH
85848: CALL_OW 298
85852: ST_TO_ADDR
// if temp_dist < dist_2 then
85853: LD_VAR 0 9
85857: PUSH
85858: LD_VAR 0 7
85862: LESS
85863: IFFALSE 85885
// begin dist_2 = temp_dist ;
85865: LD_ADDR_VAR 0 7
85869: PUSH
85870: LD_VAR 0 9
85874: ST_TO_ADDR
// dir = b ;
85875: LD_ADDR_VAR 0 10
85879: PUSH
85880: LD_VAR 0 8
85884: ST_TO_ADDR
// end ; end ;
85885: GO 85790
85887: POP
85888: POP
// result = dir ;
85889: LD_ADDR_VAR 0 5
85893: PUSH
85894: LD_VAR 0 10
85898: ST_TO_ADDR
// end ;
85899: LD_VAR 0 5
85903: RET
// export function AI_InvertDirection ( direction ) ; var dir ; begin
85904: LD_INT 0
85906: PPUSH
85907: PPUSH
// dir = direction - 3 ;
85908: LD_ADDR_VAR 0 3
85912: PUSH
85913: LD_VAR 0 1
85917: PUSH
85918: LD_INT 3
85920: MINUS
85921: ST_TO_ADDR
// if dir < 0 then
85922: LD_VAR 0 3
85926: PUSH
85927: LD_INT 0
85929: LESS
85930: IFFALSE 85946
// dir = dir + 6 ;
85932: LD_ADDR_VAR 0 3
85936: PUSH
85937: LD_VAR 0 3
85941: PUSH
85942: LD_INT 6
85944: PLUS
85945: ST_TO_ADDR
// result = dir ;
85946: LD_ADDR_VAR 0 2
85950: PUSH
85951: LD_VAR 0 3
85955: ST_TO_ADDR
// end ;
85956: LD_VAR 0 2
85960: RET
// export function BehindLine ( un , x , y , dir , dist ) ; var c ; begin
85961: LD_INT 0
85963: PPUSH
85964: PPUSH
// case dir of 0 :
85965: LD_VAR 0 4
85969: PUSH
85970: LD_INT 0
85972: DOUBLE
85973: EQUAL
85974: IFTRUE 85978
85976: GO 86073
85978: POP
// begin c = GetX ( un ) - x ;
85979: LD_ADDR_VAR 0 7
85983: PUSH
85984: LD_VAR 0 1
85988: PPUSH
85989: CALL_OW 250
85993: PUSH
85994: LD_VAR 0 2
85998: MINUS
85999: ST_TO_ADDR
// if c > 0 then
86000: LD_VAR 0 7
86004: PUSH
86005: LD_INT 0
86007: GREATER
86008: IFFALSE 86024
// c = c + 1 ;
86010: LD_ADDR_VAR 0 7
86014: PUSH
86015: LD_VAR 0 7
86019: PUSH
86020: LD_INT 1
86022: PLUS
86023: ST_TO_ADDR
// y = y + ( c div 2 ) ;
86024: LD_ADDR_VAR 0 3
86028: PUSH
86029: LD_VAR 0 3
86033: PUSH
86034: LD_VAR 0 7
86038: PUSH
86039: LD_INT 2
86041: DIV
86042: PLUS
86043: ST_TO_ADDR
// result := GetY ( un ) >= y + dist ;
86044: LD_ADDR_VAR 0 6
86048: PUSH
86049: LD_VAR 0 1
86053: PPUSH
86054: CALL_OW 251
86058: PUSH
86059: LD_VAR 0 3
86063: PUSH
86064: LD_VAR 0 5
86068: PLUS
86069: GREATEREQUAL
86070: ST_TO_ADDR
// end ; 1 :
86071: GO 86501
86073: LD_INT 1
86075: DOUBLE
86076: EQUAL
86077: IFTRUE 86081
86079: GO 86176
86081: POP
// begin c = GetY ( un ) - y ;
86082: LD_ADDR_VAR 0 7
86086: PUSH
86087: LD_VAR 0 1
86091: PPUSH
86092: CALL_OW 251
86096: PUSH
86097: LD_VAR 0 3
86101: MINUS
86102: ST_TO_ADDR
// if c < 0 then
86103: LD_VAR 0 7
86107: PUSH
86108: LD_INT 0
86110: LESS
86111: IFFALSE 86127
// c = c - 1 ;
86113: LD_ADDR_VAR 0 7
86117: PUSH
86118: LD_VAR 0 7
86122: PUSH
86123: LD_INT 1
86125: MINUS
86126: ST_TO_ADDR
// x = x + ( c div 2 ) ;
86127: LD_ADDR_VAR 0 2
86131: PUSH
86132: LD_VAR 0 2
86136: PUSH
86137: LD_VAR 0 7
86141: PUSH
86142: LD_INT 2
86144: DIV
86145: PLUS
86146: ST_TO_ADDR
// result := GetX ( un ) <= x - dist ;
86147: LD_ADDR_VAR 0 6
86151: PUSH
86152: LD_VAR 0 1
86156: PPUSH
86157: CALL_OW 250
86161: PUSH
86162: LD_VAR 0 2
86166: PUSH
86167: LD_VAR 0 5
86171: MINUS
86172: LESSEQUAL
86173: ST_TO_ADDR
// end ; 2 :
86174: GO 86501
86176: LD_INT 2
86178: DOUBLE
86179: EQUAL
86180: IFTRUE 86184
86182: GO 86235
86184: POP
// begin result := GetX ( un ) + GetY ( un ) <= x + y - 2 * dist ;
86185: LD_ADDR_VAR 0 6
86189: PUSH
86190: LD_VAR 0 1
86194: PPUSH
86195: CALL_OW 250
86199: PUSH
86200: LD_VAR 0 1
86204: PPUSH
86205: CALL_OW 251
86209: PLUS
86210: PUSH
86211: LD_VAR 0 2
86215: PUSH
86216: LD_VAR 0 3
86220: PLUS
86221: PUSH
86222: LD_INT 2
86224: PUSH
86225: LD_VAR 0 5
86229: MUL
86230: MINUS
86231: LESSEQUAL
86232: ST_TO_ADDR
// end ; 3 :
86233: GO 86501
86235: LD_INT 3
86237: DOUBLE
86238: EQUAL
86239: IFTRUE 86243
86241: GO 86338
86243: POP
// begin c = GetX ( un ) - x ;
86244: LD_ADDR_VAR 0 7
86248: PUSH
86249: LD_VAR 0 1
86253: PPUSH
86254: CALL_OW 250
86258: PUSH
86259: LD_VAR 0 2
86263: MINUS
86264: ST_TO_ADDR
// if c < 0 then
86265: LD_VAR 0 7
86269: PUSH
86270: LD_INT 0
86272: LESS
86273: IFFALSE 86289
// c = c - 1 ;
86275: LD_ADDR_VAR 0 7
86279: PUSH
86280: LD_VAR 0 7
86284: PUSH
86285: LD_INT 1
86287: MINUS
86288: ST_TO_ADDR
// y = y + ( c div 2 ) ;
86289: LD_ADDR_VAR 0 3
86293: PUSH
86294: LD_VAR 0 3
86298: PUSH
86299: LD_VAR 0 7
86303: PUSH
86304: LD_INT 2
86306: DIV
86307: PLUS
86308: ST_TO_ADDR
// result := GetY ( un ) <= y - dist ;
86309: LD_ADDR_VAR 0 6
86313: PUSH
86314: LD_VAR 0 1
86318: PPUSH
86319: CALL_OW 251
86323: PUSH
86324: LD_VAR 0 3
86328: PUSH
86329: LD_VAR 0 5
86333: MINUS
86334: LESSEQUAL
86335: ST_TO_ADDR
// end ; 4 :
86336: GO 86501
86338: LD_INT 4
86340: DOUBLE
86341: EQUAL
86342: IFTRUE 86346
86344: GO 86441
86346: POP
// begin c = GetY ( un ) - y ;
86347: LD_ADDR_VAR 0 7
86351: PUSH
86352: LD_VAR 0 1
86356: PPUSH
86357: CALL_OW 251
86361: PUSH
86362: LD_VAR 0 3
86366: MINUS
86367: ST_TO_ADDR
// if c > 0 then
86368: LD_VAR 0 7
86372: PUSH
86373: LD_INT 0
86375: GREATER
86376: IFFALSE 86392
// c = c + 1 ;
86378: LD_ADDR_VAR 0 7
86382: PUSH
86383: LD_VAR 0 7
86387: PUSH
86388: LD_INT 1
86390: PLUS
86391: ST_TO_ADDR
// x = x + ( c div 2 ) ;
86392: LD_ADDR_VAR 0 2
86396: PUSH
86397: LD_VAR 0 2
86401: PUSH
86402: LD_VAR 0 7
86406: PUSH
86407: LD_INT 2
86409: DIV
86410: PLUS
86411: ST_TO_ADDR
// result := GetX ( un ) >= x + dist ;
86412: LD_ADDR_VAR 0 6
86416: PUSH
86417: LD_VAR 0 1
86421: PPUSH
86422: CALL_OW 250
86426: PUSH
86427: LD_VAR 0 2
86431: PUSH
86432: LD_VAR 0 5
86436: PLUS
86437: GREATEREQUAL
86438: ST_TO_ADDR
// end ; 5 :
86439: GO 86501
86441: LD_INT 5
86443: DOUBLE
86444: EQUAL
86445: IFTRUE 86449
86447: GO 86500
86449: POP
// begin result := GetX ( un ) + GetY ( un ) >= x + y + 2 * dist ;
86450: LD_ADDR_VAR 0 6
86454: PUSH
86455: LD_VAR 0 1
86459: PPUSH
86460: CALL_OW 250
86464: PUSH
86465: LD_VAR 0 1
86469: PPUSH
86470: CALL_OW 251
86474: PLUS
86475: PUSH
86476: LD_VAR 0 2
86480: PUSH
86481: LD_VAR 0 3
86485: PLUS
86486: PUSH
86487: LD_INT 2
86489: PUSH
86490: LD_VAR 0 5
86494: MUL
86495: PLUS
86496: GREATEREQUAL
86497: ST_TO_ADDR
// end ; end ;
86498: GO 86501
86500: POP
// end ;
86501: LD_VAR 0 6
86505: RET
// export function GetHexesNearHex ( x , y , dist ) ; var d , list_coords , b ; begin
86506: LD_INT 0
86508: PPUSH
86509: PPUSH
86510: PPUSH
86511: PPUSH
// result = [ [ x , y ] ] ;
86512: LD_ADDR_VAR 0 4
86516: PUSH
86517: LD_VAR 0 1
86521: PUSH
86522: LD_VAR 0 2
86526: PUSH
86527: EMPTY
86528: LIST
86529: LIST
86530: PUSH
86531: EMPTY
86532: LIST
86533: ST_TO_ADDR
// for d = 1 to dist do
86534: LD_ADDR_VAR 0 5
86538: PUSH
86539: DOUBLE
86540: LD_INT 1
86542: DEC
86543: ST_TO_ADDR
86544: LD_VAR 0 3
86548: PUSH
86549: FOR_TO
86550: IFFALSE 87145
// begin list_coords = [ ] ;
86552: LD_ADDR_VAR 0 6
86556: PUSH
86557: EMPTY
86558: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x , y - d ] ) ;
86559: LD_ADDR_VAR 0 6
86563: PUSH
86564: LD_VAR 0 6
86568: PPUSH
86569: LD_INT 1
86571: PPUSH
86572: LD_VAR 0 1
86576: PUSH
86577: LD_VAR 0 2
86581: PUSH
86582: LD_VAR 0 5
86586: MINUS
86587: PUSH
86588: EMPTY
86589: LIST
86590: LIST
86591: PPUSH
86592: CALL_OW 2
86596: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y ] ) ;
86597: LD_ADDR_VAR 0 6
86601: PUSH
86602: LD_VAR 0 6
86606: PPUSH
86607: LD_INT 1
86609: PPUSH
86610: LD_VAR 0 1
86614: PUSH
86615: LD_VAR 0 5
86619: PLUS
86620: PUSH
86621: LD_VAR 0 2
86625: PUSH
86626: EMPTY
86627: LIST
86628: LIST
86629: PPUSH
86630: CALL_OW 2
86634: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y + d ] ) ;
86635: LD_ADDR_VAR 0 6
86639: PUSH
86640: LD_VAR 0 6
86644: PPUSH
86645: LD_INT 1
86647: PPUSH
86648: LD_VAR 0 1
86652: PUSH
86653: LD_VAR 0 5
86657: PLUS
86658: PUSH
86659: LD_VAR 0 2
86663: PUSH
86664: LD_VAR 0 5
86668: PLUS
86669: PUSH
86670: EMPTY
86671: LIST
86672: LIST
86673: PPUSH
86674: CALL_OW 2
86678: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x , y + d ] ) ;
86679: LD_ADDR_VAR 0 6
86683: PUSH
86684: LD_VAR 0 6
86688: PPUSH
86689: LD_INT 1
86691: PPUSH
86692: LD_VAR 0 1
86696: PUSH
86697: LD_VAR 0 2
86701: PUSH
86702: LD_VAR 0 5
86706: PLUS
86707: PUSH
86708: EMPTY
86709: LIST
86710: LIST
86711: PPUSH
86712: CALL_OW 2
86716: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y ] ) ;
86717: LD_ADDR_VAR 0 6
86721: PUSH
86722: LD_VAR 0 6
86726: PPUSH
86727: LD_INT 1
86729: PPUSH
86730: LD_VAR 0 1
86734: PUSH
86735: LD_VAR 0 5
86739: MINUS
86740: PUSH
86741: LD_VAR 0 2
86745: PUSH
86746: EMPTY
86747: LIST
86748: LIST
86749: PPUSH
86750: CALL_OW 2
86754: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y - d ] ) ;
86755: LD_ADDR_VAR 0 6
86759: PUSH
86760: LD_VAR 0 6
86764: PPUSH
86765: LD_INT 1
86767: PPUSH
86768: LD_VAR 0 1
86772: PUSH
86773: LD_VAR 0 5
86777: MINUS
86778: PUSH
86779: LD_VAR 0 2
86783: PUSH
86784: LD_VAR 0 5
86788: MINUS
86789: PUSH
86790: EMPTY
86791: LIST
86792: LIST
86793: PPUSH
86794: CALL_OW 2
86798: ST_TO_ADDR
// b = 1 ;
86799: LD_ADDR_VAR 0 7
86803: PUSH
86804: LD_INT 1
86806: ST_TO_ADDR
// while b <= ( d - 1 ) do
86807: LD_VAR 0 7
86811: PUSH
86812: LD_VAR 0 5
86816: PUSH
86817: LD_INT 1
86819: MINUS
86820: LESSEQUAL
86821: IFFALSE 87127
// begin list_coords = Insert ( list_coords , 1 , [ x + b , y - d + b ] ) ;
86823: LD_ADDR_VAR 0 6
86827: PUSH
86828: LD_VAR 0 6
86832: PPUSH
86833: LD_INT 1
86835: PPUSH
86836: LD_VAR 0 1
86840: PUSH
86841: LD_VAR 0 7
86845: PLUS
86846: PUSH
86847: LD_VAR 0 2
86851: PUSH
86852: LD_VAR 0 5
86856: MINUS
86857: PUSH
86858: LD_VAR 0 7
86862: PLUS
86863: PUSH
86864: EMPTY
86865: LIST
86866: LIST
86867: PPUSH
86868: CALL_OW 2
86872: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d , y + b ] ) ;
86873: LD_ADDR_VAR 0 6
86877: PUSH
86878: LD_VAR 0 6
86882: PPUSH
86883: LD_INT 1
86885: PPUSH
86886: LD_VAR 0 1
86890: PUSH
86891: LD_VAR 0 5
86895: PLUS
86896: PUSH
86897: LD_VAR 0 2
86901: PUSH
86902: LD_VAR 0 7
86906: PLUS
86907: PUSH
86908: EMPTY
86909: LIST
86910: LIST
86911: PPUSH
86912: CALL_OW 2
86916: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x + d - b , y + d ] ) ;
86917: LD_ADDR_VAR 0 6
86921: PUSH
86922: LD_VAR 0 6
86926: PPUSH
86927: LD_INT 1
86929: PPUSH
86930: LD_VAR 0 1
86934: PUSH
86935: LD_VAR 0 5
86939: PLUS
86940: PUSH
86941: LD_VAR 0 7
86945: MINUS
86946: PUSH
86947: LD_VAR 0 2
86951: PUSH
86952: LD_VAR 0 5
86956: PLUS
86957: PUSH
86958: EMPTY
86959: LIST
86960: LIST
86961: PPUSH
86962: CALL_OW 2
86966: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - b , y + d - b ] ) ;
86967: LD_ADDR_VAR 0 6
86971: PUSH
86972: LD_VAR 0 6
86976: PPUSH
86977: LD_INT 1
86979: PPUSH
86980: LD_VAR 0 1
86984: PUSH
86985: LD_VAR 0 7
86989: MINUS
86990: PUSH
86991: LD_VAR 0 2
86995: PUSH
86996: LD_VAR 0 5
87000: PLUS
87001: PUSH
87002: LD_VAR 0 7
87006: MINUS
87007: PUSH
87008: EMPTY
87009: LIST
87010: LIST
87011: PPUSH
87012: CALL_OW 2
87016: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d , y - b ] ) ;
87017: LD_ADDR_VAR 0 6
87021: PUSH
87022: LD_VAR 0 6
87026: PPUSH
87027: LD_INT 1
87029: PPUSH
87030: LD_VAR 0 1
87034: PUSH
87035: LD_VAR 0 5
87039: MINUS
87040: PUSH
87041: LD_VAR 0 2
87045: PUSH
87046: LD_VAR 0 7
87050: MINUS
87051: PUSH
87052: EMPTY
87053: LIST
87054: LIST
87055: PPUSH
87056: CALL_OW 2
87060: ST_TO_ADDR
// list_coords = Insert ( list_coords , 1 , [ x - d + b , y - d ] ) ;
87061: LD_ADDR_VAR 0 6
87065: PUSH
87066: LD_VAR 0 6
87070: PPUSH
87071: LD_INT 1
87073: PPUSH
87074: LD_VAR 0 1
87078: PUSH
87079: LD_VAR 0 5
87083: MINUS
87084: PUSH
87085: LD_VAR 0 7
87089: PLUS
87090: PUSH
87091: LD_VAR 0 2
87095: PUSH
87096: LD_VAR 0 5
87100: MINUS
87101: PUSH
87102: EMPTY
87103: LIST
87104: LIST
87105: PPUSH
87106: CALL_OW 2
87110: ST_TO_ADDR
// b = b + 1 ;
87111: LD_ADDR_VAR 0 7
87115: PUSH
87116: LD_VAR 0 7
87120: PUSH
87121: LD_INT 1
87123: PLUS
87124: ST_TO_ADDR
// end ;
87125: GO 86807
// result = result ^ list_coords ;
87127: LD_ADDR_VAR 0 4
87131: PUSH
87132: LD_VAR 0 4
87136: PUSH
87137: LD_VAR 0 6
87141: ADD
87142: ST_TO_ADDR
// end ;
87143: GO 86549
87145: POP
87146: POP
// end ;
87147: LD_VAR 0 4
87151: RET
// export function RoundDouble ( d ) ; begin
87152: LD_INT 0
87154: PPUSH
// result = d div 1 ;
87155: LD_ADDR_VAR 0 2
87159: PUSH
87160: LD_VAR 0 1
87164: PUSH
87165: LD_INT 1
87167: DIV
87168: ST_TO_ADDR
// if d mod 1 >= 0.5 then
87169: LD_VAR 0 1
87173: PUSH
87174: LD_INT 1
87176: MOD
87177: PUSH
87178: LD_REAL  5.00000000000000E-0001
87181: GREATEREQUAL
87182: IFFALSE 87198
// result = result + 1 ;
87184: LD_ADDR_VAR 0 2
87188: PUSH
87189: LD_VAR 0 2
87193: PUSH
87194: LD_INT 1
87196: PLUS
87197: ST_TO_ADDR
// end ;
87198: LD_VAR 0 2
87202: RET
// export function Check2DArraysEqual ( list1 , list2 ) ; var a , b ; begin
87203: LD_INT 0
87205: PPUSH
87206: PPUSH
87207: PPUSH
// result = true ;
87208: LD_ADDR_VAR 0 3
87212: PUSH
87213: LD_INT 1
87215: ST_TO_ADDR
// if list1 + 0 <> list2 + 0 then
87216: LD_VAR 0 1
87220: PUSH
87221: LD_INT 0
87223: PLUS
87224: PUSH
87225: LD_VAR 0 2
87229: PUSH
87230: LD_INT 0
87232: PLUS
87233: NONEQUAL
87234: IFFALSE 87246
// begin result = false ;
87236: LD_ADDR_VAR 0 3
87240: PUSH
87241: LD_INT 0
87243: ST_TO_ADDR
// exit ;
87244: GO 87391
// end ; for a = 1 to list1 do
87246: LD_ADDR_VAR 0 4
87250: PUSH
87251: DOUBLE
87252: LD_INT 1
87254: DEC
87255: ST_TO_ADDR
87256: LD_VAR 0 1
87260: PUSH
87261: FOR_TO
87262: IFFALSE 87389
// begin if list1 [ a ] + 0 <> list2 [ a ] + 0 then
87264: LD_VAR 0 1
87268: PUSH
87269: LD_VAR 0 4
87273: ARRAY
87274: PUSH
87275: LD_INT 0
87277: PLUS
87278: PUSH
87279: LD_VAR 0 2
87283: PUSH
87284: LD_VAR 0 4
87288: ARRAY
87289: PUSH
87290: LD_INT 0
87292: PLUS
87293: NONEQUAL
87294: IFFALSE 87308
// begin result = false ;
87296: LD_ADDR_VAR 0 3
87300: PUSH
87301: LD_INT 0
87303: ST_TO_ADDR
// exit ;
87304: POP
87305: POP
87306: GO 87391
// end ; for b = 1 to list1 [ a ] do
87308: LD_ADDR_VAR 0 5
87312: PUSH
87313: DOUBLE
87314: LD_INT 1
87316: DEC
87317: ST_TO_ADDR
87318: LD_VAR 0 1
87322: PUSH
87323: LD_VAR 0 4
87327: ARRAY
87328: PUSH
87329: FOR_TO
87330: IFFALSE 87385
// if not list1 [ a ] [ b ] = list2 [ a ] [ b ] then
87332: LD_VAR 0 1
87336: PUSH
87337: LD_VAR 0 4
87341: ARRAY
87342: PUSH
87343: LD_VAR 0 5
87347: ARRAY
87348: PUSH
87349: LD_VAR 0 2
87353: PUSH
87354: LD_VAR 0 4
87358: ARRAY
87359: PUSH
87360: LD_VAR 0 5
87364: ARRAY
87365: EQUAL
87366: NOT
87367: IFFALSE 87383
// begin result = false ;
87369: LD_ADDR_VAR 0 3
87373: PUSH
87374: LD_INT 0
87376: ST_TO_ADDR
// exit ;
87377: POP
87378: POP
87379: POP
87380: POP
87381: GO 87391
// end ;
87383: GO 87329
87385: POP
87386: POP
// end ;
87387: GO 87261
87389: POP
87390: POP
// end ; end_of_file
87391: LD_VAR 0 3
87395: RET
// every 0 0$1 trigger mb_bases > 0 do var i , j , k , temp , temp2 , temp_list , temp_list2 , temp_list3 , retreat ; var bunkers , barracks , sol_barracks , sol_bunkers ; var eng_skill , low_blevel_list ; var factory , chassis , engine , control , weapon ; var vehicles , vehicles_hexes , vehicle_retreat ;
87396: LD_EXP 160
87400: PUSH
87401: LD_INT 0
87403: GREATER
87404: IFFALSE 94570
87406: GO 87408
87408: DISABLE
87409: LD_INT 0
87411: PPUSH
87412: PPUSH
87413: PPUSH
87414: PPUSH
87415: PPUSH
87416: PPUSH
87417: PPUSH
87418: PPUSH
87419: PPUSH
87420: PPUSH
87421: PPUSH
87422: PPUSH
87423: PPUSH
87424: PPUSH
87425: PPUSH
87426: PPUSH
87427: PPUSH
87428: PPUSH
87429: PPUSH
87430: PPUSH
87431: PPUSH
87432: PPUSH
87433: PPUSH
// begin retreat = [ [ 23 , 17 ] , [ 149 , 120 ] , [ 172 , 16 ] ] ;
87434: LD_ADDR_VAR 0 9
87438: PUSH
87439: LD_INT 23
87441: PUSH
87442: LD_INT 17
87444: PUSH
87445: EMPTY
87446: LIST
87447: LIST
87448: PUSH
87449: LD_INT 149
87451: PUSH
87452: LD_INT 120
87454: PUSH
87455: EMPTY
87456: LIST
87457: LIST
87458: PUSH
87459: LD_INT 172
87461: PUSH
87462: LD_INT 16
87464: PUSH
87465: EMPTY
87466: LIST
87467: LIST
87468: PUSH
87469: EMPTY
87470: LIST
87471: LIST
87472: LIST
87473: ST_TO_ADDR
// vehicle_retreat = [ [ 29 , 33 ] , [ 151 , 130 ] , [ 187 , 35 ] ] ;
87474: LD_ADDR_VAR 0 23
87478: PUSH
87479: LD_INT 29
87481: PUSH
87482: LD_INT 33
87484: PUSH
87485: EMPTY
87486: LIST
87487: LIST
87488: PUSH
87489: LD_INT 151
87491: PUSH
87492: LD_INT 130
87494: PUSH
87495: EMPTY
87496: LIST
87497: LIST
87498: PUSH
87499: LD_INT 187
87501: PUSH
87502: LD_INT 35
87504: PUSH
87505: EMPTY
87506: LIST
87507: LIST
87508: PUSH
87509: EMPTY
87510: LIST
87511: LIST
87512: LIST
87513: ST_TO_ADDR
// for i in mb_bases do
87514: LD_ADDR_VAR 0 1
87518: PUSH
87519: LD_EXP 160
87523: PUSH
87524: FOR_IN
87525: IFFALSE 93769
// begin eng_skill = 0 ;
87527: LD_ADDR_VAR 0 14
87531: PUSH
87532: LD_INT 0
87534: ST_TO_ADDR
// for j in unitfilter ( mb_people [ i ] , [ f_class , class_engineer ] ) do
87535: LD_ADDR_VAR 0 2
87539: PUSH
87540: LD_EXP 163
87544: PUSH
87545: LD_VAR 0 1
87549: ARRAY
87550: PPUSH
87551: LD_INT 25
87553: PUSH
87554: LD_INT 2
87556: PUSH
87557: EMPTY
87558: LIST
87559: LIST
87560: PPUSH
87561: CALL_OW 72
87565: PUSH
87566: FOR_IN
87567: IFFALSE 87609
// if GetSkill ( j , skill_engineering ) > eng_skill then
87569: LD_VAR 0 2
87573: PPUSH
87574: LD_INT 2
87576: PPUSH
87577: CALL_OW 259
87581: PUSH
87582: LD_VAR 0 14
87586: GREATER
87587: IFFALSE 87607
// eng_skill = GetSkill ( j , skill_engineering ) ;
87589: LD_ADDR_VAR 0 14
87593: PUSH
87594: LD_VAR 0 2
87598: PPUSH
87599: LD_INT 2
87601: PPUSH
87602: CALL_OW 259
87606: ST_TO_ADDR
87607: GO 87566
87609: POP
87610: POP
// low_blevel_list = [ ] ;
87611: LD_ADDR_VAR 0 15
87615: PUSH
87616: EMPTY
87617: ST_TO_ADDR
// for j = 1 to mb_buildings [ i ] do
87618: LD_ADDR_VAR 0 2
87622: PUSH
87623: DOUBLE
87624: LD_INT 1
87626: DEC
87627: ST_TO_ADDR
87628: LD_EXP 161
87632: PUSH
87633: LD_VAR 0 1
87637: ARRAY
87638: PUSH
87639: FOR_TO
87640: IFFALSE 87972
// begin if mb_buildings [ i ] [ j ] > 0 then
87642: LD_EXP 161
87646: PUSH
87647: LD_VAR 0 1
87651: ARRAY
87652: PUSH
87653: LD_VAR 0 2
87657: ARRAY
87658: PUSH
87659: LD_INT 0
87661: GREATER
87662: IFFALSE 87970
// if GetLives ( mb_buildings [ i ] [ j ] ) < 1000 or GetBLevel ( mb_buildings [ i ] [ j ] ) < eng_skill then
87664: LD_EXP 161
87668: PUSH
87669: LD_VAR 0 1
87673: ARRAY
87674: PUSH
87675: LD_VAR 0 2
87679: ARRAY
87680: PPUSH
87681: CALL_OW 256
87685: PUSH
87686: LD_INT 1000
87688: LESS
87689: PUSH
87690: LD_EXP 161
87694: PUSH
87695: LD_VAR 0 1
87699: ARRAY
87700: PUSH
87701: LD_VAR 0 2
87705: ARRAY
87706: PPUSH
87707: CALL_OW 267
87711: PUSH
87712: LD_VAR 0 14
87716: LESS
87717: OR
87718: IFFALSE 87970
// begin if GetLives ( mb_buildings [ i ] [ j ] ) = 0 then
87720: LD_EXP 161
87724: PUSH
87725: LD_VAR 0 1
87729: ARRAY
87730: PUSH
87731: LD_VAR 0 2
87735: ARRAY
87736: PPUSH
87737: CALL_OW 256
87741: PUSH
87742: LD_INT 0
87744: EQUAL
87745: IFFALSE 87865
// begin mb_to_build_list = Replace ( mb_to_build_list , i , mb_to_build_list [ i ] ^ [ mb_buildings_locations [ i ] [ j ] ] ) ;
87747: LD_ADDR_EXP 173
87751: PUSH
87752: LD_EXP 173
87756: PPUSH
87757: LD_VAR 0 1
87761: PPUSH
87762: LD_EXP 173
87766: PUSH
87767: LD_VAR 0 1
87771: ARRAY
87772: PUSH
87773: LD_EXP 162
87777: PUSH
87778: LD_VAR 0 1
87782: ARRAY
87783: PUSH
87784: LD_VAR 0 2
87788: ARRAY
87789: PUSH
87790: EMPTY
87791: LIST
87792: ADD
87793: PPUSH
87794: CALL_OW 1
87798: ST_TO_ADDR
// temp_list = mb_buildings [ i ] ;
87799: LD_ADDR_VAR 0 6
87803: PUSH
87804: LD_EXP 161
87808: PUSH
87809: LD_VAR 0 1
87813: ARRAY
87814: ST_TO_ADDR
// temp_list = Replace ( temp_list , j , 0 ) ;
87815: LD_ADDR_VAR 0 6
87819: PUSH
87820: LD_VAR 0 6
87824: PPUSH
87825: LD_VAR 0 2
87829: PPUSH
87830: LD_INT 0
87832: PPUSH
87833: CALL_OW 1
87837: ST_TO_ADDR
// mb_buildings = Replace ( mb_buildings , i , temp_list ) ;
87838: LD_ADDR_EXP 161
87842: PUSH
87843: LD_EXP 161
87847: PPUSH
87848: LD_VAR 0 1
87852: PPUSH
87853: LD_VAR 0 6
87857: PPUSH
87858: CALL_OW 1
87862: ST_TO_ADDR
// end else
87863: GO 87970
// if not mb_buildings [ i ] [ j ] in mb_damaged_buildings [ i ] and not mb_buildings [ i ] [ j ] in ai_units_irradiated then
87865: LD_EXP 161
87869: PUSH
87870: LD_VAR 0 1
87874: ARRAY
87875: PUSH
87876: LD_VAR 0 2
87880: ARRAY
87881: PUSH
87882: LD_EXP 170
87886: PUSH
87887: LD_VAR 0 1
87891: ARRAY
87892: IN
87893: NOT
87894: PUSH
87895: LD_EXP 161
87899: PUSH
87900: LD_VAR 0 1
87904: ARRAY
87905: PUSH
87906: LD_VAR 0 2
87910: ARRAY
87911: PUSH
87912: LD_EXP 158
87916: IN
87917: NOT
87918: AND
87919: IFFALSE 87970
// mb_damaged_buildings = Replace ( mb_damaged_buildings , i , mb_damaged_buildings [ i ] ^ mb_buildings [ i ] [ j ] ) ;
87921: LD_ADDR_EXP 170
87925: PUSH
87926: LD_EXP 170
87930: PPUSH
87931: LD_VAR 0 1
87935: PPUSH
87936: LD_EXP 170
87940: PUSH
87941: LD_VAR 0 1
87945: ARRAY
87946: PUSH
87947: LD_EXP 161
87951: PUSH
87952: LD_VAR 0 1
87956: ARRAY
87957: PUSH
87958: LD_VAR 0 2
87962: ARRAY
87963: ADD
87964: PPUSH
87965: CALL_OW 1
87969: ST_TO_ADDR
// end ; end ;
87970: GO 87639
87972: POP
87973: POP
// if mb_damaged_buildings [ i ] > 1 and unitfilter ( mb_people [ i ] , [ [ f_class , class_engineer ] , [ f_lives , 600 ] ] ) > 0 then
87974: LD_EXP 170
87978: PUSH
87979: LD_VAR 0 1
87983: ARRAY
87984: PUSH
87985: LD_INT 1
87987: GREATER
87988: PUSH
87989: LD_EXP 163
87993: PUSH
87994: LD_VAR 0 1
87998: ARRAY
87999: PPUSH
88000: LD_INT 25
88002: PUSH
88003: LD_INT 2
88005: PUSH
88006: EMPTY
88007: LIST
88008: LIST
88009: PUSH
88010: LD_INT 24
88012: PUSH
88013: LD_INT 600
88015: PUSH
88016: EMPTY
88017: LIST
88018: LIST
88019: PUSH
88020: EMPTY
88021: LIST
88022: LIST
88023: PPUSH
88024: CALL_OW 72
88028: PUSH
88029: LD_INT 0
88031: GREATER
88032: AND
88033: IFFALSE 88192
// begin temp = mb_damaged_buildings [ i ] [ 1 ] ;
88035: LD_ADDR_VAR 0 4
88039: PUSH
88040: LD_EXP 170
88044: PUSH
88045: LD_VAR 0 1
88049: ARRAY
88050: PUSH
88051: LD_INT 1
88053: ARRAY
88054: ST_TO_ADDR
// temp2 = GetLives ( temp ) ;
88055: LD_ADDR_VAR 0 5
88059: PUSH
88060: LD_VAR 0 4
88064: PPUSH
88065: CALL_OW 256
88069: ST_TO_ADDR
// for j in mb_damaged_buildings [ i ] do
88070: LD_ADDR_VAR 0 2
88074: PUSH
88075: LD_EXP 170
88079: PUSH
88080: LD_VAR 0 1
88084: ARRAY
88085: PUSH
88086: FOR_IN
88087: IFFALSE 88137
// if GetLives ( j ) < temp2 - 400 then
88089: LD_VAR 0 2
88093: PPUSH
88094: CALL_OW 256
88098: PUSH
88099: LD_VAR 0 5
88103: PUSH
88104: LD_INT 400
88106: MINUS
88107: LESS
88108: IFFALSE 88135
// begin temp = j ;
88110: LD_ADDR_VAR 0 4
88114: PUSH
88115: LD_VAR 0 2
88119: ST_TO_ADDR
// temp2 = GetLives ( j ) ;
88120: LD_ADDR_VAR 0 5
88124: PUSH
88125: LD_VAR 0 2
88129: PPUSH
88130: CALL_OW 256
88134: ST_TO_ADDR
// end ;
88135: GO 88086
88137: POP
88138: POP
// temp_list = mb_damaged_buildings [ i ] diff temp ;
88139: LD_ADDR_VAR 0 6
88143: PUSH
88144: LD_EXP 170
88148: PUSH
88149: LD_VAR 0 1
88153: ARRAY
88154: PUSH
88155: LD_VAR 0 4
88159: DIFF
88160: ST_TO_ADDR
// mb_damaged_buildings = Replace ( mb_damaged_buildings , i , temp ^ temp_list ) ;
88161: LD_ADDR_EXP 170
88165: PUSH
88166: LD_EXP 170
88170: PPUSH
88171: LD_VAR 0 1
88175: PPUSH
88176: LD_VAR 0 4
88180: PUSH
88181: LD_VAR 0 6
88185: ADD
88186: PPUSH
88187: CALL_OW 1
88191: ST_TO_ADDR
// end ; if mb_damaged_buildings [ i ] > 0 then
88192: LD_EXP 170
88196: PUSH
88197: LD_VAR 0 1
88201: ARRAY
88202: PUSH
88203: LD_INT 0
88205: GREATER
88206: IFFALSE 88315
// for j in mb_damaged_buildings [ i ] do
88208: LD_ADDR_VAR 0 2
88212: PUSH
88213: LD_EXP 170
88217: PUSH
88218: LD_VAR 0 1
88222: ARRAY
88223: PUSH
88224: FOR_IN
88225: IFFALSE 88313
// if ( GetLives ( j ) = 1000 and GetBLevel ( j ) >= eng_skill ) or GetLives ( j ) = 0 then
88227: LD_VAR 0 2
88231: PPUSH
88232: CALL_OW 256
88236: PUSH
88237: LD_INT 1000
88239: EQUAL
88240: PUSH
88241: LD_VAR 0 2
88245: PPUSH
88246: CALL_OW 267
88250: PUSH
88251: LD_VAR 0 14
88255: GREATEREQUAL
88256: AND
88257: PUSH
88258: LD_VAR 0 2
88262: PPUSH
88263: CALL_OW 256
88267: PUSH
88268: LD_INT 0
88270: EQUAL
88271: OR
88272: IFFALSE 88311
// mb_damaged_buildings = Replace ( mb_damaged_buildings , i , mb_damaged_buildings [ i ] diff j ) ;
88274: LD_ADDR_EXP 170
88278: PUSH
88279: LD_EXP 170
88283: PPUSH
88284: LD_VAR 0 1
88288: PPUSH
88289: LD_EXP 170
88293: PUSH
88294: LD_VAR 0 1
88298: ARRAY
88299: PUSH
88300: LD_VAR 0 2
88304: DIFF
88305: PPUSH
88306: CALL_OW 1
88310: ST_TO_ADDR
88311: GO 88224
88313: POP
88314: POP
// temp = FilterUnitsInArea ( [ base_legion_minor , base_russians_minor , base_us_minor ] [ i ] , [ [ f_side , [ 8 , 3 , 1 ] [ i ] ] , [ f_type , unit_building ] ] ) diff mb_buildings [ i ] ;
88315: LD_ADDR_VAR 0 4
88319: PUSH
88320: LD_INT 7
88322: PUSH
88323: LD_INT 8
88325: PUSH
88326: LD_INT 6
88328: PUSH
88329: EMPTY
88330: LIST
88331: LIST
88332: LIST
88333: PUSH
88334: LD_VAR 0 1
88338: ARRAY
88339: PPUSH
88340: LD_INT 22
88342: PUSH
88343: LD_INT 8
88345: PUSH
88346: LD_INT 3
88348: PUSH
88349: LD_INT 1
88351: PUSH
88352: EMPTY
88353: LIST
88354: LIST
88355: LIST
88356: PUSH
88357: LD_VAR 0 1
88361: ARRAY
88362: PUSH
88363: EMPTY
88364: LIST
88365: LIST
88366: PUSH
88367: LD_INT 21
88369: PUSH
88370: LD_INT 3
88372: PUSH
88373: EMPTY
88374: LIST
88375: LIST
88376: PUSH
88377: EMPTY
88378: LIST
88379: LIST
88380: PPUSH
88381: CALL_OW 70
88385: PUSH
88386: LD_EXP 161
88390: PUSH
88391: LD_VAR 0 1
88395: ARRAY
88396: DIFF
88397: ST_TO_ADDR
// if temp > 0 then
88398: LD_VAR 0 4
88402: PUSH
88403: LD_INT 0
88405: GREATER
88406: IFFALSE 88688
// for j = 1 to mb_buildings_locations [ i ] do
88408: LD_ADDR_VAR 0 2
88412: PUSH
88413: DOUBLE
88414: LD_INT 1
88416: DEC
88417: ST_TO_ADDR
88418: LD_EXP 162
88422: PUSH
88423: LD_VAR 0 1
88427: ARRAY
88428: PUSH
88429: FOR_TO
88430: IFFALSE 88686
// if GetX ( temp [ 1 ] ) = mb_buildings_locations [ i ] [ j ] [ 1 ] and GetY ( temp [ 1 ] ) = mb_buildings_locations [ i ] [ j ] [ 2 ] then
88432: LD_VAR 0 4
88436: PUSH
88437: LD_INT 1
88439: ARRAY
88440: PPUSH
88441: CALL_OW 250
88445: PUSH
88446: LD_EXP 162
88450: PUSH
88451: LD_VAR 0 1
88455: ARRAY
88456: PUSH
88457: LD_VAR 0 2
88461: ARRAY
88462: PUSH
88463: LD_INT 1
88465: ARRAY
88466: EQUAL
88467: PUSH
88468: LD_VAR 0 4
88472: PUSH
88473: LD_INT 1
88475: ARRAY
88476: PPUSH
88477: CALL_OW 251
88481: PUSH
88482: LD_EXP 162
88486: PUSH
88487: LD_VAR 0 1
88491: ARRAY
88492: PUSH
88493: LD_VAR 0 2
88497: ARRAY
88498: PUSH
88499: LD_INT 2
88501: ARRAY
88502: EQUAL
88503: AND
88504: IFFALSE 88684
// begin temp_list = mb_buildings [ i ] ;
88506: LD_ADDR_VAR 0 6
88510: PUSH
88511: LD_EXP 161
88515: PUSH
88516: LD_VAR 0 1
88520: ARRAY
88521: ST_TO_ADDR
// temp_list = Replace ( temp_list , j , temp [ 1 ] ) ;
88522: LD_ADDR_VAR 0 6
88526: PUSH
88527: LD_VAR 0 6
88531: PPUSH
88532: LD_VAR 0 2
88536: PPUSH
88537: LD_VAR 0 4
88541: PUSH
88542: LD_INT 1
88544: ARRAY
88545: PPUSH
88546: CALL_OW 1
88550: ST_TO_ADDR
// mb_buildings = Replace ( mb_buildings , i , temp_list ) ;
88551: LD_ADDR_EXP 161
88555: PUSH
88556: LD_EXP 161
88560: PPUSH
88561: LD_VAR 0 1
88565: PPUSH
88566: LD_VAR 0 6
88570: PPUSH
88571: CALL_OW 1
88575: ST_TO_ADDR
// case mb_buildings_locations [ i ] [ j ] [ 4 ] of b_armoury :
88576: LD_EXP 162
88580: PUSH
88581: LD_VAR 0 1
88585: ARRAY
88586: PUSH
88587: LD_VAR 0 2
88591: ARRAY
88592: PUSH
88593: LD_INT 4
88595: ARRAY
88596: PUSH
88597: LD_INT 4
88599: DOUBLE
88600: EQUAL
88601: IFTRUE 88605
88603: GO 88632
88605: POP
// if not i = 3 then
88606: LD_VAR 0 1
88610: PUSH
88611: LD_INT 3
88613: EQUAL
88614: NOT
88615: IFFALSE 88630
// addcomupgrade ( temp [ 1 ] ) ; b_workshop :
88617: LD_VAR 0 4
88621: PUSH
88622: LD_INT 1
88624: ARRAY
88625: PPUSH
88626: CALL_OW 206
88630: GO 88684
88632: LD_INT 2
88634: DOUBLE
88635: EQUAL
88636: IFTRUE 88640
88638: GO 88656
88640: POP
// addcomupgrade ( temp [ 1 ] ) ; b_lab :
88641: LD_VAR 0 4
88645: PUSH
88646: LD_INT 1
88648: ARRAY
88649: PPUSH
88650: CALL_OW 206
88654: GO 88684
88656: LD_INT 6
88658: DOUBLE
88659: EQUAL
88660: IFTRUE 88664
88662: GO 88683
88664: POP
// addcomupgradelab ( temp [ 1 ] , b_lab_biological ) ; end ;
88665: LD_VAR 0 4
88669: PUSH
88670: LD_INT 1
88672: ARRAY
88673: PPUSH
88674: LD_INT 13
88676: PPUSH
88677: CALL_OW 207
88681: GO 88684
88683: POP
// end ;
88684: GO 88429
88686: POP
88687: POP
// if mb_to_build_list [ i ] > 0 then
88688: LD_EXP 173
88692: PUSH
88693: LD_VAR 0 1
88697: ARRAY
88698: PUSH
88699: LD_INT 0
88701: GREATER
88702: IFFALSE 88890
// for j = 1 to mb_to_build_list [ i ] do
88704: LD_ADDR_VAR 0 2
88708: PUSH
88709: DOUBLE
88710: LD_INT 1
88712: DEC
88713: ST_TO_ADDR
88714: LD_EXP 173
88718: PUSH
88719: LD_VAR 0 1
88723: ARRAY
88724: PUSH
88725: FOR_TO
88726: IFFALSE 88888
// begin temp = HexInfo ( mb_to_build_list [ i ] [ j ] [ 1 ] , mb_to_build_list [ i ] [ j ] [ 2 ] ) ;
88728: LD_ADDR_VAR 0 4
88732: PUSH
88733: LD_EXP 173
88737: PUSH
88738: LD_VAR 0 1
88742: ARRAY
88743: PUSH
88744: LD_VAR 0 2
88748: ARRAY
88749: PUSH
88750: LD_INT 1
88752: ARRAY
88753: PPUSH
88754: LD_EXP 173
88758: PUSH
88759: LD_VAR 0 1
88763: ARRAY
88764: PUSH
88765: LD_VAR 0 2
88769: ARRAY
88770: PUSH
88771: LD_INT 2
88773: ARRAY
88774: PPUSH
88775: CALL_OW 428
88779: ST_TO_ADDR
// if temp > 0 then
88780: LD_VAR 0 4
88784: PUSH
88785: LD_INT 0
88787: GREATER
88788: IFFALSE 88886
// if GetBType ( temp ) = mb_to_build_list [ i ] [ j ] [ 4 ] then
88790: LD_VAR 0 4
88794: PPUSH
88795: CALL_OW 266
88799: PUSH
88800: LD_EXP 173
88804: PUSH
88805: LD_VAR 0 1
88809: ARRAY
88810: PUSH
88811: LD_VAR 0 2
88815: ARRAY
88816: PUSH
88817: LD_INT 4
88819: ARRAY
88820: EQUAL
88821: IFFALSE 88886
// begin temp_list = mb_to_build_list [ i ] ;
88823: LD_ADDR_VAR 0 6
88827: PUSH
88828: LD_EXP 173
88832: PUSH
88833: LD_VAR 0 1
88837: ARRAY
88838: ST_TO_ADDR
// temp_list = delete ( temp_list , j ) ;
88839: LD_ADDR_VAR 0 6
88843: PUSH
88844: LD_VAR 0 6
88848: PPUSH
88849: LD_VAR 0 2
88853: PPUSH
88854: CALL_OW 3
88858: ST_TO_ADDR
// mb_to_build_list = Replace ( mb_to_build_list , i , temp_list ) ;
88859: LD_ADDR_EXP 173
88863: PUSH
88864: LD_EXP 173
88868: PPUSH
88869: LD_VAR 0 1
88873: PPUSH
88874: LD_VAR 0 6
88878: PPUSH
88879: CALL_OW 1
88883: ST_TO_ADDR
// break ;
88884: GO 88888
// end ; end ;
88886: GO 88725
88888: POP
88889: POP
// factory = unitfilter ( mb_buildings [ i ] , [ f_btype , b_factory ] ) [ 1 ] ;
88890: LD_ADDR_VAR 0 16
88894: PUSH
88895: LD_EXP 161
88899: PUSH
88900: LD_VAR 0 1
88904: ARRAY
88905: PPUSH
88906: LD_INT 30
88908: PUSH
88909: LD_INT 3
88911: PUSH
88912: EMPTY
88913: LIST
88914: LIST
88915: PPUSH
88916: CALL_OW 72
88920: PUSH
88921: LD_INT 1
88923: ARRAY
88924: ST_TO_ADDR
// for j in mb_buildings_locations [ i ] do
88925: LD_ADDR_VAR 0 2
88929: PUSH
88930: LD_EXP 162
88934: PUSH
88935: LD_VAR 0 1
88939: ARRAY
88940: PUSH
88941: FOR_IN
88942: IFFALSE 89051
// if j [ 4 ] in [ b_bunker , b_turret ] then
88944: LD_VAR 0 2
88948: PUSH
88949: LD_INT 4
88951: ARRAY
88952: PUSH
88953: LD_INT 32
88955: PUSH
88956: LD_INT 33
88958: PUSH
88959: EMPTY
88960: LIST
88961: LIST
88962: IN
88963: IFFALSE 89049
// if GetBWeapon ( HexInfo ( j [ 1 ] , j [ 2 ] ) ) = 0 then
88965: LD_VAR 0 2
88969: PUSH
88970: LD_INT 1
88972: ARRAY
88973: PPUSH
88974: LD_VAR 0 2
88978: PUSH
88979: LD_INT 2
88981: ARRAY
88982: PPUSH
88983: CALL_OW 428
88987: PPUSH
88988: CALL_OW 269
88992: PUSH
88993: LD_INT 0
88995: EQUAL
88996: IFFALSE 89049
// if GetWorkingProgress ( factory ) = 0 then
88998: LD_VAR 0 16
89002: PPUSH
89003: CALL_OW 328
89007: PUSH
89008: LD_INT 0
89010: EQUAL
89011: IFFALSE 89049
// ComPlaceWeapon ( HexInfo ( j [ 1 ] , j [ 2 ] ) , j [ 5 ] ) ;
89013: LD_VAR 0 2
89017: PUSH
89018: LD_INT 1
89020: ARRAY
89021: PPUSH
89022: LD_VAR 0 2
89026: PUSH
89027: LD_INT 2
89029: ARRAY
89030: PPUSH
89031: CALL_OW 428
89035: PPUSH
89036: LD_VAR 0 2
89040: PUSH
89041: LD_INT 5
89043: ARRAY
89044: PPUSH
89045: CALL_OW 148
89049: GO 88941
89051: POP
89052: POP
// if i = 2 then
89053: LD_VAR 0 1
89057: PUSH
89058: LD_INT 2
89060: EQUAL
89061: IFFALSE 89079
// factory = HexInfo ( 198 , 215 ) ;
89063: LD_ADDR_VAR 0 16
89067: PUSH
89068: LD_INT 198
89070: PPUSH
89071: LD_INT 215
89073: PPUSH
89074: CALL_OW 428
89078: ST_TO_ADDR
// if not - 1 in mb_vehicles [ i ] then
89079: LD_INT 1
89081: NEG
89082: PUSH
89083: LD_EXP 164
89087: PUSH
89088: LD_VAR 0 1
89092: ARRAY
89093: IN
89094: NOT
89095: IFFALSE 89497
// for j = 1 to mb_vehicles [ i ] do
89097: LD_ADDR_VAR 0 2
89101: PUSH
89102: DOUBLE
89103: LD_INT 1
89105: DEC
89106: ST_TO_ADDR
89107: LD_EXP 164
89111: PUSH
89112: LD_VAR 0 1
89116: ARRAY
89117: PUSH
89118: FOR_TO
89119: IFFALSE 89495
// if mb_vehicles [ i ] [ j ] = 0 or IsDead ( mb_vehicles [ i ] [ j ] ) and not mb_vehicles [ i ] [ j ] = - 2 then
89121: LD_EXP 164
89125: PUSH
89126: LD_VAR 0 1
89130: ARRAY
89131: PUSH
89132: LD_VAR 0 2
89136: ARRAY
89137: PUSH
89138: LD_INT 0
89140: EQUAL
89141: PUSH
89142: LD_EXP 164
89146: PUSH
89147: LD_VAR 0 1
89151: ARRAY
89152: PUSH
89153: LD_VAR 0 2
89157: ARRAY
89158: PPUSH
89159: CALL_OW 301
89163: PUSH
89164: LD_EXP 164
89168: PUSH
89169: LD_VAR 0 1
89173: ARRAY
89174: PUSH
89175: LD_VAR 0 2
89179: ARRAY
89180: PUSH
89181: LD_INT 2
89183: NEG
89184: EQUAL
89185: NOT
89186: AND
89187: OR
89188: IFFALSE 89493
// begin if i = 1 then
89190: LD_VAR 0 1
89194: PUSH
89195: LD_INT 1
89197: EQUAL
89198: IFFALSE 89242
// begin temp = UnitFilter ( UnitsInside ( factory ) , [ f_class , class_apeman ] ) ;
89200: LD_ADDR_VAR 0 4
89204: PUSH
89205: LD_VAR 0 16
89209: PPUSH
89210: CALL_OW 313
89214: PPUSH
89215: LD_INT 25
89217: PUSH
89218: LD_INT 12
89220: PUSH
89221: EMPTY
89222: LIST
89223: LIST
89224: PPUSH
89225: CALL_OW 72
89229: ST_TO_ADDR
// if temp = 0 then
89230: LD_VAR 0 4
89234: PUSH
89235: LD_INT 0
89237: EQUAL
89238: IFFALSE 89242
// continue ;
89240: GO 89118
// end ; weapon = mb_vehiclestemp_weapons [ i ] [ j ] ;
89242: LD_ADDR_VAR 0 20
89246: PUSH
89247: LD_EXP 166
89251: PUSH
89252: LD_VAR 0 1
89256: ARRAY
89257: PUSH
89258: LD_VAR 0 2
89262: ARRAY
89263: ST_TO_ADDR
// if weapon = - 2 then
89264: LD_VAR 0 20
89268: PUSH
89269: LD_INT 2
89271: NEG
89272: EQUAL
89273: IFFALSE 89342
// begin temp = mb_vehicles [ i ] ;
89275: LD_ADDR_VAR 0 4
89279: PUSH
89280: LD_EXP 164
89284: PUSH
89285: LD_VAR 0 1
89289: ARRAY
89290: ST_TO_ADDR
// temp = Replace ( temp , j , - 2 ) ;
89291: LD_ADDR_VAR 0 4
89295: PUSH
89296: LD_VAR 0 4
89300: PPUSH
89301: LD_VAR 0 2
89305: PPUSH
89306: LD_INT 2
89308: NEG
89309: PPUSH
89310: CALL_OW 1
89314: ST_TO_ADDR
// mb_vehicles = Replace ( mb_vehicles , i , temp ) ;
89315: LD_ADDR_EXP 164
89319: PUSH
89320: LD_EXP 164
89324: PPUSH
89325: LD_VAR 0 1
89329: PPUSH
89330: LD_VAR 0 4
89334: PPUSH
89335: CALL_OW 1
89339: ST_TO_ADDR
// break ;
89340: GO 89495
// end ; chassis = mb_vehiclestemp_chassis [ i ] [ j ] ;
89342: LD_ADDR_VAR 0 17
89346: PUSH
89347: LD_EXP 167
89351: PUSH
89352: LD_VAR 0 1
89356: ARRAY
89357: PUSH
89358: LD_VAR 0 2
89362: ARRAY
89363: ST_TO_ADDR
// engine = engine_combustion ;
89364: LD_ADDR_VAR 0 18
89368: PUSH
89369: LD_INT 1
89371: ST_TO_ADDR
// control = [ control_apeman , control_computer , control_computer ] [ i ] ;
89372: LD_ADDR_VAR 0 19
89376: PUSH
89377: LD_INT 5
89379: PUSH
89380: LD_INT 3
89382: PUSH
89383: LD_INT 3
89385: PUSH
89386: EMPTY
89387: LIST
89388: LIST
89389: LIST
89390: PUSH
89391: LD_VAR 0 1
89395: ARRAY
89396: ST_TO_ADDR
// ComConstruct ( factory , chassis , engine , control , weapon ) ;
89397: LD_VAR 0 16
89401: PPUSH
89402: LD_VAR 0 17
89406: PPUSH
89407: LD_VAR 0 18
89411: PPUSH
89412: LD_VAR 0 19
89416: PPUSH
89417: LD_VAR 0 20
89421: PPUSH
89422: CALL_OW 125
// temp = mb_vehicles [ i ] ;
89426: LD_ADDR_VAR 0 4
89430: PUSH
89431: LD_EXP 164
89435: PUSH
89436: LD_VAR 0 1
89440: ARRAY
89441: ST_TO_ADDR
// temp = Replace ( temp , j , - 1 ) ;
89442: LD_ADDR_VAR 0 4
89446: PUSH
89447: LD_VAR 0 4
89451: PPUSH
89452: LD_VAR 0 2
89456: PPUSH
89457: LD_INT 1
89459: NEG
89460: PPUSH
89461: CALL_OW 1
89465: ST_TO_ADDR
// mb_vehicles = Replace ( mb_vehicles , i , temp ) ;
89466: LD_ADDR_EXP 164
89470: PUSH
89471: LD_EXP 164
89475: PPUSH
89476: LD_VAR 0 1
89480: PPUSH
89481: LD_VAR 0 4
89485: PPUSH
89486: CALL_OW 1
89490: ST_TO_ADDR
// break ;
89491: GO 89495
// end ;
89493: GO 89118
89495: POP
89496: POP
// temp_list = mb_vehicles [ i ] diff [ 0 , - 1 ] ;
89497: LD_ADDR_VAR 0 6
89501: PUSH
89502: LD_EXP 164
89506: PUSH
89507: LD_VAR 0 1
89511: ARRAY
89512: PUSH
89513: LD_INT 0
89515: PUSH
89516: LD_INT 1
89518: NEG
89519: PUSH
89520: EMPTY
89521: LIST
89522: LIST
89523: DIFF
89524: ST_TO_ADDR
// temp_list2 = [ ai_patrol [ 1 ] , [ ] , ai_patrol [ 2 ] ] [ i ] diff [ 0 , - 1 ] ;
89525: LD_ADDR_VAR 0 7
89529: PUSH
89530: LD_EXP 183
89534: PUSH
89535: LD_INT 1
89537: ARRAY
89538: PUSH
89539: EMPTY
89540: PUSH
89541: LD_EXP 183
89545: PUSH
89546: LD_INT 2
89548: ARRAY
89549: PUSH
89550: EMPTY
89551: LIST
89552: LIST
89553: LIST
89554: PUSH
89555: LD_VAR 0 1
89559: ARRAY
89560: PUSH
89561: LD_INT 0
89563: PUSH
89564: LD_INT 1
89566: NEG
89567: PUSH
89568: EMPTY
89569: LIST
89570: LIST
89571: DIFF
89572: ST_TO_ADDR
// for j in temp_list2 do
89573: LD_ADDR_VAR 0 2
89577: PUSH
89578: LD_VAR 0 7
89582: PUSH
89583: FOR_IN
89584: IFFALSE 89615
// if IsDead ( j ) then
89586: LD_VAR 0 2
89590: PPUSH
89591: CALL_OW 301
89595: IFFALSE 89613
// temp_list2 = temp_list2 diff j ;
89597: LD_ADDR_VAR 0 7
89601: PUSH
89602: LD_VAR 0 7
89606: PUSH
89607: LD_VAR 0 2
89611: DIFF
89612: ST_TO_ADDR
89613: GO 89583
89615: POP
89616: POP
// if not i = 2 then
89617: LD_VAR 0 1
89621: PUSH
89622: LD_INT 2
89624: EQUAL
89625: NOT
89626: IFFALSE 90028
// if BaseUnderAttack ( i , 2 ) and mb_re_timer [ i ] = 0 then
89628: LD_VAR 0 1
89632: PPUSH
89633: LD_INT 2
89635: PPUSH
89636: CALL 55912 0 2
89640: PUSH
89641: LD_EXP 169
89645: PUSH
89646: LD_VAR 0 1
89650: ARRAY
89651: PUSH
89652: LD_INT 0
89654: EQUAL
89655: AND
89656: IFFALSE 90028
// if temp_list >= [ 3 , 4 , 6 ] [ difficulty ] and temp_list2 < 3 then
89658: LD_VAR 0 6
89662: PUSH
89663: LD_INT 3
89665: PUSH
89666: LD_INT 4
89668: PUSH
89669: LD_INT 6
89671: PUSH
89672: EMPTY
89673: LIST
89674: LIST
89675: LIST
89676: PUSH
89677: LD_OWVAR 67
89681: ARRAY
89682: GREATEREQUAL
89683: PUSH
89684: LD_VAR 0 7
89688: PUSH
89689: LD_INT 3
89691: LESS
89692: AND
89693: IFFALSE 90028
// begin temp_list = [ ] ;
89695: LD_ADDR_VAR 0 6
89699: PUSH
89700: EMPTY
89701: ST_TO_ADDR
// temp_list2 = mb_vehicles [ i ] ;
89702: LD_ADDR_VAR 0 7
89706: PUSH
89707: LD_EXP 164
89711: PUSH
89712: LD_VAR 0 1
89716: ARRAY
89717: ST_TO_ADDR
// for j = 1 to [ 3 , 4 , 6 ] [ difficulty ] do
89718: LD_ADDR_VAR 0 2
89722: PUSH
89723: DOUBLE
89724: LD_INT 1
89726: DEC
89727: ST_TO_ADDR
89728: LD_INT 3
89730: PUSH
89731: LD_INT 4
89733: PUSH
89734: LD_INT 6
89736: PUSH
89737: EMPTY
89738: LIST
89739: LIST
89740: LIST
89741: PUSH
89742: LD_OWVAR 67
89746: ARRAY
89747: PUSH
89748: FOR_TO
89749: IFFALSE 89809
// begin temp = temp_list2 [ Rand ( 1 , temp_list2 ) ] ;
89751: LD_ADDR_VAR 0 4
89755: PUSH
89756: LD_VAR 0 7
89760: PUSH
89761: LD_INT 1
89763: PPUSH
89764: LD_VAR 0 7
89768: PPUSH
89769: CALL_OW 12
89773: ARRAY
89774: ST_TO_ADDR
// temp_list2 = temp_list2 diff temp ;
89775: LD_ADDR_VAR 0 7
89779: PUSH
89780: LD_VAR 0 7
89784: PUSH
89785: LD_VAR 0 4
89789: DIFF
89790: ST_TO_ADDR
// temp_list = temp_list ^ temp ;
89791: LD_ADDR_VAR 0 6
89795: PUSH
89796: LD_VAR 0 6
89800: PUSH
89801: LD_VAR 0 4
89805: ADD
89806: ST_TO_ADDR
// end ;
89807: GO 89748
89809: POP
89810: POP
// temp_list2 = mb_vehicles [ i ] ;
89811: LD_ADDR_VAR 0 7
89815: PUSH
89816: LD_EXP 164
89820: PUSH
89821: LD_VAR 0 1
89825: ARRAY
89826: ST_TO_ADDR
// temp_list3 = [ ] ;
89827: LD_ADDR_VAR 0 8
89831: PUSH
89832: EMPTY
89833: ST_TO_ADDR
// for j = 1 to mb_vehicles [ i ] do
89834: LD_ADDR_VAR 0 2
89838: PUSH
89839: DOUBLE
89840: LD_INT 1
89842: DEC
89843: ST_TO_ADDR
89844: LD_EXP 164
89848: PUSH
89849: LD_VAR 0 1
89853: ARRAY
89854: PUSH
89855: FOR_TO
89856: IFFALSE 89952
// if mb_vehicles [ i ] [ j ] in temp_list then
89858: LD_EXP 164
89862: PUSH
89863: LD_VAR 0 1
89867: ARRAY
89868: PUSH
89869: LD_VAR 0 2
89873: ARRAY
89874: PUSH
89875: LD_VAR 0 6
89879: IN
89880: IFFALSE 89936
// begin temp_list2 = Replace ( temp_list2 , j , - 2 ) ;
89882: LD_ADDR_VAR 0 7
89886: PUSH
89887: LD_VAR 0 7
89891: PPUSH
89892: LD_VAR 0 2
89896: PPUSH
89897: LD_INT 2
89899: NEG
89900: PPUSH
89901: CALL_OW 1
89905: ST_TO_ADDR
// temp_list3 = temp_list3 ^ mb_vehicles [ i ] [ j ] ;
89906: LD_ADDR_VAR 0 8
89910: PUSH
89911: LD_VAR 0 8
89915: PUSH
89916: LD_EXP 164
89920: PUSH
89921: LD_VAR 0 1
89925: ARRAY
89926: PUSH
89927: LD_VAR 0 2
89931: ARRAY
89932: ADD
89933: ST_TO_ADDR
// end else
89934: GO 89950
// temp_list3 = temp_list3 ^ 0 ;
89936: LD_ADDR_VAR 0 8
89940: PUSH
89941: LD_VAR 0 8
89945: PUSH
89946: LD_INT 0
89948: ADD
89949: ST_TO_ADDR
89950: GO 89855
89952: POP
89953: POP
// mb_vehicles = Replace ( mb_vehicles , i , temp_list2 ) ;
89954: LD_ADDR_EXP 164
89958: PUSH
89959: LD_EXP 164
89963: PPUSH
89964: LD_VAR 0 1
89968: PPUSH
89969: LD_VAR 0 7
89973: PPUSH
89974: CALL_OW 1
89978: ST_TO_ADDR
// mb_re_vehicles = Replace ( mb_re_vehicles , i , temp_list3 ) ;
89979: LD_ADDR_EXP 168
89983: PUSH
89984: LD_EXP 168
89988: PPUSH
89989: LD_VAR 0 1
89993: PPUSH
89994: LD_VAR 0 8
89998: PPUSH
89999: CALL_OW 1
90003: ST_TO_ADDR
// mb_re_timer = Replace ( mb_re_timer , i , - 1 ) ;
90004: LD_ADDR_EXP 169
90008: PUSH
90009: LD_EXP 169
90013: PPUSH
90014: LD_VAR 0 1
90018: PPUSH
90019: LD_INT 1
90021: NEG
90022: PPUSH
90023: CALL_OW 1
90027: ST_TO_ADDR
// end ; if mb_re_timer [ i ] > 0 then
90028: LD_EXP 169
90032: PUSH
90033: LD_VAR 0 1
90037: ARRAY
90038: PUSH
90039: LD_INT 0
90041: GREATER
90042: IFFALSE 90079
// mb_re_timer = Replace ( mb_re_timer , i , mb_re_timer [ i ] - 0 0$1 ) ;
90044: LD_ADDR_EXP 169
90048: PUSH
90049: LD_EXP 169
90053: PPUSH
90054: LD_VAR 0 1
90058: PPUSH
90059: LD_EXP 169
90063: PUSH
90064: LD_VAR 0 1
90068: ARRAY
90069: PUSH
90070: LD_INT 35
90072: MINUS
90073: PPUSH
90074: CALL_OW 1
90078: ST_TO_ADDR
// vehicles = mb_vehicles [ i ] ;
90079: LD_ADDR_VAR 0 21
90083: PUSH
90084: LD_EXP 164
90088: PUSH
90089: LD_VAR 0 1
90093: ARRAY
90094: ST_TO_ADDR
// vehicles_hexes = mb_vehicles_hexes [ i ] ;
90095: LD_ADDR_VAR 0 22
90099: PUSH
90100: LD_EXP 165
90104: PUSH
90105: LD_VAR 0 1
90109: ARRAY
90110: ST_TO_ADDR
// for j = mb_vehicles [ i ] downto 1 do
90111: LD_ADDR_VAR 0 2
90115: PUSH
90116: DOUBLE
90117: LD_EXP 164
90121: PUSH
90122: LD_VAR 0 1
90126: ARRAY
90127: INC
90128: ST_TO_ADDR
90129: LD_INT 1
90131: PUSH
90132: FOR_DOWNTO
90133: IFFALSE 90212
// if mb_vehicles [ i ] [ j ] in [ 0 , - 1 , - 2 ] then
90135: LD_EXP 164
90139: PUSH
90140: LD_VAR 0 1
90144: ARRAY
90145: PUSH
90146: LD_VAR 0 2
90150: ARRAY
90151: PUSH
90152: LD_INT 0
90154: PUSH
90155: LD_INT 1
90157: NEG
90158: PUSH
90159: LD_INT 2
90161: NEG
90162: PUSH
90163: EMPTY
90164: LIST
90165: LIST
90166: LIST
90167: IN
90168: IFFALSE 90210
// begin vehicles = Delete ( vehicles , j ) ;
90170: LD_ADDR_VAR 0 21
90174: PUSH
90175: LD_VAR 0 21
90179: PPUSH
90180: LD_VAR 0 2
90184: PPUSH
90185: CALL_OW 3
90189: ST_TO_ADDR
// vehicles_hexes = Delete ( vehicles_hexes , j ) ;
90190: LD_ADDR_VAR 0 22
90194: PUSH
90195: LD_VAR 0 22
90199: PPUSH
90200: LD_VAR 0 2
90204: PPUSH
90205: CALL_OW 3
90209: ST_TO_ADDR
// end ;
90210: GO 90132
90212: POP
90213: POP
// temp = mb_damagedvehicles [ i ] ;
90214: LD_ADDR_VAR 0 4
90218: PUSH
90219: LD_EXP 172
90223: PUSH
90224: LD_VAR 0 1
90228: ARRAY
90229: ST_TO_ADDR
// for j in vehicles do
90230: LD_ADDR_VAR 0 2
90234: PUSH
90235: LD_VAR 0 21
90239: PUSH
90240: FOR_IN
90241: IFFALSE 90295
// if GetLives ( j ) < 800 then
90243: LD_VAR 0 2
90247: PPUSH
90248: CALL_OW 256
90252: PUSH
90253: LD_INT 800
90255: LESS
90256: IFFALSE 90293
// if not j in mb_damagedvehicles [ i ] then
90258: LD_VAR 0 2
90262: PUSH
90263: LD_EXP 172
90267: PUSH
90268: LD_VAR 0 1
90272: ARRAY
90273: IN
90274: NOT
90275: IFFALSE 90293
// temp = temp ^ j ;
90277: LD_ADDR_VAR 0 4
90281: PUSH
90282: LD_VAR 0 4
90286: PUSH
90287: LD_VAR 0 2
90291: ADD
90292: ST_TO_ADDR
90293: GO 90240
90295: POP
90296: POP
// for j in mb_damagedvehicles [ i ] do
90297: LD_ADDR_VAR 0 2
90301: PUSH
90302: LD_EXP 172
90306: PUSH
90307: LD_VAR 0 1
90311: ARRAY
90312: PUSH
90313: FOR_IN
90314: IFFALSE 90364
// if GetLives ( j ) = 1000 or GetLives ( j ) < 100 then
90316: LD_VAR 0 2
90320: PPUSH
90321: CALL_OW 256
90325: PUSH
90326: LD_INT 1000
90328: EQUAL
90329: PUSH
90330: LD_VAR 0 2
90334: PPUSH
90335: CALL_OW 256
90339: PUSH
90340: LD_INT 100
90342: LESS
90343: OR
90344: IFFALSE 90362
// temp = temp diff j ;
90346: LD_ADDR_VAR 0 4
90350: PUSH
90351: LD_VAR 0 4
90355: PUSH
90356: LD_VAR 0 2
90360: DIFF
90361: ST_TO_ADDR
90362: GO 90313
90364: POP
90365: POP
// mb_damagedvehicles = Replace ( mb_damagedvehicles , i , temp ) ;
90366: LD_ADDR_EXP 172
90370: PUSH
90371: LD_EXP 172
90375: PPUSH
90376: LD_VAR 0 1
90380: PPUSH
90381: LD_VAR 0 4
90385: PPUSH
90386: CALL_OW 1
90390: ST_TO_ADDR
// if mb_detected_enemy [ i ] = 0 then
90391: LD_EXP 179
90395: PUSH
90396: LD_VAR 0 1
90400: ARRAY
90401: PUSH
90402: LD_INT 0
90404: EQUAL
90405: IFFALSE 90610
// begin for j = 1 to vehicles do
90407: LD_ADDR_VAR 0 2
90411: PUSH
90412: DOUBLE
90413: LD_INT 1
90415: DEC
90416: ST_TO_ADDR
90417: LD_VAR 0 21
90421: PUSH
90422: FOR_TO
90423: IFFALSE 90606
// if vehicles [ j ] in mb_damagedvehicles [ i ] then
90425: LD_VAR 0 21
90429: PUSH
90430: LD_VAR 0 2
90434: ARRAY
90435: PUSH
90436: LD_EXP 172
90440: PUSH
90441: LD_VAR 0 1
90445: ARRAY
90446: IN
90447: IFFALSE 90496
// ComMoveXY ( vehicles [ j ] , vehicle_retreat [ i ] [ 1 ] , vehicle_retreat [ i ] [ 2 ] ) else
90449: LD_VAR 0 21
90453: PUSH
90454: LD_VAR 0 2
90458: ARRAY
90459: PPUSH
90460: LD_VAR 0 23
90464: PUSH
90465: LD_VAR 0 1
90469: ARRAY
90470: PUSH
90471: LD_INT 1
90473: ARRAY
90474: PPUSH
90475: LD_VAR 0 23
90479: PUSH
90480: LD_VAR 0 1
90484: ARRAY
90485: PUSH
90486: LD_INT 2
90488: ARRAY
90489: PPUSH
90490: CALL_OW 111
90494: GO 90604
// if GetDistUnitXY ( vehicles [ j ] , mb_vehicles_hexes [ i ] [ j ] [ 1 ] , mb_vehicles_hexes [ i ] [ j ] [ 2 ] ) > 3 then
90496: LD_VAR 0 21
90500: PUSH
90501: LD_VAR 0 2
90505: ARRAY
90506: PPUSH
90507: LD_EXP 165
90511: PUSH
90512: LD_VAR 0 1
90516: ARRAY
90517: PUSH
90518: LD_VAR 0 2
90522: ARRAY
90523: PUSH
90524: LD_INT 1
90526: ARRAY
90527: PPUSH
90528: LD_EXP 165
90532: PUSH
90533: LD_VAR 0 1
90537: ARRAY
90538: PUSH
90539: LD_VAR 0 2
90543: ARRAY
90544: PUSH
90545: LD_INT 2
90547: ARRAY
90548: PPUSH
90549: CALL_OW 297
90553: PUSH
90554: LD_INT 3
90556: GREATER
90557: IFFALSE 90604
// ComMoveXY ( vehicles [ j ] , vehicles_hexes [ j ] [ 1 ] , vehicles_hexes [ j ] [ 2 ] ) ;
90559: LD_VAR 0 21
90563: PUSH
90564: LD_VAR 0 2
90568: ARRAY
90569: PPUSH
90570: LD_VAR 0 22
90574: PUSH
90575: LD_VAR 0 2
90579: ARRAY
90580: PUSH
90581: LD_INT 1
90583: ARRAY
90584: PPUSH
90585: LD_VAR 0 22
90589: PUSH
90590: LD_VAR 0 2
90594: ARRAY
90595: PUSH
90596: LD_INT 2
90598: ARRAY
90599: PPUSH
90600: CALL_OW 111
90604: GO 90422
90606: POP
90607: POP
// end else
90608: GO 90845
// for j = 1 to vehicles do
90610: LD_ADDR_VAR 0 2
90614: PUSH
90615: DOUBLE
90616: LD_INT 1
90618: DEC
90619: ST_TO_ADDR
90620: LD_VAR 0 21
90624: PUSH
90625: FOR_TO
90626: IFFALSE 90843
// begin temp = NearestUnitToUnit ( mb_detected_enemy [ i ] , vehicles [ j ] ) ;
90628: LD_ADDR_VAR 0 4
90632: PUSH
90633: LD_EXP 179
90637: PUSH
90638: LD_VAR 0 1
90642: ARRAY
90643: PPUSH
90644: LD_VAR 0 21
90648: PUSH
90649: LD_VAR 0 2
90653: ARRAY
90654: PPUSH
90655: CALL_OW 74
90659: ST_TO_ADDR
// if i = 1 and not GetWeapon ( vehicles [ j ] ) = ar_rocket_launcher and mb_legion_kam = 0 and GetLives ( vehicles [ j ] ) < 500 then
90660: LD_VAR 0 1
90664: PUSH
90665: LD_INT 1
90667: EQUAL
90668: PUSH
90669: LD_VAR 0 21
90673: PUSH
90674: LD_VAR 0 2
90678: ARRAY
90679: PPUSH
90680: CALL_OW 264
90684: PUSH
90685: LD_INT 28
90687: EQUAL
90688: NOT
90689: AND
90690: PUSH
90691: LD_EXP 176
90695: PUSH
90696: LD_INT 0
90698: EQUAL
90699: AND
90700: PUSH
90701: LD_VAR 0 21
90705: PUSH
90706: LD_VAR 0 2
90710: ARRAY
90711: PPUSH
90712: CALL_OW 256
90716: PUSH
90717: LD_INT 500
90719: LESS
90720: AND
90721: IFFALSE 90821
// begin if GetDistUnits ( vehicles [ j ] , temp ) > 3 then
90723: LD_VAR 0 21
90727: PUSH
90728: LD_VAR 0 2
90732: ARRAY
90733: PPUSH
90734: LD_VAR 0 4
90738: PPUSH
90739: CALL_OW 296
90743: PUSH
90744: LD_INT 3
90746: GREATER
90747: IFFALSE 90771
// ComMoveUnit ( vehicles [ j ] , temp ) else
90749: LD_VAR 0 21
90753: PUSH
90754: LD_VAR 0 2
90758: ARRAY
90759: PPUSH
90760: LD_VAR 0 4
90764: PPUSH
90765: CALL_OW 112
90769: GO 90819
// SetTaskList ( vehicles [ j ] , [ [ K , 0 , 0 , 0 , 0 , 0 , 0 ] ] ) ;
90771: LD_VAR 0 21
90775: PUSH
90776: LD_VAR 0 2
90780: ARRAY
90781: PPUSH
90782: LD_STRING K
90784: PUSH
90785: LD_INT 0
90787: PUSH
90788: LD_INT 0
90790: PUSH
90791: LD_INT 0
90793: PUSH
90794: LD_INT 0
90796: PUSH
90797: LD_INT 0
90799: PUSH
90800: LD_INT 0
90802: PUSH
90803: EMPTY
90804: LIST
90805: LIST
90806: LIST
90807: LIST
90808: LIST
90809: LIST
90810: LIST
90811: PUSH
90812: EMPTY
90813: LIST
90814: PPUSH
90815: CALL_OW 446
// end else
90819: GO 90841
// ComAttackUnit ( vehicles [ j ] , temp ) ;
90821: LD_VAR 0 21
90825: PUSH
90826: LD_VAR 0 2
90830: ARRAY
90831: PPUSH
90832: LD_VAR 0 4
90836: PPUSH
90837: CALL_OW 115
// end ;
90841: GO 90625
90843: POP
90844: POP
// temp_list = [ ] ;
90845: LD_ADDR_VAR 0 6
90849: PUSH
90850: EMPTY
90851: ST_TO_ADDR
// for j = 1 to vehicles do
90852: LD_ADDR_VAR 0 2
90856: PUSH
90857: DOUBLE
90858: LD_INT 1
90860: DEC
90861: ST_TO_ADDR
90862: LD_VAR 0 21
90866: PUSH
90867: FOR_TO
90868: IFFALSE 90969
// if vehicles [ j ] in mb_damagedvehicles [ i ] and GetDistUnitXY ( vehicles [ j ] , vehicle_retreat [ i ] [ 1 ] , vehicle_retreat [ i ] [ 2 ] ) < 5 then
90870: LD_VAR 0 21
90874: PUSH
90875: LD_VAR 0 2
90879: ARRAY
90880: PUSH
90881: LD_EXP 172
90885: PUSH
90886: LD_VAR 0 1
90890: ARRAY
90891: IN
90892: PUSH
90893: LD_VAR 0 21
90897: PUSH
90898: LD_VAR 0 2
90902: ARRAY
90903: PPUSH
90904: LD_VAR 0 23
90908: PUSH
90909: LD_VAR 0 1
90913: ARRAY
90914: PUSH
90915: LD_INT 1
90917: ARRAY
90918: PPUSH
90919: LD_VAR 0 23
90923: PUSH
90924: LD_VAR 0 1
90928: ARRAY
90929: PUSH
90930: LD_INT 2
90932: ARRAY
90933: PPUSH
90934: CALL_OW 297
90938: PUSH
90939: LD_INT 5
90941: LESS
90942: AND
90943: IFFALSE 90967
// temp_list = temp_list ^ vehicles [ j ] ;
90945: LD_ADDR_VAR 0 6
90949: PUSH
90950: LD_VAR 0 6
90954: PUSH
90955: LD_VAR 0 21
90959: PUSH
90960: LD_VAR 0 2
90964: ARRAY
90965: ADD
90966: ST_TO_ADDR
90967: GO 90867
90969: POP
90970: POP
// if temp_list > 0 then
90971: LD_VAR 0 6
90975: PUSH
90976: LD_INT 0
90978: GREATER
90979: IFFALSE 91077
// for j in UnitFilter ( mb_people [ i ] , [ f_class , class_mechanic ] ) do
90981: LD_ADDR_VAR 0 2
90985: PUSH
90986: LD_EXP 163
90990: PUSH
90991: LD_VAR 0 1
90995: ARRAY
90996: PPUSH
90997: LD_INT 25
90999: PUSH
91000: LD_INT 3
91002: PUSH
91003: EMPTY
91004: LIST
91005: LIST
91006: PPUSH
91007: CALL_OW 72
91011: PUSH
91012: FOR_IN
91013: IFFALSE 91075
// if IsInUnit ( j ) then
91015: LD_VAR 0 2
91019: PPUSH
91020: CALL_OW 310
91024: IFFALSE 91055
// begin ComExitBuilding ( j ) ;
91026: LD_VAR 0 2
91030: PPUSH
91031: CALL_OW 122
// AddComRepairVehicle ( j , temp_list [ 1 ] ) ;
91035: LD_VAR 0 2
91039: PPUSH
91040: LD_VAR 0 6
91044: PUSH
91045: LD_INT 1
91047: ARRAY
91048: PPUSH
91049: CALL_OW 189
// end else
91053: GO 91073
// ComRepairVehicle ( j , temp_list [ 1 ] ) ;
91055: LD_VAR 0 2
91059: PPUSH
91060: LD_VAR 0 6
91064: PUSH
91065: LD_INT 1
91067: ARRAY
91068: PPUSH
91069: CALL_OW 129
91073: GO 91012
91075: POP
91076: POP
// for j in mb_people [ i ] do
91077: LD_ADDR_VAR 0 2
91081: PUSH
91082: LD_EXP 163
91086: PUSH
91087: LD_VAR 0 1
91091: ARRAY
91092: PUSH
91093: FOR_IN
91094: IFFALSE 91187
// if GetLives ( j ) = 0 then
91096: LD_VAR 0 2
91100: PPUSH
91101: CALL_OW 256
91105: PUSH
91106: LD_INT 0
91108: EQUAL
91109: IFFALSE 91185
// begin mb_people = Replace ( mb_people , i , mb_people [ i ] diff j ) ;
91111: LD_ADDR_EXP 163
91115: PUSH
91116: LD_EXP 163
91120: PPUSH
91121: LD_VAR 0 1
91125: PPUSH
91126: LD_EXP 163
91130: PUSH
91131: LD_VAR 0 1
91135: ARRAY
91136: PUSH
91137: LD_VAR 0 2
91141: DIFF
91142: PPUSH
91143: CALL_OW 1
91147: ST_TO_ADDR
// mb_injured = Replace ( mb_injured , i , mb_injured [ i ] diff j ) ;
91148: LD_ADDR_EXP 171
91152: PUSH
91153: LD_EXP 171
91157: PPUSH
91158: LD_VAR 0 1
91162: PPUSH
91163: LD_EXP 171
91167: PUSH
91168: LD_VAR 0 1
91172: ARRAY
91173: PUSH
91174: LD_VAR 0 2
91178: DIFF
91179: PPUSH
91180: CALL_OW 1
91184: ST_TO_ADDR
// end ;
91185: GO 91093
91187: POP
91188: POP
// case i of 1 :
91189: LD_VAR 0 1
91193: PUSH
91194: LD_INT 1
91196: DOUBLE
91197: EQUAL
91198: IFTRUE 91202
91200: GO 91273
91202: POP
// begin sol_barracks = unitfilter ( mb_people [ i ] , [ f_class , class_mortar ] ) ;
91203: LD_ADDR_VAR 0 12
91207: PUSH
91208: LD_EXP 163
91212: PUSH
91213: LD_VAR 0 1
91217: ARRAY
91218: PPUSH
91219: LD_INT 25
91221: PUSH
91222: LD_INT 8
91224: PUSH
91225: EMPTY
91226: LIST
91227: LIST
91228: PPUSH
91229: CALL_OW 72
91233: ST_TO_ADDR
// sol_bunkers = unitfilter ( mb_people [ i ] , [ f_class , class_soldier ] ) ^ mb_legion_apesoldiers ;
91234: LD_ADDR_VAR 0 13
91238: PUSH
91239: LD_EXP 163
91243: PUSH
91244: LD_VAR 0 1
91248: ARRAY
91249: PPUSH
91250: LD_INT 25
91252: PUSH
91253: LD_INT 1
91255: PUSH
91256: EMPTY
91257: LIST
91258: LIST
91259: PPUSH
91260: CALL_OW 72
91264: PUSH
91265: LD_EXP 177
91269: ADD
91270: ST_TO_ADDR
// end ; 2 :
91271: GO 91420
91273: LD_INT 2
91275: DOUBLE
91276: EQUAL
91277: IFTRUE 91281
91279: GO 91346
91281: POP
// begin sol_barracks = unitfilter ( mb_people [ i ] , [ f_class , class_bazooker ] ) ;
91282: LD_ADDR_VAR 0 12
91286: PUSH
91287: LD_EXP 163
91291: PUSH
91292: LD_VAR 0 1
91296: ARRAY
91297: PPUSH
91298: LD_INT 25
91300: PUSH
91301: LD_INT 9
91303: PUSH
91304: EMPTY
91305: LIST
91306: LIST
91307: PPUSH
91308: CALL_OW 72
91312: ST_TO_ADDR
// sol_bunkers = unitfilter ( mb_people [ i ] , [ f_class , class_soldier ] ) ;
91313: LD_ADDR_VAR 0 13
91317: PUSH
91318: LD_EXP 163
91322: PUSH
91323: LD_VAR 0 1
91327: ARRAY
91328: PPUSH
91329: LD_INT 25
91331: PUSH
91332: LD_INT 1
91334: PUSH
91335: EMPTY
91336: LIST
91337: LIST
91338: PPUSH
91339: CALL_OW 72
91343: ST_TO_ADDR
// end ; 3 :
91344: GO 91420
91346: LD_INT 3
91348: DOUBLE
91349: EQUAL
91350: IFTRUE 91354
91352: GO 91419
91354: POP
// begin sol_barracks = unitfilter ( mb_people [ i ] , [ f_class , class_sniper ] ) ;
91355: LD_ADDR_VAR 0 12
91359: PUSH
91360: LD_EXP 163
91364: PUSH
91365: LD_VAR 0 1
91369: ARRAY
91370: PPUSH
91371: LD_INT 25
91373: PUSH
91374: LD_INT 5
91376: PUSH
91377: EMPTY
91378: LIST
91379: LIST
91380: PPUSH
91381: CALL_OW 72
91385: ST_TO_ADDR
// sol_bunkers = unitfilter ( mb_people [ i ] , [ f_class , class_soldier ] ) ;
91386: LD_ADDR_VAR 0 13
91390: PUSH
91391: LD_EXP 163
91395: PUSH
91396: LD_VAR 0 1
91400: ARRAY
91401: PPUSH
91402: LD_INT 25
91404: PUSH
91405: LD_INT 1
91407: PUSH
91408: EMPTY
91409: LIST
91410: LIST
91411: PPUSH
91412: CALL_OW 72
91416: ST_TO_ADDR
// end ; end ;
91417: GO 91420
91419: POP
// for j in sol_bunkers do
91420: LD_ADDR_VAR 0 2
91424: PUSH
91425: LD_VAR 0 13
91429: PUSH
91430: FOR_IN
91431: IFFALSE 91471
// if GetBType ( IsInUnit ( j ) ) = b_bunker then
91433: LD_VAR 0 2
91437: PPUSH
91438: CALL_OW 310
91442: PPUSH
91443: CALL_OW 266
91447: PUSH
91448: LD_INT 32
91450: EQUAL
91451: IFFALSE 91469
// sol_bunkers = sol_bunkers diff j ;
91453: LD_ADDR_VAR 0 13
91457: PUSH
91458: LD_VAR 0 13
91462: PUSH
91463: LD_VAR 0 2
91467: DIFF
91468: ST_TO_ADDR
91469: GO 91430
91471: POP
91472: POP
// temp = unitfilter ( mb_buildings [ i ] , [ [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_armoury ] ] , [ f_ok ] ] ) ;
91473: LD_ADDR_VAR 0 4
91477: PUSH
91478: LD_EXP 161
91482: PUSH
91483: LD_VAR 0 1
91487: ARRAY
91488: PPUSH
91489: LD_INT 2
91491: PUSH
91492: LD_INT 30
91494: PUSH
91495: LD_INT 5
91497: PUSH
91498: EMPTY
91499: LIST
91500: LIST
91501: PUSH
91502: LD_INT 30
91504: PUSH
91505: LD_INT 4
91507: PUSH
91508: EMPTY
91509: LIST
91510: LIST
91511: PUSH
91512: EMPTY
91513: LIST
91514: LIST
91515: LIST
91516: PUSH
91517: LD_INT 50
91519: PUSH
91520: EMPTY
91521: LIST
91522: PUSH
91523: EMPTY
91524: LIST
91525: LIST
91526: PPUSH
91527: CALL_OW 72
91531: ST_TO_ADDR
// if temp > 0 then
91532: LD_VAR 0 4
91536: PUSH
91537: LD_INT 0
91539: GREATER
91540: IFFALSE 91558
// barracks = temp [ 1 ] else
91542: LD_ADDR_VAR 0 11
91546: PUSH
91547: LD_VAR 0 4
91551: PUSH
91552: LD_INT 1
91554: ARRAY
91555: ST_TO_ADDR
91556: GO 91566
// barracks = 0 ;
91558: LD_ADDR_VAR 0 11
91562: PUSH
91563: LD_INT 0
91565: ST_TO_ADDR
// bunkers = unitfilter ( mb_buildings [ i ] , [ [ f_btype , b_bunker ] , [ f_ok ] , [ f_empty ] ] ) ;
91566: LD_ADDR_VAR 0 10
91570: PUSH
91571: LD_EXP 161
91575: PUSH
91576: LD_VAR 0 1
91580: ARRAY
91581: PPUSH
91582: LD_INT 30
91584: PUSH
91585: LD_INT 32
91587: PUSH
91588: EMPTY
91589: LIST
91590: LIST
91591: PUSH
91592: LD_INT 50
91594: PUSH
91595: EMPTY
91596: LIST
91597: PUSH
91598: LD_INT 58
91600: PUSH
91601: EMPTY
91602: LIST
91603: PUSH
91604: EMPTY
91605: LIST
91606: LIST
91607: LIST
91608: PPUSH
91609: CALL_OW 72
91613: ST_TO_ADDR
// temp_list = [ ] ;
91614: LD_ADDR_VAR 0 6
91618: PUSH
91619: EMPTY
91620: ST_TO_ADDR
// for j = 1 to bunkers do
91621: LD_ADDR_VAR 0 2
91625: PUSH
91626: DOUBLE
91627: LD_INT 1
91629: DEC
91630: ST_TO_ADDR
91631: LD_VAR 0 10
91635: PUSH
91636: FOR_TO
91637: IFFALSE 92045
// if j <= sol_bunkers then
91639: LD_VAR 0 2
91643: PUSH
91644: LD_VAR 0 13
91648: LESSEQUAL
91649: IFFALSE 91726
// begin temp_list = temp_list ^ sol_bunkers [ j ] ;
91651: LD_ADDR_VAR 0 6
91655: PUSH
91656: LD_VAR 0 6
91660: PUSH
91661: LD_VAR 0 13
91665: PUSH
91666: LD_VAR 0 2
91670: ARRAY
91671: ADD
91672: ST_TO_ADDR
// if not sol_bunkers [ j ] in mb_injured [ i ] then
91673: LD_VAR 0 13
91677: PUSH
91678: LD_VAR 0 2
91682: ARRAY
91683: PUSH
91684: LD_EXP 171
91688: PUSH
91689: LD_VAR 0 1
91693: ARRAY
91694: IN
91695: NOT
91696: IFFALSE 91724
// ComMoveUnit ( sol_bunkers [ j ] , bunkers [ j ] ) ;
91698: LD_VAR 0 13
91702: PUSH
91703: LD_VAR 0 2
91707: ARRAY
91708: PPUSH
91709: LD_VAR 0 10
91713: PUSH
91714: LD_VAR 0 2
91718: ARRAY
91719: PPUSH
91720: CALL_OW 112
// end else
91724: GO 92043
// if i = 1 then
91726: LD_VAR 0 1
91730: PUSH
91731: LD_INT 1
91733: EQUAL
91734: IFFALSE 91786
// begin if mb_legion_kam > 0 then
91736: LD_EXP 176
91740: PUSH
91741: LD_INT 0
91743: GREATER
91744: IFFALSE 91784
// begin mb_legion_apesoldiers = mb_legion_apesoldiers ^ mb_legion_kam [ 1 ] ;
91746: LD_ADDR_EXP 177
91750: PUSH
91751: LD_EXP 177
91755: PUSH
91756: LD_EXP 176
91760: PUSH
91761: LD_INT 1
91763: ARRAY
91764: ADD
91765: ST_TO_ADDR
// mb_legion_kam = delete ( mb_legion_kam , 1 ) ;
91766: LD_ADDR_EXP 176
91770: PUSH
91771: LD_EXP 176
91775: PPUSH
91776: LD_INT 1
91778: PPUSH
91779: CALL_OW 3
91783: ST_TO_ADDR
// end ; end else
91784: GO 92043
// begin SetTaskList ( bunkers [ j ] , [ [ 3 , 0 , 0 , 0 , 0 , 0 , 0 ] ] ) ;
91786: LD_VAR 0 10
91790: PUSH
91791: LD_VAR 0 2
91795: ARRAY
91796: PPUSH
91797: LD_INT 3
91799: PUSH
91800: LD_INT 0
91802: PUSH
91803: LD_INT 0
91805: PUSH
91806: LD_INT 0
91808: PUSH
91809: LD_INT 0
91811: PUSH
91812: LD_INT 0
91814: PUSH
91815: LD_INT 0
91817: PUSH
91818: EMPTY
91819: LIST
91820: LIST
91821: LIST
91822: LIST
91823: LIST
91824: LIST
91825: LIST
91826: PUSH
91827: EMPTY
91828: LIST
91829: PPUSH
91830: CALL_OW 446
// temp_list = mb_buildings_locations [ i ] ;
91834: LD_ADDR_VAR 0 6
91838: PUSH
91839: LD_EXP 162
91843: PUSH
91844: LD_VAR 0 1
91848: ARRAY
91849: ST_TO_ADDR
// for k = 1 to temp_list do
91850: LD_ADDR_VAR 0 3
91854: PUSH
91855: DOUBLE
91856: LD_INT 1
91858: DEC
91859: ST_TO_ADDR
91860: LD_VAR 0 6
91864: PUSH
91865: FOR_TO
91866: IFFALSE 92041
// if GetX ( bunkers [ j ] ) = mb_buildings_locations [ i ] [ k ] [ 1 ] and GetY ( bunkers [ j ] ) = mb_buildings_locations [ i ] [ k ] [ 2 ] then
91868: LD_VAR 0 10
91872: PUSH
91873: LD_VAR 0 2
91877: ARRAY
91878: PPUSH
91879: CALL_OW 250
91883: PUSH
91884: LD_EXP 162
91888: PUSH
91889: LD_VAR 0 1
91893: ARRAY
91894: PUSH
91895: LD_VAR 0 3
91899: ARRAY
91900: PUSH
91901: LD_INT 1
91903: ARRAY
91904: EQUAL
91905: PUSH
91906: LD_VAR 0 10
91910: PUSH
91911: LD_VAR 0 2
91915: ARRAY
91916: PPUSH
91917: CALL_OW 251
91921: PUSH
91922: LD_EXP 162
91926: PUSH
91927: LD_VAR 0 1
91931: ARRAY
91932: PUSH
91933: LD_VAR 0 3
91937: ARRAY
91938: PUSH
91939: LD_INT 2
91941: ARRAY
91942: EQUAL
91943: AND
91944: IFFALSE 92039
// begin temp = mb_buildings_locations [ i ] [ k ] ;
91946: LD_ADDR_VAR 0 4
91950: PUSH
91951: LD_EXP 162
91955: PUSH
91956: LD_VAR 0 1
91960: ARRAY
91961: PUSH
91962: LD_VAR 0 3
91966: ARRAY
91967: ST_TO_ADDR
// temp = replace ( temp , 4 , b_turret ) ;
91968: LD_ADDR_VAR 0 4
91972: PUSH
91973: LD_VAR 0 4
91977: PPUSH
91978: LD_INT 4
91980: PPUSH
91981: LD_INT 33
91983: PPUSH
91984: CALL_OW 1
91988: ST_TO_ADDR
// temp_list = replace ( temp_list , k , temp ) ;
91989: LD_ADDR_VAR 0 6
91993: PUSH
91994: LD_VAR 0 6
91998: PPUSH
91999: LD_VAR 0 3
92003: PPUSH
92004: LD_VAR 0 4
92008: PPUSH
92009: CALL_OW 1
92013: ST_TO_ADDR
// mb_buildings_locations = replace ( mb_buildings_locations , i , temp_list ) ;
92014: LD_ADDR_EXP 162
92018: PUSH
92019: LD_EXP 162
92023: PPUSH
92024: LD_VAR 0 1
92028: PPUSH
92029: LD_VAR 0 6
92033: PPUSH
92034: CALL_OW 1
92038: ST_TO_ADDR
// end ;
92039: GO 91865
92041: POP
92042: POP
// end ;
92043: GO 91636
92045: POP
92046: POP
// sol_barracks = sol_barracks ^ ( sol_bunkers diff temp_list ) ;
92047: LD_ADDR_VAR 0 12
92051: PUSH
92052: LD_VAR 0 12
92056: PUSH
92057: LD_VAR 0 13
92061: PUSH
92062: LD_VAR 0 6
92066: DIFF
92067: ADD
92068: ST_TO_ADDR
// for j in sol_barracks do
92069: LD_ADDR_VAR 0 2
92073: PUSH
92074: LD_VAR 0 12
92078: PUSH
92079: FOR_IN
92080: IFFALSE 92346
// if barracks = 0 then
92082: LD_VAR 0 11
92086: PUSH
92087: LD_INT 0
92089: EQUAL
92090: IFFALSE 92281
// begin temp = UnitFilter ( mb_detected_enemy [ i ] , [ f_inarea , [ base_legion_minor , base_russians_minor , base_us_minor ] [ i ] ] ) ;
92092: LD_ADDR_VAR 0 4
92096: PUSH
92097: LD_EXP 179
92101: PUSH
92102: LD_VAR 0 1
92106: ARRAY
92107: PPUSH
92108: LD_INT 95
92110: PUSH
92111: LD_INT 7
92113: PUSH
92114: LD_INT 8
92116: PUSH
92117: LD_INT 6
92119: PUSH
92120: EMPTY
92121: LIST
92122: LIST
92123: LIST
92124: PUSH
92125: LD_VAR 0 1
92129: ARRAY
92130: PUSH
92131: EMPTY
92132: LIST
92133: LIST
92134: PPUSH
92135: CALL_OW 72
92139: ST_TO_ADDR
// if temp > 0 and not j in mb_injured [ i ] then
92140: LD_VAR 0 4
92144: PUSH
92145: LD_INT 0
92147: GREATER
92148: PUSH
92149: LD_VAR 0 2
92153: PUSH
92154: LD_EXP 171
92158: PUSH
92159: LD_VAR 0 1
92163: ARRAY
92164: IN
92165: NOT
92166: AND
92167: IFFALSE 92195
// ComAttackUnit ( j , NearestUnitToUnit ( temp , j ) ) else
92169: LD_VAR 0 2
92173: PPUSH
92174: LD_VAR 0 4
92178: PPUSH
92179: LD_VAR 0 2
92183: PPUSH
92184: CALL_OW 74
92188: PPUSH
92189: CALL_OW 115
92193: GO 92279
// if GetDistUnitXY ( j , retreat [ i ] [ 1 ] , retreat [ i ] [ 2 ] ) > 5 then
92195: LD_VAR 0 2
92199: PPUSH
92200: LD_VAR 0 9
92204: PUSH
92205: LD_VAR 0 1
92209: ARRAY
92210: PUSH
92211: LD_INT 1
92213: ARRAY
92214: PPUSH
92215: LD_VAR 0 9
92219: PUSH
92220: LD_VAR 0 1
92224: ARRAY
92225: PUSH
92226: LD_INT 2
92228: ARRAY
92229: PPUSH
92230: CALL_OW 297
92234: PUSH
92235: LD_INT 5
92237: GREATER
92238: IFFALSE 92279
// ComMoveXY ( j , retreat [ i ] [ 1 ] , retreat [ i ] [ 2 ] ) end else
92240: LD_VAR 0 2
92244: PPUSH
92245: LD_VAR 0 9
92249: PUSH
92250: LD_VAR 0 1
92254: ARRAY
92255: PUSH
92256: LD_INT 1
92258: ARRAY
92259: PPUSH
92260: LD_VAR 0 9
92264: PUSH
92265: LD_VAR 0 1
92269: ARRAY
92270: PUSH
92271: LD_INT 2
92273: ARRAY
92274: PPUSH
92275: CALL_OW 111
92279: GO 92344
// if not IsInUnit ( j ) = barracks then
92281: LD_VAR 0 2
92285: PPUSH
92286: CALL_OW 310
92290: PUSH
92291: LD_VAR 0 11
92295: EQUAL
92296: NOT
92297: IFFALSE 92344
// if IsInUnit ( j ) = 0 then
92299: LD_VAR 0 2
92303: PPUSH
92304: CALL_OW 310
92308: PUSH
92309: LD_INT 0
92311: EQUAL
92312: IFFALSE 92330
// ComEnterUnit ( j , barracks ) else
92314: LD_VAR 0 2
92318: PPUSH
92319: LD_VAR 0 11
92323: PPUSH
92324: CALL_OW 120
92328: GO 92344
// ComMoveUnit ( j , barracks ) ;
92330: LD_VAR 0 2
92334: PPUSH
92335: LD_VAR 0 11
92339: PPUSH
92340: CALL_OW 112
92344: GO 92079
92346: POP
92347: POP
// if i = 1 then
92348: LD_VAR 0 1
92352: PUSH
92353: LD_INT 1
92355: EQUAL
92356: IFFALSE 92465
// for j in mb_legion_apesoldiers do
92358: LD_ADDR_VAR 0 2
92362: PUSH
92363: LD_EXP 177
92367: PUSH
92368: FOR_IN
92369: IFFALSE 92463
// if not GetClass ( j ) = class_apeman_soldier then
92371: LD_VAR 0 2
92375: PPUSH
92376: CALL_OW 257
92380: PUSH
92381: LD_INT 15
92383: EQUAL
92384: NOT
92385: IFFALSE 92461
// if not IsInUnit ( j ) then
92387: LD_VAR 0 2
92391: PPUSH
92392: CALL_OW 310
92396: NOT
92397: IFFALSE 92415
// ComEnterUnit ( j , barracks ) else
92399: LD_VAR 0 2
92403: PPUSH
92404: LD_VAR 0 11
92408: PPUSH
92409: CALL_OW 120
92413: GO 92461
// if not IsInUnit ( j ) = barracks then
92415: LD_VAR 0 2
92419: PPUSH
92420: CALL_OW 310
92424: PUSH
92425: LD_VAR 0 11
92429: EQUAL
92430: NOT
92431: IFFALSE 92449
// ComMoveUnit ( j , barracks ) else
92433: LD_VAR 0 2
92437: PPUSH
92438: LD_VAR 0 11
92442: PPUSH
92443: CALL_OW 112
92447: GO 92461
// ComChangeProfession ( j , class_apeman_soldier ) ;
92449: LD_VAR 0 2
92453: PPUSH
92454: LD_INT 15
92456: PPUSH
92457: CALL_OW 123
92461: GO 92368
92463: POP
92464: POP
// for j in mb_people [ i ] do
92465: LD_ADDR_VAR 0 2
92469: PUSH
92470: LD_EXP 163
92474: PUSH
92475: LD_VAR 0 1
92479: ARRAY
92480: PUSH
92481: FOR_IN
92482: IFFALSE 93532
// begin if GetLives ( j ) < 600 then
92484: LD_VAR 0 2
92488: PPUSH
92489: CALL_OW 256
92493: PUSH
92494: LD_INT 600
92496: LESS
92497: IFFALSE 92555
// if not j in mb_injured [ i ] then
92499: LD_VAR 0 2
92503: PUSH
92504: LD_EXP 171
92508: PUSH
92509: LD_VAR 0 1
92513: ARRAY
92514: IN
92515: NOT
92516: IFFALSE 92555
// mb_injured = Replace ( mb_injured , i , mb_injured [ i ] ^ j ) ;
92518: LD_ADDR_EXP 171
92522: PUSH
92523: LD_EXP 171
92527: PPUSH
92528: LD_VAR 0 1
92532: PPUSH
92533: LD_EXP 171
92537: PUSH
92538: LD_VAR 0 1
92542: ARRAY
92543: PUSH
92544: LD_VAR 0 2
92548: ADD
92549: PPUSH
92550: CALL_OW 1
92554: ST_TO_ADDR
// if mb_injured [ i ] > 0 and GetClass ( j ) = class_scientistic and not j in mb_injured [ i ] then
92555: LD_EXP 171
92559: PUSH
92560: LD_VAR 0 1
92564: ARRAY
92565: PUSH
92566: LD_INT 0
92568: GREATER
92569: PUSH
92570: LD_VAR 0 2
92574: PPUSH
92575: CALL_OW 257
92579: PUSH
92580: LD_INT 4
92582: EQUAL
92583: AND
92584: PUSH
92585: LD_VAR 0 2
92589: PUSH
92590: LD_EXP 171
92594: PUSH
92595: LD_VAR 0 1
92599: ARRAY
92600: IN
92601: NOT
92602: AND
92603: IFFALSE 92675
// if isinunit ( j ) then
92605: LD_VAR 0 2
92609: PPUSH
92610: CALL_OW 310
92614: IFFALSE 92651
// begin comexitbuilding ( j ) ;
92616: LD_VAR 0 2
92620: PPUSH
92621: CALL_OW 122
// addcomheal ( j , mb_injured [ i ] [ 1 ] ) ;
92625: LD_VAR 0 2
92629: PPUSH
92630: LD_EXP 171
92634: PUSH
92635: LD_VAR 0 1
92639: ARRAY
92640: PUSH
92641: LD_INT 1
92643: ARRAY
92644: PPUSH
92645: CALL_OW 188
// end else
92649: GO 92675
// comheal ( j , mb_injured [ i ] [ 1 ] ) ;
92651: LD_VAR 0 2
92655: PPUSH
92656: LD_EXP 171
92660: PUSH
92661: LD_VAR 0 1
92665: ARRAY
92666: PUSH
92667: LD_INT 1
92669: ARRAY
92670: PPUSH
92671: CALL_OW 128
// if GetClass ( j ) = class_scientistic and GetSide ( j ) = legion and mb_injured [ 1 ] = 0 and apes > 0 then
92675: LD_VAR 0 2
92679: PPUSH
92680: CALL_OW 257
92684: PUSH
92685: LD_INT 4
92687: EQUAL
92688: PUSH
92689: LD_VAR 0 2
92693: PPUSH
92694: CALL_OW 255
92698: PUSH
92699: LD_EXP 6
92703: EQUAL
92704: AND
92705: PUSH
92706: LD_EXP 171
92710: PUSH
92711: LD_INT 1
92713: ARRAY
92714: PUSH
92715: LD_INT 0
92717: EQUAL
92718: AND
92719: PUSH
92720: LD_EXP 174
92724: PUSH
92725: LD_INT 0
92727: GREATER
92728: AND
92729: IFFALSE 92839
// if GetSide ( apes [ 1 ] ) = 0 then
92731: LD_EXP 174
92735: PUSH
92736: LD_INT 1
92738: ARRAY
92739: PPUSH
92740: CALL_OW 255
92744: PUSH
92745: LD_INT 0
92747: EQUAL
92748: IFFALSE 92767
// ComTameXY ( j , 5 , 5 ) else
92750: LD_VAR 0 2
92754: PPUSH
92755: LD_INT 5
92757: PPUSH
92758: LD_INT 5
92760: PPUSH
92761: CALL_OW 131
92765: GO 92839
// begin if mb_legion_kam < 3 then
92767: LD_EXP 176
92771: PUSH
92772: LD_INT 3
92774: LESS
92775: IFFALSE 92799
// mb_legion_kam = mb_legion_kam ^ apes [ 1 ] else
92777: LD_ADDR_EXP 176
92781: PUSH
92782: LD_EXP 176
92786: PUSH
92787: LD_EXP 174
92791: PUSH
92792: LD_INT 1
92794: ARRAY
92795: ADD
92796: ST_TO_ADDR
92797: GO 92819
// mb_legion_ape_fac = mb_legion_ape_fac ^ apes [ 1 ] ;
92799: LD_ADDR_EXP 178
92803: PUSH
92804: LD_EXP 178
92808: PUSH
92809: LD_EXP 174
92813: PUSH
92814: LD_INT 1
92816: ARRAY
92817: ADD
92818: ST_TO_ADDR
// apes = apes diff apes [ 1 ] ;
92819: LD_ADDR_EXP 174
92823: PUSH
92824: LD_EXP 174
92828: PUSH
92829: LD_EXP 174
92833: PUSH
92834: LD_INT 1
92836: ARRAY
92837: DIFF
92838: ST_TO_ADDR
// end ; if GetClass ( j ) = class_engineer and not j in mb_injured [ i ] then
92839: LD_VAR 0 2
92843: PPUSH
92844: CALL_OW 257
92848: PUSH
92849: LD_INT 2
92851: EQUAL
92852: PUSH
92853: LD_VAR 0 2
92857: PUSH
92858: LD_EXP 171
92862: PUSH
92863: LD_VAR 0 1
92867: ARRAY
92868: IN
92869: NOT
92870: AND
92871: IFFALSE 92959
// if mb_damaged_buildings [ i ] > 0 then
92873: LD_EXP 170
92877: PUSH
92878: LD_VAR 0 1
92882: ARRAY
92883: PUSH
92884: LD_INT 0
92886: GREATER
92887: IFFALSE 92959
// if IsInUnit ( j ) then
92889: LD_VAR 0 2
92893: PPUSH
92894: CALL_OW 310
92898: IFFALSE 92935
// begin comexitbuilding ( j ) ;
92900: LD_VAR 0 2
92904: PPUSH
92905: CALL_OW 122
// addcomrepairbuilding ( j , mb_damaged_buildings [ i ] [ 1 ] ) ;
92909: LD_VAR 0 2
92913: PPUSH
92914: LD_EXP 170
92918: PUSH
92919: LD_VAR 0 1
92923: ARRAY
92924: PUSH
92925: LD_INT 1
92927: ARRAY
92928: PPUSH
92929: CALL_OW 190
// end else
92933: GO 92959
// comrepairbuilding ( j , mb_damaged_buildings [ i ] [ 1 ] ) ;
92935: LD_VAR 0 2
92939: PPUSH
92940: LD_EXP 170
92944: PUSH
92945: LD_VAR 0 1
92949: ARRAY
92950: PUSH
92951: LD_INT 1
92953: ARRAY
92954: PPUSH
92955: CALL_OW 130
// if GetClass ( j ) = class_engineer and not j in mb_injured [ i ] then
92959: LD_VAR 0 2
92963: PPUSH
92964: CALL_OW 257
92968: PUSH
92969: LD_INT 2
92971: EQUAL
92972: PUSH
92973: LD_VAR 0 2
92977: PUSH
92978: LD_EXP 171
92982: PUSH
92983: LD_VAR 0 1
92987: ARRAY
92988: IN
92989: NOT
92990: AND
92991: IFFALSE 93202
// if mb_damaged_buildings [ i ] = 0 and mb_to_build_list [ i ] > 0 then
92993: LD_EXP 170
92997: PUSH
92998: LD_VAR 0 1
93002: ARRAY
93003: PUSH
93004: LD_INT 0
93006: EQUAL
93007: PUSH
93008: LD_EXP 173
93012: PUSH
93013: LD_VAR 0 1
93017: ARRAY
93018: PUSH
93019: LD_INT 0
93021: GREATER
93022: AND
93023: IFFALSE 93202
// if mb_to_build_list [ i ] [ 1 ] [ 4 ] > 0 and mb_to_build_list [ i ] [ 1 ] [ 1 ] > 0 and mb_to_build_list [ i ] [ 1 ] [ 2 ] > 0 and mb_to_build_list [ i ] [ 1 ] [ 3 ] then
93025: LD_EXP 173
93029: PUSH
93030: LD_VAR 0 1
93034: ARRAY
93035: PUSH
93036: LD_INT 1
93038: ARRAY
93039: PUSH
93040: LD_INT 4
93042: ARRAY
93043: PUSH
93044: LD_INT 0
93046: GREATER
93047: PUSH
93048: LD_EXP 173
93052: PUSH
93053: LD_VAR 0 1
93057: ARRAY
93058: PUSH
93059: LD_INT 1
93061: ARRAY
93062: PUSH
93063: LD_INT 1
93065: ARRAY
93066: PUSH
93067: LD_INT 0
93069: GREATER
93070: AND
93071: PUSH
93072: LD_EXP 173
93076: PUSH
93077: LD_VAR 0 1
93081: ARRAY
93082: PUSH
93083: LD_INT 1
93085: ARRAY
93086: PUSH
93087: LD_INT 2
93089: ARRAY
93090: PUSH
93091: LD_INT 0
93093: GREATER
93094: AND
93095: PUSH
93096: LD_EXP 173
93100: PUSH
93101: LD_VAR 0 1
93105: ARRAY
93106: PUSH
93107: LD_INT 1
93109: ARRAY
93110: PUSH
93111: LD_INT 3
93113: ARRAY
93114: AND
93115: IFFALSE 93202
// combuild ( j , mb_to_build_list [ i ] [ 1 ] [ 4 ] , mb_to_build_list [ i ] [ 1 ] [ 1 ] , mb_to_build_list [ i ] [ 1 ] [ 2 ] , mb_to_build_list [ i ] [ 1 ] [ 3 ] ) ;
93117: LD_VAR 0 2
93121: PPUSH
93122: LD_EXP 173
93126: PUSH
93127: LD_VAR 0 1
93131: ARRAY
93132: PUSH
93133: LD_INT 1
93135: ARRAY
93136: PUSH
93137: LD_INT 4
93139: ARRAY
93140: PPUSH
93141: LD_EXP 173
93145: PUSH
93146: LD_VAR 0 1
93150: ARRAY
93151: PUSH
93152: LD_INT 1
93154: ARRAY
93155: PUSH
93156: LD_INT 1
93158: ARRAY
93159: PPUSH
93160: LD_EXP 173
93164: PUSH
93165: LD_VAR 0 1
93169: ARRAY
93170: PUSH
93171: LD_INT 1
93173: ARRAY
93174: PUSH
93175: LD_INT 2
93177: ARRAY
93178: PPUSH
93179: LD_EXP 173
93183: PUSH
93184: LD_VAR 0 1
93188: ARRAY
93189: PUSH
93190: LD_INT 1
93192: ARRAY
93193: PUSH
93194: LD_INT 3
93196: ARRAY
93197: PPUSH
93198: CALL_OW 145
// if HasTask ( j ) = 0 and not IsInUnit ( j ) and not j in mb_injured [ i ] and not ( GetClass ( j ) = class_scientistic and mb_injured [ i ] > 0 ) then
93202: LD_VAR 0 2
93206: PPUSH
93207: CALL_OW 314
93211: PUSH
93212: LD_INT 0
93214: EQUAL
93215: PUSH
93216: LD_VAR 0 2
93220: PPUSH
93221: CALL_OW 310
93225: NOT
93226: AND
93227: PUSH
93228: LD_VAR 0 2
93232: PUSH
93233: LD_EXP 171
93237: PUSH
93238: LD_VAR 0 1
93242: ARRAY
93243: IN
93244: NOT
93245: AND
93246: PUSH
93247: LD_VAR 0 2
93251: PPUSH
93252: CALL_OW 257
93256: PUSH
93257: LD_INT 4
93259: EQUAL
93260: PUSH
93261: LD_EXP 171
93265: PUSH
93266: LD_VAR 0 1
93270: ARRAY
93271: PUSH
93272: LD_INT 0
93274: GREATER
93275: AND
93276: NOT
93277: AND
93278: IFFALSE 93530
// case GetClass ( j ) of class_engineer :
93280: LD_VAR 0 2
93284: PPUSH
93285: CALL_OW 257
93289: PUSH
93290: LD_INT 2
93292: DOUBLE
93293: EQUAL
93294: IFTRUE 93298
93296: GO 93340
93298: POP
// ComEnterUnit ( j , unitfilter ( mb_buildings [ i ] , [ f_btype , b_depot ] ) [ 1 ] ) ; class_mechanic :
93299: LD_VAR 0 2
93303: PPUSH
93304: LD_EXP 161
93308: PUSH
93309: LD_VAR 0 1
93313: ARRAY
93314: PPUSH
93315: LD_INT 30
93317: PUSH
93318: LD_INT 0
93320: PUSH
93321: EMPTY
93322: LIST
93323: LIST
93324: PPUSH
93325: CALL_OW 72
93329: PUSH
93330: LD_INT 1
93332: ARRAY
93333: PPUSH
93334: CALL_OW 120
93338: GO 93530
93340: LD_INT 3
93342: DOUBLE
93343: EQUAL
93344: IFTRUE 93348
93346: GO 93406
93348: POP
// if mb_damagedvehicles [ i ] = 0 then
93349: LD_EXP 172
93353: PUSH
93354: LD_VAR 0 1
93358: ARRAY
93359: PUSH
93360: LD_INT 0
93362: EQUAL
93363: IFFALSE 93404
// ComEnterUnit ( j , unitfilter ( mb_buildings [ i ] , [ f_btype , b_factory ] ) [ 1 ] ) ; class_scientistic :
93365: LD_VAR 0 2
93369: PPUSH
93370: LD_EXP 161
93374: PUSH
93375: LD_VAR 0 1
93379: ARRAY
93380: PPUSH
93381: LD_INT 30
93383: PUSH
93384: LD_INT 3
93386: PUSH
93387: EMPTY
93388: LIST
93389: LIST
93390: PPUSH
93391: CALL_OW 72
93395: PUSH
93396: LD_INT 1
93398: ARRAY
93399: PPUSH
93400: CALL_OW 120
93404: GO 93530
93406: LD_INT 4
93408: DOUBLE
93409: EQUAL
93410: IFTRUE 93414
93412: GO 93529
93414: POP
// case i of 1 :
93415: LD_VAR 0 1
93419: PUSH
93420: LD_INT 1
93422: DOUBLE
93423: EQUAL
93424: IFTRUE 93428
93426: GO 93470
93428: POP
// ComEnterUnit ( j , unitfilter ( mb_buildings [ i ] , [ f_btype , b_lab_half ] ) [ 1 ] ) ; 2 , 3 :
93429: LD_VAR 0 2
93433: PPUSH
93434: LD_EXP 161
93438: PUSH
93439: LD_VAR 0 1
93443: ARRAY
93444: PPUSH
93445: LD_INT 30
93447: PUSH
93448: LD_INT 7
93450: PUSH
93451: EMPTY
93452: LIST
93453: LIST
93454: PPUSH
93455: CALL_OW 72
93459: PUSH
93460: LD_INT 1
93462: ARRAY
93463: PPUSH
93464: CALL_OW 120
93468: GO 93527
93470: LD_INT 2
93472: DOUBLE
93473: EQUAL
93474: IFTRUE 93484
93476: LD_INT 3
93478: DOUBLE
93479: EQUAL
93480: IFTRUE 93484
93482: GO 93526
93484: POP
// ComEnterUnit ( j , unitfilter ( mb_buildings [ i ] , [ f_btype , b_depot ] ) [ 1 ] ) ; end ; end ;
93485: LD_VAR 0 2
93489: PPUSH
93490: LD_EXP 161
93494: PUSH
93495: LD_VAR 0 1
93499: ARRAY
93500: PPUSH
93501: LD_INT 30
93503: PUSH
93504: LD_INT 0
93506: PUSH
93507: EMPTY
93508: LIST
93509: LIST
93510: PPUSH
93511: CALL_OW 72
93515: PUSH
93516: LD_INT 1
93518: ARRAY
93519: PPUSH
93520: CALL_OW 120
93524: GO 93527
93526: POP
93527: GO 93530
93529: POP
// end ;
93530: GO 92481
93532: POP
93533: POP
// if mb_injured [ i ] > 0 then
93534: LD_EXP 171
93538: PUSH
93539: LD_VAR 0 1
93543: ARRAY
93544: PUSH
93545: LD_INT 0
93547: GREATER
93548: IFFALSE 93767
// for j in mb_injured [ i ] do
93550: LD_ADDR_VAR 0 2
93554: PUSH
93555: LD_EXP 171
93559: PUSH
93560: LD_VAR 0 1
93564: ARRAY
93565: PUSH
93566: FOR_IN
93567: IFFALSE 93765
// if GetLives ( j ) < 1000 then
93569: LD_VAR 0 2
93573: PPUSH
93574: CALL_OW 256
93578: PUSH
93579: LD_INT 1000
93581: LESS
93582: IFFALSE 93726
// begin if GetDistUnitXY ( j , retreat [ i ] [ 1 ] , retreat [ i ] [ 2 ] ) > 6 then
93584: LD_VAR 0 2
93588: PPUSH
93589: LD_VAR 0 9
93593: PUSH
93594: LD_VAR 0 1
93598: ARRAY
93599: PUSH
93600: LD_INT 1
93602: ARRAY
93603: PPUSH
93604: LD_VAR 0 9
93608: PUSH
93609: LD_VAR 0 1
93613: ARRAY
93614: PUSH
93615: LD_INT 2
93617: ARRAY
93618: PPUSH
93619: CALL_OW 297
93623: PUSH
93624: LD_INT 6
93626: GREATER
93627: IFFALSE 93668
// ComMoveXY ( j , retreat [ i ] [ 1 ] , retreat [ i ] [ 2 ] ) ;
93629: LD_VAR 0 2
93633: PPUSH
93634: LD_VAR 0 9
93638: PUSH
93639: LD_VAR 0 1
93643: ARRAY
93644: PUSH
93645: LD_INT 1
93647: ARRAY
93648: PPUSH
93649: LD_VAR 0 9
93653: PUSH
93654: LD_VAR 0 1
93658: ARRAY
93659: PUSH
93660: LD_INT 2
93662: ARRAY
93663: PPUSH
93664: CALL_OW 111
// case GetType ( IsInUnit ( j ) ) of unit_vehicle :
93668: LD_VAR 0 2
93672: PPUSH
93673: CALL_OW 310
93677: PPUSH
93678: CALL_OW 247
93682: PUSH
93683: LD_INT 2
93685: DOUBLE
93686: EQUAL
93687: IFTRUE 93691
93689: GO 93703
93691: POP
// comexitvehicle ( j ) ; unit_building :
93692: LD_VAR 0 2
93696: PPUSH
93697: CALL_OW 121
93701: GO 93724
93703: LD_INT 3
93705: DOUBLE
93706: EQUAL
93707: IFTRUE 93711
93709: GO 93723
93711: POP
// comexitbuilding ( j ) ; end ;
93712: LD_VAR 0 2
93716: PPUSH
93717: CALL_OW 122
93721: GO 93724
93723: POP
// end else
93724: GO 93763
// mb_injured = replace ( mb_injured , i , mb_injured [ i ] diff j ) ;
93726: LD_ADDR_EXP 171
93730: PUSH
93731: LD_EXP 171
93735: PPUSH
93736: LD_VAR 0 1
93740: PPUSH
93741: LD_EXP 171
93745: PUSH
93746: LD_VAR 0 1
93750: ARRAY
93751: PUSH
93752: LD_VAR 0 2
93756: DIFF
93757: PPUSH
93758: CALL_OW 1
93762: ST_TO_ADDR
93763: GO 93566
93765: POP
93766: POP
// end ;
93767: GO 87524
93769: POP
93770: POP
// temp_list = mb_detected_enemy [ 1 ] ;
93771: LD_ADDR_VAR 0 6
93775: PUSH
93776: LD_EXP 179
93780: PUSH
93781: LD_INT 1
93783: ARRAY
93784: ST_TO_ADDR
// if 1 in mb_bases then
93785: LD_INT 1
93787: PUSH
93788: LD_EXP 160
93792: IN
93793: IFFALSE 94251
// for i = 1 to mb_legion_kam do
93795: LD_ADDR_VAR 0 1
93799: PUSH
93800: DOUBLE
93801: LD_INT 1
93803: DEC
93804: ST_TO_ADDR
93805: LD_EXP 176
93809: PUSH
93810: FOR_TO
93811: IFFALSE 94249
// if GetLives ( mb_legion_kam [ i ] ) = 0 then
93813: LD_EXP 176
93817: PUSH
93818: LD_VAR 0 1
93822: ARRAY
93823: PPUSH
93824: CALL_OW 256
93828: PUSH
93829: LD_INT 0
93831: EQUAL
93832: IFFALSE 93860
// begin mb_legion_kam = mb_legion_kam diff mb_legion_kam [ i ] ;
93834: LD_ADDR_EXP 176
93838: PUSH
93839: LD_EXP 176
93843: PUSH
93844: LD_EXP 176
93848: PUSH
93849: LD_VAR 0 1
93853: ARRAY
93854: DIFF
93855: ST_TO_ADDR
// break ;
93856: GO 94249
// end else
93858: GO 94247
// if GetClass ( mb_legion_kam [ i ] ) = class_apeman then
93860: LD_EXP 176
93864: PUSH
93865: LD_VAR 0 1
93869: ARRAY
93870: PPUSH
93871: CALL_OW 257
93875: PUSH
93876: LD_INT 12
93878: EQUAL
93879: IFFALSE 94001
// begin if GetBType ( IsInUnit ( mb_legion_kam [ i ] ) ) = b_barracks then
93881: LD_EXP 176
93885: PUSH
93886: LD_VAR 0 1
93890: ARRAY
93891: PPUSH
93892: CALL_OW 310
93896: PPUSH
93897: CALL_OW 266
93901: PUSH
93902: LD_INT 5
93904: EQUAL
93905: IFFALSE 93927
// ComChangeProfession ( mb_legion_kam [ i ] , class_apeman_kamikaze ) else
93907: LD_EXP 176
93911: PUSH
93912: LD_VAR 0 1
93916: ARRAY
93917: PPUSH
93918: LD_INT 17
93920: PPUSH
93921: CALL_OW 123
93925: GO 93999
// if unitfilter ( mb_buildings [ 1 ] , [ f_btype , b_barracks ] ) > 0 then
93927: LD_EXP 161
93931: PUSH
93932: LD_INT 1
93934: ARRAY
93935: PPUSH
93936: LD_INT 30
93938: PUSH
93939: LD_INT 5
93941: PUSH
93942: EMPTY
93943: LIST
93944: LIST
93945: PPUSH
93946: CALL_OW 72
93950: PUSH
93951: LD_INT 0
93953: GREATER
93954: IFFALSE 93999
// ComEnterUnit ( mb_legion_kam [ i ] , unitfilter ( mb_buildings [ 1 ] , [ f_btype , b_barracks ] ) [ 1 ] ) ;
93956: LD_EXP 176
93960: PUSH
93961: LD_VAR 0 1
93965: ARRAY
93966: PPUSH
93967: LD_EXP 161
93971: PUSH
93972: LD_INT 1
93974: ARRAY
93975: PPUSH
93976: LD_INT 30
93978: PUSH
93979: LD_INT 5
93981: PUSH
93982: EMPTY
93983: LIST
93984: LIST
93985: PPUSH
93986: CALL_OW 72
93990: PUSH
93991: LD_INT 1
93993: ARRAY
93994: PPUSH
93995: CALL_OW 120
// end else
93999: GO 94247
// if temp_list > 0 then
94001: LD_VAR 0 6
94005: PUSH
94006: LD_INT 0
94008: GREATER
94009: IFFALSE 94159
// begin if IsInUnit ( mb_legion_kam [ i ] ) then
94011: LD_EXP 176
94015: PUSH
94016: LD_VAR 0 1
94020: ARRAY
94021: PPUSH
94022: CALL_OW 310
94026: IFFALSE 94061
// temp = NearestUnitToUnit ( temp_list , IsInUnit ( mb_legion_kam [ i ] ) ) else
94028: LD_ADDR_VAR 0 4
94032: PUSH
94033: LD_VAR 0 6
94037: PPUSH
94038: LD_EXP 176
94042: PUSH
94043: LD_VAR 0 1
94047: ARRAY
94048: PPUSH
94049: CALL_OW 310
94053: PPUSH
94054: CALL_OW 74
94058: ST_TO_ADDR
94059: GO 94087
// temp = NearestUnitToUnit ( temp_list , mb_legion_kam [ i ] ) ;
94061: LD_ADDR_VAR 0 4
94065: PUSH
94066: LD_VAR 0 6
94070: PPUSH
94071: LD_EXP 176
94075: PUSH
94076: LD_VAR 0 1
94080: ARRAY
94081: PPUSH
94082: CALL_OW 74
94086: ST_TO_ADDR
// temp_list = temp_list diff temp ;
94087: LD_ADDR_VAR 0 6
94091: PUSH
94092: LD_VAR 0 6
94096: PUSH
94097: LD_VAR 0 4
94101: DIFF
94102: ST_TO_ADDR
// if IsInUnit ( mb_legion_kam [ i ] ) then
94103: LD_EXP 176
94107: PUSH
94108: LD_VAR 0 1
94112: ARRAY
94113: PPUSH
94114: CALL_OW 310
94118: IFFALSE 94137
// ComExitBuilding ( mb_legion_kam [ i ] ) else
94120: LD_EXP 176
94124: PUSH
94125: LD_VAR 0 1
94129: ARRAY
94130: PPUSH
94131: CALL_OW 122
94135: GO 94157
// ComattackUnit ( mb_legion_kam [ i ] , temp ) ;
94137: LD_EXP 176
94141: PUSH
94142: LD_VAR 0 1
94146: ARRAY
94147: PPUSH
94148: LD_VAR 0 4
94152: PPUSH
94153: CALL_OW 115
// end else
94157: GO 94247
// if not IsInUnit ( mb_legion_kam [ i ] ) or not GetBType ( IsInUnit ( mb_legion_kam [ i ] ) ) = b_depot then
94159: LD_EXP 176
94163: PUSH
94164: LD_VAR 0 1
94168: ARRAY
94169: PPUSH
94170: CALL_OW 310
94174: NOT
94175: PUSH
94176: LD_EXP 176
94180: PUSH
94181: LD_VAR 0 1
94185: ARRAY
94186: PPUSH
94187: CALL_OW 310
94191: PPUSH
94192: CALL_OW 266
94196: PUSH
94197: LD_INT 0
94199: EQUAL
94200: NOT
94201: OR
94202: IFFALSE 94247
// ComEnterUnit ( mb_legion_kam [ i ] , unitfilter ( mb_buildings [ 1 ] , [ f_btype , b_depot ] ) [ 1 ] ) ;
94204: LD_EXP 176
94208: PUSH
94209: LD_VAR 0 1
94213: ARRAY
94214: PPUSH
94215: LD_EXP 161
94219: PUSH
94220: LD_INT 1
94222: ARRAY
94223: PPUSH
94224: LD_INT 30
94226: PUSH
94227: LD_INT 0
94229: PUSH
94230: EMPTY
94231: LIST
94232: LIST
94233: PPUSH
94234: CALL_OW 72
94238: PUSH
94239: LD_INT 1
94241: ARRAY
94242: PPUSH
94243: CALL_OW 120
94247: GO 93810
94249: POP
94250: POP
// for i in mb_legion_ape_fac do
94251: LD_ADDR_VAR 0 1
94255: PUSH
94256: LD_EXP 178
94260: PUSH
94261: FOR_IN
94262: IFFALSE 94363
// if GetLives ( i ) = 0 then
94264: LD_VAR 0 1
94268: PPUSH
94269: CALL_OW 256
94273: PUSH
94274: LD_INT 0
94276: EQUAL
94277: IFFALSE 94297
// mb_legion_ape_fac = mb_legion_ape_fac diff i else
94279: LD_ADDR_EXP 178
94283: PUSH
94284: LD_EXP 178
94288: PUSH
94289: LD_VAR 0 1
94293: DIFF
94294: ST_TO_ADDR
94295: GO 94361
// if not IsInUnit ( i ) then
94297: LD_VAR 0 1
94301: PPUSH
94302: CALL_OW 310
94306: NOT
94307: IFFALSE 94361
// if Hastask ( i ) = 0 then
94309: LD_VAR 0 1
94313: PPUSH
94314: CALL_OW 314
94318: PUSH
94319: LD_INT 0
94321: EQUAL
94322: IFFALSE 94361
// comenterunit ( i , unitfilter ( mb_buildings [ 1 ] , [ f_btype , b_factory ] ) [ 1 ] ) ;
94324: LD_VAR 0 1
94328: PPUSH
94329: LD_EXP 161
94333: PUSH
94334: LD_INT 1
94336: ARRAY
94337: PPUSH
94338: LD_INT 30
94340: PUSH
94341: LD_INT 3
94343: PUSH
94344: EMPTY
94345: LIST
94346: LIST
94347: PPUSH
94348: CALL_OW 72
94352: PUSH
94353: LD_INT 1
94355: ARRAY
94356: PPUSH
94357: CALL_OW 120
94361: GO 94261
94363: POP
94364: POP
// if mb_legion_kam + mb_legion_ape_fac + apes < 6 and apes_tick = 999 999$0 then
94365: LD_EXP 176
94369: PUSH
94370: LD_EXP 178
94374: PLUS
94375: PUSH
94376: LD_EXP 174
94380: PLUS
94381: PUSH
94382: LD_INT 6
94384: LESS
94385: PUSH
94386: LD_EXP 175
94390: PUSH
94391: LD_INT 2097900
94393: EQUAL
94394: AND
94395: IFFALSE 94407
// apes_tick = tick ;
94397: LD_ADDR_EXP 175
94401: PUSH
94402: LD_OWVAR 1
94406: ST_TO_ADDR
// if tick > apes_tick + [ 0 0$45 , 0 0$30 , 0 0$15 ] [ difficulty ] then
94407: LD_OWVAR 1
94411: PUSH
94412: LD_EXP 175
94416: PUSH
94417: LD_INT 1575
94419: PUSH
94420: LD_INT 1050
94422: PUSH
94423: LD_INT 525
94425: PUSH
94426: EMPTY
94427: LIST
94428: LIST
94429: LIST
94430: PUSH
94431: LD_OWVAR 67
94435: ARRAY
94436: PLUS
94437: GREATER
94438: IFFALSE 94569
// begin uc_side = 0 ;
94440: LD_ADDR_OWVAR 20
94444: PUSH
94445: LD_INT 0
94447: ST_TO_ADDR
// uc_nation = nation_nature ;
94448: LD_ADDR_OWVAR 21
94452: PUSH
94453: LD_INT 0
94455: ST_TO_ADDR
// InitHc ;
94456: CALL_OW 19
// hc_skills = [ 10 , 10 , 0 , 0 ] ;
94460: LD_ADDR_OWVAR 31
94464: PUSH
94465: LD_INT 10
94467: PUSH
94468: LD_INT 10
94470: PUSH
94471: LD_INT 0
94473: PUSH
94474: LD_INT 0
94476: PUSH
94477: EMPTY
94478: LIST
94479: LIST
94480: LIST
94481: LIST
94482: ST_TO_ADDR
// hc_attr = [ 11 , 11 ] ;
94483: LD_ADDR_OWVAR 29
94487: PUSH
94488: LD_INT 11
94490: PUSH
94491: LD_INT 11
94493: PUSH
94494: EMPTY
94495: LIST
94496: LIST
94497: ST_TO_ADDR
// hc_class = class_apeman ;
94498: LD_ADDR_OWVAR 28
94502: PUSH
94503: LD_INT 12
94505: ST_TO_ADDR
// hc_name =  ;
94506: LD_ADDR_OWVAR 26
94510: PUSH
94511: LD_STRING 
94513: ST_TO_ADDR
// temp = CreateHuman ;
94514: LD_ADDR_VAR 0 4
94518: PUSH
94519: CALL_OW 44
94523: ST_TO_ADDR
// PlaceUnitXYR ( temp , 5 , 3 , 2 , false ) ;
94524: LD_VAR 0 4
94528: PPUSH
94529: LD_INT 5
94531: PPUSH
94532: LD_INT 3
94534: PPUSH
94535: LD_INT 2
94537: PPUSH
94538: LD_INT 0
94540: PPUSH
94541: CALL_OW 50
// apes = apes ^ temp ;
94545: LD_ADDR_EXP 174
94549: PUSH
94550: LD_EXP 174
94554: PUSH
94555: LD_VAR 0 4
94559: ADD
94560: ST_TO_ADDR
// apes_tick = 999 999$0 ;
94561: LD_ADDR_EXP 175
94565: PUSH
94566: LD_INT 2097900
94568: ST_TO_ADDR
// end ; enable ;
94569: ENABLE
// end ;
94570: PPOPN 23
94572: END
// every 0 0$1 trigger mb_bases > 0 do var i , j , temp , detected_units , area1 , area2 ;
94573: LD_EXP 160
94577: PUSH
94578: LD_INT 0
94580: GREATER
94581: IFFALSE 94961
94583: GO 94585
94585: DISABLE
94586: LD_INT 0
94588: PPUSH
94589: PPUSH
94590: PPUSH
94591: PPUSH
94592: PPUSH
94593: PPUSH
// begin for i = 1 to 3 do
94594: LD_ADDR_VAR 0 1
94598: PUSH
94599: DOUBLE
94600: LD_INT 1
94602: DEC
94603: ST_TO_ADDR
94604: LD_INT 3
94606: PUSH
94607: FOR_TO
94608: IFFALSE 94958
// begin area1 = [ base_legion_minor , base_russians_minor , base_us_minor ] [ i ] ;
94610: LD_ADDR_VAR 0 5
94614: PUSH
94615: LD_INT 7
94617: PUSH
94618: LD_INT 8
94620: PUSH
94621: LD_INT 6
94623: PUSH
94624: EMPTY
94625: LIST
94626: LIST
94627: LIST
94628: PUSH
94629: LD_VAR 0 1
94633: ARRAY
94634: ST_TO_ADDR
// area2 = [ mb_legion_perimeter , 1 , mb_us_perimeter ] [ i ] ;
94635: LD_ADDR_VAR 0 6
94639: PUSH
94640: LD_INT 10
94642: PUSH
94643: LD_INT 1
94645: PUSH
94646: LD_INT 9
94648: PUSH
94649: EMPTY
94650: LIST
94651: LIST
94652: LIST
94653: PUSH
94654: LD_VAR 0 1
94658: ARRAY
94659: ST_TO_ADDR
// detected_units = [ ] ;
94660: LD_ADDR_VAR 0 4
94664: PUSH
94665: EMPTY
94666: ST_TO_ADDR
// if i = 2 then
94667: LD_VAR 0 1
94671: PUSH
94672: LD_INT 2
94674: EQUAL
94675: IFFALSE 94704
// temp = FilterUnitsInArea ( area1 , [ f_side , 2 ] ) else
94677: LD_ADDR_VAR 0 3
94681: PUSH
94682: LD_VAR 0 5
94686: PPUSH
94687: LD_INT 22
94689: PUSH
94690: LD_INT 2
94692: PUSH
94693: EMPTY
94694: LIST
94695: LIST
94696: PPUSH
94697: CALL_OW 70
94701: ST_TO_ADDR
94702: GO 94750
// temp = FilterUnitsInArea ( area1 , [ f_side , 2 ] ) ^ FilterUnitsInArea ( area2 , [ f_side , 2 ] ) ;
94704: LD_ADDR_VAR 0 3
94708: PUSH
94709: LD_VAR 0 5
94713: PPUSH
94714: LD_INT 22
94716: PUSH
94717: LD_INT 2
94719: PUSH
94720: EMPTY
94721: LIST
94722: LIST
94723: PPUSH
94724: CALL_OW 70
94728: PUSH
94729: LD_VAR 0 6
94733: PPUSH
94734: LD_INT 22
94736: PUSH
94737: LD_INT 2
94739: PUSH
94740: EMPTY
94741: LIST
94742: LIST
94743: PPUSH
94744: CALL_OW 70
94748: ADD
94749: ST_TO_ADDR
// for j in temp do
94750: LD_ADDR_VAR 0 2
94754: PUSH
94755: LD_VAR 0 3
94759: PUSH
94760: FOR_IN
94761: IFFALSE 94862
// if See ( [ 8 , 3 , 1 ] [ i ] , j ) or GetSide ( Attacks ( j ) ) = [ 8 , 3 , 1 ] [ i ] then
94763: LD_INT 8
94765: PUSH
94766: LD_INT 3
94768: PUSH
94769: LD_INT 1
94771: PUSH
94772: EMPTY
94773: LIST
94774: LIST
94775: LIST
94776: PUSH
94777: LD_VAR 0 1
94781: ARRAY
94782: PPUSH
94783: LD_VAR 0 2
94787: PPUSH
94788: CALL_OW 292
94792: PUSH
94793: LD_VAR 0 2
94797: PPUSH
94798: CALL_OW 320
94802: PPUSH
94803: CALL_OW 255
94807: PUSH
94808: LD_INT 8
94810: PUSH
94811: LD_INT 3
94813: PUSH
94814: LD_INT 1
94816: PUSH
94817: EMPTY
94818: LIST
94819: LIST
94820: LIST
94821: PUSH
94822: LD_VAR 0 1
94826: ARRAY
94827: EQUAL
94828: OR
94829: IFFALSE 94860
// if not j in detected_units then
94831: LD_VAR 0 2
94835: PUSH
94836: LD_VAR 0 4
94840: IN
94841: NOT
94842: IFFALSE 94860
// detected_units = detected_units ^ j ;
94844: LD_ADDR_VAR 0 4
94848: PUSH
94849: LD_VAR 0 4
94853: PUSH
94854: LD_VAR 0 2
94858: ADD
94859: ST_TO_ADDR
94860: GO 94760
94862: POP
94863: POP
// for j in detected_units do
94864: LD_ADDR_VAR 0 2
94868: PUSH
94869: LD_VAR 0 4
94873: PUSH
94874: FOR_IN
94875: IFFALSE 94929
// if not IsInArea ( j , area1 ) and not IsInArea ( j , area2 ) then
94877: LD_VAR 0 2
94881: PPUSH
94882: LD_VAR 0 5
94886: PPUSH
94887: CALL_OW 308
94891: NOT
94892: PUSH
94893: LD_VAR 0 2
94897: PPUSH
94898: LD_VAR 0 6
94902: PPUSH
94903: CALL_OW 308
94907: NOT
94908: AND
94909: IFFALSE 94927
// detected_units = detected_units diff j ;
94911: LD_ADDR_VAR 0 4
94915: PUSH
94916: LD_VAR 0 4
94920: PUSH
94921: LD_VAR 0 2
94925: DIFF
94926: ST_TO_ADDR
94927: GO 94874
94929: POP
94930: POP
// mb_detected_enemy = Replace ( mb_detected_enemy , i , detected_units ) ;
94931: LD_ADDR_EXP 179
94935: PUSH
94936: LD_EXP 179
94940: PPUSH
94941: LD_VAR 0 1
94945: PPUSH
94946: LD_VAR 0 4
94950: PPUSH
94951: CALL_OW 1
94955: ST_TO_ADDR
// end ;
94956: GO 94607
94958: POP
94959: POP
// enable ;
94960: ENABLE
// end ;
94961: PPOPN 6
94963: END
// every 0 0$1 trigger - 1 in mb_re_timer do var i , j , temp , temp2 , temp_list , enemies , vehs ;
94964: LD_INT 1
94966: NEG
94967: PUSH
94968: LD_EXP 169
94972: IN
94973: IFFALSE 95551
94975: GO 94977
94977: DISABLE
94978: LD_INT 0
94980: PPUSH
94981: PPUSH
94982: PPUSH
94983: PPUSH
94984: PPUSH
94985: PPUSH
94986: PPUSH
// begin for i = 1 to mb_re_timer do
94987: LD_ADDR_VAR 0 1
94991: PUSH
94992: DOUBLE
94993: LD_INT 1
94995: DEC
94996: ST_TO_ADDR
94997: LD_EXP 169
95001: PUSH
95002: FOR_TO
95003: IFFALSE 95548
// if mb_re_timer [ i ] = - 1 then
95005: LD_EXP 169
95009: PUSH
95010: LD_VAR 0 1
95014: ARRAY
95015: PUSH
95016: LD_INT 1
95018: NEG
95019: EQUAL
95020: IFFALSE 95546
// begin vehs = UnitFilter ( mb_re_vehicles [ i ] diff 0 , [ f_ok ] ) ;
95022: LD_ADDR_VAR 0 7
95026: PUSH
95027: LD_EXP 168
95031: PUSH
95032: LD_VAR 0 1
95036: ARRAY
95037: PUSH
95038: LD_INT 0
95040: DIFF
95041: PPUSH
95042: LD_INT 50
95044: PUSH
95045: EMPTY
95046: LIST
95047: PPUSH
95048: CALL_OW 72
95052: ST_TO_ADDR
// temp = UnitFilter ( vehs , [ f_inarea , [ base_legion_minor , base_russians_minor , base_us_minor ] [ i ] ] ) ;
95053: LD_ADDR_VAR 0 3
95057: PUSH
95058: LD_VAR 0 7
95062: PPUSH
95063: LD_INT 95
95065: PUSH
95066: LD_INT 7
95068: PUSH
95069: LD_INT 8
95071: PUSH
95072: LD_INT 6
95074: PUSH
95075: EMPTY
95076: LIST
95077: LIST
95078: LIST
95079: PUSH
95080: LD_VAR 0 1
95084: ARRAY
95085: PUSH
95086: EMPTY
95087: LIST
95088: LIST
95089: PPUSH
95090: CALL_OW 72
95094: ST_TO_ADDR
// enemies = FilterUnitsInArea ( [ AllSeekLeftCentre , 1 , AllSeekRightCentre ] [ i ] , [ f_side , 2 ] ) ;
95095: LD_ADDR_VAR 0 6
95099: PUSH
95100: LD_INT 31
95102: PUSH
95103: LD_INT 1
95105: PUSH
95106: LD_INT 34
95108: PUSH
95109: EMPTY
95110: LIST
95111: LIST
95112: LIST
95113: PUSH
95114: LD_VAR 0 1
95118: ARRAY
95119: PPUSH
95120: LD_INT 22
95122: PUSH
95123: LD_INT 2
95125: PUSH
95126: EMPTY
95127: LIST
95128: LIST
95129: PPUSH
95130: CALL_OW 70
95134: ST_TO_ADDR
// if temp > 0 then
95135: LD_VAR 0 3
95139: PUSH
95140: LD_INT 0
95142: GREATER
95143: IFFALSE 95212
// begin temp2 = [ [ 44 , 60 ] , [ ] , [ 187 , 59 ] ] [ i ] ;
95145: LD_ADDR_VAR 0 4
95149: PUSH
95150: LD_INT 44
95152: PUSH
95153: LD_INT 60
95155: PUSH
95156: EMPTY
95157: LIST
95158: LIST
95159: PUSH
95160: EMPTY
95161: PUSH
95162: LD_INT 187
95164: PUSH
95165: LD_INT 59
95167: PUSH
95168: EMPTY
95169: LIST
95170: LIST
95171: PUSH
95172: EMPTY
95173: LIST
95174: LIST
95175: LIST
95176: PUSH
95177: LD_VAR 0 1
95181: ARRAY
95182: ST_TO_ADDR
// ComMoveXY ( temp , temp2 [ 1 ] , temp2 [ 2 ] ) ;
95183: LD_VAR 0 3
95187: PPUSH
95188: LD_VAR 0 4
95192: PUSH
95193: LD_INT 1
95195: ARRAY
95196: PPUSH
95197: LD_VAR 0 4
95201: PUSH
95202: LD_INT 2
95204: ARRAY
95205: PPUSH
95206: CALL_OW 111
// end else
95210: GO 95250
// if enemies > 0 then
95212: LD_VAR 0 6
95216: PUSH
95217: LD_INT 0
95219: GREATER
95220: IFFALSE 95250
// ComAttackUnit ( vehs , NearestUnitToUnit ( enemies , vehs [ 1 ] ) ) ;
95222: LD_VAR 0 7
95226: PPUSH
95227: LD_VAR 0 6
95231: PPUSH
95232: LD_VAR 0 7
95236: PUSH
95237: LD_INT 1
95239: ARRAY
95240: PPUSH
95241: CALL_OW 74
95245: PPUSH
95246: CALL_OW 115
// if vehs = 0 or UnitFIlter ( enemies , [ f_ok ] ) = 0 then
95250: LD_VAR 0 7
95254: PUSH
95255: LD_INT 0
95257: EQUAL
95258: PUSH
95259: LD_VAR 0 6
95263: PPUSH
95264: LD_INT 50
95266: PUSH
95267: EMPTY
95268: LIST
95269: PPUSH
95270: CALL_OW 72
95274: PUSH
95275: LD_INT 0
95277: EQUAL
95278: OR
95279: IFFALSE 95546
// begin temp_list = mb_vehicles [ i ] ;
95281: LD_ADDR_VAR 0 5
95285: PUSH
95286: LD_EXP 164
95290: PUSH
95291: LD_VAR 0 1
95295: ARRAY
95296: ST_TO_ADDR
// for j = 1 to mb_re_vehicles [ i ] do
95297: LD_ADDR_VAR 0 2
95301: PUSH
95302: DOUBLE
95303: LD_INT 1
95305: DEC
95306: ST_TO_ADDR
95307: LD_EXP 168
95311: PUSH
95312: LD_VAR 0 1
95316: ARRAY
95317: PUSH
95318: FOR_TO
95319: IFFALSE 95431
// if mb_re_vehicles [ i ] [ j ] > 0 then
95321: LD_EXP 168
95325: PUSH
95326: LD_VAR 0 1
95330: ARRAY
95331: PUSH
95332: LD_VAR 0 2
95336: ARRAY
95337: PUSH
95338: LD_INT 0
95340: GREATER
95341: IFFALSE 95429
// begin if not IsOk ( mb_re_vehicles [ i ] [ j ] ) then
95343: LD_EXP 168
95347: PUSH
95348: LD_VAR 0 1
95352: ARRAY
95353: PUSH
95354: LD_VAR 0 2
95358: ARRAY
95359: PPUSH
95360: CALL_OW 302
95364: NOT
95365: IFFALSE 95392
// temp_list = Replace ( temp_list , j , 0 ) else
95367: LD_ADDR_VAR 0 5
95371: PUSH
95372: LD_VAR 0 5
95376: PPUSH
95377: LD_VAR 0 2
95381: PPUSH
95382: LD_INT 0
95384: PPUSH
95385: CALL_OW 1
95389: ST_TO_ADDR
95390: GO 95429
// temp_list = Replace ( temp_list , j , mb_re_vehicles [ i ] [ j ] ) ;
95392: LD_ADDR_VAR 0 5
95396: PUSH
95397: LD_VAR 0 5
95401: PPUSH
95402: LD_VAR 0 2
95406: PPUSH
95407: LD_EXP 168
95411: PUSH
95412: LD_VAR 0 1
95416: ARRAY
95417: PUSH
95418: LD_VAR 0 2
95422: ARRAY
95423: PPUSH
95424: CALL_OW 1
95428: ST_TO_ADDR
// end ;
95429: GO 95318
95431: POP
95432: POP
// mb_re_vehicles = Replace ( mb_re_vehicles , i , [ 0 , 0 , 0 , 0 , 0 , 0 ] ) ;
95433: LD_ADDR_EXP 168
95437: PUSH
95438: LD_EXP 168
95442: PPUSH
95443: LD_VAR 0 1
95447: PPUSH
95448: LD_INT 0
95450: PUSH
95451: LD_INT 0
95453: PUSH
95454: LD_INT 0
95456: PUSH
95457: LD_INT 0
95459: PUSH
95460: LD_INT 0
95462: PUSH
95463: LD_INT 0
95465: PUSH
95466: EMPTY
95467: LIST
95468: LIST
95469: LIST
95470: LIST
95471: LIST
95472: LIST
95473: PPUSH
95474: CALL_OW 1
95478: ST_TO_ADDR
// mb_vehicles = Replace ( mb_vehicles , i , temp_list ) ;
95479: LD_ADDR_EXP 164
95483: PUSH
95484: LD_EXP 164
95488: PPUSH
95489: LD_VAR 0 1
95493: PPUSH
95494: LD_VAR 0 5
95498: PPUSH
95499: CALL_OW 1
95503: ST_TO_ADDR
// mb_re_timer = Replace ( mb_re_timer , i , [ 4 4$0 , 2 2$0 , 1 1$0 ] [ difficulty ] ) ;
95504: LD_ADDR_EXP 169
95508: PUSH
95509: LD_EXP 169
95513: PPUSH
95514: LD_VAR 0 1
95518: PPUSH
95519: LD_INT 8400
95521: PUSH
95522: LD_INT 4200
95524: PUSH
95525: LD_INT 2100
95527: PUSH
95528: EMPTY
95529: LIST
95530: LIST
95531: LIST
95532: PUSH
95533: LD_OWVAR 67
95537: ARRAY
95538: PPUSH
95539: CALL_OW 1
95543: ST_TO_ADDR
// break ;
95544: GO 95548
// end ; end ;
95546: GO 95002
95548: POP
95549: POP
// enable ;
95550: ENABLE
// end ;
95551: PPOPN 7
95553: END
// every 0 0$1 + 0 0$0.3 trigger 2 in mb_bases do var i , temp1 , temp2 , temp_list , enemies , baz1 , baz2 , barracks ;
95554: LD_INT 2
95556: PUSH
95557: LD_EXP 160
95561: IN
95562: IFFALSE 96143
95564: GO 95566
95566: DISABLE
95567: LD_INT 0
95569: PPUSH
95570: PPUSH
95571: PPUSH
95572: PPUSH
95573: PPUSH
95574: PPUSH
95575: PPUSH
95576: PPUSH
// begin temp_list = UnitFilter ( mb_people [ 2 ] , [ f_class , class_bazooker ] ) ;
95577: LD_ADDR_VAR 0 4
95581: PUSH
95582: LD_EXP 163
95586: PUSH
95587: LD_INT 2
95589: ARRAY
95590: PPUSH
95591: LD_INT 25
95593: PUSH
95594: LD_INT 9
95596: PUSH
95597: EMPTY
95598: LIST
95599: LIST
95600: PPUSH
95601: CALL_OW 72
95605: ST_TO_ADDR
// if temp_list = 0 then
95606: LD_VAR 0 4
95610: PUSH
95611: LD_INT 0
95613: EQUAL
95614: IFFALSE 95620
// exit else
95616: GO 96143
95618: GO 95634
// baz1 = temp_list [ 1 ] ;
95620: LD_ADDR_VAR 0 6
95624: PUSH
95625: LD_VAR 0 4
95629: PUSH
95630: LD_INT 1
95632: ARRAY
95633: ST_TO_ADDR
// if temp_list > 1 then
95634: LD_VAR 0 4
95638: PUSH
95639: LD_INT 1
95641: GREATER
95642: IFFALSE 95658
// baz2 = temp_list [ 2 ] ;
95644: LD_ADDR_VAR 0 7
95648: PUSH
95649: LD_VAR 0 4
95653: PUSH
95654: LD_INT 2
95656: ARRAY
95657: ST_TO_ADDR
// if IsInUnit ( baz1 ) then
95658: LD_VAR 0 6
95662: PPUSH
95663: CALL_OW 310
95667: IFFALSE 95686
// barracks = IsInUnit ( baz1 ) else
95669: LD_ADDR_VAR 0 8
95673: PUSH
95674: LD_VAR 0 6
95678: PPUSH
95679: CALL_OW 310
95683: ST_TO_ADDR
95684: GO 95696
// barracks = baz1 ;
95686: LD_ADDR_VAR 0 8
95690: PUSH
95691: LD_VAR 0 6
95695: ST_TO_ADDR
// enemies = FilterAllUnits ( [ [ f_enemy , 3 ] , [ f_dist , barracks , 25 ] , [ f_not , [ f_chassis , ar_hovercraft ] ] , [ f_ok ] , [ f_not , [ f_inarea , base_russians_minor ] ] ] ) ;
95696: LD_ADDR_VAR 0 5
95700: PUSH
95701: LD_INT 81
95703: PUSH
95704: LD_INT 3
95706: PUSH
95707: EMPTY
95708: LIST
95709: LIST
95710: PUSH
95711: LD_INT 91
95713: PUSH
95714: LD_VAR 0 8
95718: PUSH
95719: LD_INT 25
95721: PUSH
95722: EMPTY
95723: LIST
95724: LIST
95725: LIST
95726: PUSH
95727: LD_INT 3
95729: PUSH
95730: LD_INT 31
95732: PUSH
95733: LD_INT 11
95735: PUSH
95736: EMPTY
95737: LIST
95738: LIST
95739: PUSH
95740: EMPTY
95741: LIST
95742: LIST
95743: PUSH
95744: LD_INT 50
95746: PUSH
95747: EMPTY
95748: LIST
95749: PUSH
95750: LD_INT 3
95752: PUSH
95753: LD_INT 95
95755: PUSH
95756: LD_INT 8
95758: PUSH
95759: EMPTY
95760: LIST
95761: LIST
95762: PUSH
95763: EMPTY
95764: LIST
95765: LIST
95766: PUSH
95767: EMPTY
95768: LIST
95769: LIST
95770: LIST
95771: LIST
95772: LIST
95773: PPUSH
95774: CALL_OW 69
95778: ST_TO_ADDR
// for i in enemies do
95779: LD_ADDR_VAR 0 1
95783: PUSH
95784: LD_VAR 0 5
95788: PUSH
95789: FOR_IN
95790: IFFALSE 95825
// if not See ( 3 , i ) then
95792: LD_INT 3
95794: PPUSH
95795: LD_VAR 0 1
95799: PPUSH
95800: CALL_OW 292
95804: NOT
95805: IFFALSE 95823
// enemies = enemies diff i ;
95807: LD_ADDR_VAR 0 5
95811: PUSH
95812: LD_VAR 0 5
95816: PUSH
95817: LD_VAR 0 1
95821: DIFF
95822: ST_TO_ADDR
95823: GO 95789
95825: POP
95826: POP
// if temp_list > 1 and enemies > 0 then
95827: LD_VAR 0 4
95831: PUSH
95832: LD_INT 1
95834: GREATER
95835: PUSH
95836: LD_VAR 0 5
95840: PUSH
95841: LD_INT 0
95843: GREATER
95844: AND
95845: IFFALSE 96142
// if enemies = 1 then
95847: LD_VAR 0 5
95851: PUSH
95852: LD_INT 1
95854: EQUAL
95855: IFFALSE 95933
// begin ComTimeShift ( baz1 , GetX ( enemies [ 1 ] ) , GetY ( enemies [ 1 ] ) ) ;
95857: LD_VAR 0 6
95861: PPUSH
95862: LD_VAR 0 5
95866: PUSH
95867: LD_INT 1
95869: ARRAY
95870: PPUSH
95871: CALL_OW 250
95875: PPUSH
95876: LD_VAR 0 5
95880: PUSH
95881: LD_INT 1
95883: ARRAY
95884: PPUSH
95885: CALL_OW 251
95889: PPUSH
95890: CALL_OW 154
// ComSpaceShift ( baz2 , GetX ( enemies [ 1 ] ) , GetY ( enemies [ 1 ] ) ) ;
95894: LD_VAR 0 7
95898: PPUSH
95899: LD_VAR 0 5
95903: PUSH
95904: LD_INT 1
95906: ARRAY
95907: PPUSH
95908: CALL_OW 250
95912: PPUSH
95913: LD_VAR 0 5
95917: PUSH
95918: LD_INT 1
95920: ARRAY
95921: PPUSH
95922: CALL_OW 251
95926: PPUSH
95927: CALL_OW 153
// end else
95931: GO 96142
// begin temp1 = NearestUnitToUnit ( enemies , barracks ) ;
95933: LD_ADDR_VAR 0 2
95937: PUSH
95938: LD_VAR 0 5
95942: PPUSH
95943: LD_VAR 0 8
95947: PPUSH
95948: CALL_OW 74
95952: ST_TO_ADDR
// temp_list = [ GetX ( temp1 ) , GetY ( temp1 ) ] ;
95953: LD_ADDR_VAR 0 4
95957: PUSH
95958: LD_VAR 0 2
95962: PPUSH
95963: CALL_OW 250
95967: PUSH
95968: LD_VAR 0 2
95972: PPUSH
95973: CALL_OW 251
95977: PUSH
95978: EMPTY
95979: LIST
95980: LIST
95981: ST_TO_ADDR
// temp2 = AI_GetTurnDirection ( GetX ( temp1 ) , GetY ( temp1 ) , GetX ( barracks ) , GetY ( barracks ) ) ;
95982: LD_ADDR_VAR 0 3
95986: PUSH
95987: LD_VAR 0 2
95991: PPUSH
95992: CALL_OW 250
95996: PPUSH
95997: LD_VAR 0 2
96001: PPUSH
96002: CALL_OW 251
96006: PPUSH
96007: LD_VAR 0 8
96011: PPUSH
96012: CALL_OW 250
96016: PPUSH
96017: LD_VAR 0 8
96021: PPUSH
96022: CALL_OW 251
96026: PPUSH
96027: CALL 85686 0 4
96031: ST_TO_ADDR
// ComTimeShift ( baz1 , ShiftX ( GetX ( temp1 ) , temp2 , 2 ) , ShiftY ( GetY ( temp1 ) , temp2 , 2 ) ) ;
96032: LD_VAR 0 6
96036: PPUSH
96037: LD_VAR 0 2
96041: PPUSH
96042: CALL_OW 250
96046: PPUSH
96047: LD_VAR 0 3
96051: PPUSH
96052: LD_INT 2
96054: PPUSH
96055: CALL_OW 272
96059: PPUSH
96060: LD_VAR 0 2
96064: PPUSH
96065: CALL_OW 251
96069: PPUSH
96070: LD_VAR 0 3
96074: PPUSH
96075: LD_INT 2
96077: PPUSH
96078: CALL_OW 273
96082: PPUSH
96083: CALL_OW 154
// ComSpaceShift ( baz2 , ShiftX ( GetX ( temp1 ) , temp2 , 2 ) , ShiftY ( GetY ( temp1 ) , temp2 , 2 ) ) ;
96087: LD_VAR 0 7
96091: PPUSH
96092: LD_VAR 0 2
96096: PPUSH
96097: CALL_OW 250
96101: PPUSH
96102: LD_VAR 0 3
96106: PPUSH
96107: LD_INT 2
96109: PPUSH
96110: CALL_OW 272
96114: PPUSH
96115: LD_VAR 0 2
96119: PPUSH
96120: CALL_OW 251
96124: PPUSH
96125: LD_VAR 0 3
96129: PPUSH
96130: LD_INT 2
96132: PPUSH
96133: CALL_OW 273
96137: PPUSH
96138: CALL_OW 153
// end ; enable ;
96142: ENABLE
// end ;
96143: PPOPN 8
96145: END
// every 0 0$1 trigger mb_bases > 0 do var i , j , temp , defences , soldiers , vehicles , escaping , EscHexes ; var StartSolCount , StartDefCount , count ;
96146: LD_EXP 160
96150: PUSH
96151: LD_INT 0
96153: GREATER
96154: IFFALSE 97561
96156: GO 96158
96158: DISABLE
96159: LD_INT 0
96161: PPUSH
96162: PPUSH
96163: PPUSH
96164: PPUSH
96165: PPUSH
96166: PPUSH
96167: PPUSH
96168: PPUSH
96169: PPUSH
96170: PPUSH
96171: PPUSH
// begin escaping = 0 ;
96172: LD_ADDR_VAR 0 7
96176: PUSH
96177: LD_INT 0
96179: ST_TO_ADDR
// EscHexes = [ [ [ 35 , 53 ] , [ 38 , 61 ] , [ 42 , 69 ] , [ 47 , 81 ] , [ 54 , 95 ] , [ 59 , 105 ] , [ 65 , 117 ] , [ 71 , 130 ] , [ 83 , 143 ] ] , [ [ 155 , 138 ] , [ 159 , 146 ] , [ 163 , 154 ] , [ 168 , 165 ] , [ 171 , 171 ] , [ 176 , 181 ] , [ 182 , 188 ] ] , [ [ 191 , 54 ] , [ 195 , 64 ] , [ 197 , 72 ] , [ 200 , 81 ] , [ 203 , 88 ] , [ 207 , 99 ] , [ 209 , 107 ] , [ 212 , 115 ] , [ 216 , 124 ] , [ 220 , 133 ] ] ] ;
96180: LD_ADDR_VAR 0 8
96184: PUSH
96185: LD_INT 35
96187: PUSH
96188: LD_INT 53
96190: PUSH
96191: EMPTY
96192: LIST
96193: LIST
96194: PUSH
96195: LD_INT 38
96197: PUSH
96198: LD_INT 61
96200: PUSH
96201: EMPTY
96202: LIST
96203: LIST
96204: PUSH
96205: LD_INT 42
96207: PUSH
96208: LD_INT 69
96210: PUSH
96211: EMPTY
96212: LIST
96213: LIST
96214: PUSH
96215: LD_INT 47
96217: PUSH
96218: LD_INT 81
96220: PUSH
96221: EMPTY
96222: LIST
96223: LIST
96224: PUSH
96225: LD_INT 54
96227: PUSH
96228: LD_INT 95
96230: PUSH
96231: EMPTY
96232: LIST
96233: LIST
96234: PUSH
96235: LD_INT 59
96237: PUSH
96238: LD_INT 105
96240: PUSH
96241: EMPTY
96242: LIST
96243: LIST
96244: PUSH
96245: LD_INT 65
96247: PUSH
96248: LD_INT 117
96250: PUSH
96251: EMPTY
96252: LIST
96253: LIST
96254: PUSH
96255: LD_INT 71
96257: PUSH
96258: LD_INT 130
96260: PUSH
96261: EMPTY
96262: LIST
96263: LIST
96264: PUSH
96265: LD_INT 83
96267: PUSH
96268: LD_INT 143
96270: PUSH
96271: EMPTY
96272: LIST
96273: LIST
96274: PUSH
96275: EMPTY
96276: LIST
96277: LIST
96278: LIST
96279: LIST
96280: LIST
96281: LIST
96282: LIST
96283: LIST
96284: LIST
96285: PUSH
96286: LD_INT 155
96288: PUSH
96289: LD_INT 138
96291: PUSH
96292: EMPTY
96293: LIST
96294: LIST
96295: PUSH
96296: LD_INT 159
96298: PUSH
96299: LD_INT 146
96301: PUSH
96302: EMPTY
96303: LIST
96304: LIST
96305: PUSH
96306: LD_INT 163
96308: PUSH
96309: LD_INT 154
96311: PUSH
96312: EMPTY
96313: LIST
96314: LIST
96315: PUSH
96316: LD_INT 168
96318: PUSH
96319: LD_INT 165
96321: PUSH
96322: EMPTY
96323: LIST
96324: LIST
96325: PUSH
96326: LD_INT 171
96328: PUSH
96329: LD_INT 171
96331: PUSH
96332: EMPTY
96333: LIST
96334: LIST
96335: PUSH
96336: LD_INT 176
96338: PUSH
96339: LD_INT 181
96341: PUSH
96342: EMPTY
96343: LIST
96344: LIST
96345: PUSH
96346: LD_INT 182
96348: PUSH
96349: LD_INT 188
96351: PUSH
96352: EMPTY
96353: LIST
96354: LIST
96355: PUSH
96356: EMPTY
96357: LIST
96358: LIST
96359: LIST
96360: LIST
96361: LIST
96362: LIST
96363: LIST
96364: PUSH
96365: LD_INT 191
96367: PUSH
96368: LD_INT 54
96370: PUSH
96371: EMPTY
96372: LIST
96373: LIST
96374: PUSH
96375: LD_INT 195
96377: PUSH
96378: LD_INT 64
96380: PUSH
96381: EMPTY
96382: LIST
96383: LIST
96384: PUSH
96385: LD_INT 197
96387: PUSH
96388: LD_INT 72
96390: PUSH
96391: EMPTY
96392: LIST
96393: LIST
96394: PUSH
96395: LD_INT 200
96397: PUSH
96398: LD_INT 81
96400: PUSH
96401: EMPTY
96402: LIST
96403: LIST
96404: PUSH
96405: LD_INT 203
96407: PUSH
96408: LD_INT 88
96410: PUSH
96411: EMPTY
96412: LIST
96413: LIST
96414: PUSH
96415: LD_INT 207
96417: PUSH
96418: LD_INT 99
96420: PUSH
96421: EMPTY
96422: LIST
96423: LIST
96424: PUSH
96425: LD_INT 209
96427: PUSH
96428: LD_INT 107
96430: PUSH
96431: EMPTY
96432: LIST
96433: LIST
96434: PUSH
96435: LD_INT 212
96437: PUSH
96438: LD_INT 115
96440: PUSH
96441: EMPTY
96442: LIST
96443: LIST
96444: PUSH
96445: LD_INT 216
96447: PUSH
96448: LD_INT 124
96450: PUSH
96451: EMPTY
96452: LIST
96453: LIST
96454: PUSH
96455: LD_INT 220
96457: PUSH
96458: LD_INT 133
96460: PUSH
96461: EMPTY
96462: LIST
96463: LIST
96464: PUSH
96465: EMPTY
96466: LIST
96467: LIST
96468: LIST
96469: LIST
96470: LIST
96471: LIST
96472: LIST
96473: LIST
96474: LIST
96475: LIST
96476: PUSH
96477: EMPTY
96478: LIST
96479: LIST
96480: LIST
96481: ST_TO_ADDR
// StartSolCount = [ 10 , 0 , 10 ] ;
96482: LD_ADDR_VAR 0 9
96486: PUSH
96487: LD_INT 10
96489: PUSH
96490: LD_INT 0
96492: PUSH
96493: LD_INT 10
96495: PUSH
96496: EMPTY
96497: LIST
96498: LIST
96499: LIST
96500: ST_TO_ADDR
// StartDefCount = [ 10 , 0 , 10 ] ;
96501: LD_ADDR_VAR 0 10
96505: PUSH
96506: LD_INT 10
96508: PUSH
96509: LD_INT 0
96511: PUSH
96512: LD_INT 10
96514: PUSH
96515: EMPTY
96516: LIST
96517: LIST
96518: LIST
96519: ST_TO_ADDR
// for i in mb_bases do
96520: LD_ADDR_VAR 0 1
96524: PUSH
96525: LD_EXP 160
96529: PUSH
96530: FOR_IN
96531: IFFALSE 97188
// begin temp = 0 ;
96533: LD_ADDR_VAR 0 3
96537: PUSH
96538: LD_INT 0
96540: ST_TO_ADDR
// j = UnitFilter ( mb_buildings [ i ] , [ [ f_btype , b_depot ] , [ f_ok ] ] ) ;
96541: LD_ADDR_VAR 0 2
96545: PUSH
96546: LD_EXP 161
96550: PUSH
96551: LD_VAR 0 1
96555: ARRAY
96556: PPUSH
96557: LD_INT 30
96559: PUSH
96560: LD_INT 0
96562: PUSH
96563: EMPTY
96564: LIST
96565: LIST
96566: PUSH
96567: LD_INT 50
96569: PUSH
96570: EMPTY
96571: LIST
96572: PUSH
96573: EMPTY
96574: LIST
96575: LIST
96576: PPUSH
96577: CALL_OW 72
96581: ST_TO_ADDR
// if j > 0 then
96582: LD_VAR 0 2
96586: PUSH
96587: LD_INT 0
96589: GREATER
96590: IFFALSE 96606
// temp = j [ 1 ] ;
96592: LD_ADDR_VAR 0 3
96596: PUSH
96597: LD_VAR 0 2
96601: PUSH
96602: LD_INT 1
96604: ARRAY
96605: ST_TO_ADDR
// if i = 2 then
96606: LD_VAR 0 1
96610: PUSH
96611: LD_INT 2
96613: EQUAL
96614: IFFALSE 96640
// if temp = 0 then
96616: LD_VAR 0 3
96620: PUSH
96621: LD_INT 0
96623: EQUAL
96624: IFFALSE 96638
// escaping = i else
96626: LD_ADDR_VAR 0 7
96630: PUSH
96631: LD_VAR 0 1
96635: ST_TO_ADDR
96636: GO 96640
// continue ;
96638: GO 96530
// if temp = 0 then
96640: LD_VAR 0 3
96644: PUSH
96645: LD_INT 0
96647: EQUAL
96648: IFFALSE 96662
// escaping = i else
96650: LD_ADDR_VAR 0 7
96654: PUSH
96655: LD_VAR 0 1
96659: ST_TO_ADDR
96660: GO 96696
// if GetEnergy ( GetBase ( temp ) ) [ 4 ] = 0 then
96662: LD_VAR 0 3
96666: PPUSH
96667: CALL_OW 274
96671: PPUSH
96672: CALL_OW 278
96676: PUSH
96677: LD_INT 4
96679: ARRAY
96680: PUSH
96681: LD_INT 0
96683: EQUAL
96684: IFFALSE 96696
// escaping = i ;
96686: LD_ADDR_VAR 0 7
96690: PUSH
96691: LD_VAR 0 1
96695: ST_TO_ADDR
// soldiers = UnitFilter ( mb_people [ i ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_mortar ] , [ f_class , class_bazooker ] , [ f_class , class_sniper ] ] ) ;
96696: LD_ADDR_VAR 0 5
96700: PUSH
96701: LD_EXP 163
96705: PUSH
96706: LD_VAR 0 1
96710: ARRAY
96711: PPUSH
96712: LD_INT 2
96714: PUSH
96715: LD_INT 25
96717: PUSH
96718: LD_INT 1
96720: PUSH
96721: EMPTY
96722: LIST
96723: LIST
96724: PUSH
96725: LD_INT 25
96727: PUSH
96728: LD_INT 8
96730: PUSH
96731: EMPTY
96732: LIST
96733: LIST
96734: PUSH
96735: LD_INT 25
96737: PUSH
96738: LD_INT 9
96740: PUSH
96741: EMPTY
96742: LIST
96743: LIST
96744: PUSH
96745: LD_INT 25
96747: PUSH
96748: LD_INT 5
96750: PUSH
96751: EMPTY
96752: LIST
96753: LIST
96754: PUSH
96755: EMPTY
96756: LIST
96757: LIST
96758: LIST
96759: LIST
96760: LIST
96761: PPUSH
96762: CALL_OW 72
96766: ST_TO_ADDR
// defences = UnitFilter ( mb_buildings [ i ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_armoury ] , [ [ f_btype , b_bunker ] , [ f_not , [ f_bweapon , ar_radar ] ] ] , [ [ f_btype , b_turret ] , [ f_not , [ f_bweapon , us_radar ] ] ] ] ) ;
96767: LD_ADDR_VAR 0 4
96771: PUSH
96772: LD_EXP 161
96776: PUSH
96777: LD_VAR 0 1
96781: ARRAY
96782: PPUSH
96783: LD_INT 2
96785: PUSH
96786: LD_INT 30
96788: PUSH
96789: LD_INT 5
96791: PUSH
96792: EMPTY
96793: LIST
96794: LIST
96795: PUSH
96796: LD_INT 30
96798: PUSH
96799: LD_INT 4
96801: PUSH
96802: EMPTY
96803: LIST
96804: LIST
96805: PUSH
96806: LD_INT 30
96808: PUSH
96809: LD_INT 32
96811: PUSH
96812: EMPTY
96813: LIST
96814: LIST
96815: PUSH
96816: LD_INT 3
96818: PUSH
96819: LD_INT 35
96821: PUSH
96822: LD_INT 30
96824: PUSH
96825: EMPTY
96826: LIST
96827: LIST
96828: PUSH
96829: EMPTY
96830: LIST
96831: LIST
96832: PUSH
96833: EMPTY
96834: LIST
96835: LIST
96836: PUSH
96837: LD_INT 30
96839: PUSH
96840: LD_INT 33
96842: PUSH
96843: EMPTY
96844: LIST
96845: LIST
96846: PUSH
96847: LD_INT 3
96849: PUSH
96850: LD_INT 35
96852: PUSH
96853: LD_INT 11
96855: PUSH
96856: EMPTY
96857: LIST
96858: LIST
96859: PUSH
96860: EMPTY
96861: LIST
96862: LIST
96863: PUSH
96864: EMPTY
96865: LIST
96866: LIST
96867: PUSH
96868: EMPTY
96869: LIST
96870: LIST
96871: LIST
96872: LIST
96873: LIST
96874: PPUSH
96875: CALL_OW 72
96879: ST_TO_ADDR
// vehicles = mb_vehicles [ i ] ^ mb_re_vehicles [ i ] diff - 1 ^ 0 ;
96880: LD_ADDR_VAR 0 6
96884: PUSH
96885: LD_EXP 164
96889: PUSH
96890: LD_VAR 0 1
96894: ARRAY
96895: PUSH
96896: LD_EXP 168
96900: PUSH
96901: LD_VAR 0 1
96905: ARRAY
96906: ADD
96907: PUSH
96908: LD_INT 1
96910: NEG
96911: PUSH
96912: LD_INT 0
96914: ADD
96915: DIFF
96916: ST_TO_ADDR
// count = 0 ;
96917: LD_ADDR_VAR 0 11
96921: PUSH
96922: LD_INT 0
96924: ST_TO_ADDR
// for j = 1 to soldiers do
96925: LD_ADDR_VAR 0 2
96929: PUSH
96930: DOUBLE
96931: LD_INT 1
96933: DEC
96934: ST_TO_ADDR
96935: LD_VAR 0 5
96939: PUSH
96940: FOR_TO
96941: IFFALSE 96959
// count = count + 1 ;
96943: LD_ADDR_VAR 0 11
96947: PUSH
96948: LD_VAR 0 11
96952: PUSH
96953: LD_INT 1
96955: PLUS
96956: ST_TO_ADDR
96957: GO 96940
96959: POP
96960: POP
// if count <= StartSolCount [ i ] * 0.33 then
96961: LD_VAR 0 11
96965: PUSH
96966: LD_VAR 0 9
96970: PUSH
96971: LD_VAR 0 1
96975: ARRAY
96976: PUSH
96977: LD_REAL  3.30000000000000E-0001
96980: MUL
96981: LESSEQUAL
96982: IFFALSE 96994
// escaping = i ;
96984: LD_ADDR_VAR 0 7
96988: PUSH
96989: LD_VAR 0 1
96993: ST_TO_ADDR
// if count <= StartSolCount [ i ] * 0.5 and ( vehicles = 0 or defences <= StartDefCount [ i ] * 0.5 ) then
96994: LD_VAR 0 11
96998: PUSH
96999: LD_VAR 0 9
97003: PUSH
97004: LD_VAR 0 1
97008: ARRAY
97009: PUSH
97010: LD_REAL  5.00000000000000E-0001
97013: MUL
97014: LESSEQUAL
97015: PUSH
97016: LD_VAR 0 6
97020: PUSH
97021: LD_INT 0
97023: EQUAL
97024: PUSH
97025: LD_VAR 0 4
97029: PUSH
97030: LD_VAR 0 10
97034: PUSH
97035: LD_VAR 0 1
97039: ARRAY
97040: PUSH
97041: LD_REAL  5.00000000000000E-0001
97044: MUL
97045: LESSEQUAL
97046: OR
97047: AND
97048: IFFALSE 97060
// escaping = i ;
97050: LD_ADDR_VAR 0 7
97054: PUSH
97055: LD_VAR 0 1
97059: ST_TO_ADDR
// count = 0 ;
97060: LD_ADDR_VAR 0 11
97064: PUSH
97065: LD_INT 0
97067: ST_TO_ADDR
// for j = 1 to defences do
97068: LD_ADDR_VAR 0 2
97072: PUSH
97073: DOUBLE
97074: LD_INT 1
97076: DEC
97077: ST_TO_ADDR
97078: LD_VAR 0 4
97082: PUSH
97083: FOR_TO
97084: IFFALSE 97102
// count = count + 1 ;
97086: LD_ADDR_VAR 0 11
97090: PUSH
97091: LD_VAR 0 11
97095: PUSH
97096: LD_INT 1
97098: PLUS
97099: ST_TO_ADDR
97100: GO 97083
97102: POP
97103: POP
// for j = 1 to vehicles do
97104: LD_ADDR_VAR 0 2
97108: PUSH
97109: DOUBLE
97110: LD_INT 1
97112: DEC
97113: ST_TO_ADDR
97114: LD_VAR 0 6
97118: PUSH
97119: FOR_TO
97120: IFFALSE 97139
// count = count + 0.5 ;
97122: LD_ADDR_VAR 0 11
97126: PUSH
97127: LD_VAR 0 11
97131: PUSH
97132: LD_REAL  5.00000000000000E-0001
97135: PLUS
97136: ST_TO_ADDR
97137: GO 97119
97139: POP
97140: POP
// if count <= StartDefCount [ i ] * 0.33 then
97141: LD_VAR 0 11
97145: PUSH
97146: LD_VAR 0 10
97150: PUSH
97151: LD_VAR 0 1
97155: ARRAY
97156: PUSH
97157: LD_REAL  3.30000000000000E-0001
97160: MUL
97161: LESSEQUAL
97162: IFFALSE 97174
// escaping = i ;
97164: LD_ADDR_VAR 0 7
97168: PUSH
97169: LD_VAR 0 1
97173: ST_TO_ADDR
// if escaping > 0 then
97174: LD_VAR 0 7
97178: PUSH
97179: LD_INT 0
97181: GREATER
97182: IFFALSE 97186
// break ;
97184: GO 97188
// end ;
97186: GO 96530
97188: POP
97189: POP
// if escaping > 0 then
97190: LD_VAR 0 7
97194: PUSH
97195: LD_INT 0
97197: GREATER
97198: IFFALSE 97560
// begin mb_evacuating_base = mb_evacuating_base ^ escaping ;
97200: LD_ADDR_EXP 180
97204: PUSH
97205: LD_EXP 180
97209: PUSH
97210: LD_VAR 0 7
97214: ADD
97215: ST_TO_ADDR
// if escaping = 2 then
97216: LD_VAR 0 7
97220: PUSH
97221: LD_INT 2
97223: EQUAL
97224: IFFALSE 97253
// mb_evacuating_units = mb_evacuating_units ^ [ mb_people [ escaping ] ] else
97226: LD_ADDR_EXP 181
97230: PUSH
97231: LD_EXP 181
97235: PUSH
97236: LD_EXP 163
97240: PUSH
97241: LD_VAR 0 7
97245: ARRAY
97246: PUSH
97247: EMPTY
97248: LIST
97249: ADD
97250: ST_TO_ADDR
97251: GO 97290
// mb_evacuating_units = mb_evacuating_units ^ [ mb_people [ escaping ] ^ mb_vehicles [ escaping ] ] ;
97253: LD_ADDR_EXP 181
97257: PUSH
97258: LD_EXP 181
97262: PUSH
97263: LD_EXP 163
97267: PUSH
97268: LD_VAR 0 7
97272: ARRAY
97273: PUSH
97274: LD_EXP 164
97278: PUSH
97279: LD_VAR 0 7
97283: ARRAY
97284: ADD
97285: PUSH
97286: EMPTY
97287: LIST
97288: ADD
97289: ST_TO_ADDR
// mb_evacuating_path = mb_evacuating_path ^ [ EscHexes [ escaping ] ] ;
97290: LD_ADDR_EXP 182
97294: PUSH
97295: LD_EXP 182
97299: PUSH
97300: LD_VAR 0 8
97304: PUSH
97305: LD_VAR 0 7
97309: ARRAY
97310: PUSH
97311: EMPTY
97312: LIST
97313: ADD
97314: ST_TO_ADDR
// mb_bases = mb_bases diff escaping ;
97315: LD_ADDR_EXP 160
97319: PUSH
97320: LD_EXP 160
97324: PUSH
97325: LD_VAR 0 7
97329: DIFF
97330: ST_TO_ADDR
// if escaping = 1 then
97331: LD_VAR 0 7
97335: PUSH
97336: LD_INT 1
97338: EQUAL
97339: IFFALSE 97464
// for i = 1 to ai_mines do
97341: LD_ADDR_VAR 0 1
97345: PUSH
97346: DOUBLE
97347: LD_INT 1
97349: DEC
97350: ST_TO_ADDR
97351: LD_EXP 156
97355: PUSH
97356: FOR_TO
97357: IFFALSE 97462
// if InArea ( ai_mines [ i ] [ 1 ] , ai_mines [ i ] [ 2 ] , MineArea6 ) or InArea ( ai_mines [ i ] [ 1 ] , ai_mines [ i ] [ 2 ] , MineArea7 ) then
97359: LD_EXP 156
97363: PUSH
97364: LD_VAR 0 1
97368: ARRAY
97369: PUSH
97370: LD_INT 1
97372: ARRAY
97373: PPUSH
97374: LD_EXP 156
97378: PUSH
97379: LD_VAR 0 1
97383: ARRAY
97384: PUSH
97385: LD_INT 2
97387: ARRAY
97388: PPUSH
97389: LD_INT 25
97391: PPUSH
97392: CALL_OW 309
97396: PUSH
97397: LD_EXP 156
97401: PUSH
97402: LD_VAR 0 1
97406: ARRAY
97407: PUSH
97408: LD_INT 1
97410: ARRAY
97411: PPUSH
97412: LD_EXP 156
97416: PUSH
97417: LD_VAR 0 1
97421: ARRAY
97422: PUSH
97423: LD_INT 2
97425: ARRAY
97426: PPUSH
97427: LD_INT 26
97429: PPUSH
97430: CALL_OW 309
97434: OR
97435: IFFALSE 97460
// ai_mines = Replace ( ai_mines , i , 0 ) ;
97437: LD_ADDR_EXP 156
97441: PUSH
97442: LD_EXP 156
97446: PPUSH
97447: LD_VAR 0 1
97451: PPUSH
97452: LD_INT 0
97454: PPUSH
97455: CALL_OW 1
97459: ST_TO_ADDR
97460: GO 97356
97462: POP
97463: POP
// temp = UnitFilter ( mb_people [ escaping ] , [ f_type , unit_human ] ) ;
97464: LD_ADDR_VAR 0 3
97468: PUSH
97469: LD_EXP 163
97473: PUSH
97474: LD_VAR 0 7
97478: ARRAY
97479: PPUSH
97480: LD_INT 21
97482: PUSH
97483: LD_INT 1
97485: PUSH
97486: EMPTY
97487: LIST
97488: LIST
97489: PPUSH
97490: CALL_OW 72
97494: ST_TO_ADDR
// temp = temp [ Rand ( 1 , temp ) ] ;
97495: LD_ADDR_VAR 0 3
97499: PUSH
97500: LD_VAR 0 3
97504: PUSH
97505: LD_INT 1
97507: PPUSH
97508: LD_VAR 0 3
97512: PPUSH
97513: CALL_OW 12
97517: ARRAY
97518: ST_TO_ADDR
// if GetSex ( temp ) = sex_male then
97519: LD_VAR 0 3
97523: PPUSH
97524: CALL_OW 258
97528: PUSH
97529: LD_INT 1
97531: EQUAL
97532: IFFALSE 97548
// Say ( temp , cap_minor_M ) else
97534: LD_VAR 0 3
97538: PPUSH
97539: LD_STRING cap_minor_M
97541: PPUSH
97542: CALL_OW 88
97546: GO 97560
// Say ( temp , cap_minor_F ) ;
97548: LD_VAR 0 3
97552: PPUSH
97553: LD_STRING cap_minor_F
97555: PPUSH
97556: CALL_OW 88
// end ; enable ;
97560: ENABLE
// end ;
97561: PPOPN 11
97563: END
// every 0 0$1 trigger mb_evacuating_base > 0 do var i , j , k , temp ;
97564: LD_EXP 180
97568: PUSH
97569: LD_INT 0
97571: GREATER
97572: IFFALSE 98358
97574: GO 97576
97576: DISABLE
97577: LD_INT 0
97579: PPUSH
97580: PPUSH
97581: PPUSH
97582: PPUSH
// begin for i = 1 to mb_evacuating_base do
97583: LD_ADDR_VAR 0 1
97587: PUSH
97588: DOUBLE
97589: LD_INT 1
97591: DEC
97592: ST_TO_ADDR
97593: LD_EXP 180
97597: PUSH
97598: FOR_TO
97599: IFFALSE 98355
// begin for j = 1 to mb_evacuating_units [ i ] do
97601: LD_ADDR_VAR 0 2
97605: PUSH
97606: DOUBLE
97607: LD_INT 1
97609: DEC
97610: ST_TO_ADDR
97611: LD_EXP 181
97615: PUSH
97616: LD_VAR 0 1
97620: ARRAY
97621: PUSH
97622: FOR_TO
97623: IFFALSE 98273
// begin temp = [ ] ;
97625: LD_ADDR_VAR 0 4
97629: PUSH
97630: EMPTY
97631: ST_TO_ADDR
// if not IsOk ( mb_evacuating_units [ i ] [ j ] ) then
97632: LD_EXP 181
97636: PUSH
97637: LD_VAR 0 1
97641: ARRAY
97642: PUSH
97643: LD_VAR 0 2
97647: ARRAY
97648: PPUSH
97649: CALL_OW 302
97653: NOT
97654: IFFALSE 97707
// begin mb_evacuating_units = Replace ( mb_evacuating_units , i , mb_evacuating_units [ i ] diff mb_evacuating_units [ i ] [ j ] ) ;
97656: LD_ADDR_EXP 181
97660: PUSH
97661: LD_EXP 181
97665: PPUSH
97666: LD_VAR 0 1
97670: PPUSH
97671: LD_EXP 181
97675: PUSH
97676: LD_VAR 0 1
97680: ARRAY
97681: PUSH
97682: LD_EXP 181
97686: PUSH
97687: LD_VAR 0 1
97691: ARRAY
97692: PUSH
97693: LD_VAR 0 2
97697: ARRAY
97698: DIFF
97699: PPUSH
97700: CALL_OW 1
97704: ST_TO_ADDR
// break ;
97705: GO 98273
// end ; for k in mb_evacuating_path [ i ] do
97707: LD_ADDR_VAR 0 3
97711: PUSH
97712: LD_EXP 182
97716: PUSH
97717: LD_VAR 0 1
97721: ARRAY
97722: PUSH
97723: FOR_IN
97724: IFFALSE 97777
// if k [ 2 ] - 5 > GetY ( mb_evacuating_units [ i ] [ j ] ) then
97726: LD_VAR 0 3
97730: PUSH
97731: LD_INT 2
97733: ARRAY
97734: PUSH
97735: LD_INT 5
97737: MINUS
97738: PUSH
97739: LD_EXP 181
97743: PUSH
97744: LD_VAR 0 1
97748: ARRAY
97749: PUSH
97750: LD_VAR 0 2
97754: ARRAY
97755: PPUSH
97756: CALL_OW 251
97760: GREATER
97761: IFFALSE 97775
// begin temp = k ;
97763: LD_ADDR_VAR 0 4
97767: PUSH
97768: LD_VAR 0 3
97772: ST_TO_ADDR
// break ;
97773: GO 97777
// end ;
97775: GO 97723
97777: POP
97778: POP
// if temp > 0 then
97779: LD_VAR 0 4
97783: PUSH
97784: LD_INT 0
97786: GREATER
97787: IFFALSE 97830
// ComMoveXY ( mb_evacuating_units [ i ] [ j ] , temp [ 1 ] , temp [ 2 ] ) else
97789: LD_EXP 181
97793: PUSH
97794: LD_VAR 0 1
97798: ARRAY
97799: PUSH
97800: LD_VAR 0 2
97804: ARRAY
97805: PPUSH
97806: LD_VAR 0 4
97810: PUSH
97811: LD_INT 1
97813: ARRAY
97814: PPUSH
97815: LD_VAR 0 4
97819: PUSH
97820: LD_INT 2
97822: ARRAY
97823: PPUSH
97824: CALL_OW 111
97828: GO 98271
// begin if GetType ( mb_evacuating_units [ i ] [ j ] ) = unit_vehicle then
97830: LD_EXP 181
97834: PUSH
97835: LD_VAR 0 1
97839: ARRAY
97840: PUSH
97841: LD_VAR 0 2
97845: ARRAY
97846: PPUSH
97847: CALL_OW 247
97851: PUSH
97852: LD_INT 2
97854: EQUAL
97855: IFFALSE 97920
// ai_vehicles_defend = Replace ( ai_vehicles_defend , mb_evacuating_base [ i ] , ai_vehicles_defend [ mb_evacuating_base [ i ] ] ^ mb_evacuating_units [ i ] [ j ] ) else
97857: LD_ADDR_EXP 77
97861: PUSH
97862: LD_EXP 77
97866: PPUSH
97867: LD_EXP 180
97871: PUSH
97872: LD_VAR 0 1
97876: ARRAY
97877: PPUSH
97878: LD_EXP 77
97882: PUSH
97883: LD_EXP 180
97887: PUSH
97888: LD_VAR 0 1
97892: ARRAY
97893: ARRAY
97894: PUSH
97895: LD_EXP 181
97899: PUSH
97900: LD_VAR 0 1
97904: ARRAY
97905: PUSH
97906: LD_VAR 0 2
97910: ARRAY
97911: ADD
97912: PPUSH
97913: CALL_OW 1
97917: ST_TO_ADDR
97918: GO 98220
// case GetClass ( mb_evacuating_units [ i ] [ j ] ) of class_engineer :
97920: LD_EXP 181
97924: PUSH
97925: LD_VAR 0 1
97929: ARRAY
97930: PUSH
97931: LD_VAR 0 2
97935: ARRAY
97936: PPUSH
97937: CALL_OW 257
97941: PUSH
97942: LD_INT 2
97944: DOUBLE
97945: EQUAL
97946: IFTRUE 97950
97948: GO 98014
97950: POP
// ai_engineers = Replace ( ai_engineers , mb_evacuating_base [ i ] , ai_engineers [ mb_evacuating_base [ i ] ] ^ mb_evacuating_units [ i ] [ j ] ) ; class_mechanic :
97951: LD_ADDR_EXP 52
97955: PUSH
97956: LD_EXP 52
97960: PPUSH
97961: LD_EXP 180
97965: PUSH
97966: LD_VAR 0 1
97970: ARRAY
97971: PPUSH
97972: LD_EXP 52
97976: PUSH
97977: LD_EXP 180
97981: PUSH
97982: LD_VAR 0 1
97986: ARRAY
97987: ARRAY
97988: PUSH
97989: LD_EXP 181
97993: PUSH
97994: LD_VAR 0 1
97998: ARRAY
97999: PUSH
98000: LD_VAR 0 2
98004: ARRAY
98005: ADD
98006: PPUSH
98007: CALL_OW 1
98011: ST_TO_ADDR
98012: GO 98220
98014: LD_INT 3
98016: DOUBLE
98017: EQUAL
98018: IFTRUE 98022
98020: GO 98086
98022: POP
// ai_mechanics_defend = Replace ( ai_mechanics_defend , mb_evacuating_base [ i ] , ai_mechanics_defend [ mb_evacuating_base [ i ] ] ^ mb_evacuating_units [ i ] [ j ] ) ; class_scientistic :
98023: LD_ADDR_EXP 53
98027: PUSH
98028: LD_EXP 53
98032: PPUSH
98033: LD_EXP 180
98037: PUSH
98038: LD_VAR 0 1
98042: ARRAY
98043: PPUSH
98044: LD_EXP 53
98048: PUSH
98049: LD_EXP 180
98053: PUSH
98054: LD_VAR 0 1
98058: ARRAY
98059: ARRAY
98060: PUSH
98061: LD_EXP 181
98065: PUSH
98066: LD_VAR 0 1
98070: ARRAY
98071: PUSH
98072: LD_VAR 0 2
98076: ARRAY
98077: ADD
98078: PPUSH
98079: CALL_OW 1
98083: ST_TO_ADDR
98084: GO 98220
98086: LD_INT 4
98088: DOUBLE
98089: EQUAL
98090: IFTRUE 98094
98092: GO 98158
98094: POP
// ai_scientists = Replace ( ai_scientists , mb_evacuating_base [ i ] , ai_scientists [ mb_evacuating_base [ i ] ] ^ mb_evacuating_units [ i ] [ j ] ) ; else
98095: LD_ADDR_EXP 55
98099: PUSH
98100: LD_EXP 55
98104: PPUSH
98105: LD_EXP 180
98109: PUSH
98110: LD_VAR 0 1
98114: ARRAY
98115: PPUSH
98116: LD_EXP 55
98120: PUSH
98121: LD_EXP 180
98125: PUSH
98126: LD_VAR 0 1
98130: ARRAY
98131: ARRAY
98132: PUSH
98133: LD_EXP 181
98137: PUSH
98138: LD_VAR 0 1
98142: ARRAY
98143: PUSH
98144: LD_VAR 0 2
98148: ARRAY
98149: ADD
98150: PPUSH
98151: CALL_OW 1
98155: ST_TO_ADDR
98156: GO 98220
98158: POP
// ai_soldiers = Replace ( ai_soldiers , mb_evacuating_base [ i ] , ai_soldiers [ mb_evacuating_base [ i ] ] ^ mb_evacuating_units [ i ] [ j ] ) ; end ;
98159: LD_ADDR_EXP 50
98163: PUSH
98164: LD_EXP 50
98168: PPUSH
98169: LD_EXP 180
98173: PUSH
98174: LD_VAR 0 1
98178: ARRAY
98179: PPUSH
98180: LD_EXP 50
98184: PUSH
98185: LD_EXP 180
98189: PUSH
98190: LD_VAR 0 1
98194: ARRAY
98195: ARRAY
98196: PUSH
98197: LD_EXP 181
98201: PUSH
98202: LD_VAR 0 1
98206: ARRAY
98207: PUSH
98208: LD_VAR 0 2
98212: ARRAY
98213: ADD
98214: PPUSH
98215: CALL_OW 1
98219: ST_TO_ADDR
// mb_evacuating_units = Replace ( mb_evacuating_units , i , mb_evacuating_units [ i ] diff mb_evacuating_units [ i ] [ j ] ) ;
98220: LD_ADDR_EXP 181
98224: PUSH
98225: LD_EXP 181
98229: PPUSH
98230: LD_VAR 0 1
98234: PPUSH
98235: LD_EXP 181
98239: PUSH
98240: LD_VAR 0 1
98244: ARRAY
98245: PUSH
98246: LD_EXP 181
98250: PUSH
98251: LD_VAR 0 1
98255: ARRAY
98256: PUSH
98257: LD_VAR 0 2
98261: ARRAY
98262: DIFF
98263: PPUSH
98264: CALL_OW 1
98268: ST_TO_ADDR
// break ;
98269: GO 98273
// end ; end ;
98271: GO 97622
98273: POP
98274: POP
// if mb_evacuating_units [ i ] = 0 then
98275: LD_EXP 181
98279: PUSH
98280: LD_VAR 0 1
98284: ARRAY
98285: PUSH
98286: LD_INT 0
98288: EQUAL
98289: IFFALSE 98353
// begin mb_evacuating_base = delete ( mb_evacuating_base , i ) ;
98291: LD_ADDR_EXP 180
98295: PUSH
98296: LD_EXP 180
98300: PPUSH
98301: LD_VAR 0 1
98305: PPUSH
98306: CALL_OW 3
98310: ST_TO_ADDR
// mb_evacuating_units = delete ( mb_evacuating_units , i ) ;
98311: LD_ADDR_EXP 181
98315: PUSH
98316: LD_EXP 181
98320: PPUSH
98321: LD_VAR 0 1
98325: PPUSH
98326: CALL_OW 3
98330: ST_TO_ADDR
// mb_evacuating_path = delete ( mb_evacuating_path , i ) ;
98331: LD_ADDR_EXP 182
98335: PUSH
98336: LD_EXP 182
98340: PPUSH
98341: LD_VAR 0 1
98345: PPUSH
98346: CALL_OW 3
98350: ST_TO_ADDR
// break ;
98351: GO 98355
// end ; end ;
98353: GO 97598
98355: POP
98356: POP
// enable ;
98357: ENABLE
// end ; end_of_file
98358: PPOPN 4
98360: END
// every 0 0$1 do var base , i , j , val , time , temp , base_list ;
98361: GO 98363
98363: DISABLE
98364: LD_INT 0
98366: PPUSH
98367: PPUSH
98368: PPUSH
98369: PPUSH
98370: PPUSH
98371: PPUSH
98372: PPUSH
// begin Randomize ;
98373: CALL_OW 10
// temp = 0 ;
98377: LD_ADDR_VAR 0 6
98381: PUSH
98382: LD_INT 0
98384: ST_TO_ADDR
// if 1 in ai_bases then
98385: LD_INT 1
98387: PUSH
98388: LD_EXP 49
98392: IN
98393: IFFALSE 98441
// for i in ai_patrol [ 1 ] do
98395: LD_ADDR_VAR 0 2
98399: PUSH
98400: LD_EXP 183
98404: PUSH
98405: LD_INT 1
98407: ARRAY
98408: PUSH
98409: FOR_IN
98410: IFFALSE 98439
// if IsDead ( i ) then
98412: LD_VAR 0 2
98416: PPUSH
98417: CALL_OW 301
98421: IFFALSE 98437
// temp = temp + 1 ;
98423: LD_ADDR_VAR 0 6
98427: PUSH
98428: LD_VAR 0 6
98432: PUSH
98433: LD_INT 1
98435: PLUS
98436: ST_TO_ADDR
98437: GO 98409
98439: POP
98440: POP
// if temp >= 4 and ai_patrol_status [ 1 ] > 0 then
98441: LD_VAR 0 6
98445: PUSH
98446: LD_INT 4
98448: GREATEREQUAL
98449: PUSH
98450: LD_EXP 190
98454: PUSH
98455: LD_INT 1
98457: ARRAY
98458: PUSH
98459: LD_INT 0
98461: GREATER
98462: AND
98463: IFFALSE 98525
// begin ai_patrol_respawntime = Replace ( ai_patrol_respawntime , 1 , [ 6 6$30 , 5 5$0 , 3 3$30 ] [ difficulty ] ) ;
98465: LD_ADDR_EXP 185
98469: PUSH
98470: LD_EXP 185
98474: PPUSH
98475: LD_INT 1
98477: PPUSH
98478: LD_INT 13650
98480: PUSH
98481: LD_INT 10500
98483: PUSH
98484: LD_INT 7350
98486: PUSH
98487: EMPTY
98488: LIST
98489: LIST
98490: LIST
98491: PUSH
98492: LD_OWVAR 67
98496: ARRAY
98497: PPUSH
98498: CALL_OW 1
98502: ST_TO_ADDR
// ai_patrol_status = Replace ( ai_patrol_status , 1 , - 1 ) ;
98503: LD_ADDR_EXP 190
98507: PUSH
98508: LD_EXP 190
98512: PPUSH
98513: LD_INT 1
98515: PPUSH
98516: LD_INT 1
98518: NEG
98519: PPUSH
98520: CALL_OW 1
98524: ST_TO_ADDR
// end ; temp = 0 ;
98525: LD_ADDR_VAR 0 6
98529: PUSH
98530: LD_INT 0
98532: ST_TO_ADDR
// if 2 in ai_bases then
98533: LD_INT 2
98535: PUSH
98536: LD_EXP 49
98540: IN
98541: IFFALSE 98589
// for i in ai_patrol [ 2 ] do
98543: LD_ADDR_VAR 0 2
98547: PUSH
98548: LD_EXP 183
98552: PUSH
98553: LD_INT 2
98555: ARRAY
98556: PUSH
98557: FOR_IN
98558: IFFALSE 98587
// if IsDead ( i ) then
98560: LD_VAR 0 2
98564: PPUSH
98565: CALL_OW 301
98569: IFFALSE 98585
// temp = temp + 1 ;
98571: LD_ADDR_VAR 0 6
98575: PUSH
98576: LD_VAR 0 6
98580: PUSH
98581: LD_INT 1
98583: PLUS
98584: ST_TO_ADDR
98585: GO 98557
98587: POP
98588: POP
// if temp >= 4 and ai_patrol_status [ 2 ] > 0 then
98589: LD_VAR 0 6
98593: PUSH
98594: LD_INT 4
98596: GREATEREQUAL
98597: PUSH
98598: LD_EXP 190
98602: PUSH
98603: LD_INT 2
98605: ARRAY
98606: PUSH
98607: LD_INT 0
98609: GREATER
98610: AND
98611: IFFALSE 98673
// begin ai_patrol_respawntime = Replace ( ai_patrol_respawntime , 2 , [ 6 6$30 , 5 5$0 , 3 3$30 ] [ difficulty ] ) ;
98613: LD_ADDR_EXP 185
98617: PUSH
98618: LD_EXP 185
98622: PPUSH
98623: LD_INT 2
98625: PPUSH
98626: LD_INT 13650
98628: PUSH
98629: LD_INT 10500
98631: PUSH
98632: LD_INT 7350
98634: PUSH
98635: EMPTY
98636: LIST
98637: LIST
98638: LIST
98639: PUSH
98640: LD_OWVAR 67
98644: ARRAY
98645: PPUSH
98646: CALL_OW 1
98650: ST_TO_ADDR
// ai_patrol_status = Replace ( ai_patrol_status , 2 , - 1 ) ;
98651: LD_ADDR_EXP 190
98655: PUSH
98656: LD_EXP 190
98660: PPUSH
98661: LD_INT 2
98663: PPUSH
98664: LD_INT 1
98666: NEG
98667: PPUSH
98668: CALL_OW 1
98672: ST_TO_ADDR
// end ; ai_patrol_respawntime = [ ai_patrol_respawntime [ 1 ] - 0 0$1 , ai_patrol_respawntime [ 2 ] - 0 0$1 ] ;
98673: LD_ADDR_EXP 185
98677: PUSH
98678: LD_EXP 185
98682: PUSH
98683: LD_INT 1
98685: ARRAY
98686: PUSH
98687: LD_INT 35
98689: MINUS
98690: PUSH
98691: LD_EXP 185
98695: PUSH
98696: LD_INT 2
98698: ARRAY
98699: PUSH
98700: LD_INT 35
98702: MINUS
98703: PUSH
98704: EMPTY
98705: LIST
98706: LIST
98707: ST_TO_ADDR
// base_list = [ ] ;
98708: LD_ADDR_VAR 0 7
98712: PUSH
98713: EMPTY
98714: ST_TO_ADDR
// if 1 in ai_bases and ai_patrol_respawntime [ 1 ] <= 0 then
98715: LD_INT 1
98717: PUSH
98718: LD_EXP 49
98722: IN
98723: PUSH
98724: LD_EXP 185
98728: PUSH
98729: LD_INT 1
98731: ARRAY
98732: PUSH
98733: LD_INT 0
98735: LESSEQUAL
98736: AND
98737: IFFALSE 98753
// base_list = base_list ^ 1 ;
98739: LD_ADDR_VAR 0 7
98743: PUSH
98744: LD_VAR 0 7
98748: PUSH
98749: LD_INT 1
98751: ADD
98752: ST_TO_ADDR
// if 3 in ai_bases and ai_patrol_respawntime [ 2 ] <= 0 then
98753: LD_INT 3
98755: PUSH
98756: LD_EXP 49
98760: IN
98761: PUSH
98762: LD_EXP 185
98766: PUSH
98767: LD_INT 2
98769: ARRAY
98770: PUSH
98771: LD_INT 0
98773: LESSEQUAL
98774: AND
98775: IFFALSE 98791
// base_list = base_list ^ 2 ;
98777: LD_ADDR_VAR 0 7
98781: PUSH
98782: LD_VAR 0 7
98786: PUSH
98787: LD_INT 2
98789: ADD
98790: ST_TO_ADDR
// if not 1 in ai_bases and not 3 in ai_bases then
98791: LD_INT 1
98793: PUSH
98794: LD_EXP 49
98798: IN
98799: NOT
98800: PUSH
98801: LD_INT 3
98803: PUSH
98804: LD_EXP 49
98808: IN
98809: NOT
98810: AND
98811: IFFALSE 98815
// exit ;
98813: GO 100109
// for base in base_list do
98815: LD_ADDR_VAR 0 1
98819: PUSH
98820: LD_VAR 0 7
98824: PUSH
98825: FOR_IN
98826: IFFALSE 99081
// begin if base in ai_patrol_out then
98828: LD_VAR 0 1
98832: PUSH
98833: LD_EXP 187
98837: IN
98838: IFFALSE 98842
// continue ;
98840: GO 98825
// val = 0 ;
98842: LD_ADDR_VAR 0 4
98846: PUSH
98847: LD_INT 0
98849: ST_TO_ADDR
// for i in ai_patrol [ base ] do
98850: LD_ADDR_VAR 0 2
98854: PUSH
98855: LD_EXP 183
98859: PUSH
98860: LD_VAR 0 1
98864: ARRAY
98865: PUSH
98866: FOR_IN
98867: IFFALSE 98894
// if GetLives ( i ) <= 250 then
98869: LD_VAR 0 2
98873: PPUSH
98874: CALL_OW 256
98878: PUSH
98879: LD_INT 250
98881: LESSEQUAL
98882: IFFALSE 98892
// val = 1 ;
98884: LD_ADDR_VAR 0 4
98888: PUSH
98889: LD_INT 1
98891: ST_TO_ADDR
98892: GO 98866
98894: POP
98895: POP
// if val = 0 then
98896: LD_VAR 0 4
98900: PUSH
98901: LD_INT 0
98903: EQUAL
98904: IFFALSE 98947
// begin if ai_patrol_status [ base ] = 0 then
98906: LD_EXP 190
98910: PUSH
98911: LD_VAR 0 1
98915: ARRAY
98916: PUSH
98917: LD_INT 0
98919: EQUAL
98920: IFFALSE 98945
// ai_patrol_status = Replace ( ai_patrol_status , base , 1 ) ;
98922: LD_ADDR_EXP 190
98926: PUSH
98927: LD_EXP 190
98931: PPUSH
98932: LD_VAR 0 1
98936: PPUSH
98937: LD_INT 1
98939: PPUSH
98940: CALL_OW 1
98944: ST_TO_ADDR
// end else
98945: GO 99079
// begin if ai_patrol_status [ base ] > 0 then
98947: LD_EXP 190
98951: PUSH
98952: LD_VAR 0 1
98956: ARRAY
98957: PUSH
98958: LD_INT 0
98960: GREATER
98961: IFFALSE 98986
// ai_patrol_timer = Replace ( ai_patrol_timer , base , 3 3$0 ) ;
98963: LD_ADDR_EXP 184
98967: PUSH
98968: LD_EXP 184
98972: PPUSH
98973: LD_VAR 0 1
98977: PPUSH
98978: LD_INT 6300
98980: PPUSH
98981: CALL_OW 1
98985: ST_TO_ADDR
// if ai_patrol_status [ base ] = - 1 then
98986: LD_EXP 190
98990: PUSH
98991: LD_VAR 0 1
98995: ARRAY
98996: PUSH
98997: LD_INT 1
98999: NEG
99000: EQUAL
99001: IFFALSE 99033
// ai_patrol_weapons = Replace ( ai_patrol_weapons , base , WeaponsForPatrol ( base ) ) ;
99003: LD_ADDR_EXP 186
99007: PUSH
99008: LD_EXP 186
99012: PPUSH
99013: LD_VAR 0 1
99017: PPUSH
99018: LD_VAR 0 1
99022: PPUSH
99023: CALL 34012 0 1
99027: PPUSH
99028: CALL_OW 1
99032: ST_TO_ADDR
// ai_patrol_status = Replace ( ai_patrol_status , base , 0 ) ;
99033: LD_ADDR_EXP 190
99037: PUSH
99038: LD_EXP 190
99042: PPUSH
99043: LD_VAR 0 1
99047: PPUSH
99048: LD_INT 0
99050: PPUSH
99051: CALL_OW 1
99055: ST_TO_ADDR
// ai_patrol_PathChoice = Replace ( ai_patrol_PathChoice , base , 1 ) ;
99056: LD_ADDR_EXP 192
99060: PUSH
99061: LD_EXP 192
99065: PPUSH
99066: LD_VAR 0 1
99070: PPUSH
99071: LD_INT 1
99073: PPUSH
99074: CALL_OW 1
99078: ST_TO_ADDR
// end ; end ;
99079: GO 98825
99081: POP
99082: POP
// for base in base_list do
99083: LD_ADDR_VAR 0 1
99087: PUSH
99088: LD_VAR 0 7
99092: PUSH
99093: FOR_IN
99094: IFFALSE 100106
// if ai_patrol_status [ base ] > 0 and not ( base in ai_patrol_out ) then
99096: LD_EXP 190
99100: PUSH
99101: LD_VAR 0 1
99105: ARRAY
99106: PUSH
99107: LD_INT 0
99109: GREATER
99110: PUSH
99111: LD_VAR 0 1
99115: PUSH
99116: LD_EXP 187
99120: IN
99121: NOT
99122: AND
99123: IFFALSE 100104
// begin if ( ai_patrol [ base ] diff 0 ^ - 1 ) > 2 then
99125: LD_EXP 183
99129: PUSH
99130: LD_VAR 0 1
99134: ARRAY
99135: PUSH
99136: LD_INT 0
99138: PUSH
99139: LD_INT 1
99141: NEG
99142: ADD
99143: DIFF
99144: PUSH
99145: LD_INT 2
99147: GREATER
99148: IFFALSE 99517
// if BaseUnderAttack ( [ 1 , 3 ] [ base ] , 2 ) then
99150: LD_INT 1
99152: PUSH
99153: LD_INT 3
99155: PUSH
99156: EMPTY
99157: LIST
99158: LIST
99159: PUSH
99160: LD_VAR 0 1
99164: ARRAY
99165: PPUSH
99166: LD_INT 2
99168: PPUSH
99169: CALL 55912 0 2
99173: IFFALSE 99284
// begin ai_patrol_out = ai_patrol_out ^ base ;
99175: LD_ADDR_EXP 187
99179: PUSH
99180: LD_EXP 187
99184: PUSH
99185: LD_VAR 0 1
99189: ADD
99190: ST_TO_ADDR
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , base , 1 ) ;
99191: LD_ADDR_EXP 189
99195: PUSH
99196: LD_EXP 189
99200: PPUSH
99201: LD_VAR 0 1
99205: PPUSH
99206: LD_INT 1
99208: PPUSH
99209: CALL_OW 1
99213: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , base , 3 3$0 ) ;
99214: LD_ADDR_EXP 184
99218: PUSH
99219: LD_EXP 184
99223: PPUSH
99224: LD_VAR 0 1
99228: PPUSH
99229: LD_INT 6300
99231: PPUSH
99232: CALL_OW 1
99236: ST_TO_ADDR
// ai_patrol_path = Replace ( ai_patrol_path , base , [ ] ) ;
99237: LD_ADDR_EXP 188
99241: PUSH
99242: LD_EXP 188
99246: PPUSH
99247: LD_VAR 0 1
99251: PPUSH
99252: EMPTY
99253: PPUSH
99254: CALL_OW 1
99258: ST_TO_ADDR
// ai_patrol_PathChoice = Replace ( ai_patrol_PathChoice , base , 5 ) ;
99259: LD_ADDR_EXP 192
99263: PUSH
99264: LD_EXP 192
99268: PPUSH
99269: LD_VAR 0 1
99273: PPUSH
99274: LD_INT 5
99276: PPUSH
99277: CALL_OW 1
99281: ST_TO_ADDR
// end else
99282: GO 99517
// if GameStage > 0 then
99284: LD_EXP 237
99288: PUSH
99289: LD_INT 0
99291: GREATER
99292: IFFALSE 99517
// begin i = [ 1 , 3 ] [ base ] ;
99294: LD_ADDR_VAR 0 2
99298: PUSH
99299: LD_INT 1
99301: PUSH
99302: LD_INT 3
99304: PUSH
99305: EMPTY
99306: LIST
99307: LIST
99308: PUSH
99309: LD_VAR 0 1
99313: ARRAY
99314: ST_TO_ADDR
// temp = 0 ;
99315: LD_ADDR_VAR 0 6
99319: PUSH
99320: LD_INT 0
99322: ST_TO_ADDR
// for j in mb_buildings [ i ] do
99323: LD_ADDR_VAR 0 3
99327: PUSH
99328: LD_EXP 161
99332: PUSH
99333: LD_VAR 0 2
99337: ARRAY
99338: PUSH
99339: FOR_IN
99340: IFFALSE 99373
// if GetLives ( j ) < 500 then
99342: LD_VAR 0 3
99346: PPUSH
99347: CALL_OW 256
99351: PUSH
99352: LD_INT 500
99354: LESS
99355: IFFALSE 99371
// temp = temp + 1 ;
99357: LD_ADDR_VAR 0 6
99361: PUSH
99362: LD_VAR 0 6
99366: PUSH
99367: LD_INT 1
99369: PLUS
99370: ST_TO_ADDR
99371: GO 99339
99373: POP
99374: POP
// if temp + mb_to_build_list [ i ] > 2 then
99375: LD_VAR 0 6
99379: PUSH
99380: LD_EXP 173
99384: PUSH
99385: LD_VAR 0 2
99389: ARRAY
99390: PLUS
99391: PUSH
99392: LD_INT 2
99394: GREATER
99395: IFFALSE 99517
// begin ai_patrol_out = ai_patrol_out ^ base ;
99397: LD_ADDR_EXP 187
99401: PUSH
99402: LD_EXP 187
99406: PUSH
99407: LD_VAR 0 1
99411: ADD
99412: ST_TO_ADDR
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , base , 1 ) ;
99413: LD_ADDR_EXP 189
99417: PUSH
99418: LD_EXP 189
99422: PPUSH
99423: LD_VAR 0 1
99427: PPUSH
99428: LD_INT 1
99430: PPUSH
99431: CALL_OW 1
99435: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , base , 3 3$0 ) ;
99436: LD_ADDR_EXP 184
99440: PUSH
99441: LD_EXP 184
99445: PPUSH
99446: LD_VAR 0 1
99450: PPUSH
99451: LD_INT 6300
99453: PPUSH
99454: CALL_OW 1
99458: ST_TO_ADDR
// ai_patrol_path = Replace ( ai_patrol_path , base , possible_paths [ base ] [ 1 ] ) ;
99459: LD_ADDR_EXP 188
99463: PUSH
99464: LD_EXP 188
99468: PPUSH
99469: LD_VAR 0 1
99473: PPUSH
99474: LD_EXP 193
99478: PUSH
99479: LD_VAR 0 1
99483: ARRAY
99484: PUSH
99485: LD_INT 1
99487: ARRAY
99488: PPUSH
99489: CALL_OW 1
99493: ST_TO_ADDR
// ai_patrol_PathChoice = Replace ( ai_patrol_PathChoice , base , 1 ) ;
99494: LD_ADDR_EXP 192
99498: PUSH
99499: LD_EXP 192
99503: PPUSH
99504: LD_VAR 0 1
99508: PPUSH
99509: LD_INT 1
99511: PPUSH
99512: CALL_OW 1
99516: ST_TO_ADDR
// end ; end ; time = ai_patrol_timer [ base ] - 0 0$1 ;
99517: LD_ADDR_VAR 0 5
99521: PUSH
99522: LD_EXP 184
99526: PUSH
99527: LD_VAR 0 1
99531: ARRAY
99532: PUSH
99533: LD_INT 35
99535: MINUS
99536: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , base , time ) ;
99537: LD_ADDR_EXP 184
99541: PUSH
99542: LD_EXP 184
99546: PPUSH
99547: LD_VAR 0 1
99551: PPUSH
99552: LD_VAR 0 5
99556: PPUSH
99557: CALL_OW 1
99561: ST_TO_ADDR
// if ai_patrol_timer [ base ] <= 0 then
99562: LD_EXP 184
99566: PUSH
99567: LD_VAR 0 1
99571: ARRAY
99572: PUSH
99573: LD_INT 0
99575: LESSEQUAL
99576: IFFALSE 99613
// ai_patrol_status = Replace ( ai_patrol_status , base , ai_patrol_status [ base ] + 1 ) ;
99578: LD_ADDR_EXP 190
99582: PUSH
99583: LD_EXP 190
99587: PPUSH
99588: LD_VAR 0 1
99592: PPUSH
99593: LD_EXP 190
99597: PUSH
99598: LD_VAR 0 1
99602: ARRAY
99603: PUSH
99604: LD_INT 1
99606: PLUS
99607: PPUSH
99608: CALL_OW 1
99612: ST_TO_ADDR
// if ai_patrol_timer [ base ] <= 0 and ai_patrol_status [ base ] = 2 then
99613: LD_EXP 184
99617: PUSH
99618: LD_VAR 0 1
99622: ARRAY
99623: PUSH
99624: LD_INT 0
99626: LESSEQUAL
99627: PUSH
99628: LD_EXP 190
99632: PUSH
99633: LD_VAR 0 1
99637: ARRAY
99638: PUSH
99639: LD_INT 2
99641: EQUAL
99642: AND
99643: IFFALSE 99937
// begin case GameStage of 0 :
99645: LD_EXP 237
99649: PUSH
99650: LD_INT 0
99652: DOUBLE
99653: EQUAL
99654: IFTRUE 99658
99656: GO 99709
99658: POP
// begin ai_patrol_timer = Replace ( ai_patrol_timer , base , 3 3$0 ) ;
99659: LD_ADDR_EXP 184
99663: PUSH
99664: LD_EXP 184
99668: PPUSH
99669: LD_VAR 0 1
99673: PPUSH
99674: LD_INT 6300
99676: PPUSH
99677: CALL_OW 1
99681: ST_TO_ADDR
// ai_patrol_status = Replace ( ai_patrol_status , base , 1 ) ;
99682: LD_ADDR_EXP 190
99686: PUSH
99687: LD_EXP 190
99691: PPUSH
99692: LD_VAR 0 1
99696: PPUSH
99697: LD_INT 1
99699: PPUSH
99700: CALL_OW 1
99704: ST_TO_ADDR
// break ;
99705: GO 100106
// end ; 1 :
99707: GO 99793
99709: LD_INT 1
99711: DOUBLE
99712: EQUAL
99713: IFTRUE 99717
99715: GO 99758
99717: POP
// begin if base = 1 then
99718: LD_VAR 0 1
99722: PUSH
99723: LD_INT 1
99725: EQUAL
99726: IFFALSE 99745
// temp = [ 1 , 2 ] else
99728: LD_ADDR_VAR 0 6
99732: PUSH
99733: LD_INT 1
99735: PUSH
99736: LD_INT 2
99738: PUSH
99739: EMPTY
99740: LIST
99741: LIST
99742: ST_TO_ADDR
99743: GO 99756
// temp = [ 1 ] ;
99745: LD_ADDR_VAR 0 6
99749: PUSH
99750: LD_INT 1
99752: PUSH
99753: EMPTY
99754: LIST
99755: ST_TO_ADDR
// end ; 2 :
99756: GO 99793
99758: LD_INT 2
99760: DOUBLE
99761: EQUAL
99762: IFTRUE 99766
99764: GO 99792
99766: POP
// temp = [ 2 , 3 , 3 , 4 ] ; end ;
99767: LD_ADDR_VAR 0 6
99771: PUSH
99772: LD_INT 2
99774: PUSH
99775: LD_INT 3
99777: PUSH
99778: LD_INT 3
99780: PUSH
99781: LD_INT 4
99783: PUSH
99784: EMPTY
99785: LIST
99786: LIST
99787: LIST
99788: LIST
99789: ST_TO_ADDR
99790: GO 99793
99792: POP
// i = temp [ rand ( 1 , temp ) ] ;
99793: LD_ADDR_VAR 0 2
99797: PUSH
99798: LD_VAR 0 6
99802: PUSH
99803: LD_INT 1
99805: PPUSH
99806: LD_VAR 0 6
99810: PPUSH
99811: CALL_OW 12
99815: ARRAY
99816: ST_TO_ADDR
// ai_patrol_PathChoice = Replace ( ai_patrol_PathChoice , base , i ) ;
99817: LD_ADDR_EXP 192
99821: PUSH
99822: LD_EXP 192
99826: PPUSH
99827: LD_VAR 0 1
99831: PPUSH
99832: LD_VAR 0 2
99836: PPUSH
99837: CALL_OW 1
99841: ST_TO_ADDR
// if base = 1 then
99842: LD_VAR 0 1
99846: PUSH
99847: LD_INT 1
99849: EQUAL
99850: IFFALSE 99883
// val = [ 1 1$0 , 1 1$0 , 2 2$0 , 3 3$0 ] [ i ] else
99852: LD_ADDR_VAR 0 4
99856: PUSH
99857: LD_INT 2100
99859: PUSH
99860: LD_INT 2100
99862: PUSH
99863: LD_INT 4200
99865: PUSH
99866: LD_INT 6300
99868: PUSH
99869: EMPTY
99870: LIST
99871: LIST
99872: LIST
99873: LIST
99874: PUSH
99875: LD_VAR 0 2
99879: ARRAY
99880: ST_TO_ADDR
99881: GO 99912
// val = [ 1 1$0 , 2 2$0 , 3 3$0 , 3 3$0 ] [ i ] ;
99883: LD_ADDR_VAR 0 4
99887: PUSH
99888: LD_INT 2100
99890: PUSH
99891: LD_INT 4200
99893: PUSH
99894: LD_INT 6300
99896: PUSH
99897: LD_INT 6300
99899: PUSH
99900: EMPTY
99901: LIST
99902: LIST
99903: LIST
99904: LIST
99905: PUSH
99906: LD_VAR 0 2
99910: ARRAY
99911: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , base , val ) ;
99912: LD_ADDR_EXP 184
99916: PUSH
99917: LD_EXP 184
99921: PPUSH
99922: LD_VAR 0 1
99926: PPUSH
99927: LD_VAR 0 4
99931: PPUSH
99932: CALL_OW 1
99936: ST_TO_ADDR
// end ; if ai_patrol_status [ base ] = 3 then
99937: LD_EXP 190
99941: PUSH
99942: LD_VAR 0 1
99946: ARRAY
99947: PUSH
99948: LD_INT 3
99950: EQUAL
99951: IFFALSE 100104
// begin ai_patrol_out = ai_patrol_out ^ base ;
99953: LD_ADDR_EXP 187
99957: PUSH
99958: LD_EXP 187
99962: PUSH
99963: LD_VAR 0 1
99967: ADD
99968: ST_TO_ADDR
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , base , 1 ) ;
99969: LD_ADDR_EXP 189
99973: PUSH
99974: LD_EXP 189
99978: PPUSH
99979: LD_VAR 0 1
99983: PPUSH
99984: LD_INT 1
99986: PPUSH
99987: CALL_OW 1
99991: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , base , 3 3$0 ) ;
99992: LD_ADDR_EXP 184
99996: PUSH
99997: LD_EXP 184
100001: PPUSH
100002: LD_VAR 0 1
100006: PPUSH
100007: LD_INT 6300
100009: PPUSH
100010: CALL_OW 1
100014: ST_TO_ADDR
// ai_patrol_status = Replace ( ai_patrol_status , base , 0 ) ;
100015: LD_ADDR_EXP 190
100019: PUSH
100020: LD_EXP 190
100024: PPUSH
100025: LD_VAR 0 1
100029: PPUSH
100030: LD_INT 0
100032: PPUSH
100033: CALL_OW 1
100037: ST_TO_ADDR
// ai_patrol_path = Replace ( ai_patrol_path , base , possible_paths [ base ] [ ai_patrol_PathChoice [ base ] ] ) ;
100038: LD_ADDR_EXP 188
100042: PUSH
100043: LD_EXP 188
100047: PPUSH
100048: LD_VAR 0 1
100052: PPUSH
100053: LD_EXP 193
100057: PUSH
100058: LD_VAR 0 1
100062: ARRAY
100063: PUSH
100064: LD_EXP 192
100068: PUSH
100069: LD_VAR 0 1
100073: ARRAY
100074: ARRAY
100075: PPUSH
100076: CALL_OW 1
100080: ST_TO_ADDR
// ai_patrol_PathChoice = Replace ( ai_patrol_PathChoice , base , 1 ) ;
100081: LD_ADDR_EXP 192
100085: PUSH
100086: LD_EXP 192
100090: PPUSH
100091: LD_VAR 0 1
100095: PPUSH
100096: LD_INT 1
100098: PPUSH
100099: CALL_OW 1
100103: ST_TO_ADDR
// end ; end ;
100104: GO 99093
100106: POP
100107: POP
// enable ;
100108: ENABLE
// end ;
100109: PPOPN 7
100111: END
// every 0 0$1 trigger ai_patrol_out > 0 do var side , i , j , temp , temp_list , detected_enemies , priority , patrol_units ; var tSoldiers , tMortars , tCivilians , tHovercrafts , tGuns , tRockets , tBombs , tCargos , tControls ; var pGuns , pHGs , pRockets , pLasers , pGatlings , pBombs , pRadar , pCargo , pLapsers ; var tAmLasers , tAmHgs , tAmRockets , tAmMedium ; var tbuilding ;
100112: LD_EXP 187
100116: PUSH
100117: LD_INT 0
100119: GREATER
100120: IFFALSE 105020
100122: GO 100124
100124: DISABLE
100125: LD_INT 0
100127: PPUSH
100128: PPUSH
100129: PPUSH
100130: PPUSH
100131: PPUSH
100132: PPUSH
100133: PPUSH
100134: PPUSH
100135: PPUSH
100136: PPUSH
100137: PPUSH
100138: PPUSH
100139: PPUSH
100140: PPUSH
100141: PPUSH
100142: PPUSH
100143: PPUSH
100144: PPUSH
100145: PPUSH
100146: PPUSH
100147: PPUSH
100148: PPUSH
100149: PPUSH
100150: PPUSH
100151: PPUSH
100152: PPUSH
100153: PPUSH
100154: PPUSH
100155: PPUSH
100156: PPUSH
100157: PPUSH
// begin for side in ai_patrol_out do
100158: LD_ADDR_VAR 0 1
100162: PUSH
100163: LD_EXP 187
100167: PUSH
100168: FOR_IN
100169: IFFALSE 105017
// begin temp_list = [ ] ;
100171: LD_ADDR_VAR 0 5
100175: PUSH
100176: EMPTY
100177: ST_TO_ADDR
// for i = 1 to ai_patrol [ side ] do
100178: LD_ADDR_VAR 0 2
100182: PUSH
100183: DOUBLE
100184: LD_INT 1
100186: DEC
100187: ST_TO_ADDR
100188: LD_EXP 183
100192: PUSH
100193: LD_VAR 0 1
100197: ARRAY
100198: PUSH
100199: FOR_TO
100200: IFFALSE 100271
// if IsOk ( ai_patrol [ side ] [ i ] ) then
100202: LD_EXP 183
100206: PUSH
100207: LD_VAR 0 1
100211: ARRAY
100212: PUSH
100213: LD_VAR 0 2
100217: ARRAY
100218: PPUSH
100219: CALL_OW 302
100223: IFFALSE 100255
// temp_list = temp_list ^ ai_patrol [ side ] [ i ] else
100225: LD_ADDR_VAR 0 5
100229: PUSH
100230: LD_VAR 0 5
100234: PUSH
100235: LD_EXP 183
100239: PUSH
100240: LD_VAR 0 1
100244: ARRAY
100245: PUSH
100246: LD_VAR 0 2
100250: ARRAY
100251: ADD
100252: ST_TO_ADDR
100253: GO 100269
// temp_list = temp_list ^ 0 ;
100255: LD_ADDR_VAR 0 5
100259: PUSH
100260: LD_VAR 0 5
100264: PUSH
100265: LD_INT 0
100267: ADD
100268: ST_TO_ADDR
100269: GO 100199
100271: POP
100272: POP
// ai_patrol = Replace ( ai_patrol , side , temp_list ) ;
100273: LD_ADDR_EXP 183
100277: PUSH
100278: LD_EXP 183
100282: PPUSH
100283: LD_VAR 0 1
100287: PPUSH
100288: LD_VAR 0 5
100292: PPUSH
100293: CALL_OW 1
100297: ST_TO_ADDR
// patrol_units = temp_list diff 0 ;
100298: LD_ADDR_VAR 0 8
100302: PUSH
100303: LD_VAR 0 5
100307: PUSH
100308: LD_INT 0
100310: DIFF
100311: ST_TO_ADDR
// if patrol_units = 0 then
100312: LD_VAR 0 8
100316: PUSH
100317: LD_INT 0
100319: EQUAL
100320: IFFALSE 100363
// begin ai_patrol_out = ai_patrol_out diff side ;
100322: LD_ADDR_EXP 187
100326: PUSH
100327: LD_EXP 187
100331: PUSH
100332: LD_VAR 0 1
100336: DIFF
100337: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , side , 2 2$0 ) ;
100338: LD_ADDR_EXP 184
100342: PUSH
100343: LD_EXP 184
100347: PPUSH
100348: LD_VAR 0 1
100352: PPUSH
100353: LD_INT 4200
100355: PPUSH
100356: CALL_OW 1
100360: ST_TO_ADDR
// break ;
100361: GO 105017
// end ; detected_enemies = [ ] ;
100363: LD_ADDR_VAR 0 6
100367: PUSH
100368: EMPTY
100369: ST_TO_ADDR
// for i in patrol_units do
100370: LD_ADDR_VAR 0 2
100374: PUSH
100375: LD_VAR 0 8
100379: PUSH
100380: FOR_IN
100381: IFFALSE 100562
// begin temp = FilterAllunits ( [ [ f_see , [ 8 , 1 , 7 ] [ side ] ] , [ f_enemy , [ 8 , 1 , 7 ] [ side ] ] , [ f_dist , i , 25 ] , [ f_not , [ f_side , 3 ] ] , [ f_not , [ f_type , unit_building ] ] ] ) ;
100383: LD_ADDR_VAR 0 4
100387: PUSH
100388: LD_INT 101
100390: PUSH
100391: LD_INT 8
100393: PUSH
100394: LD_INT 1
100396: PUSH
100397: LD_INT 7
100399: PUSH
100400: EMPTY
100401: LIST
100402: LIST
100403: LIST
100404: PUSH
100405: LD_VAR 0 1
100409: ARRAY
100410: PUSH
100411: EMPTY
100412: LIST
100413: LIST
100414: PUSH
100415: LD_INT 81
100417: PUSH
100418: LD_INT 8
100420: PUSH
100421: LD_INT 1
100423: PUSH
100424: LD_INT 7
100426: PUSH
100427: EMPTY
100428: LIST
100429: LIST
100430: LIST
100431: PUSH
100432: LD_VAR 0 1
100436: ARRAY
100437: PUSH
100438: EMPTY
100439: LIST
100440: LIST
100441: PUSH
100442: LD_INT 91
100444: PUSH
100445: LD_VAR 0 2
100449: PUSH
100450: LD_INT 25
100452: PUSH
100453: EMPTY
100454: LIST
100455: LIST
100456: LIST
100457: PUSH
100458: LD_INT 3
100460: PUSH
100461: LD_INT 22
100463: PUSH
100464: LD_INT 3
100466: PUSH
100467: EMPTY
100468: LIST
100469: LIST
100470: PUSH
100471: EMPTY
100472: LIST
100473: LIST
100474: PUSH
100475: LD_INT 3
100477: PUSH
100478: LD_INT 21
100480: PUSH
100481: LD_INT 3
100483: PUSH
100484: EMPTY
100485: LIST
100486: LIST
100487: PUSH
100488: EMPTY
100489: LIST
100490: LIST
100491: PUSH
100492: EMPTY
100493: LIST
100494: LIST
100495: LIST
100496: LIST
100497: LIST
100498: PPUSH
100499: CALL_OW 69
100503: ST_TO_ADDR
// if temp > 0 then
100504: LD_VAR 0 4
100508: PUSH
100509: LD_INT 0
100511: GREATER
100512: IFFALSE 100560
// for j in temp do
100514: LD_ADDR_VAR 0 3
100518: PUSH
100519: LD_VAR 0 4
100523: PUSH
100524: FOR_IN
100525: IFFALSE 100558
// if not j in detected_enemies then
100527: LD_VAR 0 3
100531: PUSH
100532: LD_VAR 0 6
100536: IN
100537: NOT
100538: IFFALSE 100556
// detected_enemies = detected_enemies ^ j ;
100540: LD_ADDR_VAR 0 6
100544: PUSH
100545: LD_VAR 0 6
100549: PUSH
100550: LD_VAR 0 3
100554: ADD
100555: ST_TO_ADDR
100556: GO 100524
100558: POP
100559: POP
// end ;
100560: GO 100380
100562: POP
100563: POP
// if side in [ 2 , 3 ] then
100564: LD_VAR 0 1
100568: PUSH
100569: LD_INT 2
100571: PUSH
100572: LD_INT 3
100574: PUSH
100575: EMPTY
100576: LIST
100577: LIST
100578: IN
100579: IFFALSE 100607
// detected_enemies = detected_enemies diff FilterAllUnits ( [ f_side , 4 ] ) ;
100581: LD_ADDR_VAR 0 6
100585: PUSH
100586: LD_VAR 0 6
100590: PUSH
100591: LD_INT 22
100593: PUSH
100594: LD_INT 4
100596: PUSH
100597: EMPTY
100598: LIST
100599: LIST
100600: PPUSH
100601: CALL_OW 69
100605: DIFF
100606: ST_TO_ADDR
// for i in detected_enemies do
100607: LD_ADDR_VAR 0 2
100611: PUSH
100612: LD_VAR 0 6
100616: PUSH
100617: FOR_IN
100618: IFFALSE 100669
// if unitfilter ( patrol_units , [ f_dist , i , 35 ] ) = 0 then
100620: LD_VAR 0 8
100624: PPUSH
100625: LD_INT 91
100627: PUSH
100628: LD_VAR 0 2
100632: PUSH
100633: LD_INT 35
100635: PUSH
100636: EMPTY
100637: LIST
100638: LIST
100639: LIST
100640: PPUSH
100641: CALL_OW 72
100645: PUSH
100646: LD_INT 0
100648: EQUAL
100649: IFFALSE 100667
// detected_enemies = detected_enemies diff i ;
100651: LD_ADDR_VAR 0 6
100655: PUSH
100656: LD_VAR 0 6
100660: PUSH
100661: LD_VAR 0 2
100665: DIFF
100666: ST_TO_ADDR
100667: GO 100617
100669: POP
100670: POP
// if side = 3 then
100671: LD_VAR 0 1
100675: PUSH
100676: LD_INT 3
100678: EQUAL
100679: IFFALSE 100889
// begin case AllTarget [ 1 ] of 1 :
100681: LD_EXP 222
100685: PUSH
100686: LD_INT 1
100688: ARRAY
100689: PUSH
100690: LD_INT 1
100692: DOUBLE
100693: EQUAL
100694: IFTRUE 100698
100696: GO 100724
100698: POP
// temp_list = [ AllSeekLeftCentre , base_legion , AllSeekLeftFront , AllSeekLeftBack ] ; 2 :
100699: LD_ADDR_VAR 0 5
100703: PUSH
100704: LD_INT 31
100706: PUSH
100707: LD_INT 1
100709: PUSH
100710: LD_INT 32
100712: PUSH
100713: LD_INT 33
100715: PUSH
100716: EMPTY
100717: LIST
100718: LIST
100719: LIST
100720: LIST
100721: ST_TO_ADDR
100722: GO 100781
100724: LD_INT 2
100726: DOUBLE
100727: EQUAL
100728: IFTRUE 100732
100730: GO 100746
100732: POP
// temp_list = [ AllSeekCentre ] ; 3 :
100733: LD_ADDR_VAR 0 5
100737: PUSH
100738: LD_INT 30
100740: PUSH
100741: EMPTY
100742: LIST
100743: ST_TO_ADDR
100744: GO 100781
100746: LD_INT 3
100748: DOUBLE
100749: EQUAL
100750: IFTRUE 100754
100752: GO 100780
100754: POP
// temp_list = [ AllSeekRightCentre , base_us , AllSeekRightFront , AllSeekRightBack ] ; end ;
100755: LD_ADDR_VAR 0 5
100759: PUSH
100760: LD_INT 34
100762: PUSH
100763: LD_INT 3
100765: PUSH
100766: LD_INT 35
100768: PUSH
100769: LD_INT 36
100771: PUSH
100772: EMPTY
100773: LIST
100774: LIST
100775: LIST
100776: LIST
100777: ST_TO_ADDR
100778: GO 100781
100780: POP
// detected_enemies = [ ] ;
100781: LD_ADDR_VAR 0 6
100785: PUSH
100786: EMPTY
100787: ST_TO_ADDR
// for i in temp_list do
100788: LD_ADDR_VAR 0 2
100792: PUSH
100793: LD_VAR 0 5
100797: PUSH
100798: FOR_IN
100799: IFFALSE 100861
// if FilterUnitsInArea ( i , [ f_side , 2 ] ) > 0 then
100801: LD_VAR 0 2
100805: PPUSH
100806: LD_INT 22
100808: PUSH
100809: LD_INT 2
100811: PUSH
100812: EMPTY
100813: LIST
100814: LIST
100815: PPUSH
100816: CALL_OW 70
100820: PUSH
100821: LD_INT 0
100823: GREATER
100824: IFFALSE 100859
// begin detected_enemies = detected_enemies ^ FilterUnitsInArea ( i , [ f_side , 2 ] ) ;
100826: LD_ADDR_VAR 0 6
100830: PUSH
100831: LD_VAR 0 6
100835: PUSH
100836: LD_VAR 0 2
100840: PPUSH
100841: LD_INT 22
100843: PUSH
100844: LD_INT 2
100846: PUSH
100847: EMPTY
100848: LIST
100849: LIST
100850: PPUSH
100851: CALL_OW 70
100855: ADD
100856: ST_TO_ADDR
// break ;
100857: GO 100861
// end ;
100859: GO 100798
100861: POP
100862: POP
// if detected_enemies = 0 then
100863: LD_VAR 0 6
100867: PUSH
100868: LD_INT 0
100870: EQUAL
100871: IFFALSE 100889
// begin ai_patrol_out = ai_patrol_out diff 3 ;
100873: LD_ADDR_EXP 187
100877: PUSH
100878: LD_EXP 187
100882: PUSH
100883: LD_INT 3
100885: DIFF
100886: ST_TO_ADDR
// continue ;
100887: GO 100168
// end ; end ; if detected_enemies > 0 then
100889: LD_VAR 0 6
100893: PUSH
100894: LD_INT 0
100896: GREATER
100897: IFFALSE 100924
// ai_patrol_engaging = Replace ( ai_patrol_engaging , side , 1 ) else
100899: LD_ADDR_EXP 191
100903: PUSH
100904: LD_EXP 191
100908: PPUSH
100909: LD_VAR 0 1
100913: PPUSH
100914: LD_INT 1
100916: PPUSH
100917: CALL_OW 1
100921: ST_TO_ADDR
100922: GO 100947
// ai_patrol_engaging = Replace ( ai_patrol_engaging , side , 0 ) ;
100924: LD_ADDR_EXP 191
100928: PUSH
100929: LD_EXP 191
100933: PPUSH
100934: LD_VAR 0 1
100938: PPUSH
100939: LD_INT 0
100941: PPUSH
100942: CALL_OW 1
100946: ST_TO_ADDR
// if ai_patrol_engaging [ side ] = 1 then
100947: LD_EXP 191
100951: PUSH
100952: LD_VAR 0 1
100956: ARRAY
100957: PUSH
100958: LD_INT 1
100960: EQUAL
100961: IFFALSE 104572
// begin tSoldiers = unitfilter ( detected_enemies , [ f_class , class_soldier ] ) ;
100963: LD_ADDR_VAR 0 9
100967: PUSH
100968: LD_VAR 0 6
100972: PPUSH
100973: LD_INT 25
100975: PUSH
100976: LD_INT 1
100978: PUSH
100979: EMPTY
100980: LIST
100981: LIST
100982: PPUSH
100983: CALL_OW 72
100987: ST_TO_ADDR
// tMortars = unitfilter ( detected_enemies , [ f_class , class_mortar ] ) ;
100988: LD_ADDR_VAR 0 10
100992: PUSH
100993: LD_VAR 0 6
100997: PPUSH
100998: LD_INT 25
101000: PUSH
101001: LD_INT 8
101003: PUSH
101004: EMPTY
101005: LIST
101006: LIST
101007: PPUSH
101008: CALL_OW 72
101012: ST_TO_ADDR
// tCivilians = unitfilter ( detected_enemies , [ f_or , [ f_class , class_engineer ] , [ f_class , class_mechanic ] , [ f_class , class_scientistic ] ] ) ;
101013: LD_ADDR_VAR 0 11
101017: PUSH
101018: LD_VAR 0 6
101022: PPUSH
101023: LD_INT 2
101025: PUSH
101026: LD_INT 25
101028: PUSH
101029: LD_INT 2
101031: PUSH
101032: EMPTY
101033: LIST
101034: LIST
101035: PUSH
101036: LD_INT 25
101038: PUSH
101039: LD_INT 3
101041: PUSH
101042: EMPTY
101043: LIST
101044: LIST
101045: PUSH
101046: LD_INT 25
101048: PUSH
101049: LD_INT 4
101051: PUSH
101052: EMPTY
101053: LIST
101054: LIST
101055: PUSH
101056: EMPTY
101057: LIST
101058: LIST
101059: LIST
101060: LIST
101061: PPUSH
101062: CALL_OW 72
101066: ST_TO_ADDR
// tHovercrafts = unitfilter ( detected_enemies , [ f_chassis , ar_hovercraft ] ) ;
101067: LD_ADDR_VAR 0 12
101071: PUSH
101072: LD_VAR 0 6
101076: PPUSH
101077: LD_INT 31
101079: PUSH
101080: LD_INT 11
101082: PUSH
101083: EMPTY
101084: LIST
101085: LIST
101086: PPUSH
101087: CALL_OW 72
101091: ST_TO_ADDR
// tGuns = unitfilter ( detected_enemies , [ [ f_not , [ f_chassis , ar_hovercraft ] ] , [ f_or , [ f_weapon , ar_gun ] , [ f_weapon , ar_double_machine_gun ] , [ f_weapon , ar_flame_thrower ] , [ f_weapon , ar_gatling_gun ] , [ f_weapon , ar_light_gun ] , [ f_weapon , ar_multimissile_ballista ] , [ f_weapon , ru_gun ] , [ f_weapon , ru_heavy_machine_gun ] , [ f_weapon , ru_gatling_gun ] , [ f_weapon , us_double_gun ] , [ f_weapon , us_machine_gun ] , [ f_weapon , us_gatling_gun ] , [ f_weapon , us_light_gun ] ] ] ) ;
101092: LD_ADDR_VAR 0 13
101096: PUSH
101097: LD_VAR 0 6
101101: PPUSH
101102: LD_INT 3
101104: PUSH
101105: LD_INT 31
101107: PUSH
101108: LD_INT 11
101110: PUSH
101111: EMPTY
101112: LIST
101113: LIST
101114: PUSH
101115: EMPTY
101116: LIST
101117: LIST
101118: PUSH
101119: LD_INT 2
101121: PUSH
101122: LD_INT 34
101124: PUSH
101125: LD_INT 27
101127: PUSH
101128: EMPTY
101129: LIST
101130: LIST
101131: PUSH
101132: LD_INT 34
101134: PUSH
101135: LD_INT 24
101137: PUSH
101138: EMPTY
101139: LIST
101140: LIST
101141: PUSH
101142: LD_INT 34
101144: PUSH
101145: LD_INT 26
101147: PUSH
101148: EMPTY
101149: LIST
101150: LIST
101151: PUSH
101152: LD_INT 34
101154: PUSH
101155: LD_INT 25
101157: PUSH
101158: EMPTY
101159: LIST
101160: LIST
101161: PUSH
101162: LD_INT 34
101164: PUSH
101165: LD_INT 23
101167: PUSH
101168: EMPTY
101169: LIST
101170: LIST
101171: PUSH
101172: LD_INT 34
101174: PUSH
101175: LD_INT 22
101177: PUSH
101178: EMPTY
101179: LIST
101180: LIST
101181: PUSH
101182: LD_INT 34
101184: PUSH
101185: LD_INT 44
101187: PUSH
101188: EMPTY
101189: LIST
101190: LIST
101191: PUSH
101192: LD_INT 34
101194: PUSH
101195: LD_INT 42
101197: PUSH
101198: EMPTY
101199: LIST
101200: LIST
101201: PUSH
101202: LD_INT 34
101204: PUSH
101205: LD_INT 43
101207: PUSH
101208: EMPTY
101209: LIST
101210: LIST
101211: PUSH
101212: LD_INT 34
101214: PUSH
101215: LD_INT 5
101217: PUSH
101218: EMPTY
101219: LIST
101220: LIST
101221: PUSH
101222: LD_INT 34
101224: PUSH
101225: LD_INT 2
101227: PUSH
101228: EMPTY
101229: LIST
101230: LIST
101231: PUSH
101232: LD_INT 34
101234: PUSH
101235: LD_INT 4
101237: PUSH
101238: EMPTY
101239: LIST
101240: LIST
101241: PUSH
101242: LD_INT 34
101244: PUSH
101245: LD_INT 3
101247: PUSH
101248: EMPTY
101249: LIST
101250: LIST
101251: PUSH
101252: EMPTY
101253: LIST
101254: LIST
101255: LIST
101256: LIST
101257: LIST
101258: LIST
101259: LIST
101260: LIST
101261: LIST
101262: LIST
101263: LIST
101264: LIST
101265: LIST
101266: LIST
101267: PUSH
101268: EMPTY
101269: LIST
101270: LIST
101271: PPUSH
101272: CALL_OW 72
101276: ST_TO_ADDR
// tRockets = unitfilter ( detected_enemies , [ f_or , [ f_weapon , ar_rocket_launcher ] , [ f_weapon , ru_rocket_launcher ] , [ f_and , [ f_weapon , us_rocket_launcher ] , [ f_not , [ f_chassis , us_morphling ] ] ] ] ) ;
101277: LD_ADDR_VAR 0 14
101281: PUSH
101282: LD_VAR 0 6
101286: PPUSH
101287: LD_INT 2
101289: PUSH
101290: LD_INT 34
101292: PUSH
101293: LD_INT 28
101295: PUSH
101296: EMPTY
101297: LIST
101298: LIST
101299: PUSH
101300: LD_INT 34
101302: PUSH
101303: LD_INT 45
101305: PUSH
101306: EMPTY
101307: LIST
101308: LIST
101309: PUSH
101310: LD_INT 1
101312: PUSH
101313: LD_INT 34
101315: PUSH
101316: LD_INT 7
101318: PUSH
101319: EMPTY
101320: LIST
101321: LIST
101322: PUSH
101323: LD_INT 3
101325: PUSH
101326: LD_INT 31
101328: PUSH
101329: LD_INT 5
101331: PUSH
101332: EMPTY
101333: LIST
101334: LIST
101335: PUSH
101336: EMPTY
101337: LIST
101338: LIST
101339: PUSH
101340: EMPTY
101341: LIST
101342: LIST
101343: LIST
101344: PUSH
101345: EMPTY
101346: LIST
101347: LIST
101348: LIST
101349: LIST
101350: PPUSH
101351: CALL_OW 72
101355: ST_TO_ADDR
// tBombs = unitfilter ( detected_enemies , [ f_weapon , ar_selfpropelled_bomb ] ) ;
101356: LD_ADDR_VAR 0 15
101360: PUSH
101361: LD_VAR 0 6
101365: PPUSH
101366: LD_INT 34
101368: PUSH
101369: LD_INT 29
101371: PUSH
101372: EMPTY
101373: LIST
101374: LIST
101375: PPUSH
101376: CALL_OW 72
101380: ST_TO_ADDR
// tCargos = unitfilter ( detected_enemies , [ f_or , [ f_weapon , ar_radar ] , [ f_weapon , ar_cargo_bay ] ] ) ;
101381: LD_ADDR_VAR 0 16
101385: PUSH
101386: LD_VAR 0 6
101390: PPUSH
101391: LD_INT 2
101393: PUSH
101394: LD_INT 34
101396: PUSH
101397: LD_INT 30
101399: PUSH
101400: EMPTY
101401: LIST
101402: LIST
101403: PUSH
101404: LD_INT 34
101406: PUSH
101407: LD_INT 32
101409: PUSH
101410: EMPTY
101411: LIST
101412: LIST
101413: PUSH
101414: EMPTY
101415: LIST
101416: LIST
101417: LIST
101418: PPUSH
101419: CALL_OW 72
101423: ST_TO_ADDR
// tControls = unitfilter ( detected_enemies , [ f_weapon , ar_control_tower ] ) ;
101424: LD_ADDR_VAR 0 17
101428: PUSH
101429: LD_VAR 0 6
101433: PPUSH
101434: LD_INT 34
101436: PUSH
101437: LD_INT 31
101439: PUSH
101440: EMPTY
101441: LIST
101442: LIST
101443: PPUSH
101444: CALL_OW 72
101448: ST_TO_ADDR
// tAmRockets = unitfilter ( detected_enemies , [ f_and , [ f_weapon , us_rocket_launcher ] , [ f_chassis , us_morphling ] ] ) ;
101449: LD_ADDR_VAR 0 29
101453: PUSH
101454: LD_VAR 0 6
101458: PPUSH
101459: LD_INT 1
101461: PUSH
101462: LD_INT 34
101464: PUSH
101465: LD_INT 7
101467: PUSH
101468: EMPTY
101469: LIST
101470: LIST
101471: PUSH
101472: LD_INT 31
101474: PUSH
101475: LD_INT 5
101477: PUSH
101478: EMPTY
101479: LIST
101480: LIST
101481: PUSH
101482: EMPTY
101483: LIST
101484: LIST
101485: LIST
101486: PPUSH
101487: CALL_OW 72
101491: ST_TO_ADDR
// tAmHgs = unitfilter ( detected_enemies , [ f_or , [ f_weapon , us_heavy_gun ] , [ f_weapon , us_laser ] ] ) ;
101492: LD_ADDR_VAR 0 28
101496: PUSH
101497: LD_VAR 0 6
101501: PPUSH
101502: LD_INT 2
101504: PUSH
101505: LD_INT 34
101507: PUSH
101508: LD_INT 6
101510: PUSH
101511: EMPTY
101512: LIST
101513: LIST
101514: PUSH
101515: LD_INT 34
101517: PUSH
101518: LD_INT 9
101520: PUSH
101521: EMPTY
101522: LIST
101523: LIST
101524: PUSH
101525: EMPTY
101526: LIST
101527: LIST
101528: LIST
101529: PPUSH
101530: CALL_OW 72
101534: ST_TO_ADDR
// tAmLasers = unitfilter ( detected_enemies , [ f_weapon , us_double_laser ] ) ;
101535: LD_ADDR_VAR 0 27
101539: PUSH
101540: LD_VAR 0 6
101544: PPUSH
101545: LD_INT 34
101547: PUSH
101548: LD_INT 10
101550: PUSH
101551: EMPTY
101552: LIST
101553: LIST
101554: PPUSH
101555: CALL_OW 72
101559: ST_TO_ADDR
// tAmMedium = unitfilter ( detected_enemies , [ f_or , [ f_weapon , us_double_gun ] , [ f_weapon , us_gatling_gun ] ] ) ;
101560: LD_ADDR_VAR 0 30
101564: PUSH
101565: LD_VAR 0 6
101569: PPUSH
101570: LD_INT 2
101572: PUSH
101573: LD_INT 34
101575: PUSH
101576: LD_INT 5
101578: PUSH
101579: EMPTY
101580: LIST
101581: LIST
101582: PUSH
101583: LD_INT 34
101585: PUSH
101586: LD_INT 4
101588: PUSH
101589: EMPTY
101590: LIST
101591: LIST
101592: PUSH
101593: EMPTY
101594: LIST
101595: LIST
101596: LIST
101597: PPUSH
101598: CALL_OW 72
101602: ST_TO_ADDR
// tbuilding = unitfilter ( detected_enemies , [ f_type , unit_building ] ) ;
101603: LD_ADDR_VAR 0 31
101607: PUSH
101608: LD_VAR 0 6
101612: PPUSH
101613: LD_INT 21
101615: PUSH
101616: LD_INT 3
101618: PUSH
101619: EMPTY
101620: LIST
101621: LIST
101622: PPUSH
101623: CALL_OW 72
101627: ST_TO_ADDR
// pGuns = unitfilter ( patrol_units , [ [ f_or , [ f_weapon , ar_gun ] , [ f_weapon , us_double_gun ] , [ f_weapon , ru_gun ] ] , [ f_ok ] ] ) ;
101628: LD_ADDR_VAR 0 18
101632: PUSH
101633: LD_VAR 0 8
101637: PPUSH
101638: LD_INT 2
101640: PUSH
101641: LD_INT 34
101643: PUSH
101644: LD_INT 27
101646: PUSH
101647: EMPTY
101648: LIST
101649: LIST
101650: PUSH
101651: LD_INT 34
101653: PUSH
101654: LD_INT 5
101656: PUSH
101657: EMPTY
101658: LIST
101659: LIST
101660: PUSH
101661: LD_INT 34
101663: PUSH
101664: LD_INT 44
101666: PUSH
101667: EMPTY
101668: LIST
101669: LIST
101670: PUSH
101671: EMPTY
101672: LIST
101673: LIST
101674: LIST
101675: LIST
101676: PUSH
101677: LD_INT 50
101679: PUSH
101680: EMPTY
101681: LIST
101682: PUSH
101683: EMPTY
101684: LIST
101685: LIST
101686: PPUSH
101687: CALL_OW 72
101691: ST_TO_ADDR
// pHGs = unitfilter ( patrol_units , [ [ f_or , [ f_weapon , us_heavy_gun ] , [ f_weapon , us_laser ] , [ f_weapon , ru_heavy_gun ] ] , [ f_ok ] ] ) ;
101692: LD_ADDR_VAR 0 19
101696: PUSH
101697: LD_VAR 0 8
101701: PPUSH
101702: LD_INT 2
101704: PUSH
101705: LD_INT 34
101707: PUSH
101708: LD_INT 6
101710: PUSH
101711: EMPTY
101712: LIST
101713: LIST
101714: PUSH
101715: LD_INT 34
101717: PUSH
101718: LD_INT 9
101720: PUSH
101721: EMPTY
101722: LIST
101723: LIST
101724: PUSH
101725: LD_INT 34
101727: PUSH
101728: LD_INT 46
101730: PUSH
101731: EMPTY
101732: LIST
101733: LIST
101734: PUSH
101735: EMPTY
101736: LIST
101737: LIST
101738: LIST
101739: LIST
101740: PUSH
101741: LD_INT 50
101743: PUSH
101744: EMPTY
101745: LIST
101746: PUSH
101747: EMPTY
101748: LIST
101749: LIST
101750: PPUSH
101751: CALL_OW 72
101755: ST_TO_ADDR
// pRockets = unitfilter ( patrol_units , [ [ f_or , [ f_weapon , ar_rocket_launcher ] , [ f_weapon , us_rocket_launcher ] , [ f_weapon , ru_rocket_launcher ] ] , [ f_ok ] ] ) ;
101756: LD_ADDR_VAR 0 20
101760: PUSH
101761: LD_VAR 0 8
101765: PPUSH
101766: LD_INT 2
101768: PUSH
101769: LD_INT 34
101771: PUSH
101772: LD_INT 28
101774: PUSH
101775: EMPTY
101776: LIST
101777: LIST
101778: PUSH
101779: LD_INT 34
101781: PUSH
101782: LD_INT 7
101784: PUSH
101785: EMPTY
101786: LIST
101787: LIST
101788: PUSH
101789: LD_INT 34
101791: PUSH
101792: LD_INT 45
101794: PUSH
101795: EMPTY
101796: LIST
101797: LIST
101798: PUSH
101799: EMPTY
101800: LIST
101801: LIST
101802: LIST
101803: LIST
101804: PUSH
101805: LD_INT 50
101807: PUSH
101808: EMPTY
101809: LIST
101810: PUSH
101811: EMPTY
101812: LIST
101813: LIST
101814: PPUSH
101815: CALL_OW 72
101819: ST_TO_ADDR
// pLasers = unitfilter ( patrol_units , [ [ f_weapon , us_double_laser ] , [ f_ok ] ] ) ;
101820: LD_ADDR_VAR 0 21
101824: PUSH
101825: LD_VAR 0 8
101829: PPUSH
101830: LD_INT 34
101832: PUSH
101833: LD_INT 10
101835: PUSH
101836: EMPTY
101837: LIST
101838: LIST
101839: PUSH
101840: LD_INT 50
101842: PUSH
101843: EMPTY
101844: LIST
101845: PUSH
101846: EMPTY
101847: LIST
101848: LIST
101849: PPUSH
101850: CALL_OW 72
101854: ST_TO_ADDR
// pGatlings = unitfilter ( patrol_units , [ [ f_or , [ f_weapon , ar_flame_thrower ] , [ f_weapon , ar_gatling_gun ] , [ f_weapon , us_gatling_gun ] , [ f_weapon , ru_gatling_gun ] ] , [ f_ok ] ] ) ;
101855: LD_ADDR_VAR 0 22
101859: PUSH
101860: LD_VAR 0 8
101864: PPUSH
101865: LD_INT 2
101867: PUSH
101868: LD_INT 34
101870: PUSH
101871: LD_INT 26
101873: PUSH
101874: EMPTY
101875: LIST
101876: LIST
101877: PUSH
101878: LD_INT 34
101880: PUSH
101881: LD_INT 25
101883: PUSH
101884: EMPTY
101885: LIST
101886: LIST
101887: PUSH
101888: LD_INT 34
101890: PUSH
101891: LD_INT 4
101893: PUSH
101894: EMPTY
101895: LIST
101896: LIST
101897: PUSH
101898: LD_INT 34
101900: PUSH
101901: LD_INT 43
101903: PUSH
101904: EMPTY
101905: LIST
101906: LIST
101907: PUSH
101908: EMPTY
101909: LIST
101910: LIST
101911: LIST
101912: LIST
101913: LIST
101914: PUSH
101915: LD_INT 50
101917: PUSH
101918: EMPTY
101919: LIST
101920: PUSH
101921: EMPTY
101922: LIST
101923: LIST
101924: PPUSH
101925: CALL_OW 72
101929: ST_TO_ADDR
// pBombs = unitfilter ( patrol_units , [ f_weapon , ar_selfpropelled_bomb ] ) ;
101930: LD_ADDR_VAR 0 23
101934: PUSH
101935: LD_VAR 0 8
101939: PPUSH
101940: LD_INT 34
101942: PUSH
101943: LD_INT 29
101945: PUSH
101946: EMPTY
101947: LIST
101948: LIST
101949: PPUSH
101950: CALL_OW 72
101954: ST_TO_ADDR
// pLapsers = unitfilter ( patrol_units , [ f_weapon , ru_time_lapser ] ) ;
101955: LD_ADDR_VAR 0 26
101959: PUSH
101960: LD_VAR 0 8
101964: PPUSH
101965: LD_INT 34
101967: PUSH
101968: LD_INT 49
101970: PUSH
101971: EMPTY
101972: LIST
101973: LIST
101974: PPUSH
101975: CALL_OW 72
101979: ST_TO_ADDR
// pCargo = unitfilter ( patrol_units , [ f_or , [ f_weapon , us_cargo_bay ] , [ f_weapon , ru_cargo_bay ] ] ) ;
101980: LD_ADDR_VAR 0 25
101984: PUSH
101985: LD_VAR 0 8
101989: PPUSH
101990: LD_INT 2
101992: PUSH
101993: LD_INT 34
101995: PUSH
101996: LD_INT 12
101998: PUSH
101999: EMPTY
102000: LIST
102001: LIST
102002: PUSH
102003: LD_INT 34
102005: PUSH
102006: LD_INT 51
102008: PUSH
102009: EMPTY
102010: LIST
102011: LIST
102012: PUSH
102013: EMPTY
102014: LIST
102015: LIST
102016: LIST
102017: PPUSH
102018: CALL_OW 72
102022: ST_TO_ADDR
// temp = unitfilter ( patrol_units , [ f_or , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] ] ) ;
102023: LD_ADDR_VAR 0 4
102027: PUSH
102028: LD_VAR 0 8
102032: PPUSH
102033: LD_INT 2
102035: PUSH
102036: LD_INT 34
102038: PUSH
102039: LD_INT 30
102041: PUSH
102042: EMPTY
102043: LIST
102044: LIST
102045: PUSH
102046: LD_INT 34
102048: PUSH
102049: LD_INT 11
102051: PUSH
102052: EMPTY
102053: LIST
102054: LIST
102055: PUSH
102056: EMPTY
102057: LIST
102058: LIST
102059: LIST
102060: PPUSH
102061: CALL_OW 72
102065: ST_TO_ADDR
// if temp > 0 then
102066: LD_VAR 0 4
102070: PUSH
102071: LD_INT 0
102073: GREATER
102074: IFFALSE 102090
// pRadar = temp [ 1 ] ;
102076: LD_ADDR_VAR 0 24
102080: PUSH
102081: LD_VAR 0 4
102085: PUSH
102086: LD_INT 1
102088: ARRAY
102089: ST_TO_ADDR
// if pGuns > 0 then
102090: LD_VAR 0 18
102094: PUSH
102095: LD_INT 0
102097: GREATER
102098: IFFALSE 102367
// begin priority = [ tControls , tBombs , tRockets , tHovercrafts , tGuns , tCargos , tMortars , tSoldiers , tCivilians , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
102100: LD_ADDR_VAR 0 7
102104: PUSH
102105: LD_VAR 0 17
102109: PUSH
102110: LD_VAR 0 15
102114: PUSH
102115: LD_VAR 0 14
102119: PUSH
102120: LD_VAR 0 12
102124: PUSH
102125: LD_VAR 0 13
102129: PUSH
102130: LD_VAR 0 16
102134: PUSH
102135: LD_VAR 0 10
102139: PUSH
102140: LD_VAR 0 9
102144: PUSH
102145: LD_VAR 0 11
102149: PUSH
102150: LD_VAR 0 27
102154: PUSH
102155: LD_VAR 0 28
102159: PUSH
102160: LD_VAR 0 29
102164: PUSH
102165: LD_VAR 0 30
102169: PUSH
102170: LD_VAR 0 31
102174: PUSH
102175: EMPTY
102176: LIST
102177: LIST
102178: LIST
102179: LIST
102180: LIST
102181: LIST
102182: LIST
102183: LIST
102184: LIST
102185: LIST
102186: LIST
102187: LIST
102188: LIST
102189: LIST
102190: ST_TO_ADDR
// for i in priority do
102191: LD_ADDR_VAR 0 2
102195: PUSH
102196: LD_VAR 0 7
102200: PUSH
102201: FOR_IN
102202: IFFALSE 102365
// if i > 0 then
102204: LD_VAR 0 2
102208: PUSH
102209: LD_INT 0
102211: GREATER
102212: IFFALSE 102363
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
102214: LD_ADDR_VAR 0 4
102218: PUSH
102219: LD_VAR 0 2
102223: PPUSH
102224: LD_INT 3
102226: PUSH
102227: LD_INT 24
102229: PUSH
102230: LD_INT 700
102232: PUSH
102233: EMPTY
102234: LIST
102235: LIST
102236: PUSH
102237: EMPTY
102238: LIST
102239: LIST
102240: PPUSH
102241: CALL_OW 72
102245: ST_TO_ADDR
// if temp > 0 then
102246: LD_VAR 0 4
102250: PUSH
102251: LD_INT 0
102253: GREATER
102254: IFFALSE 102343
// begin temp_list = [ ] ;
102256: LD_ADDR_VAR 0 5
102260: PUSH
102261: EMPTY
102262: ST_TO_ADDR
// for j in temp do
102263: LD_ADDR_VAR 0 3
102267: PUSH
102268: LD_VAR 0 4
102272: PUSH
102273: FOR_IN
102274: IFFALSE 102299
// temp_list = temp_list ^ GetLives ( j ) ;
102276: LD_ADDR_VAR 0 5
102280: PUSH
102281: LD_VAR 0 5
102285: PUSH
102286: LD_VAR 0 3
102290: PPUSH
102291: CALL_OW 256
102295: ADD
102296: ST_TO_ADDR
102297: GO 102273
102299: POP
102300: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
102301: LD_ADDR_VAR 0 4
102305: PUSH
102306: LD_VAR 0 4
102310: PPUSH
102311: LD_VAR 0 5
102315: PPUSH
102316: CALL_OW 78
102320: ST_TO_ADDR
// ComAttackUnit ( pGuns , temp [ 1 ] ) ;
102321: LD_VAR 0 18
102325: PPUSH
102326: LD_VAR 0 4
102330: PUSH
102331: LD_INT 1
102333: ARRAY
102334: PPUSH
102335: CALL_OW 115
// break ;
102339: GO 102365
// end else
102341: GO 102363
// begin ComAttackUnit ( pGuns , i [ 1 ] ) ;
102343: LD_VAR 0 18
102347: PPUSH
102348: LD_VAR 0 2
102352: PUSH
102353: LD_INT 1
102355: ARRAY
102356: PPUSH
102357: CALL_OW 115
// break ;
102361: GO 102365
// end ; end ;
102363: GO 102201
102365: POP
102366: POP
// end ; if pHGs > 0 then
102367: LD_VAR 0 19
102371: PUSH
102372: LD_INT 0
102374: GREATER
102375: IFFALSE 102644
// begin priority = [ tControls , tBombs , tRockets , tHovercrafts , tGuns , tCargos , tMortars , tSoldiers , tCivilians , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
102377: LD_ADDR_VAR 0 7
102381: PUSH
102382: LD_VAR 0 17
102386: PUSH
102387: LD_VAR 0 15
102391: PUSH
102392: LD_VAR 0 14
102396: PUSH
102397: LD_VAR 0 12
102401: PUSH
102402: LD_VAR 0 13
102406: PUSH
102407: LD_VAR 0 16
102411: PUSH
102412: LD_VAR 0 10
102416: PUSH
102417: LD_VAR 0 9
102421: PUSH
102422: LD_VAR 0 11
102426: PUSH
102427: LD_VAR 0 27
102431: PUSH
102432: LD_VAR 0 28
102436: PUSH
102437: LD_VAR 0 29
102441: PUSH
102442: LD_VAR 0 30
102446: PUSH
102447: LD_VAR 0 31
102451: PUSH
102452: EMPTY
102453: LIST
102454: LIST
102455: LIST
102456: LIST
102457: LIST
102458: LIST
102459: LIST
102460: LIST
102461: LIST
102462: LIST
102463: LIST
102464: LIST
102465: LIST
102466: LIST
102467: ST_TO_ADDR
// for i in priority do
102468: LD_ADDR_VAR 0 2
102472: PUSH
102473: LD_VAR 0 7
102477: PUSH
102478: FOR_IN
102479: IFFALSE 102642
// if i > 0 then
102481: LD_VAR 0 2
102485: PUSH
102486: LD_INT 0
102488: GREATER
102489: IFFALSE 102640
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
102491: LD_ADDR_VAR 0 4
102495: PUSH
102496: LD_VAR 0 2
102500: PPUSH
102501: LD_INT 3
102503: PUSH
102504: LD_INT 24
102506: PUSH
102507: LD_INT 700
102509: PUSH
102510: EMPTY
102511: LIST
102512: LIST
102513: PUSH
102514: EMPTY
102515: LIST
102516: LIST
102517: PPUSH
102518: CALL_OW 72
102522: ST_TO_ADDR
// if temp > 0 then
102523: LD_VAR 0 4
102527: PUSH
102528: LD_INT 0
102530: GREATER
102531: IFFALSE 102620
// begin temp_list = [ ] ;
102533: LD_ADDR_VAR 0 5
102537: PUSH
102538: EMPTY
102539: ST_TO_ADDR
// for j in temp do
102540: LD_ADDR_VAR 0 3
102544: PUSH
102545: LD_VAR 0 4
102549: PUSH
102550: FOR_IN
102551: IFFALSE 102576
// temp_list = temp_list ^ GetLives ( j ) ;
102553: LD_ADDR_VAR 0 5
102557: PUSH
102558: LD_VAR 0 5
102562: PUSH
102563: LD_VAR 0 3
102567: PPUSH
102568: CALL_OW 256
102572: ADD
102573: ST_TO_ADDR
102574: GO 102550
102576: POP
102577: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
102578: LD_ADDR_VAR 0 4
102582: PUSH
102583: LD_VAR 0 4
102587: PPUSH
102588: LD_VAR 0 5
102592: PPUSH
102593: CALL_OW 78
102597: ST_TO_ADDR
// ComAttackUnit ( pHGs , temp [ 1 ] ) ;
102598: LD_VAR 0 19
102602: PPUSH
102603: LD_VAR 0 4
102607: PUSH
102608: LD_INT 1
102610: ARRAY
102611: PPUSH
102612: CALL_OW 115
// break ;
102616: GO 102642
// end else
102618: GO 102640
// begin ComAttackUnit ( pHGs , i [ 1 ] ) ;
102620: LD_VAR 0 19
102624: PPUSH
102625: LD_VAR 0 2
102629: PUSH
102630: LD_INT 1
102632: ARRAY
102633: PPUSH
102634: CALL_OW 115
// break ;
102638: GO 102642
// end ; end ;
102640: GO 102478
102642: POP
102643: POP
// end ; if pRockets > 0 then
102644: LD_VAR 0 20
102648: PUSH
102649: LD_INT 0
102651: GREATER
102652: IFFALSE 102921
// begin Priority = [ tMortars , tControls , tRockets , tGuns , tBombs , tHovercrafts , tCargos , tSoldiers , tCivilians , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
102654: LD_ADDR_VAR 0 7
102658: PUSH
102659: LD_VAR 0 10
102663: PUSH
102664: LD_VAR 0 17
102668: PUSH
102669: LD_VAR 0 14
102673: PUSH
102674: LD_VAR 0 13
102678: PUSH
102679: LD_VAR 0 15
102683: PUSH
102684: LD_VAR 0 12
102688: PUSH
102689: LD_VAR 0 16
102693: PUSH
102694: LD_VAR 0 9
102698: PUSH
102699: LD_VAR 0 11
102703: PUSH
102704: LD_VAR 0 27
102708: PUSH
102709: LD_VAR 0 28
102713: PUSH
102714: LD_VAR 0 29
102718: PUSH
102719: LD_VAR 0 30
102723: PUSH
102724: LD_VAR 0 31
102728: PUSH
102729: EMPTY
102730: LIST
102731: LIST
102732: LIST
102733: LIST
102734: LIST
102735: LIST
102736: LIST
102737: LIST
102738: LIST
102739: LIST
102740: LIST
102741: LIST
102742: LIST
102743: LIST
102744: ST_TO_ADDR
// for i in priority do
102745: LD_ADDR_VAR 0 2
102749: PUSH
102750: LD_VAR 0 7
102754: PUSH
102755: FOR_IN
102756: IFFALSE 102919
// if i > 0 then
102758: LD_VAR 0 2
102762: PUSH
102763: LD_INT 0
102765: GREATER
102766: IFFALSE 102917
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
102768: LD_ADDR_VAR 0 4
102772: PUSH
102773: LD_VAR 0 2
102777: PPUSH
102778: LD_INT 3
102780: PUSH
102781: LD_INT 24
102783: PUSH
102784: LD_INT 700
102786: PUSH
102787: EMPTY
102788: LIST
102789: LIST
102790: PUSH
102791: EMPTY
102792: LIST
102793: LIST
102794: PPUSH
102795: CALL_OW 72
102799: ST_TO_ADDR
// if temp > 0 then
102800: LD_VAR 0 4
102804: PUSH
102805: LD_INT 0
102807: GREATER
102808: IFFALSE 102897
// begin temp_list = [ ] ;
102810: LD_ADDR_VAR 0 5
102814: PUSH
102815: EMPTY
102816: ST_TO_ADDR
// for j in temp do
102817: LD_ADDR_VAR 0 3
102821: PUSH
102822: LD_VAR 0 4
102826: PUSH
102827: FOR_IN
102828: IFFALSE 102853
// temp_list = temp_list ^ GetLives ( j ) ;
102830: LD_ADDR_VAR 0 5
102834: PUSH
102835: LD_VAR 0 5
102839: PUSH
102840: LD_VAR 0 3
102844: PPUSH
102845: CALL_OW 256
102849: ADD
102850: ST_TO_ADDR
102851: GO 102827
102853: POP
102854: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
102855: LD_ADDR_VAR 0 4
102859: PUSH
102860: LD_VAR 0 4
102864: PPUSH
102865: LD_VAR 0 5
102869: PPUSH
102870: CALL_OW 78
102874: ST_TO_ADDR
// ComAttackUnit ( pRockets , temp [ 1 ] ) ;
102875: LD_VAR 0 20
102879: PPUSH
102880: LD_VAR 0 4
102884: PUSH
102885: LD_INT 1
102887: ARRAY
102888: PPUSH
102889: CALL_OW 115
// break ;
102893: GO 102919
// end else
102895: GO 102917
// begin ComAttackUnit ( pRockets , i [ 1 ] ) ;
102897: LD_VAR 0 20
102901: PPUSH
102902: LD_VAR 0 2
102906: PUSH
102907: LD_INT 1
102909: ARRAY
102910: PPUSH
102911: CALL_OW 115
// break ;
102915: GO 102919
// end ; end ;
102917: GO 102755
102919: POP
102920: POP
// end ; if pLasers > 0 then
102921: LD_VAR 0 21
102925: PUSH
102926: LD_INT 0
102928: GREATER
102929: IFFALSE 103270
// begin Priority = [ tControls , tBombs , tRockets , tGuns , tHovercrafts , tCargos , tMortars , tSoldiers , tCivilians , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
102931: LD_ADDR_VAR 0 7
102935: PUSH
102936: LD_VAR 0 17
102940: PUSH
102941: LD_VAR 0 15
102945: PUSH
102946: LD_VAR 0 14
102950: PUSH
102951: LD_VAR 0 13
102955: PUSH
102956: LD_VAR 0 12
102960: PUSH
102961: LD_VAR 0 16
102965: PUSH
102966: LD_VAR 0 10
102970: PUSH
102971: LD_VAR 0 9
102975: PUSH
102976: LD_VAR 0 11
102980: PUSH
102981: LD_VAR 0 27
102985: PUSH
102986: LD_VAR 0 28
102990: PUSH
102991: LD_VAR 0 29
102995: PUSH
102996: LD_VAR 0 30
103000: PUSH
103001: LD_VAR 0 31
103005: PUSH
103006: EMPTY
103007: LIST
103008: LIST
103009: LIST
103010: LIST
103011: LIST
103012: LIST
103013: LIST
103014: LIST
103015: LIST
103016: LIST
103017: LIST
103018: LIST
103019: LIST
103020: LIST
103021: ST_TO_ADDR
// for i in priority do
103022: LD_ADDR_VAR 0 2
103026: PUSH
103027: LD_VAR 0 7
103031: PUSH
103032: FOR_IN
103033: IFFALSE 103268
// if i > 0 then
103035: LD_VAR 0 2
103039: PUSH
103040: LD_INT 0
103042: GREATER
103043: IFFALSE 103266
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
103045: LD_ADDR_VAR 0 4
103049: PUSH
103050: LD_VAR 0 2
103054: PPUSH
103055: LD_INT 3
103057: PUSH
103058: LD_INT 24
103060: PUSH
103061: LD_INT 700
103063: PUSH
103064: EMPTY
103065: LIST
103066: LIST
103067: PUSH
103068: EMPTY
103069: LIST
103070: LIST
103071: PPUSH
103072: CALL_OW 72
103076: ST_TO_ADDR
// if temp > 0 then
103077: LD_VAR 0 4
103081: PUSH
103082: LD_INT 0
103084: GREATER
103085: IFFALSE 103210
// begin temp_list = [ ] ;
103087: LD_ADDR_VAR 0 5
103091: PUSH
103092: EMPTY
103093: ST_TO_ADDR
// for j in temp do
103094: LD_ADDR_VAR 0 3
103098: PUSH
103099: LD_VAR 0 4
103103: PUSH
103104: FOR_IN
103105: IFFALSE 103130
// temp_list = temp_list ^ GetLives ( j ) ;
103107: LD_ADDR_VAR 0 5
103111: PUSH
103112: LD_VAR 0 5
103116: PUSH
103117: LD_VAR 0 3
103121: PPUSH
103122: CALL_OW 256
103126: ADD
103127: ST_TO_ADDR
103128: GO 103104
103130: POP
103131: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
103132: LD_ADDR_VAR 0 4
103136: PUSH
103137: LD_VAR 0 4
103141: PPUSH
103142: LD_VAR 0 5
103146: PPUSH
103147: CALL_OW 78
103151: ST_TO_ADDR
// if pLasers = 1 then
103152: LD_VAR 0 21
103156: PUSH
103157: LD_INT 1
103159: EQUAL
103160: IFFALSE 103182
// ComAttackUnit ( pLasers , temp [ 1 ] ) else
103162: LD_VAR 0 21
103166: PPUSH
103167: LD_VAR 0 4
103171: PUSH
103172: LD_INT 1
103174: ARRAY
103175: PPUSH
103176: CALL_OW 115
103180: GO 103206
// DoubleLaserAttack ( pLasers , temp [ 1 ] , Area_inaccessible , 1 ) ;
103182: LD_VAR 0 21
103186: PPUSH
103187: LD_VAR 0 4
103191: PUSH
103192: LD_INT 1
103194: ARRAY
103195: PPUSH
103196: LD_INT 41
103198: PPUSH
103199: LD_INT 1
103201: PPUSH
103202: CALL 105023 0 4
// break ;
103206: GO 103268
// end else
103208: GO 103266
// begin if pLasers = 1 then
103210: LD_VAR 0 21
103214: PUSH
103215: LD_INT 1
103217: EQUAL
103218: IFFALSE 103240
// ComAttackUnit ( pLasers , i [ 1 ] ) else
103220: LD_VAR 0 21
103224: PPUSH
103225: LD_VAR 0 2
103229: PUSH
103230: LD_INT 1
103232: ARRAY
103233: PPUSH
103234: CALL_OW 115
103238: GO 103264
// DoubleLaserAttack ( pLasers , i [ 1 ] , Area_inaccessible , 1 ) ;
103240: LD_VAR 0 21
103244: PPUSH
103245: LD_VAR 0 2
103249: PUSH
103250: LD_INT 1
103252: ARRAY
103253: PPUSH
103254: LD_INT 41
103256: PPUSH
103257: LD_INT 1
103259: PPUSH
103260: CALL 105023 0 4
// break ;
103264: GO 103268
// end ; end ;
103266: GO 103032
103268: POP
103269: POP
// end ; if pGatlings > 0 then
103270: LD_VAR 0 22
103274: PUSH
103275: LD_INT 0
103277: GREATER
103278: IFFALSE 103547
// begin Priority = [ tMortars , tSoldiers , tCivilians , tControls , tRockets , tGuns , tBombs , tHovercrafts , tCargos , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
103280: LD_ADDR_VAR 0 7
103284: PUSH
103285: LD_VAR 0 10
103289: PUSH
103290: LD_VAR 0 9
103294: PUSH
103295: LD_VAR 0 11
103299: PUSH
103300: LD_VAR 0 17
103304: PUSH
103305: LD_VAR 0 14
103309: PUSH
103310: LD_VAR 0 13
103314: PUSH
103315: LD_VAR 0 15
103319: PUSH
103320: LD_VAR 0 12
103324: PUSH
103325: LD_VAR 0 16
103329: PUSH
103330: LD_VAR 0 27
103334: PUSH
103335: LD_VAR 0 28
103339: PUSH
103340: LD_VAR 0 29
103344: PUSH
103345: LD_VAR 0 30
103349: PUSH
103350: LD_VAR 0 31
103354: PUSH
103355: EMPTY
103356: LIST
103357: LIST
103358: LIST
103359: LIST
103360: LIST
103361: LIST
103362: LIST
103363: LIST
103364: LIST
103365: LIST
103366: LIST
103367: LIST
103368: LIST
103369: LIST
103370: ST_TO_ADDR
// for i in priority do
103371: LD_ADDR_VAR 0 2
103375: PUSH
103376: LD_VAR 0 7
103380: PUSH
103381: FOR_IN
103382: IFFALSE 103545
// if i > 0 then
103384: LD_VAR 0 2
103388: PUSH
103389: LD_INT 0
103391: GREATER
103392: IFFALSE 103543
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
103394: LD_ADDR_VAR 0 4
103398: PUSH
103399: LD_VAR 0 2
103403: PPUSH
103404: LD_INT 3
103406: PUSH
103407: LD_INT 24
103409: PUSH
103410: LD_INT 700
103412: PUSH
103413: EMPTY
103414: LIST
103415: LIST
103416: PUSH
103417: EMPTY
103418: LIST
103419: LIST
103420: PPUSH
103421: CALL_OW 72
103425: ST_TO_ADDR
// if temp > 0 then
103426: LD_VAR 0 4
103430: PUSH
103431: LD_INT 0
103433: GREATER
103434: IFFALSE 103523
// begin temp_list = [ ] ;
103436: LD_ADDR_VAR 0 5
103440: PUSH
103441: EMPTY
103442: ST_TO_ADDR
// for j in temp do
103443: LD_ADDR_VAR 0 3
103447: PUSH
103448: LD_VAR 0 4
103452: PUSH
103453: FOR_IN
103454: IFFALSE 103479
// temp_list = temp_list ^ GetLives ( j ) ;
103456: LD_ADDR_VAR 0 5
103460: PUSH
103461: LD_VAR 0 5
103465: PUSH
103466: LD_VAR 0 3
103470: PPUSH
103471: CALL_OW 256
103475: ADD
103476: ST_TO_ADDR
103477: GO 103453
103479: POP
103480: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
103481: LD_ADDR_VAR 0 4
103485: PUSH
103486: LD_VAR 0 4
103490: PPUSH
103491: LD_VAR 0 5
103495: PPUSH
103496: CALL_OW 78
103500: ST_TO_ADDR
// ComAttackUnit ( pGatlings , temp [ 1 ] ) ;
103501: LD_VAR 0 22
103505: PPUSH
103506: LD_VAR 0 4
103510: PUSH
103511: LD_INT 1
103513: ARRAY
103514: PPUSH
103515: CALL_OW 115
// break ;
103519: GO 103545
// end else
103521: GO 103543
// begin ComAttackUnit ( pGatlings , i [ 1 ] ) ;
103523: LD_VAR 0 22
103527: PPUSH
103528: LD_VAR 0 2
103532: PUSH
103533: LD_INT 1
103535: ARRAY
103536: PPUSH
103537: CALL_OW 115
// break ;
103541: GO 103545
// end ; end ;
103543: GO 103381
103545: POP
103546: POP
// end ; if pBombs > 0 then
103547: LD_VAR 0 23
103551: PUSH
103552: LD_INT 0
103554: GREATER
103555: IFFALSE 103824
// begin Priority = [ tControls , tGuns , tRockets , tMortars , tSoldiers , tCivilians , tCargos , tHovercrafts , tBombs , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
103557: LD_ADDR_VAR 0 7
103561: PUSH
103562: LD_VAR 0 17
103566: PUSH
103567: LD_VAR 0 13
103571: PUSH
103572: LD_VAR 0 14
103576: PUSH
103577: LD_VAR 0 10
103581: PUSH
103582: LD_VAR 0 9
103586: PUSH
103587: LD_VAR 0 11
103591: PUSH
103592: LD_VAR 0 16
103596: PUSH
103597: LD_VAR 0 12
103601: PUSH
103602: LD_VAR 0 15
103606: PUSH
103607: LD_VAR 0 27
103611: PUSH
103612: LD_VAR 0 28
103616: PUSH
103617: LD_VAR 0 29
103621: PUSH
103622: LD_VAR 0 30
103626: PUSH
103627: LD_VAR 0 31
103631: PUSH
103632: EMPTY
103633: LIST
103634: LIST
103635: LIST
103636: LIST
103637: LIST
103638: LIST
103639: LIST
103640: LIST
103641: LIST
103642: LIST
103643: LIST
103644: LIST
103645: LIST
103646: LIST
103647: ST_TO_ADDR
// for i in priority do
103648: LD_ADDR_VAR 0 2
103652: PUSH
103653: LD_VAR 0 7
103657: PUSH
103658: FOR_IN
103659: IFFALSE 103822
// if i > 0 then
103661: LD_VAR 0 2
103665: PUSH
103666: LD_INT 0
103668: GREATER
103669: IFFALSE 103820
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
103671: LD_ADDR_VAR 0 4
103675: PUSH
103676: LD_VAR 0 2
103680: PPUSH
103681: LD_INT 3
103683: PUSH
103684: LD_INT 24
103686: PUSH
103687: LD_INT 700
103689: PUSH
103690: EMPTY
103691: LIST
103692: LIST
103693: PUSH
103694: EMPTY
103695: LIST
103696: LIST
103697: PPUSH
103698: CALL_OW 72
103702: ST_TO_ADDR
// if temp > 0 then
103703: LD_VAR 0 4
103707: PUSH
103708: LD_INT 0
103710: GREATER
103711: IFFALSE 103800
// begin temp_list = [ ] ;
103713: LD_ADDR_VAR 0 5
103717: PUSH
103718: EMPTY
103719: ST_TO_ADDR
// for j in temp do
103720: LD_ADDR_VAR 0 3
103724: PUSH
103725: LD_VAR 0 4
103729: PUSH
103730: FOR_IN
103731: IFFALSE 103756
// temp_list = temp_list ^ GetLives ( j ) ;
103733: LD_ADDR_VAR 0 5
103737: PUSH
103738: LD_VAR 0 5
103742: PUSH
103743: LD_VAR 0 3
103747: PPUSH
103748: CALL_OW 256
103752: ADD
103753: ST_TO_ADDR
103754: GO 103730
103756: POP
103757: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
103758: LD_ADDR_VAR 0 4
103762: PUSH
103763: LD_VAR 0 4
103767: PPUSH
103768: LD_VAR 0 5
103772: PPUSH
103773: CALL_OW 78
103777: ST_TO_ADDR
// ComAttackUnit ( pBombs , temp [ 1 ] ) ;
103778: LD_VAR 0 23
103782: PPUSH
103783: LD_VAR 0 4
103787: PUSH
103788: LD_INT 1
103790: ARRAY
103791: PPUSH
103792: CALL_OW 115
// break ;
103796: GO 103822
// end else
103798: GO 103820
// begin ComAttackUnit ( pBombs , i [ 1 ] ) ;
103800: LD_VAR 0 23
103804: PPUSH
103805: LD_VAR 0 2
103809: PUSH
103810: LD_INT 1
103812: ARRAY
103813: PPUSH
103814: CALL_OW 115
// break ;
103818: GO 103822
// end ; end ;
103820: GO 103658
103822: POP
103823: POP
// end ; if pRadar > 0 then
103824: LD_VAR 0 24
103828: PUSH
103829: LD_INT 0
103831: GREATER
103832: IFFALSE 104342
// if UnitFilter ( patrol_units diff pRadar , [ f_ok ] ) > 0 then
103834: LD_VAR 0 8
103838: PUSH
103839: LD_VAR 0 24
103843: DIFF
103844: PPUSH
103845: LD_INT 50
103847: PUSH
103848: EMPTY
103849: LIST
103850: PPUSH
103851: CALL_OW 72
103855: PUSH
103856: LD_INT 0
103858: GREATER
103859: IFFALSE 104201
// begin temp = [ 0 , 0 ] ;
103861: LD_ADDR_VAR 0 4
103865: PUSH
103866: LD_INT 0
103868: PUSH
103869: LD_INT 0
103871: PUSH
103872: EMPTY
103873: LIST
103874: LIST
103875: ST_TO_ADDR
// for i in UnitFilter ( patrol_units diff pRadar , [ f_ok ] ) do
103876: LD_ADDR_VAR 0 2
103880: PUSH
103881: LD_VAR 0 8
103885: PUSH
103886: LD_VAR 0 24
103890: DIFF
103891: PPUSH
103892: LD_INT 50
103894: PUSH
103895: EMPTY
103896: LIST
103897: PPUSH
103898: CALL_OW 72
103902: PUSH
103903: FOR_IN
103904: IFFALSE 103984
// begin temp = Replace ( temp , 1 , temp [ 1 ] + GetX ( i ) ) ;
103906: LD_ADDR_VAR 0 4
103910: PUSH
103911: LD_VAR 0 4
103915: PPUSH
103916: LD_INT 1
103918: PPUSH
103919: LD_VAR 0 4
103923: PUSH
103924: LD_INT 1
103926: ARRAY
103927: PUSH
103928: LD_VAR 0 2
103932: PPUSH
103933: CALL_OW 250
103937: PLUS
103938: PPUSH
103939: CALL_OW 1
103943: ST_TO_ADDR
// temp = Replace ( temp , 2 , temp [ 2 ] + GetY ( i ) ) ;
103944: LD_ADDR_VAR 0 4
103948: PUSH
103949: LD_VAR 0 4
103953: PPUSH
103954: LD_INT 2
103956: PPUSH
103957: LD_VAR 0 4
103961: PUSH
103962: LD_INT 2
103964: ARRAY
103965: PUSH
103966: LD_VAR 0 2
103970: PPUSH
103971: CALL_OW 251
103975: PLUS
103976: PPUSH
103977: CALL_OW 1
103981: ST_TO_ADDR
// end ;
103982: GO 103903
103984: POP
103985: POP
// temp = Replace ( temp , 1 , temp [ 1 ] / UnitFilter ( patrol_units diff [ pRadar , pCargo , pLapsers ] , [ f_ok ] ) ) ;
103986: LD_ADDR_VAR 0 4
103990: PUSH
103991: LD_VAR 0 4
103995: PPUSH
103996: LD_INT 1
103998: PPUSH
103999: LD_VAR 0 4
104003: PUSH
104004: LD_INT 1
104006: ARRAY
104007: PUSH
104008: LD_VAR 0 8
104012: PUSH
104013: LD_VAR 0 24
104017: PUSH
104018: LD_VAR 0 25
104022: PUSH
104023: LD_VAR 0 26
104027: PUSH
104028: EMPTY
104029: LIST
104030: LIST
104031: LIST
104032: DIFF
104033: PPUSH
104034: LD_INT 50
104036: PUSH
104037: EMPTY
104038: LIST
104039: PPUSH
104040: CALL_OW 72
104044: DIVREAL
104045: PPUSH
104046: CALL_OW 1
104050: ST_TO_ADDR
// temp = Replace ( temp , 2 , temp [ 2 ] / UnitFilter ( patrol_units diff [ pRadar , pCargo , pLapsers ] , [ f_ok ] ) ) ;
104051: LD_ADDR_VAR 0 4
104055: PUSH
104056: LD_VAR 0 4
104060: PPUSH
104061: LD_INT 2
104063: PPUSH
104064: LD_VAR 0 4
104068: PUSH
104069: LD_INT 2
104071: ARRAY
104072: PUSH
104073: LD_VAR 0 8
104077: PUSH
104078: LD_VAR 0 24
104082: PUSH
104083: LD_VAR 0 25
104087: PUSH
104088: LD_VAR 0 26
104092: PUSH
104093: EMPTY
104094: LIST
104095: LIST
104096: LIST
104097: DIFF
104098: PPUSH
104099: LD_INT 50
104101: PUSH
104102: EMPTY
104103: LIST
104104: PPUSH
104105: CALL_OW 72
104109: DIVREAL
104110: PPUSH
104111: CALL_OW 1
104115: ST_TO_ADDR
// if GetDistUnitXY ( pRadar , temp [ 1 ] , temp [ 2 ] ) > 10 then
104116: LD_VAR 0 24
104120: PPUSH
104121: LD_VAR 0 4
104125: PUSH
104126: LD_INT 1
104128: ARRAY
104129: PPUSH
104130: LD_VAR 0 4
104134: PUSH
104135: LD_INT 2
104137: ARRAY
104138: PPUSH
104139: CALL_OW 297
104143: PUSH
104144: LD_INT 10
104146: GREATER
104147: IFFALSE 104184
// ComMoveXY ( pRadar ^ pCargo , temp [ 1 ] , temp [ 2 ] ) else
104149: LD_VAR 0 24
104153: PUSH
104154: LD_VAR 0 25
104158: ADD
104159: PPUSH
104160: LD_VAR 0 4
104164: PUSH
104165: LD_INT 1
104167: ARRAY
104168: PPUSH
104169: LD_VAR 0 4
104173: PUSH
104174: LD_INT 2
104176: ARRAY
104177: PPUSH
104178: CALL_OW 111
104182: GO 104199
// ComStop ( pRadar ^ pCargo ) ;
104184: LD_VAR 0 24
104188: PUSH
104189: LD_VAR 0 25
104193: ADD
104194: PPUSH
104195: CALL_OW 141
// end else
104199: GO 104342
// begin if GetNation ( pRadar ) = nation_american or detected_enemies = 0 then
104201: LD_VAR 0 24
104205: PPUSH
104206: CALL_OW 248
104210: PUSH
104211: LD_INT 1
104213: EQUAL
104214: PUSH
104215: LD_VAR 0 6
104219: PUSH
104220: LD_INT 0
104222: EQUAL
104223: OR
104224: IFFALSE 104244
// ai_patrol_out = ai_patrol_out diff side else
104226: LD_ADDR_EXP 187
104230: PUSH
104231: LD_EXP 187
104235: PUSH
104236: LD_VAR 0 1
104240: DIFF
104241: ST_TO_ADDR
104242: GO 104342
// begin temp = NearestUnitToUnit ( detected_enemies , pRadar ) ;
104244: LD_ADDR_VAR 0 4
104248: PUSH
104249: LD_VAR 0 6
104253: PPUSH
104254: LD_VAR 0 24
104258: PPUSH
104259: CALL_OW 74
104263: ST_TO_ADDR
// if GetDistUnits ( pRadar , temp ) > 3 then
104264: LD_VAR 0 24
104268: PPUSH
104269: LD_VAR 0 4
104273: PPUSH
104274: CALL_OW 296
104278: PUSH
104279: LD_INT 3
104281: GREATER
104282: IFFALSE 104300
// ComMoveUnit ( pRadar , temp ) else
104284: LD_VAR 0 24
104288: PPUSH
104289: LD_VAR 0 4
104293: PPUSH
104294: CALL_OW 112
104298: GO 104342
// SetTaskList ( pRadar , [ [ K , 0 , 0 , 0 , 0 , 0 , 0 ] ] ) ;
104300: LD_VAR 0 24
104304: PPUSH
104305: LD_STRING K
104307: PUSH
104308: LD_INT 0
104310: PUSH
104311: LD_INT 0
104313: PUSH
104314: LD_INT 0
104316: PUSH
104317: LD_INT 0
104319: PUSH
104320: LD_INT 0
104322: PUSH
104323: LD_INT 0
104325: PUSH
104326: EMPTY
104327: LIST
104328: LIST
104329: LIST
104330: LIST
104331: LIST
104332: LIST
104333: LIST
104334: PUSH
104335: EMPTY
104336: LIST
104337: PPUSH
104338: CALL_OW 446
// end ; end ; if pLapsers > 0 then
104342: LD_VAR 0 26
104346: PUSH
104347: LD_INT 0
104349: GREATER
104350: IFFALSE 104570
// begin Priority = [ tMortars , tControls , tRockets , tGuns , tBombs , tHovercrafts , tCargos , tSoldiers , tCivilians , tAmLasers , tAmHgs , tAmRockets , tAmMedium , tbuilding ] ;
104352: LD_ADDR_VAR 0 7
104356: PUSH
104357: LD_VAR 0 10
104361: PUSH
104362: LD_VAR 0 17
104366: PUSH
104367: LD_VAR 0 14
104371: PUSH
104372: LD_VAR 0 13
104376: PUSH
104377: LD_VAR 0 15
104381: PUSH
104382: LD_VAR 0 12
104386: PUSH
104387: LD_VAR 0 16
104391: PUSH
104392: LD_VAR 0 9
104396: PUSH
104397: LD_VAR 0 11
104401: PUSH
104402: LD_VAR 0 27
104406: PUSH
104407: LD_VAR 0 28
104411: PUSH
104412: LD_VAR 0 29
104416: PUSH
104417: LD_VAR 0 30
104421: PUSH
104422: LD_VAR 0 31
104426: PUSH
104427: EMPTY
104428: LIST
104429: LIST
104430: LIST
104431: LIST
104432: LIST
104433: LIST
104434: LIST
104435: LIST
104436: LIST
104437: LIST
104438: LIST
104439: LIST
104440: LIST
104441: LIST
104442: ST_TO_ADDR
// for i in priority do
104443: LD_ADDR_VAR 0 2
104447: PUSH
104448: LD_VAR 0 7
104452: PUSH
104453: FOR_IN
104454: IFFALSE 104568
// if i > 0 then
104456: LD_VAR 0 2
104460: PUSH
104461: LD_INT 0
104463: GREATER
104464: IFFALSE 104566
// begin temp = i ;
104466: LD_ADDR_VAR 0 4
104470: PUSH
104471: LD_VAR 0 2
104475: ST_TO_ADDR
// temp_list = [ ] ;
104476: LD_ADDR_VAR 0 5
104480: PUSH
104481: EMPTY
104482: ST_TO_ADDR
// for j in temp do
104483: LD_ADDR_VAR 0 3
104487: PUSH
104488: LD_VAR 0 4
104492: PUSH
104493: FOR_IN
104494: IFFALSE 104528
// temp_list = temp_list ^ GetDistUnits ( patrol_units [ 1 ] , j ) ;
104496: LD_ADDR_VAR 0 5
104500: PUSH
104501: LD_VAR 0 5
104505: PUSH
104506: LD_VAR 0 8
104510: PUSH
104511: LD_INT 1
104513: ARRAY
104514: PPUSH
104515: LD_VAR 0 3
104519: PPUSH
104520: CALL_OW 296
104524: ADD
104525: ST_TO_ADDR
104526: GO 104493
104528: POP
104529: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
104530: LD_ADDR_VAR 0 4
104534: PUSH
104535: LD_VAR 0 4
104539: PPUSH
104540: LD_VAR 0 5
104544: PPUSH
104545: CALL_OW 78
104549: ST_TO_ADDR
// ComMoveUnit ( pLapsers , temp ) ;
104550: LD_VAR 0 26
104554: PPUSH
104555: LD_VAR 0 4
104559: PPUSH
104560: CALL_OW 112
// break ;
104564: GO 104568
// end ;
104566: GO 104453
104568: POP
104569: POP
// end ; end else
104570: GO 105015
// if ai_patrol_PathChoice [ side ] = 5 then
104572: LD_EXP 192
104576: PUSH
104577: LD_VAR 0 1
104581: ARRAY
104582: PUSH
104583: LD_INT 5
104585: EQUAL
104586: IFFALSE 104762
// begin temp = FilterUnitsInArea ( [ base_legion , base_us ] [ side ] , [ f_side , 2 ] ) ^ FilterUnitsInArea ( [ base_legion_perimeter , base_us_perimeter ] [ side ] , [ f_side , 2 ] ) ;
104588: LD_ADDR_VAR 0 4
104592: PUSH
104593: LD_INT 1
104595: PUSH
104596: LD_INT 3
104598: PUSH
104599: EMPTY
104600: LIST
104601: LIST
104602: PUSH
104603: LD_VAR 0 1
104607: ARRAY
104608: PPUSH
104609: LD_INT 22
104611: PUSH
104612: LD_INT 2
104614: PUSH
104615: EMPTY
104616: LIST
104617: LIST
104618: PPUSH
104619: CALL_OW 70
104623: PUSH
104624: LD_INT 13
104626: PUSH
104627: LD_INT 12
104629: PUSH
104630: EMPTY
104631: LIST
104632: LIST
104633: PUSH
104634: LD_VAR 0 1
104638: ARRAY
104639: PPUSH
104640: LD_INT 22
104642: PUSH
104643: LD_INT 2
104645: PUSH
104646: EMPTY
104647: LIST
104648: LIST
104649: PPUSH
104650: CALL_OW 70
104654: ADD
104655: ST_TO_ADDR
// if temp > 0 then
104656: LD_VAR 0 4
104660: PUSH
104661: LD_INT 0
104663: GREATER
104664: IFFALSE 104721
// begin i = NearestUnitToUnit ( temp , patrol_units [ 1 ] ) ;
104666: LD_ADDR_VAR 0 2
104670: PUSH
104671: LD_VAR 0 4
104675: PPUSH
104676: LD_VAR 0 8
104680: PUSH
104681: LD_INT 1
104683: ARRAY
104684: PPUSH
104685: CALL_OW 74
104689: ST_TO_ADDR
// commovexy ( patrol_units , GetX ( i ) , GetY ( i ) ) ;
104690: LD_VAR 0 8
104694: PPUSH
104695: LD_VAR 0 2
104699: PPUSH
104700: CALL_OW 250
104704: PPUSH
104705: LD_VAR 0 2
104709: PPUSH
104710: CALL_OW 251
104714: PPUSH
104715: CALL_OW 111
// end else
104719: GO 104760
// begin ai_patrol_out = ai_patrol_out diff side ;
104721: LD_ADDR_EXP 187
104725: PUSH
104726: LD_EXP 187
104730: PUSH
104731: LD_VAR 0 1
104735: DIFF
104736: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , side , 3 3$0 ) ;
104737: LD_ADDR_EXP 184
104741: PUSH
104742: LD_EXP 184
104746: PPUSH
104747: LD_VAR 0 1
104751: PPUSH
104752: LD_INT 6300
104754: PPUSH
104755: CALL_OW 1
104759: ST_TO_ADDR
// end ; end else
104760: GO 105015
// begin if UnitFilter ( patrol_units , [ f_not , [ f_distxy , ai_patrol_path [ side ] [ ai_patrol_hexcount [ side ] ] [ 1 ] , ai_patrol_path [ side ] [ ai_patrol_hexcount [ side ] ] [ 2 ] , 15 ] ] ) = 0 then
104762: LD_VAR 0 8
104766: PPUSH
104767: LD_INT 3
104769: PUSH
104770: LD_INT 92
104772: PUSH
104773: LD_EXP 188
104777: PUSH
104778: LD_VAR 0 1
104782: ARRAY
104783: PUSH
104784: LD_EXP 189
104788: PUSH
104789: LD_VAR 0 1
104793: ARRAY
104794: ARRAY
104795: PUSH
104796: LD_INT 1
104798: ARRAY
104799: PUSH
104800: LD_EXP 188
104804: PUSH
104805: LD_VAR 0 1
104809: ARRAY
104810: PUSH
104811: LD_EXP 189
104815: PUSH
104816: LD_VAR 0 1
104820: ARRAY
104821: ARRAY
104822: PUSH
104823: LD_INT 2
104825: ARRAY
104826: PUSH
104827: LD_INT 15
104829: PUSH
104830: EMPTY
104831: LIST
104832: LIST
104833: LIST
104834: LIST
104835: PUSH
104836: EMPTY
104837: LIST
104838: LIST
104839: PPUSH
104840: CALL_OW 72
104844: PUSH
104845: LD_INT 0
104847: EQUAL
104848: IFFALSE 104952
// begin if ai_patrol_hexcount [ side ] = ai_patrol_path [ side ] then
104850: LD_EXP 189
104854: PUSH
104855: LD_VAR 0 1
104859: ARRAY
104860: PUSH
104861: LD_EXP 188
104865: PUSH
104866: LD_VAR 0 1
104870: ARRAY
104871: EQUAL
104872: IFFALSE 104915
// begin ai_patrol_out = ai_patrol_out diff side ;
104874: LD_ADDR_EXP 187
104878: PUSH
104879: LD_EXP 187
104883: PUSH
104884: LD_VAR 0 1
104888: DIFF
104889: ST_TO_ADDR
// ai_patrol_timer = Replace ( ai_patrol_timer , side , 3 3$0 ) ;
104890: LD_ADDR_EXP 184
104894: PUSH
104895: LD_EXP 184
104899: PPUSH
104900: LD_VAR 0 1
104904: PPUSH
104905: LD_INT 6300
104907: PPUSH
104908: CALL_OW 1
104912: ST_TO_ADDR
// end else
104913: GO 104950
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , side , ai_patrol_hexcount [ side ] + 1 ) ;
104915: LD_ADDR_EXP 189
104919: PUSH
104920: LD_EXP 189
104924: PPUSH
104925: LD_VAR 0 1
104929: PPUSH
104930: LD_EXP 189
104934: PUSH
104935: LD_VAR 0 1
104939: ARRAY
104940: PUSH
104941: LD_INT 1
104943: PLUS
104944: PPUSH
104945: CALL_OW 1
104949: ST_TO_ADDR
// end else
104950: GO 105015
// commovexy ( patrol_units , ai_patrol_path [ side ] [ ai_patrol_hexcount [ side ] ] [ 1 ] , ai_patrol_path [ side ] [ ai_patrol_hexcount [ side ] ] [ 2 ] ) ;
104952: LD_VAR 0 8
104956: PPUSH
104957: LD_EXP 188
104961: PUSH
104962: LD_VAR 0 1
104966: ARRAY
104967: PUSH
104968: LD_EXP 189
104972: PUSH
104973: LD_VAR 0 1
104977: ARRAY
104978: ARRAY
104979: PUSH
104980: LD_INT 1
104982: ARRAY
104983: PPUSH
104984: LD_EXP 188
104988: PUSH
104989: LD_VAR 0 1
104993: ARRAY
104994: PUSH
104995: LD_EXP 189
104999: PUSH
105000: LD_VAR 0 1
105004: ARRAY
105005: ARRAY
105006: PUSH
105007: LD_INT 2
105009: ARRAY
105010: PPUSH
105011: CALL_OW 111
// end ; end ;
105015: GO 100168
105017: POP
105018: POP
// enable ;
105019: ENABLE
// end ;
105020: PPOPN 31
105022: END
// function DoubleLaserAttack ( Units , AllTargets , Area , val ) ; var Lasers , LaserGroups , L1 , L2 , Target , temp_target_list , TargetX , TargetY ; var hex_list1 , hex_list2 , hex1 , hex2 , temp_hex , choosen_hexes , temp_list_x , temp_list_y , chosen_list ; var i , j , un , temp , temp_list , dist , dist1 , dist2 , common_hex ; var dir0_x , dir0_y , dir1_x , dir1_y , dir2_x , dir2_y , dir3_x , dir3_y , dir4_x , dir4_y , dir5_x , dir5_y , dir6_x , dir6_y , dir7_x , dir7_y , dir8_x , dir8_y , dir9_x , dir9_y , dir10_x , dir10_y , dir11_x , dir11_y ; begin
105023: LD_INT 0
105025: PPUSH
105026: PPUSH
105027: PPUSH
105028: PPUSH
105029: PPUSH
105030: PPUSH
105031: PPUSH
105032: PPUSH
105033: PPUSH
105034: PPUSH
105035: PPUSH
105036: PPUSH
105037: PPUSH
105038: PPUSH
105039: PPUSH
105040: PPUSH
105041: PPUSH
105042: PPUSH
105043: PPUSH
105044: PPUSH
105045: PPUSH
105046: PPUSH
105047: PPUSH
105048: PPUSH
105049: PPUSH
105050: PPUSH
105051: PPUSH
105052: PPUSH
105053: PPUSH
105054: PPUSH
105055: PPUSH
105056: PPUSH
105057: PPUSH
105058: PPUSH
105059: PPUSH
105060: PPUSH
105061: PPUSH
105062: PPUSH
105063: PPUSH
105064: PPUSH
105065: PPUSH
105066: PPUSH
105067: PPUSH
105068: PPUSH
105069: PPUSH
105070: PPUSH
105071: PPUSH
105072: PPUSH
105073: PPUSH
105074: PPUSH
105075: PPUSH
// if AllTargets = 0 then
105076: LD_VAR 0 2
105080: PUSH
105081: LD_INT 0
105083: EQUAL
105084: IFFALSE 105088
// exit ;
105086: GO 108763
// temp_list = UnitFilter ( Units , [ f_not , [ f_weapon , us_double_laser ] ] ) ;
105088: LD_ADDR_VAR 0 27
105092: PUSH
105093: LD_VAR 0 1
105097: PPUSH
105098: LD_INT 3
105100: PUSH
105101: LD_INT 34
105103: PUSH
105104: LD_INT 10
105106: PUSH
105107: EMPTY
105108: LIST
105109: LIST
105110: PUSH
105111: EMPTY
105112: LIST
105113: LIST
105114: PPUSH
105115: CALL_OW 72
105119: ST_TO_ADDR
// if temp_list > 0 then
105120: LD_VAR 0 27
105124: PUSH
105125: LD_INT 0
105127: GREATER
105128: IFFALSE 105148
// ComAttackUnit ( temp_list , AllTargets [ 1 ] ) ;
105130: LD_VAR 0 27
105134: PPUSH
105135: LD_VAR 0 2
105139: PUSH
105140: LD_INT 1
105142: ARRAY
105143: PPUSH
105144: CALL_OW 115
// Lasers = UnitFilter ( Units , [ f_weapon , us_double_laser ] ) ;
105148: LD_ADDR_VAR 0 6
105152: PUSH
105153: LD_VAR 0 1
105157: PPUSH
105158: LD_INT 34
105160: PUSH
105161: LD_INT 10
105163: PUSH
105164: EMPTY
105165: LIST
105166: LIST
105167: PPUSH
105168: CALL_OW 72
105172: ST_TO_ADDR
// if Lasers < 2 then
105173: LD_VAR 0 6
105177: PUSH
105178: LD_INT 2
105180: LESS
105181: IFFALSE 105205
// begin ComAttackUnit ( Lasers , AllTargets [ 1 ] ) ;
105183: LD_VAR 0 6
105187: PPUSH
105188: LD_VAR 0 2
105192: PUSH
105193: LD_INT 1
105195: ARRAY
105196: PPUSH
105197: CALL_OW 115
// exit ;
105201: GO 108763
// end else
105203: GO 105316
// begin LaserGroups = [ ] ;
105205: LD_ADDR_VAR 0 7
105209: PUSH
105210: EMPTY
105211: ST_TO_ADDR
// while Lasers > 1 do
105212: LD_VAR 0 6
105216: PUSH
105217: LD_INT 1
105219: GREATER
105220: IFFALSE 105316
// begin temp = [ Lasers [ 1 ] , Lasers [ 2 ] ] ;
105222: LD_ADDR_VAR 0 26
105226: PUSH
105227: LD_VAR 0 6
105231: PUSH
105232: LD_INT 1
105234: ARRAY
105235: PUSH
105236: LD_VAR 0 6
105240: PUSH
105241: LD_INT 2
105243: ARRAY
105244: PUSH
105245: EMPTY
105246: LIST
105247: LIST
105248: ST_TO_ADDR
// Lasers = Lasers diff temp ;
105249: LD_ADDR_VAR 0 6
105253: PUSH
105254: LD_VAR 0 6
105258: PUSH
105259: LD_VAR 0 26
105263: DIFF
105264: ST_TO_ADDR
// if Lasers = 1 then
105265: LD_VAR 0 6
105269: PUSH
105270: LD_INT 1
105272: EQUAL
105273: IFFALSE 105295
// temp = temp ^ Lasers [ 1 ] ;
105275: LD_ADDR_VAR 0 26
105279: PUSH
105280: LD_VAR 0 26
105284: PUSH
105285: LD_VAR 0 6
105289: PUSH
105290: LD_INT 1
105292: ARRAY
105293: ADD
105294: ST_TO_ADDR
// LaserGroups = LaserGroups ^ [ temp ] ;
105295: LD_ADDR_VAR 0 7
105299: PUSH
105300: LD_VAR 0 7
105304: PUSH
105305: LD_VAR 0 26
105309: PUSH
105310: EMPTY
105311: LIST
105312: ADD
105313: ST_TO_ADDR
// end ;
105314: GO 105212
// end ; if val < 0 then
105316: LD_VAR 0 4
105320: PUSH
105321: LD_INT 0
105323: LESS
105324: IFFALSE 105334
// val = 0 ;
105326: LD_ADDR_VAR 0 4
105330: PUSH
105331: LD_INT 0
105333: ST_TO_ADDR
// if val > 2 then
105334: LD_VAR 0 4
105338: PUSH
105339: LD_INT 2
105341: GREATER
105342: IFFALSE 105352
// val = 2 ;
105344: LD_ADDR_VAR 0 4
105348: PUSH
105349: LD_INT 2
105351: ST_TO_ADDR
// Dir0_X = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
105352: LD_ADDR_VAR 0 32
105356: PUSH
105357: LD_INT 0
105359: PUSH
105360: LD_INT 0
105362: PUSH
105363: LD_INT 0
105365: PUSH
105366: LD_INT 0
105368: PUSH
105369: LD_INT 0
105371: PUSH
105372: LD_INT 0
105374: PUSH
105375: LD_INT 0
105377: PUSH
105378: EMPTY
105379: LIST
105380: LIST
105381: LIST
105382: LIST
105383: LIST
105384: LIST
105385: LIST
105386: ST_TO_ADDR
// Dir0_Y = [ - 3 , - 5 , - 7 , - 9 , - 11 , - 13 , - 15 ] ;
105387: LD_ADDR_VAR 0 33
105391: PUSH
105392: LD_INT 3
105394: NEG
105395: PUSH
105396: LD_INT 5
105398: NEG
105399: PUSH
105400: LD_INT 7
105402: NEG
105403: PUSH
105404: LD_INT 9
105406: NEG
105407: PUSH
105408: LD_INT 11
105410: NEG
105411: PUSH
105412: LD_INT 13
105414: NEG
105415: PUSH
105416: LD_INT 15
105418: NEG
105419: PUSH
105420: EMPTY
105421: LIST
105422: LIST
105423: LIST
105424: LIST
105425: LIST
105426: LIST
105427: LIST
105428: ST_TO_ADDR
// Dir1_X = [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
105429: LD_ADDR_VAR 0 34
105433: PUSH
105434: LD_INT 2
105436: PUSH
105437: LD_INT 3
105439: PUSH
105440: LD_INT 4
105442: PUSH
105443: LD_INT 5
105445: PUSH
105446: LD_INT 6
105448: PUSH
105449: LD_INT 7
105451: PUSH
105452: LD_INT 8
105454: PUSH
105455: EMPTY
105456: LIST
105457: LIST
105458: LIST
105459: LIST
105460: LIST
105461: LIST
105462: LIST
105463: ST_TO_ADDR
// Dir1_Y = [ - 2 , - 3 , - 4 , - 5 , - 6 , - 7 , - 8 ] ;
105464: LD_ADDR_VAR 0 35
105468: PUSH
105469: LD_INT 2
105471: NEG
105472: PUSH
105473: LD_INT 3
105475: NEG
105476: PUSH
105477: LD_INT 4
105479: NEG
105480: PUSH
105481: LD_INT 5
105483: NEG
105484: PUSH
105485: LD_INT 6
105487: NEG
105488: PUSH
105489: LD_INT 7
105491: NEG
105492: PUSH
105493: LD_INT 8
105495: NEG
105496: PUSH
105497: EMPTY
105498: LIST
105499: LIST
105500: LIST
105501: LIST
105502: LIST
105503: LIST
105504: LIST
105505: ST_TO_ADDR
// Dir2_X = [ 3 , 5 , 7 , 9 , 11 , 13 , 15 ] ;
105506: LD_ADDR_VAR 0 36
105510: PUSH
105511: LD_INT 3
105513: PUSH
105514: LD_INT 5
105516: PUSH
105517: LD_INT 7
105519: PUSH
105520: LD_INT 9
105522: PUSH
105523: LD_INT 11
105525: PUSH
105526: LD_INT 13
105528: PUSH
105529: LD_INT 15
105531: PUSH
105532: EMPTY
105533: LIST
105534: LIST
105535: LIST
105536: LIST
105537: LIST
105538: LIST
105539: LIST
105540: ST_TO_ADDR
// Dir2_Y = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
105541: LD_ADDR_VAR 0 37
105545: PUSH
105546: LD_INT 0
105548: PUSH
105549: LD_INT 0
105551: PUSH
105552: LD_INT 0
105554: PUSH
105555: LD_INT 0
105557: PUSH
105558: LD_INT 0
105560: PUSH
105561: LD_INT 0
105563: PUSH
105564: LD_INT 0
105566: PUSH
105567: EMPTY
105568: LIST
105569: LIST
105570: LIST
105571: LIST
105572: LIST
105573: LIST
105574: LIST
105575: ST_TO_ADDR
// Dir3_X = [ 4 , 6 , 8 , 10 , 12 , 14 , 16 ] ;
105576: LD_ADDR_VAR 0 38
105580: PUSH
105581: LD_INT 4
105583: PUSH
105584: LD_INT 6
105586: PUSH
105587: LD_INT 8
105589: PUSH
105590: LD_INT 10
105592: PUSH
105593: LD_INT 12
105595: PUSH
105596: LD_INT 14
105598: PUSH
105599: LD_INT 16
105601: PUSH
105602: EMPTY
105603: LIST
105604: LIST
105605: LIST
105606: LIST
105607: LIST
105608: LIST
105609: LIST
105610: ST_TO_ADDR
// Dir3_Y = [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
105611: LD_ADDR_VAR 0 39
105615: PUSH
105616: LD_INT 2
105618: PUSH
105619: LD_INT 3
105621: PUSH
105622: LD_INT 4
105624: PUSH
105625: LD_INT 5
105627: PUSH
105628: LD_INT 6
105630: PUSH
105631: LD_INT 7
105633: PUSH
105634: LD_INT 8
105636: PUSH
105637: EMPTY
105638: LIST
105639: LIST
105640: LIST
105641: LIST
105642: LIST
105643: LIST
105644: LIST
105645: ST_TO_ADDR
// Dir4_X = [ 4 , 5 , 7 , 9 , 11 , 13 , 15 ] ;
105646: LD_ADDR_VAR 0 40
105650: PUSH
105651: LD_INT 4
105653: PUSH
105654: LD_INT 5
105656: PUSH
105657: LD_INT 7
105659: PUSH
105660: LD_INT 9
105662: PUSH
105663: LD_INT 11
105665: PUSH
105666: LD_INT 13
105668: PUSH
105669: LD_INT 15
105671: PUSH
105672: EMPTY
105673: LIST
105674: LIST
105675: LIST
105676: LIST
105677: LIST
105678: LIST
105679: LIST
105680: ST_TO_ADDR
// Dir4_Y = [ 4 , 5 , 7 , 9 , 11 , 13 , 15 ] ;
105681: LD_ADDR_VAR 0 41
105685: PUSH
105686: LD_INT 4
105688: PUSH
105689: LD_INT 5
105691: PUSH
105692: LD_INT 7
105694: PUSH
105695: LD_INT 9
105697: PUSH
105698: LD_INT 11
105700: PUSH
105701: LD_INT 13
105703: PUSH
105704: LD_INT 15
105706: PUSH
105707: EMPTY
105708: LIST
105709: LIST
105710: LIST
105711: LIST
105712: LIST
105713: LIST
105714: LIST
105715: ST_TO_ADDR
// Dir5_X = [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
105716: LD_ADDR_VAR 0 42
105720: PUSH
105721: LD_INT 2
105723: PUSH
105724: LD_INT 3
105726: PUSH
105727: LD_INT 4
105729: PUSH
105730: LD_INT 5
105732: PUSH
105733: LD_INT 6
105735: PUSH
105736: LD_INT 7
105738: PUSH
105739: LD_INT 8
105741: PUSH
105742: EMPTY
105743: LIST
105744: LIST
105745: LIST
105746: LIST
105747: LIST
105748: LIST
105749: LIST
105750: ST_TO_ADDR
// Dir5_Y = [ 4 , 6 , 8 , 10 , 12 , 14 , 16 ] ;
105751: LD_ADDR_VAR 0 43
105755: PUSH
105756: LD_INT 4
105758: PUSH
105759: LD_INT 6
105761: PUSH
105762: LD_INT 8
105764: PUSH
105765: LD_INT 10
105767: PUSH
105768: LD_INT 12
105770: PUSH
105771: LD_INT 14
105773: PUSH
105774: LD_INT 16
105776: PUSH
105777: EMPTY
105778: LIST
105779: LIST
105780: LIST
105781: LIST
105782: LIST
105783: LIST
105784: LIST
105785: ST_TO_ADDR
// Dir6_X = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
105786: LD_ADDR_VAR 0 44
105790: PUSH
105791: LD_INT 0
105793: PUSH
105794: LD_INT 0
105796: PUSH
105797: LD_INT 0
105799: PUSH
105800: LD_INT 0
105802: PUSH
105803: LD_INT 0
105805: PUSH
105806: LD_INT 0
105808: PUSH
105809: LD_INT 0
105811: PUSH
105812: EMPTY
105813: LIST
105814: LIST
105815: LIST
105816: LIST
105817: LIST
105818: LIST
105819: LIST
105820: ST_TO_ADDR
// Dir6_Y = [ 3 , 5 , 7 , 9 , 11 , 13 , 15 ] ;
105821: LD_ADDR_VAR 0 45
105825: PUSH
105826: LD_INT 3
105828: PUSH
105829: LD_INT 5
105831: PUSH
105832: LD_INT 7
105834: PUSH
105835: LD_INT 9
105837: PUSH
105838: LD_INT 11
105840: PUSH
105841: LD_INT 13
105843: PUSH
105844: LD_INT 15
105846: PUSH
105847: EMPTY
105848: LIST
105849: LIST
105850: LIST
105851: LIST
105852: LIST
105853: LIST
105854: LIST
105855: ST_TO_ADDR
// Dir7_X = [ - 2 , - 3 , - 4 , - 5 , - 6 , - 7 , - 8 ] ;
105856: LD_ADDR_VAR 0 46
105860: PUSH
105861: LD_INT 2
105863: NEG
105864: PUSH
105865: LD_INT 3
105867: NEG
105868: PUSH
105869: LD_INT 4
105871: NEG
105872: PUSH
105873: LD_INT 5
105875: NEG
105876: PUSH
105877: LD_INT 6
105879: NEG
105880: PUSH
105881: LD_INT 7
105883: NEG
105884: PUSH
105885: LD_INT 8
105887: NEG
105888: PUSH
105889: EMPTY
105890: LIST
105891: LIST
105892: LIST
105893: LIST
105894: LIST
105895: LIST
105896: LIST
105897: ST_TO_ADDR
// Dir7_Y = [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
105898: LD_ADDR_VAR 0 47
105902: PUSH
105903: LD_INT 2
105905: PUSH
105906: LD_INT 3
105908: PUSH
105909: LD_INT 4
105911: PUSH
105912: LD_INT 5
105914: PUSH
105915: LD_INT 6
105917: PUSH
105918: LD_INT 7
105920: PUSH
105921: LD_INT 8
105923: PUSH
105924: EMPTY
105925: LIST
105926: LIST
105927: LIST
105928: LIST
105929: LIST
105930: LIST
105931: LIST
105932: ST_TO_ADDR
// Dir8_X = [ - 3 , - 5 , - 7 , - 9 , - 11 , - 13 , - 15 ] ;
105933: LD_ADDR_VAR 0 48
105937: PUSH
105938: LD_INT 3
105940: NEG
105941: PUSH
105942: LD_INT 5
105944: NEG
105945: PUSH
105946: LD_INT 7
105948: NEG
105949: PUSH
105950: LD_INT 9
105952: NEG
105953: PUSH
105954: LD_INT 11
105956: NEG
105957: PUSH
105958: LD_INT 13
105960: NEG
105961: PUSH
105962: LD_INT 15
105964: NEG
105965: PUSH
105966: EMPTY
105967: LIST
105968: LIST
105969: LIST
105970: LIST
105971: LIST
105972: LIST
105973: LIST
105974: ST_TO_ADDR
// Dir8_Y = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
105975: LD_ADDR_VAR 0 49
105979: PUSH
105980: LD_INT 0
105982: PUSH
105983: LD_INT 0
105985: PUSH
105986: LD_INT 0
105988: PUSH
105989: LD_INT 0
105991: PUSH
105992: LD_INT 0
105994: PUSH
105995: LD_INT 0
105997: PUSH
105998: LD_INT 0
106000: PUSH
106001: EMPTY
106002: LIST
106003: LIST
106004: LIST
106005: LIST
106006: LIST
106007: LIST
106008: LIST
106009: ST_TO_ADDR
// Dir9_X = [ - 4 , - 6 , - 8 , - 10 , - 12 , - 14 , - 16 ] ;
106010: LD_ADDR_VAR 0 50
106014: PUSH
106015: LD_INT 4
106017: NEG
106018: PUSH
106019: LD_INT 6
106021: NEG
106022: PUSH
106023: LD_INT 8
106025: NEG
106026: PUSH
106027: LD_INT 10
106029: NEG
106030: PUSH
106031: LD_INT 12
106033: NEG
106034: PUSH
106035: LD_INT 14
106037: NEG
106038: PUSH
106039: LD_INT 16
106041: NEG
106042: PUSH
106043: EMPTY
106044: LIST
106045: LIST
106046: LIST
106047: LIST
106048: LIST
106049: LIST
106050: LIST
106051: ST_TO_ADDR
// Dir9_Y = [ - 2 , - 3 , - 4 , - 5 , - 6 , - 7 , - 8 ] ;
106052: LD_ADDR_VAR 0 51
106056: PUSH
106057: LD_INT 2
106059: NEG
106060: PUSH
106061: LD_INT 3
106063: NEG
106064: PUSH
106065: LD_INT 4
106067: NEG
106068: PUSH
106069: LD_INT 5
106071: NEG
106072: PUSH
106073: LD_INT 6
106075: NEG
106076: PUSH
106077: LD_INT 7
106079: NEG
106080: PUSH
106081: LD_INT 8
106083: NEG
106084: PUSH
106085: EMPTY
106086: LIST
106087: LIST
106088: LIST
106089: LIST
106090: LIST
106091: LIST
106092: LIST
106093: ST_TO_ADDR
// Dir10_X = [ - 3 , - 5 , - 7 , - 9 , - 11 , - 13 , - 15 ] ;
106094: LD_ADDR_VAR 0 52
106098: PUSH
106099: LD_INT 3
106101: NEG
106102: PUSH
106103: LD_INT 5
106105: NEG
106106: PUSH
106107: LD_INT 7
106109: NEG
106110: PUSH
106111: LD_INT 9
106113: NEG
106114: PUSH
106115: LD_INT 11
106117: NEG
106118: PUSH
106119: LD_INT 13
106121: NEG
106122: PUSH
106123: LD_INT 15
106125: NEG
106126: PUSH
106127: EMPTY
106128: LIST
106129: LIST
106130: LIST
106131: LIST
106132: LIST
106133: LIST
106134: LIST
106135: ST_TO_ADDR
// Dir10_Y = [ - 3 , - 5 , - 7 , - 9 , - 11 , - 13 , - 15 ] ;
106136: LD_ADDR_VAR 0 53
106140: PUSH
106141: LD_INT 3
106143: NEG
106144: PUSH
106145: LD_INT 5
106147: NEG
106148: PUSH
106149: LD_INT 7
106151: NEG
106152: PUSH
106153: LD_INT 9
106155: NEG
106156: PUSH
106157: LD_INT 11
106159: NEG
106160: PUSH
106161: LD_INT 13
106163: NEG
106164: PUSH
106165: LD_INT 15
106167: NEG
106168: PUSH
106169: EMPTY
106170: LIST
106171: LIST
106172: LIST
106173: LIST
106174: LIST
106175: LIST
106176: LIST
106177: ST_TO_ADDR
// Dir11_X = [ - 2 , - 3 , - 4 , - 5 , - 6 , - 7 , - 8 ] ;
106178: LD_ADDR_VAR 0 54
106182: PUSH
106183: LD_INT 2
106185: NEG
106186: PUSH
106187: LD_INT 3
106189: NEG
106190: PUSH
106191: LD_INT 4
106193: NEG
106194: PUSH
106195: LD_INT 5
106197: NEG
106198: PUSH
106199: LD_INT 6
106201: NEG
106202: PUSH
106203: LD_INT 7
106205: NEG
106206: PUSH
106207: LD_INT 8
106209: NEG
106210: PUSH
106211: EMPTY
106212: LIST
106213: LIST
106214: LIST
106215: LIST
106216: LIST
106217: LIST
106218: LIST
106219: ST_TO_ADDR
// Dir11_Y = [ - 4 , - 6 , - 8 , - 10 , - 12 , - 14 , - 16 ] ;
106220: LD_ADDR_VAR 0 55
106224: PUSH
106225: LD_INT 4
106227: NEG
106228: PUSH
106229: LD_INT 6
106231: NEG
106232: PUSH
106233: LD_INT 8
106235: NEG
106236: PUSH
106237: LD_INT 10
106239: NEG
106240: PUSH
106241: LD_INT 12
106243: NEG
106244: PUSH
106245: LD_INT 14
106247: NEG
106248: PUSH
106249: LD_INT 16
106251: NEG
106252: PUSH
106253: EMPTY
106254: LIST
106255: LIST
106256: LIST
106257: LIST
106258: LIST
106259: LIST
106260: LIST
106261: ST_TO_ADDR
// temp_list_x = [ dir0_x , dir1_x , dir2_x , dir3_x , dir4_x , dir5_x , dir6_x , dir7_x , dir8_x , dir9_x , dir10_x , dir11_x ] ;
106262: LD_ADDR_VAR 0 20
106266: PUSH
106267: LD_VAR 0 32
106271: PUSH
106272: LD_VAR 0 34
106276: PUSH
106277: LD_VAR 0 36
106281: PUSH
106282: LD_VAR 0 38
106286: PUSH
106287: LD_VAR 0 40
106291: PUSH
106292: LD_VAR 0 42
106296: PUSH
106297: LD_VAR 0 44
106301: PUSH
106302: LD_VAR 0 46
106306: PUSH
106307: LD_VAR 0 48
106311: PUSH
106312: LD_VAR 0 50
106316: PUSH
106317: LD_VAR 0 52
106321: PUSH
106322: LD_VAR 0 54
106326: PUSH
106327: EMPTY
106328: LIST
106329: LIST
106330: LIST
106331: LIST
106332: LIST
106333: LIST
106334: LIST
106335: LIST
106336: LIST
106337: LIST
106338: LIST
106339: LIST
106340: ST_TO_ADDR
// temp_list_y = [ dir0_y , dir1_y , dir2_y , dir3_y , dir4_y , dir5_y , dir6_y , dir7_y , dir8_y , dir9_y , dir10_y , dir11_y ] ;
106341: LD_ADDR_VAR 0 21
106345: PUSH
106346: LD_VAR 0 33
106350: PUSH
106351: LD_VAR 0 35
106355: PUSH
106356: LD_VAR 0 37
106360: PUSH
106361: LD_VAR 0 39
106365: PUSH
106366: LD_VAR 0 41
106370: PUSH
106371: LD_VAR 0 43
106375: PUSH
106376: LD_VAR 0 45
106380: PUSH
106381: LD_VAR 0 47
106385: PUSH
106386: LD_VAR 0 49
106390: PUSH
106391: LD_VAR 0 51
106395: PUSH
106396: LD_VAR 0 53
106400: PUSH
106401: LD_VAR 0 55
106405: PUSH
106406: EMPTY
106407: LIST
106408: LIST
106409: LIST
106410: LIST
106411: LIST
106412: LIST
106413: LIST
106414: LIST
106415: LIST
106416: LIST
106417: LIST
106418: LIST
106419: ST_TO_ADDR
// temp_target_list = 0 ;
106420: LD_ADDR_VAR 0 11
106424: PUSH
106425: LD_INT 0
106427: ST_TO_ADDR
// for un in LaserGroups do
106428: LD_ADDR_VAR 0 25
106432: PUSH
106433: LD_VAR 0 7
106437: PUSH
106438: FOR_IN
106439: IFFALSE 108761
// begin common_hex = [ ( GetX ( un [ 1 ] ) + GetX ( un [ 2 ] ) ) / 2 , ( GetY ( un [ 1 ] ) + GetY ( un [ 2 ] ) ) / 2 ] ;
106441: LD_ADDR_VAR 0 31
106445: PUSH
106446: LD_VAR 0 25
106450: PUSH
106451: LD_INT 1
106453: ARRAY
106454: PPUSH
106455: CALL_OW 250
106459: PUSH
106460: LD_VAR 0 25
106464: PUSH
106465: LD_INT 2
106467: ARRAY
106468: PPUSH
106469: CALL_OW 250
106473: PLUS
106474: PUSH
106475: LD_INT 2
106477: DIVREAL
106478: PUSH
106479: LD_VAR 0 25
106483: PUSH
106484: LD_INT 1
106486: ARRAY
106487: PPUSH
106488: CALL_OW 251
106492: PUSH
106493: LD_VAR 0 25
106497: PUSH
106498: LD_INT 2
106500: ARRAY
106501: PPUSH
106502: CALL_OW 251
106506: PLUS
106507: PUSH
106508: LD_INT 2
106510: DIVREAL
106511: PUSH
106512: EMPTY
106513: LIST
106514: LIST
106515: ST_TO_ADDR
// temp_list = [ ] ;
106516: LD_ADDR_VAR 0 27
106520: PUSH
106521: EMPTY
106522: ST_TO_ADDR
// if temp_target_list = 0 then
106523: LD_VAR 0 11
106527: PUSH
106528: LD_INT 0
106530: EQUAL
106531: IFFALSE 106543
// temp_target_list = AllTargets ;
106533: LD_ADDR_VAR 0 11
106537: PUSH
106538: LD_VAR 0 2
106542: ST_TO_ADDR
// dist = 999 ;
106543: LD_ADDR_VAR 0 28
106547: PUSH
106548: LD_INT 999
106550: ST_TO_ADDR
// for i in temp_target_list do
106551: LD_ADDR_VAR 0 23
106555: PUSH
106556: LD_VAR 0 11
106560: PUSH
106561: FOR_IN
106562: IFFALSE 106684
// begin dist1 = GetDistUnits ( i , un [ 1 ] ) ;
106564: LD_ADDR_VAR 0 29
106568: PUSH
106569: LD_VAR 0 23
106573: PPUSH
106574: LD_VAR 0 25
106578: PUSH
106579: LD_INT 1
106581: ARRAY
106582: PPUSH
106583: CALL_OW 296
106587: ST_TO_ADDR
// dist2 = GetDistUnits ( i , un [ 2 ] ) ;
106588: LD_ADDR_VAR 0 30
106592: PUSH
106593: LD_VAR 0 23
106597: PPUSH
106598: LD_VAR 0 25
106602: PUSH
106603: LD_INT 2
106605: ARRAY
106606: PPUSH
106607: CALL_OW 296
106611: ST_TO_ADDR
// if dist1 > dist2 then
106612: LD_VAR 0 29
106616: PUSH
106617: LD_VAR 0 30
106621: GREATER
106622: IFFALSE 106636
// temp = dist1 else
106624: LD_ADDR_VAR 0 26
106628: PUSH
106629: LD_VAR 0 29
106633: ST_TO_ADDR
106634: GO 106646
// temp = dist2 ;
106636: LD_ADDR_VAR 0 26
106640: PUSH
106641: LD_VAR 0 30
106645: ST_TO_ADDR
// if temp + 3 < dist then
106646: LD_VAR 0 26
106650: PUSH
106651: LD_INT 3
106653: PLUS
106654: PUSH
106655: LD_VAR 0 28
106659: LESS
106660: IFFALSE 106682
// begin dist = temp ;
106662: LD_ADDR_VAR 0 28
106666: PUSH
106667: LD_VAR 0 26
106671: ST_TO_ADDR
// Target = i ;
106672: LD_ADDR_VAR 0 10
106676: PUSH
106677: LD_VAR 0 23
106681: ST_TO_ADDR
// end ; end ;
106682: GO 106561
106684: POP
106685: POP
// temp_target_list = temp_target_list diff Target ;
106686: LD_ADDR_VAR 0 11
106690: PUSH
106691: LD_VAR 0 11
106695: PUSH
106696: LD_VAR 0 10
106700: DIFF
106701: ST_TO_ADDR
// TargetX = GetX ( Target ) ;
106702: LD_ADDR_VAR 0 12
106706: PUSH
106707: LD_VAR 0 10
106711: PPUSH
106712: CALL_OW 250
106716: ST_TO_ADDR
// TargetY = GetY ( Target ) ;
106717: LD_ADDR_VAR 0 13
106721: PUSH
106722: LD_VAR 0 10
106726: PPUSH
106727: CALL_OW 251
106731: ST_TO_ADDR
// hex_list1 = [ ] ;
106732: LD_ADDR_VAR 0 14
106736: PUSH
106737: EMPTY
106738: ST_TO_ADDR
// hex_list2 = [ ] ;
106739: LD_ADDR_VAR 0 15
106743: PUSH
106744: EMPTY
106745: ST_TO_ADDR
// for i = 1 to 6 do
106746: LD_ADDR_VAR 0 23
106750: PUSH
106751: DOUBLE
106752: LD_INT 1
106754: DEC
106755: ST_TO_ADDR
106756: LD_INT 6
106758: PUSH
106759: FOR_TO
106760: IFFALSE 107451
// begin hex1 = [ ] ;
106762: LD_ADDR_VAR 0 16
106766: PUSH
106767: EMPTY
106768: ST_TO_ADDR
// hex2 = [ ] ;
106769: LD_ADDR_VAR 0 17
106773: PUSH
106774: EMPTY
106775: ST_TO_ADDR
// hex_list1 = hex_list1 ^ [ hex1 ] ;
106776: LD_ADDR_VAR 0 14
106780: PUSH
106781: LD_VAR 0 14
106785: PUSH
106786: LD_VAR 0 16
106790: PUSH
106791: EMPTY
106792: LIST
106793: ADD
106794: ST_TO_ADDR
// hex_list2 = hex_list2 ^ [ hex2 ] ;
106795: LD_ADDR_VAR 0 15
106799: PUSH
106800: LD_VAR 0 15
106804: PUSH
106805: LD_VAR 0 17
106809: PUSH
106810: EMPTY
106811: LIST
106812: ADD
106813: ST_TO_ADDR
// case val of 0 :
106814: LD_VAR 0 4
106818: PUSH
106819: LD_INT 0
106821: DOUBLE
106822: EQUAL
106823: IFTRUE 106827
106825: GO 106865
106827: POP
// temp_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ; 1 :
106828: LD_ADDR_VAR 0 27
106832: PUSH
106833: LD_INT 1
106835: PUSH
106836: LD_INT 2
106838: PUSH
106839: LD_INT 3
106841: PUSH
106842: LD_INT 4
106844: PUSH
106845: LD_INT 5
106847: PUSH
106848: LD_INT 6
106850: PUSH
106851: LD_INT 7
106853: PUSH
106854: EMPTY
106855: LIST
106856: LIST
106857: LIST
106858: LIST
106859: LIST
106860: LIST
106861: LIST
106862: ST_TO_ADDR
106863: GO 106947
106865: LD_INT 1
106867: DOUBLE
106868: EQUAL
106869: IFTRUE 106873
106871: GO 106911
106873: POP
// temp_list = [ 4 , 5 , 3 , 6 , 2 , 7 , 1 ] ; else
106874: LD_ADDR_VAR 0 27
106878: PUSH
106879: LD_INT 4
106881: PUSH
106882: LD_INT 5
106884: PUSH
106885: LD_INT 3
106887: PUSH
106888: LD_INT 6
106890: PUSH
106891: LD_INT 2
106893: PUSH
106894: LD_INT 7
106896: PUSH
106897: LD_INT 1
106899: PUSH
106900: EMPTY
106901: LIST
106902: LIST
106903: LIST
106904: LIST
106905: LIST
106906: LIST
106907: LIST
106908: ST_TO_ADDR
106909: GO 106947
106911: POP
// temp_list = [ 7 , 6 , 5 , 4 , 3 , 2 , 1 ] ; end ;
106912: LD_ADDR_VAR 0 27
106916: PUSH
106917: LD_INT 7
106919: PUSH
106920: LD_INT 6
106922: PUSH
106923: LD_INT 5
106925: PUSH
106926: LD_INT 4
106928: PUSH
106929: LD_INT 3
106931: PUSH
106932: LD_INT 2
106934: PUSH
106935: LD_INT 1
106937: PUSH
106938: EMPTY
106939: LIST
106940: LIST
106941: LIST
106942: LIST
106943: LIST
106944: LIST
106945: LIST
106946: ST_TO_ADDR
// for j in temp_list do
106947: LD_ADDR_VAR 0 24
106951: PUSH
106952: LD_VAR 0 27
106956: PUSH
106957: FOR_IN
106958: IFFALSE 107156
// begin temp_hex = [ TargetX + temp_list_x [ i ] [ j ] , TargetY + temp_list_y [ i ] [ j ] ] ;
106960: LD_ADDR_VAR 0 18
106964: PUSH
106965: LD_VAR 0 12
106969: PUSH
106970: LD_VAR 0 20
106974: PUSH
106975: LD_VAR 0 23
106979: ARRAY
106980: PUSH
106981: LD_VAR 0 24
106985: ARRAY
106986: PLUS
106987: PUSH
106988: LD_VAR 0 13
106992: PUSH
106993: LD_VAR 0 21
106997: PUSH
106998: LD_VAR 0 23
107002: ARRAY
107003: PUSH
107004: LD_VAR 0 24
107008: ARRAY
107009: PLUS
107010: PUSH
107011: EMPTY
107012: LIST
107013: LIST
107014: ST_TO_ADDR
// if not ValidHex ( temp_hex [ 1 ] , temp_hex [ 2 ] ) or ( HexInfo ( temp_hex [ 1 ] , temp_hex [ 2 ] ) > 0 and not HexInfo ( temp_hex [ 1 ] , temp_hex [ 2 ] ) in un ) then
107015: LD_VAR 0 18
107019: PUSH
107020: LD_INT 1
107022: ARRAY
107023: PPUSH
107024: LD_VAR 0 18
107028: PUSH
107029: LD_INT 2
107031: ARRAY
107032: PPUSH
107033: CALL_OW 488
107037: NOT
107038: PUSH
107039: LD_VAR 0 18
107043: PUSH
107044: LD_INT 1
107046: ARRAY
107047: PPUSH
107048: LD_VAR 0 18
107052: PUSH
107053: LD_INT 2
107055: ARRAY
107056: PPUSH
107057: CALL_OW 428
107061: PUSH
107062: LD_INT 0
107064: GREATER
107065: PUSH
107066: LD_VAR 0 18
107070: PUSH
107071: LD_INT 1
107073: ARRAY
107074: PPUSH
107075: LD_VAR 0 18
107079: PUSH
107080: LD_INT 2
107082: ARRAY
107083: PPUSH
107084: CALL_OW 428
107088: PUSH
107089: LD_VAR 0 25
107093: IN
107094: NOT
107095: AND
107096: OR
107097: IFFALSE 107101
// continue ;
107099: GO 106957
// if Area > 0 then
107101: LD_VAR 0 3
107105: PUSH
107106: LD_INT 0
107108: GREATER
107109: IFFALSE 107142
// if InArea ( temp_hex [ 1 ] , temp_hex [ 2 ] , Area ) then
107111: LD_VAR 0 18
107115: PUSH
107116: LD_INT 1
107118: ARRAY
107119: PPUSH
107120: LD_VAR 0 18
107124: PUSH
107125: LD_INT 2
107127: ARRAY
107128: PPUSH
107129: LD_VAR 0 3
107133: PPUSH
107134: CALL_OW 309
107138: IFFALSE 107142
// continue ;
107140: GO 106957
// hex1 = temp_hex ;
107142: LD_ADDR_VAR 0 16
107146: PUSH
107147: LD_VAR 0 18
107151: ST_TO_ADDR
// break ;
107152: GO 107156
// end ;
107154: GO 106957
107156: POP
107157: POP
// if hex1 = [ ] then
107158: LD_VAR 0 16
107162: PUSH
107163: EMPTY
107164: EQUAL
107165: IFFALSE 107169
// continue ;
107167: GO 106759
// for j in temp_list do
107169: LD_ADDR_VAR 0 24
107173: PUSH
107174: LD_VAR 0 27
107178: PUSH
107179: FOR_IN
107180: IFFALSE 107386
// begin temp_hex = [ TargetX + temp_list_x [ i + 6 ] [ j ] , TargetY + temp_list_y [ i + 6 ] [ j ] ] ;
107182: LD_ADDR_VAR 0 18
107186: PUSH
107187: LD_VAR 0 12
107191: PUSH
107192: LD_VAR 0 20
107196: PUSH
107197: LD_VAR 0 23
107201: PUSH
107202: LD_INT 6
107204: PLUS
107205: ARRAY
107206: PUSH
107207: LD_VAR 0 24
107211: ARRAY
107212: PLUS
107213: PUSH
107214: LD_VAR 0 13
107218: PUSH
107219: LD_VAR 0 21
107223: PUSH
107224: LD_VAR 0 23
107228: PUSH
107229: LD_INT 6
107231: PLUS
107232: ARRAY
107233: PUSH
107234: LD_VAR 0 24
107238: ARRAY
107239: PLUS
107240: PUSH
107241: EMPTY
107242: LIST
107243: LIST
107244: ST_TO_ADDR
// if not ValidHex ( temp_hex [ 1 ] , temp_hex [ 2 ] ) or ( HexInfo ( temp_hex [ 1 ] , temp_hex [ 2 ] ) > 0 and not HexInfo ( temp_hex [ 1 ] , temp_hex [ 2 ] ) in un ) then
107245: LD_VAR 0 18
107249: PUSH
107250: LD_INT 1
107252: ARRAY
107253: PPUSH
107254: LD_VAR 0 18
107258: PUSH
107259: LD_INT 2
107261: ARRAY
107262: PPUSH
107263: CALL_OW 488
107267: NOT
107268: PUSH
107269: LD_VAR 0 18
107273: PUSH
107274: LD_INT 1
107276: ARRAY
107277: PPUSH
107278: LD_VAR 0 18
107282: PUSH
107283: LD_INT 2
107285: ARRAY
107286: PPUSH
107287: CALL_OW 428
107291: PUSH
107292: LD_INT 0
107294: GREATER
107295: PUSH
107296: LD_VAR 0 18
107300: PUSH
107301: LD_INT 1
107303: ARRAY
107304: PPUSH
107305: LD_VAR 0 18
107309: PUSH
107310: LD_INT 2
107312: ARRAY
107313: PPUSH
107314: CALL_OW 428
107318: PUSH
107319: LD_VAR 0 25
107323: IN
107324: NOT
107325: AND
107326: OR
107327: IFFALSE 107331
// continue ;
107329: GO 107179
// if Area > 0 then
107331: LD_VAR 0 3
107335: PUSH
107336: LD_INT 0
107338: GREATER
107339: IFFALSE 107372
// if InArea ( temp_hex [ 1 ] , temp_hex [ 2 ] , Area ) then
107341: LD_VAR 0 18
107345: PUSH
107346: LD_INT 1
107348: ARRAY
107349: PPUSH
107350: LD_VAR 0 18
107354: PUSH
107355: LD_INT 2
107357: ARRAY
107358: PPUSH
107359: LD_VAR 0 3
107363: PPUSH
107364: CALL_OW 309
107368: IFFALSE 107372
// continue ;
107370: GO 107179
// hex2 = temp_hex ;
107372: LD_ADDR_VAR 0 17
107376: PUSH
107377: LD_VAR 0 18
107381: ST_TO_ADDR
// break ;
107382: GO 107386
// end ;
107384: GO 107179
107386: POP
107387: POP
// if hex2 = [ ] then
107388: LD_VAR 0 17
107392: PUSH
107393: EMPTY
107394: EQUAL
107395: IFFALSE 107399
// continue ;
107397: GO 106759
// hex_list1 = Replace ( hex_list1 , i , hex1 ) ;
107399: LD_ADDR_VAR 0 14
107403: PUSH
107404: LD_VAR 0 14
107408: PPUSH
107409: LD_VAR 0 23
107413: PPUSH
107414: LD_VAR 0 16
107418: PPUSH
107419: CALL_OW 1
107423: ST_TO_ADDR
// hex_list2 = Replace ( hex_list2 , i , hex2 ) ;
107424: LD_ADDR_VAR 0 15
107428: PUSH
107429: LD_VAR 0 15
107433: PPUSH
107434: LD_VAR 0 23
107438: PPUSH
107439: LD_VAR 0 17
107443: PPUSH
107444: CALL_OW 1
107448: ST_TO_ADDR
// end ;
107449: GO 106759
107451: POP
107452: POP
// if ( hex_list1 diff 0 ) = 0 then
107453: LD_VAR 0 14
107457: PUSH
107458: LD_INT 0
107460: DIFF
107461: PUSH
107462: LD_INT 0
107464: EQUAL
107465: IFFALSE 107485
// begin ComMoveUnit ( un , Target ) ;
107467: LD_VAR 0 25
107471: PPUSH
107472: LD_VAR 0 10
107476: PPUSH
107477: CALL_OW 112
// exit ;
107481: POP
107482: POP
107483: GO 108763
// end ; hex_list1 = hex_list1 ^ hex_list2 ;
107485: LD_ADDR_VAR 0 14
107489: PUSH
107490: LD_VAR 0 14
107494: PUSH
107495: LD_VAR 0 15
107499: ADD
107500: ST_TO_ADDR
// hex_list2 = hex_list2 ^ hex_list1 ;
107501: LD_ADDR_VAR 0 15
107505: PUSH
107506: LD_VAR 0 15
107510: PUSH
107511: LD_VAR 0 14
107515: ADD
107516: ST_TO_ADDR
// temp_list = [ ] ;
107517: LD_ADDR_VAR 0 27
107521: PUSH
107522: EMPTY
107523: ST_TO_ADDR
// j = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ] ;
107524: LD_ADDR_VAR 0 24
107528: PUSH
107529: LD_INT 1
107531: PUSH
107532: LD_INT 2
107534: PUSH
107535: LD_INT 3
107537: PUSH
107538: LD_INT 4
107540: PUSH
107541: LD_INT 5
107543: PUSH
107544: LD_INT 6
107546: PUSH
107547: LD_INT 7
107549: PUSH
107550: LD_INT 8
107552: PUSH
107553: LD_INT 9
107555: PUSH
107556: LD_INT 10
107558: PUSH
107559: LD_INT 11
107561: PUSH
107562: LD_INT 12
107564: PUSH
107565: EMPTY
107566: LIST
107567: LIST
107568: LIST
107569: LIST
107570: LIST
107571: LIST
107572: LIST
107573: LIST
107574: LIST
107575: LIST
107576: LIST
107577: LIST
107578: ST_TO_ADDR
// for i in j do
107579: LD_ADDR_VAR 0 23
107583: PUSH
107584: LD_VAR 0 24
107588: PUSH
107589: FOR_IN
107590: IFFALSE 107670
// temp_list = temp_list ^ GetDistXY ( common_hex [ 1 ] , common_hex [ 2 ] , TargetX + temp_list_x [ i ] [ 5 ] , TargetY + temp_list_y [ i ] [ 5 ] ) ;
107592: LD_ADDR_VAR 0 27
107596: PUSH
107597: LD_VAR 0 27
107601: PUSH
107602: LD_VAR 0 31
107606: PUSH
107607: LD_INT 1
107609: ARRAY
107610: PPUSH
107611: LD_VAR 0 31
107615: PUSH
107616: LD_INT 2
107618: ARRAY
107619: PPUSH
107620: LD_VAR 0 12
107624: PUSH
107625: LD_VAR 0 20
107629: PUSH
107630: LD_VAR 0 23
107634: ARRAY
107635: PUSH
107636: LD_INT 5
107638: ARRAY
107639: PLUS
107640: PPUSH
107641: LD_VAR 0 13
107645: PUSH
107646: LD_VAR 0 21
107650: PUSH
107651: LD_VAR 0 23
107655: ARRAY
107656: PUSH
107657: LD_INT 5
107659: ARRAY
107660: PLUS
107661: PPUSH
107662: CALL_OW 298
107666: ADD
107667: ST_TO_ADDR
107668: GO 107589
107670: POP
107671: POP
// i = WorstFromListByList ( j , temp_list ) ;
107672: LD_ADDR_VAR 0 23
107676: PUSH
107677: LD_VAR 0 24
107681: PPUSH
107682: LD_VAR 0 27
107686: PPUSH
107687: CALL_OW 78
107691: ST_TO_ADDR
// case i of 1 , 7 :
107692: LD_VAR 0 23
107696: PUSH
107697: LD_INT 1
107699: DOUBLE
107700: EQUAL
107701: IFTRUE 107711
107703: LD_INT 7
107705: DOUBLE
107706: EQUAL
107707: IFTRUE 107711
107709: GO 107745
107711: POP
// temp_list = [ 4 , 5 , 6 , 1 , 2 , 3 ] ; 2 , 8 :
107712: LD_ADDR_VAR 0 27
107716: PUSH
107717: LD_INT 4
107719: PUSH
107720: LD_INT 5
107722: PUSH
107723: LD_INT 6
107725: PUSH
107726: LD_INT 1
107728: PUSH
107729: LD_INT 2
107731: PUSH
107732: LD_INT 3
107734: PUSH
107735: EMPTY
107736: LIST
107737: LIST
107738: LIST
107739: LIST
107740: LIST
107741: LIST
107742: ST_TO_ADDR
107743: GO 107986
107745: LD_INT 2
107747: DOUBLE
107748: EQUAL
107749: IFTRUE 107759
107751: LD_INT 8
107753: DOUBLE
107754: EQUAL
107755: IFTRUE 107759
107757: GO 107793
107759: POP
// temp_list = [ 5 , 6 , 1 , 2 , 3 , 4 ] ; 3 , 9 :
107760: LD_ADDR_VAR 0 27
107764: PUSH
107765: LD_INT 5
107767: PUSH
107768: LD_INT 6
107770: PUSH
107771: LD_INT 1
107773: PUSH
107774: LD_INT 2
107776: PUSH
107777: LD_INT 3
107779: PUSH
107780: LD_INT 4
107782: PUSH
107783: EMPTY
107784: LIST
107785: LIST
107786: LIST
107787: LIST
107788: LIST
107789: LIST
107790: ST_TO_ADDR
107791: GO 107986
107793: LD_INT 3
107795: DOUBLE
107796: EQUAL
107797: IFTRUE 107807
107799: LD_INT 9
107801: DOUBLE
107802: EQUAL
107803: IFTRUE 107807
107805: GO 107841
107807: POP
// temp_list = [ 6 , 1 , 2 , 3 , 4 , 5 ] ; 4 , 10 :
107808: LD_ADDR_VAR 0 27
107812: PUSH
107813: LD_INT 6
107815: PUSH
107816: LD_INT 1
107818: PUSH
107819: LD_INT 2
107821: PUSH
107822: LD_INT 3
107824: PUSH
107825: LD_INT 4
107827: PUSH
107828: LD_INT 5
107830: PUSH
107831: EMPTY
107832: LIST
107833: LIST
107834: LIST
107835: LIST
107836: LIST
107837: LIST
107838: ST_TO_ADDR
107839: GO 107986
107841: LD_INT 4
107843: DOUBLE
107844: EQUAL
107845: IFTRUE 107855
107847: LD_INT 10
107849: DOUBLE
107850: EQUAL
107851: IFTRUE 107855
107853: GO 107889
107855: POP
// temp_list = [ 1 , 2 , 3 , 4 , 5 , 6 ] ; 5 , 11 :
107856: LD_ADDR_VAR 0 27
107860: PUSH
107861: LD_INT 1
107863: PUSH
107864: LD_INT 2
107866: PUSH
107867: LD_INT 3
107869: PUSH
107870: LD_INT 4
107872: PUSH
107873: LD_INT 5
107875: PUSH
107876: LD_INT 6
107878: PUSH
107879: EMPTY
107880: LIST
107881: LIST
107882: LIST
107883: LIST
107884: LIST
107885: LIST
107886: ST_TO_ADDR
107887: GO 107986
107889: LD_INT 5
107891: DOUBLE
107892: EQUAL
107893: IFTRUE 107903
107895: LD_INT 11
107897: DOUBLE
107898: EQUAL
107899: IFTRUE 107903
107901: GO 107937
107903: POP
// temp_list = [ 2 , 3 , 4 , 5 , 6 , 1 ] ; 6 , 12 :
107904: LD_ADDR_VAR 0 27
107908: PUSH
107909: LD_INT 2
107911: PUSH
107912: LD_INT 3
107914: PUSH
107915: LD_INT 4
107917: PUSH
107918: LD_INT 5
107920: PUSH
107921: LD_INT 6
107923: PUSH
107924: LD_INT 1
107926: PUSH
107927: EMPTY
107928: LIST
107929: LIST
107930: LIST
107931: LIST
107932: LIST
107933: LIST
107934: ST_TO_ADDR
107935: GO 107986
107937: LD_INT 6
107939: DOUBLE
107940: EQUAL
107941: IFTRUE 107951
107943: LD_INT 12
107945: DOUBLE
107946: EQUAL
107947: IFTRUE 107951
107949: GO 107985
107951: POP
// temp_list = [ 3 , 4 , 5 , 6 , 1 , 2 ] ; end ;
107952: LD_ADDR_VAR 0 27
107956: PUSH
107957: LD_INT 3
107959: PUSH
107960: LD_INT 4
107962: PUSH
107963: LD_INT 5
107965: PUSH
107966: LD_INT 6
107968: PUSH
107969: LD_INT 1
107971: PUSH
107972: LD_INT 2
107974: PUSH
107975: EMPTY
107976: LIST
107977: LIST
107978: LIST
107979: LIST
107980: LIST
107981: LIST
107982: ST_TO_ADDR
107983: GO 107986
107985: POP
// dist = 999 ;
107986: LD_ADDR_VAR 0 28
107990: PUSH
107991: LD_INT 999
107993: ST_TO_ADDR
// for i in temp_list do
107994: LD_ADDR_VAR 0 23
107998: PUSH
107999: LD_VAR 0 27
108003: PUSH
108004: FOR_IN
108005: IFFALSE 108473
// begin if hex_list1 [ i ] = [ ] then
108007: LD_VAR 0 14
108011: PUSH
108012: LD_VAR 0 23
108016: ARRAY
108017: PUSH
108018: EMPTY
108019: EQUAL
108020: IFFALSE 108024
// continue ;
108022: GO 108004
// hex1 = hex_list1 [ i ] ;
108024: LD_ADDR_VAR 0 16
108028: PUSH
108029: LD_VAR 0 14
108033: PUSH
108034: LD_VAR 0 23
108038: ARRAY
108039: ST_TO_ADDR
// hex2 = hex_list2 [ i ] ;
108040: LD_ADDR_VAR 0 17
108044: PUSH
108045: LD_VAR 0 15
108049: PUSH
108050: LD_VAR 0 23
108054: ARRAY
108055: ST_TO_ADDR
// L1 = un [ 1 ] ;
108056: LD_ADDR_VAR 0 8
108060: PUSH
108061: LD_VAR 0 25
108065: PUSH
108066: LD_INT 1
108068: ARRAY
108069: ST_TO_ADDR
// L2 = un [ 2 ] ;
108070: LD_ADDR_VAR 0 9
108074: PUSH
108075: LD_VAR 0 25
108079: PUSH
108080: LD_INT 2
108082: ARRAY
108083: ST_TO_ADDR
// dist1 = GetDistUnitXY ( L1 , hex1 [ 1 ] , hex1 [ 2 ] ) ;
108084: LD_ADDR_VAR 0 29
108088: PUSH
108089: LD_VAR 0 8
108093: PPUSH
108094: LD_VAR 0 16
108098: PUSH
108099: LD_INT 1
108101: ARRAY
108102: PPUSH
108103: LD_VAR 0 16
108107: PUSH
108108: LD_INT 2
108110: ARRAY
108111: PPUSH
108112: CALL_OW 297
108116: ST_TO_ADDR
// dist2 = GetDistUnitXY ( L2 , hex2 [ 1 ] , hex2 [ 2 ] ) ;
108117: LD_ADDR_VAR 0 30
108121: PUSH
108122: LD_VAR 0 9
108126: PPUSH
108127: LD_VAR 0 17
108131: PUSH
108132: LD_INT 1
108134: ARRAY
108135: PPUSH
108136: LD_VAR 0 17
108140: PUSH
108141: LD_INT 2
108143: ARRAY
108144: PPUSH
108145: CALL_OW 297
108149: ST_TO_ADDR
// if dist1 < [ 3 , 4 , 4 ] [ val + 1 ] and dist2 < [ 3 , 4 , 4 ] [ val + 1 ] then
108150: LD_VAR 0 29
108154: PUSH
108155: LD_INT 3
108157: PUSH
108158: LD_INT 4
108160: PUSH
108161: LD_INT 4
108163: PUSH
108164: EMPTY
108165: LIST
108166: LIST
108167: LIST
108168: PUSH
108169: LD_VAR 0 4
108173: PUSH
108174: LD_INT 1
108176: PLUS
108177: ARRAY
108178: LESS
108179: PUSH
108180: LD_VAR 0 30
108184: PUSH
108185: LD_INT 3
108187: PUSH
108188: LD_INT 4
108190: PUSH
108191: LD_INT 4
108193: PUSH
108194: EMPTY
108195: LIST
108196: LIST
108197: LIST
108198: PUSH
108199: LD_VAR 0 4
108203: PUSH
108204: LD_INT 1
108206: PLUS
108207: ARRAY
108208: LESS
108209: AND
108210: IFFALSE 108371
// begin choosen_hexes = [ ] ;
108212: LD_ADDR_VAR 0 19
108216: PUSH
108217: EMPTY
108218: ST_TO_ADDR
// for j = 1 to 3 do
108219: LD_ADDR_VAR 0 24
108223: PUSH
108224: DOUBLE
108225: LD_INT 1
108227: DEC
108228: ST_TO_ADDR
108229: LD_INT 3
108231: PUSH
108232: FOR_TO
108233: IFFALSE 108367
// if i + j > hex_list1 then
108235: LD_VAR 0 23
108239: PUSH
108240: LD_VAR 0 24
108244: PLUS
108245: PUSH
108246: LD_VAR 0 14
108250: GREATER
108251: IFFALSE 108316
// choosen_hexes = choosen_hexes ^ [ hex_list1 [ i + j - hex_list1 ] , hex_list2 [ i + j - hex_list1 ] ] else
108253: LD_ADDR_VAR 0 19
108257: PUSH
108258: LD_VAR 0 19
108262: PUSH
108263: LD_VAR 0 14
108267: PUSH
108268: LD_VAR 0 23
108272: PUSH
108273: LD_VAR 0 24
108277: PLUS
108278: PUSH
108279: LD_VAR 0 14
108283: MINUS
108284: ARRAY
108285: PUSH
108286: LD_VAR 0 15
108290: PUSH
108291: LD_VAR 0 23
108295: PUSH
108296: LD_VAR 0 24
108300: PLUS
108301: PUSH
108302: LD_VAR 0 14
108306: MINUS
108307: ARRAY
108308: PUSH
108309: EMPTY
108310: LIST
108311: LIST
108312: ADD
108313: ST_TO_ADDR
108314: GO 108365
// choosen_hexes = choosen_hexes ^ [ hex_list1 [ i + j ] , hex_list2 [ i + j ] ] ;
108316: LD_ADDR_VAR 0 19
108320: PUSH
108321: LD_VAR 0 19
108325: PUSH
108326: LD_VAR 0 14
108330: PUSH
108331: LD_VAR 0 23
108335: PUSH
108336: LD_VAR 0 24
108340: PLUS
108341: ARRAY
108342: PUSH
108343: LD_VAR 0 15
108347: PUSH
108348: LD_VAR 0 23
108352: PUSH
108353: LD_VAR 0 24
108357: PLUS
108358: ARRAY
108359: PUSH
108360: EMPTY
108361: LIST
108362: LIST
108363: ADD
108364: ST_TO_ADDR
108365: GO 108232
108367: POP
108368: POP
// break ;
108369: GO 108473
// end ; if dist1 > dist2 then
108371: LD_VAR 0 29
108375: PUSH
108376: LD_VAR 0 30
108380: GREATER
108381: IFFALSE 108395
// temp = dist1 else
108383: LD_ADDR_VAR 0 26
108387: PUSH
108388: LD_VAR 0 29
108392: ST_TO_ADDR
108393: GO 108405
// temp = dist2 ;
108395: LD_ADDR_VAR 0 26
108399: PUSH
108400: LD_VAR 0 30
108404: ST_TO_ADDR
// if ( temp + [ 6 , 8 , 10 ] [ val + 1 ] ) < dist then
108405: LD_VAR 0 26
108409: PUSH
108410: LD_INT 6
108412: PUSH
108413: LD_INT 8
108415: PUSH
108416: LD_INT 10
108418: PUSH
108419: EMPTY
108420: LIST
108421: LIST
108422: LIST
108423: PUSH
108424: LD_VAR 0 4
108428: PUSH
108429: LD_INT 1
108431: PLUS
108432: ARRAY
108433: PLUS
108434: PUSH
108435: LD_VAR 0 28
108439: LESS
108440: IFFALSE 108471
// begin dist = temp ;
108442: LD_ADDR_VAR 0 28
108446: PUSH
108447: LD_VAR 0 26
108451: ST_TO_ADDR
// choosen_hexes = [ hex1 , hex2 ] ;
108452: LD_ADDR_VAR 0 19
108456: PUSH
108457: LD_VAR 0 16
108461: PUSH
108462: LD_VAR 0 17
108466: PUSH
108467: EMPTY
108468: LIST
108469: LIST
108470: ST_TO_ADDR
// end ; end ;
108471: GO 108004
108473: POP
108474: POP
// if un > 2 then
108475: LD_VAR 0 25
108479: PUSH
108480: LD_INT 2
108482: GREATER
108483: IFFALSE 108505
// L2 = L2 ^ un [ 3 ] ;
108485: LD_ADDR_VAR 0 9
108489: PUSH
108490: LD_VAR 0 9
108494: PUSH
108495: LD_VAR 0 25
108499: PUSH
108500: LD_INT 3
108502: ARRAY
108503: ADD
108504: ST_TO_ADDR
// if choosen_hexes [ 1 ] = [ ] then
108505: LD_VAR 0 19
108509: PUSH
108510: LD_INT 1
108512: ARRAY
108513: PUSH
108514: EMPTY
108515: EQUAL
108516: IFFALSE 108545
// begin ComMoveUnit ( [ L1 , L2 ] , Target ) ;
108518: LD_VAR 0 8
108522: PUSH
108523: LD_VAR 0 9
108527: PUSH
108528: EMPTY
108529: LIST
108530: LIST
108531: PPUSH
108532: LD_VAR 0 10
108536: PPUSH
108537: CALL_OW 112
// exit ;
108541: POP
108542: POP
108543: GO 108763
// end ; ComMoveXY ( L1 , choosen_hexes [ 1 ] [ 1 ] , choosen_hexes [ 1 ] [ 2 ] ) ;
108545: LD_VAR 0 8
108549: PPUSH
108550: LD_VAR 0 19
108554: PUSH
108555: LD_INT 1
108557: ARRAY
108558: PUSH
108559: LD_INT 1
108561: ARRAY
108562: PPUSH
108563: LD_VAR 0 19
108567: PUSH
108568: LD_INT 1
108570: ARRAY
108571: PUSH
108572: LD_INT 2
108574: ARRAY
108575: PPUSH
108576: CALL_OW 111
// ComMoveXY ( L2 , choosen_hexes [ 2 ] [ 1 ] , choosen_hexes [ 2 ] [ 2 ] ) ;
108580: LD_VAR 0 9
108584: PPUSH
108585: LD_VAR 0 19
108589: PUSH
108590: LD_INT 2
108592: ARRAY
108593: PUSH
108594: LD_INT 1
108596: ARRAY
108597: PPUSH
108598: LD_VAR 0 19
108602: PUSH
108603: LD_INT 2
108605: ARRAY
108606: PUSH
108607: LD_INT 2
108609: ARRAY
108610: PPUSH
108611: CALL_OW 111
// if choosen_hexes > 2 then
108615: LD_VAR 0 19
108619: PUSH
108620: LD_INT 2
108622: GREATER
108623: IFFALSE 108759
// for i = 3 to choosen_hexes do
108625: LD_ADDR_VAR 0 23
108629: PUSH
108630: DOUBLE
108631: LD_INT 3
108633: DEC
108634: ST_TO_ADDR
108635: LD_VAR 0 19
108639: PUSH
108640: FOR_TO
108641: IFFALSE 108757
// if choosen_hexes [ i ] > [ ] then
108643: LD_VAR 0 19
108647: PUSH
108648: LD_VAR 0 23
108652: ARRAY
108653: PUSH
108654: EMPTY
108655: GREATER
108656: IFFALSE 108755
// if i in [ 3 , 5 ] then
108658: LD_VAR 0 23
108662: PUSH
108663: LD_INT 3
108665: PUSH
108666: LD_INT 5
108668: PUSH
108669: EMPTY
108670: LIST
108671: LIST
108672: IN
108673: IFFALSE 108716
// AddComMoveXY ( L1 , choosen_hexes [ i ] [ 1 ] , choosen_hexes [ i ] [ 2 ] ) else
108675: LD_VAR 0 8
108679: PPUSH
108680: LD_VAR 0 19
108684: PUSH
108685: LD_VAR 0 23
108689: ARRAY
108690: PUSH
108691: LD_INT 1
108693: ARRAY
108694: PPUSH
108695: LD_VAR 0 19
108699: PUSH
108700: LD_VAR 0 23
108704: ARRAY
108705: PUSH
108706: LD_INT 2
108708: ARRAY
108709: PPUSH
108710: CALL_OW 171
108714: GO 108755
// AddComMoveXY ( L2 , choosen_hexes [ i ] [ 1 ] , choosen_hexes [ i ] [ 2 ] ) ;
108716: LD_VAR 0 9
108720: PPUSH
108721: LD_VAR 0 19
108725: PUSH
108726: LD_VAR 0 23
108730: ARRAY
108731: PUSH
108732: LD_INT 1
108734: ARRAY
108735: PPUSH
108736: LD_VAR 0 19
108740: PUSH
108741: LD_VAR 0 23
108745: ARRAY
108746: PUSH
108747: LD_INT 2
108749: ARRAY
108750: PPUSH
108751: CALL_OW 171
108755: GO 108640
108757: POP
108758: POP
// end ;
108759: GO 106438
108761: POP
108762: POP
// end ;
108763: LD_VAR 0 5
108767: RET
// every 0 0$1 trigger 1 in ai_bases do var i , j , temp , temp2 , hovercrafts , count , un ;
108768: LD_INT 1
108770: PUSH
108771: LD_EXP 49
108775: IN
108776: IFFALSE 111611
108778: GO 108780
108780: DISABLE
108781: LD_INT 0
108783: PPUSH
108784: PPUSH
108785: PPUSH
108786: PPUSH
108787: PPUSH
108788: PPUSH
108789: PPUSH
// begin Randomize ;
108790: CALL_OW 10
// hovercrafts = ai_hovercrafts diff 0 ^ - 1 ;
108794: LD_ADDR_VAR 0 5
108798: PUSH
108799: LD_EXP 148
108803: PUSH
108804: LD_INT 0
108806: PUSH
108807: LD_INT 1
108809: NEG
108810: ADD
108811: DIFF
108812: ST_TO_ADDR
// for i in hovercrafts do
108813: LD_ADDR_VAR 0 1
108817: PUSH
108818: LD_VAR 0 5
108822: PUSH
108823: FOR_IN
108824: IFFALSE 108853
// if IsOk ( i ) then
108826: LD_VAR 0 1
108830: PPUSH
108831: CALL_OW 302
108835: IFFALSE 108851
// temp = temp + 1 ;
108837: LD_ADDR_VAR 0 3
108841: PUSH
108842: LD_VAR 0 3
108846: PUSH
108847: LD_INT 1
108849: PLUS
108850: ST_TO_ADDR
108851: GO 108823
108853: POP
108854: POP
// if temp < 3 and ai_hovercrafts_status > 0 then
108855: LD_VAR 0 3
108859: PUSH
108860: LD_INT 3
108862: LESS
108863: PUSH
108864: LD_EXP 150
108868: PUSH
108869: LD_INT 0
108871: GREATER
108872: AND
108873: IFFALSE 108909
// begin ai_hovercrafts_respawntime = [ 4 4$30 , 3 3$0 , 2 2$0 ] [ difficulty ] ;
108875: LD_ADDR_EXP 155
108879: PUSH
108880: LD_INT 9450
108882: PUSH
108883: LD_INT 6300
108885: PUSH
108886: LD_INT 4200
108888: PUSH
108889: EMPTY
108890: LIST
108891: LIST
108892: LIST
108893: PUSH
108894: LD_OWVAR 67
108898: ARRAY
108899: ST_TO_ADDR
// ai_hovercrafts_status = - 1 ;
108900: LD_ADDR_EXP 150
108904: PUSH
108905: LD_INT 1
108907: NEG
108908: ST_TO_ADDR
// end ; ai_hovercrafts_respawntime = ai_hovercrafts_respawntime - 0 0$1 ;
108909: LD_ADDR_EXP 155
108913: PUSH
108914: LD_EXP 155
108918: PUSH
108919: LD_INT 35
108921: MINUS
108922: ST_TO_ADDR
// if ai_hovercrafts_out = 0 and ai_hovercrafts_respawntime <= 0 then
108923: LD_EXP 153
108927: PUSH
108928: LD_INT 0
108930: EQUAL
108931: PUSH
108932: LD_EXP 155
108936: PUSH
108937: LD_INT 0
108939: LESSEQUAL
108940: AND
108941: IFFALSE 109047
// begin temp = 0 ;
108943: LD_ADDR_VAR 0 3
108947: PUSH
108948: LD_INT 0
108950: ST_TO_ADDR
// for i in ai_hovercrafts do
108951: LD_ADDR_VAR 0 1
108955: PUSH
108956: LD_EXP 148
108960: PUSH
108961: FOR_IN
108962: IFFALSE 108989
// if GetLives ( i ) <= 250 then
108964: LD_VAR 0 1
108968: PPUSH
108969: CALL_OW 256
108973: PUSH
108974: LD_INT 250
108976: LESSEQUAL
108977: IFFALSE 108987
// temp = 1 ;
108979: LD_ADDR_VAR 0 3
108983: PUSH
108984: LD_INT 1
108986: ST_TO_ADDR
108987: GO 108961
108989: POP
108990: POP
// if temp = 0 then
108991: LD_VAR 0 3
108995: PUSH
108996: LD_INT 0
108998: EQUAL
108999: IFFALSE 109021
// begin if ai_hovercrafts_status = 0 then
109001: LD_EXP 150
109005: PUSH
109006: LD_INT 0
109008: EQUAL
109009: IFFALSE 109019
// ai_hovercrafts_status = 1 ;
109011: LD_ADDR_EXP 150
109015: PUSH
109016: LD_INT 1
109018: ST_TO_ADDR
// end else
109019: GO 109047
// begin if ai_hovercrafts_status > 0 then
109021: LD_EXP 150
109025: PUSH
109026: LD_INT 0
109028: GREATER
109029: IFFALSE 109039
// ai_hovercrafts_timer = 2 2$0 ;
109031: LD_ADDR_EXP 149
109035: PUSH
109036: LD_INT 4200
109038: ST_TO_ADDR
// ai_hovercrafts_status = 0 end ;
109039: LD_ADDR_EXP 150
109043: PUSH
109044: LD_INT 0
109046: ST_TO_ADDR
// end ; if ai_hovercrafts_status > 0 and ai_hovercrafts_out = 0 then
109047: LD_EXP 150
109051: PUSH
109052: LD_INT 0
109054: GREATER
109055: PUSH
109056: LD_EXP 153
109060: PUSH
109061: LD_INT 0
109063: EQUAL
109064: AND
109065: IFFALSE 111122
// begin ai_hovercrafts_timer = ai_hovercrafts_timer - 0 0$1 ;
109067: LD_ADDR_EXP 149
109071: PUSH
109072: LD_EXP 149
109076: PUSH
109077: LD_INT 35
109079: MINUS
109080: ST_TO_ADDR
// if ai_hovercrafts_timer <= 0 then
109081: LD_EXP 149
109085: PUSH
109086: LD_INT 0
109088: LESSEQUAL
109089: IFFALSE 109113
// begin ai_hovercrafts_status = ai_hovercrafts_status + 1 ;
109091: LD_ADDR_EXP 150
109095: PUSH
109096: LD_EXP 150
109100: PUSH
109101: LD_INT 1
109103: PLUS
109104: ST_TO_ADDR
// ai_hovercrafts_timer = 1 1$0 ;
109105: LD_ADDR_EXP 149
109109: PUSH
109110: LD_INT 2100
109112: ST_TO_ADDR
// end ; if ai_hovercrafts_status = 2 and gamestage > 0 then
109113: LD_EXP 150
109117: PUSH
109118: LD_INT 2
109120: EQUAL
109121: PUSH
109122: LD_EXP 237
109126: PUSH
109127: LD_INT 0
109129: GREATER
109130: AND
109131: IFFALSE 110638
// begin if ai_hovercrafts_out = 0 and 1 in mb_bases then
109133: LD_EXP 153
109137: PUSH
109138: LD_INT 0
109140: EQUAL
109141: PUSH
109142: LD_INT 1
109144: PUSH
109145: LD_EXP 160
109149: IN
109150: AND
109151: IFFALSE 109685
// begin temp = 0 ;
109153: LD_ADDR_VAR 0 3
109157: PUSH
109158: LD_INT 0
109160: ST_TO_ADDR
// for j in mb_buildings [ 1 ] do
109161: LD_ADDR_VAR 0 2
109165: PUSH
109166: LD_EXP 161
109170: PUSH
109171: LD_INT 1
109173: ARRAY
109174: PUSH
109175: FOR_IN
109176: IFFALSE 109209
// if GetLives ( j ) < 500 then
109178: LD_VAR 0 2
109182: PPUSH
109183: CALL_OW 256
109187: PUSH
109188: LD_INT 500
109190: LESS
109191: IFFALSE 109207
// temp = temp + 1 ;
109193: LD_ADDR_VAR 0 3
109197: PUSH
109198: LD_VAR 0 3
109202: PUSH
109203: LD_INT 1
109205: PLUS
109206: ST_TO_ADDR
109207: GO 109175
109209: POP
109210: POP
// if temp + mb_to_build_list [ 1 ] > 2 then
109211: LD_VAR 0 3
109215: PUSH
109216: LD_EXP 173
109220: PUSH
109221: LD_INT 1
109223: ARRAY
109224: PLUS
109225: PUSH
109226: LD_INT 2
109228: GREATER
109229: IFFALSE 109685
// begin ai_hovercrafts_out = 1 ;
109231: LD_ADDR_EXP 153
109235: PUSH
109236: LD_INT 1
109238: ST_TO_ADDR
// ai_hovercrafts_hexcount = 1 ;
109239: LD_ADDR_EXP 152
109243: PUSH
109244: LD_INT 1
109246: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
109247: LD_ADDR_EXP 149
109251: PUSH
109252: LD_INT 6300
109254: ST_TO_ADDR
// ai_hovercrafts_status = 0 ;
109255: LD_ADDR_EXP 150
109259: PUSH
109260: LD_INT 0
109262: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 120 , 123 , 20 ] ] ) <= FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 75 , 125 , 20 ] ] ) then
109263: LD_INT 22
109265: PUSH
109266: LD_INT 2
109268: PUSH
109269: EMPTY
109270: LIST
109271: LIST
109272: PUSH
109273: LD_INT 92
109275: PUSH
109276: LD_INT 120
109278: PUSH
109279: LD_INT 123
109281: PUSH
109282: LD_INT 20
109284: PUSH
109285: EMPTY
109286: LIST
109287: LIST
109288: LIST
109289: LIST
109290: PUSH
109291: EMPTY
109292: LIST
109293: LIST
109294: PPUSH
109295: CALL_OW 69
109299: PUSH
109300: LD_INT 22
109302: PUSH
109303: LD_INT 2
109305: PUSH
109306: EMPTY
109307: LIST
109308: LIST
109309: PUSH
109310: LD_INT 92
109312: PUSH
109313: LD_INT 75
109315: PUSH
109316: LD_INT 125
109318: PUSH
109319: LD_INT 20
109321: PUSH
109322: EMPTY
109323: LIST
109324: LIST
109325: LIST
109326: LIST
109327: PUSH
109328: EMPTY
109329: LIST
109330: LIST
109331: PPUSH
109332: CALL_OW 69
109336: LESSEQUAL
109337: IFFALSE 109359
// temp = possible_paths [ 3 ] [ 2 ] else
109339: LD_ADDR_VAR 0 3
109343: PUSH
109344: LD_EXP 193
109348: PUSH
109349: LD_INT 3
109351: ARRAY
109352: PUSH
109353: LD_INT 2
109355: ARRAY
109356: ST_TO_ADDR
109357: GO 109377
// temp = possible_paths [ 3 ] [ 1 ] ;
109359: LD_ADDR_VAR 0 3
109363: PUSH
109364: LD_EXP 193
109368: PUSH
109369: LD_INT 3
109371: ARRAY
109372: PUSH
109373: LD_INT 1
109375: ARRAY
109376: ST_TO_ADDR
// temp2 = HovercraftDetection ( 1 ) ;
109377: LD_ADDR_VAR 0 4
109381: PUSH
109382: LD_INT 1
109384: PPUSH
109385: CALL 113265 0 1
109389: ST_TO_ADDR
// case temp2 [ 1 ] of base_legion_minor :
109390: LD_VAR 0 4
109394: PUSH
109395: LD_INT 1
109397: ARRAY
109398: PUSH
109399: LD_INT 7
109401: DOUBLE
109402: EQUAL
109403: IFTRUE 109407
109405: GO 109456
109407: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; mb_legion_perimeter :
109408: LD_ADDR_VAR 0 3
109412: PUSH
109413: LD_VAR 0 3
109417: PUSH
109418: LD_INT 43
109420: PUSH
109421: LD_INT 56
109423: PUSH
109424: EMPTY
109425: LIST
109426: LIST
109427: PUSH
109428: LD_INT 32
109430: PUSH
109431: LD_INT 28
109433: PUSH
109434: EMPTY
109435: LIST
109436: LIST
109437: PUSH
109438: LD_INT 49
109440: PUSH
109441: LD_INT 22
109443: PUSH
109444: EMPTY
109445: LIST
109446: LIST
109447: PUSH
109448: EMPTY
109449: LIST
109450: LIST
109451: LIST
109452: ADD
109453: ST_TO_ADDR
109454: GO 109661
109456: LD_INT 10
109458: DOUBLE
109459: EQUAL
109460: IFTRUE 109464
109462: GO 109513
109464: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; hv_area2 :
109465: LD_ADDR_VAR 0 3
109469: PUSH
109470: LD_VAR 0 3
109474: PUSH
109475: LD_INT 43
109477: PUSH
109478: LD_INT 56
109480: PUSH
109481: EMPTY
109482: LIST
109483: LIST
109484: PUSH
109485: LD_INT 32
109487: PUSH
109488: LD_INT 28
109490: PUSH
109491: EMPTY
109492: LIST
109493: LIST
109494: PUSH
109495: LD_INT 49
109497: PUSH
109498: LD_INT 22
109500: PUSH
109501: EMPTY
109502: LIST
109503: LIST
109504: PUSH
109505: EMPTY
109506: LIST
109507: LIST
109508: LIST
109509: ADD
109510: ST_TO_ADDR
109511: GO 109661
109513: LD_INT 15
109515: DOUBLE
109516: EQUAL
109517: IFTRUE 109521
109519: GO 109555
109521: POP
// temp = temp ^ [ possible_paths [ 3 ] [ 3 ] [ 1 ] ] ; hv_area3 :
109522: LD_ADDR_VAR 0 3
109526: PUSH
109527: LD_VAR 0 3
109531: PUSH
109532: LD_EXP 193
109536: PUSH
109537: LD_INT 3
109539: ARRAY
109540: PUSH
109541: LD_INT 3
109543: ARRAY
109544: PUSH
109545: LD_INT 1
109547: ARRAY
109548: PUSH
109549: EMPTY
109550: LIST
109551: ADD
109552: ST_TO_ADDR
109553: GO 109661
109555: LD_INT 16
109557: DOUBLE
109558: EQUAL
109559: IFTRUE 109563
109561: GO 109590
109563: POP
// temp = temp ^ possible_paths [ 3 ] [ 3 ] ; hv_area4 :
109564: LD_ADDR_VAR 0 3
109568: PUSH
109569: LD_VAR 0 3
109573: PUSH
109574: LD_EXP 193
109578: PUSH
109579: LD_INT 3
109581: ARRAY
109582: PUSH
109583: LD_INT 3
109585: ARRAY
109586: ADD
109587: ST_TO_ADDR
109588: GO 109661
109590: LD_INT 17
109592: DOUBLE
109593: EQUAL
109594: IFTRUE 109598
109596: GO 109625
109598: POP
// temp = temp ^ possible_paths [ 3 ] [ 4 ] ; hv_area5 :
109599: LD_ADDR_VAR 0 3
109603: PUSH
109604: LD_VAR 0 3
109608: PUSH
109609: LD_EXP 193
109613: PUSH
109614: LD_INT 3
109616: ARRAY
109617: PUSH
109618: LD_INT 4
109620: ARRAY
109621: ADD
109622: ST_TO_ADDR
109623: GO 109661
109625: LD_INT 18
109627: DOUBLE
109628: EQUAL
109629: IFTRUE 109633
109631: GO 109660
109633: POP
// temp = temp ^ possible_paths [ 3 ] [ 5 ] ; end ;
109634: LD_ADDR_VAR 0 3
109638: PUSH
109639: LD_VAR 0 3
109643: PUSH
109644: LD_EXP 193
109648: PUSH
109649: LD_INT 3
109651: ARRAY
109652: PUSH
109653: LD_INT 5
109655: ARRAY
109656: ADD
109657: ST_TO_ADDR
109658: GO 109661
109660: POP
// ai_hovercrafts_target = temp2 [ 2 ] ;
109661: LD_ADDR_EXP 154
109665: PUSH
109666: LD_VAR 0 4
109670: PUSH
109671: LD_INT 2
109673: ARRAY
109674: ST_TO_ADDR
// ai_hovercrafts_path = temp ;
109675: LD_ADDR_EXP 151
109679: PUSH
109680: LD_VAR 0 3
109684: ST_TO_ADDR
// end ; end ; if ai_hovercrafts_out = 0 and FilterUnitsInArea ( hv_area2 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) >= [ 6 , 4 , 2 ] [ difficulty ] then
109685: LD_EXP 153
109689: PUSH
109690: LD_INT 0
109692: EQUAL
109693: PUSH
109694: LD_INT 15
109696: PPUSH
109697: LD_INT 22
109699: PUSH
109700: LD_INT 2
109702: PUSH
109703: EMPTY
109704: LIST
109705: LIST
109706: PUSH
109707: LD_INT 2
109709: PUSH
109710: LD_INT 21
109712: PUSH
109713: LD_INT 1
109715: PUSH
109716: EMPTY
109717: LIST
109718: LIST
109719: PUSH
109720: LD_INT 1
109722: PUSH
109723: LD_INT 21
109725: PUSH
109726: LD_INT 2
109728: PUSH
109729: EMPTY
109730: LIST
109731: LIST
109732: PUSH
109733: LD_INT 33
109735: PUSH
109736: LD_INT 1
109738: PUSH
109739: EMPTY
109740: LIST
109741: LIST
109742: PUSH
109743: LD_INT 59
109745: PUSH
109746: EMPTY
109747: LIST
109748: PUSH
109749: EMPTY
109750: LIST
109751: LIST
109752: LIST
109753: LIST
109754: PUSH
109755: EMPTY
109756: LIST
109757: LIST
109758: LIST
109759: PUSH
109760: EMPTY
109761: LIST
109762: LIST
109763: PPUSH
109764: CALL_OW 70
109768: PUSH
109769: LD_INT 6
109771: PUSH
109772: LD_INT 4
109774: PUSH
109775: LD_INT 2
109777: PUSH
109778: EMPTY
109779: LIST
109780: LIST
109781: LIST
109782: PUSH
109783: LD_OWVAR 67
109787: ARRAY
109788: GREATEREQUAL
109789: AND
109790: IFFALSE 110221
// begin ai_hovercrafts_out = 1 ;
109792: LD_ADDR_EXP 153
109796: PUSH
109797: LD_INT 1
109799: ST_TO_ADDR
// ai_hovercrafts_hexcount = 1 ;
109800: LD_ADDR_EXP 152
109804: PUSH
109805: LD_INT 1
109807: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
109808: LD_ADDR_EXP 149
109812: PUSH
109813: LD_INT 6300
109815: ST_TO_ADDR
// ai_hovercrafts_status = 0 ;
109816: LD_ADDR_EXP 150
109820: PUSH
109821: LD_INT 0
109823: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 120 , 123 , 20 ] ] ) <= FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 75 , 125 , 20 ] ] ) then
109824: LD_INT 22
109826: PUSH
109827: LD_INT 2
109829: PUSH
109830: EMPTY
109831: LIST
109832: LIST
109833: PUSH
109834: LD_INT 92
109836: PUSH
109837: LD_INT 120
109839: PUSH
109840: LD_INT 123
109842: PUSH
109843: LD_INT 20
109845: PUSH
109846: EMPTY
109847: LIST
109848: LIST
109849: LIST
109850: LIST
109851: PUSH
109852: EMPTY
109853: LIST
109854: LIST
109855: PPUSH
109856: CALL_OW 69
109860: PUSH
109861: LD_INT 22
109863: PUSH
109864: LD_INT 2
109866: PUSH
109867: EMPTY
109868: LIST
109869: LIST
109870: PUSH
109871: LD_INT 92
109873: PUSH
109874: LD_INT 75
109876: PUSH
109877: LD_INT 125
109879: PUSH
109880: LD_INT 20
109882: PUSH
109883: EMPTY
109884: LIST
109885: LIST
109886: LIST
109887: LIST
109888: PUSH
109889: EMPTY
109890: LIST
109891: LIST
109892: PPUSH
109893: CALL_OW 69
109897: LESSEQUAL
109898: IFFALSE 109920
// temp = possible_paths [ 3 ] [ 2 ] else
109900: LD_ADDR_VAR 0 3
109904: PUSH
109905: LD_EXP 193
109909: PUSH
109910: LD_INT 3
109912: ARRAY
109913: PUSH
109914: LD_INT 2
109916: ARRAY
109917: ST_TO_ADDR
109918: GO 109938
// temp = possible_paths [ 3 ] [ 1 ] ;
109920: LD_ADDR_VAR 0 3
109924: PUSH
109925: LD_EXP 193
109929: PUSH
109930: LD_INT 3
109932: ARRAY
109933: PUSH
109934: LD_INT 1
109936: ARRAY
109937: ST_TO_ADDR
// temp = temp ^ [ possible_paths [ 3 ] [ 3 ] [ 1 ] ] ;
109938: LD_ADDR_VAR 0 3
109942: PUSH
109943: LD_VAR 0 3
109947: PUSH
109948: LD_EXP 193
109952: PUSH
109953: LD_INT 3
109955: ARRAY
109956: PUSH
109957: LD_INT 3
109959: ARRAY
109960: PUSH
109961: LD_INT 1
109963: ARRAY
109964: PUSH
109965: EMPTY
109966: LIST
109967: ADD
109968: ST_TO_ADDR
// ai_hovercrafts_path = temp ;
109969: LD_ADDR_EXP 151
109973: PUSH
109974: LD_VAR 0 3
109978: ST_TO_ADDR
// count = 0 ;
109979: LD_ADDR_VAR 0 6
109983: PUSH
109984: LD_INT 0
109986: ST_TO_ADDR
// un = 0 ;
109987: LD_ADDR_VAR 0 7
109991: PUSH
109992: LD_INT 0
109994: ST_TO_ADDR
// for j in FilterUnitsInArea ( hv_area2 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) do
109995: LD_ADDR_VAR 0 2
109999: PUSH
110000: LD_INT 15
110002: PPUSH
110003: LD_INT 22
110005: PUSH
110006: LD_INT 2
110008: PUSH
110009: EMPTY
110010: LIST
110011: LIST
110012: PUSH
110013: LD_INT 2
110015: PUSH
110016: LD_INT 21
110018: PUSH
110019: LD_INT 1
110021: PUSH
110022: EMPTY
110023: LIST
110024: LIST
110025: PUSH
110026: LD_INT 1
110028: PUSH
110029: LD_INT 21
110031: PUSH
110032: LD_INT 2
110034: PUSH
110035: EMPTY
110036: LIST
110037: LIST
110038: PUSH
110039: LD_INT 33
110041: PUSH
110042: LD_INT 1
110044: PUSH
110045: EMPTY
110046: LIST
110047: LIST
110048: PUSH
110049: LD_INT 59
110051: PUSH
110052: EMPTY
110053: LIST
110054: PUSH
110055: EMPTY
110056: LIST
110057: LIST
110058: LIST
110059: LIST
110060: PUSH
110061: EMPTY
110062: LIST
110063: LIST
110064: LIST
110065: PUSH
110066: EMPTY
110067: LIST
110068: LIST
110069: PPUSH
110070: CALL_OW 70
110074: PUSH
110075: FOR_IN
110076: IFFALSE 110209
// begin temp = FilterUnitsInArea ( hv_area2 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] , [ f_dist , j , 9 ] ] ) ;
110078: LD_ADDR_VAR 0 3
110082: PUSH
110083: LD_INT 15
110085: PPUSH
110086: LD_INT 22
110088: PUSH
110089: LD_INT 2
110091: PUSH
110092: EMPTY
110093: LIST
110094: LIST
110095: PUSH
110096: LD_INT 2
110098: PUSH
110099: LD_INT 21
110101: PUSH
110102: LD_INT 1
110104: PUSH
110105: EMPTY
110106: LIST
110107: LIST
110108: PUSH
110109: LD_INT 1
110111: PUSH
110112: LD_INT 21
110114: PUSH
110115: LD_INT 2
110117: PUSH
110118: EMPTY
110119: LIST
110120: LIST
110121: PUSH
110122: LD_INT 33
110124: PUSH
110125: LD_INT 1
110127: PUSH
110128: EMPTY
110129: LIST
110130: LIST
110131: PUSH
110132: LD_INT 59
110134: PUSH
110135: EMPTY
110136: LIST
110137: PUSH
110138: EMPTY
110139: LIST
110140: LIST
110141: LIST
110142: LIST
110143: PUSH
110144: EMPTY
110145: LIST
110146: LIST
110147: LIST
110148: PUSH
110149: LD_INT 91
110151: PUSH
110152: LD_VAR 0 2
110156: PUSH
110157: LD_INT 9
110159: PUSH
110160: EMPTY
110161: LIST
110162: LIST
110163: LIST
110164: PUSH
110165: EMPTY
110166: LIST
110167: LIST
110168: LIST
110169: PPUSH
110170: CALL_OW 70
110174: ST_TO_ADDR
// if temp > count then
110175: LD_VAR 0 3
110179: PUSH
110180: LD_VAR 0 6
110184: GREATER
110185: IFFALSE 110207
// begin count = temp ;
110187: LD_ADDR_VAR 0 6
110191: PUSH
110192: LD_VAR 0 3
110196: ST_TO_ADDR
// un = j ;
110197: LD_ADDR_VAR 0 7
110201: PUSH
110202: LD_VAR 0 2
110206: ST_TO_ADDR
// end ; end ;
110207: GO 110075
110209: POP
110210: POP
// ai_hovercrafts_target = j ;
110211: LD_ADDR_EXP 154
110215: PUSH
110216: LD_VAR 0 2
110220: ST_TO_ADDR
// end ; if ai_hovercrafts_out = 0 and FilterUnitsInArea ( hv_area6 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) > [ 6 , 4 , 2 ] [ difficulty ] then
110221: LD_EXP 153
110225: PUSH
110226: LD_INT 0
110228: EQUAL
110229: PUSH
110230: LD_INT 19
110232: PPUSH
110233: LD_INT 22
110235: PUSH
110236: LD_INT 2
110238: PUSH
110239: EMPTY
110240: LIST
110241: LIST
110242: PUSH
110243: LD_INT 2
110245: PUSH
110246: LD_INT 21
110248: PUSH
110249: LD_INT 1
110251: PUSH
110252: EMPTY
110253: LIST
110254: LIST
110255: PUSH
110256: LD_INT 1
110258: PUSH
110259: LD_INT 21
110261: PUSH
110262: LD_INT 2
110264: PUSH
110265: EMPTY
110266: LIST
110267: LIST
110268: PUSH
110269: LD_INT 33
110271: PUSH
110272: LD_INT 1
110274: PUSH
110275: EMPTY
110276: LIST
110277: LIST
110278: PUSH
110279: LD_INT 59
110281: PUSH
110282: EMPTY
110283: LIST
110284: PUSH
110285: EMPTY
110286: LIST
110287: LIST
110288: LIST
110289: LIST
110290: PUSH
110291: EMPTY
110292: LIST
110293: LIST
110294: LIST
110295: PUSH
110296: EMPTY
110297: LIST
110298: LIST
110299: PPUSH
110300: CALL_OW 70
110304: PUSH
110305: LD_INT 6
110307: PUSH
110308: LD_INT 4
110310: PUSH
110311: LD_INT 2
110313: PUSH
110314: EMPTY
110315: LIST
110316: LIST
110317: LIST
110318: PUSH
110319: LD_OWVAR 67
110323: ARRAY
110324: GREATER
110325: AND
110326: IFFALSE 110620
// begin ai_hovercrafts_out = 1 ;
110328: LD_ADDR_EXP 153
110332: PUSH
110333: LD_INT 1
110335: ST_TO_ADDR
// ai_hovercrafts_hexcount = 1 ;
110336: LD_ADDR_EXP 152
110340: PUSH
110341: LD_INT 1
110343: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
110344: LD_ADDR_EXP 149
110348: PUSH
110349: LD_INT 6300
110351: ST_TO_ADDR
// ai_hovercrafts_status = 0 ;
110352: LD_ADDR_EXP 150
110356: PUSH
110357: LD_INT 0
110359: ST_TO_ADDR
// ai_hovercrafts_path = possible_paths [ 3 ] [ 6 ] ;
110360: LD_ADDR_EXP 151
110364: PUSH
110365: LD_EXP 193
110369: PUSH
110370: LD_INT 3
110372: ARRAY
110373: PUSH
110374: LD_INT 6
110376: ARRAY
110377: ST_TO_ADDR
// count = 0 ;
110378: LD_ADDR_VAR 0 6
110382: PUSH
110383: LD_INT 0
110385: ST_TO_ADDR
// un = 0 ;
110386: LD_ADDR_VAR 0 7
110390: PUSH
110391: LD_INT 0
110393: ST_TO_ADDR
// for j in FilterUnitsInArea ( hv_area6 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) do
110394: LD_ADDR_VAR 0 2
110398: PUSH
110399: LD_INT 19
110401: PPUSH
110402: LD_INT 22
110404: PUSH
110405: LD_INT 2
110407: PUSH
110408: EMPTY
110409: LIST
110410: LIST
110411: PUSH
110412: LD_INT 2
110414: PUSH
110415: LD_INT 21
110417: PUSH
110418: LD_INT 1
110420: PUSH
110421: EMPTY
110422: LIST
110423: LIST
110424: PUSH
110425: LD_INT 1
110427: PUSH
110428: LD_INT 21
110430: PUSH
110431: LD_INT 2
110433: PUSH
110434: EMPTY
110435: LIST
110436: LIST
110437: PUSH
110438: LD_INT 33
110440: PUSH
110441: LD_INT 1
110443: PUSH
110444: EMPTY
110445: LIST
110446: LIST
110447: PUSH
110448: LD_INT 59
110450: PUSH
110451: EMPTY
110452: LIST
110453: PUSH
110454: EMPTY
110455: LIST
110456: LIST
110457: LIST
110458: LIST
110459: PUSH
110460: EMPTY
110461: LIST
110462: LIST
110463: LIST
110464: PUSH
110465: EMPTY
110466: LIST
110467: LIST
110468: PPUSH
110469: CALL_OW 70
110473: PUSH
110474: FOR_IN
110475: IFFALSE 110608
// begin temp = FilterUnitsInArea ( hv_area6 , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] , [ f_dist , j , 9 ] ] ) ;
110477: LD_ADDR_VAR 0 3
110481: PUSH
110482: LD_INT 19
110484: PPUSH
110485: LD_INT 22
110487: PUSH
110488: LD_INT 2
110490: PUSH
110491: EMPTY
110492: LIST
110493: LIST
110494: PUSH
110495: LD_INT 2
110497: PUSH
110498: LD_INT 21
110500: PUSH
110501: LD_INT 1
110503: PUSH
110504: EMPTY
110505: LIST
110506: LIST
110507: PUSH
110508: LD_INT 1
110510: PUSH
110511: LD_INT 21
110513: PUSH
110514: LD_INT 2
110516: PUSH
110517: EMPTY
110518: LIST
110519: LIST
110520: PUSH
110521: LD_INT 33
110523: PUSH
110524: LD_INT 1
110526: PUSH
110527: EMPTY
110528: LIST
110529: LIST
110530: PUSH
110531: LD_INT 59
110533: PUSH
110534: EMPTY
110535: LIST
110536: PUSH
110537: EMPTY
110538: LIST
110539: LIST
110540: LIST
110541: LIST
110542: PUSH
110543: EMPTY
110544: LIST
110545: LIST
110546: LIST
110547: PUSH
110548: LD_INT 91
110550: PUSH
110551: LD_VAR 0 2
110555: PUSH
110556: LD_INT 9
110558: PUSH
110559: EMPTY
110560: LIST
110561: LIST
110562: LIST
110563: PUSH
110564: EMPTY
110565: LIST
110566: LIST
110567: LIST
110568: PPUSH
110569: CALL_OW 70
110573: ST_TO_ADDR
// if temp > count then
110574: LD_VAR 0 3
110578: PUSH
110579: LD_VAR 0 6
110583: GREATER
110584: IFFALSE 110606
// begin count = temp ;
110586: LD_ADDR_VAR 0 6
110590: PUSH
110591: LD_VAR 0 3
110595: ST_TO_ADDR
// un = j ;
110596: LD_ADDR_VAR 0 7
110600: PUSH
110601: LD_VAR 0 2
110605: ST_TO_ADDR
// end ; end ;
110606: GO 110474
110608: POP
110609: POP
// ai_hovercrafts_target = j ;
110610: LD_ADDR_EXP 154
110614: PUSH
110615: LD_VAR 0 2
110619: ST_TO_ADDR
// end ; if gamestage < 2 then
110620: LD_EXP 237
110624: PUSH
110625: LD_INT 2
110627: LESS
110628: IFFALSE 110638
// ai_hovercrafts_timer = 0 0$30 ;
110630: LD_ADDR_EXP 149
110634: PUSH
110635: LD_INT 1050
110637: ST_TO_ADDR
// end ; if ai_hovercrafts_status = 3 and gamestage > 1 then
110638: LD_EXP 150
110642: PUSH
110643: LD_INT 3
110645: EQUAL
110646: PUSH
110647: LD_EXP 237
110651: PUSH
110652: LD_INT 1
110654: GREATER
110655: AND
110656: IFFALSE 111122
// begin temp2 = HovercraftDetection ( 1 ) ;
110658: LD_ADDR_VAR 0 4
110662: PUSH
110663: LD_INT 1
110665: PPUSH
110666: CALL 113265 0 1
110670: ST_TO_ADDR
// if temp2 > 0 then
110671: LD_VAR 0 4
110675: PUSH
110676: LD_INT 0
110678: GREATER
110679: IFFALSE 111122
// begin ai_hovercrafts_out = 1 ;
110681: LD_ADDR_EXP 153
110685: PUSH
110686: LD_INT 1
110688: ST_TO_ADDR
// ai_hovercrafts_hexcount = 1 ;
110689: LD_ADDR_EXP 152
110693: PUSH
110694: LD_INT 1
110696: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
110697: LD_ADDR_EXP 149
110701: PUSH
110702: LD_INT 6300
110704: ST_TO_ADDR
// ai_hovercrafts_status = 0 ;
110705: LD_ADDR_EXP 150
110709: PUSH
110710: LD_INT 0
110712: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 120 , 123 , 20 ] ] ) <= FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 75 , 125 , 20 ] ] ) then
110713: LD_INT 22
110715: PUSH
110716: LD_INT 2
110718: PUSH
110719: EMPTY
110720: LIST
110721: LIST
110722: PUSH
110723: LD_INT 92
110725: PUSH
110726: LD_INT 120
110728: PUSH
110729: LD_INT 123
110731: PUSH
110732: LD_INT 20
110734: PUSH
110735: EMPTY
110736: LIST
110737: LIST
110738: LIST
110739: LIST
110740: PUSH
110741: EMPTY
110742: LIST
110743: LIST
110744: PPUSH
110745: CALL_OW 69
110749: PUSH
110750: LD_INT 22
110752: PUSH
110753: LD_INT 2
110755: PUSH
110756: EMPTY
110757: LIST
110758: LIST
110759: PUSH
110760: LD_INT 92
110762: PUSH
110763: LD_INT 75
110765: PUSH
110766: LD_INT 125
110768: PUSH
110769: LD_INT 20
110771: PUSH
110772: EMPTY
110773: LIST
110774: LIST
110775: LIST
110776: LIST
110777: PUSH
110778: EMPTY
110779: LIST
110780: LIST
110781: PPUSH
110782: CALL_OW 69
110786: LESSEQUAL
110787: IFFALSE 110809
// temp = possible_paths [ 3 ] [ 2 ] else
110789: LD_ADDR_VAR 0 3
110793: PUSH
110794: LD_EXP 193
110798: PUSH
110799: LD_INT 3
110801: ARRAY
110802: PUSH
110803: LD_INT 2
110805: ARRAY
110806: ST_TO_ADDR
110807: GO 110827
// temp = possible_paths [ 3 ] [ 1 ] ;
110809: LD_ADDR_VAR 0 3
110813: PUSH
110814: LD_EXP 193
110818: PUSH
110819: LD_INT 3
110821: ARRAY
110822: PUSH
110823: LD_INT 1
110825: ARRAY
110826: ST_TO_ADDR
// case temp2 [ 1 ] of base_legion_minor :
110827: LD_VAR 0 4
110831: PUSH
110832: LD_INT 1
110834: ARRAY
110835: PUSH
110836: LD_INT 7
110838: DOUBLE
110839: EQUAL
110840: IFTRUE 110844
110842: GO 110893
110844: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; mb_legion_perimeter :
110845: LD_ADDR_VAR 0 3
110849: PUSH
110850: LD_VAR 0 3
110854: PUSH
110855: LD_INT 43
110857: PUSH
110858: LD_INT 56
110860: PUSH
110861: EMPTY
110862: LIST
110863: LIST
110864: PUSH
110865: LD_INT 32
110867: PUSH
110868: LD_INT 28
110870: PUSH
110871: EMPTY
110872: LIST
110873: LIST
110874: PUSH
110875: LD_INT 49
110877: PUSH
110878: LD_INT 22
110880: PUSH
110881: EMPTY
110882: LIST
110883: LIST
110884: PUSH
110885: EMPTY
110886: LIST
110887: LIST
110888: LIST
110889: ADD
110890: ST_TO_ADDR
110891: GO 111098
110893: LD_INT 10
110895: DOUBLE
110896: EQUAL
110897: IFTRUE 110901
110899: GO 110950
110901: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; hv_area2 :
110902: LD_ADDR_VAR 0 3
110906: PUSH
110907: LD_VAR 0 3
110911: PUSH
110912: LD_INT 43
110914: PUSH
110915: LD_INT 56
110917: PUSH
110918: EMPTY
110919: LIST
110920: LIST
110921: PUSH
110922: LD_INT 32
110924: PUSH
110925: LD_INT 28
110927: PUSH
110928: EMPTY
110929: LIST
110930: LIST
110931: PUSH
110932: LD_INT 49
110934: PUSH
110935: LD_INT 22
110937: PUSH
110938: EMPTY
110939: LIST
110940: LIST
110941: PUSH
110942: EMPTY
110943: LIST
110944: LIST
110945: LIST
110946: ADD
110947: ST_TO_ADDR
110948: GO 111098
110950: LD_INT 15
110952: DOUBLE
110953: EQUAL
110954: IFTRUE 110958
110956: GO 110992
110958: POP
// temp = temp ^ [ possible_paths [ 3 ] [ 3 ] [ 1 ] ] ; hv_area3 :
110959: LD_ADDR_VAR 0 3
110963: PUSH
110964: LD_VAR 0 3
110968: PUSH
110969: LD_EXP 193
110973: PUSH
110974: LD_INT 3
110976: ARRAY
110977: PUSH
110978: LD_INT 3
110980: ARRAY
110981: PUSH
110982: LD_INT 1
110984: ARRAY
110985: PUSH
110986: EMPTY
110987: LIST
110988: ADD
110989: ST_TO_ADDR
110990: GO 111098
110992: LD_INT 16
110994: DOUBLE
110995: EQUAL
110996: IFTRUE 111000
110998: GO 111027
111000: POP
// temp = temp ^ possible_paths [ 3 ] [ 3 ] ; hv_area4 :
111001: LD_ADDR_VAR 0 3
111005: PUSH
111006: LD_VAR 0 3
111010: PUSH
111011: LD_EXP 193
111015: PUSH
111016: LD_INT 3
111018: ARRAY
111019: PUSH
111020: LD_INT 3
111022: ARRAY
111023: ADD
111024: ST_TO_ADDR
111025: GO 111098
111027: LD_INT 17
111029: DOUBLE
111030: EQUAL
111031: IFTRUE 111035
111033: GO 111062
111035: POP
// temp = temp ^ possible_paths [ 3 ] [ 4 ] ; hv_area5 :
111036: LD_ADDR_VAR 0 3
111040: PUSH
111041: LD_VAR 0 3
111045: PUSH
111046: LD_EXP 193
111050: PUSH
111051: LD_INT 3
111053: ARRAY
111054: PUSH
111055: LD_INT 4
111057: ARRAY
111058: ADD
111059: ST_TO_ADDR
111060: GO 111098
111062: LD_INT 18
111064: DOUBLE
111065: EQUAL
111066: IFTRUE 111070
111068: GO 111097
111070: POP
// temp = temp ^ possible_paths [ 3 ] [ 5 ] ; end ;
111071: LD_ADDR_VAR 0 3
111075: PUSH
111076: LD_VAR 0 3
111080: PUSH
111081: LD_EXP 193
111085: PUSH
111086: LD_INT 3
111088: ARRAY
111089: PUSH
111090: LD_INT 5
111092: ARRAY
111093: ADD
111094: ST_TO_ADDR
111095: GO 111098
111097: POP
// ai_hovercrafts_target = temp2 [ 2 ] ;
111098: LD_ADDR_EXP 154
111102: PUSH
111103: LD_VAR 0 4
111107: PUSH
111108: LD_INT 2
111110: ARRAY
111111: ST_TO_ADDR
// ai_hovercrafts_path = temp ;
111112: LD_ADDR_EXP 151
111116: PUSH
111117: LD_VAR 0 3
111121: ST_TO_ADDR
// end ; end ; end ; if hovercrafts >= 3 and ai_hovercrafts_out = 0 then
111122: LD_VAR 0 5
111126: PUSH
111127: LD_INT 3
111129: GREATEREQUAL
111130: PUSH
111131: LD_EXP 153
111135: PUSH
111136: LD_INT 0
111138: EQUAL
111139: AND
111140: IFFALSE 111610
// if BaseUnderAttack ( 1 , 2 ) then
111142: LD_INT 1
111144: PPUSH
111145: LD_INT 2
111147: PPUSH
111148: CALL 55912 0 2
111152: IFFALSE 111610
// begin temp2 = HovercraftDetection ( 0 ) ;
111154: LD_ADDR_VAR 0 4
111158: PUSH
111159: LD_INT 0
111161: PPUSH
111162: CALL 113265 0 1
111166: ST_TO_ADDR
// if temp2 > 0 then
111167: LD_VAR 0 4
111171: PUSH
111172: LD_INT 0
111174: GREATER
111175: IFFALSE 111610
// begin ai_hovercrafts_out = 1 ;
111177: LD_ADDR_EXP 153
111181: PUSH
111182: LD_INT 1
111184: ST_TO_ADDR
// ai_hovercrafts_hexcount = 1 ;
111185: LD_ADDR_EXP 152
111189: PUSH
111190: LD_INT 1
111192: ST_TO_ADDR
// ai_hovercrafts_timer = 3 3$0 ;
111193: LD_ADDR_EXP 149
111197: PUSH
111198: LD_INT 6300
111200: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 120 , 123 , 20 ] ] ) < FilterAllUnits ( [ [ f_side , 2 ] , [ f_distxy , 75 , 125 , 20 ] ] ) then
111201: LD_INT 22
111203: PUSH
111204: LD_INT 2
111206: PUSH
111207: EMPTY
111208: LIST
111209: LIST
111210: PUSH
111211: LD_INT 92
111213: PUSH
111214: LD_INT 120
111216: PUSH
111217: LD_INT 123
111219: PUSH
111220: LD_INT 20
111222: PUSH
111223: EMPTY
111224: LIST
111225: LIST
111226: LIST
111227: LIST
111228: PUSH
111229: EMPTY
111230: LIST
111231: LIST
111232: PPUSH
111233: CALL_OW 69
111237: PUSH
111238: LD_INT 22
111240: PUSH
111241: LD_INT 2
111243: PUSH
111244: EMPTY
111245: LIST
111246: LIST
111247: PUSH
111248: LD_INT 92
111250: PUSH
111251: LD_INT 75
111253: PUSH
111254: LD_INT 125
111256: PUSH
111257: LD_INT 20
111259: PUSH
111260: EMPTY
111261: LIST
111262: LIST
111263: LIST
111264: LIST
111265: PUSH
111266: EMPTY
111267: LIST
111268: LIST
111269: PPUSH
111270: CALL_OW 69
111274: LESS
111275: IFFALSE 111297
// temp = possible_paths [ 3 ] [ 2 ] else
111277: LD_ADDR_VAR 0 3
111281: PUSH
111282: LD_EXP 193
111286: PUSH
111287: LD_INT 3
111289: ARRAY
111290: PUSH
111291: LD_INT 2
111293: ARRAY
111294: ST_TO_ADDR
111295: GO 111315
// temp = possible_paths [ 3 ] [ 1 ] ;
111297: LD_ADDR_VAR 0 3
111301: PUSH
111302: LD_EXP 193
111306: PUSH
111307: LD_INT 3
111309: ARRAY
111310: PUSH
111311: LD_INT 1
111313: ARRAY
111314: ST_TO_ADDR
// case temp2 [ 1 ] of base_legion_minor :
111315: LD_VAR 0 4
111319: PUSH
111320: LD_INT 1
111322: ARRAY
111323: PUSH
111324: LD_INT 7
111326: DOUBLE
111327: EQUAL
111328: IFTRUE 111332
111330: GO 111381
111332: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; mb_legion_perimeter :
111333: LD_ADDR_VAR 0 3
111337: PUSH
111338: LD_VAR 0 3
111342: PUSH
111343: LD_INT 43
111345: PUSH
111346: LD_INT 56
111348: PUSH
111349: EMPTY
111350: LIST
111351: LIST
111352: PUSH
111353: LD_INT 32
111355: PUSH
111356: LD_INT 28
111358: PUSH
111359: EMPTY
111360: LIST
111361: LIST
111362: PUSH
111363: LD_INT 49
111365: PUSH
111366: LD_INT 22
111368: PUSH
111369: EMPTY
111370: LIST
111371: LIST
111372: PUSH
111373: EMPTY
111374: LIST
111375: LIST
111376: LIST
111377: ADD
111378: ST_TO_ADDR
111379: GO 111586
111381: LD_INT 10
111383: DOUBLE
111384: EQUAL
111385: IFTRUE 111389
111387: GO 111438
111389: POP
// temp = temp ^ [ [ 43 , 56 ] , [ 32 , 28 ] , [ 49 , 22 ] ] ; hv_area2 :
111390: LD_ADDR_VAR 0 3
111394: PUSH
111395: LD_VAR 0 3
111399: PUSH
111400: LD_INT 43
111402: PUSH
111403: LD_INT 56
111405: PUSH
111406: EMPTY
111407: LIST
111408: LIST
111409: PUSH
111410: LD_INT 32
111412: PUSH
111413: LD_INT 28
111415: PUSH
111416: EMPTY
111417: LIST
111418: LIST
111419: PUSH
111420: LD_INT 49
111422: PUSH
111423: LD_INT 22
111425: PUSH
111426: EMPTY
111427: LIST
111428: LIST
111429: PUSH
111430: EMPTY
111431: LIST
111432: LIST
111433: LIST
111434: ADD
111435: ST_TO_ADDR
111436: GO 111586
111438: LD_INT 15
111440: DOUBLE
111441: EQUAL
111442: IFTRUE 111446
111444: GO 111480
111446: POP
// temp = temp ^ [ possible_paths [ 3 ] [ 3 ] [ 1 ] ] ; hv_area3 :
111447: LD_ADDR_VAR 0 3
111451: PUSH
111452: LD_VAR 0 3
111456: PUSH
111457: LD_EXP 193
111461: PUSH
111462: LD_INT 3
111464: ARRAY
111465: PUSH
111466: LD_INT 3
111468: ARRAY
111469: PUSH
111470: LD_INT 1
111472: ARRAY
111473: PUSH
111474: EMPTY
111475: LIST
111476: ADD
111477: ST_TO_ADDR
111478: GO 111586
111480: LD_INT 16
111482: DOUBLE
111483: EQUAL
111484: IFTRUE 111488
111486: GO 111515
111488: POP
// temp = temp ^ possible_paths [ 3 ] [ 3 ] ; hv_area4 :
111489: LD_ADDR_VAR 0 3
111493: PUSH
111494: LD_VAR 0 3
111498: PUSH
111499: LD_EXP 193
111503: PUSH
111504: LD_INT 3
111506: ARRAY
111507: PUSH
111508: LD_INT 3
111510: ARRAY
111511: ADD
111512: ST_TO_ADDR
111513: GO 111586
111515: LD_INT 17
111517: DOUBLE
111518: EQUAL
111519: IFTRUE 111523
111521: GO 111550
111523: POP
// temp = temp ^ possible_paths [ 3 ] [ 4 ] ; hv_area5 :
111524: LD_ADDR_VAR 0 3
111528: PUSH
111529: LD_VAR 0 3
111533: PUSH
111534: LD_EXP 193
111538: PUSH
111539: LD_INT 3
111541: ARRAY
111542: PUSH
111543: LD_INT 4
111545: ARRAY
111546: ADD
111547: ST_TO_ADDR
111548: GO 111586
111550: LD_INT 18
111552: DOUBLE
111553: EQUAL
111554: IFTRUE 111558
111556: GO 111585
111558: POP
// temp = temp ^ possible_paths [ 3 ] [ 5 ] ; end ;
111559: LD_ADDR_VAR 0 3
111563: PUSH
111564: LD_VAR 0 3
111568: PUSH
111569: LD_EXP 193
111573: PUSH
111574: LD_INT 3
111576: ARRAY
111577: PUSH
111578: LD_INT 5
111580: ARRAY
111581: ADD
111582: ST_TO_ADDR
111583: GO 111586
111585: POP
// ai_hovercrafts_path = temp ;
111586: LD_ADDR_EXP 151
111590: PUSH
111591: LD_VAR 0 3
111595: ST_TO_ADDR
// ai_hovercrafts_target = temp2 [ 2 ] ;
111596: LD_ADDR_EXP 154
111600: PUSH
111601: LD_VAR 0 4
111605: PUSH
111606: LD_INT 2
111608: ARRAY
111609: ST_TO_ADDR
// end ; end ; enable ;
111610: ENABLE
// end ;
111611: PPOPN 7
111613: END
// every 0 0$1 trigger ai_hovercrafts_out = 1 do var i , j , hovercrafts , enemiesinrange , temp , temp_list , priority , selfdestruct , target ; var soldiers , civilians , scientists , controls , vehicles ; var machineguns , lightguns , radar ;
111614: LD_EXP 153
111618: PUSH
111619: LD_INT 1
111621: EQUAL
111622: IFFALSE 113262
111624: GO 111626
111626: DISABLE
111627: LD_INT 0
111629: PPUSH
111630: PPUSH
111631: PPUSH
111632: PPUSH
111633: PPUSH
111634: PPUSH
111635: PPUSH
111636: PPUSH
111637: PPUSH
111638: PPUSH
111639: PPUSH
111640: PPUSH
111641: PPUSH
111642: PPUSH
111643: PPUSH
111644: PPUSH
111645: PPUSH
// begin Randomize ;
111646: CALL_OW 10
// hovercrafts = [ ] ;
111650: LD_ADDR_VAR 0 3
111654: PUSH
111655: EMPTY
111656: ST_TO_ADDR
// for i in ai_hovercrafts do
111657: LD_ADDR_VAR 0 1
111661: PUSH
111662: LD_EXP 148
111666: PUSH
111667: FOR_IN
111668: IFFALSE 111699
// if IsOk ( i ) then
111670: LD_VAR 0 1
111674: PPUSH
111675: CALL_OW 302
111679: IFFALSE 111697
// hovercrafts = hovercrafts ^ i ;
111681: LD_ADDR_VAR 0 3
111685: PUSH
111686: LD_VAR 0 3
111690: PUSH
111691: LD_VAR 0 1
111695: ADD
111696: ST_TO_ADDR
111697: GO 111667
111699: POP
111700: POP
// if hovercrafts = 0 then
111701: LD_VAR 0 3
111705: PUSH
111706: LD_INT 0
111708: EQUAL
111709: IFFALSE 111719
// ai_hovercrafts_out = 0 ;
111711: LD_ADDR_EXP 153
111715: PUSH
111716: LD_INT 0
111718: ST_TO_ADDR
// enemiesinrange = [ ] ;
111719: LD_ADDR_VAR 0 4
111723: PUSH
111724: EMPTY
111725: ST_TO_ADDR
// if hovercrafts > 0 then
111726: LD_VAR 0 3
111730: PUSH
111731: LD_INT 0
111733: GREATER
111734: IFFALSE 112066
// if IsDead ( ai_hovercrafts_target ) then
111736: LD_EXP 154
111740: PPUSH
111741: CALL_OW 301
111745: IFFALSE 111879
// begin for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) do
111747: LD_ADDR_VAR 0 1
111751: PUSH
111752: LD_INT 22
111754: PUSH
111755: LD_INT 2
111757: PUSH
111758: EMPTY
111759: LIST
111760: LIST
111761: PUSH
111762: LD_INT 2
111764: PUSH
111765: LD_INT 21
111767: PUSH
111768: LD_INT 1
111770: PUSH
111771: EMPTY
111772: LIST
111773: LIST
111774: PUSH
111775: LD_INT 1
111777: PUSH
111778: LD_INT 21
111780: PUSH
111781: LD_INT 2
111783: PUSH
111784: EMPTY
111785: LIST
111786: LIST
111787: PUSH
111788: LD_INT 33
111790: PUSH
111791: LD_INT 1
111793: PUSH
111794: EMPTY
111795: LIST
111796: LIST
111797: PUSH
111798: LD_INT 59
111800: PUSH
111801: EMPTY
111802: LIST
111803: PUSH
111804: EMPTY
111805: LIST
111806: LIST
111807: LIST
111808: LIST
111809: PUSH
111810: EMPTY
111811: LIST
111812: LIST
111813: LIST
111814: PUSH
111815: EMPTY
111816: LIST
111817: LIST
111818: PPUSH
111819: CALL_OW 69
111823: PUSH
111824: FOR_IN
111825: IFFALSE 111875
// if GetDistUnits ( i , NearestUnitToUnit ( hovercrafts , i ) ) <= 15 then
111827: LD_VAR 0 1
111831: PPUSH
111832: LD_VAR 0 3
111836: PPUSH
111837: LD_VAR 0 1
111841: PPUSH
111842: CALL_OW 74
111846: PPUSH
111847: CALL_OW 296
111851: PUSH
111852: LD_INT 15
111854: LESSEQUAL
111855: IFFALSE 111873
// enemiesinrange = enemiesinrange ^ i ;
111857: LD_ADDR_VAR 0 4
111861: PUSH
111862: LD_VAR 0 4
111866: PUSH
111867: LD_VAR 0 1
111871: ADD
111872: ST_TO_ADDR
111873: GO 111824
111875: POP
111876: POP
// end else
111877: GO 112066
// begin if GetDistUnits ( ai_hovercrafts_target , hovercrafts [ 1 ] ) <= 15 then
111879: LD_EXP 154
111883: PPUSH
111884: LD_VAR 0 3
111888: PUSH
111889: LD_INT 1
111891: ARRAY
111892: PPUSH
111893: CALL_OW 296
111897: PUSH
111898: LD_INT 15
111900: LESSEQUAL
111901: IFFALSE 111919
// enemiesinrange = enemiesinrange ^ ai_hovercrafts_target ;
111903: LD_ADDR_VAR 0 4
111907: PUSH
111908: LD_VAR 0 4
111912: PUSH
111913: LD_EXP 154
111917: ADD
111918: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] , [ f_dist , ai_hovercrafts_target , 9 ] ] ) do
111919: LD_ADDR_VAR 0 1
111923: PUSH
111924: LD_INT 22
111926: PUSH
111927: LD_INT 2
111929: PUSH
111930: EMPTY
111931: LIST
111932: LIST
111933: PUSH
111934: LD_INT 2
111936: PUSH
111937: LD_INT 21
111939: PUSH
111940: LD_INT 1
111942: PUSH
111943: EMPTY
111944: LIST
111945: LIST
111946: PUSH
111947: LD_INT 1
111949: PUSH
111950: LD_INT 21
111952: PUSH
111953: LD_INT 2
111955: PUSH
111956: EMPTY
111957: LIST
111958: LIST
111959: PUSH
111960: LD_INT 33
111962: PUSH
111963: LD_INT 1
111965: PUSH
111966: EMPTY
111967: LIST
111968: LIST
111969: PUSH
111970: LD_INT 59
111972: PUSH
111973: EMPTY
111974: LIST
111975: PUSH
111976: EMPTY
111977: LIST
111978: LIST
111979: LIST
111980: LIST
111981: PUSH
111982: EMPTY
111983: LIST
111984: LIST
111985: LIST
111986: PUSH
111987: LD_INT 91
111989: PUSH
111990: LD_EXP 154
111994: PUSH
111995: LD_INT 9
111997: PUSH
111998: EMPTY
111999: LIST
112000: LIST
112001: LIST
112002: PUSH
112003: EMPTY
112004: LIST
112005: LIST
112006: LIST
112007: PPUSH
112008: CALL_OW 69
112012: PUSH
112013: FOR_IN
112014: IFFALSE 112064
// if GetDistUnits ( i , NearestUnitToUnit ( hovercrafts , i ) ) <= 15 then
112016: LD_VAR 0 1
112020: PPUSH
112021: LD_VAR 0 3
112025: PPUSH
112026: LD_VAR 0 1
112030: PPUSH
112031: CALL_OW 74
112035: PPUSH
112036: CALL_OW 296
112040: PUSH
112041: LD_INT 15
112043: LESSEQUAL
112044: IFFALSE 112062
// enemiesinrange = enemiesinrange ^ i ;
112046: LD_ADDR_VAR 0 4
112050: PUSH
112051: LD_VAR 0 4
112055: PUSH
112056: LD_VAR 0 1
112060: ADD
112061: ST_TO_ADDR
112062: GO 112013
112064: POP
112065: POP
// end ; if enemiesinrange > 0 then
112066: LD_VAR 0 4
112070: PUSH
112071: LD_INT 0
112073: GREATER
112074: IFFALSE 113061
// begin soldiers = unitfilter ( enemiesinrange , [ [ f_side , 2 ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_mortar ] , [ f_class , class_desert_warior ] ] ] ) ;
112076: LD_ADDR_VAR 0 10
112080: PUSH
112081: LD_VAR 0 4
112085: PPUSH
112086: LD_INT 22
112088: PUSH
112089: LD_INT 2
112091: PUSH
112092: EMPTY
112093: LIST
112094: LIST
112095: PUSH
112096: LD_INT 2
112098: PUSH
112099: LD_INT 25
112101: PUSH
112102: LD_INT 1
112104: PUSH
112105: EMPTY
112106: LIST
112107: LIST
112108: PUSH
112109: LD_INT 25
112111: PUSH
112112: LD_INT 8
112114: PUSH
112115: EMPTY
112116: LIST
112117: LIST
112118: PUSH
112119: LD_INT 25
112121: PUSH
112122: LD_INT 11
112124: PUSH
112125: EMPTY
112126: LIST
112127: LIST
112128: PUSH
112129: EMPTY
112130: LIST
112131: LIST
112132: LIST
112133: LIST
112134: PUSH
112135: EMPTY
112136: LIST
112137: LIST
112138: PPUSH
112139: CALL_OW 72
112143: ST_TO_ADDR
// scientists = unitfilter ( enemiesinrange , [ [ f_side , 2 ] , [ f_class , class_scientistic ] ] ) ;
112144: LD_ADDR_VAR 0 12
112148: PUSH
112149: LD_VAR 0 4
112153: PPUSH
112154: LD_INT 22
112156: PUSH
112157: LD_INT 2
112159: PUSH
112160: EMPTY
112161: LIST
112162: LIST
112163: PUSH
112164: LD_INT 25
112166: PUSH
112167: LD_INT 4
112169: PUSH
112170: EMPTY
112171: LIST
112172: LIST
112173: PUSH
112174: EMPTY
112175: LIST
112176: LIST
112177: PPUSH
112178: CALL_OW 72
112182: ST_TO_ADDR
// civilians = unitfilter ( enemiesinrange , [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) diff soldiers ^ scientists ;
112183: LD_ADDR_VAR 0 11
112187: PUSH
112188: LD_VAR 0 4
112192: PPUSH
112193: LD_INT 22
112195: PUSH
112196: LD_INT 2
112198: PUSH
112199: EMPTY
112200: LIST
112201: LIST
112202: PUSH
112203: LD_INT 21
112205: PUSH
112206: LD_INT 1
112208: PUSH
112209: EMPTY
112210: LIST
112211: LIST
112212: PUSH
112213: EMPTY
112214: LIST
112215: LIST
112216: PPUSH
112217: CALL_OW 72
112221: PUSH
112222: LD_VAR 0 10
112226: PUSH
112227: LD_VAR 0 12
112231: ADD
112232: DIFF
112233: ST_TO_ADDR
// controls = unitfilter ( enemiesinrange , [ [ f_side , 2 ] , [ f_weapon , ar_control_tower ] ] ) ;
112234: LD_ADDR_VAR 0 13
112238: PUSH
112239: LD_VAR 0 4
112243: PPUSH
112244: LD_INT 22
112246: PUSH
112247: LD_INT 2
112249: PUSH
112250: EMPTY
112251: LIST
112252: LIST
112253: PUSH
112254: LD_INT 34
112256: PUSH
112257: LD_INT 31
112259: PUSH
112260: EMPTY
112261: LIST
112262: LIST
112263: PUSH
112264: EMPTY
112265: LIST
112266: LIST
112267: PPUSH
112268: CALL_OW 72
112272: ST_TO_ADDR
// vehicles = unitfilter ( enemiesinrange , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) diff controls ;
112273: LD_ADDR_VAR 0 14
112277: PUSH
112278: LD_VAR 0 4
112282: PPUSH
112283: LD_INT 22
112285: PUSH
112286: LD_INT 2
112288: PUSH
112289: EMPTY
112290: LIST
112291: LIST
112292: PUSH
112293: LD_INT 21
112295: PUSH
112296: LD_INT 2
112298: PUSH
112299: EMPTY
112300: LIST
112301: LIST
112302: PUSH
112303: EMPTY
112304: LIST
112305: LIST
112306: PPUSH
112307: CALL_OW 72
112311: PUSH
112312: LD_VAR 0 13
112316: DIFF
112317: ST_TO_ADDR
// machineguns = unitfilter ( hovercrafts , [ f_weapon , ar_double_machine_gun ] ) ;
112318: LD_ADDR_VAR 0 15
112322: PUSH
112323: LD_VAR 0 3
112327: PPUSH
112328: LD_INT 34
112330: PUSH
112331: LD_INT 24
112333: PUSH
112334: EMPTY
112335: LIST
112336: LIST
112337: PPUSH
112338: CALL_OW 72
112342: ST_TO_ADDR
// lightguns = unitfilter ( hovercrafts , [ f_weapon , ar_light_gun ] ) ;
112343: LD_ADDR_VAR 0 16
112347: PUSH
112348: LD_VAR 0 3
112352: PPUSH
112353: LD_INT 34
112355: PUSH
112356: LD_INT 23
112358: PUSH
112359: EMPTY
112360: LIST
112361: LIST
112362: PPUSH
112363: CALL_OW 72
112367: ST_TO_ADDR
// selfdestruct = [ 0 , 0 , 1 ] [ difficulty ] ;
112368: LD_ADDR_VAR 0 8
112372: PUSH
112373: LD_INT 0
112375: PUSH
112376: LD_INT 0
112378: PUSH
112379: LD_INT 1
112381: PUSH
112382: EMPTY
112383: LIST
112384: LIST
112385: LIST
112386: PUSH
112387: LD_OWVAR 67
112391: ARRAY
112392: ST_TO_ADDR
// if machineguns > 0 then
112393: LD_VAR 0 15
112397: PUSH
112398: LD_INT 0
112400: GREATER
112401: IFFALSE 112726
// begin priority = [ scientists , soldiers , civilians , controls , vehicles ] ;
112403: LD_ADDR_VAR 0 7
112407: PUSH
112408: LD_VAR 0 12
112412: PUSH
112413: LD_VAR 0 10
112417: PUSH
112418: LD_VAR 0 11
112422: PUSH
112423: LD_VAR 0 13
112427: PUSH
112428: LD_VAR 0 14
112432: PUSH
112433: EMPTY
112434: LIST
112435: LIST
112436: LIST
112437: LIST
112438: LIST
112439: ST_TO_ADDR
// for i in priority do
112440: LD_ADDR_VAR 0 1
112444: PUSH
112445: LD_VAR 0 7
112449: PUSH
112450: FOR_IN
112451: IFFALSE 112606
// if i > 0 then
112453: LD_VAR 0 1
112457: PUSH
112458: LD_INT 0
112460: GREATER
112461: IFFALSE 112604
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
112463: LD_ADDR_VAR 0 5
112467: PUSH
112468: LD_VAR 0 1
112472: PPUSH
112473: LD_INT 3
112475: PUSH
112476: LD_INT 24
112478: PUSH
112479: LD_INT 700
112481: PUSH
112482: EMPTY
112483: LIST
112484: LIST
112485: PUSH
112486: EMPTY
112487: LIST
112488: LIST
112489: PPUSH
112490: CALL_OW 72
112494: ST_TO_ADDR
// if temp > 0 then
112495: LD_VAR 0 5
112499: PUSH
112500: LD_INT 0
112502: GREATER
112503: IFFALSE 112588
// begin temp_list = [ ] ;
112505: LD_ADDR_VAR 0 6
112509: PUSH
112510: EMPTY
112511: ST_TO_ADDR
// for j in temp do
112512: LD_ADDR_VAR 0 2
112516: PUSH
112517: LD_VAR 0 5
112521: PUSH
112522: FOR_IN
112523: IFFALSE 112548
// temp_list = temp_list ^ GetLives ( j ) ;
112525: LD_ADDR_VAR 0 6
112529: PUSH
112530: LD_VAR 0 6
112534: PUSH
112535: LD_VAR 0 2
112539: PPUSH
112540: CALL_OW 256
112544: ADD
112545: ST_TO_ADDR
112546: GO 112522
112548: POP
112549: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
112550: LD_ADDR_VAR 0 5
112554: PUSH
112555: LD_VAR 0 5
112559: PPUSH
112560: LD_VAR 0 6
112564: PPUSH
112565: CALL_OW 78
112569: ST_TO_ADDR
// target = temp [ 1 ] ;
112570: LD_ADDR_VAR 0 9
112574: PUSH
112575: LD_VAR 0 5
112579: PUSH
112580: LD_INT 1
112582: ARRAY
112583: ST_TO_ADDR
// break ;
112584: GO 112606
// end else
112586: GO 112604
// begin target = i [ 1 ] ;
112588: LD_ADDR_VAR 0 9
112592: PUSH
112593: LD_VAR 0 1
112597: PUSH
112598: LD_INT 1
112600: ARRAY
112601: ST_TO_ADDR
// break ;
112602: GO 112606
// end ; end ;
112604: GO 112450
112606: POP
112607: POP
// if not selfdestruct then
112608: LD_VAR 0 8
112612: NOT
112613: IFFALSE 112631
// ComAttackUnit ( machineguns , target ) else
112615: LD_VAR 0 15
112619: PPUSH
112620: LD_VAR 0 9
112624: PPUSH
112625: CALL_OW 115
112629: GO 112726
// for i in machineguns do
112631: LD_ADDR_VAR 0 1
112635: PUSH
112636: LD_VAR 0 15
112640: PUSH
112641: FOR_IN
112642: IFFALSE 112724
// if GetDistUnits ( i , target ) > 3 then
112644: LD_VAR 0 1
112648: PPUSH
112649: LD_VAR 0 9
112653: PPUSH
112654: CALL_OW 296
112658: PUSH
112659: LD_INT 3
112661: GREATER
112662: IFFALSE 112680
// ComMoveUnit ( i , target ) else
112664: LD_VAR 0 1
112668: PPUSH
112669: LD_VAR 0 9
112673: PPUSH
112674: CALL_OW 112
112678: GO 112722
// SetTaskList ( i , [ [ K , 0 , 0 , 0 , 0 , 0 , 0 ] ] ) ;
112680: LD_VAR 0 1
112684: PPUSH
112685: LD_STRING K
112687: PUSH
112688: LD_INT 0
112690: PUSH
112691: LD_INT 0
112693: PUSH
112694: LD_INT 0
112696: PUSH
112697: LD_INT 0
112699: PUSH
112700: LD_INT 0
112702: PUSH
112703: LD_INT 0
112705: PUSH
112706: EMPTY
112707: LIST
112708: LIST
112709: LIST
112710: LIST
112711: LIST
112712: LIST
112713: LIST
112714: PUSH
112715: EMPTY
112716: LIST
112717: PPUSH
112718: CALL_OW 446
112722: GO 112641
112724: POP
112725: POP
// end ; if lightguns > 0 then
112726: LD_VAR 0 16
112730: PUSH
112731: LD_INT 0
112733: GREATER
112734: IFFALSE 113059
// begin priority = [ controls , vehicles , scientists , soldiers , civilians ] ;
112736: LD_ADDR_VAR 0 7
112740: PUSH
112741: LD_VAR 0 13
112745: PUSH
112746: LD_VAR 0 14
112750: PUSH
112751: LD_VAR 0 12
112755: PUSH
112756: LD_VAR 0 10
112760: PUSH
112761: LD_VAR 0 11
112765: PUSH
112766: EMPTY
112767: LIST
112768: LIST
112769: LIST
112770: LIST
112771: LIST
112772: ST_TO_ADDR
// for i in priority do
112773: LD_ADDR_VAR 0 1
112777: PUSH
112778: LD_VAR 0 7
112782: PUSH
112783: FOR_IN
112784: IFFALSE 112939
// if i > 0 then
112786: LD_VAR 0 1
112790: PUSH
112791: LD_INT 0
112793: GREATER
112794: IFFALSE 112937
// begin temp = unitfilter ( i , [ f_not , [ f_lives , 700 ] ] ) ;
112796: LD_ADDR_VAR 0 5
112800: PUSH
112801: LD_VAR 0 1
112805: PPUSH
112806: LD_INT 3
112808: PUSH
112809: LD_INT 24
112811: PUSH
112812: LD_INT 700
112814: PUSH
112815: EMPTY
112816: LIST
112817: LIST
112818: PUSH
112819: EMPTY
112820: LIST
112821: LIST
112822: PPUSH
112823: CALL_OW 72
112827: ST_TO_ADDR
// if temp > 0 then
112828: LD_VAR 0 5
112832: PUSH
112833: LD_INT 0
112835: GREATER
112836: IFFALSE 112921
// begin temp_list = [ ] ;
112838: LD_ADDR_VAR 0 6
112842: PUSH
112843: EMPTY
112844: ST_TO_ADDR
// for j in temp do
112845: LD_ADDR_VAR 0 2
112849: PUSH
112850: LD_VAR 0 5
112854: PUSH
112855: FOR_IN
112856: IFFALSE 112881
// temp_list = temp_list ^ GetLives ( j ) ;
112858: LD_ADDR_VAR 0 6
112862: PUSH
112863: LD_VAR 0 6
112867: PUSH
112868: LD_VAR 0 2
112872: PPUSH
112873: CALL_OW 256
112877: ADD
112878: ST_TO_ADDR
112879: GO 112855
112881: POP
112882: POP
// temp = WorstFromListByList ( temp , temp_list ) ;
112883: LD_ADDR_VAR 0 5
112887: PUSH
112888: LD_VAR 0 5
112892: PPUSH
112893: LD_VAR 0 6
112897: PPUSH
112898: CALL_OW 78
112902: ST_TO_ADDR
// target = temp [ 1 ] ;
112903: LD_ADDR_VAR 0 9
112907: PUSH
112908: LD_VAR 0 5
112912: PUSH
112913: LD_INT 1
112915: ARRAY
112916: ST_TO_ADDR
// break ;
112917: GO 112939
// end else
112919: GO 112937
// begin target = i [ 1 ] ;
112921: LD_ADDR_VAR 0 9
112925: PUSH
112926: LD_VAR 0 1
112930: PUSH
112931: LD_INT 1
112933: ARRAY
112934: ST_TO_ADDR
// break ;
112935: GO 112939
// end ; end ;
112937: GO 112783
112939: POP
112940: POP
// if not selfdestruct then
112941: LD_VAR 0 8
112945: NOT
112946: IFFALSE 112964
// ComAttackUnit ( lightguns , target ) else
112948: LD_VAR 0 16
112952: PPUSH
112953: LD_VAR 0 9
112957: PPUSH
112958: CALL_OW 115
112962: GO 113059
// for i in lightguns do
112964: LD_ADDR_VAR 0 1
112968: PUSH
112969: LD_VAR 0 16
112973: PUSH
112974: FOR_IN
112975: IFFALSE 113057
// if GetDistUnits ( i , target ) > 3 then
112977: LD_VAR 0 1
112981: PPUSH
112982: LD_VAR 0 9
112986: PPUSH
112987: CALL_OW 296
112991: PUSH
112992: LD_INT 3
112994: GREATER
112995: IFFALSE 113013
// ComMoveUnit ( i , target ) else
112997: LD_VAR 0 1
113001: PPUSH
113002: LD_VAR 0 9
113006: PPUSH
113007: CALL_OW 112
113011: GO 113055
// SetTaskList ( i , [ [ K , 0 , 0 , 0 , 0 , 0 , 0 ] ] ) ;
113013: LD_VAR 0 1
113017: PPUSH
113018: LD_STRING K
113020: PUSH
113021: LD_INT 0
113023: PUSH
113024: LD_INT 0
113026: PUSH
113027: LD_INT 0
113029: PUSH
113030: LD_INT 0
113032: PUSH
113033: LD_INT 0
113035: PUSH
113036: LD_INT 0
113038: PUSH
113039: EMPTY
113040: LIST
113041: LIST
113042: LIST
113043: LIST
113044: LIST
113045: LIST
113046: LIST
113047: PUSH
113048: EMPTY
113049: LIST
113050: PPUSH
113051: CALL_OW 446
113055: GO 112974
113057: POP
113058: POP
// end ; end else
113059: GO 113261
// begin if UnitFilter ( hovercrafts , [ f_not , [ f_distxy , ai_hovercrafts_path [ ai_hovercrafts_hexcount ] [ 1 ] , ai_hovercrafts_path [ ai_hovercrafts_hexcount ] [ 2 ] , 15 ] ] ) = 0 or ai_hovercrafts_hexcount = ai_hovercrafts_path then
113061: LD_VAR 0 3
113065: PPUSH
113066: LD_INT 3
113068: PUSH
113069: LD_INT 92
113071: PUSH
113072: LD_EXP 151
113076: PUSH
113077: LD_EXP 152
113081: ARRAY
113082: PUSH
113083: LD_INT 1
113085: ARRAY
113086: PUSH
113087: LD_EXP 151
113091: PUSH
113092: LD_EXP 152
113096: ARRAY
113097: PUSH
113098: LD_INT 2
113100: ARRAY
113101: PUSH
113102: LD_INT 15
113104: PUSH
113105: EMPTY
113106: LIST
113107: LIST
113108: LIST
113109: LIST
113110: PUSH
113111: EMPTY
113112: LIST
113113: LIST
113114: PPUSH
113115: CALL_OW 72
113119: PUSH
113120: LD_INT 0
113122: EQUAL
113123: PUSH
113124: LD_EXP 152
113128: PUSH
113129: LD_EXP 151
113133: EQUAL
113134: OR
113135: IFFALSE 113222
// begin if ai_hovercrafts_target = 0 then
113137: LD_EXP 154
113141: PUSH
113142: LD_INT 0
113144: EQUAL
113145: IFFALSE 113157
// ai_hovercrafts_out = 0 else
113147: LD_ADDR_EXP 153
113151: PUSH
113152: LD_INT 0
113154: ST_TO_ADDR
113155: GO 113220
// if ai_hovercrafts_hexcount < ai_hovercrafts_path then
113157: LD_EXP 152
113161: PUSH
113162: LD_EXP 151
113166: LESS
113167: IFFALSE 113185
// ai_hovercrafts_hexcount = ai_hovercrafts_hexcount + 1 else
113169: LD_ADDR_EXP 152
113173: PUSH
113174: LD_EXP 152
113178: PUSH
113179: LD_INT 1
113181: PLUS
113182: ST_TO_ADDR
113183: GO 113220
// if IsDead ( ai_hovercrafts_target ) then
113185: LD_EXP 154
113189: PPUSH
113190: CALL_OW 301
113194: IFFALSE 113206
// ai_hovercrafts_out = 0 else
113196: LD_ADDR_EXP 153
113200: PUSH
113201: LD_INT 0
113203: ST_TO_ADDR
113204: GO 113220
// ComMoveUnit ( hovercrafts , ai_hovercrafts_target ) ;
113206: LD_VAR 0 3
113210: PPUSH
113211: LD_EXP 154
113215: PPUSH
113216: CALL_OW 112
// end else
113220: GO 113261
// commovexy ( hovercrafts , ai_hovercrafts_path [ ai_hovercrafts_hexcount ] [ 1 ] , ai_hovercrafts_path [ ai_hovercrafts_hexcount ] [ 2 ] ) ;
113222: LD_VAR 0 3
113226: PPUSH
113227: LD_EXP 151
113231: PUSH
113232: LD_EXP 152
113236: ARRAY
113237: PUSH
113238: LD_INT 1
113240: ARRAY
113241: PPUSH
113242: LD_EXP 151
113246: PUSH
113247: LD_EXP 152
113251: ARRAY
113252: PUSH
113253: LD_INT 2
113255: ARRAY
113256: PPUSH
113257: CALL_OW 111
// end ; enable ;
113261: ENABLE
// end ;
113262: PPOPN 17
113264: END
// function HovercraftDetection ( num ) ; var i , j , count , temp , areas , area , un ; begin
113265: LD_INT 0
113267: PPUSH
113268: PPUSH
113269: PPUSH
113270: PPUSH
113271: PPUSH
113272: PPUSH
113273: PPUSH
113274: PPUSH
// if num = 1 then
113275: LD_VAR 0 1
113279: PUSH
113280: LD_INT 1
113282: EQUAL
113283: IFFALSE 113318
// areas = [ hv_area1 , hv_area2 , hv_area3 , hv_area4 , hv_area5 , hv_area6 ] else
113285: LD_ADDR_VAR 0 7
113289: PUSH
113290: LD_INT 14
113292: PUSH
113293: LD_INT 15
113295: PUSH
113296: LD_INT 16
113298: PUSH
113299: LD_INT 17
113301: PUSH
113302: LD_INT 18
113304: PUSH
113305: LD_INT 19
113307: PUSH
113308: EMPTY
113309: LIST
113310: LIST
113311: LIST
113312: LIST
113313: LIST
113314: LIST
113315: ST_TO_ADDR
113316: GO 113341
// areas = [ hv_area2 , hv_area3 , hv_area4 , hv_area5 ] ;
113318: LD_ADDR_VAR 0 7
113322: PUSH
113323: LD_INT 15
113325: PUSH
113326: LD_INT 16
113328: PUSH
113329: LD_INT 17
113331: PUSH
113332: LD_INT 18
113334: PUSH
113335: EMPTY
113336: LIST
113337: LIST
113338: LIST
113339: LIST
113340: ST_TO_ADDR
// if not 1 in mb_bases then
113341: LD_INT 1
113343: PUSH
113344: LD_EXP 160
113348: IN
113349: NOT
113350: IFFALSE 113370
// areas = areas ^ base_legion_minor ^ mb_legion_perimeter ;
113352: LD_ADDR_VAR 0 7
113356: PUSH
113357: LD_VAR 0 7
113361: PUSH
113362: LD_INT 7
113364: ADD
113365: PUSH
113366: LD_INT 10
113368: ADD
113369: ST_TO_ADDR
// count = 0 ;
113370: LD_ADDR_VAR 0 5
113374: PUSH
113375: LD_INT 0
113377: ST_TO_ADDR
// area = areas [ 1 ] ;
113378: LD_ADDR_VAR 0 8
113382: PUSH
113383: LD_VAR 0 7
113387: PUSH
113388: LD_INT 1
113390: ARRAY
113391: ST_TO_ADDR
// un = 0 ;
113392: LD_ADDR_VAR 0 9
113396: PUSH
113397: LD_INT 0
113399: ST_TO_ADDR
// for i in areas do
113400: LD_ADDR_VAR 0 3
113404: PUSH
113405: LD_VAR 0 7
113409: PUSH
113410: FOR_IN
113411: IFFALSE 113645
// for j in FilterUnitsInArea ( i , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] ] ) do
113413: LD_ADDR_VAR 0 4
113417: PUSH
113418: LD_VAR 0 3
113422: PPUSH
113423: LD_INT 22
113425: PUSH
113426: LD_INT 2
113428: PUSH
113429: EMPTY
113430: LIST
113431: LIST
113432: PUSH
113433: LD_INT 2
113435: PUSH
113436: LD_INT 21
113438: PUSH
113439: LD_INT 1
113441: PUSH
113442: EMPTY
113443: LIST
113444: LIST
113445: PUSH
113446: LD_INT 1
113448: PUSH
113449: LD_INT 21
113451: PUSH
113452: LD_INT 2
113454: PUSH
113455: EMPTY
113456: LIST
113457: LIST
113458: PUSH
113459: LD_INT 33
113461: PUSH
113462: LD_INT 1
113464: PUSH
113465: EMPTY
113466: LIST
113467: LIST
113468: PUSH
113469: LD_INT 59
113471: PUSH
113472: EMPTY
113473: LIST
113474: PUSH
113475: EMPTY
113476: LIST
113477: LIST
113478: LIST
113479: LIST
113480: PUSH
113481: EMPTY
113482: LIST
113483: LIST
113484: LIST
113485: PUSH
113486: EMPTY
113487: LIST
113488: LIST
113489: PPUSH
113490: CALL_OW 70
113494: PUSH
113495: FOR_IN
113496: IFFALSE 113641
// begin temp = FilterUnitsInArea ( i , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_occupied ] ] ] , [ f_dist , j , 9 ] ] ) ;
113498: LD_ADDR_VAR 0 6
113502: PUSH
113503: LD_VAR 0 3
113507: PPUSH
113508: LD_INT 22
113510: PUSH
113511: LD_INT 2
113513: PUSH
113514: EMPTY
113515: LIST
113516: LIST
113517: PUSH
113518: LD_INT 2
113520: PUSH
113521: LD_INT 21
113523: PUSH
113524: LD_INT 1
113526: PUSH
113527: EMPTY
113528: LIST
113529: LIST
113530: PUSH
113531: LD_INT 1
113533: PUSH
113534: LD_INT 21
113536: PUSH
113537: LD_INT 2
113539: PUSH
113540: EMPTY
113541: LIST
113542: LIST
113543: PUSH
113544: LD_INT 33
113546: PUSH
113547: LD_INT 1
113549: PUSH
113550: EMPTY
113551: LIST
113552: LIST
113553: PUSH
113554: LD_INT 59
113556: PUSH
113557: EMPTY
113558: LIST
113559: PUSH
113560: EMPTY
113561: LIST
113562: LIST
113563: LIST
113564: LIST
113565: PUSH
113566: EMPTY
113567: LIST
113568: LIST
113569: LIST
113570: PUSH
113571: LD_INT 91
113573: PUSH
113574: LD_VAR 0 4
113578: PUSH
113579: LD_INT 9
113581: PUSH
113582: EMPTY
113583: LIST
113584: LIST
113585: LIST
113586: PUSH
113587: EMPTY
113588: LIST
113589: LIST
113590: LIST
113591: PPUSH
113592: CALL_OW 70
113596: ST_TO_ADDR
// if temp > count then
113597: LD_VAR 0 6
113601: PUSH
113602: LD_VAR 0 5
113606: GREATER
113607: IFFALSE 113639
// begin count = temp ;
113609: LD_ADDR_VAR 0 5
113613: PUSH
113614: LD_VAR 0 6
113618: ST_TO_ADDR
// area = i ;
113619: LD_ADDR_VAR 0 8
113623: PUSH
113624: LD_VAR 0 3
113628: ST_TO_ADDR
// un = j ;
113629: LD_ADDR_VAR 0 9
113633: PUSH
113634: LD_VAR 0 4
113638: ST_TO_ADDR
// end ; end ;
113639: GO 113495
113641: POP
113642: POP
113643: GO 113410
113645: POP
113646: POP
// if count > 0 then
113647: LD_VAR 0 5
113651: PUSH
113652: LD_INT 0
113654: GREATER
113655: IFFALSE 113678
// result = [ area , un ] else
113657: LD_ADDR_VAR 0 2
113661: PUSH
113662: LD_VAR 0 8
113666: PUSH
113667: LD_VAR 0 9
113671: PUSH
113672: EMPTY
113673: LIST
113674: LIST
113675: ST_TO_ADDR
113676: GO 113686
// result = 0 ;
113678: LD_ADDR_VAR 0 2
113682: PUSH
113683: LD_INT 0
113685: ST_TO_ADDR
// end ;
113686: LD_VAR 0 2
113690: RET
// every 0 0$1 trigger AllianceSpawned do var i , j , temp , areas_list , temp_list , temp_list2 ;
113691: LD_EXP 221
113695: IFFALSE 114675
113697: GO 113699
113699: DISABLE
113700: LD_INT 0
113702: PPUSH
113703: PPUSH
113704: PPUSH
113705: PPUSH
113706: PPUSH
113707: PPUSH
// begin for i in AllianceTeam do
113708: LD_ADDR_VAR 0 1
113712: PUSH
113713: LD_EXP 46
113717: PUSH
113718: FOR_IN
113719: IFFALSE 113784
// if GetLives ( i ) < 250 or ( GetControl ( i ) = control_manual and IsDrivenBy ( i ) = 0 ) then
113721: LD_VAR 0 1
113725: PPUSH
113726: CALL_OW 256
113730: PUSH
113731: LD_INT 250
113733: LESS
113734: PUSH
113735: LD_VAR 0 1
113739: PPUSH
113740: CALL_OW 263
113744: PUSH
113745: LD_INT 1
113747: EQUAL
113748: PUSH
113749: LD_VAR 0 1
113753: PPUSH
113754: CALL_OW 311
113758: PUSH
113759: LD_INT 0
113761: EQUAL
113762: AND
113763: OR
113764: IFFALSE 113782
// AllianceTeam = AllianceTeam diff i ;
113766: LD_ADDR_EXP 46
113770: PUSH
113771: LD_EXP 46
113775: PUSH
113776: LD_VAR 0 1
113780: DIFF
113781: ST_TO_ADDR
113782: GO 113718
113784: POP
113785: POP
// for i in FilterAllUnits ( [ f_side , 7 ] ) diff AllianceTeam do
113786: LD_ADDR_VAR 0 1
113790: PUSH
113791: LD_INT 22
113793: PUSH
113794: LD_INT 7
113796: PUSH
113797: EMPTY
113798: LIST
113799: LIST
113800: PPUSH
113801: CALL_OW 69
113805: PUSH
113806: LD_EXP 46
113810: DIFF
113811: PUSH
113812: FOR_IN
113813: IFFALSE 114070
// if GetClass ( i ) = class_mechanic then
113815: LD_VAR 0 1
113819: PPUSH
113820: CALL_OW 257
113824: PUSH
113825: LD_INT 3
113827: EQUAL
113828: IFFALSE 113996
// begin temp_list = FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_vehicle ] ] ) ;
113830: LD_ADDR_VAR 0 5
113834: PUSH
113835: LD_INT 22
113837: PUSH
113838: LD_INT 7
113840: PUSH
113841: EMPTY
113842: LIST
113843: LIST
113844: PUSH
113845: LD_INT 21
113847: PUSH
113848: LD_INT 2
113850: PUSH
113851: EMPTY
113852: LIST
113853: LIST
113854: PUSH
113855: EMPTY
113856: LIST
113857: LIST
113858: PPUSH
113859: CALL_OW 69
113863: ST_TO_ADDR
// temp_list2 = [ ] ;
113864: LD_ADDR_VAR 0 6
113868: PUSH
113869: EMPTY
113870: ST_TO_ADDR
// for j in temp_list do
113871: LD_ADDR_VAR 0 2
113875: PUSH
113876: LD_VAR 0 5
113880: PUSH
113881: FOR_IN
113882: IFFALSE 113912
// temp_list2 = temp_list2 ^ GetDistUnits ( i , j ) ;
113884: LD_ADDR_VAR 0 6
113888: PUSH
113889: LD_VAR 0 6
113893: PUSH
113894: LD_VAR 0 1
113898: PPUSH
113899: LD_VAR 0 2
113903: PPUSH
113904: CALL_OW 296
113908: ADD
113909: ST_TO_ADDR
113910: GO 113881
113912: POP
113913: POP
// temp = WorstFromListByList ( temp_list , temp_list2 ) ;
113914: LD_ADDR_VAR 0 3
113918: PUSH
113919: LD_VAR 0 5
113923: PPUSH
113924: LD_VAR 0 6
113928: PPUSH
113929: CALL_OW 78
113933: ST_TO_ADDR
// if GetLives ( temp ) < 600 then
113934: LD_VAR 0 3
113938: PPUSH
113939: CALL_OW 256
113943: PUSH
113944: LD_INT 600
113946: LESS
113947: IFFALSE 113965
// ComrepairVehicle ( i , temp ) else
113949: LD_VAR 0 1
113953: PPUSH
113954: LD_VAR 0 3
113958: PPUSH
113959: CALL_OW 129
113963: GO 113994
// if GetControl ( temp ) = control_manual then
113965: LD_VAR 0 3
113969: PPUSH
113970: CALL_OW 263
113974: PUSH
113975: LD_INT 1
113977: EQUAL
113978: IFFALSE 113994
// ComEnterUnit ( i , temp ) ;
113980: LD_VAR 0 1
113984: PPUSH
113985: LD_VAR 0 3
113989: PPUSH
113990: CALL_OW 120
// end else
113994: GO 114068
// if GetType ( i ) = unit_vehicle and GetLives ( i ) >= 600 and ( IsDrivenBy ( i ) or GetControl ( i ) = control_computer ) then
113996: LD_VAR 0 1
114000: PPUSH
114001: CALL_OW 247
114005: PUSH
114006: LD_INT 2
114008: EQUAL
114009: PUSH
114010: LD_VAR 0 1
114014: PPUSH
114015: CALL_OW 256
114019: PUSH
114020: LD_INT 600
114022: GREATEREQUAL
114023: AND
114024: PUSH
114025: LD_VAR 0 1
114029: PPUSH
114030: CALL_OW 311
114034: PUSH
114035: LD_VAR 0 1
114039: PPUSH
114040: CALL_OW 263
114044: PUSH
114045: LD_INT 3
114047: EQUAL
114048: OR
114049: AND
114050: IFFALSE 114068
// AllianceTeam = AllianceTeam ^ i ;
114052: LD_ADDR_EXP 46
114056: PUSH
114057: LD_EXP 46
114061: PUSH
114062: LD_VAR 0 1
114066: ADD
114067: ST_TO_ADDR
114068: GO 113812
114070: POP
114071: POP
// if ( AllianceTeam diff FilterAllUnits ( [ [ f_side , 7 ] , [ f_ok ] , [ f_or , [ f_weapon , us_radar ] , [ f_weapon , ru_cargo_bay ] , [ f_weapon , ru_time_lapser ] ] ] ) ) = 0 then
114072: LD_EXP 46
114076: PUSH
114077: LD_INT 22
114079: PUSH
114080: LD_INT 7
114082: PUSH
114083: EMPTY
114084: LIST
114085: LIST
114086: PUSH
114087: LD_INT 50
114089: PUSH
114090: EMPTY
114091: LIST
114092: PUSH
114093: LD_INT 2
114095: PUSH
114096: LD_INT 34
114098: PUSH
114099: LD_INT 11
114101: PUSH
114102: EMPTY
114103: LIST
114104: LIST
114105: PUSH
114106: LD_INT 34
114108: PUSH
114109: LD_INT 51
114111: PUSH
114112: EMPTY
114113: LIST
114114: LIST
114115: PUSH
114116: LD_INT 34
114118: PUSH
114119: LD_INT 49
114121: PUSH
114122: EMPTY
114123: LIST
114124: LIST
114125: PUSH
114126: EMPTY
114127: LIST
114128: LIST
114129: LIST
114130: LIST
114131: PUSH
114132: EMPTY
114133: LIST
114134: LIST
114135: LIST
114136: PPUSH
114137: CALL_OW 69
114141: DIFF
114142: PUSH
114143: LD_INT 0
114145: EQUAL
114146: IFFALSE 114212
// if FilterAllUnits ( [ [ f_side , 7 ] , [ f_class , class_mechanic ] , [ f_ok ] , [ f_placed ] ] ) = 0 then
114148: LD_INT 22
114150: PUSH
114151: LD_INT 7
114153: PUSH
114154: EMPTY
114155: LIST
114156: LIST
114157: PUSH
114158: LD_INT 25
114160: PUSH
114161: LD_INT 3
114163: PUSH
114164: EMPTY
114165: LIST
114166: LIST
114167: PUSH
114168: LD_INT 50
114170: PUSH
114171: EMPTY
114172: LIST
114173: PUSH
114174: LD_INT 52
114176: PUSH
114177: EMPTY
114178: LIST
114179: PUSH
114180: EMPTY
114181: LIST
114182: LIST
114183: LIST
114184: LIST
114185: PPUSH
114186: CALL_OW 69
114190: PUSH
114191: LD_INT 0
114193: EQUAL
114194: IFFALSE 114212
// begin AllianceSpawned = 0 ;
114196: LD_ADDR_EXP 221
114200: PUSH
114201: LD_INT 0
114203: ST_TO_ADDR
// AllianceDestroyed = 1 ;
114204: LD_ADDR_EXP 220
114208: PUSH
114209: LD_INT 1
114211: ST_TO_ADDR
// end ; if not 3 in ai_patrol_out then
114212: LD_INT 3
114214: PUSH
114215: LD_EXP 187
114219: IN
114220: NOT
114221: IFFALSE 114674
// begin case AllTarget [ 1 ] of 1 :
114223: LD_EXP 222
114227: PUSH
114228: LD_INT 1
114230: ARRAY
114231: PUSH
114232: LD_INT 1
114234: DOUBLE
114235: EQUAL
114236: IFTRUE 114240
114238: GO 114266
114240: POP
// areas_list = [ AllSeekLeftCentre , base_legion , AllSeekLeftFront , AllSeekLeftBack ] ; 2 :
114241: LD_ADDR_VAR 0 4
114245: PUSH
114246: LD_INT 31
114248: PUSH
114249: LD_INT 1
114251: PUSH
114252: LD_INT 32
114254: PUSH
114255: LD_INT 33
114257: PUSH
114258: EMPTY
114259: LIST
114260: LIST
114261: LIST
114262: LIST
114263: ST_TO_ADDR
114264: GO 114323
114266: LD_INT 2
114268: DOUBLE
114269: EQUAL
114270: IFTRUE 114274
114272: GO 114288
114274: POP
// areas_list = [ AllSeekCentre ] ; 3 :
114275: LD_ADDR_VAR 0 4
114279: PUSH
114280: LD_INT 30
114282: PUSH
114283: EMPTY
114284: LIST
114285: ST_TO_ADDR
114286: GO 114323
114288: LD_INT 3
114290: DOUBLE
114291: EQUAL
114292: IFTRUE 114296
114294: GO 114322
114296: POP
// areas_list = [ AllSeekRightCentre , base_us , AllSeekRightFront , AllSeekRightBack ] ; end ;
114297: LD_ADDR_VAR 0 4
114301: PUSH
114302: LD_INT 34
114304: PUSH
114305: LD_INT 3
114307: PUSH
114308: LD_INT 35
114310: PUSH
114311: LD_INT 36
114313: PUSH
114314: EMPTY
114315: LIST
114316: LIST
114317: LIST
114318: LIST
114319: ST_TO_ADDR
114320: GO 114323
114322: POP
// for i in areas_list do
114323: LD_ADDR_VAR 0 1
114327: PUSH
114328: LD_VAR 0 4
114332: PUSH
114333: FOR_IN
114334: IFFALSE 114410
// begin temp = FilterUnitsInArea ( i , [ f_side , 2 ] ) ;
114336: LD_ADDR_VAR 0 3
114340: PUSH
114341: LD_VAR 0 1
114345: PPUSH
114346: LD_INT 22
114348: PUSH
114349: LD_INT 2
114351: PUSH
114352: EMPTY
114353: LIST
114354: LIST
114355: PPUSH
114356: CALL_OW 70
114360: ST_TO_ADDR
// if temp > 0 then
114361: LD_VAR 0 3
114365: PUSH
114366: LD_INT 0
114368: GREATER
114369: IFFALSE 114408
// begin ai_patrol_out = ai_patrol_out ^ 3 ;
114371: LD_ADDR_EXP 187
114375: PUSH
114376: LD_EXP 187
114380: PUSH
114381: LD_INT 3
114383: ADD
114384: ST_TO_ADDR
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , 3 , 1 ) ;
114385: LD_ADDR_EXP 189
114389: PUSH
114390: LD_EXP 189
114394: PPUSH
114395: LD_INT 3
114397: PPUSH
114398: LD_INT 1
114400: PPUSH
114401: CALL_OW 1
114405: ST_TO_ADDR
// break ;
114406: GO 114410
// end ; end ;
114408: GO 114333
114410: POP
114411: POP
// if temp = 0 then
114412: LD_VAR 0 3
114416: PUSH
114417: LD_INT 0
114419: EQUAL
114420: IFFALSE 114674
// begin if IsInarea ( AllianceTeam [ 1 ] , AllSeekLeftBack ) or IsInarea ( AllianceTeam [ 1 ] , AllSeekRightBack ) then
114422: LD_EXP 46
114426: PUSH
114427: LD_INT 1
114429: ARRAY
114430: PPUSH
114431: LD_INT 33
114433: PPUSH
114434: CALL_OW 308
114438: PUSH
114439: LD_EXP 46
114443: PUSH
114444: LD_INT 1
114446: ARRAY
114447: PPUSH
114448: LD_INT 36
114450: PPUSH
114451: CALL_OW 308
114455: OR
114456: IFFALSE 114526
// begin ai_patrol_out = ai_patrol_out ^ 3 ;
114458: LD_ADDR_EXP 187
114462: PUSH
114463: LD_EXP 187
114467: PUSH
114468: LD_INT 3
114470: ADD
114471: ST_TO_ADDR
// ai_patrol_path = Replace ( ai_patrol_out , 3 , [ [ 114 , 34 ] ] ) ;
114472: LD_ADDR_EXP 188
114476: PUSH
114477: LD_EXP 187
114481: PPUSH
114482: LD_INT 3
114484: PPUSH
114485: LD_INT 114
114487: PUSH
114488: LD_INT 34
114490: PUSH
114491: EMPTY
114492: LIST
114493: LIST
114494: PUSH
114495: EMPTY
114496: LIST
114497: PPUSH
114498: CALL_OW 1
114502: ST_TO_ADDR
// ai_patrol_hexcount = Replace ( ai_patrol_hexcount , 3 , 1 ) ;
114503: LD_ADDR_EXP 189
114507: PUSH
114508: LD_EXP 189
114512: PPUSH
114513: LD_INT 3
114515: PPUSH
114516: LD_INT 1
114518: PPUSH
114519: CALL_OW 1
114523: ST_TO_ADDR
// end else
114524: GO 114636
// begin temp_list = [ [ 52 , 75 ] , [ 114 , 34 ] , [ 193 , 73 ] ] ;
114526: LD_ADDR_VAR 0 5
114530: PUSH
114531: LD_INT 52
114533: PUSH
114534: LD_INT 75
114536: PUSH
114537: EMPTY
114538: LIST
114539: LIST
114540: PUSH
114541: LD_INT 114
114543: PUSH
114544: LD_INT 34
114546: PUSH
114547: EMPTY
114548: LIST
114549: LIST
114550: PUSH
114551: LD_INT 193
114553: PUSH
114554: LD_INT 73
114556: PUSH
114557: EMPTY
114558: LIST
114559: LIST
114560: PUSH
114561: EMPTY
114562: LIST
114563: LIST
114564: LIST
114565: ST_TO_ADDR
// for i in AllianceTeam do
114566: LD_ADDR_VAR 0 1
114570: PUSH
114571: LD_EXP 46
114575: PUSH
114576: FOR_IN
114577: IFFALSE 114634
// TeleportUnit ( i , temp_list [ AllTarget [ 2 ] ] [ 1 ] , temp_list [ AllTarget [ 2 ] ] [ 2 ] , 10 , true ) ;
114579: LD_VAR 0 1
114583: PPUSH
114584: LD_VAR 0 5
114588: PUSH
114589: LD_EXP 222
114593: PUSH
114594: LD_INT 2
114596: ARRAY
114597: ARRAY
114598: PUSH
114599: LD_INT 1
114601: ARRAY
114602: PPUSH
114603: LD_VAR 0 5
114607: PUSH
114608: LD_EXP 222
114612: PUSH
114613: LD_INT 2
114615: ARRAY
114616: ARRAY
114617: PUSH
114618: LD_INT 2
114620: ARRAY
114621: PPUSH
114622: LD_INT 10
114624: PPUSH
114625: LD_INT 1
114627: PPUSH
114628: CALL_OW 483
114632: GO 114576
114634: POP
114635: POP
// end ; AllTarget = AllTarget ^ AllTarget [ 1 ] ;
114636: LD_ADDR_EXP 222
114640: PUSH
114641: LD_EXP 222
114645: PUSH
114646: LD_EXP 222
114650: PUSH
114651: LD_INT 1
114653: ARRAY
114654: ADD
114655: ST_TO_ADDR
// AllTarget = Delete ( AllTarget , 1 ) ;
114656: LD_ADDR_EXP 222
114660: PUSH
114661: LD_EXP 222
114665: PPUSH
114666: LD_INT 1
114668: PPUSH
114669: CALL_OW 3
114673: ST_TO_ADDR
// end ; end ; enable ;
114674: ENABLE
// end ; end_of_file
114675: PPOPN 6
114677: END
// export function ArtifactUse ( cargo ) ; var i , temp , temp_list , siblist ; begin
114678: LD_INT 0
114680: PPUSH
114681: PPUSH
114682: PPUSH
114683: PPUSH
114684: PPUSH
// temp_list = [ ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] ;
114685: LD_ADDR_VAR 0 5
114689: PUSH
114690: LD_EXP 198
114694: PUSH
114695: LD_EXP 199
114699: PUSH
114700: LD_EXP 200
114704: PUSH
114705: LD_EXP 201
114709: PUSH
114710: LD_EXP 202
114714: PUSH
114715: LD_EXP 203
114719: PUSH
114720: EMPTY
114721: LIST
114722: LIST
114723: LIST
114724: LIST
114725: LIST
114726: LIST
114727: ST_TO_ADDR
// if ArtUse_TimeLapse_time > 0 then
114728: LD_EXP 211
114732: PUSH
114733: LD_INT 0
114735: GREATER
114736: IFFALSE 114779
// temp_list = [ ATech_SibPlant , ATech_Beh , 0 , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] ;
114738: LD_ADDR_VAR 0 5
114742: PUSH
114743: LD_EXP 198
114747: PUSH
114748: LD_EXP 199
114752: PUSH
114753: LD_INT 0
114755: PUSH
114756: LD_EXP 201
114760: PUSH
114761: LD_EXP 202
114765: PUSH
114766: LD_EXP 203
114770: PUSH
114771: EMPTY
114772: LIST
114773: LIST
114774: LIST
114775: LIST
114776: LIST
114777: LIST
114778: ST_TO_ADDR
// temp = 7 ;
114779: LD_ADDR_VAR 0 4
114783: PUSH
114784: LD_INT 7
114786: ST_TO_ADDR
// for i = 1 to temp_list do
114787: LD_ADDR_VAR 0 3
114791: PUSH
114792: DOUBLE
114793: LD_INT 1
114795: DEC
114796: ST_TO_ADDR
114797: LD_VAR 0 5
114801: PUSH
114802: FOR_TO
114803: IFFALSE 114839
// if temp_list [ i ] > 0 then
114805: LD_VAR 0 5
114809: PUSH
114810: LD_VAR 0 3
114814: ARRAY
114815: PUSH
114816: LD_INT 0
114818: GREATER
114819: IFFALSE 114837
// temp = temp ^ i ;
114821: LD_ADDR_VAR 0 4
114825: PUSH
114826: LD_VAR 0 4
114830: PUSH
114831: LD_VAR 0 3
114835: ADD
114836: ST_TO_ADDR
114837: GO 114802
114839: POP
114840: POP
// if temp > 1 then
114841: LD_VAR 0 4
114845: PUSH
114846: LD_INT 1
114848: GREATER
114849: IFFALSE 115295
// case SelectiveQuery ( artifact_use , temp ) of 1 :
114851: LD_STRING artifact_use
114853: PPUSH
114854: LD_VAR 0 4
114858: PPUSH
114859: CALL_OW 98
114863: PUSH
114864: LD_INT 1
114866: DOUBLE
114867: EQUAL
114868: IFTRUE 114872
114870: GO 114932
114872: POP
// begin ArtUse_SibPlant = 1 ;
114873: LD_ADDR_EXP 205
114877: PUSH
114878: LD_INT 1
114880: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
114881: LD_VAR 0 1
114885: PPUSH
114886: EMPTY
114887: PPUSH
114888: CALL_OW 446
// DeselectUnits ( cargo ) ;
114892: LD_VAR 0 1
114896: PPUSH
114897: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
114901: LD_VAR 0 1
114905: PPUSH
114906: CALL_OW 311
114910: PUSH
114911: LD_INT 0
114913: GREATER
114914: IFFALSE 114930
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
114916: LD_VAR 0 1
114920: PPUSH
114921: CALL_OW 311
114925: PPUSH
114926: CALL_OW 491
// end ; 2 :
114930: GO 115295
114932: LD_INT 2
114934: DOUBLE
114935: EQUAL
114936: IFTRUE 114940
114938: GO 115000
114940: POP
// begin ArtUse_Beh = 1 ;
114941: LD_ADDR_EXP 207
114945: PUSH
114946: LD_INT 1
114948: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
114949: LD_VAR 0 1
114953: PPUSH
114954: EMPTY
114955: PPUSH
114956: CALL_OW 446
// DeselectUnits ( cargo ) ;
114960: LD_VAR 0 1
114964: PPUSH
114965: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
114969: LD_VAR 0 1
114973: PPUSH
114974: CALL_OW 311
114978: PUSH
114979: LD_INT 0
114981: GREATER
114982: IFFALSE 114998
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
114984: LD_VAR 0 1
114988: PPUSH
114989: CALL_OW 311
114993: PPUSH
114994: CALL_OW 491
// end ; 3 :
114998: GO 115295
115000: LD_INT 3
115002: DOUBLE
115003: EQUAL
115004: IFTRUE 115008
115006: GO 115068
115008: POP
// begin ArtUse_TimeLapse = 1 ;
115009: LD_ADDR_EXP 210
115013: PUSH
115014: LD_INT 1
115016: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
115017: LD_VAR 0 1
115021: PPUSH
115022: EMPTY
115023: PPUSH
115024: CALL_OW 446
// DeselectUnits ( cargo ) ;
115028: LD_VAR 0 1
115032: PPUSH
115033: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
115037: LD_VAR 0 1
115041: PPUSH
115042: CALL_OW 311
115046: PUSH
115047: LD_INT 0
115049: GREATER
115050: IFFALSE 115066
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
115052: LD_VAR 0 1
115056: PPUSH
115057: CALL_OW 311
115061: PPUSH
115062: CALL_OW 491
// end ; 4 :
115066: GO 115295
115068: LD_INT 4
115070: DOUBLE
115071: EQUAL
115072: IFTRUE 115076
115074: GO 115136
115076: POP
// begin ArtUse_Laser = 1 ;
115077: LD_ADDR_EXP 212
115081: PUSH
115082: LD_INT 1
115084: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
115085: LD_VAR 0 1
115089: PPUSH
115090: EMPTY
115091: PPUSH
115092: CALL_OW 446
// DeselectUnits ( cargo ) ;
115096: LD_VAR 0 1
115100: PPUSH
115101: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
115105: LD_VAR 0 1
115109: PPUSH
115110: CALL_OW 311
115114: PUSH
115115: LD_INT 0
115117: GREATER
115118: IFFALSE 115134
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
115120: LD_VAR 0 1
115124: PPUSH
115125: CALL_OW 311
115129: PPUSH
115130: CALL_OW 491
// end ; 5 :
115134: GO 115295
115136: LD_INT 5
115138: DOUBLE
115139: EQUAL
115140: IFTRUE 115144
115142: GO 115204
115144: POP
// begin ArtUse_SuperStim = 1 ;
115145: LD_ADDR_EXP 214
115149: PUSH
115150: LD_INT 1
115152: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
115153: LD_VAR 0 1
115157: PPUSH
115158: EMPTY
115159: PPUSH
115160: CALL_OW 446
// DeselectUnits ( cargo ) ;
115164: LD_VAR 0 1
115168: PPUSH
115169: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
115173: LD_VAR 0 1
115177: PPUSH
115178: CALL_OW 311
115182: PUSH
115183: LD_INT 0
115185: GREATER
115186: IFFALSE 115202
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
115188: LD_VAR 0 1
115192: PPUSH
115193: CALL_OW 311
115197: PPUSH
115198: CALL_OW 491
// end ; 6 :
115202: GO 115295
115204: LD_INT 6
115206: DOUBLE
115207: EQUAL
115208: IFTRUE 115212
115210: GO 115272
115212: POP
// begin ArtUse_SPBomb = 1 ;
115213: LD_ADDR_EXP 216
115217: PUSH
115218: LD_INT 1
115220: ST_TO_ADDR
// SetTaskList ( cargo , [ ] ) ;
115221: LD_VAR 0 1
115225: PPUSH
115226: EMPTY
115227: PPUSH
115228: CALL_OW 446
// DeselectUnits ( cargo ) ;
115232: LD_VAR 0 1
115236: PPUSH
115237: CALL_OW 491
// if IsDrivenBy ( cargo ) > 0 then
115241: LD_VAR 0 1
115245: PPUSH
115246: CALL_OW 311
115250: PUSH
115251: LD_INT 0
115253: GREATER
115254: IFFALSE 115270
// DeselectUnits ( IsDrivenBy ( cargo ) ) ;
115256: LD_VAR 0 1
115260: PPUSH
115261: CALL_OW 311
115265: PPUSH
115266: CALL_OW 491
// end ; 7 :
115270: GO 115295
115272: LD_INT 7
115274: DOUBLE
115275: EQUAL
115276: IFTRUE 115280
115278: GO 115294
115280: POP
// SetTaskList ( cargo , [ ] ) ; end ;
115281: LD_VAR 0 1
115285: PPUSH
115286: EMPTY
115287: PPUSH
115288: CALL_OW 446
115292: GO 115295
115294: POP
// SibList = GetCargo ( cargo , mat_siberit ) ;
115295: LD_ADDR_VAR 0 6
115299: PUSH
115300: LD_VAR 0 1
115304: PPUSH
115305: LD_INT 3
115307: PPUSH
115308: CALL_OW 289
115312: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ru_cargo_bay ] ] ] ) diff cargo do
115313: LD_ADDR_VAR 0 3
115317: PUSH
115318: LD_INT 22
115320: PUSH
115321: LD_INT 2
115323: PUSH
115324: EMPTY
115325: LIST
115326: LIST
115327: PUSH
115328: LD_INT 2
115330: PUSH
115331: LD_INT 34
115333: PUSH
115334: LD_INT 32
115336: PUSH
115337: EMPTY
115338: LIST
115339: LIST
115340: PUSH
115341: LD_INT 34
115343: PUSH
115344: LD_INT 12
115346: PUSH
115347: EMPTY
115348: LIST
115349: LIST
115350: PUSH
115351: LD_INT 34
115353: PUSH
115354: LD_INT 51
115356: PUSH
115357: EMPTY
115358: LIST
115359: LIST
115360: PUSH
115361: EMPTY
115362: LIST
115363: LIST
115364: LIST
115365: LIST
115366: PUSH
115367: EMPTY
115368: LIST
115369: LIST
115370: PPUSH
115371: CALL_OW 69
115375: PUSH
115376: LD_VAR 0 1
115380: DIFF
115381: PUSH
115382: FOR_IN
115383: IFFALSE 115431
// if GetDistUnits ( i , cargo ) < 13 then
115385: LD_VAR 0 3
115389: PPUSH
115390: LD_VAR 0 1
115394: PPUSH
115395: CALL_OW 296
115399: PUSH
115400: LD_INT 13
115402: LESS
115403: IFFALSE 115429
// SibList = SibList + GetCargo ( i , mat_siberit ) ;
115405: LD_ADDR_VAR 0 6
115409: PUSH
115410: LD_VAR 0 6
115414: PUSH
115415: LD_VAR 0 3
115419: PPUSH
115420: LD_INT 3
115422: PPUSH
115423: CALL_OW 289
115427: PLUS
115428: ST_TO_ADDR
115429: GO 115382
115431: POP
115432: POP
// temp_list = [ ArtUse_SibPlant , ArtUse_Beh , ArtUse_TimeLapse , ArtUse_Laser , ArtUse_SuperStim , ArtUse_SPBomb ] ;
115433: LD_ADDR_VAR 0 5
115437: PUSH
115438: LD_EXP 205
115442: PUSH
115443: LD_EXP 207
115447: PUSH
115448: LD_EXP 210
115452: PUSH
115453: LD_EXP 212
115457: PUSH
115458: LD_EXP 214
115462: PUSH
115463: LD_EXP 216
115467: PUSH
115468: EMPTY
115469: LIST
115470: LIST
115471: LIST
115472: LIST
115473: LIST
115474: LIST
115475: ST_TO_ADDR
// for i = 1 to temp_list do
115476: LD_ADDR_VAR 0 3
115480: PUSH
115481: DOUBLE
115482: LD_INT 1
115484: DEC
115485: ST_TO_ADDR
115486: LD_VAR 0 5
115490: PUSH
115491: FOR_TO
115492: IFFALSE 115524
// if temp_list [ i ] = 1 then
115494: LD_VAR 0 5
115498: PUSH
115499: LD_VAR 0 3
115503: ARRAY
115504: PUSH
115505: LD_INT 1
115507: EQUAL
115508: IFFALSE 115522
// begin temp = i ;
115510: LD_ADDR_VAR 0 4
115514: PUSH
115515: LD_VAR 0 3
115519: ST_TO_ADDR
// break ;
115520: GO 115524
// end ;
115522: GO 115491
115524: POP
115525: POP
// if SibList < [ 30 , 100 , 70 , 40 , 30 , 40 , 0 ] [ temp ] then
115526: LD_VAR 0 6
115530: PUSH
115531: LD_INT 30
115533: PUSH
115534: LD_INT 100
115536: PUSH
115537: LD_INT 70
115539: PUSH
115540: LD_INT 40
115542: PUSH
115543: LD_INT 30
115545: PUSH
115546: LD_INT 40
115548: PUSH
115549: LD_INT 0
115551: PUSH
115552: EMPTY
115553: LIST
115554: LIST
115555: LIST
115556: LIST
115557: LIST
115558: LIST
115559: LIST
115560: PUSH
115561: LD_VAR 0 4
115565: ARRAY
115566: LESS
115567: IFFALSE 115632
// begin query ( artifact_use_no ) ;
115569: LD_STRING artifact_use_no
115571: PPUSH
115572: CALL_OW 97
// ArtUse_SibPlant = 0 ;
115576: LD_ADDR_EXP 205
115580: PUSH
115581: LD_INT 0
115583: ST_TO_ADDR
// ArtUse_Beh = 0 ;
115584: LD_ADDR_EXP 207
115588: PUSH
115589: LD_INT 0
115591: ST_TO_ADDR
// ArtUse_TimeLapse = 0 ;
115592: LD_ADDR_EXP 210
115596: PUSH
115597: LD_INT 0
115599: ST_TO_ADDR
// ArtUse_Laser = 0 ;
115600: LD_ADDR_EXP 212
115604: PUSH
115605: LD_INT 0
115607: ST_TO_ADDR
// ArtUse_SuperStim = 0 ;
115608: LD_ADDR_EXP 214
115612: PUSH
115613: LD_INT 0
115615: ST_TO_ADDR
// ArtUse_SPBomb = 0 ;
115616: LD_ADDR_EXP 216
115620: PUSH
115621: LD_INT 0
115623: ST_TO_ADDR
// ArtUse_TimeLapse = 0 ;
115624: LD_ADDR_EXP 210
115628: PUSH
115629: LD_INT 0
115631: ST_TO_ADDR
// end ; end ;
115632: LD_VAR 0 2
115636: RET
// every 0 0$0.1 trigger 1 in [ ArtUse_SibPlant , ArtUse_Beh , ArtUse_TimeLapse , ArtUse_Laser , ArtUse_SuperStim , ArtUse_SPBomb ] do var i , j , k , temp , temp2 , temp_list , st , cargos , SibList , price , used , target ;
115637: LD_INT 1
115639: PUSH
115640: LD_EXP 205
115644: PUSH
115645: LD_EXP 207
115649: PUSH
115650: LD_EXP 210
115654: PUSH
115655: LD_EXP 212
115659: PUSH
115660: LD_EXP 214
115664: PUSH
115665: LD_EXP 216
115669: PUSH
115670: EMPTY
115671: LIST
115672: LIST
115673: LIST
115674: LIST
115675: LIST
115676: LIST
115677: IN
115678: IFFALSE 118426
115680: GO 115682
115682: DISABLE
115683: LD_INT 0
115685: PPUSH
115686: PPUSH
115687: PPUSH
115688: PPUSH
115689: PPUSH
115690: PPUSH
115691: PPUSH
115692: PPUSH
115693: PPUSH
115694: PPUSH
115695: PPUSH
115696: PPUSH
// begin if not FirstUseInfo and not ArtUse_TimeLapse then
115697: LD_EXP 204
115701: NOT
115702: PUSH
115703: LD_EXP 210
115707: NOT
115708: AND
115709: IFFALSE 115726
// begin Query ( artifact_use_initial ) ;
115711: LD_STRING artifact_use_initial
115713: PPUSH
115714: CALL_OW 97
// FirstUseInfo = 1 ;
115718: LD_ADDR_EXP 204
115722: PUSH
115723: LD_INT 1
115725: ST_TO_ADDR
// end ; cargos = FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , ru_cargo_bay ] , [ f_weapon , us_cargo_bay ] ] ] ) ;
115726: LD_ADDR_VAR 0 8
115730: PUSH
115731: LD_INT 22
115733: PUSH
115734: LD_INT 2
115736: PUSH
115737: EMPTY
115738: LIST
115739: LIST
115740: PUSH
115741: LD_INT 2
115743: PUSH
115744: LD_INT 34
115746: PUSH
115747: LD_INT 32
115749: PUSH
115750: EMPTY
115751: LIST
115752: LIST
115753: PUSH
115754: LD_INT 34
115756: PUSH
115757: LD_INT 51
115759: PUSH
115760: EMPTY
115761: LIST
115762: LIST
115763: PUSH
115764: LD_INT 34
115766: PUSH
115767: LD_INT 12
115769: PUSH
115770: EMPTY
115771: LIST
115772: LIST
115773: PUSH
115774: EMPTY
115775: LIST
115776: LIST
115777: LIST
115778: LIST
115779: PUSH
115780: EMPTY
115781: LIST
115782: LIST
115783: PPUSH
115784: CALL_OW 69
115788: ST_TO_ADDR
// for i in cargos do
115789: LD_ADDR_VAR 0 1
115793: PUSH
115794: LD_VAR 0 8
115798: PUSH
115799: FOR_IN
115800: IFFALSE 115828
// if GetCargo ( i , mat_artifact ) then
115802: LD_VAR 0 1
115806: PPUSH
115807: LD_INT 4
115809: PPUSH
115810: CALL_OW 289
115814: IFFALSE 115826
// temp = i ;
115816: LD_ADDR_VAR 0 4
115820: PUSH
115821: LD_VAR 0 1
115825: ST_TO_ADDR
115826: GO 115799
115828: POP
115829: POP
// SibList = [ GetCargo ( temp , mat_siberit ) ] ;
115830: LD_ADDR_VAR 0 9
115834: PUSH
115835: LD_VAR 0 4
115839: PPUSH
115840: LD_INT 3
115842: PPUSH
115843: CALL_OW 289
115847: PUSH
115848: EMPTY
115849: LIST
115850: ST_TO_ADDR
// temp_list = [ ] ;
115851: LD_ADDR_VAR 0 6
115855: PUSH
115856: EMPTY
115857: ST_TO_ADDR
// for i in cargos diff temp do
115858: LD_ADDR_VAR 0 1
115862: PUSH
115863: LD_VAR 0 8
115867: PUSH
115868: LD_VAR 0 4
115872: DIFF
115873: PUSH
115874: FOR_IN
115875: IFFALSE 115942
// if GetDistUnits ( i , temp ) < 13 then
115877: LD_VAR 0 1
115881: PPUSH
115882: LD_VAR 0 4
115886: PPUSH
115887: CALL_OW 296
115891: PUSH
115892: LD_INT 13
115894: LESS
115895: IFFALSE 115940
// begin temp_list = temp_list ^ i ;
115897: LD_ADDR_VAR 0 6
115901: PUSH
115902: LD_VAR 0 6
115906: PUSH
115907: LD_VAR 0 1
115911: ADD
115912: ST_TO_ADDR
// SibList = SibList ^ [ GetCargo ( i , mat_siberit ) ] ;
115913: LD_ADDR_VAR 0 9
115917: PUSH
115918: LD_VAR 0 9
115922: PUSH
115923: LD_VAR 0 1
115927: PPUSH
115928: LD_INT 3
115930: PPUSH
115931: CALL_OW 289
115935: PUSH
115936: EMPTY
115937: LIST
115938: ADD
115939: ST_TO_ADDR
// end ;
115940: GO 115874
115942: POP
115943: POP
// cargos = temp ^ temp_list ;
115944: LD_ADDR_VAR 0 8
115948: PUSH
115949: LD_VAR 0 4
115953: PUSH
115954: LD_VAR 0 6
115958: ADD
115959: ST_TO_ADDR
// temp = [ ArtUse_SibPlant , ArtUse_Beh , ArtUse_TimeLapse , ArtUse_Laser , ArtUse_SuperStim , ArtUse_SPBomb ] ;
115960: LD_ADDR_VAR 0 4
115964: PUSH
115965: LD_EXP 205
115969: PUSH
115970: LD_EXP 207
115974: PUSH
115975: LD_EXP 210
115979: PUSH
115980: LD_EXP 212
115984: PUSH
115985: LD_EXP 214
115989: PUSH
115990: LD_EXP 216
115994: PUSH
115995: EMPTY
115996: LIST
115997: LIST
115998: LIST
115999: LIST
116000: LIST
116001: LIST
116002: ST_TO_ADDR
// for i = 1 to temp do
116003: LD_ADDR_VAR 0 1
116007: PUSH
116008: DOUBLE
116009: LD_INT 1
116011: DEC
116012: ST_TO_ADDR
116013: LD_VAR 0 4
116017: PUSH
116018: FOR_TO
116019: IFFALSE 116317
// if temp [ i ] = 1 then
116021: LD_VAR 0 4
116025: PUSH
116026: LD_VAR 0 1
116030: ARRAY
116031: PUSH
116032: LD_INT 1
116034: EQUAL
116035: IFFALSE 116315
// begin price = [ 30 , 100 , 70 , 40 , 30 , 40 ] [ i ] ;
116037: LD_ADDR_VAR 0 10
116041: PUSH
116042: LD_INT 30
116044: PUSH
116045: LD_INT 100
116047: PUSH
116048: LD_INT 70
116050: PUSH
116051: LD_INT 40
116053: PUSH
116054: LD_INT 30
116056: PUSH
116057: LD_INT 40
116059: PUSH
116060: EMPTY
116061: LIST
116062: LIST
116063: LIST
116064: LIST
116065: LIST
116066: LIST
116067: PUSH
116068: LD_VAR 0 1
116072: ARRAY
116073: ST_TO_ADDR
// case i of 1 :
116074: LD_VAR 0 1
116078: PUSH
116079: LD_INT 1
116081: DOUBLE
116082: EQUAL
116083: IFTRUE 116087
116085: GO 116127
116087: POP
// target = FilterAllUnits ( [ [ f_btype , b_siberite_power ] , [ f_not , [ f_constructed ] ] ] ) ; 2 :
116088: LD_ADDR_VAR 0 12
116092: PUSH
116093: LD_INT 30
116095: PUSH
116096: LD_INT 28
116098: PUSH
116099: EMPTY
116100: LIST
116101: LIST
116102: PUSH
116103: LD_INT 3
116105: PUSH
116106: LD_INT 57
116108: PUSH
116109: EMPTY
116110: LIST
116111: PUSH
116112: EMPTY
116113: LIST
116114: LIST
116115: PUSH
116116: EMPTY
116117: LIST
116118: LIST
116119: PPUSH
116120: CALL_OW 69
116124: ST_TO_ADDR
116125: GO 116313
116127: LD_INT 2
116129: DOUBLE
116130: EQUAL
116131: IFTRUE 116135
116133: GO 116158
116135: POP
// target = FilterAllUnits ( [ f_weapon , 59 ] ) ; 4 :
116136: LD_ADDR_VAR 0 12
116140: PUSH
116141: LD_INT 34
116143: PUSH
116144: LD_INT 59
116146: PUSH
116147: EMPTY
116148: LIST
116149: LIST
116150: PPUSH
116151: CALL_OW 69
116155: ST_TO_ADDR
116156: GO 116313
116158: LD_INT 4
116160: DOUBLE
116161: EQUAL
116162: IFTRUE 116166
116164: GO 116207
116166: POP
// target = FilterAllUnits ( [ f_or , [ f_weapon , us_double_laser ] , [ f_bweapon , us_double_laser ] ] ) ; 5 :
116167: LD_ADDR_VAR 0 12
116171: PUSH
116172: LD_INT 2
116174: PUSH
116175: LD_INT 34
116177: PUSH
116178: LD_INT 10
116180: PUSH
116181: EMPTY
116182: LIST
116183: LIST
116184: PUSH
116185: LD_INT 35
116187: PUSH
116188: LD_INT 10
116190: PUSH
116191: EMPTY
116192: LIST
116193: LIST
116194: PUSH
116195: EMPTY
116196: LIST
116197: LIST
116198: LIST
116199: PPUSH
116200: CALL_OW 69
116204: ST_TO_ADDR
116205: GO 116313
116207: LD_INT 5
116209: DOUBLE
116210: EQUAL
116211: IFTRUE 116215
116213: GO 116281
116215: POP
// target = FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_mortar ] , [ f_class , class_desert_warior ] ] ] ) ; 6 :
116216: LD_ADDR_VAR 0 12
116220: PUSH
116221: LD_INT 22
116223: PUSH
116224: LD_INT 2
116226: PUSH
116227: EMPTY
116228: LIST
116229: LIST
116230: PUSH
116231: LD_INT 2
116233: PUSH
116234: LD_INT 25
116236: PUSH
116237: LD_INT 1
116239: PUSH
116240: EMPTY
116241: LIST
116242: LIST
116243: PUSH
116244: LD_INT 25
116246: PUSH
116247: LD_INT 8
116249: PUSH
116250: EMPTY
116251: LIST
116252: LIST
116253: PUSH
116254: LD_INT 25
116256: PUSH
116257: LD_INT 11
116259: PUSH
116260: EMPTY
116261: LIST
116262: LIST
116263: PUSH
116264: EMPTY
116265: LIST
116266: LIST
116267: LIST
116268: LIST
116269: PUSH
116270: EMPTY
116271: LIST
116272: LIST
116273: PPUSH
116274: CALL_OW 69
116278: ST_TO_ADDR
116279: GO 116313
116281: LD_INT 6
116283: DOUBLE
116284: EQUAL
116285: IFTRUE 116289
116287: GO 116312
116289: POP
// target = FilterAllUnits ( [ f_weapon , ar_selfpropelled_bomb ] ) ; end ;
116290: LD_ADDR_VAR 0 12
116294: PUSH
116295: LD_INT 34
116297: PUSH
116298: LD_INT 29
116300: PUSH
116301: EMPTY
116302: LIST
116303: LIST
116304: PPUSH
116305: CALL_OW 69
116309: ST_TO_ADDR
116310: GO 116313
116312: POP
// break ;
116313: GO 116317
// end ;
116315: GO 116018
116317: POP
116318: POP
// temp = 0 ;
116319: LD_ADDR_VAR 0 4
116323: PUSH
116324: LD_INT 0
116326: ST_TO_ADDR
// for i in SibList do
116327: LD_ADDR_VAR 0 1
116331: PUSH
116332: LD_VAR 0 9
116336: PUSH
116337: FOR_IN
116338: IFFALSE 116362
// temp = temp + i [ 1 ] ;
116340: LD_ADDR_VAR 0 4
116344: PUSH
116345: LD_VAR 0 4
116349: PUSH
116350: LD_VAR 0 1
116354: PUSH
116355: LD_INT 1
116357: ARRAY
116358: PLUS
116359: ST_TO_ADDR
116360: GO 116337
116362: POP
116363: POP
// if temp < price then
116364: LD_VAR 0 4
116368: PUSH
116369: LD_VAR 0 10
116373: LESS
116374: IFFALSE 116424
// begin ArtUse_SibPlant = 0 ;
116376: LD_ADDR_EXP 205
116380: PUSH
116381: LD_INT 0
116383: ST_TO_ADDR
// ArtUse_Beh = 0 ;
116384: LD_ADDR_EXP 207
116388: PUSH
116389: LD_INT 0
116391: ST_TO_ADDR
// ArtUse_TimeLapse = 0 ;
116392: LD_ADDR_EXP 210
116396: PUSH
116397: LD_INT 0
116399: ST_TO_ADDR
// ArtUse_Laser = 0 ;
116400: LD_ADDR_EXP 212
116404: PUSH
116405: LD_INT 0
116407: ST_TO_ADDR
// ArtUse_SuperStim = 0 ;
116408: LD_ADDR_EXP 214
116412: PUSH
116413: LD_INT 0
116415: ST_TO_ADDR
// ArtUse_SPBomb = 0 ;
116416: LD_ADDR_EXP 216
116420: PUSH
116421: LD_INT 0
116423: ST_TO_ADDR
// end ; used = 0 ;
116424: LD_ADDR_VAR 0 11
116428: PUSH
116429: LD_INT 0
116431: ST_TO_ADDR
// if ArtUse_SibPlant = 1 then
116432: LD_EXP 205
116436: PUSH
116437: LD_INT 1
116439: EQUAL
116440: IFFALSE 116695
// for i in FilterAllUnits ( [ [ f_btype , b_siberite_power ] , [ f_not , [ f_constructed ] ] ] ) do
116442: LD_ADDR_VAR 0 1
116446: PUSH
116447: LD_INT 30
116449: PUSH
116450: LD_INT 28
116452: PUSH
116453: EMPTY
116454: LIST
116455: LIST
116456: PUSH
116457: LD_INT 3
116459: PUSH
116460: LD_INT 57
116462: PUSH
116463: EMPTY
116464: LIST
116465: PUSH
116466: EMPTY
116467: LIST
116468: LIST
116469: PUSH
116470: EMPTY
116471: LIST
116472: LIST
116473: PPUSH
116474: CALL_OW 69
116478: PUSH
116479: FOR_IN
116480: IFFALSE 116693
// if IsSelected ( i ) then
116482: LD_VAR 0 1
116486: PPUSH
116487: CALL_OW 306
116491: IFFALSE 116691
// begin temp = 0 ;
116493: LD_ADDR_VAR 0 4
116497: PUSH
116498: LD_INT 0
116500: ST_TO_ADDR
// for j in ArtUse_SibPlant_contaminated do
116501: LD_ADDR_VAR 0 2
116505: PUSH
116506: LD_EXP 206
116510: PUSH
116511: FOR_IN
116512: IFFALSE 116540
// if j [ 1 ] = i then
116514: LD_VAR 0 2
116518: PUSH
116519: LD_INT 1
116521: ARRAY
116522: PUSH
116523: LD_VAR 0 1
116527: EQUAL
116528: IFFALSE 116538
// temp = 1 ;
116530: LD_ADDR_VAR 0 4
116534: PUSH
116535: LD_INT 1
116537: ST_TO_ADDR
116538: GO 116511
116540: POP
116541: POP
// if temp = 0 then
116542: LD_VAR 0 4
116546: PUSH
116547: LD_INT 0
116549: EQUAL
116550: IFFALSE 116689
// begin ArtUse_SibPlant_contaminated = ArtUse_SibPlant_contaminated ^ [ [ i , tick , 0 ] ] ;
116552: LD_ADDR_EXP 206
116556: PUSH
116557: LD_EXP 206
116561: PUSH
116562: LD_VAR 0 1
116566: PUSH
116567: LD_OWVAR 1
116571: PUSH
116572: LD_INT 0
116574: PUSH
116575: EMPTY
116576: LIST
116577: LIST
116578: LIST
116579: PUSH
116580: EMPTY
116581: LIST
116582: ADD
116583: ST_TO_ADDR
// used = used + 1 ;
116584: LD_ADDR_VAR 0 11
116588: PUSH
116589: LD_VAR 0 11
116593: PUSH
116594: LD_INT 1
116596: PLUS
116597: ST_TO_ADDR
// ArtUse_SibPlant = 0 ;
116598: LD_ADDR_EXP 205
116602: PUSH
116603: LD_INT 0
116605: ST_TO_ADDR
// for j in i ^ FilterAllUnits ( [ [ f_type , unit_building ] , [ f_dist , i , 10 ] ] ) do
116606: LD_ADDR_VAR 0 2
116610: PUSH
116611: LD_VAR 0 1
116615: PUSH
116616: LD_INT 21
116618: PUSH
116619: LD_INT 3
116621: PUSH
116622: EMPTY
116623: LIST
116624: LIST
116625: PUSH
116626: LD_INT 91
116628: PUSH
116629: LD_VAR 0 1
116633: PUSH
116634: LD_INT 10
116636: PUSH
116637: EMPTY
116638: LIST
116639: LIST
116640: LIST
116641: PUSH
116642: EMPTY
116643: LIST
116644: LIST
116645: PPUSH
116646: CALL_OW 69
116650: ADD
116651: PUSH
116652: FOR_IN
116653: IFFALSE 116687
// begin ai_units_irradiated = ai_units_irradiated ^ j ;
116655: LD_ADDR_EXP 158
116659: PUSH
116660: LD_EXP 158
116664: PUSH
116665: LD_VAR 0 2
116669: ADD
116670: ST_TO_ADDR
// ai_units_irradiated_time = ai_units_irradiated_time ^ 6000 ;
116671: LD_ADDR_EXP 159
116675: PUSH
116676: LD_EXP 159
116680: PUSH
116681: LD_INT 6000
116683: ADD
116684: ST_TO_ADDR
// end ;
116685: GO 116652
116687: POP
116688: POP
// end ; break ;
116689: GO 116693
// end ;
116691: GO 116479
116693: POP
116694: POP
// if ArtUse_Beh = 1 then
116695: LD_EXP 207
116699: PUSH
116700: LD_INT 1
116702: EQUAL
116703: IFFALSE 117072
// for i in FilterAllUnits ( [ f_weapon , 59 ] ) do
116705: LD_ADDR_VAR 0 1
116709: PUSH
116710: LD_INT 34
116712: PUSH
116713: LD_INT 59
116715: PUSH
116716: EMPTY
116717: LIST
116718: LIST
116719: PPUSH
116720: CALL_OW 69
116724: PUSH
116725: FOR_IN
116726: IFFALSE 117070
// if IsSelected ( i ) then
116728: LD_VAR 0 1
116732: PPUSH
116733: CALL_OW 306
116737: IFFALSE 117068
// begin if not i in ArtUse_Beh_damaged then
116739: LD_VAR 0 1
116743: PUSH
116744: LD_EXP 208
116748: IN
116749: NOT
116750: IFFALSE 117066
// begin ArtUse_Beh_damaged = ArtUse_Beh_damaged ^ i ;
116752: LD_ADDR_EXP 208
116756: PUSH
116757: LD_EXP 208
116761: PUSH
116762: LD_VAR 0 1
116766: ADD
116767: ST_TO_ADDR
// ArtUse_Beh_count = ArtUse_Beh_count ^ [ [ 0 , tick , GetX ( i ) , GetY ( i ) ] ] ;
116768: LD_ADDR_EXP 209
116772: PUSH
116773: LD_EXP 209
116777: PUSH
116778: LD_INT 0
116780: PUSH
116781: LD_OWVAR 1
116785: PUSH
116786: LD_VAR 0 1
116790: PPUSH
116791: CALL_OW 250
116795: PUSH
116796: LD_VAR 0 1
116800: PPUSH
116801: CALL_OW 251
116805: PUSH
116806: EMPTY
116807: LIST
116808: LIST
116809: LIST
116810: LIST
116811: PUSH
116812: EMPTY
116813: LIST
116814: ADD
116815: ST_TO_ADDR
// used = used + 1 ;
116816: LD_ADDR_VAR 0 11
116820: PUSH
116821: LD_VAR 0 11
116825: PUSH
116826: LD_INT 1
116828: PLUS
116829: ST_TO_ADDR
// ArtUse_Beh = 0 ;
116830: LD_ADDR_EXP 207
116834: PUSH
116835: LD_INT 0
116837: ST_TO_ADDR
// temp = [ GetX ( i ) , GetY ( i ) ] ;
116838: LD_ADDR_VAR 0 4
116842: PUSH
116843: LD_VAR 0 1
116847: PPUSH
116848: CALL_OW 250
116852: PUSH
116853: LD_VAR 0 1
116857: PPUSH
116858: CALL_OW 251
116862: PUSH
116863: EMPTY
116864: LIST
116865: LIST
116866: ST_TO_ADDR
// MineExplosion ( temp [ 1 ] , temp [ 2 ] , 0 ) ;
116867: LD_VAR 0 4
116871: PUSH
116872: LD_INT 1
116874: ARRAY
116875: PPUSH
116876: LD_VAR 0 4
116880: PUSH
116881: LD_INT 2
116883: ARRAY
116884: PPUSH
116885: LD_INT 0
116887: PPUSH
116888: CALL_OW 453
// ArtContamination ( temp [ 1 ] , temp [ 2 ] , 30 ) ;
116892: LD_VAR 0 4
116896: PUSH
116897: LD_INT 1
116899: ARRAY
116900: PPUSH
116901: LD_VAR 0 4
116905: PUSH
116906: LD_INT 2
116908: ARRAY
116909: PPUSH
116910: LD_INT 30
116912: PPUSH
116913: CALL_OW 495
// ComStop ( i ) ;
116917: LD_VAR 0 1
116921: PPUSH
116922: CALL_OW 141
// temp = GetLives ( i ) - 500 ;
116926: LD_ADDR_VAR 0 4
116930: PUSH
116931: LD_VAR 0 1
116935: PPUSH
116936: CALL_OW 256
116940: PUSH
116941: LD_INT 500
116943: MINUS
116944: ST_TO_ADDR
// if temp < 0 then
116945: LD_VAR 0 4
116949: PUSH
116950: LD_INT 0
116952: LESS
116953: IFFALSE 116969
// SetLives ( i , 0 ) else
116955: LD_VAR 0 1
116959: PPUSH
116960: LD_INT 0
116962: PPUSH
116963: CALL_OW 234
116967: GO 116983
// SetLives ( i , temp ) ;
116969: LD_VAR 0 1
116973: PPUSH
116974: LD_VAR 0 4
116978: PPUSH
116979: CALL_OW 234
// for j in i ^ FilterAllUnits ( [ [ f_type , unit_building ] , [ f_dist , i , 20 ] ] ) do
116983: LD_ADDR_VAR 0 2
116987: PUSH
116988: LD_VAR 0 1
116992: PUSH
116993: LD_INT 21
116995: PUSH
116996: LD_INT 3
116998: PUSH
116999: EMPTY
117000: LIST
117001: LIST
117002: PUSH
117003: LD_INT 91
117005: PUSH
117006: LD_VAR 0 1
117010: PUSH
117011: LD_INT 20
117013: PUSH
117014: EMPTY
117015: LIST
117016: LIST
117017: LIST
117018: PUSH
117019: EMPTY
117020: LIST
117021: LIST
117022: PPUSH
117023: CALL_OW 69
117027: ADD
117028: PUSH
117029: FOR_IN
117030: IFFALSE 117064
// begin ai_units_irradiated = ai_units_irradiated ^ j ;
117032: LD_ADDR_EXP 158
117036: PUSH
117037: LD_EXP 158
117041: PUSH
117042: LD_VAR 0 2
117046: ADD
117047: ST_TO_ADDR
// ai_units_irradiated_time = ai_units_irradiated_time ^ 1 1$46 ;
117048: LD_ADDR_EXP 159
117052: PUSH
117053: LD_EXP 159
117057: PUSH
117058: LD_INT 3710
117060: ADD
117061: ST_TO_ADDR
// end ;
117062: GO 117029
117064: POP
117065: POP
// end ; break ;
117066: GO 117070
// end ;
117068: GO 116725
117070: POP
117071: POP
// if ArtUse_TimeLapse = 1 then
117072: LD_EXP 210
117076: PUSH
117077: LD_INT 1
117079: EQUAL
117080: IFFALSE 117129
// begin ArtUse_TimeLapse_time = [ 1 1$15 , 1 1$0 , 0 0$45 ] [ difficulty ] ;
117082: LD_ADDR_EXP 211
117086: PUSH
117087: LD_INT 2625
117089: PUSH
117090: LD_INT 2100
117092: PUSH
117093: LD_INT 1575
117095: PUSH
117096: EMPTY
117097: LIST
117098: LIST
117099: LIST
117100: PUSH
117101: LD_OWVAR 67
117105: ARRAY
117106: ST_TO_ADDR
// used = used + 1 ;
117107: LD_ADDR_VAR 0 11
117111: PUSH
117112: LD_VAR 0 11
117116: PUSH
117117: LD_INT 1
117119: PLUS
117120: ST_TO_ADDR
// ArtUse_TimeLapse = 0 ;
117121: LD_ADDR_EXP 210
117125: PUSH
117126: LD_INT 0
117128: ST_TO_ADDR
// end ; if ArtUse_Laser = 1 then
117129: LD_EXP 212
117133: PUSH
117134: LD_INT 1
117136: EQUAL
117137: IFFALSE 117296
// for i in FilterAllUnits ( [ f_or , [ f_weapon , us_double_laser ] , [ f_bweapon , us_double_laser ] ] ) do
117139: LD_ADDR_VAR 0 1
117143: PUSH
117144: LD_INT 2
117146: PUSH
117147: LD_INT 34
117149: PUSH
117150: LD_INT 10
117152: PUSH
117153: EMPTY
117154: LIST
117155: LIST
117156: PUSH
117157: LD_INT 35
117159: PUSH
117160: LD_INT 10
117162: PUSH
117163: EMPTY
117164: LIST
117165: LIST
117166: PUSH
117167: EMPTY
117168: LIST
117169: LIST
117170: LIST
117171: PPUSH
117172: CALL_OW 69
117176: PUSH
117177: FOR_IN
117178: IFFALSE 117294
// if IsSelected ( i ) then
117180: LD_VAR 0 1
117184: PPUSH
117185: CALL_OW 306
117189: IFFALSE 117292
// begin temp = 0 ;
117191: LD_ADDR_VAR 0 4
117195: PUSH
117196: LD_INT 0
117198: ST_TO_ADDR
// for j in ArtUse_Laser_Hacked do
117199: LD_ADDR_VAR 0 2
117203: PUSH
117204: LD_EXP 213
117208: PUSH
117209: FOR_IN
117210: IFFALSE 117238
// if j [ 1 ] = i then
117212: LD_VAR 0 2
117216: PUSH
117217: LD_INT 1
117219: ARRAY
117220: PUSH
117221: LD_VAR 0 1
117225: EQUAL
117226: IFFALSE 117236
// temp = 1 ;
117228: LD_ADDR_VAR 0 4
117232: PUSH
117233: LD_INT 1
117235: ST_TO_ADDR
117236: GO 117209
117238: POP
117239: POP
// if temp = 0 then
117240: LD_VAR 0 4
117244: PUSH
117245: LD_INT 0
117247: EQUAL
117248: IFFALSE 117292
// begin ArtUse_Laser_Hacked = ArtUse_Laser_Hacked ^ [ [ i , tick ] ] ;
117250: LD_ADDR_EXP 213
117254: PUSH
117255: LD_EXP 213
117259: PUSH
117260: LD_VAR 0 1
117264: PUSH
117265: LD_OWVAR 1
117269: PUSH
117270: EMPTY
117271: LIST
117272: LIST
117273: PUSH
117274: EMPTY
117275: LIST
117276: ADD
117277: ST_TO_ADDR
// used = used + 1 ;
117278: LD_ADDR_VAR 0 11
117282: PUSH
117283: LD_VAR 0 11
117287: PUSH
117288: LD_INT 1
117290: PLUS
117291: ST_TO_ADDR
// end ; end ;
117292: GO 117177
117294: POP
117295: POP
// if ArtUse_SuperStim = 1 then
117296: LD_EXP 214
117300: PUSH
117301: LD_INT 1
117303: EQUAL
117304: IFFALSE 117665
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_mortar ] , [ f_class , class_desert_warior ] ] ] ) diff Heike ^ Omar do
117306: LD_ADDR_VAR 0 1
117310: PUSH
117311: LD_INT 22
117313: PUSH
117314: LD_INT 2
117316: PUSH
117317: EMPTY
117318: LIST
117319: LIST
117320: PUSH
117321: LD_INT 2
117323: PUSH
117324: LD_INT 25
117326: PUSH
117327: LD_INT 1
117329: PUSH
117330: EMPTY
117331: LIST
117332: LIST
117333: PUSH
117334: LD_INT 25
117336: PUSH
117337: LD_INT 8
117339: PUSH
117340: EMPTY
117341: LIST
117342: LIST
117343: PUSH
117344: LD_INT 25
117346: PUSH
117347: LD_INT 11
117349: PUSH
117350: EMPTY
117351: LIST
117352: LIST
117353: PUSH
117354: EMPTY
117355: LIST
117356: LIST
117357: LIST
117358: LIST
117359: PUSH
117360: EMPTY
117361: LIST
117362: LIST
117363: PPUSH
117364: CALL_OW 69
117368: PUSH
117369: LD_EXP 10
117373: PUSH
117374: LD_EXP 23
117378: ADD
117379: DIFF
117380: PUSH
117381: FOR_IN
117382: IFFALSE 117663
// if IsSelected ( i ) and not IsInUnit ( i ) then
117384: LD_VAR 0 1
117388: PPUSH
117389: CALL_OW 306
117393: PUSH
117394: LD_VAR 0 1
117398: PPUSH
117399: CALL_OW 310
117403: NOT
117404: AND
117405: IFFALSE 117661
// begin temp = 0 ;
117407: LD_ADDR_VAR 0 4
117411: PUSH
117412: LD_INT 0
117414: ST_TO_ADDR
// for j in ArtUse_SuperStim_units do
117415: LD_ADDR_VAR 0 2
117419: PUSH
117420: LD_EXP 215
117424: PUSH
117425: FOR_IN
117426: IFFALSE 117454
// if j [ 1 ] = i then
117428: LD_VAR 0 2
117432: PUSH
117433: LD_INT 1
117435: ARRAY
117436: PUSH
117437: LD_VAR 0 1
117441: EQUAL
117442: IFFALSE 117452
// temp = 1 ;
117444: LD_ADDR_VAR 0 4
117448: PUSH
117449: LD_INT 1
117451: ST_TO_ADDR
117452: GO 117425
117454: POP
117455: POP
// if temp = 0 then
117456: LD_VAR 0 4
117460: PUSH
117461: LD_INT 0
117463: EQUAL
117464: IFFALSE 117661
// begin ArtUse_SuperStim_units = ArtUse_SuperStim_units ^ [ [ i , 1000 ] ] ;
117466: LD_ADDR_EXP 215
117470: PUSH
117471: LD_EXP 215
117475: PUSH
117476: LD_VAR 0 1
117480: PUSH
117481: LD_INT 1000
117483: PUSH
117484: EMPTY
117485: LIST
117486: LIST
117487: PUSH
117488: EMPTY
117489: LIST
117490: ADD
117491: ST_TO_ADDR
// temp_list = [ GetX ( i ) , GetY ( i ) , GetDir ( i ) ] ;
117492: LD_ADDR_VAR 0 6
117496: PUSH
117497: LD_VAR 0 1
117501: PPUSH
117502: CALL_OW 250
117506: PUSH
117507: LD_VAR 0 1
117511: PPUSH
117512: CALL_OW 251
117516: PUSH
117517: LD_VAR 0 1
117521: PPUSH
117522: CALL_OW 254
117526: PUSH
117527: EMPTY
117528: LIST
117529: LIST
117530: LIST
117531: ST_TO_ADDR
// RemoveUnit ( i ) ;
117532: LD_VAR 0 1
117536: PPUSH
117537: CALL_OW 64
// SetAttr ( i , attr_speed , GetAttr ( i , attr_speed ) + 6 ) ;
117541: LD_VAR 0 1
117545: PPUSH
117546: LD_INT 2
117548: PPUSH
117549: LD_VAR 0 1
117553: PPUSH
117554: LD_INT 2
117556: PPUSH
117557: CALL_OW 260
117561: PUSH
117562: LD_INT 6
117564: PLUS
117565: PPUSH
117566: CALL_OW 239
// SetAttr ( i , attr_stamina , GetAttr ( i , attr_stamina ) + 20 ) ;
117570: LD_VAR 0 1
117574: PPUSH
117575: LD_INT 1
117577: PPUSH
117578: LD_VAR 0 1
117582: PPUSH
117583: LD_INT 1
117585: PPUSH
117586: CALL_OW 260
117590: PUSH
117591: LD_INT 20
117593: PLUS
117594: PPUSH
117595: CALL_OW 239
// SetDir ( i , temp_list [ 3 ] ) ;
117599: LD_VAR 0 1
117603: PPUSH
117604: LD_VAR 0 6
117608: PUSH
117609: LD_INT 3
117611: ARRAY
117612: PPUSH
117613: CALL_OW 233
// PlaceUnitXY ( i , temp_list [ 1 ] , temp_list [ 2 ] , false ) ;
117617: LD_VAR 0 1
117621: PPUSH
117622: LD_VAR 0 6
117626: PUSH
117627: LD_INT 1
117629: ARRAY
117630: PPUSH
117631: LD_VAR 0 6
117635: PUSH
117636: LD_INT 2
117638: ARRAY
117639: PPUSH
117640: LD_INT 0
117642: PPUSH
117643: CALL_OW 48
// used = used + 1 ;
117647: LD_ADDR_VAR 0 11
117651: PUSH
117652: LD_VAR 0 11
117656: PUSH
117657: LD_INT 1
117659: PLUS
117660: ST_TO_ADDR
// end ; end ;
117661: GO 117381
117663: POP
117664: POP
// if ArtUse_SPBomb = 1 then
117665: LD_EXP 216
117669: PUSH
117670: LD_INT 1
117672: EQUAL
117673: IFFALSE 118186
// for i in FilterAllUnits ( [ f_weapon , ar_selfpropelled_bomb ] ) do
117675: LD_ADDR_VAR 0 1
117679: PUSH
117680: LD_INT 34
117682: PUSH
117683: LD_INT 29
117685: PUSH
117686: EMPTY
117687: LIST
117688: LIST
117689: PPUSH
117690: CALL_OW 69
117694: PUSH
117695: FOR_IN
117696: IFFALSE 118184
// if IsSelected ( i ) and not i in ArtUse_SPBomb_veh then
117698: LD_VAR 0 1
117702: PPUSH
117703: CALL_OW 306
117707: PUSH
117708: LD_VAR 0 1
117712: PUSH
117713: LD_EXP 217
117717: IN
117718: NOT
117719: AND
117720: IFFALSE 118182
// begin ArtUse_SPBomb_veh = ArtUse_SPBomb_veh ^ i ;
117722: LD_ADDR_EXP 217
117726: PUSH
117727: LD_EXP 217
117731: PUSH
117732: LD_VAR 0 1
117736: ADD
117737: ST_TO_ADDR
// SetLives ( i , 0 ) ;
117738: LD_VAR 0 1
117742: PPUSH
117743: LD_INT 0
117745: PPUSH
117746: CALL_OW 234
// for j = 1 to 6 do
117750: LD_ADDR_VAR 0 2
117754: PUSH
117755: DOUBLE
117756: LD_INT 1
117758: DEC
117759: ST_TO_ADDR
117760: LD_INT 6
117762: PUSH
117763: FOR_TO
117764: IFFALSE 117833
// begin MineExplosion ( GetX ( i ) , GetY ( i ) , 1 ) ;
117766: LD_VAR 0 1
117770: PPUSH
117771: CALL_OW 250
117775: PPUSH
117776: LD_VAR 0 1
117780: PPUSH
117781: CALL_OW 251
117785: PPUSH
117786: LD_INT 1
117788: PPUSH
117789: CALL_OW 453
// if j > 3 then
117793: LD_VAR 0 2
117797: PUSH
117798: LD_INT 3
117800: GREATER
117801: IFFALSE 117831
// ArtContamination ( GetX ( i ) , GetY ( i ) , 5.83 ) ;
117803: LD_VAR 0 1
117807: PPUSH
117808: CALL_OW 250
117812: PPUSH
117813: LD_VAR 0 1
117817: PPUSH
117818: CALL_OW 251
117822: PPUSH
117823: LD_REAL  5.83000000000000E+0000
117826: PPUSH
117827: CALL_OW 495
// end ;
117831: GO 117763
117833: POP
117834: POP
// used = used + 1 ;
117835: LD_ADDR_VAR 0 11
117839: PUSH
117840: LD_VAR 0 11
117844: PUSH
117845: LD_INT 1
117847: PLUS
117848: ST_TO_ADDR
// for j in FilterAllUnits ( [ [ f_type , unit_building ] , [ f_dist , i , 20 ] ] ) do
117849: LD_ADDR_VAR 0 2
117853: PUSH
117854: LD_INT 21
117856: PUSH
117857: LD_INT 3
117859: PUSH
117860: EMPTY
117861: LIST
117862: LIST
117863: PUSH
117864: LD_INT 91
117866: PUSH
117867: LD_VAR 0 1
117871: PUSH
117872: LD_INT 20
117874: PUSH
117875: EMPTY
117876: LIST
117877: LIST
117878: LIST
117879: PUSH
117880: EMPTY
117881: LIST
117882: LIST
117883: PPUSH
117884: CALL_OW 69
117888: PUSH
117889: FOR_IN
117890: IFFALSE 117924
// begin ai_units_irradiated = ai_units_irradiated ^ j ;
117892: LD_ADDR_EXP 158
117896: PUSH
117897: LD_EXP 158
117901: PUSH
117902: LD_VAR 0 2
117906: ADD
117907: ST_TO_ADDR
// ai_units_irradiated_time = ai_units_irradiated_time ^ 400 ;
117908: LD_ADDR_EXP 159
117912: PUSH
117913: LD_EXP 159
117917: PUSH
117918: LD_INT 400
117920: ADD
117921: ST_TO_ADDR
// end ;
117922: GO 117889
117924: POP
117925: POP
// for j in FilterAllUnits ( [ f_dist , i , 5 ] ) do
117926: LD_ADDR_VAR 0 2
117930: PUSH
117931: LD_INT 91
117933: PUSH
117934: LD_VAR 0 1
117938: PUSH
117939: LD_INT 5
117941: PUSH
117942: EMPTY
117943: LIST
117944: LIST
117945: LIST
117946: PPUSH
117947: CALL_OW 69
117951: PUSH
117952: FOR_IN
117953: IFFALSE 118180
// begin temp = [ ] ;
117955: LD_ADDR_VAR 0 4
117959: PUSH
117960: EMPTY
117961: ST_TO_ADDR
// case GetType ( j ) of unit_human :
117962: LD_VAR 0 2
117966: PPUSH
117967: CALL_OW 247
117971: PUSH
117972: LD_INT 1
117974: DOUBLE
117975: EQUAL
117976: IFTRUE 117980
117978: GO 117993
117980: POP
// temp = j ; unit_vehicle :
117981: LD_ADDR_VAR 0 4
117985: PUSH
117986: LD_VAR 0 2
117990: ST_TO_ADDR
117991: GO 118046
117993: LD_INT 2
117995: DOUBLE
117996: EQUAL
117997: IFTRUE 118001
117999: GO 118019
118001: POP
// temp = IsDrivenBy ( j ) ; unit_building :
118002: LD_ADDR_VAR 0 4
118006: PUSH
118007: LD_VAR 0 2
118011: PPUSH
118012: CALL_OW 311
118016: ST_TO_ADDR
118017: GO 118046
118019: LD_INT 3
118021: DOUBLE
118022: EQUAL
118023: IFTRUE 118027
118025: GO 118045
118027: POP
// temp = UnitsInside ( j ) ; end ;
118028: LD_ADDR_VAR 0 4
118032: PUSH
118033: LD_VAR 0 2
118037: PPUSH
118038: CALL_OW 313
118042: ST_TO_ADDR
118043: GO 118046
118045: POP
// if ArtUse_SPBomb_HumansContaminated > 0 then
118046: LD_EXP 219
118050: PUSH
118051: LD_INT 0
118053: GREATER
118054: IFFALSE 118109
// for k in ArtUse_SPBomb_HumansContaminated do
118056: LD_ADDR_VAR 0 3
118060: PUSH
118061: LD_EXP 219
118065: PUSH
118066: FOR_IN
118067: IFFALSE 118107
// if k [ 1 ] in temp then
118069: LD_VAR 0 3
118073: PUSH
118074: LD_INT 1
118076: ARRAY
118077: PUSH
118078: LD_VAR 0 4
118082: IN
118083: IFFALSE 118105
// temp = temp diff k [ 1 ] ;
118085: LD_ADDR_VAR 0 4
118089: PUSH
118090: LD_VAR 0 4
118094: PUSH
118095: LD_VAR 0 3
118099: PUSH
118100: LD_INT 1
118102: ARRAY
118103: DIFF
118104: ST_TO_ADDR
118105: GO 118066
118107: POP
118108: POP
// if temp > 0 then
118109: LD_VAR 0 4
118113: PUSH
118114: LD_INT 0
118116: GREATER
118117: IFFALSE 118178
// for k in temp do
118119: LD_ADDR_VAR 0 3
118123: PUSH
118124: LD_VAR 0 4
118128: PUSH
118129: FOR_IN
118130: IFFALSE 118176
// begin ArtUse_SPBomb_HumansContaminated = ArtUse_SPBomb_HumansContaminated ^ [ [ k , 600 ] ] ;
118132: LD_ADDR_EXP 219
118136: PUSH
118137: LD_EXP 219
118141: PUSH
118142: LD_VAR 0 3
118146: PUSH
118147: LD_INT 600
118149: PUSH
118150: EMPTY
118151: LIST
118152: LIST
118153: PUSH
118154: EMPTY
118155: LIST
118156: ADD
118157: ST_TO_ADDR
// DHighRadList = DHighRadList ^ k ;
118158: LD_ADDR_EXP 235
118162: PUSH
118163: LD_EXP 235
118167: PUSH
118168: LD_VAR 0 3
118172: ADD
118173: ST_TO_ADDR
// end ;
118174: GO 118129
118176: POP
118177: POP
// end ;
118178: GO 117952
118180: POP
118181: POP
// end ;
118182: GO 117695
118184: POP
118185: POP
// price = price * used ;
118186: LD_ADDR_VAR 0 10
118190: PUSH
118191: LD_VAR 0 10
118195: PUSH
118196: LD_VAR 0 11
118200: MUL
118201: ST_TO_ADDR
// if price > 0 then
118202: LD_VAR 0 10
118206: PUSH
118207: LD_INT 0
118209: GREATER
118210: IFFALSE 118315
// for i in cargos do
118212: LD_ADDR_VAR 0 1
118216: PUSH
118217: LD_VAR 0 8
118221: PUSH
118222: FOR_IN
118223: IFFALSE 118313
// begin temp = GetCargo ( i , mat_siberit ) ;
118225: LD_ADDR_VAR 0 4
118229: PUSH
118230: LD_VAR 0 1
118234: PPUSH
118235: LD_INT 3
118237: PPUSH
118238: CALL_OW 289
118242: ST_TO_ADDR
// if temp >= price then
118243: LD_VAR 0 4
118247: PUSH
118248: LD_VAR 0 10
118252: GREATEREQUAL
118253: IFFALSE 118277
// begin AddCargo ( i , mat_siberit , - price ) ;
118255: LD_VAR 0 1
118259: PPUSH
118260: LD_INT 3
118262: PPUSH
118263: LD_VAR 0 10
118267: NEG
118268: PPUSH
118269: CALL_OW 291
// break ;
118273: GO 118313
// end else
118275: GO 118311
// begin AddCargo ( i , mat_siberit , - temp ) ;
118277: LD_VAR 0 1
118281: PPUSH
118282: LD_INT 3
118284: PPUSH
118285: LD_VAR 0 4
118289: NEG
118290: PPUSH
118291: CALL_OW 291
// price = price - temp ;
118295: LD_ADDR_VAR 0 10
118299: PUSH
118300: LD_VAR 0 10
118304: PUSH
118305: LD_VAR 0 4
118309: MINUS
118310: ST_TO_ADDR
// end ; end ;
118311: GO 118222
118313: POP
118314: POP
// temp = 0 ;
118315: LD_ADDR_VAR 0 4
118319: PUSH
118320: LD_INT 0
118322: ST_TO_ADDR
// for i in FilterAllUnits ( [ ] ) diff target do
118323: LD_ADDR_VAR 0 1
118327: PUSH
118328: EMPTY
118329: PPUSH
118330: CALL_OW 69
118334: PUSH
118335: LD_VAR 0 12
118339: DIFF
118340: PUSH
118341: FOR_IN
118342: IFFALSE 118365
// if IsSelected ( i ) then
118344: LD_VAR 0 1
118348: PPUSH
118349: CALL_OW 306
118353: IFFALSE 118363
// temp = 1 ;
118355: LD_ADDR_VAR 0 4
118359: PUSH
118360: LD_INT 1
118362: ST_TO_ADDR
118363: GO 118341
118365: POP
118366: POP
// if temp = 1 then
118367: LD_VAR 0 4
118371: PUSH
118372: LD_INT 1
118374: EQUAL
118375: IFFALSE 118425
// begin ArtUse_SibPlant = 0 ;
118377: LD_ADDR_EXP 205
118381: PUSH
118382: LD_INT 0
118384: ST_TO_ADDR
// ArtUse_Beh = 0 ;
118385: LD_ADDR_EXP 207
118389: PUSH
118390: LD_INT 0
118392: ST_TO_ADDR
// ArtUse_Laser = 0 ;
118393: LD_ADDR_EXP 212
118397: PUSH
118398: LD_INT 0
118400: ST_TO_ADDR
// ArtUse_SuperStim = 0 ;
118401: LD_ADDR_EXP 214
118405: PUSH
118406: LD_INT 0
118408: ST_TO_ADDR
// ArtUse_SPBomb = 0 ;
118409: LD_ADDR_EXP 216
118413: PUSH
118414: LD_INT 0
118416: ST_TO_ADDR
// ArtUse_TimeLapse = 0 ;
118417: LD_ADDR_EXP 210
118421: PUSH
118422: LD_INT 0
118424: ST_TO_ADDR
// end ; enable ;
118425: ENABLE
// end ;
118426: PPOPN 12
118428: END
// every 0 0$1 trigger ArtUse_SibPlant_contaminated > 0 do var i , j , temp , temp_list , time , hexes ;
118429: LD_EXP 206
118433: PUSH
118434: LD_INT 0
118436: GREATER
118437: IFFALSE 118858
118439: GO 118441
118441: DISABLE
118442: LD_INT 0
118444: PPUSH
118445: PPUSH
118446: PPUSH
118447: PPUSH
118448: PPUSH
118449: PPUSH
// begin for i = 1 to ArtUse_SibPlant_contaminated do
118450: LD_ADDR_VAR 0 1
118454: PUSH
118455: DOUBLE
118456: LD_INT 1
118458: DEC
118459: ST_TO_ADDR
118460: LD_EXP 206
118464: PUSH
118465: FOR_TO
118466: IFFALSE 118855
// begin temp = ArtUse_SibPlant_contaminated [ i ] [ 1 ] ;
118468: LD_ADDR_VAR 0 3
118472: PUSH
118473: LD_EXP 206
118477: PUSH
118478: LD_VAR 0 1
118482: ARRAY
118483: PUSH
118484: LD_INT 1
118486: ARRAY
118487: ST_TO_ADDR
// time = ArtUse_SibPlant_contaminated [ i ] [ 2 ] ;
118488: LD_ADDR_VAR 0 5
118492: PUSH
118493: LD_EXP 206
118497: PUSH
118498: LD_VAR 0 1
118502: ARRAY
118503: PUSH
118504: LD_INT 2
118506: ARRAY
118507: ST_TO_ADDR
// hexes = [ [ Getx ( temp ) , GetY ( temp ) ] ] ;
118508: LD_ADDR_VAR 0 6
118512: PUSH
118513: LD_VAR 0 3
118517: PPUSH
118518: CALL_OW 250
118522: PUSH
118523: LD_VAR 0 3
118527: PPUSH
118528: CALL_OW 251
118532: PUSH
118533: EMPTY
118534: LIST
118535: LIST
118536: PUSH
118537: EMPTY
118538: LIST
118539: ST_TO_ADDR
// if ArtUse_SibPlant_contaminated [ i ] [ 3 ] = 0 then
118540: LD_EXP 206
118544: PUSH
118545: LD_VAR 0 1
118549: ARRAY
118550: PUSH
118551: LD_INT 3
118553: ARRAY
118554: PUSH
118555: LD_INT 0
118557: EQUAL
118558: IFFALSE 118675
// begin for j in hexes do
118560: LD_ADDR_VAR 0 2
118564: PUSH
118565: LD_VAR 0 6
118569: PUSH
118570: FOR_IN
118571: IFFALSE 118625
// begin CreateDepositXY ( j [ 1 ] , j [ 2 ] , mat_siberit ) ;
118573: LD_VAR 0 2
118577: PUSH
118578: LD_INT 1
118580: ARRAY
118581: PPUSH
118582: LD_VAR 0 2
118586: PUSH
118587: LD_INT 2
118589: ARRAY
118590: PPUSH
118591: LD_INT 3
118593: PPUSH
118594: CALL_OW 62
// contaminate ( 2 , j [ 1 ] , j [ 2 ] ) ;
118598: LD_INT 2
118600: PPUSH
118601: LD_VAR 0 2
118605: PUSH
118606: LD_INT 1
118608: ARRAY
118609: PPUSH
118610: LD_VAR 0 2
118614: PUSH
118615: LD_INT 2
118617: ARRAY
118618: PPUSH
118619: CALL_OW 489
// end ;
118623: GO 118570
118625: POP
118626: POP
// temp_list = [ temp , time , 1 ] ;
118627: LD_ADDR_VAR 0 4
118631: PUSH
118632: LD_VAR 0 3
118636: PUSH
118637: LD_VAR 0 5
118641: PUSH
118642: LD_INT 1
118644: PUSH
118645: EMPTY
118646: LIST
118647: LIST
118648: LIST
118649: ST_TO_ADDR
// ArtUse_SibPlant_contaminated = Replace ( ArtUse_SibPlant_contaminated , i , temp_list ) ;
118650: LD_ADDR_EXP 206
118654: PUSH
118655: LD_EXP 206
118659: PPUSH
118660: LD_VAR 0 1
118664: PPUSH
118665: LD_VAR 0 4
118669: PPUSH
118670: CALL_OW 1
118674: ST_TO_ADDR
// end ; if tick > time + 6100 then
118675: LD_OWVAR 1
118679: PUSH
118680: LD_VAR 0 5
118684: PUSH
118685: LD_INT 6100
118687: PLUS
118688: GREATER
118689: IFFALSE 118766
// begin for j in hexes do
118691: LD_ADDR_VAR 0 2
118695: PUSH
118696: LD_VAR 0 6
118700: PUSH
118701: FOR_IN
118702: IFFALSE 118728
// RemoveDepositXY ( j [ 1 ] , j [ 2 ] ) ;
118704: LD_VAR 0 2
118708: PUSH
118709: LD_INT 1
118711: ARRAY
118712: PPUSH
118713: LD_VAR 0 2
118717: PUSH
118718: LD_INT 2
118720: ARRAY
118721: PPUSH
118722: CALL_OW 63
118726: GO 118701
118728: POP
118729: POP
// SetLives ( temp , 0 ) ;
118730: LD_VAR 0 3
118734: PPUSH
118735: LD_INT 0
118737: PPUSH
118738: CALL_OW 234
// ArtUse_SibPlant_contaminated = Delete ( ArtUse_SibPlant_contaminated , i ) ;
118742: LD_ADDR_EXP 206
118746: PUSH
118747: LD_EXP 206
118751: PPUSH
118752: LD_VAR 0 1
118756: PPUSH
118757: CALL_OW 3
118761: ST_TO_ADDR
// break ;
118762: GO 118855
// end else
118764: GO 118853
// begin j = tick - time ;
118766: LD_ADDR_VAR 0 2
118770: PUSH
118771: LD_OWVAR 1
118775: PUSH
118776: LD_VAR 0 5
118780: MINUS
118781: ST_TO_ADDR
// j = 6100 - j ;
118782: LD_ADDR_VAR 0 2
118786: PUSH
118787: LD_INT 6100
118789: PUSH
118790: LD_VAR 0 2
118794: MINUS
118795: ST_TO_ADDR
// j = j / 6100 ;
118796: LD_ADDR_VAR 0 2
118800: PUSH
118801: LD_VAR 0 2
118805: PUSH
118806: LD_INT 6100
118808: DIVREAL
118809: ST_TO_ADDR
// if j > 0 and GetLives ( temp ) > 250 then
118810: LD_VAR 0 2
118814: PUSH
118815: LD_INT 0
118817: GREATER
118818: PUSH
118819: LD_VAR 0 3
118823: PPUSH
118824: CALL_OW 256
118828: PUSH
118829: LD_INT 250
118831: GREATER
118832: AND
118833: IFFALSE 118853
// SetLives ( temp , 1000 * j ) ;
118835: LD_VAR 0 3
118839: PPUSH
118840: LD_INT 1000
118842: PUSH
118843: LD_VAR 0 2
118847: MUL
118848: PPUSH
118849: CALL_OW 234
// end ; end ;
118853: GO 118465
118855: POP
118856: POP
// enable ;
118857: ENABLE
// end ;
118858: PPOPN 6
118860: END
// every 0 0$1 trigger ArtUse_Beh_count > 0 do var i , temp ;
118861: LD_EXP 209
118865: PUSH
118866: LD_INT 0
118868: GREATER
118869: IFFALSE 119097
118871: GO 118873
118873: DISABLE
118874: LD_INT 0
118876: PPUSH
118877: PPUSH
// begin for i = 1 to ArtUse_Beh_count do
118878: LD_ADDR_VAR 0 1
118882: PUSH
118883: DOUBLE
118884: LD_INT 1
118886: DEC
118887: ST_TO_ADDR
118888: LD_EXP 209
118892: PUSH
118893: FOR_TO
118894: IFFALSE 119094
// if tick >= ArtUse_Beh_count [ i ] [ 2 ] + 0 0$53 then
118896: LD_OWVAR 1
118900: PUSH
118901: LD_EXP 209
118905: PUSH
118906: LD_VAR 0 1
118910: ARRAY
118911: PUSH
118912: LD_INT 2
118914: ARRAY
118915: PUSH
118916: LD_INT 1855
118918: PLUS
118919: GREATEREQUAL
118920: IFFALSE 119092
// if ArtUse_Beh_count [ i ] [ 1 ] = 0 then
118922: LD_EXP 209
118926: PUSH
118927: LD_VAR 0 1
118931: ARRAY
118932: PUSH
118933: LD_INT 1
118935: ARRAY
118936: PUSH
118937: LD_INT 0
118939: EQUAL
118940: IFFALSE 119070
// begin ArtContamination ( ArtUse_Beh_count [ i ] [ 3 ] , ArtUse_Beh_count [ i ] [ 4 ] , 30 ) ;
118942: LD_EXP 209
118946: PUSH
118947: LD_VAR 0 1
118951: ARRAY
118952: PUSH
118953: LD_INT 3
118955: ARRAY
118956: PPUSH
118957: LD_EXP 209
118961: PUSH
118962: LD_VAR 0 1
118966: ARRAY
118967: PUSH
118968: LD_INT 4
118970: ARRAY
118971: PPUSH
118972: LD_INT 30
118974: PPUSH
118975: CALL_OW 495
// temp = ArtUse_Beh_count [ i ] ;
118979: LD_ADDR_VAR 0 2
118983: PUSH
118984: LD_EXP 209
118988: PUSH
118989: LD_VAR 0 1
118993: ARRAY
118994: ST_TO_ADDR
// temp = Replace ( temp , 1 , 1 ) ;
118995: LD_ADDR_VAR 0 2
118999: PUSH
119000: LD_VAR 0 2
119004: PPUSH
119005: LD_INT 1
119007: PPUSH
119008: LD_INT 1
119010: PPUSH
119011: CALL_OW 1
119015: ST_TO_ADDR
// temp = Replace ( temp , 2 , tick + 0 0$53 ) ;
119016: LD_ADDR_VAR 0 2
119020: PUSH
119021: LD_VAR 0 2
119025: PPUSH
119026: LD_INT 2
119028: PPUSH
119029: LD_OWVAR 1
119033: PUSH
119034: LD_INT 1855
119036: PLUS
119037: PPUSH
119038: CALL_OW 1
119042: ST_TO_ADDR
// ArtUse_Beh_count = Replace ( ArtUse_Beh_count , i , temp ) ;
119043: LD_ADDR_EXP 209
119047: PUSH
119048: LD_EXP 209
119052: PPUSH
119053: LD_VAR 0 1
119057: PPUSH
119058: LD_VAR 0 2
119062: PPUSH
119063: CALL_OW 1
119067: ST_TO_ADDR
// end else
119068: GO 119092
// begin ArtUse_Beh_count = Delete ( ArtUse_Beh_count , i ) ;
119070: LD_ADDR_EXP 209
119074: PUSH
119075: LD_EXP 209
119079: PPUSH
119080: LD_VAR 0 1
119084: PPUSH
119085: CALL_OW 3
119089: ST_TO_ADDR
// break ;
119090: GO 119094
// end ;
119092: GO 118893
119094: POP
119095: POP
// enable ;
119096: ENABLE
// end ;
119097: PPOPN 2
119099: END
// every 0 0$1 trigger ArtUse_Laser_Hacked > 0 do var i , j , temp , temp_list , time , hex ;
119100: LD_EXP 213
119104: PUSH
119105: LD_INT 0
119107: GREATER
119108: IFFALSE 119393
119110: GO 119112
119112: DISABLE
119113: LD_INT 0
119115: PPUSH
119116: PPUSH
119117: PPUSH
119118: PPUSH
119119: PPUSH
119120: PPUSH
// begin for i = 1 to ArtUse_Laser_Hacked do
119121: LD_ADDR_VAR 0 1
119125: PUSH
119126: DOUBLE
119127: LD_INT 1
119129: DEC
119130: ST_TO_ADDR
119131: LD_EXP 213
119135: PUSH
119136: FOR_TO
119137: IFFALSE 119390
// begin temp = ArtUse_Laser_Hacked [ i ] [ 1 ] ;
119139: LD_ADDR_VAR 0 3
119143: PUSH
119144: LD_EXP 213
119148: PUSH
119149: LD_VAR 0 1
119153: ARRAY
119154: PUSH
119155: LD_INT 1
119157: ARRAY
119158: ST_TO_ADDR
// time = ArtUse_Laser_Hacked [ i ] [ 2 ] ;
119159: LD_ADDR_VAR 0 5
119163: PUSH
119164: LD_EXP 213
119168: PUSH
119169: LD_VAR 0 1
119173: ARRAY
119174: PUSH
119175: LD_INT 2
119177: ARRAY
119178: ST_TO_ADDR
// if IsDead ( temp ) then
119179: LD_VAR 0 3
119183: PPUSH
119184: CALL_OW 301
119188: IFFALSE 119212
// begin ArtUse_Laser_Hacked = Delete ( ArtUse_Laser_Hacked , i ) ;
119190: LD_ADDR_EXP 213
119194: PUSH
119195: LD_EXP 213
119199: PPUSH
119200: LD_VAR 0 1
119204: PPUSH
119205: CALL_OW 3
119209: ST_TO_ADDR
// break ;
119210: GO 119390
// end ; if not GetSide ( temp ) = 4 then
119212: LD_VAR 0 3
119216: PPUSH
119217: CALL_OW 255
119221: PUSH
119222: LD_INT 4
119224: EQUAL
119225: NOT
119226: IFFALSE 119309
// begin SetSide ( temp , 4 ) ;
119228: LD_VAR 0 3
119232: PPUSH
119233: LD_INT 4
119235: PPUSH
119236: CALL_OW 235
// DoNotAttack ( 1 , temp ) ;
119240: LD_INT 1
119242: PPUSH
119243: LD_VAR 0 3
119247: PPUSH
119248: CALL_OW 471
// for i in FilterAllUnits ( [ f_or , [ f_side , 1 ] , [ f_side , 7 ] ] ) do
119252: LD_ADDR_VAR 0 1
119256: PUSH
119257: LD_INT 2
119259: PUSH
119260: LD_INT 22
119262: PUSH
119263: LD_INT 1
119265: PUSH
119266: EMPTY
119267: LIST
119268: LIST
119269: PUSH
119270: LD_INT 22
119272: PUSH
119273: LD_INT 7
119275: PUSH
119276: EMPTY
119277: LIST
119278: LIST
119279: PUSH
119280: EMPTY
119281: LIST
119282: LIST
119283: LIST
119284: PPUSH
119285: CALL_OW 69
119289: PUSH
119290: FOR_IN
119291: IFFALSE 119307
// DoNotAttack ( 4 , i ) ;
119293: LD_INT 4
119295: PPUSH
119296: LD_VAR 0 1
119300: PPUSH
119301: CALL_OW 471
119305: GO 119290
119307: POP
119308: POP
// end ; if tick > time + [ 1 1$30 , 1 1$10 , 0 0$50 ] [ difficulty ] then
119309: LD_OWVAR 1
119313: PUSH
119314: LD_VAR 0 5
119318: PUSH
119319: LD_INT 3150
119321: PUSH
119322: LD_INT 2450
119324: PUSH
119325: LD_INT 1750
119327: PUSH
119328: EMPTY
119329: LIST
119330: LIST
119331: LIST
119332: PUSH
119333: LD_OWVAR 67
119337: ARRAY
119338: PLUS
119339: GREATER
119340: IFFALSE 119388
// begin SetSide ( temp , 1 ) ;
119342: LD_VAR 0 3
119346: PPUSH
119347: LD_INT 1
119349: PPUSH
119350: CALL_OW 235
// DoNotAttack ( 4 , temp ) ;
119354: LD_INT 4
119356: PPUSH
119357: LD_VAR 0 3
119361: PPUSH
119362: CALL_OW 471
// ArtUse_Laser_Hacked = Delete ( ArtUse_Laser_Hacked , i ) ;
119366: LD_ADDR_EXP 213
119370: PUSH
119371: LD_EXP 213
119375: PPUSH
119376: LD_VAR 0 1
119380: PPUSH
119381: CALL_OW 3
119385: ST_TO_ADDR
// break ;
119386: GO 119390
// end ; end ;
119388: GO 119136
119390: POP
119391: POP
// enable ;
119392: ENABLE
// end ;
119393: PPOPN 6
119395: END
// every 0 0$1 trigger ArtUse_SuperStim_units > 0 do var i , temp , un , lvs ;
119396: LD_EXP 215
119400: PUSH
119401: LD_INT 0
119403: GREATER
119404: IFFALSE 119575
119406: GO 119408
119408: DISABLE
119409: LD_INT 0
119411: PPUSH
119412: PPUSH
119413: PPUSH
119414: PPUSH
// begin for i = 1 to ArtUse_SuperStim_units do
119415: LD_ADDR_VAR 0 1
119419: PUSH
119420: DOUBLE
119421: LD_INT 1
119423: DEC
119424: ST_TO_ADDR
119425: LD_EXP 215
119429: PUSH
119430: FOR_TO
119431: IFFALSE 119572
// begin un = ArtUse_SuperStim_units [ i ] [ 1 ] ;
119433: LD_ADDR_VAR 0 3
119437: PUSH
119438: LD_EXP 215
119442: PUSH
119443: LD_VAR 0 1
119447: ARRAY
119448: PUSH
119449: LD_INT 1
119451: ARRAY
119452: ST_TO_ADDR
// lvs = ArtUse_SuperStim_units [ i ] [ 2 ] - 5 ;
119453: LD_ADDR_VAR 0 4
119457: PUSH
119458: LD_EXP 215
119462: PUSH
119463: LD_VAR 0 1
119467: ARRAY
119468: PUSH
119469: LD_INT 2
119471: ARRAY
119472: PUSH
119473: LD_INT 5
119475: MINUS
119476: ST_TO_ADDR
// temp = [ un , lvs ] ;
119477: LD_ADDR_VAR 0 2
119481: PUSH
119482: LD_VAR 0 3
119486: PUSH
119487: LD_VAR 0 4
119491: PUSH
119492: EMPTY
119493: LIST
119494: LIST
119495: ST_TO_ADDR
// ArtUse_SuperStim_units = Replace ( ArtUse_SuperStim_units , i , temp ) ;
119496: LD_ADDR_EXP 215
119500: PUSH
119501: LD_EXP 215
119505: PPUSH
119506: LD_VAR 0 1
119510: PPUSH
119511: LD_VAR 0 2
119515: PPUSH
119516: CALL_OW 1
119520: ST_TO_ADDR
// if lvs < 0 then
119521: LD_VAR 0 4
119525: PUSH
119526: LD_INT 0
119528: LESS
119529: IFFALSE 119539
// lvs = 0 ;
119531: LD_ADDR_VAR 0 4
119535: PUSH
119536: LD_INT 0
119538: ST_TO_ADDR
// if GetLives ( un ) > lvs then
119539: LD_VAR 0 3
119543: PPUSH
119544: CALL_OW 256
119548: PUSH
119549: LD_VAR 0 4
119553: GREATER
119554: IFFALSE 119570
// SetLives ( un , lvs ) ;
119556: LD_VAR 0 3
119560: PPUSH
119561: LD_VAR 0 4
119565: PPUSH
119566: CALL_OW 234
// end ;
119570: GO 119430
119572: POP
119573: POP
// enable ;
119574: ENABLE
// end ;
119575: PPOPN 4
119577: END
// every 0 0$1 trigger ArtUse_SPBomb_HumansContaminated > 0 do var i , temp , un , lvs ;
119578: LD_EXP 219
119582: PUSH
119583: LD_INT 0
119585: GREATER
119586: IFFALSE 119837
119588: GO 119590
119590: DISABLE
119591: LD_INT 0
119593: PPUSH
119594: PPUSH
119595: PPUSH
119596: PPUSH
// begin for i = 1 to ArtUse_SPBomb_HumansContaminated do
119597: LD_ADDR_VAR 0 1
119601: PUSH
119602: DOUBLE
119603: LD_INT 1
119605: DEC
119606: ST_TO_ADDR
119607: LD_EXP 219
119611: PUSH
119612: FOR_TO
119613: IFFALSE 119661
// if IsDead ( ArtUse_SPBomb_HumansContaminated [ i ] [ 1 ] ) then
119615: LD_EXP 219
119619: PUSH
119620: LD_VAR 0 1
119624: ARRAY
119625: PUSH
119626: LD_INT 1
119628: ARRAY
119629: PPUSH
119630: CALL_OW 301
119634: IFFALSE 119659
// ArtUse_SPBomb_HumansContaminated = Replace ( ArtUse_SPBomb_HumansContaminated , i , 0 ) ;
119636: LD_ADDR_EXP 219
119640: PUSH
119641: LD_EXP 219
119645: PPUSH
119646: LD_VAR 0 1
119650: PPUSH
119651: LD_INT 0
119653: PPUSH
119654: CALL_OW 1
119658: ST_TO_ADDR
119659: GO 119612
119661: POP
119662: POP
// ArtUse_SPBomb_HumansContaminated = ArtUse_SPBomb_HumansContaminated diff 0 ;
119663: LD_ADDR_EXP 219
119667: PUSH
119668: LD_EXP 219
119672: PUSH
119673: LD_INT 0
119675: DIFF
119676: ST_TO_ADDR
// for i = 1 to ArtUse_SPBomb_HumansContaminated do
119677: LD_ADDR_VAR 0 1
119681: PUSH
119682: DOUBLE
119683: LD_INT 1
119685: DEC
119686: ST_TO_ADDR
119687: LD_EXP 219
119691: PUSH
119692: FOR_TO
119693: IFFALSE 119834
// begin un = ArtUse_SPBomb_HumansContaminated [ i ] [ 1 ] ;
119695: LD_ADDR_VAR 0 3
119699: PUSH
119700: LD_EXP 219
119704: PUSH
119705: LD_VAR 0 1
119709: ARRAY
119710: PUSH
119711: LD_INT 1
119713: ARRAY
119714: ST_TO_ADDR
// lvs = ArtUse_SPBomb_HumansContaminated [ i ] [ 2 ] - 15 ;
119715: LD_ADDR_VAR 0 4
119719: PUSH
119720: LD_EXP 219
119724: PUSH
119725: LD_VAR 0 1
119729: ARRAY
119730: PUSH
119731: LD_INT 2
119733: ARRAY
119734: PUSH
119735: LD_INT 15
119737: MINUS
119738: ST_TO_ADDR
// temp = [ un , lvs ] ;
119739: LD_ADDR_VAR 0 2
119743: PUSH
119744: LD_VAR 0 3
119748: PUSH
119749: LD_VAR 0 4
119753: PUSH
119754: EMPTY
119755: LIST
119756: LIST
119757: ST_TO_ADDR
// ArtUse_SPBomb_HumansContaminated = Replace ( ArtUse_SPBomb_HumansContaminated , i , temp ) ;
119758: LD_ADDR_EXP 219
119762: PUSH
119763: LD_EXP 219
119767: PPUSH
119768: LD_VAR 0 1
119772: PPUSH
119773: LD_VAR 0 2
119777: PPUSH
119778: CALL_OW 1
119782: ST_TO_ADDR
// if lvs < 0 then
119783: LD_VAR 0 4
119787: PUSH
119788: LD_INT 0
119790: LESS
119791: IFFALSE 119801
// lvs = 0 ;
119793: LD_ADDR_VAR 0 4
119797: PUSH
119798: LD_INT 0
119800: ST_TO_ADDR
// if GetLives ( un ) > lvs then
119801: LD_VAR 0 3
119805: PPUSH
119806: CALL_OW 256
119810: PUSH
119811: LD_VAR 0 4
119815: GREATER
119816: IFFALSE 119832
// SetLives ( un , lvs ) ;
119818: LD_VAR 0 3
119822: PPUSH
119823: LD_VAR 0 4
119827: PPUSH
119828: CALL_OW 234
// end ;
119832: GO 119692
119834: POP
119835: POP
// enable ;
119836: ENABLE
// end ;
119837: PPOPN 4
119839: END
// every 0 0$1 trigger ArtUse_TimeLapse_time > 0 do var i , temp ;
119840: LD_EXP 211
119844: PUSH
119845: LD_INT 0
119847: GREATER
119848: IFFALSE 119908
119850: GO 119852
119852: DISABLE
119853: LD_INT 0
119855: PPUSH
119856: PPUSH
// begin SetTech ( 31 , 2 , state_researched ) ;
119857: LD_INT 31
119859: PPUSH
119860: LD_INT 2
119862: PPUSH
119863: LD_INT 2
119865: PPUSH
119866: CALL_OW 322
// if ArtUse_TimeLapse_time = 0 0$1 then
119870: LD_EXP 211
119874: PUSH
119875: LD_INT 35
119877: EQUAL
119878: IFFALSE 119893
// SetTech ( 31 , 2 , state_enabled ) ;
119880: LD_INT 31
119882: PPUSH
119883: LD_INT 2
119885: PPUSH
119886: LD_INT 1
119888: PPUSH
119889: CALL_OW 322
// ArtUse_TimeLapse_time = ArtUse_TimeLapse_time - 0 0$1 ;
119893: LD_ADDR_EXP 211
119897: PUSH
119898: LD_EXP 211
119902: PUSH
119903: LD_INT 35
119905: MINUS
119906: ST_TO_ADDR
// enable ;
119907: ENABLE
// end ;
119908: PPOPN 2
119910: END
// every 0 0$1 trigger ai_units_irradiated > 0 do var i , temp ;
119911: LD_EXP 158
119915: PUSH
119916: LD_INT 0
119918: GREATER
119919: IFFALSE 120063
119921: GO 119923
119923: DISABLE
119924: LD_INT 0
119926: PPUSH
119927: PPUSH
// begin temp = [ ] ;
119928: LD_ADDR_VAR 0 2
119932: PUSH
119933: EMPTY
119934: ST_TO_ADDR
// for i in ai_units_irradiated_time do
119935: LD_ADDR_VAR 0 1
119939: PUSH
119940: LD_EXP 159
119944: PUSH
119945: FOR_IN
119946: IFFALSE 119970
// temp = temp ^ i - 0 0$1 ;
119948: LD_ADDR_VAR 0 2
119952: PUSH
119953: LD_VAR 0 2
119957: PUSH
119958: LD_VAR 0 1
119962: PUSH
119963: LD_INT 35
119965: MINUS
119966: ADD
119967: ST_TO_ADDR
119968: GO 119945
119970: POP
119971: POP
// ai_units_irradiated_time = temp ;
119972: LD_ADDR_EXP 159
119976: PUSH
119977: LD_VAR 0 2
119981: ST_TO_ADDR
// for i = 1 to ai_units_irradiated_time do
119982: LD_ADDR_VAR 0 1
119986: PUSH
119987: DOUBLE
119988: LD_INT 1
119990: DEC
119991: ST_TO_ADDR
119992: LD_EXP 159
119996: PUSH
119997: FOR_TO
119998: IFFALSE 120060
// if ai_units_irradiated_time [ i ] <= 0 then
120000: LD_EXP 159
120004: PUSH
120005: LD_VAR 0 1
120009: ARRAY
120010: PUSH
120011: LD_INT 0
120013: LESSEQUAL
120014: IFFALSE 120058
// begin ai_units_irradiated = Delete ( ai_units_irradiated , i ) ;
120016: LD_ADDR_EXP 158
120020: PUSH
120021: LD_EXP 158
120025: PPUSH
120026: LD_VAR 0 1
120030: PPUSH
120031: CALL_OW 3
120035: ST_TO_ADDR
// ai_units_irradiated_time = Delete ( ai_units_irradiated_time , i ) ;
120036: LD_ADDR_EXP 159
120040: PUSH
120041: LD_EXP 159
120045: PPUSH
120046: LD_VAR 0 1
120050: PPUSH
120051: CALL_OW 3
120055: ST_TO_ADDR
// break ;
120056: GO 120060
// end ;
120058: GO 119997
120060: POP
120061: POP
// enable ;
120062: ENABLE
// end ; end_of_file
120063: PPOPN 2
120065: END
// export function Action ; var i , temp ; begin
120066: LD_INT 0
120068: PPUSH
120069: PPUSH
120070: PPUSH
// Randomize ;
120071: CALL_OW 10
// CenterOnXY ( 88 , 2 ) ;
120075: LD_INT 88
120077: PPUSH
120078: LD_INT 2
120080: PPUSH
120081: CALL_OW 84
// InGameOn ;
120085: CALL_OW 8
// if GetSide ( Omar ) = 5 then
120089: LD_EXP 23
120093: PPUSH
120094: CALL_OW 255
120098: PUSH
120099: LD_INT 5
120101: EQUAL
120102: IFFALSE 120405
// begin SetTech ( tech_bio1 , 5 , state_researched ) ;
120104: LD_INT 66
120106: PPUSH
120107: LD_INT 5
120109: PPUSH
120110: LD_INT 2
120112: PPUSH
120113: CALL_OW 322
// PlaceUnitXY ( Omar , 289 , 249 , false ) ;
120117: LD_EXP 23
120121: PPUSH
120122: LD_INT 289
120124: PPUSH
120125: LD_INT 249
120127: PPUSH
120128: LD_INT 0
120130: PPUSH
120131: CALL_OW 48
// repeat ComTameXY ( Omar , 290 , 250 ) ;
120135: LD_EXP 23
120139: PPUSH
120140: LD_INT 290
120142: PPUSH
120143: LD_INT 250
120145: PPUSH
120146: CALL_OW 131
// for i in OmarTigers do
120150: LD_ADDR_VAR 0 2
120154: PUSH
120155: LD_EXP 30
120159: PUSH
120160: FOR_IN
120161: IFFALSE 120201
// if GetDistUnitXY ( i , 299 , 259 ) > 12 then
120163: LD_VAR 0 2
120167: PPUSH
120168: LD_INT 299
120170: PPUSH
120171: LD_INT 259
120173: PPUSH
120174: CALL_OW 297
120178: PUSH
120179: LD_INT 12
120181: GREATER
120182: IFFALSE 120199
// ComMoveXY ( i , 299 , 259 ) ;
120184: LD_VAR 0 2
120188: PPUSH
120189: LD_INT 299
120191: PPUSH
120192: LD_INT 259
120194: PPUSH
120195: CALL_OW 111
120199: GO 120160
120201: POP
120202: POP
// temp = 0 ;
120203: LD_ADDR_VAR 0 3
120207: PUSH
120208: LD_INT 0
120210: ST_TO_ADDR
// for i in OmarTigers do
120211: LD_ADDR_VAR 0 2
120215: PUSH
120216: LD_EXP 30
120220: PUSH
120221: FOR_IN
120222: IFFALSE 120257
// if not IsTamedBy ( i ) and IsOk ( i ) then
120224: LD_VAR 0 2
120228: PPUSH
120229: CALL_OW 317
120233: NOT
120234: PUSH
120235: LD_VAR 0 2
120239: PPUSH
120240: CALL_OW 302
120244: AND
120245: IFFALSE 120255
// temp = 1 ;
120247: LD_ADDR_VAR 0 3
120251: PUSH
120252: LD_INT 1
120254: ST_TO_ADDR
120255: GO 120221
120257: POP
120258: POP
// if temp = 0 then
120259: LD_VAR 0 3
120263: PUSH
120264: LD_INT 0
120266: EQUAL
120267: IFFALSE 120383
// begin RemoveUnit ( Omar ) ;
120269: LD_EXP 23
120273: PPUSH
120274: CALL_OW 64
// SetSide ( Omar , 2 ) ;
120278: LD_EXP 23
120282: PPUSH
120283: LD_INT 2
120285: PPUSH
120286: CALL_OW 235
// ComStop ( OmarTigers ) ;
120290: LD_EXP 30
120294: PPUSH
120295: CALL_OW 141
// for i in OmarTigers do
120299: LD_ADDR_VAR 0 2
120303: PUSH
120304: LD_EXP 30
120308: PUSH
120309: FOR_IN
120310: IFFALSE 120323
// RemoveUnit ( i ) ;
120312: LD_VAR 0 2
120316: PPUSH
120317: CALL_OW 64
120321: GO 120309
120323: POP
120324: POP
// if OmarVeh > 0 then
120325: LD_EXP 29
120329: PUSH
120330: LD_INT 0
120332: GREATER
120333: IFFALSE 120367
// begin PlaceHumanInUnit ( Omar , OmarVeh ) ;
120335: LD_EXP 23
120339: PPUSH
120340: LD_EXP 29
120344: PPUSH
120345: CALL_OW 52
// PlayerTeam = PlayerTeam ^ OmarVeh ;
120349: LD_ADDR_EXP 26
120353: PUSH
120354: LD_EXP 26
120358: PUSH
120359: LD_EXP 29
120363: ADD
120364: ST_TO_ADDR
// end else
120365: GO 120383
// PlayerTeam = PlayerTeam ^ Omar ;
120367: LD_ADDR_EXP 26
120371: PUSH
120372: LD_EXP 26
120376: PUSH
120377: LD_EXP 23
120381: ADD
120382: ST_TO_ADDR
// end ; wait ( 0 0$0.5 ) ;
120383: LD_INT 18
120385: PPUSH
120386: CALL_OW 67
// until GetSide ( Omar ) = 2 ;
120390: LD_EXP 23
120394: PPUSH
120395: CALL_OW 255
120399: PUSH
120400: LD_INT 2
120402: EQUAL
120403: IFFALSE 120135
// end ; for i in PlayerTeam do
120405: LD_ADDR_VAR 0 2
120409: PUSH
120410: LD_EXP 26
120414: PUSH
120415: FOR_IN
120416: IFFALSE 120650
// begin SetDir ( i , [ 2 , 3 ] [ rand ( 1 , 2 ) ] ) ;
120418: LD_VAR 0 2
120422: PPUSH
120423: LD_INT 2
120425: PUSH
120426: LD_INT 3
120428: PUSH
120429: EMPTY
120430: LIST
120431: LIST
120432: PUSH
120433: LD_INT 1
120435: PPUSH
120436: LD_INT 2
120438: PPUSH
120439: CALL_OW 12
120443: ARRAY
120444: PPUSH
120445: CALL_OW 233
// repeat PlaceUnitArea ( i , PlayerStartArea , false ) ;
120449: LD_VAR 0 2
120453: PPUSH
120454: LD_INT 11
120456: PPUSH
120457: LD_INT 0
120459: PPUSH
120460: CALL_OW 49
// if IsPlaced ( i ) then
120464: LD_VAR 0 2
120468: PPUSH
120469: CALL_OW 305
120473: IFFALSE 120477
// break ;
120475: GO 120494
// wait ( 0 0$0.3 ) ;
120477: LD_INT 10
120479: PPUSH
120480: CALL_OW 67
// until PlayerTeam = 0 ;
120484: LD_EXP 26
120488: PUSH
120489: LD_INT 0
120491: EQUAL
120492: IFFALSE 120449
// if GetControl ( i ) = control_remote then
120494: LD_VAR 0 2
120498: PPUSH
120499: CALL_OW 263
120503: PUSH
120504: LD_INT 2
120506: EQUAL
120507: IFFALSE 120537
// LinkVehicleToHuman ( i , Control_drivers [ rand ( 1 , Control_drivers ) ] ) ;
120509: LD_VAR 0 2
120513: PPUSH
120514: LD_EXP 27
120518: PUSH
120519: LD_INT 1
120521: PPUSH
120522: LD_EXP 27
120526: PPUSH
120527: CALL_OW 12
120531: ARRAY
120532: PPUSH
120533: CALL_OW 53
// ComMoveXY ( i , GetX ( i ) + 2 , GetY ( i ) + 4 ) ;
120537: LD_VAR 0 2
120541: PPUSH
120542: LD_VAR 0 2
120546: PPUSH
120547: CALL_OW 250
120551: PUSH
120552: LD_INT 2
120554: PLUS
120555: PPUSH
120556: LD_VAR 0 2
120560: PPUSH
120561: CALL_OW 251
120565: PUSH
120566: LD_INT 4
120568: PLUS
120569: PPUSH
120570: CALL_OW 111
// AddComMoveXY ( i , GetX ( i ) + 4 , GetY ( i ) + 8 ) ;
120574: LD_VAR 0 2
120578: PPUSH
120579: LD_VAR 0 2
120583: PPUSH
120584: CALL_OW 250
120588: PUSH
120589: LD_INT 4
120591: PLUS
120592: PPUSH
120593: LD_VAR 0 2
120597: PPUSH
120598: CALL_OW 251
120602: PUSH
120603: LD_INT 8
120605: PLUS
120606: PPUSH
120607: CALL_OW 171
// AddComMoveXY ( i , GetX ( i ) + 6 , GetY ( i ) + 12 ) ;
120611: LD_VAR 0 2
120615: PPUSH
120616: LD_VAR 0 2
120620: PPUSH
120621: CALL_OW 250
120625: PUSH
120626: LD_INT 6
120628: PLUS
120629: PPUSH
120630: LD_VAR 0 2
120634: PPUSH
120635: CALL_OW 251
120639: PUSH
120640: LD_INT 12
120642: PLUS
120643: PPUSH
120644: CALL_OW 171
// end ;
120648: GO 120415
120650: POP
120651: POP
// if OmarTigers > 0 then
120652: LD_EXP 30
120656: PUSH
120657: LD_INT 0
120659: GREATER
120660: IFFALSE 120694
// for i in OmarTigers do
120662: LD_ADDR_VAR 0 2
120666: PUSH
120667: LD_EXP 30
120671: PUSH
120672: FOR_IN
120673: IFFALSE 120692
// PlaceUnitArea ( i , PlayerStartArea , false ) ;
120675: LD_VAR 0 2
120679: PPUSH
120680: LD_INT 11
120682: PPUSH
120683: LD_INT 0
120685: PPUSH
120686: CALL_OW 49
120690: GO 120672
120692: POP
120693: POP
// Say ( Heike , In_Heike ) ;
120694: LD_EXP 10
120698: PPUSH
120699: LD_STRING In_Heike
120701: PPUSH
120702: CALL_OW 88
// case Lead of Gensher :
120706: LD_EXP 32
120710: PUSH
120711: LD_EXP 24
120715: DOUBLE
120716: EQUAL
120717: IFTRUE 120721
120719: GO 120736
120721: POP
// SayRadio ( Gensher , In_Gensher_1 ) ; Oswald :
120722: LD_EXP 24
120726: PPUSH
120727: LD_STRING In_Gensher_1
120729: PPUSH
120730: CALL_OW 94
120734: GO 120862
120736: LD_EXP 13
120740: DOUBLE
120741: EQUAL
120742: IFTRUE 120746
120744: GO 120761
120746: POP
// SayRadio ( Oswald , In_Oswald_1 ) ; Swansson :
120747: LD_EXP 13
120751: PPUSH
120752: LD_STRING In_Oswald_1
120754: PPUSH
120755: CALL_OW 94
120759: GO 120862
120761: LD_EXP 17
120765: DOUBLE
120766: EQUAL
120767: IFTRUE 120771
120769: GO 120786
120771: POP
// SayRadio ( Swansson , In_Swansson_1 ) ; Dwayne :
120772: LD_EXP 17
120776: PPUSH
120777: LD_STRING In_Swansson_1
120779: PPUSH
120780: CALL_OW 94
120784: GO 120862
120786: LD_EXP 18
120790: DOUBLE
120791: EQUAL
120792: IFTRUE 120796
120794: GO 120811
120796: POP
// SayRadio ( Dwayne , In_Dwayne_1 ) ; Ralph :
120797: LD_EXP 18
120801: PPUSH
120802: LD_STRING In_Dwayne_1
120804: PPUSH
120805: CALL_OW 94
120809: GO 120862
120811: LD_EXP 14
120815: DOUBLE
120816: EQUAL
120817: IFTRUE 120821
120819: GO 120836
120821: POP
// SayRadio ( Ralph , In_Ralph_1 ) ; Kowalski :
120822: LD_EXP 14
120826: PPUSH
120827: LD_STRING In_Ralph_1
120829: PPUSH
120830: CALL_OW 94
120834: GO 120862
120836: LD_EXP 15
120840: DOUBLE
120841: EQUAL
120842: IFTRUE 120846
120844: GO 120861
120846: POP
// SayRadio ( Kowalski , In_Kowalski_1 ) ; end ;
120847: LD_EXP 15
120851: PPUSH
120852: LD_STRING In_Kowalski_1
120854: PPUSH
120855: CALL_OW 94
120859: GO 120862
120861: POP
// case Lead of Gensher :
120862: LD_EXP 32
120866: PUSH
120867: LD_EXP 24
120871: DOUBLE
120872: EQUAL
120873: IFTRUE 120877
120875: GO 120892
120877: POP
// SayRadio ( Gensher , In_Gensher_2 ) ; Oswald :
120878: LD_EXP 24
120882: PPUSH
120883: LD_STRING In_Gensher_2
120885: PPUSH
120886: CALL_OW 94
120890: GO 121018
120892: LD_EXP 13
120896: DOUBLE
120897: EQUAL
120898: IFTRUE 120902
120900: GO 120917
120902: POP
// SayRadio ( Oswald , In_Oswald_2 ) ; Swansson :
120903: LD_EXP 13
120907: PPUSH
120908: LD_STRING In_Oswald_2
120910: PPUSH
120911: CALL_OW 94
120915: GO 121018
120917: LD_EXP 17
120921: DOUBLE
120922: EQUAL
120923: IFTRUE 120927
120925: GO 120942
120927: POP
// SayRadio ( Swansson , In_Swansson_2 ) ; Dwayne :
120928: LD_EXP 17
120932: PPUSH
120933: LD_STRING In_Swansson_2
120935: PPUSH
120936: CALL_OW 94
120940: GO 121018
120942: LD_EXP 18
120946: DOUBLE
120947: EQUAL
120948: IFTRUE 120952
120950: GO 120967
120952: POP
// SayRadio ( Dwayne , In_Dwayne_2 ) ; Ralph :
120953: LD_EXP 18
120957: PPUSH
120958: LD_STRING In_Dwayne_2
120960: PPUSH
120961: CALL_OW 94
120965: GO 121018
120967: LD_EXP 14
120971: DOUBLE
120972: EQUAL
120973: IFTRUE 120977
120975: GO 120992
120977: POP
// SayRadio ( Ralph , In_Ralph_2 ) ; Kowalski :
120978: LD_EXP 14
120982: PPUSH
120983: LD_STRING In_Ralph_2
120985: PPUSH
120986: CALL_OW 94
120990: GO 121018
120992: LD_EXP 15
120996: DOUBLE
120997: EQUAL
120998: IFTRUE 121002
121000: GO 121017
121002: POP
// SayRadio ( Kowalski , In_Kowalski_2 ) ; end ;
121003: LD_EXP 15
121007: PPUSH
121008: LD_STRING In_Kowalski_2
121010: PPUSH
121011: CALL_OW 94
121015: GO 121018
121017: POP
// case Lead of Gensher :
121018: LD_EXP 32
121022: PUSH
121023: LD_EXP 24
121027: DOUBLE
121028: EQUAL
121029: IFTRUE 121033
121031: GO 121048
121033: POP
// SayRadio ( Gensher , In_Gensher_3 ) ; Oswald :
121034: LD_EXP 24
121038: PPUSH
121039: LD_STRING In_Gensher_3
121041: PPUSH
121042: CALL_OW 94
121046: GO 121174
121048: LD_EXP 13
121052: DOUBLE
121053: EQUAL
121054: IFTRUE 121058
121056: GO 121073
121058: POP
// SayRadio ( Oswald , In_Oswald_3 ) ; Swansson :
121059: LD_EXP 13
121063: PPUSH
121064: LD_STRING In_Oswald_3
121066: PPUSH
121067: CALL_OW 94
121071: GO 121174
121073: LD_EXP 17
121077: DOUBLE
121078: EQUAL
121079: IFTRUE 121083
121081: GO 121098
121083: POP
// SayRadio ( Swansson , In_Swansson_3 ) ; Dwayne :
121084: LD_EXP 17
121088: PPUSH
121089: LD_STRING In_Swansson_3
121091: PPUSH
121092: CALL_OW 94
121096: GO 121174
121098: LD_EXP 18
121102: DOUBLE
121103: EQUAL
121104: IFTRUE 121108
121106: GO 121123
121108: POP
// SayRadio ( Dwayne , In_Dwayne_3 ) ; Ralph :
121109: LD_EXP 18
121113: PPUSH
121114: LD_STRING In_Dwayne_3
121116: PPUSH
121117: CALL_OW 94
121121: GO 121174
121123: LD_EXP 14
121127: DOUBLE
121128: EQUAL
121129: IFTRUE 121133
121131: GO 121148
121133: POP
// SayRadio ( Ralph , In_Ralph_3 ) ; Kowalski :
121134: LD_EXP 14
121138: PPUSH
121139: LD_STRING In_Ralph_3
121141: PPUSH
121142: CALL_OW 94
121146: GO 121174
121148: LD_EXP 15
121152: DOUBLE
121153: EQUAL
121154: IFTRUE 121158
121156: GO 121173
121158: POP
// SayRadio ( Kowalski , In_Kowalski_3 ) ; end ;
121159: LD_EXP 15
121163: PPUSH
121164: LD_STRING In_Kowalski_3
121166: PPUSH
121167: CALL_OW 94
121171: GO 121174
121173: POP
// wait ( 0 0$0.5 ) ;
121174: LD_INT 18
121176: PPUSH
121177: CALL_OW 67
// case difficulty of 1 :
121181: LD_OWVAR 67
121185: PUSH
121186: LD_INT 1
121188: DOUBLE
121189: EQUAL
121190: IFTRUE 121194
121192: GO 121204
121194: POP
// ChangeMissionObjectives ( Main_goals_easy ) ; 2 :
121195: LD_STRING Main_goals_easy
121197: PPUSH
121198: CALL_OW 337
121202: GO 121241
121204: LD_INT 2
121206: DOUBLE
121207: EQUAL
121208: IFTRUE 121212
121210: GO 121222
121212: POP
// ChangeMissionObjectives ( Main_goals_medium ) ; 3 :
121213: LD_STRING Main_goals_medium
121215: PPUSH
121216: CALL_OW 337
121220: GO 121241
121222: LD_INT 3
121224: DOUBLE
121225: EQUAL
121226: IFTRUE 121230
121228: GO 121240
121230: POP
// ChangeMissionObjectives ( Main_goals_hard ) ; end ;
121231: LD_STRING Main_goals_hard
121233: PPUSH
121234: CALL_OW 337
121238: GO 121241
121240: POP
// wait ( 0 0$0.5 ) ;
121241: LD_INT 18
121243: PPUSH
121244: CALL_OW 67
// if 1 in [ ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] then
121248: LD_INT 1
121250: PUSH
121251: LD_EXP 198
121255: PUSH
121256: LD_EXP 199
121260: PUSH
121261: LD_EXP 200
121265: PUSH
121266: LD_EXP 201
121270: PUSH
121271: LD_EXP 202
121275: PUSH
121276: LD_EXP 203
121280: PUSH
121281: EMPTY
121282: LIST
121283: LIST
121284: LIST
121285: LIST
121286: LIST
121287: LIST
121288: IN
121289: IFFALSE 121298
// Query ( artifact_use_info ) ;
121291: LD_STRING artifact_use_info
121293: PPUSH
121294: CALL_OW 97
// SetAreaMapShow ( ContaminationArea , 1 ) ;
121298: LD_INT 37
121300: PPUSH
121301: LD_INT 1
121303: PPUSH
121304: CALL_OW 424
// InGameOff ;
121308: CALL_OW 9
// SaveForQuickRestart ;
121312: CALL_OW 22
// end ;
121316: LD_VAR 0 1
121320: RET
// every 0 0$1 trigger tick > 2 2$0 do var temp ;
121321: LD_OWVAR 1
121325: PUSH
121326: LD_INT 4200
121328: GREATER
121329: IFFALSE 121819
121331: GO 121333
121333: DISABLE
121334: LD_INT 0
121336: PPUSH
// begin temp = filterallunits ( [ [ f_side , 8 ] , [ f_btype , b_lab_full ] , [ f_nation , nation_russian ] ] ) [ 1 ] ;
121337: LD_ADDR_VAR 0 1
121341: PUSH
121342: LD_INT 22
121344: PUSH
121345: LD_INT 8
121347: PUSH
121348: EMPTY
121349: LIST
121350: LIST
121351: PUSH
121352: LD_INT 30
121354: PUSH
121355: LD_INT 8
121357: PUSH
121358: EMPTY
121359: LIST
121360: LIST
121361: PUSH
121362: LD_INT 23
121364: PUSH
121365: LD_INT 3
121367: PUSH
121368: EMPTY
121369: LIST
121370: LIST
121371: PUSH
121372: EMPTY
121373: LIST
121374: LIST
121375: LIST
121376: PPUSH
121377: CALL_OW 69
121381: PUSH
121382: LD_INT 1
121384: ARRAY
121385: ST_TO_ADDR
// SetTech ( tech_sibfiss , 8 , state_enabled ) ;
121386: LD_INT 25
121388: PPUSH
121389: LD_INT 8
121391: PPUSH
121392: LD_INT 1
121394: PPUSH
121395: CALL_OW 322
// ComResearch ( temp , tech_sibfiss ) ;
121399: LD_VAR 0 1
121403: PPUSH
121404: LD_INT 25
121406: PPUSH
121407: CALL_OW 124
// ComEnterUnit ( Kozlov , temp ) ;
121411: LD_EXP 43
121415: PPUSH
121416: LD_VAR 0 1
121420: PPUSH
121421: CALL_OW 120
// repeat wait ( 0 0$1 ) ;
121425: LD_INT 35
121427: PPUSH
121428: CALL_OW 67
// if 1 in BasesDestroyed then
121432: LD_INT 1
121434: PUSH
121435: LD_EXP 196
121439: IN
121440: IFFALSE 121444
// exit ;
121442: GO 121819
// until tick > [ 32 32$0 , 27 27$0 , 22 22$0 ] [ difficulty ] ;
121444: LD_OWVAR 1
121448: PUSH
121449: LD_INT 67200
121451: PUSH
121452: LD_INT 56700
121454: PUSH
121455: LD_INT 46200
121457: PUSH
121458: EMPTY
121459: LIST
121460: LIST
121461: LIST
121462: PUSH
121463: LD_OWVAR 67
121467: ARRAY
121468: GREATER
121469: IFFALSE 121425
// SetWorkingProgress ( temp , 100 ) ;
121471: LD_VAR 0 1
121475: PPUSH
121476: LD_INT 100
121478: PPUSH
121479: CALL_OW 329
// temp = filterallunits ( [ [ f_side , 8 ] , [ f_btype , b_factory ] , [ f_nation , nation_russian ] ] ) [ 1 ] ;
121483: LD_ADDR_VAR 0 1
121487: PUSH
121488: LD_INT 22
121490: PUSH
121491: LD_INT 8
121493: PUSH
121494: EMPTY
121495: LIST
121496: LIST
121497: PUSH
121498: LD_INT 30
121500: PUSH
121501: LD_INT 3
121503: PUSH
121504: EMPTY
121505: LIST
121506: LIST
121507: PUSH
121508: LD_INT 23
121510: PUSH
121511: LD_INT 3
121513: PUSH
121514: EMPTY
121515: LIST
121516: LIST
121517: PUSH
121518: EMPTY
121519: LIST
121520: LIST
121521: LIST
121522: PPUSH
121523: CALL_OW 69
121527: PUSH
121528: LD_INT 1
121530: ARRAY
121531: ST_TO_ADDR
// ComExitBuilding ( Kozlov ) ;
121532: LD_EXP 43
121536: PPUSH
121537: CALL_OW 122
// AddComEnterUnit ( Kozlov , temp ) ;
121541: LD_EXP 43
121545: PPUSH
121546: LD_VAR 0 1
121550: PPUSH
121551: CALL_OW 180
// AddComChangeProfession ( Kozlov , class_mechanic ) ;
121555: LD_EXP 43
121559: PPUSH
121560: LD_INT 3
121562: PPUSH
121563: CALL_OW 183
// ComConstruct ( temp , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) ;
121567: LD_VAR 0 1
121571: PPUSH
121572: LD_INT 24
121574: PPUSH
121575: LD_INT 3
121577: PPUSH
121578: LD_INT 3
121580: PPUSH
121581: LD_INT 48
121583: PPUSH
121584: CALL_OW 125
// repeat wait ( 0 0$1 ) ;
121588: LD_INT 35
121590: PPUSH
121591: CALL_OW 67
// if 1 in BasesDestroyed then
121595: LD_INT 1
121597: PUSH
121598: LD_EXP 196
121602: IN
121603: IFFALSE 121607
// exit ;
121605: GO 121819
// until tick > [ 35 35$0 , 30 30$0 , 25 25$0 ] [ difficulty ] ;
121607: LD_OWVAR 1
121611: PUSH
121612: LD_INT 73500
121614: PUSH
121615: LD_INT 63000
121617: PUSH
121618: LD_INT 52500
121620: PUSH
121621: EMPTY
121622: LIST
121623: LIST
121624: LIST
121625: PUSH
121626: LD_OWVAR 67
121630: ARRAY
121631: GREATER
121632: IFFALSE 121588
// SetWorkingProgress ( temp , 100 ) ;
121634: LD_VAR 0 1
121638: PPUSH
121639: LD_INT 100
121641: PPUSH
121642: CALL_OW 329
// SetTech ( tech_sib3 , 8 , state_researched ) ;
121646: LD_INT 56
121648: PPUSH
121649: LD_INT 8
121651: PPUSH
121652: LD_INT 2
121654: PPUSH
121655: CALL_OW 322
// repeat wait ( 0 0$1 ) ;
121659: LD_INT 35
121661: PPUSH
121662: CALL_OW 67
// until ai_sib_bomb_vehicles [ 1 ] > 0 ;
121666: LD_EXP 117
121670: PUSH
121671: LD_INT 1
121673: ARRAY
121674: PUSH
121675: LD_INT 0
121677: GREATER
121678: IFFALSE 121659
// async ;
121680: ASYNC
// case LegionLeader of Kurt :
121681: LD_EXP 45
121685: PUSH
121686: LD_EXP 39
121690: DOUBLE
121691: EQUAL
121692: IFTRUE 121696
121694: GO 121711
121696: POP
// SayRadio ( Kurt , Le_BombKurt ) ; Gordon :
121697: LD_EXP 39
121701: PPUSH
121702: LD_STRING Le_BombKurt
121704: PPUSH
121705: CALL_OW 94
121709: GO 121737
121711: LD_EXP 42
121715: DOUBLE
121716: EQUAL
121717: IFTRUE 121721
121719: GO 121736
121721: POP
// SayRadio ( Gordon , Le_BombGordon ) ; end ;
121722: LD_EXP 42
121726: PPUSH
121727: LD_STRING Le_BombGordon
121729: PPUSH
121730: CALL_OW 94
121734: GO 121737
121736: POP
// sync ;
121737: SYNC
// repeat wait ( 0 0$0.1 ) ;
121738: LD_INT 4
121740: PPUSH
121741: CALL_OW 67
// if ai_sib_bomb_vehicles [ 1 ] > 0 then
121745: LD_EXP 117
121749: PUSH
121750: LD_INT 1
121752: ARRAY
121753: PUSH
121754: LD_INT 0
121756: GREATER
121757: IFFALSE 121777
// temp = ai_sib_bomb_vehicles [ 1 ] [ 1 ] ;
121759: LD_ADDR_VAR 0 1
121763: PUSH
121764: LD_EXP 117
121768: PUSH
121769: LD_INT 1
121771: ARRAY
121772: PUSH
121773: LD_INT 1
121775: ARRAY
121776: ST_TO_ADDR
// ComAttackPlace ( temp , 207 , 217 ) ;
121777: LD_VAR 0 1
121781: PPUSH
121782: LD_INT 207
121784: PPUSH
121785: LD_INT 217
121787: PPUSH
121788: CALL_OW 116
// until GetWeapon ( temp ) = ru_siberium_rocket_remainder ;
121792: LD_VAR 0 1
121796: PPUSH
121797: CALL_OW 264
121801: PUSH
121802: LD_INT 55
121804: EQUAL
121805: IFFALSE 121738
// SayRadio ( Kozlov , Le_BombKozlov ) ;
121807: LD_EXP 43
121811: PPUSH
121812: LD_STRING Le_BombKozlov
121814: PPUSH
121815: CALL_OW 94
// end ;
121819: PPOPN 1
121821: END
// every 0 0$1 trigger tick > 15 15$0 do var temp ;
121822: LD_OWVAR 1
121826: PUSH
121827: LD_INT 31500
121829: GREATER
121830: IFFALSE 122097
121832: GO 121834
121834: DISABLE
121835: LD_INT 0
121837: PPUSH
// begin temp = HexInfo ( 198 , 238 ) ;
121838: LD_ADDR_VAR 0 1
121842: PUSH
121843: LD_INT 198
121845: PPUSH
121846: LD_INT 238
121848: PPUSH
121849: CALL_OW 428
121853: ST_TO_ADDR
// SetTech ( tech_sibfiss , 3 , state_enabled ) ;
121854: LD_INT 25
121856: PPUSH
121857: LD_INT 3
121859: PPUSH
121860: LD_INT 1
121862: PPUSH
121863: CALL_OW 322
// ComResearch ( temp , tech_sibfiss ) ;
121867: LD_VAR 0 1
121871: PPUSH
121872: LD_INT 25
121874: PPUSH
121875: CALL_OW 124
// repeat wait ( 0 0$1 ) ;
121879: LD_INT 35
121881: PPUSH
121882: CALL_OW 67
// until tick > [ 57 57$0 , 47 47$0 , 37 37$0 ] [ difficulty ] ;
121886: LD_OWVAR 1
121890: PUSH
121891: LD_INT 119700
121893: PUSH
121894: LD_INT 98700
121896: PUSH
121897: LD_INT 77700
121899: PUSH
121900: EMPTY
121901: LIST
121902: LIST
121903: LIST
121904: PUSH
121905: LD_OWVAR 67
121909: ARRAY
121910: GREATER
121911: IFFALSE 121879
// SetWorkingProgress ( temp , 100 ) ;
121913: LD_VAR 0 1
121917: PPUSH
121918: LD_INT 100
121920: PPUSH
121921: CALL_OW 329
// ComConstruct ( ru_sib_fact , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) ;
121925: LD_INT 338
121927: PPUSH
121928: LD_INT 24
121930: PPUSH
121931: LD_INT 3
121933: PPUSH
121934: LD_INT 3
121936: PPUSH
121937: LD_INT 48
121939: PPUSH
121940: CALL_OW 125
// repeat wait ( 0 0$1 ) ;
121944: LD_INT 35
121946: PPUSH
121947: CALL_OW 67
// if GetWorkingProgress ( ru_sib_fact ) >= 95 then
121951: LD_INT 338
121953: PPUSH
121954: CALL_OW 328
121958: PUSH
121959: LD_INT 95
121961: GREATEREQUAL
121962: IFFALSE 121974
// SetWorkingProgress ( ru_sib_fact , 94 ) ;
121964: LD_INT 338
121966: PPUSH
121967: LD_INT 94
121969: PPUSH
121970: CALL_OW 329
// until tick > [ 60 60$0 , 50 50$0 , 40 40$0 ] [ difficulty ] ;
121974: LD_OWVAR 1
121978: PUSH
121979: LD_INT 126000
121981: PUSH
121982: LD_INT 105000
121984: PUSH
121985: LD_INT 84000
121987: PUSH
121988: EMPTY
121989: LIST
121990: LIST
121991: LIST
121992: PUSH
121993: LD_OWVAR 67
121997: ARRAY
121998: GREATER
121999: IFFALSE 121944
// SetWorkingProgress ( ru_sib_fact , 100 ) ;
122001: LD_INT 338
122003: PPUSH
122004: LD_INT 100
122006: PPUSH
122007: CALL_OW 329
// SetTech ( tech_sib3 , 3 , state_researched ) ;
122011: LD_INT 56
122013: PPUSH
122014: LD_INT 3
122016: PPUSH
122017: LD_INT 2
122019: PPUSH
122020: CALL_OW 322
// repeat wait ( 0 0$1 ) ;
122024: LD_INT 35
122026: PPUSH
122027: CALL_OW 67
// until ai_sib_bomb_vehicles [ 2 ] > 0 ;
122031: LD_EXP 117
122035: PUSH
122036: LD_INT 2
122038: ARRAY
122039: PUSH
122040: LD_INT 0
122042: GREATER
122043: IFFALSE 122024
// DialogueOn ;
122045: CALL_OW 6
// SayRadio ( Platonov , Ru_BombPlatonov1 ) ;
122049: LD_EXP 33
122053: PPUSH
122054: LD_STRING Ru_BombPlatonov1
122056: PPUSH
122057: CALL_OW 94
// SayRadio ( Powell , Ru_BombPowel ) ;
122061: LD_EXP 36
122065: PPUSH
122066: LD_STRING Ru_BombPowel
122068: PPUSH
122069: CALL_OW 94
// Say ( Heike , Ru_BombHeike ) ;
122073: LD_EXP 10
122077: PPUSH
122078: LD_STRING Ru_BombHeike
122080: PPUSH
122081: CALL_OW 88
// Dialogueoff ;
122085: CALL_OW 7
// RussianNukeAttack = 1 ;
122089: LD_ADDR_EXP 225
122093: PUSH
122094: LD_INT 1
122096: ST_TO_ADDR
// end ;
122097: PPOPN 1
122099: END
// every 0 0$1 trigger RussianNukeAttack do var i , temp , fact , defending_hexes , target , dist ;
122100: LD_EXP 225
122104: IFFALSE 123341
122106: GO 122108
122108: DISABLE
122109: LD_INT 0
122111: PPUSH
122112: PPUSH
122113: PPUSH
122114: PPUSH
122115: PPUSH
122116: PPUSH
// begin if not 2 in ai_bases then
122117: LD_INT 2
122119: PUSH
122120: LD_EXP 49
122124: IN
122125: NOT
122126: IFFALSE 122130
// exit ;
122128: GO 123341
// for i in ai_sib_bomb_vehicles [ 2 ] do
122130: LD_ADDR_VAR 0 1
122134: PUSH
122135: LD_EXP 117
122139: PUSH
122140: LD_INT 2
122142: ARRAY
122143: PUSH
122144: FOR_IN
122145: IFFALSE 122213
// if GetWeapon ( i ) = ru_siberium_rocket_remainder then
122147: LD_VAR 0 1
122151: PPUSH
122152: CALL_OW 264
122156: PUSH
122157: LD_INT 55
122159: EQUAL
122160: IFFALSE 122211
// begin ai_sib_bomb_vehicles = Replace ( ai_sib_bomb_vehicles , 2 , ai_sib_bomb_vehicles [ 2 ] diff i ) ;
122162: LD_ADDR_EXP 117
122166: PUSH
122167: LD_EXP 117
122171: PPUSH
122172: LD_INT 2
122174: PPUSH
122175: LD_EXP 117
122179: PUSH
122180: LD_INT 2
122182: ARRAY
122183: PUSH
122184: LD_VAR 0 1
122188: DIFF
122189: PPUSH
122190: CALL_OW 1
122194: ST_TO_ADDR
// ai_sib_bomb_remainder = ai_sib_bomb_remainder ^ i ;
122195: LD_ADDR_EXP 118
122199: PUSH
122200: LD_EXP 118
122204: PUSH
122205: LD_VAR 0 1
122209: ADD
122210: ST_TO_ADDR
// end ;
122211: GO 122144
122213: POP
122214: POP
// for i in ai_sib_bomb_remainder do
122215: LD_ADDR_VAR 0 1
122219: PUSH
122220: LD_EXP 118
122224: PUSH
122225: FOR_IN
122226: IFFALSE 122257
// if IsDead ( i ) then
122228: LD_VAR 0 1
122232: PPUSH
122233: CALL_OW 301
122237: IFFALSE 122255
// ai_sib_bomb_remainder = ai_sib_bomb_remainder diff i ;
122239: LD_ADDR_EXP 118
122243: PUSH
122244: LD_EXP 118
122248: PUSH
122249: LD_VAR 0 1
122253: DIFF
122254: ST_TO_ADDR
122255: GO 122225
122257: POP
122258: POP
// fact = ai_facts [ 2 ] [ 1 ] ;
122259: LD_ADDR_VAR 0 3
122263: PUSH
122264: LD_EXP 61
122268: PUSH
122269: LD_INT 2
122271: ARRAY
122272: PUSH
122273: LD_INT 1
122275: ARRAY
122276: ST_TO_ADDR
// if IsIdle ( fact ) and ai_sib_bomb_remainder > 0 then
122277: LD_VAR 0 3
122281: PPUSH
122282: CALL_OW 316
122286: PUSH
122287: LD_EXP 118
122291: PUSH
122292: LD_INT 0
122294: GREATER
122295: AND
122296: IFFALSE 122316
// ComRecycle ( ai_sib_bomb_remainder [ 1 ] , fact ) ;
122298: LD_EXP 118
122302: PUSH
122303: LD_INT 1
122305: ARRAY
122306: PPUSH
122307: LD_VAR 0 3
122311: PPUSH
122312: CALL_OW 168
// if IsIdle ( ru_sib_fact ) and ai_sib_bomb_vehicles [ 2 ] < 5 then
122316: LD_INT 338
122318: PPUSH
122319: CALL_OW 316
122323: PUSH
122324: LD_EXP 117
122328: PUSH
122329: LD_INT 2
122331: ARRAY
122332: PUSH
122333: LD_INT 5
122335: LESS
122336: AND
122337: IFFALSE 122358
// ComConstruct ( ru_sib_fact , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) ;
122339: LD_INT 338
122341: PPUSH
122342: LD_INT 24
122344: PPUSH
122345: LD_INT 3
122347: PPUSH
122348: LD_INT 3
122350: PPUSH
122351: LD_INT 48
122353: PPUSH
122354: CALL_OW 125
// if ai_sib_bomb_vehicles [ 2 ] > 0 then
122358: LD_EXP 117
122362: PUSH
122363: LD_INT 2
122365: ARRAY
122366: PUSH
122367: LD_INT 0
122369: GREATER
122370: IFFALSE 123340
// begin defending_hexes = [ [ 258 , 249 ] , [ 253 , 233 ] , [ 244 , 216 ] , [ 236 , 200 ] , [ 223 , 184 ] , [ 209 , 167 ] , [ 195 , 154 ] , [ 177 , 152 ] , [ 160 , 152 ] , [ 149 , 175 ] , [ 151 , 193 ] , [ 151 , 210 ] , [ 154 , 227 ] , [ 163 , 244 ] ] ;
122372: LD_ADDR_VAR 0 4
122376: PUSH
122377: LD_INT 258
122379: PUSH
122380: LD_INT 249
122382: PUSH
122383: EMPTY
122384: LIST
122385: LIST
122386: PUSH
122387: LD_INT 253
122389: PUSH
122390: LD_INT 233
122392: PUSH
122393: EMPTY
122394: LIST
122395: LIST
122396: PUSH
122397: LD_INT 244
122399: PUSH
122400: LD_INT 216
122402: PUSH
122403: EMPTY
122404: LIST
122405: LIST
122406: PUSH
122407: LD_INT 236
122409: PUSH
122410: LD_INT 200
122412: PUSH
122413: EMPTY
122414: LIST
122415: LIST
122416: PUSH
122417: LD_INT 223
122419: PUSH
122420: LD_INT 184
122422: PUSH
122423: EMPTY
122424: LIST
122425: LIST
122426: PUSH
122427: LD_INT 209
122429: PUSH
122430: LD_INT 167
122432: PUSH
122433: EMPTY
122434: LIST
122435: LIST
122436: PUSH
122437: LD_INT 195
122439: PUSH
122440: LD_INT 154
122442: PUSH
122443: EMPTY
122444: LIST
122445: LIST
122446: PUSH
122447: LD_INT 177
122449: PUSH
122450: LD_INT 152
122452: PUSH
122453: EMPTY
122454: LIST
122455: LIST
122456: PUSH
122457: LD_INT 160
122459: PUSH
122460: LD_INT 152
122462: PUSH
122463: EMPTY
122464: LIST
122465: LIST
122466: PUSH
122467: LD_INT 149
122469: PUSH
122470: LD_INT 175
122472: PUSH
122473: EMPTY
122474: LIST
122475: LIST
122476: PUSH
122477: LD_INT 151
122479: PUSH
122480: LD_INT 193
122482: PUSH
122483: EMPTY
122484: LIST
122485: LIST
122486: PUSH
122487: LD_INT 151
122489: PUSH
122490: LD_INT 210
122492: PUSH
122493: EMPTY
122494: LIST
122495: LIST
122496: PUSH
122497: LD_INT 154
122499: PUSH
122500: LD_INT 227
122502: PUSH
122503: EMPTY
122504: LIST
122505: LIST
122506: PUSH
122507: LD_INT 163
122509: PUSH
122510: LD_INT 244
122512: PUSH
122513: EMPTY
122514: LIST
122515: LIST
122516: PUSH
122517: EMPTY
122518: LIST
122519: LIST
122520: LIST
122521: LIST
122522: LIST
122523: LIST
122524: LIST
122525: LIST
122526: LIST
122527: LIST
122528: LIST
122529: LIST
122530: LIST
122531: LIST
122532: ST_TO_ADDR
// if BaseUnderAttack ( 2 , 2 ) then
122533: LD_INT 2
122535: PPUSH
122536: LD_INT 2
122538: PPUSH
122539: CALL 55912 0 2
122543: IFFALSE 122956
// begin temp = FilterUnitsInArea ( base_russians , [ f_side , 2 ] ) ;
122545: LD_ADDR_VAR 0 2
122549: PUSH
122550: LD_INT 2
122552: PPUSH
122553: LD_INT 22
122555: PUSH
122556: LD_INT 2
122558: PUSH
122559: EMPTY
122560: LIST
122561: LIST
122562: PPUSH
122563: CALL_OW 70
122567: ST_TO_ADDR
// if temp > 0 then
122568: LD_VAR 0 2
122572: PUSH
122573: LD_INT 0
122575: GREATER
122576: IFFALSE 122625
// ComAttackPlace ( ai_sib_bomb_vehicles [ 2 ] [ 1 ] , GetX ( temp [ 1 ] ) , GetY ( temp [ 1 ] ) ) else
122578: LD_EXP 117
122582: PUSH
122583: LD_INT 2
122585: ARRAY
122586: PUSH
122587: LD_INT 1
122589: ARRAY
122590: PPUSH
122591: LD_VAR 0 2
122595: PUSH
122596: LD_INT 1
122598: ARRAY
122599: PPUSH
122600: CALL_OW 250
122604: PPUSH
122605: LD_VAR 0 2
122609: PUSH
122610: LD_INT 1
122612: ARRAY
122613: PPUSH
122614: CALL_OW 251
122618: PPUSH
122619: CALL_OW 116
122623: GO 122954
// begin temp = [ ] ;
122625: LD_ADDR_VAR 0 2
122629: PUSH
122630: EMPTY
122631: ST_TO_ADDR
// for i in FilterAllUnits ( [ f_side , 2 ] ) do
122632: LD_ADDR_VAR 0 1
122636: PUSH
122637: LD_INT 22
122639: PUSH
122640: LD_INT 2
122642: PUSH
122643: EMPTY
122644: LIST
122645: LIST
122646: PPUSH
122647: CALL_OW 69
122651: PUSH
122652: FOR_IN
122653: IFFALSE 122691
// if GetDistUnitArea ( i , base_russians ) <= 20 then
122655: LD_VAR 0 1
122659: PPUSH
122660: LD_INT 2
122662: PPUSH
122663: CALL_OW 299
122667: PUSH
122668: LD_INT 20
122670: LESSEQUAL
122671: IFFALSE 122689
// temp = temp ^ i ;
122673: LD_ADDR_VAR 0 2
122677: PUSH
122678: LD_VAR 0 2
122682: PUSH
122683: LD_VAR 0 1
122687: ADD
122688: ST_TO_ADDR
122689: GO 122652
122691: POP
122692: POP
// target = 0 ;
122693: LD_ADDR_VAR 0 5
122697: PUSH
122698: LD_INT 0
122700: ST_TO_ADDR
// for i in temp do
122701: LD_ADDR_VAR 0 1
122705: PUSH
122706: LD_VAR 0 2
122710: PUSH
122711: FOR_IN
122712: IFFALSE 122759
// if UnitFilter ( temp , [ f_dist , i , 10 ] ) >= 4 then
122714: LD_VAR 0 2
122718: PPUSH
122719: LD_INT 91
122721: PUSH
122722: LD_VAR 0 1
122726: PUSH
122727: LD_INT 10
122729: PUSH
122730: EMPTY
122731: LIST
122732: LIST
122733: LIST
122734: PPUSH
122735: CALL_OW 72
122739: PUSH
122740: LD_INT 4
122742: GREATEREQUAL
122743: IFFALSE 122757
// begin target = i ;
122745: LD_ADDR_VAR 0 5
122749: PUSH
122750: LD_VAR 0 1
122754: ST_TO_ADDR
// break ;
122755: GO 122759
// end ;
122757: GO 122711
122759: POP
122760: POP
// if target > 0 then
122761: LD_VAR 0 5
122765: PUSH
122766: LD_INT 0
122768: GREATER
122769: IFFALSE 122954
// begin temp = 0 ;
122771: LD_ADDR_VAR 0 2
122775: PUSH
122776: LD_INT 0
122778: ST_TO_ADDR
// dist = 999 ;
122779: LD_ADDR_VAR 0 6
122783: PUSH
122784: LD_INT 999
122786: ST_TO_ADDR
// for i in defending_hexes do
122787: LD_ADDR_VAR 0 1
122791: PUSH
122792: LD_VAR 0 4
122796: PUSH
122797: FOR_IN
122798: IFFALSE 122880
// if GetDistUnitXY ( target , i [ 1 ] , i [ 2 ] ) < dist then
122800: LD_VAR 0 5
122804: PPUSH
122805: LD_VAR 0 1
122809: PUSH
122810: LD_INT 1
122812: ARRAY
122813: PPUSH
122814: LD_VAR 0 1
122818: PUSH
122819: LD_INT 2
122821: ARRAY
122822: PPUSH
122823: CALL_OW 297
122827: PUSH
122828: LD_VAR 0 6
122832: LESS
122833: IFFALSE 122878
// begin temp = i ;
122835: LD_ADDR_VAR 0 2
122839: PUSH
122840: LD_VAR 0 1
122844: ST_TO_ADDR
// dist = GetDistUnitXY ( target , i [ 1 ] , i [ 2 ] ) ;
122845: LD_ADDR_VAR 0 6
122849: PUSH
122850: LD_VAR 0 5
122854: PPUSH
122855: LD_VAR 0 1
122859: PUSH
122860: LD_INT 1
122862: ARRAY
122863: PPUSH
122864: LD_VAR 0 1
122868: PUSH
122869: LD_INT 2
122871: ARRAY
122872: PPUSH
122873: CALL_OW 297
122877: ST_TO_ADDR
// end ;
122878: GO 122797
122880: POP
122881: POP
// ComAttackPlace ( ai_sib_bomb_vehicles [ 2 ] [ 1 ] , temp [ 1 ] , temp [ 2 ] ) ;
122882: LD_EXP 117
122886: PUSH
122887: LD_INT 2
122889: ARRAY
122890: PUSH
122891: LD_INT 1
122893: ARRAY
122894: PPUSH
122895: LD_VAR 0 2
122899: PUSH
122900: LD_INT 1
122902: ARRAY
122903: PPUSH
122904: LD_VAR 0 2
122908: PUSH
122909: LD_INT 2
122911: ARRAY
122912: PPUSH
122913: CALL_OW 116
// if not 2 in bomb_dlg then
122917: LD_INT 2
122919: PUSH
122920: LD_EXP 48
122924: IN
122925: NOT
122926: IFFALSE 122954
// begin SayRadio ( Platonov , Ru_BombPlatonov3 ) ;
122928: LD_EXP 33
122932: PPUSH
122933: LD_STRING Ru_BombPlatonov3
122935: PPUSH
122936: CALL_OW 94
// bomb_dlg = bomb_dlg ^ 2 ;
122940: LD_ADDR_EXP 48
122944: PUSH
122945: LD_EXP 48
122949: PUSH
122950: LD_INT 2
122952: ADD
122953: ST_TO_ADDR
// end ; end ; end ; end else
122954: GO 123340
// if ai_sib_bomb_vehicles [ 2 ] > 1 then
122956: LD_EXP 117
122960: PUSH
122961: LD_INT 2
122963: ARRAY
122964: PUSH
122965: LD_INT 1
122967: GREATER
122968: IFFALSE 123340
// if 3 in ai_bases and ai_depots [ 3 ] > 0 then
122970: LD_INT 3
122972: PUSH
122973: LD_EXP 49
122977: IN
122978: PUSH
122979: LD_EXP 59
122983: PUSH
122984: LD_INT 3
122986: ARRAY
122987: PUSH
122988: LD_INT 0
122990: GREATER
122991: AND
122992: IFFALSE 123056
// begin ComAttackPlace ( ai_sib_bomb_vehicles [ 2 ] [ 2 ] , 229 , 150 ) ;
122994: LD_EXP 117
122998: PUSH
122999: LD_INT 2
123001: ARRAY
123002: PUSH
123003: LD_INT 2
123005: ARRAY
123006: PPUSH
123007: LD_INT 229
123009: PPUSH
123010: LD_INT 150
123012: PPUSH
123013: CALL_OW 116
// if not 1 in bomb_dlg then
123017: LD_INT 1
123019: PUSH
123020: LD_EXP 48
123024: IN
123025: NOT
123026: IFFALSE 123054
// begin SayRadio ( Platonov , Ru_BombPlatonov2 ) ;
123028: LD_EXP 33
123032: PPUSH
123033: LD_STRING Ru_BombPlatonov2
123035: PPUSH
123036: CALL_OW 94
// bomb_dlg = bomb_dlg ^ 1 ;
123040: LD_ADDR_EXP 48
123044: PUSH
123045: LD_EXP 48
123049: PUSH
123050: LD_INT 1
123052: ADD
123053: ST_TO_ADDR
// end ; end else
123054: GO 123340
// begin temp = [ ] ;
123056: LD_ADDR_VAR 0 2
123060: PUSH
123061: EMPTY
123062: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) do
123063: LD_ADDR_VAR 0 1
123067: PUSH
123068: LD_INT 22
123070: PUSH
123071: LD_INT 2
123073: PUSH
123074: EMPTY
123075: LIST
123076: LIST
123077: PUSH
123078: LD_INT 21
123080: PUSH
123081: LD_INT 2
123083: PUSH
123084: EMPTY
123085: LIST
123086: LIST
123087: PUSH
123088: EMPTY
123089: LIST
123090: LIST
123091: PPUSH
123092: CALL_OW 69
123096: PUSH
123097: FOR_IN
123098: IFFALSE 123210
// if GetWeapon ( i ) in [ ar_cargo_bay , us_cargo_bay , ru_cargo_bay ] then
123100: LD_VAR 0 1
123104: PPUSH
123105: CALL_OW 264
123109: PUSH
123110: LD_INT 32
123112: PUSH
123113: LD_INT 12
123115: PUSH
123116: LD_INT 51
123118: PUSH
123119: EMPTY
123120: LIST
123121: LIST
123122: LIST
123123: IN
123124: IFFALSE 123162
// begin if GetCargo ( i , mat_siberit ) > 0 then
123126: LD_VAR 0 1
123130: PPUSH
123131: LD_INT 3
123133: PPUSH
123134: CALL_OW 289
123138: PUSH
123139: LD_INT 0
123141: GREATER
123142: IFFALSE 123160
// temp = temp ^ i ;
123144: LD_ADDR_VAR 0 2
123148: PUSH
123149: LD_VAR 0 2
123153: PUSH
123154: LD_VAR 0 1
123158: ADD
123159: ST_TO_ADDR
// end else
123160: GO 123208
// if GetWeapon ( i ) = ar_selfpropelled_bomb or GetEngine ( i ) = engine_siberite then
123162: LD_VAR 0 1
123166: PPUSH
123167: CALL_OW 264
123171: PUSH
123172: LD_INT 29
123174: EQUAL
123175: PUSH
123176: LD_VAR 0 1
123180: PPUSH
123181: CALL_OW 262
123185: PUSH
123186: LD_INT 3
123188: EQUAL
123189: OR
123190: IFFALSE 123208
// temp = temp ^ i ;
123192: LD_ADDR_VAR 0 2
123196: PUSH
123197: LD_VAR 0 2
123201: PUSH
123202: LD_VAR 0 1
123206: ADD
123207: ST_TO_ADDR
123208: GO 123097
123210: POP
123211: POP
// if temp > 0 then
123212: LD_VAR 0 2
123216: PUSH
123217: LD_INT 0
123219: GREATER
123220: IFFALSE 123340
// begin target = 0 ;
123222: LD_ADDR_VAR 0 5
123226: PUSH
123227: LD_INT 0
123229: ST_TO_ADDR
// dist = 999 ;
123230: LD_ADDR_VAR 0 6
123234: PUSH
123235: LD_INT 999
123237: ST_TO_ADDR
// for i in temp do
123238: LD_ADDR_VAR 0 1
123242: PUSH
123243: LD_VAR 0 2
123247: PUSH
123248: FOR_IN
123249: IFFALSE 123301
// if GetDistUnitArea ( i , base_russians ) < dist then
123251: LD_VAR 0 1
123255: PPUSH
123256: LD_INT 2
123258: PPUSH
123259: CALL_OW 299
123263: PUSH
123264: LD_VAR 0 6
123268: LESS
123269: IFFALSE 123299
// begin target = i ;
123271: LD_ADDR_VAR 0 5
123275: PUSH
123276: LD_VAR 0 1
123280: ST_TO_ADDR
// dist = GetDistUnitArea ( i , base_russians ) ;
123281: LD_ADDR_VAR 0 6
123285: PUSH
123286: LD_VAR 0 1
123290: PPUSH
123291: LD_INT 2
123293: PPUSH
123294: CALL_OW 299
123298: ST_TO_ADDR
// end ;
123299: GO 123248
123301: POP
123302: POP
// ComAttackPlace ( ai_sib_bomb_vehicles [ 2 ] [ 2 ] , GetX ( target ) , GetY ( target ) ) ;
123303: LD_EXP 117
123307: PUSH
123308: LD_INT 2
123310: ARRAY
123311: PUSH
123312: LD_INT 2
123314: ARRAY
123315: PPUSH
123316: LD_VAR 0 5
123320: PPUSH
123321: CALL_OW 250
123325: PPUSH
123326: LD_VAR 0 5
123330: PPUSH
123331: CALL_OW 251
123335: PPUSH
123336: CALL_OW 116
// end ; end ; end ; enable ;
123340: ENABLE
// end ;
123341: PPOPN 6
123343: END
// every 0 0$1 trigger AllianceDestroyed = 0 and AllianceSpawned = 0 do var i , temp , hex , temp_list , temp_list2 , base , temp2 ;
123344: LD_EXP 220
123348: PUSH
123349: LD_INT 0
123351: EQUAL
123352: PUSH
123353: LD_EXP 221
123357: PUSH
123358: LD_INT 0
123360: EQUAL
123361: AND
123362: IFFALSE 124020
123364: GO 123366
123366: DISABLE
123367: LD_INT 0
123369: PPUSH
123370: PPUSH
123371: PPUSH
123372: PPUSH
123373: PPUSH
123374: PPUSH
123375: PPUSH
// begin Randomize ;
123376: CALL_OW 10
// for base in [ 1 , 3 ] do
123380: LD_ADDR_VAR 0 6
123384: PUSH
123385: LD_INT 1
123387: PUSH
123388: LD_INT 3
123390: PUSH
123391: EMPTY
123392: LIST
123393: LIST
123394: PUSH
123395: FOR_IN
123396: IFFALSE 123502
// if not base in ai_bases or not IsOk ( ai_depots [ base ] [ 1 ] ) or ( ai_all_buildings [ base ] < InitialBuildingCount [ base ] - 10 and ai_soldiers [ base ] < InitialSoldierCount [ base ] / 1.5 ) then
123398: LD_VAR 0 6
123402: PUSH
123403: LD_EXP 49
123407: IN
123408: NOT
123409: PUSH
123410: LD_EXP 59
123414: PUSH
123415: LD_VAR 0 6
123419: ARRAY
123420: PUSH
123421: LD_INT 1
123423: ARRAY
123424: PPUSH
123425: CALL_OW 302
123429: NOT
123430: OR
123431: PUSH
123432: LD_EXP 86
123436: PUSH
123437: LD_VAR 0 6
123441: ARRAY
123442: PUSH
123443: LD_EXP 194
123447: PUSH
123448: LD_VAR 0 6
123452: ARRAY
123453: PUSH
123454: LD_INT 10
123456: MINUS
123457: LESS
123458: PUSH
123459: LD_EXP 50
123463: PUSH
123464: LD_VAR 0 6
123468: ARRAY
123469: PUSH
123470: LD_EXP 195
123474: PUSH
123475: LD_VAR 0 6
123479: ARRAY
123480: PUSH
123481: LD_REAL  1.50000000000000E+0000
123484: DIVREAL
123485: LESS
123486: AND
123487: OR
123488: IFFALSE 123500
// temp2 = base ;
123490: LD_ADDR_VAR 0 7
123494: PUSH
123495: LD_VAR 0 6
123499: ST_TO_ADDR
123500: GO 123395
123502: POP
123503: POP
// if temp2 = 0 then
123504: LD_VAR 0 7
123508: PUSH
123509: LD_INT 0
123511: EQUAL
123512: IFFALSE 123572
// if not 2 in mb_bases or UnitFilter ( mb_people , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ) then
123514: LD_INT 2
123516: PUSH
123517: LD_EXP 160
123521: IN
123522: NOT
123523: PUSH
123524: LD_EXP 163
123528: PPUSH
123529: LD_INT 2
123531: PUSH
123532: LD_INT 25
123534: PUSH
123535: LD_INT 1
123537: PUSH
123538: EMPTY
123539: LIST
123540: LIST
123541: PUSH
123542: LD_INT 25
123544: PUSH
123545: LD_INT 9
123547: PUSH
123548: EMPTY
123549: LIST
123550: LIST
123551: PUSH
123552: EMPTY
123553: LIST
123554: LIST
123555: LIST
123556: PPUSH
123557: CALL_OW 72
123561: OR
123562: IFFALSE 123572
// temp2 = 2 ;
123564: LD_ADDR_VAR 0 7
123568: PUSH
123569: LD_INT 2
123571: ST_TO_ADDR
// case temp2 of 1 :
123572: LD_VAR 0 7
123576: PUSH
123577: LD_INT 1
123579: DOUBLE
123580: EQUAL
123581: IFTRUE 123585
123583: GO 123788
123585: POP
// begin AllTarget = [ 1 , 2 , 3 ] ;
123586: LD_ADDR_EXP 222
123590: PUSH
123591: LD_INT 1
123593: PUSH
123594: LD_INT 2
123596: PUSH
123597: LD_INT 3
123599: PUSH
123600: EMPTY
123601: LIST
123602: LIST
123603: LIST
123604: ST_TO_ADDR
// if FilterUnitsInArea ( base_legion , [ f_side , 2 ] ) = 0 then
123605: LD_INT 1
123607: PPUSH
123608: LD_INT 22
123610: PUSH
123611: LD_INT 2
123613: PUSH
123614: EMPTY
123615: LIST
123616: LIST
123617: PPUSH
123618: CALL_OW 70
123622: PUSH
123623: LD_INT 0
123625: EQUAL
123626: IFFALSE 123645
// temp = [ 59 , 83 ] else
123628: LD_ADDR_VAR 0 2
123632: PUSH
123633: LD_INT 59
123635: PUSH
123636: LD_INT 83
123638: PUSH
123639: EMPTY
123640: LIST
123641: LIST
123642: ST_TO_ADDR
123643: GO 123786
// begin temp_list = FilterUnitsInArea ( base_legion , [ f_side , 2 ] ) ;
123645: LD_ADDR_VAR 0 4
123649: PUSH
123650: LD_INT 1
123652: PPUSH
123653: LD_INT 22
123655: PUSH
123656: LD_INT 2
123658: PUSH
123659: EMPTY
123660: LIST
123661: LIST
123662: PPUSH
123663: CALL_OW 70
123667: ST_TO_ADDR
// temp_list2 = [ ] ;
123668: LD_ADDR_VAR 0 5
123672: PUSH
123673: EMPTY
123674: ST_TO_ADDR
// for i in temp_list do
123675: LD_ADDR_VAR 0 1
123679: PUSH
123680: LD_VAR 0 4
123684: PUSH
123685: FOR_IN
123686: IFFALSE 123717
// temp_list2 = temp_list2 ^ GetDistUnitXY ( i , 90 , 116 ) ;
123688: LD_ADDR_VAR 0 5
123692: PUSH
123693: LD_VAR 0 5
123697: PUSH
123698: LD_VAR 0 1
123702: PPUSH
123703: LD_INT 90
123705: PPUSH
123706: LD_INT 116
123708: PPUSH
123709: CALL_OW 297
123713: ADD
123714: ST_TO_ADDR
123715: GO 123685
123717: POP
123718: POP
// i = WorstFromListByList ( temp_list , temp_list2 ) ;
123719: LD_ADDR_VAR 0 1
123723: PUSH
123724: LD_VAR 0 4
123728: PPUSH
123729: LD_VAR 0 5
123733: PPUSH
123734: CALL_OW 78
123738: ST_TO_ADDR
// if GetX ( i ) < 106 then
123739: LD_VAR 0 1
123743: PPUSH
123744: CALL_OW 250
123748: PUSH
123749: LD_INT 106
123751: LESS
123752: IFFALSE 123771
// temp = [ 59 , 83 ] else
123754: LD_ADDR_VAR 0 2
123758: PUSH
123759: LD_INT 59
123761: PUSH
123762: LD_INT 83
123764: PUSH
123765: EMPTY
123766: LIST
123767: LIST
123768: ST_TO_ADDR
123769: GO 123786
// temp = [ 97 , 91 ] ;
123771: LD_ADDR_VAR 0 2
123775: PUSH
123776: LD_INT 97
123778: PUSH
123779: LD_INT 91
123781: PUSH
123782: EMPTY
123783: LIST
123784: LIST
123785: ST_TO_ADDR
// end ; end ; 2 :
123786: GO 123879
123788: LD_INT 2
123790: DOUBLE
123791: EQUAL
123792: IFTRUE 123796
123794: GO 123833
123796: POP
// begin temp = [ 114 , 34 ] ;
123797: LD_ADDR_VAR 0 2
123801: PUSH
123802: LD_INT 114
123804: PUSH
123805: LD_INT 34
123807: PUSH
123808: EMPTY
123809: LIST
123810: LIST
123811: ST_TO_ADDR
// AllTarget = [ 2 , 1 , 3 ] ;
123812: LD_ADDR_EXP 222
123816: PUSH
123817: LD_INT 2
123819: PUSH
123820: LD_INT 1
123822: PUSH
123823: LD_INT 3
123825: PUSH
123826: EMPTY
123827: LIST
123828: LIST
123829: LIST
123830: ST_TO_ADDR
// end ; 3 :
123831: GO 123879
123833: LD_INT 3
123835: DOUBLE
123836: EQUAL
123837: IFTRUE 123841
123839: GO 123878
123841: POP
// begin temp = [ 193 , 73 ] ;
123842: LD_ADDR_VAR 0 2
123846: PUSH
123847: LD_INT 193
123849: PUSH
123850: LD_INT 73
123852: PUSH
123853: EMPTY
123854: LIST
123855: LIST
123856: ST_TO_ADDR
// AllTarget = [ 3 , 2 , 1 ] ;
123857: LD_ADDR_EXP 222
123861: PUSH
123862: LD_INT 3
123864: PUSH
123865: LD_INT 2
123867: PUSH
123868: LD_INT 1
123870: PUSH
123871: EMPTY
123872: LIST
123873: LIST
123874: LIST
123875: ST_TO_ADDR
// end ; end ;
123876: GO 123879
123878: POP
// if temp > 0 then
123879: LD_VAR 0 2
123883: PUSH
123884: LD_INT 0
123886: GREATER
123887: IFFALSE 124019
// for i in AllianceTeam do
123889: LD_ADDR_VAR 0 1
123893: PUSH
123894: LD_EXP 46
123898: PUSH
123899: FOR_IN
123900: IFFALSE 124017
// begin PlaceUnitArea ( i , AllSpawnArea , false ) ;
123902: LD_VAR 0 1
123906: PPUSH
123907: LD_INT 29
123909: PPUSH
123910: LD_INT 0
123912: PPUSH
123913: CALL_OW 49
// hex = RandHexXYR ( temp [ 1 ] , temp [ 2 ] , 10 , true ) ;
123917: LD_ADDR_VAR 0 3
123921: PUSH
123922: LD_VAR 0 2
123926: PUSH
123927: LD_INT 1
123929: ARRAY
123930: PPUSH
123931: LD_VAR 0 2
123935: PUSH
123936: LD_INT 2
123938: ARRAY
123939: PPUSH
123940: LD_INT 10
123942: PPUSH
123943: LD_INT 1
123945: PPUSH
123946: CALL_OW 17
123950: ST_TO_ADDR
// TeleportUnit ( i , hex [ 1 ] , hex [ 2 ] , 10 , true ) ;
123951: LD_VAR 0 1
123955: PPUSH
123956: LD_VAR 0 3
123960: PUSH
123961: LD_INT 1
123963: ARRAY
123964: PPUSH
123965: LD_VAR 0 3
123969: PUSH
123970: LD_INT 2
123972: ARRAY
123973: PPUSH
123974: LD_INT 10
123976: PPUSH
123977: LD_INT 1
123979: PPUSH
123980: CALL_OW 483
// ai_patrol = replace ( ai_patrol , 3 , AllianceTeam ) ;
123984: LD_ADDR_EXP 183
123988: PUSH
123989: LD_EXP 183
123993: PPUSH
123994: LD_INT 3
123996: PPUSH
123997: LD_EXP 46
124001: PPUSH
124002: CALL_OW 1
124006: ST_TO_ADDR
// AllianceSpawned = 1 ;
124007: LD_ADDR_EXP 221
124011: PUSH
124012: LD_INT 1
124014: ST_TO_ADDR
// end ;
124015: GO 123899
124017: POP
124018: POP
// enable ;
124019: ENABLE
// end ;
124020: PPOPN 7
124022: END
// on Contact ( s1 , s2 ) do begin if 2 in [ s1 , s2 ] and 7 in [ s1 , s2 ] and Alldlg = 0 then
124023: LD_INT 2
124025: PUSH
124026: LD_VAR 0 1
124030: PUSH
124031: LD_VAR 0 2
124035: PUSH
124036: EMPTY
124037: LIST
124038: LIST
124039: IN
124040: PUSH
124041: LD_INT 7
124043: PUSH
124044: LD_VAR 0 1
124048: PUSH
124049: LD_VAR 0 2
124053: PUSH
124054: EMPTY
124055: LIST
124056: LIST
124057: IN
124058: AND
124059: PUSH
124060: LD_EXP 224
124064: PUSH
124065: LD_INT 0
124067: EQUAL
124068: AND
124069: IFFALSE 124100
// begin CenterOnUnits ( AllianceTeam ) ;
124071: LD_EXP 46
124075: PPUSH
124076: CALL_OW 85
// Say ( Heike , All_Heike2 ) ;
124080: LD_EXP 10
124084: PPUSH
124085: LD_STRING All_Heike2
124087: PPUSH
124088: CALL_OW 88
// Alldlg = 1 ;
124092: LD_ADDR_EXP 224
124096: PUSH
124097: LD_INT 1
124099: ST_TO_ADDR
// end ; end ;
124100: PPOPN 2
124102: END
// every 0 0$1 trigger BasesDestroyed < 2 do var i , j , base , exit_hex , dist , temp , temp_list ;
124103: LD_EXP 196
124107: PUSH
124108: LD_INT 2
124110: LESS
124111: IFFALSE 125005
124113: GO 124115
124115: DISABLE
124116: LD_INT 0
124118: PPUSH
124119: PPUSH
124120: PPUSH
124121: PPUSH
124122: PPUSH
124123: PPUSH
124124: PPUSH
// begin i = [ 0.5 , 0.33 , 0.25 ] [ difficulty ] ;
124125: LD_ADDR_VAR 0 1
124129: PUSH
124130: LD_REAL  5.00000000000000E-0001
124133: PUSH
124134: LD_REAL  3.30000000000000E-0001
124137: PUSH
124138: LD_REAL  2.50000000000000E-0001
124141: PUSH
124142: EMPTY
124143: LIST
124144: LIST
124145: LIST
124146: PUSH
124147: LD_OWVAR 67
124151: ARRAY
124152: ST_TO_ADDR
// for base in [ 1 , 3 ] diff BasesDestroyed do
124153: LD_ADDR_VAR 0 3
124157: PUSH
124158: LD_INT 1
124160: PUSH
124161: LD_INT 3
124163: PUSH
124164: EMPTY
124165: LIST
124166: LIST
124167: PUSH
124168: LD_EXP 196
124172: DIFF
124173: PUSH
124174: FOR_IN
124175: IFFALSE 125002
// if IsDead ( [ LegionLeader , Platonov , Powell ] [ base ] ) and ( ai_soldiers [ base ] < InitialSoldierCount [ base ] * i or ( base = 3 and AmericansNuked ) ) then
124177: LD_EXP 45
124181: PUSH
124182: LD_EXP 33
124186: PUSH
124187: LD_EXP 36
124191: PUSH
124192: EMPTY
124193: LIST
124194: LIST
124195: LIST
124196: PUSH
124197: LD_VAR 0 3
124201: ARRAY
124202: PPUSH
124203: CALL_OW 301
124207: PUSH
124208: LD_EXP 50
124212: PUSH
124213: LD_VAR 0 3
124217: ARRAY
124218: PUSH
124219: LD_EXP 195
124223: PUSH
124224: LD_VAR 0 3
124228: ARRAY
124229: PUSH
124230: LD_VAR 0 1
124234: MUL
124235: LESS
124236: PUSH
124237: LD_VAR 0 3
124241: PUSH
124242: LD_INT 3
124244: EQUAL
124245: PUSH
124246: LD_EXP 226
124250: AND
124251: OR
124252: AND
124253: IFFALSE 125000
// begin if base = 1 and tick < LLKilledTick + 0 0$4 then
124255: LD_VAR 0 3
124259: PUSH
124260: LD_INT 1
124262: EQUAL
124263: PUSH
124264: LD_OWVAR 1
124268: PUSH
124269: LD_EXP 231
124273: PUSH
124274: LD_INT 140
124276: PLUS
124277: LESS
124278: AND
124279: IFFALSE 124283
// continue ;
124281: GO 124174
// if not base in Dlg_cap and not - base in Dlg_cap then
124283: LD_VAR 0 3
124287: PUSH
124288: LD_EXP 230
124292: IN
124293: NOT
124294: PUSH
124295: LD_VAR 0 3
124299: NEG
124300: PUSH
124301: LD_EXP 230
124305: IN
124306: NOT
124307: AND
124308: IFFALSE 124326
// Dlg_cap = Dlg_cap ^ base ;
124310: LD_ADDR_EXP 230
124314: PUSH
124315: LD_EXP 230
124319: PUSH
124320: LD_VAR 0 3
124324: ADD
124325: ST_TO_ADDR
// if base = 1 and tick < LLKilledTick + 0 0$7 then
124326: LD_VAR 0 3
124330: PUSH
124331: LD_INT 1
124333: EQUAL
124334: PUSH
124335: LD_OWVAR 1
124339: PUSH
124340: LD_EXP 231
124344: PUSH
124345: LD_INT 245
124347: PLUS
124348: LESS
124349: AND
124350: IFFALSE 124354
// continue ;
124352: GO 124174
// if base in ai_bases then
124354: LD_VAR 0 3
124358: PUSH
124359: LD_EXP 49
124363: IN
124364: IFFALSE 124382
// ai_bases = ai_bases diff base ;
124366: LD_ADDR_EXP 49
124370: PUSH
124371: LD_EXP 49
124375: PUSH
124376: LD_VAR 0 3
124380: DIFF
124381: ST_TO_ADDR
// if BaseDestroyedTick [ base ] = - 1 then
124382: LD_EXP 197
124386: PUSH
124387: LD_VAR 0 3
124391: ARRAY
124392: PUSH
124393: LD_INT 1
124395: NEG
124396: EQUAL
124397: IFFALSE 124502
// begin BaseDestroyedTick = Replace ( BaseDestroyedTick , base , tick ) ;
124399: LD_ADDR_EXP 197
124403: PUSH
124404: LD_EXP 197
124408: PPUSH
124409: LD_VAR 0 3
124413: PPUSH
124414: LD_OWVAR 1
124418: PPUSH
124419: CALL_OW 1
124423: ST_TO_ADDR
// if base = 1 then
124424: LD_VAR 0 3
124428: PUSH
124429: LD_INT 1
124431: EQUAL
124432: IFFALSE 124502
// for i in FilterAllUnits ( [ [ f_side , 8 ] , [ f_or , [ f_btype , b_factory ] , [ f_btype , b_lab_full ] ] ] ) do
124434: LD_ADDR_VAR 0 1
124438: PUSH
124439: LD_INT 22
124441: PUSH
124442: LD_INT 8
124444: PUSH
124445: EMPTY
124446: LIST
124447: LIST
124448: PUSH
124449: LD_INT 2
124451: PUSH
124452: LD_INT 30
124454: PUSH
124455: LD_INT 3
124457: PUSH
124458: EMPTY
124459: LIST
124460: LIST
124461: PUSH
124462: LD_INT 30
124464: PUSH
124465: LD_INT 8
124467: PUSH
124468: EMPTY
124469: LIST
124470: LIST
124471: PUSH
124472: EMPTY
124473: LIST
124474: LIST
124475: LIST
124476: PUSH
124477: EMPTY
124478: LIST
124479: LIST
124480: PPUSH
124481: CALL_OW 69
124485: PUSH
124486: FOR_IN
124487: IFFALSE 124500
// ComCancel ( i ) ;
124489: LD_VAR 0 1
124493: PPUSH
124494: CALL_OW 127
124498: GO 124486
124500: POP
124501: POP
// end ; if tick < BaseDestroyedTick [ base ] + 0 0$10 then
124502: LD_OWVAR 1
124506: PUSH
124507: LD_EXP 197
124511: PUSH
124512: LD_VAR 0 3
124516: ARRAY
124517: PUSH
124518: LD_INT 350
124520: PLUS
124521: LESS
124522: IFFALSE 124557
// SetAttitude ( [ 8 , 3 , 1 ] [ base ] , 2 , att_neutral , true ) ;
124524: LD_INT 8
124526: PUSH
124527: LD_INT 3
124529: PUSH
124530: LD_INT 1
124532: PUSH
124533: EMPTY
124534: LIST
124535: LIST
124536: LIST
124537: PUSH
124538: LD_VAR 0 3
124542: ARRAY
124543: PPUSH
124544: LD_INT 2
124546: PPUSH
124547: LD_INT 0
124549: PPUSH
124550: LD_INT 1
124552: PPUSH
124553: CALL_OW 80
// exit_hex = [ [ 83 , 164 ] , [ 45 , 87 ] , [ 12 , 22 ] , [ 188 , 35 ] , [ 207 , 72 ] , [ 248 , 155 ] ] ;
124557: LD_ADDR_VAR 0 4
124561: PUSH
124562: LD_INT 83
124564: PUSH
124565: LD_INT 164
124567: PUSH
124568: EMPTY
124569: LIST
124570: LIST
124571: PUSH
124572: LD_INT 45
124574: PUSH
124575: LD_INT 87
124577: PUSH
124578: EMPTY
124579: LIST
124580: LIST
124581: PUSH
124582: LD_INT 12
124584: PUSH
124585: LD_INT 22
124587: PUSH
124588: EMPTY
124589: LIST
124590: LIST
124591: PUSH
124592: LD_INT 188
124594: PUSH
124595: LD_INT 35
124597: PUSH
124598: EMPTY
124599: LIST
124600: LIST
124601: PUSH
124602: LD_INT 207
124604: PUSH
124605: LD_INT 72
124607: PUSH
124608: EMPTY
124609: LIST
124610: LIST
124611: PUSH
124612: LD_INT 248
124614: PUSH
124615: LD_INT 155
124617: PUSH
124618: EMPTY
124619: LIST
124620: LIST
124621: PUSH
124622: EMPTY
124623: LIST
124624: LIST
124625: LIST
124626: LIST
124627: LIST
124628: LIST
124629: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , [ 8 , 3 , 1 ] [ base ] ] , [ f_type , unit_human ] ] ) do
124630: LD_ADDR_VAR 0 1
124634: PUSH
124635: LD_INT 22
124637: PUSH
124638: LD_INT 8
124640: PUSH
124641: LD_INT 3
124643: PUSH
124644: LD_INT 1
124646: PUSH
124647: EMPTY
124648: LIST
124649: LIST
124650: LIST
124651: PUSH
124652: LD_VAR 0 3
124656: ARRAY
124657: PUSH
124658: EMPTY
124659: LIST
124660: LIST
124661: PUSH
124662: LD_INT 21
124664: PUSH
124665: LD_INT 1
124667: PUSH
124668: EMPTY
124669: LIST
124670: LIST
124671: PUSH
124672: EMPTY
124673: LIST
124674: LIST
124675: PPUSH
124676: CALL_OW 69
124680: PUSH
124681: FOR_IN
124682: IFFALSE 124924
// case GetType ( IsInUnit ( i ) ) of unit_building :
124684: LD_VAR 0 1
124688: PPUSH
124689: CALL_OW 310
124693: PPUSH
124694: CALL_OW 247
124698: PUSH
124699: LD_INT 3
124701: DOUBLE
124702: EQUAL
124703: IFTRUE 124707
124705: GO 124719
124707: POP
// ComExitBuilding ( i ) ; unit_vehicle :
124708: LD_VAR 0 1
124712: PPUSH
124713: CALL_OW 122
124717: GO 124922
124719: LD_INT 2
124721: DOUBLE
124722: EQUAL
124723: IFTRUE 124727
124725: GO 124739
124727: POP
// ComExitVehicle ( i ) ; else
124728: LD_VAR 0 1
124732: PPUSH
124733: CALL_OW 121
124737: GO 124922
124739: POP
// begin dist = 99 ;
124740: LD_ADDR_VAR 0 5
124744: PUSH
124745: LD_INT 99
124747: ST_TO_ADDR
// temp = 0 ;
124748: LD_ADDR_VAR 0 6
124752: PUSH
124753: LD_INT 0
124755: ST_TO_ADDR
// for j in exit_hex do
124756: LD_ADDR_VAR 0 2
124760: PUSH
124761: LD_VAR 0 4
124765: PUSH
124766: FOR_IN
124767: IFFALSE 124849
// if GetDistUnitXY ( i , j [ 1 ] , j [ 2 ] ) < dist then
124769: LD_VAR 0 1
124773: PPUSH
124774: LD_VAR 0 2
124778: PUSH
124779: LD_INT 1
124781: ARRAY
124782: PPUSH
124783: LD_VAR 0 2
124787: PUSH
124788: LD_INT 2
124790: ARRAY
124791: PPUSH
124792: CALL_OW 297
124796: PUSH
124797: LD_VAR 0 5
124801: LESS
124802: IFFALSE 124847
// begin dist = GetDistUnitXY ( i , j [ 1 ] , j [ 2 ] ) ;
124804: LD_ADDR_VAR 0 5
124808: PUSH
124809: LD_VAR 0 1
124813: PPUSH
124814: LD_VAR 0 2
124818: PUSH
124819: LD_INT 1
124821: ARRAY
124822: PPUSH
124823: LD_VAR 0 2
124827: PUSH
124828: LD_INT 2
124830: ARRAY
124831: PPUSH
124832: CALL_OW 297
124836: ST_TO_ADDR
// temp = j ;
124837: LD_ADDR_VAR 0 6
124841: PUSH
124842: LD_VAR 0 2
124846: ST_TO_ADDR
// end ;
124847: GO 124766
124849: POP
124850: POP
// if GetDistUnitXY ( i , temp [ 1 ] , temp [ 2 ] ) > 2 then
124851: LD_VAR 0 1
124855: PPUSH
124856: LD_VAR 0 6
124860: PUSH
124861: LD_INT 1
124863: ARRAY
124864: PPUSH
124865: LD_VAR 0 6
124869: PUSH
124870: LD_INT 2
124872: ARRAY
124873: PPUSH
124874: CALL_OW 297
124878: PUSH
124879: LD_INT 2
124881: GREATER
124882: IFFALSE 124913
// ComMoveXY ( i , temp [ 1 ] , temp [ 2 ] ) else
124884: LD_VAR 0 1
124888: PPUSH
124889: LD_VAR 0 6
124893: PUSH
124894: LD_INT 1
124896: ARRAY
124897: PPUSH
124898: LD_VAR 0 6
124902: PUSH
124903: LD_INT 2
124905: ARRAY
124906: PPUSH
124907: CALL_OW 111
124911: GO 124922
// RemoveUnit ( i ) ;
124913: LD_VAR 0 1
124917: PPUSH
124918: CALL_OW 64
// end ; end ;
124922: GO 124681
124924: POP
124925: POP
// if FilterAllUnits ( [ [ f_side , [ 8 , 3 , 1 ] [ base ] ] , [ f_type , unit_human ] , [ f_placed ] ] ) = 0 then
124926: LD_INT 22
124928: PUSH
124929: LD_INT 8
124931: PUSH
124932: LD_INT 3
124934: PUSH
124935: LD_INT 1
124937: PUSH
124938: EMPTY
124939: LIST
124940: LIST
124941: LIST
124942: PUSH
124943: LD_VAR 0 3
124947: ARRAY
124948: PUSH
124949: EMPTY
124950: LIST
124951: LIST
124952: PUSH
124953: LD_INT 21
124955: PUSH
124956: LD_INT 1
124958: PUSH
124959: EMPTY
124960: LIST
124961: LIST
124962: PUSH
124963: LD_INT 52
124965: PUSH
124966: EMPTY
124967: LIST
124968: PUSH
124969: EMPTY
124970: LIST
124971: LIST
124972: LIST
124973: PPUSH
124974: CALL_OW 69
124978: PUSH
124979: LD_INT 0
124981: EQUAL
124982: IFFALSE 125000
// BasesDestroyed = BasesDestroyed ^ base ;
124984: LD_ADDR_EXP 196
124988: PUSH
124989: LD_EXP 196
124993: PUSH
124994: LD_VAR 0 3
124998: ADD
124999: ST_TO_ADDR
// end ;
125000: GO 124174
125002: POP
125003: POP
// enable ;
125004: ENABLE
// end ;
125005: PPOPN 7
125007: END
// on DiplomacyChanged ( side1 , side2 , attitude ) do var i , enemyside ;
125008: LD_INT 0
125010: PPUSH
125011: PPUSH
// begin if side1 <> 2 and side2 <> 2 or attitude = att_neutral then
125012: LD_VAR 0 1
125016: PUSH
125017: LD_INT 2
125019: NONEQUAL
125020: PUSH
125021: LD_VAR 0 2
125025: PUSH
125026: LD_INT 2
125028: NONEQUAL
125029: AND
125030: PUSH
125031: LD_VAR 0 3
125035: PUSH
125036: LD_INT 0
125038: EQUAL
125039: OR
125040: IFFALSE 125044
// exit ;
125042: GO 125195
// for i in [ side1 , side2 ] do
125044: LD_ADDR_VAR 0 4
125048: PUSH
125049: LD_VAR 0 1
125053: PUSH
125054: LD_VAR 0 2
125058: PUSH
125059: EMPTY
125060: LIST
125061: LIST
125062: PUSH
125063: FOR_IN
125064: IFFALSE 125089
// if not i = 2 then
125066: LD_VAR 0 4
125070: PUSH
125071: LD_INT 2
125073: EQUAL
125074: NOT
125075: IFFALSE 125087
// enemyside = i ;
125077: LD_ADDR_VAR 0 5
125081: PUSH
125082: LD_VAR 0 4
125086: ST_TO_ADDR
125087: GO 125063
125089: POP
125090: POP
// case enemyside of 8 :
125091: LD_VAR 0 5
125095: PUSH
125096: LD_INT 8
125098: DOUBLE
125099: EQUAL
125100: IFTRUE 125104
125102: GO 125145
125104: POP
// if tick < BaseDestroyedTick [ 1 ] + 0 0$10 then
125105: LD_OWVAR 1
125109: PUSH
125110: LD_EXP 197
125114: PUSH
125115: LD_INT 1
125117: ARRAY
125118: PUSH
125119: LD_INT 350
125121: PLUS
125122: LESS
125123: IFFALSE 125143
// SetAttitude ( enemyside , 2 , att_neutral , true ) ; 1 :
125125: LD_VAR 0 5
125129: PPUSH
125130: LD_INT 2
125132: PPUSH
125133: LD_INT 0
125135: PPUSH
125136: LD_INT 1
125138: PPUSH
125139: CALL_OW 80
125143: GO 125195
125145: LD_INT 1
125147: DOUBLE
125148: EQUAL
125149: IFTRUE 125153
125151: GO 125194
125153: POP
// if tick < BaseDestroyedTick [ 3 ] + 0 0$10 then
125154: LD_OWVAR 1
125158: PUSH
125159: LD_EXP 197
125163: PUSH
125164: LD_INT 3
125166: ARRAY
125167: PUSH
125168: LD_INT 350
125170: PLUS
125171: LESS
125172: IFFALSE 125192
// SetAttitude ( enemyside , 2 , att_neutral , true ) ; end ;
125174: LD_VAR 0 5
125178: PPUSH
125179: LD_INT 2
125181: PPUSH
125182: LD_INT 0
125184: PPUSH
125185: LD_INT 1
125187: PPUSH
125188: CALL_OW 80
125192: GO 125195
125194: POP
// end ;
125195: PPOPN 5
125197: END
// every 0 0$1 trigger BasesDestroyed > 0 do var i , temp , leader , control ;
125198: LD_EXP 196
125202: PUSH
125203: LD_INT 0
125205: GREATER
125206: IFFALSE 125758
125208: GO 125210
125210: DISABLE
125211: LD_INT 0
125213: PPUSH
125214: PPUSH
125215: PPUSH
125216: PPUSH
// begin DialogueOn ;
125217: CALL_OW 6
// case Lead of Gensher :
125221: LD_EXP 32
125225: PUSH
125226: LD_EXP 24
125230: DOUBLE
125231: EQUAL
125232: IFTRUE 125236
125234: GO 125247
125236: POP
// leader = Gensher ; Oswald :
125237: LD_ADDR_VAR 0 3
125241: PUSH
125242: LD_STRING Gensher
125244: ST_TO_ADDR
125245: GO 125353
125247: LD_EXP 13
125251: DOUBLE
125252: EQUAL
125253: IFTRUE 125257
125255: GO 125268
125257: POP
// leader = Oswald ; Swansson :
125258: LD_ADDR_VAR 0 3
125262: PUSH
125263: LD_STRING Oswald
125265: ST_TO_ADDR
125266: GO 125353
125268: LD_EXP 17
125272: DOUBLE
125273: EQUAL
125274: IFTRUE 125278
125276: GO 125289
125278: POP
// leader = Swansson ; Dwayne :
125279: LD_ADDR_VAR 0 3
125283: PUSH
125284: LD_STRING Swansson
125286: ST_TO_ADDR
125287: GO 125353
125289: LD_EXP 18
125293: DOUBLE
125294: EQUAL
125295: IFTRUE 125299
125297: GO 125310
125299: POP
// leader = Dwayne ; Ralph :
125300: LD_ADDR_VAR 0 3
125304: PUSH
125305: LD_STRING Dwayne
125307: ST_TO_ADDR
125308: GO 125353
125310: LD_EXP 14
125314: DOUBLE
125315: EQUAL
125316: IFTRUE 125320
125318: GO 125331
125320: POP
// leader = Ralph ; Kowalski :
125321: LD_ADDR_VAR 0 3
125325: PUSH
125326: LD_STRING Ralph
125328: ST_TO_ADDR
125329: GO 125353
125331: LD_EXP 15
125335: DOUBLE
125336: EQUAL
125337: IFTRUE 125341
125339: GO 125352
125341: POP
// leader = Kowalski ; end ;
125342: LD_ADDR_VAR 0 3
125346: PUSH
125347: LD_STRING Kowalski
125349: ST_TO_ADDR
125350: GO 125353
125352: POP
// case BasesDestroyed [ 1 ] of 1 :
125353: LD_EXP 196
125357: PUSH
125358: LD_INT 1
125360: ARRAY
125361: PUSH
125362: LD_INT 1
125364: DOUBLE
125365: EQUAL
125366: IFTRUE 125370
125368: GO 125391
125370: POP
// SayRadio ( Lead , DefLe_ & leader ) ; 3 :
125371: LD_EXP 32
125375: PPUSH
125376: LD_STRING DefLe_
125378: PUSH
125379: LD_VAR 0 3
125383: STR
125384: PPUSH
125385: CALL_OW 94
125389: GO 125421
125391: LD_INT 3
125393: DOUBLE
125394: EQUAL
125395: IFTRUE 125399
125397: GO 125420
125399: POP
// SayRadio ( Lead , DefUs_ & leader ) ; end ;
125400: LD_EXP 32
125404: PPUSH
125405: LD_STRING DefUs_
125407: PUSH
125408: LD_VAR 0 3
125412: STR
125413: PPUSH
125414: CALL_OW 94
125418: GO 125421
125420: POP
// SayRadio ( Lead , Def2_ & leader ) ;
125421: LD_EXP 32
125425: PPUSH
125426: LD_STRING Def2_
125428: PUSH
125429: LD_VAR 0 3
125433: STR
125434: PPUSH
125435: CALL_OW 94
// DialogueOff ;
125439: CALL_OW 7
// repeat wait ( 0 0$1 ) ;
125443: LD_INT 35
125445: PPUSH
125446: CALL_OW 67
// until BasesDestroyed = 2 ;
125450: LD_EXP 196
125454: PUSH
125455: LD_INT 2
125457: EQUAL
125458: IFFALSE 125443
// CenterOnXY ( 89 , 2 ) ;
125460: LD_INT 89
125462: PPUSH
125463: LD_INT 2
125465: PPUSH
125466: CALL_OW 84
// Say ( Lead , Backup_ & leader ) ;
125470: LD_EXP 32
125474: PPUSH
125475: LD_STRING Backup_
125477: PUSH
125478: LD_VAR 0 3
125482: STR
125483: PPUSH
125484: CALL_OW 88
// control = [ ] ;
125488: LD_ADDR_VAR 0 4
125492: PUSH
125493: EMPTY
125494: ST_TO_ADDR
// for i in reinforcements do
125495: LD_ADDR_VAR 0 1
125499: PUSH
125500: LD_EXP 31
125504: PUSH
125505: FOR_IN
125506: IFFALSE 125546
// if GetWeapon ( i ) = ar_control_tower then
125508: LD_VAR 0 1
125512: PPUSH
125513: CALL_OW 264
125517: PUSH
125518: LD_INT 31
125520: EQUAL
125521: IFFALSE 125544
// control = control ^ IsDrivenBy ( i ) ;
125523: LD_ADDR_VAR 0 4
125527: PUSH
125528: LD_VAR 0 4
125532: PUSH
125533: LD_VAR 0 1
125537: PPUSH
125538: CALL_OW 311
125542: ADD
125543: ST_TO_ADDR
125544: GO 125505
125546: POP
125547: POP
// for i in Reinforcements do
125548: LD_ADDR_VAR 0 1
125552: PUSH
125553: LD_EXP 31
125557: PUSH
125558: FOR_IN
125559: IFFALSE 125756
// begin SetDir ( i , [ 2 , 3 ] [ rand ( 1 , 2 ) ] ) ;
125561: LD_VAR 0 1
125565: PPUSH
125566: LD_INT 2
125568: PUSH
125569: LD_INT 3
125571: PUSH
125572: EMPTY
125573: LIST
125574: LIST
125575: PUSH
125576: LD_INT 1
125578: PPUSH
125579: LD_INT 2
125581: PPUSH
125582: CALL_OW 12
125586: ARRAY
125587: PPUSH
125588: CALL_OW 233
// repeat PlaceUnitArea ( i , PlayerStartArea , false ) ;
125592: LD_VAR 0 1
125596: PPUSH
125597: LD_INT 11
125599: PPUSH
125600: LD_INT 0
125602: PPUSH
125603: CALL_OW 49
// if IsPlaced ( i ) then
125607: LD_VAR 0 1
125611: PPUSH
125612: CALL_OW 305
125616: IFFALSE 125620
// break ;
125618: GO 125637
// wait ( 0 0$0.3 ) ;
125620: LD_INT 10
125622: PPUSH
125623: CALL_OW 67
// until Reinforcements = 0 ;
125627: LD_EXP 31
125631: PUSH
125632: LD_INT 0
125634: EQUAL
125635: IFFALSE 125592
// if GetControl ( i ) = control_remote then
125637: LD_VAR 0 1
125641: PPUSH
125642: CALL_OW 263
125646: PUSH
125647: LD_INT 2
125649: EQUAL
125650: IFFALSE 125680
// LinkVehicleToHuman ( i , Control [ rand ( 1 , Control ) ] ) ;
125652: LD_VAR 0 1
125656: PPUSH
125657: LD_VAR 0 4
125661: PUSH
125662: LD_INT 1
125664: PPUSH
125665: LD_VAR 0 4
125669: PPUSH
125670: CALL_OW 12
125674: ARRAY
125675: PPUSH
125676: CALL_OW 53
// ComMoveXY ( i , GetX ( i ) + 2 , GetY ( i ) + 4 ) ;
125680: LD_VAR 0 1
125684: PPUSH
125685: LD_VAR 0 1
125689: PPUSH
125690: CALL_OW 250
125694: PUSH
125695: LD_INT 2
125697: PLUS
125698: PPUSH
125699: LD_VAR 0 1
125703: PPUSH
125704: CALL_OW 251
125708: PUSH
125709: LD_INT 4
125711: PLUS
125712: PPUSH
125713: CALL_OW 111
// AddComMoveXY ( i , GetX ( i ) + 4 , GetY ( i ) + 8 ) ;
125717: LD_VAR 0 1
125721: PPUSH
125722: LD_VAR 0 1
125726: PPUSH
125727: CALL_OW 250
125731: PUSH
125732: LD_INT 4
125734: PLUS
125735: PPUSH
125736: LD_VAR 0 1
125740: PPUSH
125741: CALL_OW 251
125745: PUSH
125746: LD_INT 8
125748: PLUS
125749: PPUSH
125750: CALL_OW 171
// end ;
125754: GO 125558
125756: POP
125757: POP
// end ;
125758: PPOPN 4
125760: END
// every 0 0$1 trigger FilterUnitsInArea ( base_russians , [ f_side , 2 ] ) do var i , temp ;
125761: LD_INT 2
125763: PPUSH
125764: LD_INT 22
125766: PUSH
125767: LD_INT 2
125769: PUSH
125770: EMPTY
125771: LIST
125772: LIST
125773: PPUSH
125774: CALL_OW 70
125778: IFFALSE 125984
125780: GO 125782
125782: DISABLE
125783: LD_INT 0
125785: PPUSH
125786: PPUSH
// begin repeat wait ( 0 0$1 ) ;
125787: LD_INT 35
125789: PPUSH
125790: CALL_OW 67
// for i in FilterUnitsInArea ( base_russians , [ f_side , 2 ] ) do
125794: LD_ADDR_VAR 0 1
125798: PUSH
125799: LD_INT 2
125801: PPUSH
125802: LD_INT 22
125804: PUSH
125805: LD_INT 2
125807: PUSH
125808: EMPTY
125809: LIST
125810: LIST
125811: PPUSH
125812: CALL_OW 70
125816: PUSH
125817: FOR_IN
125818: IFFALSE 125865
// if GetClass ( i ) = class_scientistic or GetClass ( IsDrivenBy ( i ) ) = class_scientistic then
125820: LD_VAR 0 1
125824: PPUSH
125825: CALL_OW 257
125829: PUSH
125830: LD_INT 4
125832: EQUAL
125833: PUSH
125834: LD_VAR 0 1
125838: PPUSH
125839: CALL_OW 311
125843: PPUSH
125844: CALL_OW 257
125848: PUSH
125849: LD_INT 4
125851: EQUAL
125852: OR
125853: IFFALSE 125863
// temp = 1 ;
125855: LD_ADDR_VAR 0 2
125859: PUSH
125860: LD_INT 1
125862: ST_TO_ADDR
125863: GO 125817
125865: POP
125866: POP
// until temp = 1 ;
125867: LD_VAR 0 2
125871: PUSH
125872: LD_INT 1
125874: EQUAL
125875: IFFALSE 125787
// SetAreaMapShow ( ContaminationArea , 0 ) ;
125877: LD_INT 37
125879: PPUSH
125880: LD_INT 0
125882: PPUSH
125883: CALL_OW 424
// wait ( 0 0$0.2 ) ;
125887: LD_INT 7
125889: PPUSH
125890: CALL_OW 67
// case difficulty of 1 :
125894: LD_OWVAR 67
125898: PUSH
125899: LD_INT 1
125901: DOUBLE
125902: EQUAL
125903: IFTRUE 125907
125905: GO 125917
125907: POP
// Query ( Contamination_easy ) ; 2 :
125908: LD_STRING Contamination_easy
125910: PPUSH
125911: CALL_OW 97
125915: GO 125954
125917: LD_INT 2
125919: DOUBLE
125920: EQUAL
125921: IFTRUE 125925
125923: GO 125935
125925: POP
// Query ( Contamination_medium ) ; 3 :
125926: LD_STRING Contamination_medium
125928: PPUSH
125929: CALL_OW 97
125933: GO 125954
125935: LD_INT 3
125937: DOUBLE
125938: EQUAL
125939: IFTRUE 125943
125941: GO 125953
125943: POP
// Query ( Contamination_hard ) ; end ;
125944: LD_STRING Contamination_hard
125946: PPUSH
125947: CALL_OW 97
125951: GO 125954
125953: POP
// SetAreaMapShow ( ContaminationArea1 , 5 ) ;
125954: LD_INT 38
125956: PPUSH
125957: LD_INT 5
125959: PPUSH
125960: CALL_OW 424
// SetAreaMapShow ( ContaminationArea2 , 5 ) ;
125964: LD_INT 39
125966: PPUSH
125967: LD_INT 5
125969: PPUSH
125970: CALL_OW 424
// SetAreaMapShow ( ContaminationArea3 , 5 ) ;
125974: LD_INT 40
125976: PPUSH
125977: LD_INT 5
125979: PPUSH
125980: CALL_OW 424
// end ;
125984: PPOPN 2
125986: END
// on SibDepositContaminated ( un , x , y ) do var i , temp , area ;
125987: LD_INT 0
125989: PPUSH
125990: PPUSH
125991: PPUSH
// begin for i in TargetDeposits do
125992: LD_ADDR_VAR 0 4
125996: PUSH
125997: LD_EXP 229
126001: PUSH
126002: FOR_IN
126003: IFFALSE 126165
// if x = i [ 1 ] and y = i [ 2 ] then
126005: LD_VAR 0 2
126009: PUSH
126010: LD_VAR 0 4
126014: PUSH
126015: LD_INT 1
126017: ARRAY
126018: EQUAL
126019: PUSH
126020: LD_VAR 0 3
126024: PUSH
126025: LD_VAR 0 4
126029: PUSH
126030: LD_INT 2
126032: ARRAY
126033: EQUAL
126034: AND
126035: IFFALSE 126163
// begin Contamination_count = Contamination_count - 1 ;
126037: LD_ADDR_EXP 228
126041: PUSH
126042: LD_EXP 228
126046: PUSH
126047: LD_INT 1
126049: MINUS
126050: ST_TO_ADDR
// if IsInArea ( un , ContaminationArea1 ) then
126051: LD_VAR 0 1
126055: PPUSH
126056: LD_INT 38
126058: PPUSH
126059: CALL_OW 308
126063: IFFALSE 126093
// Contamination_sci = Contamination_sci ^ [ [ un , ContaminationArea1 ] ] else
126065: LD_ADDR_EXP 227
126069: PUSH
126070: LD_EXP 227
126074: PUSH
126075: LD_VAR 0 1
126079: PUSH
126080: LD_INT 38
126082: PUSH
126083: EMPTY
126084: LIST
126085: LIST
126086: PUSH
126087: EMPTY
126088: LIST
126089: ADD
126090: ST_TO_ADDR
126091: GO 126161
// if IsInArea ( un , ContaminationArea2 ) then
126093: LD_VAR 0 1
126097: PPUSH
126098: LD_INT 39
126100: PPUSH
126101: CALL_OW 308
126105: IFFALSE 126135
// Contamination_sci = Contamination_sci ^ [ [ un , ContaminationArea2 ] ] else
126107: LD_ADDR_EXP 227
126111: PUSH
126112: LD_EXP 227
126116: PUSH
126117: LD_VAR 0 1
126121: PUSH
126122: LD_INT 39
126124: PUSH
126125: EMPTY
126126: LIST
126127: LIST
126128: PUSH
126129: EMPTY
126130: LIST
126131: ADD
126132: ST_TO_ADDR
126133: GO 126161
// Contamination_sci = Contamination_sci ^ [ [ un , ContaminationArea3 ] ] ;
126135: LD_ADDR_EXP 227
126139: PUSH
126140: LD_EXP 227
126144: PUSH
126145: LD_VAR 0 1
126149: PUSH
126150: LD_INT 40
126152: PUSH
126153: EMPTY
126154: LIST
126155: LIST
126156: PUSH
126157: EMPTY
126158: LIST
126159: ADD
126160: ST_TO_ADDR
// break ;
126161: GO 126165
// end ;
126163: GO 126002
126165: POP
126166: POP
// end ;
126167: PPOPN 6
126169: END
// every 0 0$1 trigger Contamination_sci > 0 do var i , temp ;
126170: LD_EXP 227
126174: PUSH
126175: LD_INT 0
126177: GREATER
126178: IFFALSE 126315
126180: GO 126182
126182: DISABLE
126183: LD_INT 0
126185: PPUSH
126186: PPUSH
// begin for i in Contamination_sci do
126187: LD_ADDR_VAR 0 1
126191: PUSH
126192: LD_EXP 227
126196: PUSH
126197: FOR_IN
126198: IFFALSE 126243
// if not IsInArea ( i [ 1 ] , i [ 2 ] ) then
126200: LD_VAR 0 1
126204: PUSH
126205: LD_INT 1
126207: ARRAY
126208: PPUSH
126209: LD_VAR 0 1
126213: PUSH
126214: LD_INT 2
126216: ARRAY
126217: PPUSH
126218: CALL_OW 308
126222: NOT
126223: IFFALSE 126241
// SetLives ( i [ 1 ] , 0 ) ;
126225: LD_VAR 0 1
126229: PUSH
126230: LD_INT 1
126232: ARRAY
126233: PPUSH
126234: LD_INT 0
126236: PPUSH
126237: CALL_OW 234
126241: GO 126197
126243: POP
126244: POP
// for i = 1 to Contamination_sci do
126245: LD_ADDR_VAR 0 1
126249: PUSH
126250: DOUBLE
126251: LD_INT 1
126253: DEC
126254: ST_TO_ADDR
126255: LD_EXP 227
126259: PUSH
126260: FOR_TO
126261: IFFALSE 126312
// if GetLives ( Contamination_sci [ i ] [ 1 ] ) = 0 then
126263: LD_EXP 227
126267: PUSH
126268: LD_VAR 0 1
126272: ARRAY
126273: PUSH
126274: LD_INT 1
126276: ARRAY
126277: PPUSH
126278: CALL_OW 256
126282: PUSH
126283: LD_INT 0
126285: EQUAL
126286: IFFALSE 126310
// begin Contamination_sci = Delete ( Contamination_sci , i ) ;
126288: LD_ADDR_EXP 227
126292: PUSH
126293: LD_EXP 227
126297: PPUSH
126298: LD_VAR 0 1
126302: PPUSH
126303: CALL_OW 3
126307: ST_TO_ADDR
// break ;
126308: GO 126312
// end ;
126310: GO 126260
126312: POP
126313: POP
// enable ;
126314: ENABLE
// end ;
126315: PPOPN 2
126317: END
// every 0 0$1 trigger Contamination_count = 0 do
126318: LD_EXP 228
126322: PUSH
126323: LD_INT 0
126325: EQUAL
126326: IFFALSE 126338
126328: GO 126330
126330: DISABLE
// begin GameOver ( 1 ) ;
126331: LD_INT 1
126333: PPUSH
126334: CALL 129571 0 1
// end ;
126338: END
// on SiberiteRocketExploded ( un , x , y ) do begin if InArea ( x , y , base_russians ) then
126339: LD_VAR 0 2
126343: PPUSH
126344: LD_VAR 0 3
126348: PPUSH
126349: LD_INT 2
126351: PPUSH
126352: CALL_OW 309
126356: IFFALSE 126365
// GameOver ( 0 ) ;
126358: LD_INT 0
126360: PPUSH
126361: CALL 129571 0 1
// if InArea ( x , y , base_us ) then
126365: LD_VAR 0 2
126369: PPUSH
126370: LD_VAR 0 3
126374: PPUSH
126375: LD_INT 3
126377: PPUSH
126378: CALL_OW 309
126382: IFFALSE 126392
// AmericansNuked = 1 ;
126384: LD_ADDR_EXP 226
126388: PUSH
126389: LD_INT 1
126391: ST_TO_ADDR
// end ;
126392: PPOPN 3
126394: END
// every 0 0$1 do var i , d , temp , temp2 , temp_list ;
126395: GO 126397
126397: DISABLE
126398: LD_INT 0
126400: PPUSH
126401: PPUSH
126402: PPUSH
126403: PPUSH
126404: PPUSH
// begin Randomize ;
126405: CALL_OW 10
// if 1 in Dlg_cap then
126409: LD_INT 1
126411: PUSH
126412: LD_EXP 230
126416: IN
126417: IFFALSE 127184
// begin temp = UnitFilter ( ai_soldiers [ 1 ] ^ ai_engineers [ 1 ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] , [ f_class , class_apeman_engineer ] ] ) ;
126419: LD_ADDR_VAR 0 3
126423: PUSH
126424: LD_EXP 50
126428: PUSH
126429: LD_INT 1
126431: ARRAY
126432: PUSH
126433: LD_EXP 52
126437: PUSH
126438: LD_INT 1
126440: ARRAY
126441: ADD
126442: PPUSH
126443: LD_INT 2
126445: PUSH
126446: LD_INT 25
126448: PUSH
126449: LD_INT 12
126451: PUSH
126452: EMPTY
126453: LIST
126454: LIST
126455: PUSH
126456: LD_INT 25
126458: PUSH
126459: LD_INT 15
126461: PUSH
126462: EMPTY
126463: LIST
126464: LIST
126465: PUSH
126466: LD_INT 25
126468: PUSH
126469: LD_INT 17
126471: PUSH
126472: EMPTY
126473: LIST
126474: LIST
126475: PUSH
126476: LD_INT 25
126478: PUSH
126479: LD_INT 16
126481: PUSH
126482: EMPTY
126483: LIST
126484: LIST
126485: PUSH
126486: EMPTY
126487: LIST
126488: LIST
126489: LIST
126490: LIST
126491: LIST
126492: PPUSH
126493: CALL_OW 72
126497: ST_TO_ADDR
// temp_list = UnitFilter ( ai_soldiers [ 1 ] ^ ai_engineers [ 1 ] ^ ai_mechanics_defend [ 1 ] ^ ai_scientists [ 1 ] , [ f_ok ] ) ;
126498: LD_ADDR_VAR 0 5
126502: PUSH
126503: LD_EXP 50
126507: PUSH
126508: LD_INT 1
126510: ARRAY
126511: PUSH
126512: LD_EXP 52
126516: PUSH
126517: LD_INT 1
126519: ARRAY
126520: ADD
126521: PUSH
126522: LD_EXP 53
126526: PUSH
126527: LD_INT 1
126529: ARRAY
126530: ADD
126531: PUSH
126532: LD_EXP 55
126536: PUSH
126537: LD_INT 1
126539: ARRAY
126540: ADD
126541: PPUSH
126542: LD_INT 50
126544: PUSH
126545: EMPTY
126546: LIST
126547: PPUSH
126548: CALL_OW 72
126552: ST_TO_ADDR
// temp_list = temp_list diff temp ^ Kurt ^ Gordon ^ Kozlov ;
126553: LD_ADDR_VAR 0 5
126557: PUSH
126558: LD_VAR 0 5
126562: PUSH
126563: LD_VAR 0 3
126567: PUSH
126568: LD_EXP 39
126572: ADD
126573: PUSH
126574: LD_EXP 42
126578: ADD
126579: PUSH
126580: LD_EXP 43
126584: ADD
126585: DIFF
126586: ST_TO_ADDR
// temp = [ ] ;
126587: LD_ADDR_VAR 0 3
126591: PUSH
126592: EMPTY
126593: ST_TO_ADDR
// for i = 1 to 2 do
126594: LD_ADDR_VAR 0 1
126598: PUSH
126599: DOUBLE
126600: LD_INT 1
126602: DEC
126603: ST_TO_ADDR
126604: LD_INT 2
126606: PUSH
126607: FOR_TO
126608: IFFALSE 126668
// begin temp2 = temp_list [ Rand ( 1 , temp_list ) ] ;
126610: LD_ADDR_VAR 0 4
126614: PUSH
126615: LD_VAR 0 5
126619: PUSH
126620: LD_INT 1
126622: PPUSH
126623: LD_VAR 0 5
126627: PPUSH
126628: CALL_OW 12
126632: ARRAY
126633: ST_TO_ADDR
// temp_list = temp_list diff temp2 ;
126634: LD_ADDR_VAR 0 5
126638: PUSH
126639: LD_VAR 0 5
126643: PUSH
126644: LD_VAR 0 4
126648: DIFF
126649: ST_TO_ADDR
// temp = temp ^ temp2 ;
126650: LD_ADDR_VAR 0 3
126654: PUSH
126655: LD_VAR 0 3
126659: PUSH
126660: LD_VAR 0 4
126664: ADD
126665: ST_TO_ADDR
// end ;
126666: GO 126607
126668: POP
126669: POP
// case LegionLeader of Kurt :
126670: LD_EXP 45
126674: PUSH
126675: LD_EXP 39
126679: DOUBLE
126680: EQUAL
126681: IFTRUE 126685
126683: GO 126696
126685: POP
// d = 2 ; Gordon :
126686: LD_ADDR_VAR 0 2
126690: PUSH
126691: LD_INT 2
126693: ST_TO_ADDR
126694: GO 126718
126696: LD_EXP 42
126700: DOUBLE
126701: EQUAL
126702: IFTRUE 126706
126704: GO 126717
126706: POP
// d = 3 ; end ;
126707: LD_ADDR_VAR 0 2
126711: PUSH
126712: LD_INT 3
126714: ST_TO_ADDR
126715: GO 126718
126717: POP
// if d > 0 then
126718: LD_VAR 0 2
126722: PUSH
126723: LD_INT 0
126725: GREATER
126726: IFFALSE 126967
// begin async ;
126728: ASYNC
// case temp [ 1 ] of Louis :
126729: LD_VAR 0 3
126733: PUSH
126734: LD_INT 1
126736: ARRAY
126737: PUSH
126738: LD_EXP 41
126742: DOUBLE
126743: EQUAL
126744: IFTRUE 126748
126746: GO 126769
126748: POP
// Say ( Louis , cap_le_Louis & d ) ; Martin :
126749: LD_EXP 41
126753: PPUSH
126754: LD_STRING cap_le_Louis
126756: PUSH
126757: LD_VAR 0 2
126761: STR
126762: PPUSH
126763: CALL_OW 88
126767: GO 126959
126769: LD_EXP 40
126773: DOUBLE
126774: EQUAL
126775: IFTRUE 126779
126777: GO 126800
126779: POP
// Say ( Martin , cap_le_Martin & d ) ; MarkB :
126780: LD_EXP 40
126784: PPUSH
126785: LD_STRING cap_le_Martin
126787: PUSH
126788: LD_VAR 0 2
126792: STR
126793: PPUSH
126794: CALL_OW 88
126798: GO 126959
126800: LD_EXP 38
126804: DOUBLE
126805: EQUAL
126806: IFTRUE 126810
126808: GO 126831
126810: POP
// Say ( MarkB , cap_le_Mark & d ) ; Suze :
126811: LD_EXP 38
126815: PPUSH
126816: LD_STRING cap_le_Mark
126818: PUSH
126819: LD_VAR 0 2
126823: STR
126824: PPUSH
126825: CALL_OW 88
126829: GO 126959
126831: LD_EXP 37
126835: DOUBLE
126836: EQUAL
126837: IFTRUE 126841
126839: GO 126862
126841: POP
// Say ( Suze , cap_le_Suze & d ) ; Hadarach :
126842: LD_EXP 37
126846: PPUSH
126847: LD_STRING cap_le_Suze
126849: PUSH
126850: LD_VAR 0 2
126854: STR
126855: PPUSH
126856: CALL_OW 88
126860: GO 126959
126862: LD_EXP 44
126866: DOUBLE
126867: EQUAL
126868: IFTRUE 126872
126870: GO 126893
126872: POP
// Say ( Hadarach , cap_le_Hadarach & d ) ; else
126873: LD_EXP 44
126877: PPUSH
126878: LD_STRING cap_le_Hadarach
126880: PUSH
126881: LD_VAR 0 2
126885: STR
126886: PPUSH
126887: CALL_OW 88
126891: GO 126959
126893: POP
// if GetSex ( temp [ 1 ] ) = sex_male then
126894: LD_VAR 0 3
126898: PUSH
126899: LD_INT 1
126901: ARRAY
126902: PPUSH
126903: CALL_OW 258
126907: PUSH
126908: LD_INT 1
126910: EQUAL
126911: IFFALSE 126937
// Say ( temp [ 1 ] , cap_le_M & d ) else
126913: LD_VAR 0 3
126917: PUSH
126918: LD_INT 1
126920: ARRAY
126921: PPUSH
126922: LD_STRING cap_le_M
126924: PUSH
126925: LD_VAR 0 2
126929: STR
126930: PPUSH
126931: CALL_OW 88
126935: GO 126959
// Say ( temp [ 1 ] , cap_le_F & d ) ; end ;
126937: LD_VAR 0 3
126941: PUSH
126942: LD_INT 1
126944: ARRAY
126945: PPUSH
126946: LD_STRING cap_le_F
126948: PUSH
126949: LD_VAR 0 2
126953: STR
126954: PPUSH
126955: CALL_OW 88
// sync ;
126959: SYNC
// Wait ( 0 0$7 ) ;
126960: LD_INT 245
126962: PPUSH
126963: CALL_OW 67
// end ; case temp [ 2 ] of Louis :
126967: LD_VAR 0 3
126971: PUSH
126972: LD_INT 2
126974: ARRAY
126975: PUSH
126976: LD_EXP 41
126980: DOUBLE
126981: EQUAL
126982: IFTRUE 126986
126984: GO 127001
126986: POP
// Say ( Louis , cap_le_Louis1 ) ; Martin :
126987: LD_EXP 41
126991: PPUSH
126992: LD_STRING cap_le_Louis1
126994: PPUSH
126995: CALL_OW 88
126999: GO 127155
127001: LD_EXP 40
127005: DOUBLE
127006: EQUAL
127007: IFTRUE 127011
127009: GO 127026
127011: POP
// Say ( Martin , cap_le_Martin1 ) ; MarkB :
127012: LD_EXP 40
127016: PPUSH
127017: LD_STRING cap_le_Martin1
127019: PPUSH
127020: CALL_OW 88
127024: GO 127155
127026: LD_EXP 38
127030: DOUBLE
127031: EQUAL
127032: IFTRUE 127036
127034: GO 127051
127036: POP
// Say ( MarkB , cap_le_Mark1 ) ; Suze :
127037: LD_EXP 38
127041: PPUSH
127042: LD_STRING cap_le_Mark1
127044: PPUSH
127045: CALL_OW 88
127049: GO 127155
127051: LD_EXP 37
127055: DOUBLE
127056: EQUAL
127057: IFTRUE 127061
127059: GO 127076
127061: POP
// Say ( Suze , cap_le_Suze1 ) ; Hadarach :
127062: LD_EXP 37
127066: PPUSH
127067: LD_STRING cap_le_Suze1
127069: PPUSH
127070: CALL_OW 88
127074: GO 127155
127076: LD_EXP 44
127080: DOUBLE
127081: EQUAL
127082: IFTRUE 127086
127084: GO 127101
127086: POP
// Say ( Hadarach , cap_le_Hadarach1 ) ; else
127087: LD_EXP 44
127091: PPUSH
127092: LD_STRING cap_le_Hadarach1
127094: PPUSH
127095: CALL_OW 88
127099: GO 127155
127101: POP
// if GetSex ( temp [ 2 ] ) = sex_male then
127102: LD_VAR 0 3
127106: PUSH
127107: LD_INT 2
127109: ARRAY
127110: PPUSH
127111: CALL_OW 258
127115: PUSH
127116: LD_INT 1
127118: EQUAL
127119: IFFALSE 127139
// Say ( temp [ 2 ] , cap_le_M1 ) else
127121: LD_VAR 0 3
127125: PUSH
127126: LD_INT 2
127128: ARRAY
127129: PPUSH
127130: LD_STRING cap_le_M1
127132: PPUSH
127133: CALL_OW 88
127137: GO 127155
// Say ( temp [ 2 ] , cap_le_F1 ) ; end ;
127139: LD_VAR 0 3
127143: PUSH
127144: LD_INT 2
127146: ARRAY
127147: PPUSH
127148: LD_STRING cap_le_F1
127150: PPUSH
127151: CALL_OW 88
// Dlg_cap = Dlg_cap diff 1 ;
127155: LD_ADDR_EXP 230
127159: PUSH
127160: LD_EXP 230
127164: PUSH
127165: LD_INT 1
127167: DIFF
127168: ST_TO_ADDR
// Dlg_cap = Dlg_cap ^ - 1 ;
127169: LD_ADDR_EXP 230
127173: PUSH
127174: LD_EXP 230
127178: PUSH
127179: LD_INT 1
127181: NEG
127182: ADD
127183: ST_TO_ADDR
// end ; if 3 in Dlg_cap then
127184: LD_INT 3
127186: PUSH
127187: LD_EXP 230
127191: IN
127192: IFFALSE 127472
// begin temp = UnitFilter ( ai_soldiers [ 3 ] ^ ai_engineers [ 3 ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] , [ f_class , class_apeman_engineer ] ] ) ;
127194: LD_ADDR_VAR 0 3
127198: PUSH
127199: LD_EXP 50
127203: PUSH
127204: LD_INT 3
127206: ARRAY
127207: PUSH
127208: LD_EXP 52
127212: PUSH
127213: LD_INT 3
127215: ARRAY
127216: ADD
127217: PPUSH
127218: LD_INT 2
127220: PUSH
127221: LD_INT 25
127223: PUSH
127224: LD_INT 12
127226: PUSH
127227: EMPTY
127228: LIST
127229: LIST
127230: PUSH
127231: LD_INT 25
127233: PUSH
127234: LD_INT 15
127236: PUSH
127237: EMPTY
127238: LIST
127239: LIST
127240: PUSH
127241: LD_INT 25
127243: PUSH
127244: LD_INT 17
127246: PUSH
127247: EMPTY
127248: LIST
127249: LIST
127250: PUSH
127251: LD_INT 25
127253: PUSH
127254: LD_INT 16
127256: PUSH
127257: EMPTY
127258: LIST
127259: LIST
127260: PUSH
127261: EMPTY
127262: LIST
127263: LIST
127264: LIST
127265: LIST
127266: LIST
127267: PPUSH
127268: CALL_OW 72
127272: ST_TO_ADDR
// temp_list = UnitFilter ( ai_soldiers [ 3 ] ^ ai_engineers [ 3 ] ^ ai_mechanics_defend [ 3 ] ^ ai_scientists [ 3 ] , [ f_ok ] ) ;
127273: LD_ADDR_VAR 0 5
127277: PUSH
127278: LD_EXP 50
127282: PUSH
127283: LD_INT 3
127285: ARRAY
127286: PUSH
127287: LD_EXP 52
127291: PUSH
127292: LD_INT 3
127294: ARRAY
127295: ADD
127296: PUSH
127297: LD_EXP 53
127301: PUSH
127302: LD_INT 3
127304: ARRAY
127305: ADD
127306: PUSH
127307: LD_EXP 55
127311: PUSH
127312: LD_INT 3
127314: ARRAY
127315: ADD
127316: PPUSH
127317: LD_INT 50
127319: PUSH
127320: EMPTY
127321: LIST
127322: PPUSH
127323: CALL_OW 72
127327: ST_TO_ADDR
// temp_list = temp_list diff temp ^ Powell ;
127328: LD_ADDR_VAR 0 5
127332: PUSH
127333: LD_VAR 0 5
127337: PUSH
127338: LD_VAR 0 3
127342: PUSH
127343: LD_EXP 36
127347: ADD
127348: DIFF
127349: ST_TO_ADDR
// temp = temp_list [ Rand ( 1 , temp_list ) ] ;
127350: LD_ADDR_VAR 0 3
127354: PUSH
127355: LD_VAR 0 5
127359: PUSH
127360: LD_INT 1
127362: PPUSH
127363: LD_VAR 0 5
127367: PPUSH
127368: CALL_OW 12
127372: ARRAY
127373: ST_TO_ADDR
// d = Rand ( 1 , 2 ) ;
127374: LD_ADDR_VAR 0 2
127378: PUSH
127379: LD_INT 1
127381: PPUSH
127382: LD_INT 2
127384: PPUSH
127385: CALL_OW 12
127389: ST_TO_ADDR
// if GetSex ( temp ) = sex_male then
127390: LD_VAR 0 3
127394: PPUSH
127395: CALL_OW 258
127399: PUSH
127400: LD_INT 1
127402: EQUAL
127403: IFFALSE 127425
// Say ( temp , cap_am_M & d ) else
127405: LD_VAR 0 3
127409: PPUSH
127410: LD_STRING cap_am_M
127412: PUSH
127413: LD_VAR 0 2
127417: STR
127418: PPUSH
127419: CALL_OW 88
127423: GO 127443
// Say ( temp , cap_am_F & d ) ;
127425: LD_VAR 0 3
127429: PPUSH
127430: LD_STRING cap_am_F
127432: PUSH
127433: LD_VAR 0 2
127437: STR
127438: PPUSH
127439: CALL_OW 88
// Dlg_cap = Dlg_cap diff 3 ;
127443: LD_ADDR_EXP 230
127447: PUSH
127448: LD_EXP 230
127452: PUSH
127453: LD_INT 3
127455: DIFF
127456: ST_TO_ADDR
// Dlg_cap = Dlg_cap ^ - 3 ;
127457: LD_ADDR_EXP 230
127461: PUSH
127462: LD_EXP 230
127466: PUSH
127467: LD_INT 3
127469: NEG
127470: ADD
127471: ST_TO_ADDR
// end ; if ai_units_irradiated > 0 and DRadCount < 5 then
127472: LD_EXP 158
127476: PUSH
127477: LD_INT 0
127479: GREATER
127480: PUSH
127481: LD_EXP 233
127485: PUSH
127486: LD_INT 5
127488: LESS
127489: AND
127490: IFFALSE 128183
// begin DRadTime = DRadTime - 0 0$1 ;
127492: LD_ADDR_EXP 232
127496: PUSH
127497: LD_EXP 232
127501: PUSH
127502: LD_INT 35
127504: MINUS
127505: ST_TO_ADDR
// if DRadTime <= 0 then
127506: LD_EXP 232
127510: PUSH
127511: LD_INT 0
127513: LESSEQUAL
127514: IFFALSE 127743
// begin temp_list = [ ] ;
127516: LD_ADDR_VAR 0 5
127520: PUSH
127521: EMPTY
127522: ST_TO_ADDR
// for i in ai_units_irradiated do
127523: LD_ADDR_VAR 0 1
127527: PUSH
127528: LD_EXP 158
127532: PUSH
127533: FOR_IN
127534: IFFALSE 127559
// temp_list = temp_list ^ UnitsInside ( i ) ;
127536: LD_ADDR_VAR 0 5
127540: PUSH
127541: LD_VAR 0 5
127545: PUSH
127546: LD_VAR 0 1
127550: PPUSH
127551: CALL_OW 313
127555: ADD
127556: ST_TO_ADDR
127557: GO 127533
127559: POP
127560: POP
// if temp_list = [ ] then
127561: LD_VAR 0 5
127565: PUSH
127566: EMPTY
127567: EQUAL
127568: IFFALSE 127588
// DRadTime = Rand ( 0 0$10 , 0 0$40 ) else
127570: LD_ADDR_EXP 232
127574: PUSH
127575: LD_INT 350
127577: PPUSH
127578: LD_INT 1400
127580: PPUSH
127581: CALL_OW 12
127585: ST_TO_ADDR
127586: GO 127743
// begin temp = temp_list [ Rand ( 1 , temp_list ) ] ;
127588: LD_ADDR_VAR 0 3
127592: PUSH
127593: LD_VAR 0 5
127597: PUSH
127598: LD_INT 1
127600: PPUSH
127601: LD_VAR 0 5
127605: PPUSH
127606: CALL_OW 12
127610: ARRAY
127611: ST_TO_ADDR
// d = Rand ( 1 , 3 ) ;
127612: LD_ADDR_VAR 0 2
127616: PUSH
127617: LD_INT 1
127619: PPUSH
127620: LD_INT 3
127622: PPUSH
127623: CALL_OW 12
127627: ST_TO_ADDR
// if temp = Suze then
127628: LD_VAR 0 3
127632: PUSH
127633: LD_EXP 37
127637: EQUAL
127638: IFFALSE 127660
// Say ( Suze , rad_Suze & d ) else
127640: LD_EXP 37
127644: PPUSH
127645: LD_STRING rad_Suze
127647: PUSH
127648: LD_VAR 0 2
127652: STR
127653: PPUSH
127654: CALL_OW 88
127658: GO 127713
// if GetSex ( temp ) = sex_male then
127660: LD_VAR 0 3
127664: PPUSH
127665: CALL_OW 258
127669: PUSH
127670: LD_INT 1
127672: EQUAL
127673: IFFALSE 127695
// Say ( temp , rad_M & d ) else
127675: LD_VAR 0 3
127679: PPUSH
127680: LD_STRING rad_M
127682: PUSH
127683: LD_VAR 0 2
127687: STR
127688: PPUSH
127689: CALL_OW 88
127693: GO 127713
// Say ( temp , rad_F & d ) ;
127695: LD_VAR 0 3
127699: PPUSH
127700: LD_STRING rad_F
127702: PUSH
127703: LD_VAR 0 2
127707: STR
127708: PPUSH
127709: CALL_OW 88
// DRadTime = Rand ( 0 0$10 , 0 0$40 ) ;
127713: LD_ADDR_EXP 232
127717: PUSH
127718: LD_INT 350
127720: PPUSH
127721: LD_INT 1400
127723: PPUSH
127724: CALL_OW 12
127728: ST_TO_ADDR
// DRadCount = DRadCount + 1 end ;
127729: LD_ADDR_EXP 233
127733: PUSH
127734: LD_EXP 233
127738: PUSH
127739: LD_INT 1
127741: PLUS
127742: ST_TO_ADDR
// end ; if not DRadEng then
127743: LD_EXP 234
127747: NOT
127748: IFFALSE 128183
// begin temp_list = [ ] ;
127750: LD_ADDR_VAR 0 5
127754: PUSH
127755: EMPTY
127756: ST_TO_ADDR
// if ArtUse_SibPlant_contaminated > 0 then
127757: LD_EXP 206
127761: PUSH
127762: LD_INT 0
127764: GREATER
127765: IFFALSE 127804
// for i in ArtUse_SibPlant_contaminated do
127767: LD_ADDR_VAR 0 1
127771: PUSH
127772: LD_EXP 206
127776: PUSH
127777: FOR_IN
127778: IFFALSE 127802
// temp_list = temp_list ^ i [ 1 ] ;
127780: LD_ADDR_VAR 0 5
127784: PUSH
127785: LD_VAR 0 5
127789: PUSH
127790: LD_VAR 0 1
127794: PUSH
127795: LD_INT 1
127797: ARRAY
127798: ADD
127799: ST_TO_ADDR
127800: GO 127777
127802: POP
127803: POP
// if ArtUse_Beh_count > 0 then
127804: LD_EXP 209
127808: PUSH
127809: LD_INT 0
127811: GREATER
127812: IFFALSE 127865
// for i in ArtUse_Beh_count do
127814: LD_ADDR_VAR 0 1
127818: PUSH
127819: LD_EXP 209
127823: PUSH
127824: FOR_IN
127825: IFFALSE 127863
// temp_list = temp_list ^ HexInfo ( i [ 3 ] , i [ 4 ] ) ;
127827: LD_ADDR_VAR 0 5
127831: PUSH
127832: LD_VAR 0 5
127836: PUSH
127837: LD_VAR 0 1
127841: PUSH
127842: LD_INT 3
127844: ARRAY
127845: PPUSH
127846: LD_VAR 0 1
127850: PUSH
127851: LD_INT 4
127853: ARRAY
127854: PPUSH
127855: CALL_OW 428
127859: ADD
127860: ST_TO_ADDR
127861: GO 127824
127863: POP
127864: POP
// for i in temp_list do
127865: LD_ADDR_VAR 0 1
127869: PUSH
127870: LD_VAR 0 5
127874: PUSH
127875: FOR_IN
127876: IFFALSE 128181
// begin if GetType ( i ) = unit_building then
127878: LD_VAR 0 1
127882: PPUSH
127883: CALL_OW 247
127887: PUSH
127888: LD_INT 3
127890: EQUAL
127891: IFFALSE 127903
// temp = 10 else
127893: LD_ADDR_VAR 0 3
127897: PUSH
127898: LD_INT 10
127900: ST_TO_ADDR
127901: GO 127911
// temp = 20 ;
127903: LD_ADDR_VAR 0 3
127907: PUSH
127908: LD_INT 20
127910: ST_TO_ADDR
// temp2 = FilterAllUnits ( [ [ f_or , [ f_side , 1 ] , [ f_side , 3 ] , [ f_side , 8 ] ] , [ f_class , class_engineer ] , [ f_dist , i , temp ] ] ) ;
127911: LD_ADDR_VAR 0 4
127915: PUSH
127916: LD_INT 2
127918: PUSH
127919: LD_INT 22
127921: PUSH
127922: LD_INT 1
127924: PUSH
127925: EMPTY
127926: LIST
127927: LIST
127928: PUSH
127929: LD_INT 22
127931: PUSH
127932: LD_INT 3
127934: PUSH
127935: EMPTY
127936: LIST
127937: LIST
127938: PUSH
127939: LD_INT 22
127941: PUSH
127942: LD_INT 8
127944: PUSH
127945: EMPTY
127946: LIST
127947: LIST
127948: PUSH
127949: EMPTY
127950: LIST
127951: LIST
127952: LIST
127953: LIST
127954: PUSH
127955: LD_INT 25
127957: PUSH
127958: LD_INT 2
127960: PUSH
127961: EMPTY
127962: LIST
127963: LIST
127964: PUSH
127965: LD_INT 91
127967: PUSH
127968: LD_VAR 0 1
127972: PUSH
127973: LD_VAR 0 3
127977: PUSH
127978: EMPTY
127979: LIST
127980: LIST
127981: LIST
127982: PUSH
127983: EMPTY
127984: LIST
127985: LIST
127986: LIST
127987: PPUSH
127988: CALL_OW 69
127992: ST_TO_ADDR
// if temp2 > 0 then
127993: LD_VAR 0 4
127997: PUSH
127998: LD_INT 0
128000: GREATER
128001: IFFALSE 128179
// begin case GetNation ( temp2 [ 1 ] ) of nation_russian :
128003: LD_VAR 0 4
128007: PUSH
128008: LD_INT 1
128010: ARRAY
128011: PPUSH
128012: CALL_OW 248
128016: PUSH
128017: LD_INT 3
128019: DOUBLE
128020: EQUAL
128021: IFTRUE 128025
128023: GO 128081
128025: POP
// if GetSex ( temp2 [ 1 ] ) = sex_male then
128026: LD_VAR 0 4
128030: PUSH
128031: LD_INT 1
128033: ARRAY
128034: PPUSH
128035: CALL_OW 258
128039: PUSH
128040: LD_INT 1
128042: EQUAL
128043: IFFALSE 128063
// Say ( temp2 [ 1 ] , rad_engru_M ) else
128045: LD_VAR 0 4
128049: PUSH
128050: LD_INT 1
128052: ARRAY
128053: PPUSH
128054: LD_STRING rad_engru_M
128056: PPUSH
128057: CALL_OW 88
128061: GO 128079
// Say ( temp2 [ 1 ] , rad_engru_F ) ; else
128063: LD_VAR 0 4
128067: PUSH
128068: LD_INT 1
128070: ARRAY
128071: PPUSH
128072: LD_STRING rad_engru_F
128074: PPUSH
128075: CALL_OW 88
128079: GO 128169
128081: POP
// if temp2 [ 1 ] = Louis then
128082: LD_VAR 0 4
128086: PUSH
128087: LD_INT 1
128089: ARRAY
128090: PUSH
128091: LD_EXP 41
128095: EQUAL
128096: IFFALSE 128116
// Say ( temp2 [ 1 ] , rad_eng_Louis ) else
128098: LD_VAR 0 4
128102: PUSH
128103: LD_INT 1
128105: ARRAY
128106: PPUSH
128107: LD_STRING rad_eng_Louis
128109: PPUSH
128110: CALL_OW 88
128114: GO 128169
// if GetSex ( temp2 [ 1 ] ) = sex_male then
128116: LD_VAR 0 4
128120: PUSH
128121: LD_INT 1
128123: ARRAY
128124: PPUSH
128125: CALL_OW 258
128129: PUSH
128130: LD_INT 1
128132: EQUAL
128133: IFFALSE 128153
// Say ( temp2 [ 1 ] , rad_eng_M ) else
128135: LD_VAR 0 4
128139: PUSH
128140: LD_INT 1
128142: ARRAY
128143: PPUSH
128144: LD_STRING rad_eng_M
128146: PPUSH
128147: CALL_OW 88
128151: GO 128169
// Say ( temp2 [ 1 ] , rad_eng_F ) ; end ;
128153: LD_VAR 0 4
128157: PUSH
128158: LD_INT 1
128160: ARRAY
128161: PPUSH
128162: LD_STRING rad_eng_F
128164: PPUSH
128165: CALL_OW 88
// DRadEng = 1 ;
128169: LD_ADDR_EXP 234
128173: PUSH
128174: LD_INT 1
128176: ST_TO_ADDR
// break ;
128177: GO 128181
// end ; end ;
128179: GO 127875
128181: POP
128182: POP
// end ; end ; if DHighRadList > 0 then
128183: LD_EXP 235
128187: PUSH
128188: LD_INT 0
128190: GREATER
128191: IFFALSE 128431
// begin wait ( 0 0$3 ) ;
128193: LD_INT 105
128195: PPUSH
128196: CALL_OW 67
// temp = DHighRadList [ Rand ( 1 , DHighRadList ) ] ;
128200: LD_ADDR_VAR 0 3
128204: PUSH
128205: LD_EXP 235
128209: PUSH
128210: LD_INT 1
128212: PPUSH
128213: LD_EXP 235
128217: PPUSH
128218: CALL_OW 12
128222: ARRAY
128223: ST_TO_ADDR
// d = Rand ( 1 , 2 ) ;
128224: LD_ADDR_VAR 0 2
128228: PUSH
128229: LD_INT 1
128231: PPUSH
128232: LD_INT 2
128234: PPUSH
128235: CALL_OW 12
128239: ST_TO_ADDR
// case temp of Suze :
128240: LD_VAR 0 3
128244: PUSH
128245: LD_EXP 37
128249: DOUBLE
128250: EQUAL
128251: IFTRUE 128255
128253: GO 128270
128255: POP
// Say ( Suze , highrad_Suze ) ; MarkB :
128256: LD_EXP 37
128260: PPUSH
128261: LD_STRING highrad_Suze
128263: PPUSH
128264: CALL_OW 88
128268: GO 128424
128270: LD_EXP 38
128274: DOUBLE
128275: EQUAL
128276: IFTRUE 128280
128278: GO 128295
128280: POP
// Say ( MarkB , highrad_Mark ) ; Martin :
128281: LD_EXP 38
128285: PPUSH
128286: LD_STRING highrad_Mark
128288: PPUSH
128289: CALL_OW 88
128293: GO 128424
128295: LD_EXP 40
128299: DOUBLE
128300: EQUAL
128301: IFTRUE 128305
128303: GO 128320
128305: POP
// Say ( Martin , highrad_Martin ) ; Louis :
128306: LD_EXP 40
128310: PPUSH
128311: LD_STRING highrad_Martin
128313: PPUSH
128314: CALL_OW 88
128318: GO 128424
128320: LD_EXP 41
128324: DOUBLE
128325: EQUAL
128326: IFTRUE 128330
128328: GO 128345
128330: POP
// Say ( Louis , highrad_Louis ) ; Hadarach :
128331: LD_EXP 41
128335: PPUSH
128336: LD_STRING highrad_Louis
128338: PPUSH
128339: CALL_OW 88
128343: GO 128424
128345: LD_EXP 44
128349: DOUBLE
128350: EQUAL
128351: IFTRUE 128355
128353: GO 128370
128355: POP
// Say ( Hadarach , highrad_Hadarach ) ; else
128356: LD_EXP 44
128360: PPUSH
128361: LD_STRING highrad_Hadarach
128363: PPUSH
128364: CALL_OW 88
128368: GO 128424
128370: POP
// if GetSex ( temp ) = sex_male then
128371: LD_VAR 0 3
128375: PPUSH
128376: CALL_OW 258
128380: PUSH
128381: LD_INT 1
128383: EQUAL
128384: IFFALSE 128406
// Say ( temp , highrad_M & d ) else
128386: LD_VAR 0 3
128390: PPUSH
128391: LD_STRING highrad_M
128393: PUSH
128394: LD_VAR 0 2
128398: STR
128399: PPUSH
128400: CALL_OW 88
128404: GO 128424
// Say ( temp , highrad_F & d ) ; end ;
128406: LD_VAR 0 3
128410: PPUSH
128411: LD_STRING highrad_F
128413: PUSH
128414: LD_VAR 0 2
128418: STR
128419: PPUSH
128420: CALL_OW 88
// DHighRadList = [ ] ;
128424: LD_ADDR_EXP 235
128428: PUSH
128429: EMPTY
128430: ST_TO_ADDR
// end ; if ContactTime ( 4 ) < 0 0$5 and dlg_DoubleLaserHack < 3 and 3 in ai_bases then
128431: LD_INT 4
128433: PPUSH
128434: CALL_OW 462
128438: PUSH
128439: LD_INT 175
128441: LESS
128442: PUSH
128443: LD_EXP 236
128447: PUSH
128448: LD_INT 3
128450: LESS
128451: AND
128452: PUSH
128453: LD_INT 3
128455: PUSH
128456: LD_EXP 49
128460: IN
128461: AND
128462: IFFALSE 128862
// begin temp = FilterUnitsInArea ( base_us , [ [ f_side , 1 ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
128464: LD_ADDR_VAR 0 3
128468: PUSH
128469: LD_INT 3
128471: PPUSH
128472: LD_INT 22
128474: PUSH
128475: LD_INT 1
128477: PUSH
128478: EMPTY
128479: LIST
128480: LIST
128481: PUSH
128482: LD_INT 3
128484: PUSH
128485: LD_INT 24
128487: PUSH
128488: LD_INT 1000
128490: PUSH
128491: EMPTY
128492: LIST
128493: LIST
128494: PUSH
128495: EMPTY
128496: LIST
128497: LIST
128498: PUSH
128499: EMPTY
128500: LIST
128501: LIST
128502: PPUSH
128503: CALL_OW 70
128507: ST_TO_ADDR
// if temp > 0 then
128508: LD_VAR 0 3
128512: PUSH
128513: LD_INT 0
128515: GREATER
128516: IFFALSE 128862
// for i in temp do
128518: LD_ADDR_VAR 0 1
128522: PUSH
128523: LD_VAR 0 3
128527: PUSH
128528: FOR_IN
128529: IFFALSE 128860
// if GetSide ( UnitShoot ( i ) ) = 4 then
128531: LD_VAR 0 1
128535: PPUSH
128536: CALL_OW 504
128540: PPUSH
128541: CALL_OW 255
128545: PUSH
128546: LD_INT 4
128548: EQUAL
128549: IFFALSE 128858
// begin case dlg_DoubleLaserHack of 0 :
128551: LD_EXP 236
128555: PUSH
128556: LD_INT 0
128558: DOUBLE
128559: EQUAL
128560: IFTRUE 128564
128562: GO 128725
128564: POP
// begin if UnitsInside ( i ) > 0 then
128565: LD_VAR 0 1
128569: PPUSH
128570: CALL_OW 313
128574: PUSH
128575: LD_INT 0
128577: GREATER
128578: IFFALSE 128609
// begin temp2 = UnitsInside ( i ) [ 1 ] ;
128580: LD_ADDR_VAR 0 4
128584: PUSH
128585: LD_VAR 0 1
128589: PPUSH
128590: CALL_OW 313
128594: PUSH
128595: LD_INT 1
128597: ARRAY
128598: ST_TO_ADDR
// d = 1 ;
128599: LD_ADDR_VAR 0 2
128603: PUSH
128604: LD_INT 1
128606: ST_TO_ADDR
// end else
128607: GO 128655
// begin temp2 = ai_soldiers [ 3 ] [ Rand ( 1 , ai_soldiers [ 3 ] ) ] diff Powell ;
128609: LD_ADDR_VAR 0 4
128613: PUSH
128614: LD_EXP 50
128618: PUSH
128619: LD_INT 3
128621: ARRAY
128622: PUSH
128623: LD_INT 1
128625: PPUSH
128626: LD_EXP 50
128630: PUSH
128631: LD_INT 3
128633: ARRAY
128634: PPUSH
128635: CALL_OW 12
128639: ARRAY
128640: PUSH
128641: LD_EXP 36
128645: DIFF
128646: ST_TO_ADDR
// d = 2 ;
128647: LD_ADDR_VAR 0 2
128651: PUSH
128652: LD_INT 2
128654: ST_TO_ADDR
// end ; if GetSex ( temp2 ) = sex_male then
128655: LD_VAR 0 4
128659: PPUSH
128660: CALL_OW 258
128664: PUSH
128665: LD_INT 1
128667: EQUAL
128668: IFFALSE 128690
// Say ( temp2 , DLHack_solM & d ) else
128670: LD_VAR 0 4
128674: PPUSH
128675: LD_STRING DLHack_solM
128677: PUSH
128678: LD_VAR 0 2
128682: STR
128683: PPUSH
128684: CALL_OW 88
128688: GO 128708
// Say ( temp2 , DLHack_solF & d ) ;
128690: LD_VAR 0 4
128694: PPUSH
128695: LD_STRING DLHack_solF
128697: PUSH
128698: LD_VAR 0 2
128702: STR
128703: PPUSH
128704: CALL_OW 88
// wait ( 0 0$5 ) ;
128708: LD_INT 175
128710: PPUSH
128711: CALL_OW 67
// dlg_DoubleLaserHack = 1 ;
128715: LD_ADDR_EXP 236
128719: PUSH
128720: LD_INT 1
128722: ST_TO_ADDR
// end ; 1 :
128723: GO 128856
128725: LD_INT 1
128727: DOUBLE
128728: EQUAL
128729: IFTRUE 128733
128731: GO 128824
128733: POP
// begin temp2 = ai_scientists [ 3 ] [ Rand ( 1 , ai_scientists [ 3 ] ) ] ;
128734: LD_ADDR_VAR 0 4
128738: PUSH
128739: LD_EXP 55
128743: PUSH
128744: LD_INT 3
128746: ARRAY
128747: PUSH
128748: LD_INT 1
128750: PPUSH
128751: LD_EXP 55
128755: PUSH
128756: LD_INT 3
128758: ARRAY
128759: PPUSH
128760: CALL_OW 12
128764: ARRAY
128765: ST_TO_ADDR
// if GetSex ( temp2 ) = sex_male then
128766: LD_VAR 0 4
128770: PPUSH
128771: CALL_OW 258
128775: PUSH
128776: LD_INT 1
128778: EQUAL
128779: IFFALSE 128795
// Say ( temp2 , DLHack_sciM ) else
128781: LD_VAR 0 4
128785: PPUSH
128786: LD_STRING DLHack_sciM
128788: PPUSH
128789: CALL_OW 88
128793: GO 128807
// Say ( temp2 , DLHack_sciF ) ;
128795: LD_VAR 0 4
128799: PPUSH
128800: LD_STRING DLHack_sciF
128802: PPUSH
128803: CALL_OW 88
// wait ( 0 0$3 ) ;
128807: LD_INT 105
128809: PPUSH
128810: CALL_OW 67
// dlg_DoubleLaserHack = 2 ;
128814: LD_ADDR_EXP 236
128818: PUSH
128819: LD_INT 2
128821: ST_TO_ADDR
// end ; 2 :
128822: GO 128856
128824: LD_INT 2
128826: DOUBLE
128827: EQUAL
128828: IFTRUE 128832
128830: GO 128855
128832: POP
// begin Say ( Powell , DLHack_Powell ) ;
128833: LD_EXP 36
128837: PPUSH
128838: LD_STRING DLHack_Powell
128840: PPUSH
128841: CALL_OW 88
// dlg_DoubleLaserHack = 3 ;
128845: LD_ADDR_EXP 236
128849: PUSH
128850: LD_INT 3
128852: ST_TO_ADDR
// end ; end ;
128853: GO 128856
128855: POP
// break ;
128856: GO 128860
// end ;
128858: GO 128528
128860: POP
128861: POP
// end ; enable ;
128862: ENABLE
// end ;
128863: PPOPN 5
128865: END
// every 0 0$1 do var i , temp ;
128866: GO 128868
128868: DISABLE
128869: LD_INT 0
128871: PPUSH
128872: PPUSH
// begin GSCount = GSCount + 0 0$1 ;
128873: LD_ADDR_EXP 238
128877: PUSH
128878: LD_EXP 238
128882: PUSH
128883: LD_INT 35
128885: PLUS
128886: ST_TO_ADDR
// if GSCount > 10 10$0 and GameStage < 2 then
128887: LD_EXP 238
128891: PUSH
128892: LD_INT 21000
128894: GREATER
128895: PUSH
128896: LD_EXP 237
128900: PUSH
128901: LD_INT 2
128903: LESS
128904: AND
128905: IFFALSE 128929
// begin GameStage = GameStage + 1 ;
128907: LD_ADDR_EXP 237
128911: PUSH
128912: LD_EXP 237
128916: PUSH
128917: LD_INT 1
128919: PLUS
128920: ST_TO_ADDR
// GSCount = 0 ;
128921: LD_ADDR_EXP 238
128925: PUSH
128926: LD_INT 0
128928: ST_TO_ADDR
// end ; strings = [ ] ;
128929: LD_ADDR_EXP 239
128933: PUSH
128934: EMPTY
128935: ST_TO_ADDR
// if testing then
128936: LD_EXP 1
128940: IFFALSE 128975
// strings = strings ^ [ #Am15-1 , tick , GameStage , GameStage ] ;
128942: LD_ADDR_EXP 239
128946: PUSH
128947: LD_EXP 239
128951: PUSH
128952: LD_STRING #Am15-1
128954: PUSH
128955: LD_OWVAR 1
128959: PUSH
128960: LD_STRING GameStage
128962: PUSH
128963: LD_EXP 237
128967: PUSH
128968: EMPTY
128969: LIST
128970: LIST
128971: LIST
128972: LIST
128973: ADD
128974: ST_TO_ADDR
// if difficulty < 3 then
128975: LD_OWVAR 67
128979: PUSH
128980: LD_INT 3
128982: LESS
128983: IFFALSE 129271
// begin if not 1 in BasesDestroyed then
128985: LD_INT 1
128987: PUSH
128988: LD_EXP 196
128992: IN
128993: NOT
128994: IFFALSE 129033
// temp = [ 35 , 30 , 25 ] [ difficulty ] - tick / 2100 else
128996: LD_ADDR_VAR 0 2
129000: PUSH
129001: LD_INT 35
129003: PUSH
129004: LD_INT 30
129006: PUSH
129007: LD_INT 25
129009: PUSH
129010: EMPTY
129011: LIST
129012: LIST
129013: LIST
129014: PUSH
129015: LD_OWVAR 67
129019: ARRAY
129020: PUSH
129021: LD_OWVAR 1
129025: PUSH
129026: LD_INT 2100
129028: DIVREAL
129029: MINUS
129030: ST_TO_ADDR
129031: GO 129068
// temp = [ 60 , 50 , 40 ] [ difficulty ] - tick / 2100 ;
129033: LD_ADDR_VAR 0 2
129037: PUSH
129038: LD_INT 60
129040: PUSH
129041: LD_INT 50
129043: PUSH
129044: LD_INT 40
129046: PUSH
129047: EMPTY
129048: LIST
129049: LIST
129050: LIST
129051: PUSH
129052: LD_OWVAR 67
129056: ARRAY
129057: PUSH
129058: LD_OWVAR 1
129062: PUSH
129063: LD_INT 2100
129065: DIVREAL
129066: MINUS
129067: ST_TO_ADDR
// if temp < 5 then
129068: LD_VAR 0 2
129072: PUSH
129073: LD_INT 5
129075: LESS
129076: IFFALSE 129088
// temp = 0 else
129078: LD_ADDR_VAR 0 2
129082: PUSH
129083: LD_INT 0
129085: ST_TO_ADDR
129086: GO 129154
// for i in [ 50 , 40 , 30 , 20 , 10 , 0 ] do
129088: LD_ADDR_VAR 0 1
129092: PUSH
129093: LD_INT 50
129095: PUSH
129096: LD_INT 40
129098: PUSH
129099: LD_INT 30
129101: PUSH
129102: LD_INT 20
129104: PUSH
129105: LD_INT 10
129107: PUSH
129108: LD_INT 0
129110: PUSH
129111: EMPTY
129112: LIST
129113: LIST
129114: LIST
129115: LIST
129116: LIST
129117: LIST
129118: PUSH
129119: FOR_IN
129120: IFFALSE 129152
// if temp > i then
129122: LD_VAR 0 2
129126: PUSH
129127: LD_VAR 0 1
129131: GREATER
129132: IFFALSE 129150
// begin temp = i + 10 ;
129134: LD_ADDR_VAR 0 2
129138: PUSH
129139: LD_VAR 0 1
129143: PUSH
129144: LD_INT 10
129146: PLUS
129147: ST_TO_ADDR
// break ;
129148: GO 129152
// end ;
129150: GO 129119
129152: POP
129153: POP
// if not 1 in BasesDestroyed then
129154: LD_INT 1
129156: PUSH
129157: LD_EXP 196
129161: IN
129162: NOT
129163: IFFALSE 129219
// begin if temp > 0 then
129165: LD_VAR 0 2
129169: PUSH
129170: LD_INT 0
129172: GREATER
129173: IFFALSE 129200
// strings = strings ^ [ #Ar15-BombCountLegion1 , temp ] else
129175: LD_ADDR_EXP 239
129179: PUSH
129180: LD_EXP 239
129184: PUSH
129185: LD_STRING #Ar15-BombCountLegion1
129187: PUSH
129188: LD_VAR 0 2
129192: PUSH
129193: EMPTY
129194: LIST
129195: LIST
129196: ADD
129197: ST_TO_ADDR
129198: GO 129217
// strings = strings ^ [ #Ar15-BombCountLegion2 ] ;
129200: LD_ADDR_EXP 239
129204: PUSH
129205: LD_EXP 239
129209: PUSH
129210: LD_STRING #Ar15-BombCountLegion2
129212: PUSH
129213: EMPTY
129214: LIST
129215: ADD
129216: ST_TO_ADDR
// end else
129217: GO 129271
// if temp > 0 then
129219: LD_VAR 0 2
129223: PUSH
129224: LD_INT 0
129226: GREATER
129227: IFFALSE 129254
// strings = strings ^ [ #Ar15-BombCountRussians1 , temp ] else
129229: LD_ADDR_EXP 239
129233: PUSH
129234: LD_EXP 239
129238: PUSH
129239: LD_STRING #Ar15-BombCountRussians1
129241: PUSH
129242: LD_VAR 0 2
129246: PUSH
129247: EMPTY
129248: LIST
129249: LIST
129250: ADD
129251: ST_TO_ADDR
129252: GO 129271
// strings = strings ^ [ #Ar15-BombCountRussians2 ] ;
129254: LD_ADDR_EXP 239
129258: PUSH
129259: LD_EXP 239
129263: PUSH
129264: LD_STRING #Ar15-BombCountRussians2
129266: PUSH
129267: EMPTY
129268: LIST
129269: ADD
129270: ST_TO_ADDR
// end ; if ArtUse_SibPlant then
129271: LD_EXP 205
129275: IFFALSE 129294
// strings = strings ^ [ #Ar15-ArtUseplant ] ;
129277: LD_ADDR_EXP 239
129281: PUSH
129282: LD_EXP 239
129286: PUSH
129287: LD_STRING #Ar15-ArtUseplant
129289: PUSH
129290: EMPTY
129291: LIST
129292: ADD
129293: ST_TO_ADDR
// if ArtUse_Beh then
129294: LD_EXP 207
129298: IFFALSE 129317
// strings = strings ^ [ #Ar15-ArtUsebeh ] ;
129300: LD_ADDR_EXP 239
129304: PUSH
129305: LD_EXP 239
129309: PUSH
129310: LD_STRING #Ar15-ArtUsebeh
129312: PUSH
129313: EMPTY
129314: LIST
129315: ADD
129316: ST_TO_ADDR
// if ArtUse_TimeLapse_time then
129317: LD_EXP 211
129321: IFFALSE 129346
// strings = strings ^ [ #Ar15-ArtUsetime , ArtUse_TimeLapse_time ] ;
129323: LD_ADDR_EXP 239
129327: PUSH
129328: LD_EXP 239
129332: PUSH
129333: LD_STRING #Ar15-ArtUsetime
129335: PUSH
129336: LD_EXP 211
129340: PUSH
129341: EMPTY
129342: LIST
129343: LIST
129344: ADD
129345: ST_TO_ADDR
// if ArtUse_Laser then
129346: LD_EXP 212
129350: IFFALSE 129369
// strings = strings ^ [ #Ar15-ArtUselaser ] ;
129352: LD_ADDR_EXP 239
129356: PUSH
129357: LD_EXP 239
129361: PUSH
129362: LD_STRING #Ar15-ArtUselaser
129364: PUSH
129365: EMPTY
129366: LIST
129367: ADD
129368: ST_TO_ADDR
// if ArtUse_SuperStim then
129369: LD_EXP 214
129373: IFFALSE 129392
// strings = strings ^ [ #Ar15-ArtUsestim ] ;
129375: LD_ADDR_EXP 239
129379: PUSH
129380: LD_EXP 239
129384: PUSH
129385: LD_STRING #Ar15-ArtUsestim
129387: PUSH
129388: EMPTY
129389: LIST
129390: ADD
129391: ST_TO_ADDR
// if ArtUse_SPBomb then
129392: LD_EXP 216
129396: IFFALSE 129415
// strings = strings ^ [ #Ar15-ArtUsebomb ] ;
129398: LD_ADDR_EXP 239
129402: PUSH
129403: LD_EXP 239
129407: PUSH
129408: LD_STRING #Ar15-ArtUsebomb
129410: PUSH
129411: EMPTY
129412: LIST
129413: ADD
129414: ST_TO_ADDR
// display_strings = strings ;
129415: LD_ADDR_OWVAR 47
129419: PUSH
129420: LD_EXP 239
129424: ST_TO_ADDR
// for i = 1 to SibDeposits do
129425: LD_ADDR_VAR 0 1
129429: PUSH
129430: DOUBLE
129431: LD_INT 1
129433: DEC
129434: ST_TO_ADDR
129435: LD_EXP 240
129439: PUSH
129440: FOR_TO
129441: IFFALSE 129565
// begin if FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_scientistic ] , [ f_distxy , SibDeposits [ i ] , SibDeposits [ i + 1 ] , 12 ] ] ) > 0 then
129443: LD_INT 22
129445: PUSH
129446: LD_INT 2
129448: PUSH
129449: EMPTY
129450: LIST
129451: LIST
129452: PUSH
129453: LD_INT 25
129455: PUSH
129456: LD_INT 4
129458: PUSH
129459: EMPTY
129460: LIST
129461: LIST
129462: PUSH
129463: LD_INT 92
129465: PUSH
129466: LD_EXP 240
129470: PUSH
129471: LD_VAR 0 1
129475: ARRAY
129476: PUSH
129477: LD_EXP 240
129481: PUSH
129482: LD_VAR 0 1
129486: PUSH
129487: LD_INT 1
129489: PLUS
129490: ARRAY
129491: PUSH
129492: LD_INT 12
129494: PUSH
129495: EMPTY
129496: LIST
129497: LIST
129498: LIST
129499: LIST
129500: PUSH
129501: EMPTY
129502: LIST
129503: LIST
129504: LIST
129505: PPUSH
129506: CALL_OW 69
129510: PUSH
129511: LD_INT 0
129513: GREATER
129514: IFFALSE 129549
// SetResourceVisibility ( SibDeposits [ i ] , SibDeposits [ i + 1 ] , 2 ) ;
129516: LD_EXP 240
129520: PUSH
129521: LD_VAR 0 1
129525: ARRAY
129526: PPUSH
129527: LD_EXP 240
129531: PUSH
129532: LD_VAR 0 1
129536: PUSH
129537: LD_INT 1
129539: PLUS
129540: ARRAY
129541: PPUSH
129542: LD_INT 2
129544: PPUSH
129545: CALL_OW 441
// i = i + 2 ;
129549: LD_ADDR_VAR 0 1
129553: PUSH
129554: LD_VAR 0 1
129558: PUSH
129559: LD_INT 2
129561: PLUS
129562: ST_TO_ADDR
// end ;
129563: GO 129440
129565: POP
129566: POP
// enable ;
129567: ENABLE
// end ; end_of_file
129568: PPOPN 2
129570: END
// export function GameOver ( val ) ; var i , temp ; begin
129571: LD_INT 0
129573: PPUSH
129574: PPUSH
129575: PPUSH
// Randomize ;
129576: CALL_OW 10
// case val of 0 :
129580: LD_VAR 0 1
129584: PUSH
129585: LD_INT 0
129587: DOUBLE
129588: EQUAL
129589: IFTRUE 129593
129591: GO 129785
129593: POP
// begin InGameOn ;
129594: CALL_OW 8
// CenterNowOnXY ( 207 , 217 ) ;
129598: LD_INT 207
129600: PPUSH
129601: LD_INT 217
129603: PPUSH
129604: CALL_OW 86
// wait ( 0 0$4 ) ;
129608: LD_INT 140
129610: PPUSH
129611: CALL_OW 67
// PlaceSeeing ( 207 , 217 , 2 , - 35 ) ;
129615: LD_INT 207
129617: PPUSH
129618: LD_INT 217
129620: PPUSH
129621: LD_INT 2
129623: PPUSH
129624: LD_INT 35
129626: NEG
129627: PPUSH
129628: CALL_OW 330
// CenterNowOnXY ( 207 , 217 ) ;
129632: LD_INT 207
129634: PPUSH
129635: LD_INT 217
129637: PPUSH
129638: CALL_OW 86
// SetAreaMapShow ( ContaminationArea , 0 ) ;
129642: LD_INT 37
129644: PPUSH
129645: LD_INT 0
129647: PPUSH
129648: CALL_OW 424
// SetAreaMapShow ( ContaminationArea1 , 0 ) ;
129652: LD_INT 38
129654: PPUSH
129655: LD_INT 0
129657: PPUSH
129658: CALL_OW 424
// SetAreaMapShow ( ContaminationArea2 , 0 ) ;
129662: LD_INT 39
129664: PPUSH
129665: LD_INT 0
129667: PPUSH
129668: CALL_OW 424
// SetAreaMapShow ( ContaminationArea3 , 0 ) ;
129672: LD_INT 40
129674: PPUSH
129675: LD_INT 0
129677: PPUSH
129678: CALL_OW 424
// for i = 1 to rand ( 10 , 20 ) do
129682: LD_ADDR_VAR 0 3
129686: PUSH
129687: DOUBLE
129688: LD_INT 1
129690: DEC
129691: ST_TO_ADDR
129692: LD_INT 10
129694: PPUSH
129695: LD_INT 20
129697: PPUSH
129698: CALL_OW 12
129702: PUSH
129703: FOR_TO
129704: IFFALSE 129770
// begin temp = RandHexXYR ( 207 , 217 , 20 , 0 ) ;
129706: LD_ADDR_VAR 0 4
129710: PUSH
129711: LD_INT 207
129713: PPUSH
129714: LD_INT 217
129716: PPUSH
129717: LD_INT 20
129719: PPUSH
129720: LD_INT 0
129722: PPUSH
129723: CALL_OW 17
129727: ST_TO_ADDR
// MineExplosion ( temp [ 1 ] , temp [ 2 ] , 1 ) ;
129728: LD_VAR 0 4
129732: PUSH
129733: LD_INT 1
129735: ARRAY
129736: PPUSH
129737: LD_VAR 0 4
129741: PUSH
129742: LD_INT 2
129744: ARRAY
129745: PPUSH
129746: LD_INT 1
129748: PPUSH
129749: CALL_OW 453
// wait ( rand ( 5 , 40 ) ) ;
129753: LD_INT 5
129755: PPUSH
129756: LD_INT 40
129758: PPUSH
129759: CALL_OW 12
129763: PPUSH
129764: CALL_OW 67
// end ;
129768: GO 129703
129770: POP
129771: POP
// YouLost ( Apocalyse ) ;
129772: LD_STRING Apocalyse
129774: PPUSH
129775: CALL_OW 104
// IngameOff ;
129779: CALL_OW 9
// end ; 1 :
129783: GO 130390
129785: LD_INT 1
129787: DOUBLE
129788: EQUAL
129789: IFTRUE 129793
129791: GO 130389
129793: POP
// begin InGameOn ;
129794: CALL_OW 8
// CenterOnXY ( 207 , 217 ) ;
129798: LD_INT 207
129800: PPUSH
129801: LD_INT 217
129803: PPUSH
129804: CALL_OW 84
// PlaceSeeing ( 207 , 217 , 2 , - 35 ) ;
129808: LD_INT 207
129810: PPUSH
129811: LD_INT 217
129813: PPUSH
129814: LD_INT 2
129816: PPUSH
129817: LD_INT 35
129819: NEG
129820: PPUSH
129821: CALL_OW 330
// ArtContamination ( 207 , 217 , 10 ) ;
129825: LD_INT 207
129827: PPUSH
129828: LD_INT 217
129830: PPUSH
129831: LD_INT 10
129833: PPUSH
129834: CALL_OW 495
// for i in FilterAllUnits ( [ f_side , 2 ] ) do
129838: LD_ADDR_VAR 0 3
129842: PUSH
129843: LD_INT 22
129845: PUSH
129846: LD_INT 2
129848: PUSH
129849: EMPTY
129850: LIST
129851: LIST
129852: PPUSH
129853: CALL_OW 69
129857: PUSH
129858: FOR_IN
129859: IFFALSE 129875
// SetLives ( i , 1000 ) ;
129861: LD_VAR 0 3
129865: PPUSH
129866: LD_INT 1000
129868: PPUSH
129869: CALL_OW 234
129873: GO 129858
129875: POP
129876: POP
// wait ( 0 0$4 ) ;
129877: LD_INT 140
129879: PPUSH
129880: CALL_OW 67
// DialogueOn ;
129884: CALL_OW 6
// Say ( Heike , End_Heike ) ;
129888: LD_EXP 10
129892: PPUSH
129893: LD_STRING End_Heike
129895: PPUSH
129896: CALL_OW 88
// if IsPlaced ( Ralph ) and IsPlaced ( Sonya ) then
129900: LD_EXP 14
129904: PPUSH
129905: CALL_OW 305
129909: PUSH
129910: LD_EXP 12
129914: PPUSH
129915: CALL_OW 305
129919: AND
129920: IFFALSE 129948
// begin Say ( Sonya , End_Sonya1 ) ;
129922: LD_EXP 12
129926: PPUSH
129927: LD_STRING End_Sonya1
129929: PPUSH
129930: CALL_OW 88
// Say ( Ralph , End_Ralph1 ) ;
129934: LD_EXP 14
129938: PPUSH
129939: LD_STRING End_Ralph1
129941: PPUSH
129942: CALL_OW 88
// end else
129946: GO 129994
// begin if IsPlaced ( Sonya ) then
129948: LD_EXP 12
129952: PPUSH
129953: CALL_OW 305
129957: IFFALSE 129971
// Say ( Sonya , End_Sonya2 ) ;
129959: LD_EXP 12
129963: PPUSH
129964: LD_STRING End_Sonya2
129966: PPUSH
129967: CALL_OW 88
// if IsPlaced ( Ralph ) then
129971: LD_EXP 14
129975: PPUSH
129976: CALL_OW 305
129980: IFFALSE 129994
// Say ( Ralph , End_Ralph2 ) ;
129982: LD_EXP 14
129986: PPUSH
129987: LD_STRING End_Ralph2
129989: PPUSH
129990: CALL_OW 88
// end ; if IsPlaced ( Oswald ) then
129994: LD_EXP 13
129998: PPUSH
129999: CALL_OW 305
130003: IFFALSE 130017
// Say ( Oswald , End_Oswald ) ;
130005: LD_EXP 13
130009: PPUSH
130010: LD_STRING End_Oswald
130012: PPUSH
130013: CALL_OW 88
// if IsPlaced ( Makise ) then
130017: LD_EXP 21
130021: PPUSH
130022: CALL_OW 305
130026: IFFALSE 130040
// Say ( Makise , End_Makise ) ;
130028: LD_EXP 21
130032: PPUSH
130033: LD_STRING End_Makise
130035: PPUSH
130036: CALL_OW 88
// if IsPlaced ( Gensher ) then
130040: LD_EXP 24
130044: PPUSH
130045: CALL_OW 305
130049: IFFALSE 130063
// Say ( Gensher , End_Gensher ) ;
130051: LD_EXP 24
130055: PPUSH
130056: LD_STRING End_Gensher
130058: PPUSH
130059: CALL_OW 88
// if IsPlaced ( Olaf ) then
130063: LD_EXP 11
130067: PPUSH
130068: CALL_OW 305
130072: IFFALSE 130086
// Say ( Olaf , End_Olaf ) ;
130074: LD_EXP 11
130078: PPUSH
130079: LD_STRING End_Olaf
130081: PPUSH
130082: CALL_OW 88
// if IsPlaced ( Aviradze ) then
130086: LD_EXP 16
130090: PPUSH
130091: CALL_OW 305
130095: IFFALSE 130109
// Say ( Aviradze , End_Aviradze ) ;
130097: LD_EXP 16
130101: PPUSH
130102: LD_STRING End_Aviradze
130104: PPUSH
130105: CALL_OW 88
// if IsPlaced ( Kowalski ) then
130109: LD_EXP 15
130113: PPUSH
130114: CALL_OW 305
130118: IFFALSE 130132
// Say ( Kowalski , End_Kowalski ) ;
130120: LD_EXP 15
130124: PPUSH
130125: LD_STRING End_Kowalski
130127: PPUSH
130128: CALL_OW 88
// if IsPlaced ( Evelyn ) then
130132: LD_EXP 20
130136: PPUSH
130137: CALL_OW 305
130141: IFFALSE 130155
// Say ( Evelyn , End_Evelyn ) ;
130143: LD_EXP 20
130147: PPUSH
130148: LD_STRING End_Evelyn
130150: PPUSH
130151: CALL_OW 88
// if IsPlaced ( Swansson ) then
130155: LD_EXP 17
130159: PPUSH
130160: CALL_OW 305
130164: IFFALSE 130178
// Say ( Swansson , End_Swansson ) ;
130166: LD_EXP 17
130170: PPUSH
130171: LD_STRING End_Swansson
130173: PPUSH
130174: CALL_OW 88
// if IsPlaced ( Dwayne ) then
130178: LD_EXP 18
130182: PPUSH
130183: CALL_OW 305
130187: IFFALSE 130201
// Say ( Dwayne , End_Dwayne ) ;
130189: LD_EXP 18
130193: PPUSH
130194: LD_STRING End_Dwayne
130196: PPUSH
130197: CALL_OW 88
// if IsPlaced ( Khattam ) then
130201: LD_EXP 19
130205: PPUSH
130206: CALL_OW 305
130210: IFFALSE 130224
// Say ( Khattam , End_Khattam ) ;
130212: LD_EXP 19
130216: PPUSH
130217: LD_STRING End_Khattam
130219: PPUSH
130220: CALL_OW 88
// if IsPlaced ( Snake ) then
130224: LD_EXP 25
130228: PPUSH
130229: CALL_OW 305
130233: IFFALSE 130247
// Say ( Snake , End_Snake ) ;
130235: LD_EXP 25
130239: PPUSH
130240: LD_STRING End_Snake
130242: PPUSH
130243: CALL_OW 88
// DialogueOff ;
130247: CALL_OW 7
// AddMedal ( World , 1 ) ;
130251: LD_STRING World
130253: PPUSH
130254: LD_INT 1
130256: PPUSH
130257: CALL_OW 101
// if 1 in [ ATech_SibPlant , ATech_Beh , ATech_TimeLapse , ATech_Laser , ATech_SuperStim , ATech_SPBomb ] then
130261: LD_INT 1
130263: PUSH
130264: LD_EXP 198
130268: PUSH
130269: LD_EXP 199
130273: PUSH
130274: LD_EXP 200
130278: PUSH
130279: LD_EXP 201
130283: PUSH
130284: LD_EXP 202
130288: PUSH
130289: LD_EXP 203
130293: PUSH
130294: EMPTY
130295: LIST
130296: LIST
130297: LIST
130298: LIST
130299: LIST
130300: LIST
130301: IN
130302: IFFALSE 130316
// AddMedal ( Art , 1 ) else
130304: LD_STRING Art
130306: PPUSH
130307: LD_INT 1
130309: PPUSH
130310: CALL_OW 101
130314: GO 130326
// AddMedal ( Art , 2 ) ;
130316: LD_STRING Art
130318: PPUSH
130319: LD_INT 2
130321: PPUSH
130322: CALL_OW 101
// if BasesDestroyed = 2 then
130326: LD_EXP 196
130330: PUSH
130331: LD_INT 2
130333: EQUAL
130334: IFFALSE 130348
// AddMedal ( Destruction , 1 ) else
130336: LD_STRING Destruction
130338: PPUSH
130339: LD_INT 1
130341: PPUSH
130342: CALL_OW 101
130346: GO 130358
// AddMedal ( Destruction , 2 ) ;
130348: LD_STRING Destruction
130350: PPUSH
130351: LD_INT 2
130353: PPUSH
130354: CALL_OW 101
// GiveMedals ( Medals ) ;
130358: LD_STRING Medals
130360: PPUSH
130361: CALL_OW 102
// Query ( EndCutscene_replacement ) ;
130365: LD_STRING EndCutscene_replacement
130367: PPUSH
130368: CALL_OW 97
// wait ( 0 0$0.5 ) ;
130372: LD_INT 18
130374: PPUSH
130375: CALL_OW 67
// YouWin ;
130379: CALL_OW 103
// InGameOff ;
130383: CALL_OW 9
// end ; end ;
130387: GO 130390
130389: POP
// end ;
130390: LD_VAR 0 2
130394: RET
