// export JMM , Powell , Bobby , Cyrus , Lisa , Frank , Brown , Donaldson , Gladstone , Cornell ; export Denis , Joan , Kurt , Yamoko , Gary , Simms , Stevens , Coonie , Burlak , Roth ; export Friend , Kozlov , Baker , VanHouten , Vsevolod , Platonov , Kovaljuk ; export Omar , Heike ; export OtherWithJMM , OtherNotJMM ; export legion_cheated , kappa_saved , woman_saved , kappa_delayed , Woman_in_am14 ; export JMM_woman , Woman_alive , Initial_JMM_vehicle , Initial_Woman_vehicle ; export BobbyLoc , CyrusLoc , LisaLoc , FrankLoc , BrownLoc , DonaldsonLoc ; export VanHoutenLoc , GladstoneLoc , JoanLoc , YamokoLoc ; export GaryLoc , DenisLoc , CornellLoc ; export Roth_Captured ; export Russian_project_canceled ; export No_Looses ; export JMM_veh , Woman_veh ; export Am1_vehicles ; export Captured_vehicles ; export All_americans , Named_americans ; export Remaining_Named , Remaining_Powells , Carriers ; export End_of_journey ; export JMM_Helpers ; export CenterJMM ; export Number_of_JMM_Helpers ; export True_Americans ; export Not_True_Americans ; export Omar_Soldiers ; export Omar_Scientists ; export Omar_Vehicles ; export Number_of_Omar_Soldiers ; export Number_of_Omar_Hovercrafts ; export Number_of_Omar_Flamethrowers ; export Number_of_Omar_RocketLaunchers ; export All_arabians ; export Arabian_soldiers ; export Arabian_Engineers ; export Arabian_scientists ; export Arabian_mechanics ; export Arabian_apemens ; export Control_Driver ; export Arabian_Outside ; export New_ArRu_Fact ; export Arabian_buildings ; export Number_of_Arabian_Soldiers ; export Number_of_Arabian_scientists ; export Number_of_Arabian_mechanics ; export Number_of_Arabian_Engineers ; export All_alliances ; export Alliance_rus_soldiers ; export Alliance_am_soldiers ; export Alliance_rus_scientists ; export Alliance_am_scientists ; export Alliance_Explorers ; export Captured_Units_of_Alliance ; export Explorer1 , Explorer2 ; export Alliance_Doctors ; export Number_of_AllAm_Soldiers ; export Number_of_AllAm_Scientists ; export Number_of_AllRu_Soldiers ; export Number_of_AllRu_Scientists ; export Russian_soldiers ; export Russian_scientists ; export Russian_engineers ; export Russian_mechanics ; export All_russians ; export Rus_doctors ; export Russian_Buildings ; export R1_Attack_Time ; export R_attack_time ; export R1_Attack_counter ; export R_Attack_counter ; export R1_Attack_group ; export Main_R1_Attack_group ; export Main_R_Attack_Group ; export R_Attack_Group ; export New_Patrol_Group , R1Patrol_group ; export R_Patrol_group ; export R_Constructed_Attack ; export R_Constructed_Patrol ; export Behemot_Engineers ; export Russian_Behemots ; export New_Behemots ; export Rus_Attack_Time ; export R_New_Attack ; export R_New_Patrol ; export Number_of_russian_soldiers ; export Number_of_russian_scientists ; export Number_of_russian_mechanics ; export Number_of_russian_engineers ; export First_JMM_Task ; export out_of_base ; export Great_ingame_video ; export R1_attack ; export Protect_Powell ; export Talk_Bomba ; export Center_on_fight ; export JMM_Is_Ready ; export Ingame_Run_over ; export Game_Continue ; export Vsevolod_Comes ; export Woman_Comes ; export Matherlod_Contamined1 ; export Matherlod_Contamined2 ; export Matherlod_Contamined3 ; export Alliance_Captured ; export Explorers_Can_Go ; export Not_End_of_Alliance ; export JMM_has_surrounded ; export Friend_Escapes ; export Not_Ingame_Run_over ; export End_of_m ; export Timer ; export JMM_Captured ; export Map_am_base , Map_rus_attack , Send_Helpers ; export Start_Am1_Base ; export Send_Material ; export Capture_JMM_Vehicles ; export First_Powells_Attack ; export Second_Powells_Attack ; export Run_JMM_Vehicles ; export Rus1_Attack ; export Rus_Attack ; export Retreat_Report ; export JMM_Talk ; export Send_Arabian_Back ; export Link_Bombs ; export americans , americans1 , russians , russians1 , arabians , arabians1 , alliance , Explorers_Side ; export human_difficulty_skill , apeman_difficulty_skill ; export Skip ; export Powell_Warning ; export Warning_Time ; export Time_of_Ingame_Run_Over ; export First_ingame_done ; export R1_Attack_Overflow ; export Powell_vehicle ; export Powell_Attack_Counter ; export Center_To_Powell ; export Debug_Constant ; export R1_Attack_Continues ; export Number_of_crates ; export Construction_of_Arabian_rocket ; export Number_of_Arabian_rocket ; export Stevens_Coming_Time ; export Woman_Coming_Time ; export Alliance_broadcast ; export Behemots_broadcast ; export Time_of_first_capture ; export Really_Kurt ; export Time_of_capturing ; export Alliance_def_buildings ; export Way_of_Explorers ; export Step_On_The_Way ; export Explorer_Way_Number ; export Number_of_captured_americans ; export Alaskite_Bomb_Time ; export Arabian_siberite_attack_time ; export R_Attack_Overflow ; export Russian_Siberite_Attack ; export Russian_Siberite_rockets ; export Time_to_Think_Over ; export The_Last_Time ; export Friend_Accepted ; export Friend_Escaped ; export Number_of_Behemots ; export Time_Of_Crates ; export Number_of_complete_Behemots ; export Behemot_Places ; export Behemot_attack_time ; export Friend_has_come ; export The_Last_Arabian_Attack_Begun ; export Friend_has_to_escape ; export Wood_registry ; export Add_Legion_Objectives ; export Starting_Construction_Time ; export Heike_Last_Words ; export Joan_semafor ; export Arabian_reg_id ; export Arabian_def_id ; export Arabian_build_id ; export Russian1_reg_id ; export Russian1_att_id ; export Russian1_reg1_id ; export Russian1_patr_id ; export Russian_reg_id ; export Russian_att_id ; export Russian_patr_id ; export Russian_reg_def_id ; export Russian_def_id ; export Russian_build_id ; export Alliance_reg_id ; export Alliance_def_id ; export Alliance_wood_reg_id ; export Powell_angry_counter , Powell_angry_time ; function Set_variables ; begin
   0: LD_INT 0
   2: PPUSH
// Powell_angry_counter := 0 ;
   3: LD_ADDR_EXP 250
   7: PUSH
   8: LD_INT 0
  10: ST_TO_ADDR
// Powell_angry_time := 0 0$00 ;
  11: LD_ADDR_EXP 251
  15: PUSH
  16: LD_INT 0
  18: ST_TO_ADDR
// CenterJMM = false ;
  19: LD_ADDR_EXP 68
  23: PUSH
  24: LD_INT 0
  26: ST_TO_ADDR
// End_of_journey = false ;
  27: LD_ADDR_EXP 66
  31: PUSH
  32: LD_INT 0
  34: ST_TO_ADDR
// Skip = false ;
  35: LD_ADDR_EXP 186
  39: PUSH
  40: LD_INT 0
  42: ST_TO_ADDR
// Captured_vehicles = [ ] ;
  43: LD_ADDR_EXP 60
  47: PUSH
  48: EMPTY
  49: ST_TO_ADDR
// R1_Attack_time = 0 ;
  50: LD_ADDR_EXP 114
  54: PUSH
  55: LD_INT 0
  57: ST_TO_ADDR
// R1_Attack_counter = 0 ;
  58: LD_ADDR_EXP 116
  62: PUSH
  63: LD_INT 0
  65: ST_TO_ADDR
// R1_Attack_group = [ ] ;
  66: LD_ADDR_EXP 118
  70: PUSH
  71: EMPTY
  72: ST_TO_ADDR
// Main_R1_Attack_group = [ ] ;
  73: LD_ADDR_EXP 119
  77: PUSH
  78: EMPTY
  79: ST_TO_ADDR
// Main_R_Attack_Group = [ ] ;
  80: LD_ADDR_EXP 120
  84: PUSH
  85: EMPTY
  86: ST_TO_ADDR
// Powell_warning = 0 ;
  87: LD_ADDR_EXP 187
  91: PUSH
  92: LD_INT 0
  94: ST_TO_ADDR
// Warning_Time = 0 ;
  95: LD_ADDR_EXP 188
  99: PUSH
 100: LD_INT 0
 102: ST_TO_ADDR
// Time_of_Ingame_Run_Over = 100 100$0 ;
 103: LD_ADDR_EXP 189
 107: PUSH
 108: LD_INT 210000
 110: ST_TO_ADDR
// First_ingame_done = false ;
 111: LD_ADDR_EXP 190
 115: PUSH
 116: LD_INT 0
 118: ST_TO_ADDR
// Rus_doctors = [ ] ;
 119: LD_ADDR_EXP 112
 123: PUSH
 124: EMPTY
 125: ST_TO_ADDR
// R1_Attack_Overflow = 0 ;
 126: LD_ADDR_EXP 191
 130: PUSH
 131: LD_INT 0
 133: ST_TO_ADDR
// New_Patrol_Group = 0 ;
 134: LD_ADDR_EXP 122
 138: PUSH
 139: LD_INT 0
 141: ST_TO_ADDR
// R1Patrol_group = 0 ;
 142: LD_ADDR_EXP 123
 146: PUSH
 147: LD_INT 0
 149: ST_TO_ADDR
// R_Patrol_group = 0 ;
 150: LD_ADDR_EXP 124
 154: PUSH
 155: LD_INT 0
 157: ST_TO_ADDR
// Arabian_Outside = 0 ;
 158: LD_ADDR_EXP 86
 162: PUSH
 163: LD_INT 0
 165: ST_TO_ADDR
// Powell_vehicle = 0 ;
 166: LD_ADDR_EXP 192
 170: PUSH
 171: LD_INT 0
 173: ST_TO_ADDR
// Powell_Attack_Counter = 1 ;
 174: LD_ADDR_EXP 193
 178: PUSH
 179: LD_INT 1
 181: ST_TO_ADDR
// Center_To_Powell = false ;
 182: LD_ADDR_EXP 194
 186: PUSH
 187: LD_INT 0
 189: ST_TO_ADDR
// R1_Attack_Continues = false ;
 190: LD_ADDR_EXP 196
 194: PUSH
 195: LD_INT 0
 197: ST_TO_ADDR
// New_ArRu_Fact = 0 ;
 198: LD_ADDR_EXP 87
 202: PUSH
 203: LD_INT 0
 205: ST_TO_ADDR
// Construction_of_Arabian_rocket = false ;
 206: LD_ADDR_EXP 198
 210: PUSH
 211: LD_INT 0
 213: ST_TO_ADDR
// Number_of_Arabian_rocket = 1 ;
 214: LD_ADDR_EXP 199
 218: PUSH
 219: LD_INT 1
 221: ST_TO_ADDR
// Alliance_def_buildings = [ AllT1 , AllT2 , AllT3 , AllT4 , AllT5 , AllT7 , AllT8 ] ;
 222: LD_ADDR_EXP 207
 226: PUSH
 227: LD_INT 50
 229: PUSH
 230: LD_INT 54
 232: PUSH
 233: LD_INT 51
 235: PUSH
 236: LD_INT 52
 238: PUSH
 239: LD_INT 53
 241: PUSH
 242: LD_INT 38
 244: PUSH
 245: LD_INT 44
 247: PUSH
 248: EMPTY
 249: LIST
 250: LIST
 251: LIST
 252: LIST
 253: LIST
 254: LIST
 255: LIST
 256: ST_TO_ADDR
// True_Americans = [ ] ;
 257: LD_ADDR_EXP 70
 261: PUSH
 262: EMPTY
 263: ST_TO_ADDR
// Not_True_Americans = [ ] ;
 264: LD_ADDR_EXP 71
 268: PUSH
 269: EMPTY
 270: ST_TO_ADDR
// Roth_Captured = false ;
 271: LD_ADDR_EXP 54
 275: PUSH
 276: LD_INT 0
 278: ST_TO_ADDR
// Russian_project_canceled = true ;
 279: LD_ADDR_EXP 55
 283: PUSH
 284: LD_INT 1
 286: ST_TO_ADDR
// No_Looses = true ;
 287: LD_ADDR_EXP 56
 291: PUSH
 292: LD_INT 1
 294: ST_TO_ADDR
// Captured_Units_of_Alliance = [ ] ;
 295: LD_ADDR_EXP 99
 299: PUSH
 300: EMPTY
 301: ST_TO_ADDR
// Way_of_Explorers = [ [ [ 183 , 160 ] , [ 142 , 131 ] , [ 120 , 104 ] , [ 95 , 71 ] , [ 78 , 62 ] ] , [ [ 182 , 155 ] , [ 173 , 136 ] , [ 156 , 94 ] , [ 126 , 73 ] , [ 95 , 71 ] , [ 78 , 62 ] ] ] ;
 302: LD_ADDR_EXP 208
 306: PUSH
 307: LD_INT 183
 309: PUSH
 310: LD_INT 160
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: PUSH
 317: LD_INT 142
 319: PUSH
 320: LD_INT 131
 322: PUSH
 323: EMPTY
 324: LIST
 325: LIST
 326: PUSH
 327: LD_INT 120
 329: PUSH
 330: LD_INT 104
 332: PUSH
 333: EMPTY
 334: LIST
 335: LIST
 336: PUSH
 337: LD_INT 95
 339: PUSH
 340: LD_INT 71
 342: PUSH
 343: EMPTY
 344: LIST
 345: LIST
 346: PUSH
 347: LD_INT 78
 349: PUSH
 350: LD_INT 62
 352: PUSH
 353: EMPTY
 354: LIST
 355: LIST
 356: PUSH
 357: EMPTY
 358: LIST
 359: LIST
 360: LIST
 361: LIST
 362: LIST
 363: PUSH
 364: LD_INT 182
 366: PUSH
 367: LD_INT 155
 369: PUSH
 370: EMPTY
 371: LIST
 372: LIST
 373: PUSH
 374: LD_INT 173
 376: PUSH
 377: LD_INT 136
 379: PUSH
 380: EMPTY
 381: LIST
 382: LIST
 383: PUSH
 384: LD_INT 156
 386: PUSH
 387: LD_INT 94
 389: PUSH
 390: EMPTY
 391: LIST
 392: LIST
 393: PUSH
 394: LD_INT 126
 396: PUSH
 397: LD_INT 73
 399: PUSH
 400: EMPTY
 401: LIST
 402: LIST
 403: PUSH
 404: LD_INT 95
 406: PUSH
 407: LD_INT 71
 409: PUSH
 410: EMPTY
 411: LIST
 412: LIST
 413: PUSH
 414: LD_INT 78
 416: PUSH
 417: LD_INT 62
 419: PUSH
 420: EMPTY
 421: LIST
 422: LIST
 423: PUSH
 424: EMPTY
 425: LIST
 426: LIST
 427: LIST
 428: LIST
 429: LIST
 430: LIST
 431: PUSH
 432: EMPTY
 433: LIST
 434: LIST
 435: ST_TO_ADDR
// Explorer1 = 0 ;
 436: LD_ADDR_EXP 100
 440: PUSH
 441: LD_INT 0
 443: ST_TO_ADDR
// Explorer2 = 0 ;
 444: LD_ADDR_EXP 101
 448: PUSH
 449: LD_INT 0
 451: ST_TO_ADDR
// Step_On_The_Way = 1 ;
 452: LD_ADDR_EXP 209
 456: PUSH
 457: LD_INT 1
 459: ST_TO_ADDR
// Explorer_Way_Number = 1 ;
 460: LD_ADDR_EXP 210
 464: PUSH
 465: LD_INT 1
 467: ST_TO_ADDR
// Number_of_captured_americans = 0 ;
 468: LD_ADDR_EXP 211
 472: PUSH
 473: LD_INT 0
 475: ST_TO_ADDR
// R_Attack_Group = [ ] ;
 476: LD_ADDR_EXP 121
 480: PUSH
 481: EMPTY
 482: ST_TO_ADDR
// R_Attack_Overflow = 0 ;
 483: LD_ADDR_EXP 214
 487: PUSH
 488: LD_INT 0
 490: ST_TO_ADDR
// R_Constructed_Attack = [ ] ;
 491: LD_ADDR_EXP 125
 495: PUSH
 496: EMPTY
 497: ST_TO_ADDR
// R_Constructed_Patrol = [ ] ;
 498: LD_ADDR_EXP 126
 502: PUSH
 503: EMPTY
 504: ST_TO_ADDR
// Russian_Siberite_Attack = false ;
 505: LD_ADDR_EXP 215
 509: PUSH
 510: LD_INT 0
 512: ST_TO_ADDR
// Russian_Siberite_rockets = [ RR1 ] ;
 513: LD_ADDR_EXP 216
 517: PUSH
 518: LD_INT 146
 520: PUSH
 521: EMPTY
 522: LIST
 523: ST_TO_ADDR
// Time_to_Think_Over = 0 ;
 524: LD_ADDR_EXP 217
 528: PUSH
 529: LD_INT 0
 531: ST_TO_ADDR
// The_Last_Time = 0 ;
 532: LD_ADDR_EXP 218
 536: PUSH
 537: LD_INT 0
 539: ST_TO_ADDR
// Friend_Accepted = false ;
 540: LD_ADDR_EXP 219
 544: PUSH
 545: LD_INT 0
 547: ST_TO_ADDR
// Friend_Escaped = false ;
 548: LD_ADDR_EXP 220
 552: PUSH
 553: LD_INT 0
 555: ST_TO_ADDR
// Time_Of_Crates = 0 ;
 556: LD_ADDR_EXP 222
 560: PUSH
 561: LD_INT 0
 563: ST_TO_ADDR
// Behemot_Engineers = [ ] ;
 564: LD_ADDR_EXP 127
 568: PUSH
 569: EMPTY
 570: ST_TO_ADDR
// Behemot_Places = [ [ 191 , 117 ] , [ 194 , 124 ] , [ 197 , 117 ] , [ 200 , 122 ] , [ 203 , 118 ] , [ 206 , 126 ] , [ 210 , 127 ] , [ 208 , 122 ] , [ 213 , 124 ] ] ;
 571: LD_ADDR_EXP 224
 575: PUSH
 576: LD_INT 191
 578: PUSH
 579: LD_INT 117
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: PUSH
 586: LD_INT 194
 588: PUSH
 589: LD_INT 124
 591: PUSH
 592: EMPTY
 593: LIST
 594: LIST
 595: PUSH
 596: LD_INT 197
 598: PUSH
 599: LD_INT 117
 601: PUSH
 602: EMPTY
 603: LIST
 604: LIST
 605: PUSH
 606: LD_INT 200
 608: PUSH
 609: LD_INT 122
 611: PUSH
 612: EMPTY
 613: LIST
 614: LIST
 615: PUSH
 616: LD_INT 203
 618: PUSH
 619: LD_INT 118
 621: PUSH
 622: EMPTY
 623: LIST
 624: LIST
 625: PUSH
 626: LD_INT 206
 628: PUSH
 629: LD_INT 126
 631: PUSH
 632: EMPTY
 633: LIST
 634: LIST
 635: PUSH
 636: LD_INT 210
 638: PUSH
 639: LD_INT 127
 641: PUSH
 642: EMPTY
 643: LIST
 644: LIST
 645: PUSH
 646: LD_INT 208
 648: PUSH
 649: LD_INT 122
 651: PUSH
 652: EMPTY
 653: LIST
 654: LIST
 655: PUSH
 656: LD_INT 213
 658: PUSH
 659: LD_INT 124
 661: PUSH
 662: EMPTY
 663: LIST
 664: LIST
 665: PUSH
 666: EMPTY
 667: LIST
 668: LIST
 669: LIST
 670: LIST
 671: LIST
 672: LIST
 673: LIST
 674: LIST
 675: LIST
 676: ST_TO_ADDR
// Number_of_complete_Behemots = 0 ;
 677: LD_ADDR_EXP 223
 681: PUSH
 682: LD_INT 0
 684: ST_TO_ADDR
// Russian_Behemots = [ ] ;
 685: LD_ADDR_EXP 128
 689: PUSH
 690: EMPTY
 691: ST_TO_ADDR
// New_Behemots = [ ] ;
 692: LD_ADDR_EXP 129
 696: PUSH
 697: EMPTY
 698: ST_TO_ADDR
// JMM_Helpers = [ ] ;
 699: LD_ADDR_EXP 67
 703: PUSH
 704: EMPTY
 705: ST_TO_ADDR
// R_New_Attack = [ ] ;
 706: LD_ADDR_EXP 131
 710: PUSH
 711: EMPTY
 712: ST_TO_ADDR
// R_New_Patrol = [ ] ;
 713: LD_ADDR_EXP 132
 717: PUSH
 718: EMPTY
 719: ST_TO_ADDR
// Friend_has_come = false ;
 720: LD_ADDR_EXP 226
 724: PUSH
 725: LD_INT 0
 727: ST_TO_ADDR
// The_Last_Arabian_Attack_Begun = false ;
 728: LD_ADDR_EXP 227
 732: PUSH
 733: LD_INT 0
 735: ST_TO_ADDR
// Friend_has_to_escape = false ;
 736: LD_ADDR_EXP 228
 740: PUSH
 741: LD_INT 0
 743: ST_TO_ADDR
// Wood_registry = false ;
 744: LD_ADDR_EXP 229
 748: PUSH
 749: LD_INT 0
 751: ST_TO_ADDR
// Add_Legion_Objectives = false ;
 752: LD_ADDR_EXP 230
 756: PUSH
 757: LD_INT 0
 759: ST_TO_ADDR
// Starting_Construction_Time = 0 ;
 760: LD_ADDR_EXP 231
 764: PUSH
 765: LD_INT 0
 767: ST_TO_ADDR
// Heike_Last_Words = false ;
 768: LD_ADDR_EXP 232
 772: PUSH
 773: LD_INT 0
 775: ST_TO_ADDR
// Joan_semafor = false ;
 776: LD_ADDR_EXP 233
 780: PUSH
 781: LD_INT 0
 783: ST_TO_ADDR
// Arabian_reg_id = - 1 ;
 784: LD_ADDR_EXP 234
 788: PUSH
 789: LD_INT 1
 791: NEG
 792: ST_TO_ADDR
// Arabian_def_id = - 1 ;
 793: LD_ADDR_EXP 235
 797: PUSH
 798: LD_INT 1
 800: NEG
 801: ST_TO_ADDR
// Russian1_reg_id = - 1 ;
 802: LD_ADDR_EXP 237
 806: PUSH
 807: LD_INT 1
 809: NEG
 810: ST_TO_ADDR
// Russian1_att_id = - 1 ;
 811: LD_ADDR_EXP 238
 815: PUSH
 816: LD_INT 1
 818: NEG
 819: ST_TO_ADDR
// Russian1_reg1_id = - 1 ;
 820: LD_ADDR_EXP 239
 824: PUSH
 825: LD_INT 1
 827: NEG
 828: ST_TO_ADDR
// Russian1_patr_id = - 1 ;
 829: LD_ADDR_EXP 240
 833: PUSH
 834: LD_INT 1
 836: NEG
 837: ST_TO_ADDR
// Russian_reg_def_id = - 1 ;
 838: LD_ADDR_EXP 244
 842: PUSH
 843: LD_INT 1
 845: NEG
 846: ST_TO_ADDR
// Russian_def_id = - 1 ;
 847: LD_ADDR_EXP 245
 851: PUSH
 852: LD_INT 1
 854: NEG
 855: ST_TO_ADDR
// Russian_reg_id = - 1 ;
 856: LD_ADDR_EXP 241
 860: PUSH
 861: LD_INT 1
 863: NEG
 864: ST_TO_ADDR
// Russian_att_id = - 1 ;
 865: LD_ADDR_EXP 242
 869: PUSH
 870: LD_INT 1
 872: NEG
 873: ST_TO_ADDR
// Russian_patr_id = - 1 ;
 874: LD_ADDR_EXP 243
 878: PUSH
 879: LD_INT 1
 881: NEG
 882: ST_TO_ADDR
// Russian_build_id = - 1 ;
 883: LD_ADDR_EXP 246
 887: PUSH
 888: LD_INT 1
 890: NEG
 891: ST_TO_ADDR
// Alliance_reg_id = - 1 ;
 892: LD_ADDR_EXP 247
 896: PUSH
 897: LD_INT 1
 899: NEG
 900: ST_TO_ADDR
// Alliance_def_id = - 1 ;
 901: LD_ADDR_EXP 248
 905: PUSH
 906: LD_INT 1
 908: NEG
 909: ST_TO_ADDR
// Alliance_wood_reg_id = - 1 ;
 910: LD_ADDR_EXP 249
 914: PUSH
 915: LD_INT 1
 917: NEG
 918: ST_TO_ADDR
// legion_cheated = LoadVariable ( legion_cheated , true ) ;
 919: LD_ADDR_EXP 32
 923: PUSH
 924: LD_STRING legion_cheated
 926: PPUSH
 927: LD_INT 1
 929: PPUSH
 930: CALL_OW 30
 934: ST_TO_ADDR
// kappa_saved = LoadVariable ( kappa_saved , false ) ;
 935: LD_ADDR_EXP 33
 939: PUSH
 940: LD_STRING kappa_saved
 942: PPUSH
 943: LD_INT 0
 945: PPUSH
 946: CALL_OW 30
 950: ST_TO_ADDR
// kappa_delayed = LoadVariable ( kappa_delayed , true ) ;
 951: LD_ADDR_EXP 35
 955: PUSH
 956: LD_STRING kappa_delayed
 958: PPUSH
 959: LD_INT 1
 961: PPUSH
 962: CALL_OW 30
 966: ST_TO_ADDR
// Woman_alive = LoadVariable ( woman_alive , false ) ;
 967: LD_ADDR_EXP 38
 971: PUSH
 972: LD_STRING woman_alive
 974: PPUSH
 975: LD_INT 0
 977: PPUSH
 978: CALL_OW 30
 982: ST_TO_ADDR
// Initial_JMM_vehicle = LoadVariable ( veh_jmm , 0 ) ;
 983: LD_ADDR_EXP 39
 987: PUSH
 988: LD_STRING veh_jmm
 990: PPUSH
 991: LD_INT 0
 993: PPUSH
 994: CALL_OW 30
 998: ST_TO_ADDR
// Initial_Woman_vehicle = LoadVariable ( veh_surv , 0 ) ;
 999: LD_ADDR_EXP 40
1003: PUSH
1004: LD_STRING veh_surv
1006: PPUSH
1007: LD_INT 0
1009: PPUSH
1010: CALL_OW 30
1014: ST_TO_ADDR
// Woman_in_am14 = LoadVariable ( woman_in_am14 , 1 ) ;
1015: LD_ADDR_EXP 36
1019: PUSH
1020: LD_STRING woman_in_am14
1022: PPUSH
1023: LD_INT 1
1025: PPUSH
1026: CALL_OW 30
1030: ST_TO_ADDR
// if Initial_Woman_vehicle > 0 then
1031: LD_EXP 40
1035: PUSH
1036: LD_INT 0
1038: GREATER
1039: IFFALSE 1051
// Woman_saved = true else
1041: LD_ADDR_EXP 34
1045: PUSH
1046: LD_INT 1
1048: ST_TO_ADDR
1049: GO 1059
// Woman_saved = false ;
1051: LD_ADDR_EXP 34
1055: PUSH
1056: LD_INT 0
1058: ST_TO_ADDR
// americans = 1 ;
1059: LD_ADDR_EXP 176
1063: PUSH
1064: LD_INT 1
1066: ST_TO_ADDR
// americans1 = 4 ;
1067: LD_ADDR_EXP 177
1071: PUSH
1072: LD_INT 4
1074: ST_TO_ADDR
// russians = 3 ;
1075: LD_ADDR_EXP 178
1079: PUSH
1080: LD_INT 3
1082: ST_TO_ADDR
// russians1 = 6 ;
1083: LD_ADDR_EXP 179
1087: PUSH
1088: LD_INT 6
1090: ST_TO_ADDR
// arabians = 8 ;
1091: LD_ADDR_EXP 180
1095: PUSH
1096: LD_INT 8
1098: ST_TO_ADDR
// arabians1 = 2 ;
1099: LD_ADDR_EXP 181
1103: PUSH
1104: LD_INT 2
1106: ST_TO_ADDR
// alliance = 7 ;
1107: LD_ADDR_EXP 182
1111: PUSH
1112: LD_INT 7
1114: ST_TO_ADDR
// Explorers_Side = 5 ;
1115: LD_ADDR_EXP 183
1119: PUSH
1120: LD_INT 5
1122: ST_TO_ADDR
// uc_side := americans1 ;
1123: LD_ADDR_OWVAR 20
1127: PUSH
1128: LD_EXP 177
1132: ST_TO_ADDR
// OtherWithJMM = CreateCharacterSet ( OtherWithJMM ) ;
1133: LD_ADDR_EXP 30
1137: PUSH
1138: LD_STRING OtherWithJMM
1140: PPUSH
1141: CALL_OW 31
1145: ST_TO_ADDR
// OtherNotJMM = CreateCharacterSet ( OtherNotJMM ) ;
1146: LD_ADDR_EXP 31
1150: PUSH
1151: LD_STRING OtherNotJMM
1153: PPUSH
1154: CALL_OW 31
1158: ST_TO_ADDR
// BobbyLoc = LoadVariable ( BobbyLoc , 1 ) ;
1159: LD_ADDR_EXP 41
1163: PUSH
1164: LD_STRING BobbyLoc
1166: PPUSH
1167: LD_INT 1
1169: PPUSH
1170: CALL_OW 30
1174: ST_TO_ADDR
// CyrusLoc = LoadVariable ( CyrusLoc , 1 ) ;
1175: LD_ADDR_EXP 42
1179: PUSH
1180: LD_STRING CyrusLoc
1182: PPUSH
1183: LD_INT 1
1185: PPUSH
1186: CALL_OW 30
1190: ST_TO_ADDR
// LisaLoc = LoadVariable ( LisaLoc , 1 ) ;
1191: LD_ADDR_EXP 43
1195: PUSH
1196: LD_STRING LisaLoc
1198: PPUSH
1199: LD_INT 1
1201: PPUSH
1202: CALL_OW 30
1206: ST_TO_ADDR
// FrankLoc = LoadVariable ( FrankLoc , 1 ) ;
1207: LD_ADDR_EXP 44
1211: PUSH
1212: LD_STRING FrankLoc
1214: PPUSH
1215: LD_INT 1
1217: PPUSH
1218: CALL_OW 30
1222: ST_TO_ADDR
// BrownLoc = LoadVariable ( BrownLoc , 1 ) ;
1223: LD_ADDR_EXP 45
1227: PUSH
1228: LD_STRING BrownLoc
1230: PPUSH
1231: LD_INT 1
1233: PPUSH
1234: CALL_OW 30
1238: ST_TO_ADDR
// DonaldsonLoc = LoadVariable ( DonaldsonLoc , 1 ) ;
1239: LD_ADDR_EXP 46
1243: PUSH
1244: LD_STRING DonaldsonLoc
1246: PPUSH
1247: LD_INT 1
1249: PPUSH
1250: CALL_OW 30
1254: ST_TO_ADDR
// VanHoutenLoc = LoadVariable ( VanHoutenLoc , 1 ) ;
1255: LD_ADDR_EXP 47
1259: PUSH
1260: LD_STRING VanHoutenLoc
1262: PPUSH
1263: LD_INT 1
1265: PPUSH
1266: CALL_OW 30
1270: ST_TO_ADDR
// GladstoneLoc = LoadVariable ( GladstoneLoc , 1 ) ;
1271: LD_ADDR_EXP 48
1275: PUSH
1276: LD_STRING GladstoneLoc
1278: PPUSH
1279: LD_INT 1
1281: PPUSH
1282: CALL_OW 30
1286: ST_TO_ADDR
// JoanLoc = LoadVariable ( JoanLoc , 1 ) ;
1287: LD_ADDR_EXP 49
1291: PUSH
1292: LD_STRING JoanLoc
1294: PPUSH
1295: LD_INT 1
1297: PPUSH
1298: CALL_OW 30
1302: ST_TO_ADDR
// YamokoLoc = LoadVariable ( YamokoLoc , 1 ) ;
1303: LD_ADDR_EXP 50
1307: PUSH
1308: LD_STRING YamokoLoc
1310: PPUSH
1311: LD_INT 1
1313: PPUSH
1314: CALL_OW 30
1318: ST_TO_ADDR
// GaryLoc = LoadVariable ( GaryLoc , 1 ) ;
1319: LD_ADDR_EXP 51
1323: PUSH
1324: LD_STRING GaryLoc
1326: PPUSH
1327: LD_INT 1
1329: PPUSH
1330: CALL_OW 30
1334: ST_TO_ADDR
// DenisLoc = LoadVariable ( DenisLoc , 1 ) ;
1335: LD_ADDR_EXP 52
1339: PUSH
1340: LD_STRING DenisLoc
1342: PPUSH
1343: LD_INT 1
1345: PPUSH
1346: CALL_OW 30
1350: ST_TO_ADDR
// CornellLoc = LoadVariable ( CornellLoc , 1 ) ;
1351: LD_ADDR_EXP 53
1355: PUSH
1356: LD_STRING CornellLoc
1358: PPUSH
1359: LD_INT 1
1361: PPUSH
1362: CALL_OW 30
1366: ST_TO_ADDR
// Map_am_base = 1 ;
1367: LD_ADDR_EXP 161
1371: PUSH
1372: LD_INT 1
1374: ST_TO_ADDR
// Map_rus_attack = 2 ;
1375: LD_ADDR_EXP 162
1379: PUSH
1380: LD_INT 2
1382: ST_TO_ADDR
// Send_Helpers = 3 ;
1383: LD_ADDR_EXP 163
1387: PUSH
1388: LD_INT 3
1390: ST_TO_ADDR
// Send_Material = 4 ;
1391: LD_ADDR_EXP 165
1395: PUSH
1396: LD_INT 4
1398: ST_TO_ADDR
// Capture_JMM_Vehicles = 5 ;
1399: LD_ADDR_EXP 166
1403: PUSH
1404: LD_INT 5
1406: ST_TO_ADDR
// First_Powells_Attack = 6 ;
1407: LD_ADDR_EXP 167
1411: PUSH
1412: LD_INT 6
1414: ST_TO_ADDR
// Second_Powells_Attack = 7 ;
1415: LD_ADDR_EXP 168
1419: PUSH
1420: LD_INT 7
1422: ST_TO_ADDR
// Run_JMM_Vehicles = 8 ;
1423: LD_ADDR_EXP 169
1427: PUSH
1428: LD_INT 8
1430: ST_TO_ADDR
// Rus1_Attack = 9 ;
1431: LD_ADDR_EXP 170
1435: PUSH
1436: LD_INT 9
1438: ST_TO_ADDR
// Retreat_Report = 10 ;
1439: LD_ADDR_EXP 172
1443: PUSH
1444: LD_INT 10
1446: ST_TO_ADDR
// JMM_Talk = 11 ;
1447: LD_ADDR_EXP 173
1451: PUSH
1452: LD_INT 11
1454: ST_TO_ADDR
// Send_Arabian_Back = 12 ;
1455: LD_ADDR_EXP 174
1459: PUSH
1460: LD_INT 12
1462: ST_TO_ADDR
// Link_Bombs = 13 ;
1463: LD_ADDR_EXP 175
1467: PUSH
1468: LD_INT 13
1470: ST_TO_ADDR
// Rus_Attack = 14 ;
1471: LD_ADDR_EXP 171
1475: PUSH
1476: LD_INT 14
1478: ST_TO_ADDR
// JMM_Is_Ready = 15 ;
1479: LD_ADDR_EXP 144
1483: PUSH
1484: LD_INT 15
1486: ST_TO_ADDR
// First_JMM_Task = 1 ;
1487: LD_ADDR_EXP 137
1491: PUSH
1492: LD_INT 1
1494: ST_TO_ADDR
// disable ( First_JMM_Task ) ;
1495: LD_EXP 137
1499: DISABLE_MARKED
// out_of_base = 2 ;
1500: LD_ADDR_EXP 138
1504: PUSH
1505: LD_INT 2
1507: ST_TO_ADDR
// disable ( out_of_base ) ;
1508: LD_EXP 138
1512: DISABLE_MARKED
// Great_ingame_video = 3 ;
1513: LD_ADDR_EXP 139
1517: PUSH
1518: LD_INT 3
1520: ST_TO_ADDR
// disable ( Great_ingame_video ) ;
1521: LD_EXP 139
1525: DISABLE_MARKED
// R1_attack = 4 ;
1526: LD_ADDR_EXP 140
1530: PUSH
1531: LD_INT 4
1533: ST_TO_ADDR
// disable ( R1_attack ) ;
1534: LD_EXP 140
1538: DISABLE_MARKED
// Protect_Powell = 5 ;
1539: LD_ADDR_EXP 141
1543: PUSH
1544: LD_INT 5
1546: ST_TO_ADDR
// disable ( Protect_Powell ) ;
1547: LD_EXP 141
1551: DISABLE_MARKED
// Talk_Bomba = 6 ;
1552: LD_ADDR_EXP 142
1556: PUSH
1557: LD_INT 6
1559: ST_TO_ADDR
// disable ( Talk_Bomba ) ;
1560: LD_EXP 142
1564: DISABLE_MARKED
// Center_on_fight = 7 ;
1565: LD_ADDR_EXP 143
1569: PUSH
1570: LD_INT 7
1572: ST_TO_ADDR
// disable ( Center_on_fight ) ;
1573: LD_EXP 143
1577: DISABLE_MARKED
// Not_Ingame_Run_over = 8 ;
1578: LD_ADDR_EXP 157
1582: PUSH
1583: LD_INT 8
1585: ST_TO_ADDR
// enable ( Not_Ingame_Run_over ) ;
1586: LD_EXP 157
1590: ENABLE_MARKED
// Ingame_Run_over = 9 ;
1591: LD_ADDR_EXP 145
1595: PUSH
1596: LD_INT 9
1598: ST_TO_ADDR
// disable ( Ingame_Run_over ) ;
1599: LD_EXP 145
1603: DISABLE_MARKED
// Game_Continue = 10 ;
1604: LD_ADDR_EXP 146
1608: PUSH
1609: LD_INT 10
1611: ST_TO_ADDR
// disable ( Game_Continue ) ;
1612: LD_EXP 146
1616: DISABLE_MARKED
// Woman_Comes = 11 ;
1617: LD_ADDR_EXP 148
1621: PUSH
1622: LD_INT 11
1624: ST_TO_ADDR
// Vsevolod_Comes = 12 ;
1625: LD_ADDR_EXP 147
1629: PUSH
1630: LD_INT 12
1632: ST_TO_ADDR
// if ( Woman_alive and kappa_saved and woman_saved = false ) then
1633: LD_EXP 38
1637: PUSH
1638: LD_EXP 33
1642: AND
1643: PUSH
1644: LD_EXP 34
1648: PUSH
1649: LD_INT 0
1651: EQUAL
1652: AND
1653: IFFALSE 1667
// begin disable ( Vsevolod_Comes ) ;
1655: LD_EXP 147
1659: DISABLE_MARKED
// enable ( Woman_Comes ) ;
1660: LD_EXP 148
1664: ENABLE_MARKED
// end else
1665: GO 1696
// if not ( kappa_saved ) then
1667: LD_EXP 33
1671: NOT
1672: IFFALSE 1686
// begin enable ( Vsevolod_Comes ) ;
1674: LD_EXP 147
1678: ENABLE_MARKED
// disable ( Woman_Comes ) ;
1679: LD_EXP 148
1683: DISABLE_MARKED
// end else
1684: GO 1696
// begin disable ( Vsevolod_Comes ) ;
1686: LD_EXP 147
1690: DISABLE_MARKED
// disable ( Woman_Comes ) ;
1691: LD_EXP 148
1695: DISABLE_MARKED
// end ; Matherlod_Contamined1 = 13 ;
1696: LD_ADDR_EXP 149
1700: PUSH
1701: LD_INT 13
1703: ST_TO_ADDR
// disable ( Matherlod_Contamined1 ) ;
1704: LD_EXP 149
1708: DISABLE_MARKED
// Matherlod_Contamined2 = 14 ;
1709: LD_ADDR_EXP 150
1713: PUSH
1714: LD_INT 14
1716: ST_TO_ADDR
// disable ( Matherlod_Contamined2 ) ;
1717: LD_EXP 150
1721: DISABLE_MARKED
// Matherlod_Contamined3 = 15 ;
1722: LD_ADDR_EXP 151
1726: PUSH
1727: LD_INT 15
1729: ST_TO_ADDR
// disable ( Matherlod_Contamined3 ) ;
1730: LD_EXP 151
1734: DISABLE_MARKED
// Alliance_Captured = 16 ;
1735: LD_ADDR_EXP 152
1739: PUSH
1740: LD_INT 16
1742: ST_TO_ADDR
// disable ( Alliance_Captured ) ;
1743: LD_EXP 152
1747: DISABLE_MARKED
// Explorers_Can_Go = 17 ;
1748: LD_ADDR_EXP 153
1752: PUSH
1753: LD_INT 17
1755: ST_TO_ADDR
// disable ( Explorers_Can_Go ) ;
1756: LD_EXP 153
1760: DISABLE_MARKED
// Not_End_of_Alliance = 18 ;
1761: LD_ADDR_EXP 154
1765: PUSH
1766: LD_INT 18
1768: ST_TO_ADDR
// enable ( Not_End_of_Alliance ) ;
1769: LD_EXP 154
1773: ENABLE_MARKED
// JMM_has_surrounded = 19 ;
1774: LD_ADDR_EXP 155
1778: PUSH
1779: LD_INT 19
1781: ST_TO_ADDR
// disable ( JMM_has_surrounded ) ;
1782: LD_EXP 155
1786: DISABLE_MARKED
// Friend_Escapes = 20 ;
1787: LD_ADDR_EXP 156
1791: PUSH
1792: LD_INT 20
1794: ST_TO_ADDR
// disable ( Friend_Escapes ) ;
1795: LD_EXP 156
1799: DISABLE_MARKED
// JMM_Captured = 22 ;
1800: LD_ADDR_EXP 160
1804: PUSH
1805: LD_INT 22
1807: ST_TO_ADDR
// disable ( JMM_Captured ) ;
1808: LD_EXP 160
1812: DISABLE_MARKED
// End_of_m = 23 ;
1813: LD_ADDR_EXP 158
1817: PUSH
1818: LD_INT 23
1820: ST_TO_ADDR
// disable ( End_of_m ) ;
1821: LD_EXP 158
1825: DISABLE_MARKED
// Timer = 24 ;
1826: LD_ADDR_EXP 159
1830: PUSH
1831: LD_INT 24
1833: ST_TO_ADDR
// disable ( Timer ) ;
1834: LD_EXP 159
1838: DISABLE_MARKED
// Arabian_buildings = [ [ b_bunker , 56 , 28 , 0 , [ ar_rocket_launcher ] ] , [ b_bunker , 53 , 25 , 0 , [ ar_gun ] ] , [ b_bunker , 59 , 28 , 5 , [ ar_radar ] ] , [ b_bunker , 35 , 4 , 0 , [ ar_radar ] ] , [ b_bunker , 68 , 20 , 0 , [ ar_radar ] ] , [ b_depot , 53 , 7 , 3 , [ ] ] , [ b_siberite_power , 42 , 5 , 0 , [ ] ] , [ b_siberite_power , 44 , 3 , 0 , [ ] ] , [ b_siberite_power , 93 , 7 , 0 , [ ] ] , [ b_siberite_power , 91 , 3 , 0 , [ ] ] , [ b_barracks , 49 , 9 , 1 , [ ] ] , [ b_bunker , 66 , 26 , 0 , [ ar_rocket_launcher ] ] , [ b_bunker , 69 , 26 , 0 , [ ar_gun ] ] , [ b_bunker , 57 , 13 , 0 , [ ar_flame_thrower ] ] , [ b_bunker , 70 , 10 , 0 , [ ar_gun ] ] , [ b_bunker , 83 , 24 , 0 , [ ar_gun ] ] , [ b_bunker , 88 , 27 , 0 , [ ar_rocket_launcher ] ] , [ b_lab_full , 68 , 13 , 5 , [ b_lab_siberium , b_lab_weapon ] ] , [ b_factory , 89 , 21 , 4 , [ ] ] , [ b_barracks , 84 , 10 , 0 , [ ] ] , [ b_bunker , 88 , 13 , 0 , [ ar_gun ] ] , [ b_bunker , 59 , 10 , 0 , [ ar_gun ] ] , [ b_bunker , 79 , 4 , 5 , [ ar_rocket_launcher ] ] , [ b_warehouse , 84 , 4 , 2 , [ ] ] , [ b_ext_rocket , 93 , 21 , 4 , [ ] ] , [ b_ext_radar , 89 , 18 , 3 , [ ] ] , [ b_ext_gun , 92 , 24 , 5 , [ ] ] , [ b_bunker , 93 , 27 , 1 , [ ar_radar ] ] , [ b_bunker , 90 , 11 , 0 , [ ar_radar ] ] ] ;
1839: LD_ADDR_EXP 88
1843: PUSH
1844: LD_INT 32
1846: PUSH
1847: LD_INT 56
1849: PUSH
1850: LD_INT 28
1852: PUSH
1853: LD_INT 0
1855: PUSH
1856: LD_INT 28
1858: PUSH
1859: EMPTY
1860: LIST
1861: PUSH
1862: EMPTY
1863: LIST
1864: LIST
1865: LIST
1866: LIST
1867: LIST
1868: PUSH
1869: LD_INT 32
1871: PUSH
1872: LD_INT 53
1874: PUSH
1875: LD_INT 25
1877: PUSH
1878: LD_INT 0
1880: PUSH
1881: LD_INT 27
1883: PUSH
1884: EMPTY
1885: LIST
1886: PUSH
1887: EMPTY
1888: LIST
1889: LIST
1890: LIST
1891: LIST
1892: LIST
1893: PUSH
1894: LD_INT 32
1896: PUSH
1897: LD_INT 59
1899: PUSH
1900: LD_INT 28
1902: PUSH
1903: LD_INT 5
1905: PUSH
1906: LD_INT 30
1908: PUSH
1909: EMPTY
1910: LIST
1911: PUSH
1912: EMPTY
1913: LIST
1914: LIST
1915: LIST
1916: LIST
1917: LIST
1918: PUSH
1919: LD_INT 32
1921: PUSH
1922: LD_INT 35
1924: PUSH
1925: LD_INT 4
1927: PUSH
1928: LD_INT 0
1930: PUSH
1931: LD_INT 30
1933: PUSH
1934: EMPTY
1935: LIST
1936: PUSH
1937: EMPTY
1938: LIST
1939: LIST
1940: LIST
1941: LIST
1942: LIST
1943: PUSH
1944: LD_INT 32
1946: PUSH
1947: LD_INT 68
1949: PUSH
1950: LD_INT 20
1952: PUSH
1953: LD_INT 0
1955: PUSH
1956: LD_INT 30
1958: PUSH
1959: EMPTY
1960: LIST
1961: PUSH
1962: EMPTY
1963: LIST
1964: LIST
1965: LIST
1966: LIST
1967: LIST
1968: PUSH
1969: LD_INT 0
1971: PUSH
1972: LD_INT 53
1974: PUSH
1975: LD_INT 7
1977: PUSH
1978: LD_INT 3
1980: PUSH
1981: EMPTY
1982: PUSH
1983: EMPTY
1984: LIST
1985: LIST
1986: LIST
1987: LIST
1988: LIST
1989: PUSH
1990: LD_INT 28
1992: PUSH
1993: LD_INT 42
1995: PUSH
1996: LD_INT 5
1998: PUSH
1999: LD_INT 0
2001: PUSH
2002: EMPTY
2003: PUSH
2004: EMPTY
2005: LIST
2006: LIST
2007: LIST
2008: LIST
2009: LIST
2010: PUSH
2011: LD_INT 28
2013: PUSH
2014: LD_INT 44
2016: PUSH
2017: LD_INT 3
2019: PUSH
2020: LD_INT 0
2022: PUSH
2023: EMPTY
2024: PUSH
2025: EMPTY
2026: LIST
2027: LIST
2028: LIST
2029: LIST
2030: LIST
2031: PUSH
2032: LD_INT 28
2034: PUSH
2035: LD_INT 93
2037: PUSH
2038: LD_INT 7
2040: PUSH
2041: LD_INT 0
2043: PUSH
2044: EMPTY
2045: PUSH
2046: EMPTY
2047: LIST
2048: LIST
2049: LIST
2050: LIST
2051: LIST
2052: PUSH
2053: LD_INT 28
2055: PUSH
2056: LD_INT 91
2058: PUSH
2059: LD_INT 3
2061: PUSH
2062: LD_INT 0
2064: PUSH
2065: EMPTY
2066: PUSH
2067: EMPTY
2068: LIST
2069: LIST
2070: LIST
2071: LIST
2072: LIST
2073: PUSH
2074: LD_INT 5
2076: PUSH
2077: LD_INT 49
2079: PUSH
2080: LD_INT 9
2082: PUSH
2083: LD_INT 1
2085: PUSH
2086: EMPTY
2087: PUSH
2088: EMPTY
2089: LIST
2090: LIST
2091: LIST
2092: LIST
2093: LIST
2094: PUSH
2095: LD_INT 32
2097: PUSH
2098: LD_INT 66
2100: PUSH
2101: LD_INT 26
2103: PUSH
2104: LD_INT 0
2106: PUSH
2107: LD_INT 28
2109: PUSH
2110: EMPTY
2111: LIST
2112: PUSH
2113: EMPTY
2114: LIST
2115: LIST
2116: LIST
2117: LIST
2118: LIST
2119: PUSH
2120: LD_INT 32
2122: PUSH
2123: LD_INT 69
2125: PUSH
2126: LD_INT 26
2128: PUSH
2129: LD_INT 0
2131: PUSH
2132: LD_INT 27
2134: PUSH
2135: EMPTY
2136: LIST
2137: PUSH
2138: EMPTY
2139: LIST
2140: LIST
2141: LIST
2142: LIST
2143: LIST
2144: PUSH
2145: LD_INT 32
2147: PUSH
2148: LD_INT 57
2150: PUSH
2151: LD_INT 13
2153: PUSH
2154: LD_INT 0
2156: PUSH
2157: LD_INT 26
2159: PUSH
2160: EMPTY
2161: LIST
2162: PUSH
2163: EMPTY
2164: LIST
2165: LIST
2166: LIST
2167: LIST
2168: LIST
2169: PUSH
2170: LD_INT 32
2172: PUSH
2173: LD_INT 70
2175: PUSH
2176: LD_INT 10
2178: PUSH
2179: LD_INT 0
2181: PUSH
2182: LD_INT 27
2184: PUSH
2185: EMPTY
2186: LIST
2187: PUSH
2188: EMPTY
2189: LIST
2190: LIST
2191: LIST
2192: LIST
2193: LIST
2194: PUSH
2195: LD_INT 32
2197: PUSH
2198: LD_INT 83
2200: PUSH
2201: LD_INT 24
2203: PUSH
2204: LD_INT 0
2206: PUSH
2207: LD_INT 27
2209: PUSH
2210: EMPTY
2211: LIST
2212: PUSH
2213: EMPTY
2214: LIST
2215: LIST
2216: LIST
2217: LIST
2218: LIST
2219: PUSH
2220: LD_INT 32
2222: PUSH
2223: LD_INT 88
2225: PUSH
2226: LD_INT 27
2228: PUSH
2229: LD_INT 0
2231: PUSH
2232: LD_INT 28
2234: PUSH
2235: EMPTY
2236: LIST
2237: PUSH
2238: EMPTY
2239: LIST
2240: LIST
2241: LIST
2242: LIST
2243: LIST
2244: PUSH
2245: LD_INT 8
2247: PUSH
2248: LD_INT 68
2250: PUSH
2251: LD_INT 13
2253: PUSH
2254: LD_INT 5
2256: PUSH
2257: LD_INT 11
2259: PUSH
2260: LD_INT 10
2262: PUSH
2263: EMPTY
2264: LIST
2265: LIST
2266: PUSH
2267: EMPTY
2268: LIST
2269: LIST
2270: LIST
2271: LIST
2272: LIST
2273: PUSH
2274: LD_INT 3
2276: PUSH
2277: LD_INT 89
2279: PUSH
2280: LD_INT 21
2282: PUSH
2283: LD_INT 4
2285: PUSH
2286: EMPTY
2287: PUSH
2288: EMPTY
2289: LIST
2290: LIST
2291: LIST
2292: LIST
2293: LIST
2294: PUSH
2295: LD_INT 5
2297: PUSH
2298: LD_INT 84
2300: PUSH
2301: LD_INT 10
2303: PUSH
2304: LD_INT 0
2306: PUSH
2307: EMPTY
2308: PUSH
2309: EMPTY
2310: LIST
2311: LIST
2312: LIST
2313: LIST
2314: LIST
2315: PUSH
2316: LD_INT 32
2318: PUSH
2319: LD_INT 88
2321: PUSH
2322: LD_INT 13
2324: PUSH
2325: LD_INT 0
2327: PUSH
2328: LD_INT 27
2330: PUSH
2331: EMPTY
2332: LIST
2333: PUSH
2334: EMPTY
2335: LIST
2336: LIST
2337: LIST
2338: LIST
2339: LIST
2340: PUSH
2341: LD_INT 32
2343: PUSH
2344: LD_INT 59
2346: PUSH
2347: LD_INT 10
2349: PUSH
2350: LD_INT 0
2352: PUSH
2353: LD_INT 27
2355: PUSH
2356: EMPTY
2357: LIST
2358: PUSH
2359: EMPTY
2360: LIST
2361: LIST
2362: LIST
2363: LIST
2364: LIST
2365: PUSH
2366: LD_INT 32
2368: PUSH
2369: LD_INT 79
2371: PUSH
2372: LD_INT 4
2374: PUSH
2375: LD_INT 5
2377: PUSH
2378: LD_INT 28
2380: PUSH
2381: EMPTY
2382: LIST
2383: PUSH
2384: EMPTY
2385: LIST
2386: LIST
2387: LIST
2388: LIST
2389: LIST
2390: PUSH
2391: LD_INT 1
2393: PUSH
2394: LD_INT 84
2396: PUSH
2397: LD_INT 4
2399: PUSH
2400: LD_INT 2
2402: PUSH
2403: EMPTY
2404: PUSH
2405: EMPTY
2406: LIST
2407: LIST
2408: LIST
2409: LIST
2410: LIST
2411: PUSH
2412: LD_INT 18
2414: PUSH
2415: LD_INT 93
2417: PUSH
2418: LD_INT 21
2420: PUSH
2421: LD_INT 4
2423: PUSH
2424: EMPTY
2425: PUSH
2426: EMPTY
2427: LIST
2428: LIST
2429: LIST
2430: LIST
2431: LIST
2432: PUSH
2433: LD_INT 20
2435: PUSH
2436: LD_INT 89
2438: PUSH
2439: LD_INT 18
2441: PUSH
2442: LD_INT 3
2444: PUSH
2445: EMPTY
2446: PUSH
2447: EMPTY
2448: LIST
2449: LIST
2450: LIST
2451: LIST
2452: LIST
2453: PUSH
2454: LD_INT 17
2456: PUSH
2457: LD_INT 92
2459: PUSH
2460: LD_INT 24
2462: PUSH
2463: LD_INT 5
2465: PUSH
2466: EMPTY
2467: PUSH
2468: EMPTY
2469: LIST
2470: LIST
2471: LIST
2472: LIST
2473: LIST
2474: PUSH
2475: LD_INT 32
2477: PUSH
2478: LD_INT 93
2480: PUSH
2481: LD_INT 27
2483: PUSH
2484: LD_INT 1
2486: PUSH
2487: LD_INT 30
2489: PUSH
2490: EMPTY
2491: LIST
2492: PUSH
2493: EMPTY
2494: LIST
2495: LIST
2496: LIST
2497: LIST
2498: LIST
2499: PUSH
2500: LD_INT 32
2502: PUSH
2503: LD_INT 90
2505: PUSH
2506: LD_INT 11
2508: PUSH
2509: LD_INT 0
2511: PUSH
2512: LD_INT 30
2514: PUSH
2515: EMPTY
2516: LIST
2517: PUSH
2518: EMPTY
2519: LIST
2520: LIST
2521: LIST
2522: LIST
2523: LIST
2524: PUSH
2525: EMPTY
2526: LIST
2527: LIST
2528: LIST
2529: LIST
2530: LIST
2531: LIST
2532: LIST
2533: LIST
2534: LIST
2535: LIST
2536: LIST
2537: LIST
2538: LIST
2539: LIST
2540: LIST
2541: LIST
2542: LIST
2543: LIST
2544: LIST
2545: LIST
2546: LIST
2547: LIST
2548: LIST
2549: LIST
2550: LIST
2551: LIST
2552: LIST
2553: LIST
2554: LIST
2555: ST_TO_ADDR
// Russian_Buildings = [ [ b_lab_full , 202 , 95 , 5 , [ b_lab_siberium , b_lab_weapon ] ] , [ b_barracks , 170 , 45 , 2 , [ ] ] , [ b_factory , 195 , 84 , 4 , [ ] ] , [ b_ext_rocket , 191 , 80 , 2 , [ ] ] , [ b_ext_siberium , 195 , 81 , 3 , [ ] ] , [ b_ext_computer , 199 , 84 , 4 , [ ] ] , [ b_ext_gun , 198 , 87 , 5 , [ ] ] , [ b_ext_track , 195 , 88 , 0 , [ ] ] , [ b_siberite_power , 190 , 66 , 1 , [ ] ] , [ b_turret , 182 , 58 , 1 , [ ru_rocket ] ] , [ b_turret , 188 , 70 , 1 , [ ru_rocket ] ] , [ b_turret , 183 , 61 , 1 , [ ru_time_lapser ] ] , [ b_turret , 186 , 67 , 1 , [ ru_heavy_gun ] ] , [ b_turret , 185 , 64 , 1 , [ ru_gatling_gun ] ] , [ b_warehouse , 175 , 56 , 3 , [ ] ] , [ b_teleport , 182 , 87 , 0 , [ ] ] , [ b_teleport , 165 , 60 , 3 , [ ] ] , [ b_warehouse , 175 , 81 , 3 , [ ] ] , [ b_barracks , 155 , 44 , 5 , [ ] ] , [ b_turret , 156 , 73 , 1 , [ ru_heavy_gun ] ] , [ b_turret , 158 , 76 , 0 , [ ru_rocket_launcher ] ] , [ b_turret , 156 , 78 , 1 , [ ru_rocket ] ] , [ b_turret , 160 , 86 , 0 , [ ru_heavy_gun ] ] , [ b_bunker , 158 , 82 , 1 , [ ru_gatling_gun ] ] , [ b_bunker , 164 , 86 , 1 , [ ru_rocket ] ] , [ b_bunker , 161 , 81 , 1 , [ ru_rocket_launcher ] ] , [ b_turret , 161 , 75 , 1 , [ ru_time_lapser ] ] , [ b_siberite_power , 163 , 79 , 0 , [ ] ] , [ b_turret , 182 , 105 , 0 , [ ru_gatling_gun ] ] , [ b_turret , 161 , 93 , 1 , [ ru_heavy_gun ] ] , [ b_turret , 164 , 98 , 1 , [ ru_time_lapser ] ] , [ b_turret , 188 , 98 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 200 , 98 , 0 , [ ru_gatling_gun ] ] , [ b_siberite_power , 166 , 96 , 0 , [ ] ] , [ b_turret , 169 , 100 , 1 , [ ru_rocket ] ] , [ b_turret , 208 , 106 , 0 , [ ru_gatling_gun ] ] , [ b_turret , 196 , 107 , 0 , [ ru_rocket ] ] , [ b_siberite_power , 186 , 101 , 4 , [ ] ] , [ b_siberite_power , 193 , 101 , 3 , [ ] ] , [ b_siberite_power , 182 , 50 , 1 , [ ] ] , [ b_siberite_power , 153 , 28 , 4 , [ ] ] , [ b_siberite_power , 201 , 89 , 1 , [ ] ] , [ b_turret , 150 , 25 , 0 , [ ru_rocket_launcher ] ] , [ b_turret , 151 , 31 , 0 , [ ru_heavy_gun ] ] , [ b_bunker , 153 , 39 , 0 , [ ru_heavy_gun ] ] , [ b_turret , 157 , 41 , 1 , [ ru_time_lapser ] ] , [ b_bunker , 158 , 54 , 1 , [ ru_time_lapser ] ] , [ b_turret , 155 , 35 , 0 , [ ru_rocket ] ] , [ b_turret , 190 , 106 , 0 , [ ru_time_lapser ] ] , [ b_turret , 201 , 106 , 0 , [ ru_time_lapser ] ] , [ b_turret , 154 , 63 , 1 , [ ru_time_lapser ] ] , [ b_turret , 158 , 67 , 1 , [ ru_gatling_gun ] ] , [ b_bunker , 155 , 57 , 1 , [ ru_heavy_gun ] ] , [ b_bunker , 158 , 62 , 1 , [ ru_rocket ] ] , [ b_turret , 164 , 89 , 4 , [ ru_time_lapser ] ] ] ;
2556: LD_ADDR_EXP 113
2560: PUSH
2561: LD_INT 8
2563: PUSH
2564: LD_INT 202
2566: PUSH
2567: LD_INT 95
2569: PUSH
2570: LD_INT 5
2572: PUSH
2573: LD_INT 11
2575: PUSH
2576: LD_INT 10
2578: PUSH
2579: EMPTY
2580: LIST
2581: LIST
2582: PUSH
2583: EMPTY
2584: LIST
2585: LIST
2586: LIST
2587: LIST
2588: LIST
2589: PUSH
2590: LD_INT 5
2592: PUSH
2593: LD_INT 170
2595: PUSH
2596: LD_INT 45
2598: PUSH
2599: LD_INT 2
2601: PUSH
2602: EMPTY
2603: PUSH
2604: EMPTY
2605: LIST
2606: LIST
2607: LIST
2608: LIST
2609: LIST
2610: PUSH
2611: LD_INT 3
2613: PUSH
2614: LD_INT 195
2616: PUSH
2617: LD_INT 84
2619: PUSH
2620: LD_INT 4
2622: PUSH
2623: EMPTY
2624: PUSH
2625: EMPTY
2626: LIST
2627: LIST
2628: LIST
2629: LIST
2630: LIST
2631: PUSH
2632: LD_INT 18
2634: PUSH
2635: LD_INT 191
2637: PUSH
2638: LD_INT 80
2640: PUSH
2641: LD_INT 2
2643: PUSH
2644: EMPTY
2645: PUSH
2646: EMPTY
2647: LIST
2648: LIST
2649: LIST
2650: LIST
2651: LIST
2652: PUSH
2653: LD_INT 21
2655: PUSH
2656: LD_INT 195
2658: PUSH
2659: LD_INT 81
2661: PUSH
2662: LD_INT 3
2664: PUSH
2665: EMPTY
2666: PUSH
2667: EMPTY
2668: LIST
2669: LIST
2670: LIST
2671: LIST
2672: LIST
2673: PUSH
2674: LD_INT 24
2676: PUSH
2677: LD_INT 199
2679: PUSH
2680: LD_INT 84
2682: PUSH
2683: LD_INT 4
2685: PUSH
2686: EMPTY
2687: PUSH
2688: EMPTY
2689: LIST
2690: LIST
2691: LIST
2692: LIST
2693: LIST
2694: PUSH
2695: LD_INT 17
2697: PUSH
2698: LD_INT 198
2700: PUSH
2701: LD_INT 87
2703: PUSH
2704: LD_INT 5
2706: PUSH
2707: EMPTY
2708: PUSH
2709: EMPTY
2710: LIST
2711: LIST
2712: LIST
2713: LIST
2714: LIST
2715: PUSH
2716: LD_INT 16
2718: PUSH
2719: LD_INT 195
2721: PUSH
2722: LD_INT 88
2724: PUSH
2725: LD_INT 0
2727: PUSH
2728: EMPTY
2729: PUSH
2730: EMPTY
2731: LIST
2732: LIST
2733: LIST
2734: LIST
2735: LIST
2736: PUSH
2737: LD_INT 28
2739: PUSH
2740: LD_INT 190
2742: PUSH
2743: LD_INT 66
2745: PUSH
2746: LD_INT 1
2748: PUSH
2749: EMPTY
2750: PUSH
2751: EMPTY
2752: LIST
2753: LIST
2754: LIST
2755: LIST
2756: LIST
2757: PUSH
2758: LD_INT 33
2760: PUSH
2761: LD_INT 182
2763: PUSH
2764: LD_INT 58
2766: PUSH
2767: LD_INT 1
2769: PUSH
2770: LD_INT 47
2772: PUSH
2773: EMPTY
2774: LIST
2775: PUSH
2776: EMPTY
2777: LIST
2778: LIST
2779: LIST
2780: LIST
2781: LIST
2782: PUSH
2783: LD_INT 33
2785: PUSH
2786: LD_INT 188
2788: PUSH
2789: LD_INT 70
2791: PUSH
2792: LD_INT 1
2794: PUSH
2795: LD_INT 47
2797: PUSH
2798: EMPTY
2799: LIST
2800: PUSH
2801: EMPTY
2802: LIST
2803: LIST
2804: LIST
2805: LIST
2806: LIST
2807: PUSH
2808: LD_INT 33
2810: PUSH
2811: LD_INT 183
2813: PUSH
2814: LD_INT 61
2816: PUSH
2817: LD_INT 1
2819: PUSH
2820: LD_INT 49
2822: PUSH
2823: EMPTY
2824: LIST
2825: PUSH
2826: EMPTY
2827: LIST
2828: LIST
2829: LIST
2830: LIST
2831: LIST
2832: PUSH
2833: LD_INT 33
2835: PUSH
2836: LD_INT 186
2838: PUSH
2839: LD_INT 67
2841: PUSH
2842: LD_INT 1
2844: PUSH
2845: LD_INT 46
2847: PUSH
2848: EMPTY
2849: LIST
2850: PUSH
2851: EMPTY
2852: LIST
2853: LIST
2854: LIST
2855: LIST
2856: LIST
2857: PUSH
2858: LD_INT 33
2860: PUSH
2861: LD_INT 185
2863: PUSH
2864: LD_INT 64
2866: PUSH
2867: LD_INT 1
2869: PUSH
2870: LD_INT 43
2872: PUSH
2873: EMPTY
2874: LIST
2875: PUSH
2876: EMPTY
2877: LIST
2878: LIST
2879: LIST
2880: LIST
2881: LIST
2882: PUSH
2883: LD_INT 1
2885: PUSH
2886: LD_INT 175
2888: PUSH
2889: LD_INT 56
2891: PUSH
2892: LD_INT 3
2894: PUSH
2895: EMPTY
2896: PUSH
2897: EMPTY
2898: LIST
2899: LIST
2900: LIST
2901: LIST
2902: LIST
2903: PUSH
2904: LD_INT 34
2906: PUSH
2907: LD_INT 182
2909: PUSH
2910: LD_INT 87
2912: PUSH
2913: LD_INT 0
2915: PUSH
2916: EMPTY
2917: PUSH
2918: EMPTY
2919: LIST
2920: LIST
2921: LIST
2922: LIST
2923: LIST
2924: PUSH
2925: LD_INT 34
2927: PUSH
2928: LD_INT 165
2930: PUSH
2931: LD_INT 60
2933: PUSH
2934: LD_INT 3
2936: PUSH
2937: EMPTY
2938: PUSH
2939: EMPTY
2940: LIST
2941: LIST
2942: LIST
2943: LIST
2944: LIST
2945: PUSH
2946: LD_INT 1
2948: PUSH
2949: LD_INT 175
2951: PUSH
2952: LD_INT 81
2954: PUSH
2955: LD_INT 3
2957: PUSH
2958: EMPTY
2959: PUSH
2960: EMPTY
2961: LIST
2962: LIST
2963: LIST
2964: LIST
2965: LIST
2966: PUSH
2967: LD_INT 5
2969: PUSH
2970: LD_INT 155
2972: PUSH
2973: LD_INT 44
2975: PUSH
2976: LD_INT 5
2978: PUSH
2979: EMPTY
2980: PUSH
2981: EMPTY
2982: LIST
2983: LIST
2984: LIST
2985: LIST
2986: LIST
2987: PUSH
2988: LD_INT 33
2990: PUSH
2991: LD_INT 156
2993: PUSH
2994: LD_INT 73
2996: PUSH
2997: LD_INT 1
2999: PUSH
3000: LD_INT 46
3002: PUSH
3003: EMPTY
3004: LIST
3005: PUSH
3006: EMPTY
3007: LIST
3008: LIST
3009: LIST
3010: LIST
3011: LIST
3012: PUSH
3013: LD_INT 33
3015: PUSH
3016: LD_INT 158
3018: PUSH
3019: LD_INT 76
3021: PUSH
3022: LD_INT 0
3024: PUSH
3025: LD_INT 45
3027: PUSH
3028: EMPTY
3029: LIST
3030: PUSH
3031: EMPTY
3032: LIST
3033: LIST
3034: LIST
3035: LIST
3036: LIST
3037: PUSH
3038: LD_INT 33
3040: PUSH
3041: LD_INT 156
3043: PUSH
3044: LD_INT 78
3046: PUSH
3047: LD_INT 1
3049: PUSH
3050: LD_INT 47
3052: PUSH
3053: EMPTY
3054: LIST
3055: PUSH
3056: EMPTY
3057: LIST
3058: LIST
3059: LIST
3060: LIST
3061: LIST
3062: PUSH
3063: LD_INT 33
3065: PUSH
3066: LD_INT 160
3068: PUSH
3069: LD_INT 86
3071: PUSH
3072: LD_INT 0
3074: PUSH
3075: LD_INT 46
3077: PUSH
3078: EMPTY
3079: LIST
3080: PUSH
3081: EMPTY
3082: LIST
3083: LIST
3084: LIST
3085: LIST
3086: LIST
3087: PUSH
3088: LD_INT 32
3090: PUSH
3091: LD_INT 158
3093: PUSH
3094: LD_INT 82
3096: PUSH
3097: LD_INT 1
3099: PUSH
3100: LD_INT 43
3102: PUSH
3103: EMPTY
3104: LIST
3105: PUSH
3106: EMPTY
3107: LIST
3108: LIST
3109: LIST
3110: LIST
3111: LIST
3112: PUSH
3113: LD_INT 32
3115: PUSH
3116: LD_INT 164
3118: PUSH
3119: LD_INT 86
3121: PUSH
3122: LD_INT 1
3124: PUSH
3125: LD_INT 47
3127: PUSH
3128: EMPTY
3129: LIST
3130: PUSH
3131: EMPTY
3132: LIST
3133: LIST
3134: LIST
3135: LIST
3136: LIST
3137: PUSH
3138: LD_INT 32
3140: PUSH
3141: LD_INT 161
3143: PUSH
3144: LD_INT 81
3146: PUSH
3147: LD_INT 1
3149: PUSH
3150: LD_INT 45
3152: PUSH
3153: EMPTY
3154: LIST
3155: PUSH
3156: EMPTY
3157: LIST
3158: LIST
3159: LIST
3160: LIST
3161: LIST
3162: PUSH
3163: LD_INT 33
3165: PUSH
3166: LD_INT 161
3168: PUSH
3169: LD_INT 75
3171: PUSH
3172: LD_INT 1
3174: PUSH
3175: LD_INT 49
3177: PUSH
3178: EMPTY
3179: LIST
3180: PUSH
3181: EMPTY
3182: LIST
3183: LIST
3184: LIST
3185: LIST
3186: LIST
3187: PUSH
3188: LD_INT 28
3190: PUSH
3191: LD_INT 163
3193: PUSH
3194: LD_INT 79
3196: PUSH
3197: LD_INT 0
3199: PUSH
3200: EMPTY
3201: PUSH
3202: EMPTY
3203: LIST
3204: LIST
3205: LIST
3206: LIST
3207: LIST
3208: PUSH
3209: LD_INT 33
3211: PUSH
3212: LD_INT 182
3214: PUSH
3215: LD_INT 105
3217: PUSH
3218: LD_INT 0
3220: PUSH
3221: LD_INT 43
3223: PUSH
3224: EMPTY
3225: LIST
3226: PUSH
3227: EMPTY
3228: LIST
3229: LIST
3230: LIST
3231: LIST
3232: LIST
3233: PUSH
3234: LD_INT 33
3236: PUSH
3237: LD_INT 161
3239: PUSH
3240: LD_INT 93
3242: PUSH
3243: LD_INT 1
3245: PUSH
3246: LD_INT 46
3248: PUSH
3249: EMPTY
3250: LIST
3251: PUSH
3252: EMPTY
3253: LIST
3254: LIST
3255: LIST
3256: LIST
3257: LIST
3258: PUSH
3259: LD_INT 33
3261: PUSH
3262: LD_INT 164
3264: PUSH
3265: LD_INT 98
3267: PUSH
3268: LD_INT 1
3270: PUSH
3271: LD_INT 49
3273: PUSH
3274: EMPTY
3275: LIST
3276: PUSH
3277: EMPTY
3278: LIST
3279: LIST
3280: LIST
3281: LIST
3282: LIST
3283: PUSH
3284: LD_INT 33
3286: PUSH
3287: LD_INT 188
3289: PUSH
3290: LD_INT 98
3292: PUSH
3293: LD_INT 3
3295: PUSH
3296: LD_INT 45
3298: PUSH
3299: EMPTY
3300: LIST
3301: PUSH
3302: EMPTY
3303: LIST
3304: LIST
3305: LIST
3306: LIST
3307: LIST
3308: PUSH
3309: LD_INT 33
3311: PUSH
3312: LD_INT 200
3314: PUSH
3315: LD_INT 98
3317: PUSH
3318: LD_INT 0
3320: PUSH
3321: LD_INT 43
3323: PUSH
3324: EMPTY
3325: LIST
3326: PUSH
3327: EMPTY
3328: LIST
3329: LIST
3330: LIST
3331: LIST
3332: LIST
3333: PUSH
3334: LD_INT 28
3336: PUSH
3337: LD_INT 166
3339: PUSH
3340: LD_INT 96
3342: PUSH
3343: LD_INT 0
3345: PUSH
3346: EMPTY
3347: PUSH
3348: EMPTY
3349: LIST
3350: LIST
3351: LIST
3352: LIST
3353: LIST
3354: PUSH
3355: LD_INT 33
3357: PUSH
3358: LD_INT 169
3360: PUSH
3361: LD_INT 100
3363: PUSH
3364: LD_INT 1
3366: PUSH
3367: LD_INT 47
3369: PUSH
3370: EMPTY
3371: LIST
3372: PUSH
3373: EMPTY
3374: LIST
3375: LIST
3376: LIST
3377: LIST
3378: LIST
3379: PUSH
3380: LD_INT 33
3382: PUSH
3383: LD_INT 208
3385: PUSH
3386: LD_INT 106
3388: PUSH
3389: LD_INT 0
3391: PUSH
3392: LD_INT 43
3394: PUSH
3395: EMPTY
3396: LIST
3397: PUSH
3398: EMPTY
3399: LIST
3400: LIST
3401: LIST
3402: LIST
3403: LIST
3404: PUSH
3405: LD_INT 33
3407: PUSH
3408: LD_INT 196
3410: PUSH
3411: LD_INT 107
3413: PUSH
3414: LD_INT 0
3416: PUSH
3417: LD_INT 47
3419: PUSH
3420: EMPTY
3421: LIST
3422: PUSH
3423: EMPTY
3424: LIST
3425: LIST
3426: LIST
3427: LIST
3428: LIST
3429: PUSH
3430: LD_INT 28
3432: PUSH
3433: LD_INT 186
3435: PUSH
3436: LD_INT 101
3438: PUSH
3439: LD_INT 4
3441: PUSH
3442: EMPTY
3443: PUSH
3444: EMPTY
3445: LIST
3446: LIST
3447: LIST
3448: LIST
3449: LIST
3450: PUSH
3451: LD_INT 28
3453: PUSH
3454: LD_INT 193
3456: PUSH
3457: LD_INT 101
3459: PUSH
3460: LD_INT 3
3462: PUSH
3463: EMPTY
3464: PUSH
3465: EMPTY
3466: LIST
3467: LIST
3468: LIST
3469: LIST
3470: LIST
3471: PUSH
3472: LD_INT 28
3474: PUSH
3475: LD_INT 182
3477: PUSH
3478: LD_INT 50
3480: PUSH
3481: LD_INT 1
3483: PUSH
3484: EMPTY
3485: PUSH
3486: EMPTY
3487: LIST
3488: LIST
3489: LIST
3490: LIST
3491: LIST
3492: PUSH
3493: LD_INT 28
3495: PUSH
3496: LD_INT 153
3498: PUSH
3499: LD_INT 28
3501: PUSH
3502: LD_INT 4
3504: PUSH
3505: EMPTY
3506: PUSH
3507: EMPTY
3508: LIST
3509: LIST
3510: LIST
3511: LIST
3512: LIST
3513: PUSH
3514: LD_INT 28
3516: PUSH
3517: LD_INT 201
3519: PUSH
3520: LD_INT 89
3522: PUSH
3523: LD_INT 1
3525: PUSH
3526: EMPTY
3527: PUSH
3528: EMPTY
3529: LIST
3530: LIST
3531: LIST
3532: LIST
3533: LIST
3534: PUSH
3535: LD_INT 33
3537: PUSH
3538: LD_INT 150
3540: PUSH
3541: LD_INT 25
3543: PUSH
3544: LD_INT 0
3546: PUSH
3547: LD_INT 45
3549: PUSH
3550: EMPTY
3551: LIST
3552: PUSH
3553: EMPTY
3554: LIST
3555: LIST
3556: LIST
3557: LIST
3558: LIST
3559: PUSH
3560: LD_INT 33
3562: PUSH
3563: LD_INT 151
3565: PUSH
3566: LD_INT 31
3568: PUSH
3569: LD_INT 0
3571: PUSH
3572: LD_INT 46
3574: PUSH
3575: EMPTY
3576: LIST
3577: PUSH
3578: EMPTY
3579: LIST
3580: LIST
3581: LIST
3582: LIST
3583: LIST
3584: PUSH
3585: LD_INT 32
3587: PUSH
3588: LD_INT 153
3590: PUSH
3591: LD_INT 39
3593: PUSH
3594: LD_INT 0
3596: PUSH
3597: LD_INT 46
3599: PUSH
3600: EMPTY
3601: LIST
3602: PUSH
3603: EMPTY
3604: LIST
3605: LIST
3606: LIST
3607: LIST
3608: LIST
3609: PUSH
3610: LD_INT 33
3612: PUSH
3613: LD_INT 157
3615: PUSH
3616: LD_INT 41
3618: PUSH
3619: LD_INT 1
3621: PUSH
3622: LD_INT 49
3624: PUSH
3625: EMPTY
3626: LIST
3627: PUSH
3628: EMPTY
3629: LIST
3630: LIST
3631: LIST
3632: LIST
3633: LIST
3634: PUSH
3635: LD_INT 32
3637: PUSH
3638: LD_INT 158
3640: PUSH
3641: LD_INT 54
3643: PUSH
3644: LD_INT 1
3646: PUSH
3647: LD_INT 49
3649: PUSH
3650: EMPTY
3651: LIST
3652: PUSH
3653: EMPTY
3654: LIST
3655: LIST
3656: LIST
3657: LIST
3658: LIST
3659: PUSH
3660: LD_INT 33
3662: PUSH
3663: LD_INT 155
3665: PUSH
3666: LD_INT 35
3668: PUSH
3669: LD_INT 0
3671: PUSH
3672: LD_INT 47
3674: PUSH
3675: EMPTY
3676: LIST
3677: PUSH
3678: EMPTY
3679: LIST
3680: LIST
3681: LIST
3682: LIST
3683: LIST
3684: PUSH
3685: LD_INT 33
3687: PUSH
3688: LD_INT 190
3690: PUSH
3691: LD_INT 106
3693: PUSH
3694: LD_INT 0
3696: PUSH
3697: LD_INT 49
3699: PUSH
3700: EMPTY
3701: LIST
3702: PUSH
3703: EMPTY
3704: LIST
3705: LIST
3706: LIST
3707: LIST
3708: LIST
3709: PUSH
3710: LD_INT 33
3712: PUSH
3713: LD_INT 201
3715: PUSH
3716: LD_INT 106
3718: PUSH
3719: LD_INT 0
3721: PUSH
3722: LD_INT 49
3724: PUSH
3725: EMPTY
3726: LIST
3727: PUSH
3728: EMPTY
3729: LIST
3730: LIST
3731: LIST
3732: LIST
3733: LIST
3734: PUSH
3735: LD_INT 33
3737: PUSH
3738: LD_INT 154
3740: PUSH
3741: LD_INT 63
3743: PUSH
3744: LD_INT 1
3746: PUSH
3747: LD_INT 49
3749: PUSH
3750: EMPTY
3751: LIST
3752: PUSH
3753: EMPTY
3754: LIST
3755: LIST
3756: LIST
3757: LIST
3758: LIST
3759: PUSH
3760: LD_INT 33
3762: PUSH
3763: LD_INT 158
3765: PUSH
3766: LD_INT 67
3768: PUSH
3769: LD_INT 1
3771: PUSH
3772: LD_INT 43
3774: PUSH
3775: EMPTY
3776: LIST
3777: PUSH
3778: EMPTY
3779: LIST
3780: LIST
3781: LIST
3782: LIST
3783: LIST
3784: PUSH
3785: LD_INT 32
3787: PUSH
3788: LD_INT 155
3790: PUSH
3791: LD_INT 57
3793: PUSH
3794: LD_INT 1
3796: PUSH
3797: LD_INT 46
3799: PUSH
3800: EMPTY
3801: LIST
3802: PUSH
3803: EMPTY
3804: LIST
3805: LIST
3806: LIST
3807: LIST
3808: LIST
3809: PUSH
3810: LD_INT 32
3812: PUSH
3813: LD_INT 158
3815: PUSH
3816: LD_INT 62
3818: PUSH
3819: LD_INT 1
3821: PUSH
3822: LD_INT 47
3824: PUSH
3825: EMPTY
3826: LIST
3827: PUSH
3828: EMPTY
3829: LIST
3830: LIST
3831: LIST
3832: LIST
3833: LIST
3834: PUSH
3835: LD_INT 33
3837: PUSH
3838: LD_INT 164
3840: PUSH
3841: LD_INT 89
3843: PUSH
3844: LD_INT 4
3846: PUSH
3847: LD_INT 49
3849: PUSH
3850: EMPTY
3851: LIST
3852: PUSH
3853: EMPTY
3854: LIST
3855: LIST
3856: LIST
3857: LIST
3858: LIST
3859: PUSH
3860: EMPTY
3861: LIST
3862: LIST
3863: LIST
3864: LIST
3865: LIST
3866: LIST
3867: LIST
3868: LIST
3869: LIST
3870: LIST
3871: LIST
3872: LIST
3873: LIST
3874: LIST
3875: LIST
3876: LIST
3877: LIST
3878: LIST
3879: LIST
3880: LIST
3881: LIST
3882: LIST
3883: LIST
3884: LIST
3885: LIST
3886: LIST
3887: LIST
3888: LIST
3889: LIST
3890: LIST
3891: LIST
3892: LIST
3893: LIST
3894: LIST
3895: LIST
3896: LIST
3897: LIST
3898: LIST
3899: LIST
3900: LIST
3901: LIST
3902: LIST
3903: LIST
3904: LIST
3905: LIST
3906: LIST
3907: LIST
3908: LIST
3909: LIST
3910: LIST
3911: LIST
3912: LIST
3913: LIST
3914: LIST
3915: LIST
3916: ST_TO_ADDR
// SetTech ( tech_SibFiss , americans , state_disabled ) ;
3917: LD_INT 25
3919: PPUSH
3920: LD_EXP 176
3924: PPUSH
3925: LD_INT 0
3927: PPUSH
3928: CALL_OW 322
// end ;
3932: LD_VAR 0 1
3936: RET
// function Prepare_difficulty ; var i ; begin
3937: LD_INT 0
3939: PPUSH
3940: PPUSH
// human_difficulty_skill = [ 6 , 7 , 8 ] [ Difficulty ] ;
3941: LD_ADDR_EXP 184
3945: PUSH
3946: LD_INT 6
3948: PUSH
3949: LD_INT 7
3951: PUSH
3952: LD_INT 8
3954: PUSH
3955: EMPTY
3956: LIST
3957: LIST
3958: LIST
3959: PUSH
3960: LD_OWVAR 67
3964: ARRAY
3965: ST_TO_ADDR
// apeman_difficulty_skill = [ 3 , 4 , 5 ] [ Difficulty ] ;
3966: LD_ADDR_EXP 185
3970: PUSH
3971: LD_INT 3
3973: PUSH
3974: LD_INT 4
3976: PUSH
3977: LD_INT 5
3979: PUSH
3980: EMPTY
3981: LIST
3982: LIST
3983: LIST
3984: PUSH
3985: LD_OWVAR 67
3989: ARRAY
3990: ST_TO_ADDR
// Number_of_crates = [ 7 , 5 , 4 ] [ Difficulty ] ;
3991: LD_ADDR_EXP 197
3995: PUSH
3996: LD_INT 7
3998: PUSH
3999: LD_INT 5
4001: PUSH
4002: LD_INT 4
4004: PUSH
4005: EMPTY
4006: LIST
4007: LIST
4008: LIST
4009: PUSH
4010: LD_OWVAR 67
4014: ARRAY
4015: ST_TO_ADDR
// Number_of_JMM_Helpers = 5 ;
4016: LD_ADDR_EXP 69
4020: PUSH
4021: LD_INT 5
4023: ST_TO_ADDR
// Number_Of_Omar_Soldiers = [ 2 , 4 , 5 ] [ Difficulty ] ;
4024: LD_ADDR_EXP 75
4028: PUSH
4029: LD_INT 2
4031: PUSH
4032: LD_INT 4
4034: PUSH
4035: LD_INT 5
4037: PUSH
4038: EMPTY
4039: LIST
4040: LIST
4041: LIST
4042: PUSH
4043: LD_OWVAR 67
4047: ARRAY
4048: ST_TO_ADDR
// Number_of_Omar_Hovercrafts = [ 1 , 1 , 2 ] [ Difficulty ] ;
4049: LD_ADDR_EXP 76
4053: PUSH
4054: LD_INT 1
4056: PUSH
4057: LD_INT 1
4059: PUSH
4060: LD_INT 2
4062: PUSH
4063: EMPTY
4064: LIST
4065: LIST
4066: LIST
4067: PUSH
4068: LD_OWVAR 67
4072: ARRAY
4073: ST_TO_ADDR
// Number_of_Omar_Flamethrowers = [ 0 , 1 , 1 ] [ Difficulty ] ;
4074: LD_ADDR_EXP 77
4078: PUSH
4079: LD_INT 0
4081: PUSH
4082: LD_INT 1
4084: PUSH
4085: LD_INT 1
4087: PUSH
4088: EMPTY
4089: LIST
4090: LIST
4091: LIST
4092: PUSH
4093: LD_OWVAR 67
4097: ARRAY
4098: ST_TO_ADDR
// Number_of_Omar_RocketLaunchers = [ 0 , 0 , 1 ] [ Difficulty ] ;
4099: LD_ADDR_EXP 78
4103: PUSH
4104: LD_INT 0
4106: PUSH
4107: LD_INT 0
4109: PUSH
4110: LD_INT 1
4112: PUSH
4113: EMPTY
4114: LIST
4115: LIST
4116: LIST
4117: PUSH
4118: LD_OWVAR 67
4122: ARRAY
4123: ST_TO_ADDR
// Number_of_russian_soldiers = [ 3 , 5 , 6 ] [ Difficulty ] ;
4124: LD_ADDR_EXP 133
4128: PUSH
4129: LD_INT 3
4131: PUSH
4132: LD_INT 5
4134: PUSH
4135: LD_INT 6
4137: PUSH
4138: EMPTY
4139: LIST
4140: LIST
4141: LIST
4142: PUSH
4143: LD_OWVAR 67
4147: ARRAY
4148: ST_TO_ADDR
// Number_of_russian_scientists = [ 6 , 6 , 6 ] [ Difficulty ] ;
4149: LD_ADDR_EXP 134
4153: PUSH
4154: LD_INT 6
4156: PUSH
4157: LD_INT 6
4159: PUSH
4160: LD_INT 6
4162: PUSH
4163: EMPTY
4164: LIST
4165: LIST
4166: LIST
4167: PUSH
4168: LD_OWVAR 67
4172: ARRAY
4173: ST_TO_ADDR
// Number_of_russian_mechanics = [ 6 , 6 , 6 ] [ Difficulty ] ;
4174: LD_ADDR_EXP 135
4178: PUSH
4179: LD_INT 6
4181: PUSH
4182: LD_INT 6
4184: PUSH
4185: LD_INT 6
4187: PUSH
4188: EMPTY
4189: LIST
4190: LIST
4191: LIST
4192: PUSH
4193: LD_OWVAR 67
4197: ARRAY
4198: ST_TO_ADDR
// Number_of_russian_engineers = [ 2 , 3 , 4 ] [ Difficulty ] ;
4199: LD_ADDR_EXP 136
4203: PUSH
4204: LD_INT 2
4206: PUSH
4207: LD_INT 3
4209: PUSH
4210: LD_INT 4
4212: PUSH
4213: EMPTY
4214: LIST
4215: LIST
4216: LIST
4217: PUSH
4218: LD_OWVAR 67
4222: ARRAY
4223: ST_TO_ADDR
// Number_of_Behemots = [ 2 , 3 , 4 ] [ Difficulty ] ;
4224: LD_ADDR_EXP 221
4228: PUSH
4229: LD_INT 2
4231: PUSH
4232: LD_INT 3
4234: PUSH
4235: LD_INT 4
4237: PUSH
4238: EMPTY
4239: LIST
4240: LIST
4241: LIST
4242: PUSH
4243: LD_OWVAR 67
4247: ARRAY
4248: ST_TO_ADDR
// Number_of_Arabian_Engineers = [ 1 , 1 , 2 ] [ Difficulty ] ;
4249: LD_ADDR_EXP 92
4253: PUSH
4254: LD_INT 1
4256: PUSH
4257: LD_INT 1
4259: PUSH
4260: LD_INT 2
4262: PUSH
4263: EMPTY
4264: LIST
4265: LIST
4266: LIST
4267: PUSH
4268: LD_OWVAR 67
4272: ARRAY
4273: ST_TO_ADDR
// Number_of_Arabian_Soldiers = [ 3 , 4 , 5 ] [ Difficulty ] ;
4274: LD_ADDR_EXP 89
4278: PUSH
4279: LD_INT 3
4281: PUSH
4282: LD_INT 4
4284: PUSH
4285: LD_INT 5
4287: PUSH
4288: EMPTY
4289: LIST
4290: LIST
4291: LIST
4292: PUSH
4293: LD_OWVAR 67
4297: ARRAY
4298: ST_TO_ADDR
// Number_of_Arabian_scientists = [ 1 , 2 , 2 ] [ Difficulty ] ;
4299: LD_ADDR_EXP 90
4303: PUSH
4304: LD_INT 1
4306: PUSH
4307: LD_INT 2
4309: PUSH
4310: LD_INT 2
4312: PUSH
4313: EMPTY
4314: LIST
4315: LIST
4316: LIST
4317: PUSH
4318: LD_OWVAR 67
4322: ARRAY
4323: ST_TO_ADDR
// Number_of_Arabian_mechanics = [ 1 , 2 , 3 ] [ Difficulty ] ;
4324: LD_ADDR_EXP 91
4328: PUSH
4329: LD_INT 1
4331: PUSH
4332: LD_INT 2
4334: PUSH
4335: LD_INT 3
4337: PUSH
4338: EMPTY
4339: LIST
4340: LIST
4341: LIST
4342: PUSH
4343: LD_OWVAR 67
4347: ARRAY
4348: ST_TO_ADDR
// Number_of_AllAm_Soldiers = [ 4 , 4 , 4 ] [ Difficulty ] ;
4349: LD_ADDR_EXP 103
4353: PUSH
4354: LD_INT 4
4356: PUSH
4357: LD_INT 4
4359: PUSH
4360: LD_INT 4
4362: PUSH
4363: EMPTY
4364: LIST
4365: LIST
4366: LIST
4367: PUSH
4368: LD_OWVAR 67
4372: ARRAY
4373: ST_TO_ADDR
// Number_of_AllAm_Scientists = [ 4 , 4 , 4 ] [ Difficulty ] ;
4374: LD_ADDR_EXP 104
4378: PUSH
4379: LD_INT 4
4381: PUSH
4382: LD_INT 4
4384: PUSH
4385: LD_INT 4
4387: PUSH
4388: EMPTY
4389: LIST
4390: LIST
4391: LIST
4392: PUSH
4393: LD_OWVAR 67
4397: ARRAY
4398: ST_TO_ADDR
// Number_of_AllRu_Soldiers = [ 1 , 2 , 3 ] [ Difficulty ] ;
4399: LD_ADDR_EXP 105
4403: PUSH
4404: LD_INT 1
4406: PUSH
4407: LD_INT 2
4409: PUSH
4410: LD_INT 3
4412: PUSH
4413: EMPTY
4414: LIST
4415: LIST
4416: LIST
4417: PUSH
4418: LD_OWVAR 67
4422: ARRAY
4423: ST_TO_ADDR
// Number_of_AllRu_Scientists = [ 4 , 4 , 4 ] [ Difficulty ] ;
4424: LD_ADDR_EXP 106
4428: PUSH
4429: LD_INT 4
4431: PUSH
4432: LD_INT 4
4434: PUSH
4435: LD_INT 4
4437: PUSH
4438: EMPTY
4439: LIST
4440: LIST
4441: LIST
4442: PUSH
4443: LD_OWVAR 67
4447: ARRAY
4448: ST_TO_ADDR
// Woman_Coming_Time = [ 18 18$0 , 18 18$0 , 18 18$0 ] [ Difficulty ] ;
4449: LD_ADDR_EXP 201
4453: PUSH
4454: LD_INT 37800
4456: PUSH
4457: LD_INT 37800
4459: PUSH
4460: LD_INT 37800
4462: PUSH
4463: EMPTY
4464: LIST
4465: LIST
4466: LIST
4467: PUSH
4468: LD_OWVAR 67
4472: ARRAY
4473: ST_TO_ADDR
// Rus_Attack_Time = [ 35 35$0 , 30 30$0 , 28 28$0 ] [ Difficulty ] ;
4474: LD_ADDR_EXP 130
4478: PUSH
4479: LD_INT 73500
4481: PUSH
4482: LD_INT 63000
4484: PUSH
4485: LD_INT 58800
4487: PUSH
4488: EMPTY
4489: LIST
4490: LIST
4491: LIST
4492: PUSH
4493: LD_OWVAR 67
4497: ARRAY
4498: ST_TO_ADDR
// Stevens_Coming_Time = [ 35 35$0 , 35 35$0 , 32 32$0 ] [ Difficulty ] ;
4499: LD_ADDR_EXP 200
4503: PUSH
4504: LD_INT 73500
4506: PUSH
4507: LD_INT 73500
4509: PUSH
4510: LD_INT 67200
4512: PUSH
4513: EMPTY
4514: LIST
4515: LIST
4516: LIST
4517: PUSH
4518: LD_OWVAR 67
4522: ARRAY
4523: ST_TO_ADDR
// Alliance_broadcast = [ 45 45$0 , 40 40$0 , 35 35$0 ] [ Difficulty ] ;
4524: LD_ADDR_EXP 202
4528: PUSH
4529: LD_INT 94500
4531: PUSH
4532: LD_INT 84000
4534: PUSH
4535: LD_INT 73500
4537: PUSH
4538: EMPTY
4539: LIST
4540: LIST
4541: LIST
4542: PUSH
4543: LD_OWVAR 67
4547: ARRAY
4548: ST_TO_ADDR
// Arabian_siberite_attack_time = [ 50 50$0 , 45 45$0 , 40 40$0 ] [ Difficulty ] ;
4549: LD_ADDR_EXP 213
4553: PUSH
4554: LD_INT 105000
4556: PUSH
4557: LD_INT 94500
4559: PUSH
4560: LD_INT 84000
4562: PUSH
4563: EMPTY
4564: LIST
4565: LIST
4566: LIST
4567: PUSH
4568: LD_OWVAR 67
4572: ARRAY
4573: ST_TO_ADDR
// Behemots_broadcast = [ 55 55$0 , 50 50$0 , 45 45$0 ] [ Difficulty ] ;
4574: LD_ADDR_EXP 203
4578: PUSH
4579: LD_INT 115500
4581: PUSH
4582: LD_INT 105000
4584: PUSH
4585: LD_INT 94500
4587: PUSH
4588: EMPTY
4589: LIST
4590: LIST
4591: LIST
4592: PUSH
4593: LD_OWVAR 67
4597: ARRAY
4598: ST_TO_ADDR
// Alaskite_Bomb_Time = [ 60 60$0 , 55 55$0 , 50 50$0 ] [ Difficulty ] ;
4599: LD_ADDR_EXP 212
4603: PUSH
4604: LD_INT 126000
4606: PUSH
4607: LD_INT 115500
4609: PUSH
4610: LD_INT 105000
4612: PUSH
4613: EMPTY
4614: LIST
4615: LIST
4616: LIST
4617: PUSH
4618: LD_OWVAR 67
4622: ARRAY
4623: ST_TO_ADDR
// Time_of_first_capture = [ 65 65$0 , 60 60$0 , 55 55$0 ] [ Difficulty ] ;
4624: LD_ADDR_EXP 204
4628: PUSH
4629: LD_INT 136500
4631: PUSH
4632: LD_INT 126000
4634: PUSH
4635: LD_INT 115500
4637: PUSH
4638: EMPTY
4639: LIST
4640: LIST
4641: LIST
4642: PUSH
4643: LD_OWVAR 67
4647: ARRAY
4648: ST_TO_ADDR
// Behemot_attack_time = [ 70 70$0 , 65 65$0 , 60 60$0 ] [ Difficulty ] ;
4649: LD_ADDR_EXP 225
4653: PUSH
4654: LD_INT 147000
4656: PUSH
4657: LD_INT 136500
4659: PUSH
4660: LD_INT 126000
4662: PUSH
4663: EMPTY
4664: LIST
4665: LIST
4666: LIST
4667: PUSH
4668: LD_OWVAR 67
4672: ARRAY
4673: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 222 , 179 ) ) ;
4674: LD_INT 222
4676: PPUSH
4677: LD_INT 179
4679: PPUSH
4680: CALL_OW 438
4684: PPUSH
4685: CALL_OW 65
// DestroyUnit ( GetUnitNumber ( 226 , 183 ) ) ;
4689: LD_INT 226
4691: PPUSH
4692: LD_INT 183
4694: PPUSH
4695: CALL_OW 438
4699: PPUSH
4700: CALL_OW 65
// case Difficulty of 1 :
4704: LD_OWVAR 67
4708: PUSH
4709: LD_INT 1
4711: DOUBLE
4712: EQUAL
4713: IFTRUE 4717
4715: GO 5595
4717: POP
// begin DestroyUnit ( GetUnitNumber ( 229 , 176 ) ) ;
4718: LD_INT 229
4720: PPUSH
4721: LD_INT 176
4723: PPUSH
4724: CALL_OW 438
4728: PPUSH
4729: CALL_OW 65
// DestroyUnit ( GetUnitNumber ( 53 , 25 ) ) ;
4733: LD_INT 53
4735: PPUSH
4736: LD_INT 25
4738: PPUSH
4739: CALL_OW 438
4743: PPUSH
4744: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 53 , 25 , 0 , [ ar_gun ] ] ] ;
4748: LD_ADDR_EXP 88
4752: PUSH
4753: LD_EXP 88
4757: PUSH
4758: LD_INT 32
4760: PUSH
4761: LD_INT 53
4763: PUSH
4764: LD_INT 25
4766: PUSH
4767: LD_INT 0
4769: PUSH
4770: LD_INT 27
4772: PUSH
4773: EMPTY
4774: LIST
4775: PUSH
4776: EMPTY
4777: LIST
4778: LIST
4779: LIST
4780: LIST
4781: LIST
4782: PUSH
4783: EMPTY
4784: LIST
4785: DIFF
4786: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 70 , 10 ) ) ;
4787: LD_INT 70
4789: PPUSH
4790: LD_INT 10
4792: PPUSH
4793: CALL_OW 438
4797: PPUSH
4798: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 70 , 10 , 0 , [ ar_gun ] ] ] ;
4802: LD_ADDR_EXP 88
4806: PUSH
4807: LD_EXP 88
4811: PUSH
4812: LD_INT 32
4814: PUSH
4815: LD_INT 70
4817: PUSH
4818: LD_INT 10
4820: PUSH
4821: LD_INT 0
4823: PUSH
4824: LD_INT 27
4826: PUSH
4827: EMPTY
4828: LIST
4829: PUSH
4830: EMPTY
4831: LIST
4832: LIST
4833: LIST
4834: LIST
4835: LIST
4836: PUSH
4837: EMPTY
4838: LIST
4839: DIFF
4840: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 79 , 4 ) ) ;
4841: LD_INT 79
4843: PPUSH
4844: LD_INT 4
4846: PPUSH
4847: CALL_OW 438
4851: PPUSH
4852: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 79 , 4 , 5 , [ ar_rocket_launcher ] ] ] ;
4856: LD_ADDR_EXP 88
4860: PUSH
4861: LD_EXP 88
4865: PUSH
4866: LD_INT 32
4868: PUSH
4869: LD_INT 79
4871: PUSH
4872: LD_INT 4
4874: PUSH
4875: LD_INT 5
4877: PUSH
4878: LD_INT 28
4880: PUSH
4881: EMPTY
4882: LIST
4883: PUSH
4884: EMPTY
4885: LIST
4886: LIST
4887: LIST
4888: LIST
4889: LIST
4890: PUSH
4891: EMPTY
4892: LIST
4893: DIFF
4894: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 49 , 9 ) ) ;
4895: LD_INT 49
4897: PPUSH
4898: LD_INT 9
4900: PPUSH
4901: CALL_OW 438
4905: PPUSH
4906: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_barracks , 49 , 9 , 1 , [ ] ] ] ;
4910: LD_ADDR_EXP 88
4914: PUSH
4915: LD_EXP 88
4919: PUSH
4920: LD_INT 5
4922: PUSH
4923: LD_INT 49
4925: PUSH
4926: LD_INT 9
4928: PUSH
4929: LD_INT 1
4931: PUSH
4932: EMPTY
4933: PUSH
4934: EMPTY
4935: LIST
4936: LIST
4937: LIST
4938: LIST
4939: LIST
4940: PUSH
4941: EMPTY
4942: LIST
4943: DIFF
4944: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 150 , 25 ) ) ;
4945: LD_INT 150
4947: PPUSH
4948: LD_INT 25
4950: PPUSH
4951: CALL_OW 438
4955: PPUSH
4956: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 150 , 25 , 0 , [ ru_rocket_launcher ] ] ] ;
4960: LD_ADDR_EXP 113
4964: PUSH
4965: LD_EXP 113
4969: PUSH
4970: LD_INT 33
4972: PUSH
4973: LD_INT 150
4975: PUSH
4976: LD_INT 25
4978: PUSH
4979: LD_INT 0
4981: PUSH
4982: LD_INT 45
4984: PUSH
4985: EMPTY
4986: LIST
4987: PUSH
4988: EMPTY
4989: LIST
4990: LIST
4991: LIST
4992: LIST
4993: LIST
4994: PUSH
4995: EMPTY
4996: LIST
4997: DIFF
4998: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 155 , 35 ) ) ;
4999: LD_INT 155
5001: PPUSH
5002: LD_INT 35
5004: PPUSH
5005: CALL_OW 438
5009: PPUSH
5010: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 155 , 35 , 0 , [ ru_rocket ] ] ] ;
5014: LD_ADDR_EXP 113
5018: PUSH
5019: LD_EXP 113
5023: PUSH
5024: LD_INT 33
5026: PUSH
5027: LD_INT 155
5029: PUSH
5030: LD_INT 35
5032: PUSH
5033: LD_INT 0
5035: PUSH
5036: LD_INT 47
5038: PUSH
5039: EMPTY
5040: LIST
5041: PUSH
5042: EMPTY
5043: LIST
5044: LIST
5045: LIST
5046: LIST
5047: LIST
5048: PUSH
5049: EMPTY
5050: LIST
5051: DIFF
5052: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 153 , 39 ) ) ;
5053: LD_INT 153
5055: PPUSH
5056: LD_INT 39
5058: PPUSH
5059: CALL_OW 438
5063: PPUSH
5064: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_bunker , 153 , 39 , 0 , [ ru_heavy_gun ] ] ] ;
5068: LD_ADDR_EXP 113
5072: PUSH
5073: LD_EXP 113
5077: PUSH
5078: LD_INT 32
5080: PUSH
5081: LD_INT 153
5083: PUSH
5084: LD_INT 39
5086: PUSH
5087: LD_INT 0
5089: PUSH
5090: LD_INT 46
5092: PUSH
5093: EMPTY
5094: LIST
5095: PUSH
5096: EMPTY
5097: LIST
5098: LIST
5099: LIST
5100: LIST
5101: LIST
5102: PUSH
5103: EMPTY
5104: LIST
5105: DIFF
5106: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 188 , 70 ) ) ;
5107: LD_INT 188
5109: PPUSH
5110: LD_INT 70
5112: PPUSH
5113: CALL_OW 438
5117: PPUSH
5118: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 188 , 70 , 1 , [ ru_rocket ] ] ] ;
5122: LD_ADDR_EXP 113
5126: PUSH
5127: LD_EXP 113
5131: PUSH
5132: LD_INT 33
5134: PUSH
5135: LD_INT 188
5137: PUSH
5138: LD_INT 70
5140: PUSH
5141: LD_INT 1
5143: PUSH
5144: LD_INT 47
5146: PUSH
5147: EMPTY
5148: LIST
5149: PUSH
5150: EMPTY
5151: LIST
5152: LIST
5153: LIST
5154: LIST
5155: LIST
5156: PUSH
5157: EMPTY
5158: LIST
5159: DIFF
5160: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 188 , 98 ) ) ;
5161: LD_INT 188
5163: PPUSH
5164: LD_INT 98
5166: PPUSH
5167: CALL_OW 438
5171: PPUSH
5172: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 188 , 98 , 3 , [ ru_rocket_launcher ] ] ] ;
5176: LD_ADDR_EXP 113
5180: PUSH
5181: LD_EXP 113
5185: PUSH
5186: LD_INT 33
5188: PUSH
5189: LD_INT 188
5191: PUSH
5192: LD_INT 98
5194: PUSH
5195: LD_INT 3
5197: PUSH
5198: LD_INT 45
5200: PUSH
5201: EMPTY
5202: LIST
5203: PUSH
5204: EMPTY
5205: LIST
5206: LIST
5207: LIST
5208: LIST
5209: LIST
5210: PUSH
5211: EMPTY
5212: LIST
5213: DIFF
5214: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 200 , 98 ) ) ;
5215: LD_INT 200
5217: PPUSH
5218: LD_INT 98
5220: PPUSH
5221: CALL_OW 438
5225: PPUSH
5226: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 200 , 98 , 0 , [ ru_gatling_gun ] ] ] ;
5230: LD_ADDR_EXP 113
5234: PUSH
5235: LD_EXP 113
5239: PUSH
5240: LD_INT 33
5242: PUSH
5243: LD_INT 200
5245: PUSH
5246: LD_INT 98
5248: PUSH
5249: LD_INT 0
5251: PUSH
5252: LD_INT 43
5254: PUSH
5255: EMPTY
5256: LIST
5257: PUSH
5258: EMPTY
5259: LIST
5260: LIST
5261: LIST
5262: LIST
5263: LIST
5264: PUSH
5265: EMPTY
5266: LIST
5267: DIFF
5268: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 169 , 100 ) ) ;
5269: LD_INT 169
5271: PPUSH
5272: LD_INT 100
5274: PPUSH
5275: CALL_OW 438
5279: PPUSH
5280: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 169 , 100 , 1 , [ ru_rocket ] ] ] ;
5284: LD_ADDR_EXP 113
5288: PUSH
5289: LD_EXP 113
5293: PUSH
5294: LD_INT 33
5296: PUSH
5297: LD_INT 169
5299: PUSH
5300: LD_INT 100
5302: PUSH
5303: LD_INT 1
5305: PUSH
5306: LD_INT 47
5308: PUSH
5309: EMPTY
5310: LIST
5311: PUSH
5312: EMPTY
5313: LIST
5314: LIST
5315: LIST
5316: LIST
5317: LIST
5318: PUSH
5319: EMPTY
5320: LIST
5321: DIFF
5322: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 164 , 86 ) ) ;
5323: LD_INT 164
5325: PPUSH
5326: LD_INT 86
5328: PPUSH
5329: CALL_OW 438
5333: PPUSH
5334: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_bunker , 164 , 86 , 1 , [ ru_rocket ] ] ] ;
5338: LD_ADDR_EXP 113
5342: PUSH
5343: LD_EXP 113
5347: PUSH
5348: LD_INT 32
5350: PUSH
5351: LD_INT 164
5353: PUSH
5354: LD_INT 86
5356: PUSH
5357: LD_INT 1
5359: PUSH
5360: LD_INT 47
5362: PUSH
5363: EMPTY
5364: LIST
5365: PUSH
5366: EMPTY
5367: LIST
5368: LIST
5369: LIST
5370: LIST
5371: LIST
5372: PUSH
5373: EMPTY
5374: LIST
5375: DIFF
5376: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 160 , 86 ) ) ;
5377: LD_INT 160
5379: PPUSH
5380: LD_INT 86
5382: PPUSH
5383: CALL_OW 438
5387: PPUSH
5388: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 160 , 86 , 0 , [ ru_heavy_gun ] ] ] ;
5392: LD_ADDR_EXP 113
5396: PUSH
5397: LD_EXP 113
5401: PUSH
5402: LD_INT 33
5404: PUSH
5405: LD_INT 160
5407: PUSH
5408: LD_INT 86
5410: PUSH
5411: LD_INT 0
5413: PUSH
5414: LD_INT 46
5416: PUSH
5417: EMPTY
5418: LIST
5419: PUSH
5420: EMPTY
5421: LIST
5422: LIST
5423: LIST
5424: LIST
5425: LIST
5426: PUSH
5427: EMPTY
5428: LIST
5429: DIFF
5430: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 158 , 76 ) ) ;
5431: LD_INT 158
5433: PPUSH
5434: LD_INT 76
5436: PPUSH
5437: CALL_OW 438
5441: PPUSH
5442: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 158 , 76 , 0 , [ ru_rocket_launcher ] ] ] ;
5446: LD_ADDR_EXP 113
5450: PUSH
5451: LD_EXP 113
5455: PUSH
5456: LD_INT 33
5458: PUSH
5459: LD_INT 158
5461: PUSH
5462: LD_INT 76
5464: PUSH
5465: LD_INT 0
5467: PUSH
5468: LD_INT 45
5470: PUSH
5471: EMPTY
5472: LIST
5473: PUSH
5474: EMPTY
5475: LIST
5476: LIST
5477: LIST
5478: LIST
5479: LIST
5480: PUSH
5481: EMPTY
5482: LIST
5483: DIFF
5484: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 158 , 62 ) ) ;
5485: LD_INT 158
5487: PPUSH
5488: LD_INT 62
5490: PPUSH
5491: CALL_OW 438
5495: PPUSH
5496: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_bunker , 158 , 62 , 1 , [ ru_rocket ] ] ] ;
5500: LD_ADDR_EXP 113
5504: PUSH
5505: LD_EXP 113
5509: PUSH
5510: LD_INT 32
5512: PUSH
5513: LD_INT 158
5515: PUSH
5516: LD_INT 62
5518: PUSH
5519: LD_INT 1
5521: PUSH
5522: LD_INT 47
5524: PUSH
5525: EMPTY
5526: LIST
5527: PUSH
5528: EMPTY
5529: LIST
5530: LIST
5531: LIST
5532: LIST
5533: LIST
5534: PUSH
5535: EMPTY
5536: LIST
5537: DIFF
5538: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 155 , 57 ) ) ;
5539: LD_INT 155
5541: PPUSH
5542: LD_INT 57
5544: PPUSH
5545: CALL_OW 438
5549: PPUSH
5550: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_bunker , 155 , 57 , 1 , [ ru_heavy_gun ] ] ] ;
5554: LD_ADDR_EXP 113
5558: PUSH
5559: LD_EXP 113
5563: PUSH
5564: LD_INT 32
5566: PUSH
5567: LD_INT 155
5569: PUSH
5570: LD_INT 57
5572: PUSH
5573: LD_INT 1
5575: PUSH
5576: LD_INT 46
5578: PUSH
5579: EMPTY
5580: LIST
5581: PUSH
5582: EMPTY
5583: LIST
5584: LIST
5585: LIST
5586: LIST
5587: LIST
5588: PUSH
5589: EMPTY
5590: LIST
5591: DIFF
5592: ST_TO_ADDR
// end ; 2 :
5593: GO 6065
5595: LD_INT 2
5597: DOUBLE
5598: EQUAL
5599: IFTRUE 5603
5601: GO 6053
5603: POP
// begin DestroyUnit ( GetUnitNumber ( 224 , 176 ) ) ;
5604: LD_INT 224
5606: PPUSH
5607: LD_INT 176
5609: PPUSH
5610: CALL_OW 438
5614: PPUSH
5615: CALL_OW 65
// DestroyUnit ( GetUnitNumber ( 53 , 25 ) ) ;
5619: LD_INT 53
5621: PPUSH
5622: LD_INT 25
5624: PPUSH
5625: CALL_OW 438
5629: PPUSH
5630: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 53 , 25 , 0 , [ ar_gun ] ] ] ;
5634: LD_ADDR_EXP 88
5638: PUSH
5639: LD_EXP 88
5643: PUSH
5644: LD_INT 32
5646: PUSH
5647: LD_INT 53
5649: PUSH
5650: LD_INT 25
5652: PUSH
5653: LD_INT 0
5655: PUSH
5656: LD_INT 27
5658: PUSH
5659: EMPTY
5660: LIST
5661: PUSH
5662: EMPTY
5663: LIST
5664: LIST
5665: LIST
5666: LIST
5667: LIST
5668: PUSH
5669: EMPTY
5670: LIST
5671: DIFF
5672: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 70 , 10 ) ) ;
5673: LD_INT 70
5675: PPUSH
5676: LD_INT 10
5678: PPUSH
5679: CALL_OW 438
5683: PPUSH
5684: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 70 , 10 , 0 , [ ar_gun ] ] ] ;
5688: LD_ADDR_EXP 88
5692: PUSH
5693: LD_EXP 88
5697: PUSH
5698: LD_INT 32
5700: PUSH
5701: LD_INT 70
5703: PUSH
5704: LD_INT 10
5706: PUSH
5707: LD_INT 0
5709: PUSH
5710: LD_INT 27
5712: PUSH
5713: EMPTY
5714: LIST
5715: PUSH
5716: EMPTY
5717: LIST
5718: LIST
5719: LIST
5720: LIST
5721: LIST
5722: PUSH
5723: EMPTY
5724: LIST
5725: DIFF
5726: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 79 , 4 ) ) ;
5727: LD_INT 79
5729: PPUSH
5730: LD_INT 4
5732: PPUSH
5733: CALL_OW 438
5737: PPUSH
5738: CALL_OW 65
// Arabian_buildings = Arabian_buildings diff [ [ b_bunker , 79 , 4 , 5 , [ ar_rocket_launcher ] ] ] ;
5742: LD_ADDR_EXP 88
5746: PUSH
5747: LD_EXP 88
5751: PUSH
5752: LD_INT 32
5754: PUSH
5755: LD_INT 79
5757: PUSH
5758: LD_INT 4
5760: PUSH
5761: LD_INT 5
5763: PUSH
5764: LD_INT 28
5766: PUSH
5767: EMPTY
5768: LIST
5769: PUSH
5770: EMPTY
5771: LIST
5772: LIST
5773: LIST
5774: LIST
5775: LIST
5776: PUSH
5777: EMPTY
5778: LIST
5779: DIFF
5780: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 155 , 35 ) ) ;
5781: LD_INT 155
5783: PPUSH
5784: LD_INT 35
5786: PPUSH
5787: CALL_OW 438
5791: PPUSH
5792: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 155 , 35 , 0 , [ ru_rocket ] ] ] ;
5796: LD_ADDR_EXP 113
5800: PUSH
5801: LD_EXP 113
5805: PUSH
5806: LD_INT 33
5808: PUSH
5809: LD_INT 155
5811: PUSH
5812: LD_INT 35
5814: PUSH
5815: LD_INT 0
5817: PUSH
5818: LD_INT 47
5820: PUSH
5821: EMPTY
5822: LIST
5823: PUSH
5824: EMPTY
5825: LIST
5826: LIST
5827: LIST
5828: LIST
5829: LIST
5830: PUSH
5831: EMPTY
5832: LIST
5833: DIFF
5834: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 151 , 31 ) ) ;
5835: LD_INT 151
5837: PPUSH
5838: LD_INT 31
5840: PPUSH
5841: CALL_OW 438
5845: PPUSH
5846: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 151 , 31 , 0 , [ ru_heavy_gun ] ] ] ;
5850: LD_ADDR_EXP 113
5854: PUSH
5855: LD_EXP 113
5859: PUSH
5860: LD_INT 33
5862: PUSH
5863: LD_INT 151
5865: PUSH
5866: LD_INT 31
5868: PUSH
5869: LD_INT 0
5871: PUSH
5872: LD_INT 46
5874: PUSH
5875: EMPTY
5876: LIST
5877: PUSH
5878: EMPTY
5879: LIST
5880: LIST
5881: LIST
5882: LIST
5883: LIST
5884: PUSH
5885: EMPTY
5886: LIST
5887: DIFF
5888: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 169 , 100 ) ) ;
5889: LD_INT 169
5891: PPUSH
5892: LD_INT 100
5894: PPUSH
5895: CALL_OW 438
5899: PPUSH
5900: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 169 , 100 , 1 , [ ru_rocket ] ] ] ;
5904: LD_ADDR_EXP 113
5908: PUSH
5909: LD_EXP 113
5913: PUSH
5914: LD_INT 33
5916: PUSH
5917: LD_INT 169
5919: PUSH
5920: LD_INT 100
5922: PUSH
5923: LD_INT 1
5925: PUSH
5926: LD_INT 47
5928: PUSH
5929: EMPTY
5930: LIST
5931: PUSH
5932: EMPTY
5933: LIST
5934: LIST
5935: LIST
5936: LIST
5937: LIST
5938: PUSH
5939: EMPTY
5940: LIST
5941: DIFF
5942: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 158 , 76 ) ) ;
5943: LD_INT 158
5945: PPUSH
5946: LD_INT 76
5948: PPUSH
5949: CALL_OW 438
5953: PPUSH
5954: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 158 , 76 , 0 , [ ru_rocket_launcher ] ] ] ;
5958: LD_ADDR_EXP 113
5962: PUSH
5963: LD_EXP 113
5967: PUSH
5968: LD_INT 33
5970: PUSH
5971: LD_INT 158
5973: PUSH
5974: LD_INT 76
5976: PUSH
5977: LD_INT 0
5979: PUSH
5980: LD_INT 45
5982: PUSH
5983: EMPTY
5984: LIST
5985: PUSH
5986: EMPTY
5987: LIST
5988: LIST
5989: LIST
5990: LIST
5991: LIST
5992: PUSH
5993: EMPTY
5994: LIST
5995: DIFF
5996: ST_TO_ADDR
// DestroyUnit ( GetUnitNumber ( 156 , 73 ) ) ;
5997: LD_INT 156
5999: PPUSH
6000: LD_INT 73
6002: PPUSH
6003: CALL_OW 438
6007: PPUSH
6008: CALL_OW 65
// Russian_Buildings = Russian_Buildings diff [ [ b_turret , 156 , 73 , 1 , [ ru_heavy_gun ] ] ] ;
6012: LD_ADDR_EXP 113
6016: PUSH
6017: LD_EXP 113
6021: PUSH
6022: LD_INT 33
6024: PUSH
6025: LD_INT 156
6027: PUSH
6028: LD_INT 73
6030: PUSH
6031: LD_INT 1
6033: PUSH
6034: LD_INT 46
6036: PUSH
6037: EMPTY
6038: LIST
6039: PUSH
6040: EMPTY
6041: LIST
6042: LIST
6043: LIST
6044: LIST
6045: LIST
6046: PUSH
6047: EMPTY
6048: LIST
6049: DIFF
6050: ST_TO_ADDR
// end ; 3 :
6051: GO 6065
6053: LD_INT 3
6055: DOUBLE
6056: EQUAL
6057: IFTRUE 6061
6059: GO 6064
6061: POP
// begin end ; end ;
6062: GO 6065
6064: POP
// end ;
6065: LD_VAR 0 1
6069: RET
// export function LinkBombs ; begin
6070: LD_INT 0
6072: PPUSH
// ComEnterUnit ( Control_Driver , ArControl ) ;
6073: LD_EXP 85
6077: PPUSH
6078: LD_INT 140
6080: PPUSH
6081: CALL_OW 120
// Wait ( 1 ) ;
6085: LD_INT 1
6087: PPUSH
6088: CALL_OW 67
// WaitTask ( Control_Driver , 1 ) ;
6092: LD_EXP 85
6096: PPUSH
6097: LD_INT 1
6099: PPUSH
6100: CALL 17892 0 2
// LinkVehicleToHuman ( ArBomb1 , Control_Driver ) ;
6104: LD_INT 139
6106: PPUSH
6107: LD_EXP 85
6111: PPUSH
6112: CALL_OW 53
// LinkVehicleToHuman ( ArBomb2 , Control_Driver ) ;
6116: LD_INT 138
6118: PPUSH
6119: LD_EXP 85
6123: PPUSH
6124: CALL_OW 53
// end ;
6128: LD_VAR 0 1
6132: RET
// function Prepare_Characters ; var i , Un , hlp , Gamma2Comander , Alpha , New_person , Drivers , Other , Number_of_all , Selected_Unit , New_vehicle ; begin
6133: LD_INT 0
6135: PPUSH
6136: PPUSH
6137: PPUSH
6138: PPUSH
6139: PPUSH
6140: PPUSH
6141: PPUSH
6142: PPUSH
6143: PPUSH
6144: PPUSH
6145: PPUSH
6146: PPUSH
// uc_nation = nation_american ;
6147: LD_ADDR_OWVAR 21
6151: PUSH
6152: LD_INT 1
6154: ST_TO_ADDR
// uc_side = americans ;
6155: LD_ADDR_OWVAR 20
6159: PUSH
6160: LD_EXP 176
6164: ST_TO_ADDR
// if not debug_constant then
6165: LD_EXP 195
6169: NOT
6170: IFFALSE 6187
// JMM = CreateCharacter ( JMM ) else
6172: LD_ADDR_EXP 1
6176: PUSH
6177: LD_STRING JMM
6179: PPUSH
6180: CALL_OW 34
6184: ST_TO_ADDR
6185: GO 6209
// begin hc_name = JMM ;
6187: LD_ADDR_OWVAR 26
6191: PUSH
6192: LD_STRING JMM
6194: ST_TO_ADDR
// JMM = CreateHuman ;
6195: LD_ADDR_EXP 1
6199: PUSH
6200: CALL_OW 44
6204: ST_TO_ADDR
// InitHc ;
6205: CALL_OW 19
// end ; if not JMM then
6209: LD_EXP 1
6213: NOT
6214: IFFALSE 6229
// BuildQuery ( Error: John Macmillan not found!!! , [ OK ] ) ;
6216: LD_STRING Error: John Macmillan not found!!!
6218: PPUSH
6219: LD_STRING OK
6221: PUSH
6222: EMPTY
6223: LIST
6224: PPUSH
6225: CALL_OW 99
// uc_side = americans1 ;
6229: LD_ADDR_OWVAR 20
6233: PUSH
6234: LD_EXP 177
6238: ST_TO_ADDR
// Powell = NewCharacter ( Powell ) ;
6239: LD_ADDR_EXP 2
6243: PUSH
6244: LD_STRING Powell
6246: PPUSH
6247: CALL_OW 25
6251: ST_TO_ADDR
// if not Powell then
6252: LD_EXP 2
6256: NOT
6257: IFFALSE 6274
// BuildQuery ( Error: Powell not found!!! , [ OK ] ) else
6259: LD_STRING Error: Powell not found!!!
6261: PPUSH
6262: LD_STRING OK
6264: PUSH
6265: EMPTY
6266: LIST
6267: PPUSH
6268: CALL_OW 99
6272: GO 6379
// begin SetSkill ( Powell , skill_combat , 10 ) ;
6274: LD_EXP 2
6278: PPUSH
6279: LD_INT 1
6281: PPUSH
6282: LD_INT 10
6284: PPUSH
6285: CALL_OW 237
// SetSkill ( Powell , skill_mechanical , 10 ) ;
6289: LD_EXP 2
6293: PPUSH
6294: LD_INT 3
6296: PPUSH
6297: LD_INT 10
6299: PPUSH
6300: CALL_OW 237
// SetSkill ( Powell , skill_engineering , 8 ) ;
6304: LD_EXP 2
6308: PPUSH
6309: LD_INT 2
6311: PPUSH
6312: LD_INT 8
6314: PPUSH
6315: CALL_OW 237
// SetSkill ( Powell , skill_scientistic , 4 ) ;
6319: LD_EXP 2
6323: PPUSH
6324: LD_INT 4
6326: PPUSH
6327: LD_INT 4
6329: PPUSH
6330: CALL_OW 237
// SetAttr ( Powell , attr_speed , 11 ) ;
6334: LD_EXP 2
6338: PPUSH
6339: LD_INT 2
6341: PPUSH
6342: LD_INT 11
6344: PPUSH
6345: CALL_OW 239
// SetAttr ( Powell , attr_stamina , 13 ) ;
6349: LD_EXP 2
6353: PPUSH
6354: LD_INT 1
6356: PPUSH
6357: LD_INT 13
6359: PPUSH
6360: CALL_OW 239
// PlaceUnitArea ( Powell , Center_am_b , false ) ;
6364: LD_EXP 2
6368: PPUSH
6369: LD_INT 13
6371: PPUSH
6372: LD_INT 0
6374: PPUSH
6375: CALL_OW 49
// end ; Bobby = CreateCharacter ( Bobby ) ;
6379: LD_ADDR_EXP 3
6383: PUSH
6384: LD_STRING Bobby
6386: PPUSH
6387: CALL_OW 34
6391: ST_TO_ADDR
// if Bobby then
6392: LD_EXP 3
6396: IFFALSE 6423
// begin if BobbyLoc <> 6 then
6398: LD_EXP 41
6402: PUSH
6403: LD_INT 6
6405: NONEQUAL
6406: IFFALSE 6423
// PlaceUnitArea ( Bobby , Center_am_b , false ) ;
6408: LD_EXP 3
6412: PPUSH
6413: LD_INT 13
6415: PPUSH
6416: LD_INT 0
6418: PPUSH
6419: CALL_OW 49
// end ; Cyrus = CreateCharacter ( Cyrus ) ;
6423: LD_ADDR_EXP 4
6427: PUSH
6428: LD_STRING Cyrus
6430: PPUSH
6431: CALL_OW 34
6435: ST_TO_ADDR
// if Cyrus then
6436: LD_EXP 4
6440: IFFALSE 6467
// begin if CyrusLoc <> 6 then
6442: LD_EXP 42
6446: PUSH
6447: LD_INT 6
6449: NONEQUAL
6450: IFFALSE 6467
// PlaceUnitArea ( Cyrus , Center_am_b , false ) ;
6452: LD_EXP 4
6456: PPUSH
6457: LD_INT 13
6459: PPUSH
6460: LD_INT 0
6462: PPUSH
6463: CALL_OW 49
// end ; Lisa = CreateCharacter ( Lisa ) ;
6467: LD_ADDR_EXP 5
6471: PUSH
6472: LD_STRING Lisa
6474: PPUSH
6475: CALL_OW 34
6479: ST_TO_ADDR
// if Lisa and Woman_in_am14 <> 2 then
6480: LD_EXP 5
6484: PUSH
6485: LD_EXP 36
6489: PUSH
6490: LD_INT 2
6492: NONEQUAL
6493: AND
6494: IFFALSE 6521
// begin if LisaLoc <> 6 then
6496: LD_EXP 43
6500: PUSH
6501: LD_INT 6
6503: NONEQUAL
6504: IFFALSE 6521
// PlaceUnitArea ( Lisa , Center_am_b , false ) ;
6506: LD_EXP 5
6510: PPUSH
6511: LD_INT 13
6513: PPUSH
6514: LD_INT 0
6516: PPUSH
6517: CALL_OW 49
// end ; Frank = CreateCharacter ( Frank ) ;
6521: LD_ADDR_EXP 6
6525: PUSH
6526: LD_STRING Frank
6528: PPUSH
6529: CALL_OW 34
6533: ST_TO_ADDR
// if Frank then
6534: LD_EXP 6
6538: IFFALSE 6565
// begin if FrankLoc <> 6 then
6540: LD_EXP 44
6544: PUSH
6545: LD_INT 6
6547: NONEQUAL
6548: IFFALSE 6565
// PlaceUnitArea ( Frank , Center_am_b , false ) ;
6550: LD_EXP 6
6554: PPUSH
6555: LD_INT 13
6557: PPUSH
6558: LD_INT 0
6560: PPUSH
6561: CALL_OW 49
// end ; Brown = CreateCharacter ( Brown ) ;
6565: LD_ADDR_EXP 7
6569: PUSH
6570: LD_STRING Brown
6572: PPUSH
6573: CALL_OW 34
6577: ST_TO_ADDR
// if Brown then
6578: LD_EXP 7
6582: IFFALSE 6609
// begin if BrownLoc <> 6 then
6584: LD_EXP 45
6588: PUSH
6589: LD_INT 6
6591: NONEQUAL
6592: IFFALSE 6609
// PlaceUnitArea ( Brown , Center_am_b , false ) ;
6594: LD_EXP 7
6598: PPUSH
6599: LD_INT 13
6601: PPUSH
6602: LD_INT 0
6604: PPUSH
6605: CALL_OW 49
// end ; Donaldson = CreateCharacter ( Donaldson ) ;
6609: LD_ADDR_EXP 8
6613: PUSH
6614: LD_STRING Donaldson
6616: PPUSH
6617: CALL_OW 34
6621: ST_TO_ADDR
// if Donaldson then
6622: LD_EXP 8
6626: IFFALSE 6653
// begin if DonaldsonLoc <> 6 then
6628: LD_EXP 46
6632: PUSH
6633: LD_INT 6
6635: NONEQUAL
6636: IFFALSE 6653
// PlaceUnitArea ( Donaldson , Center_am_b , false ) ;
6638: LD_EXP 8
6642: PPUSH
6643: LD_INT 13
6645: PPUSH
6646: LD_INT 0
6648: PPUSH
6649: CALL_OW 49
// end ; Gladstone = CreateCharacter ( Gladstone ) ;
6653: LD_ADDR_EXP 9
6657: PUSH
6658: LD_STRING Gladstone
6660: PPUSH
6661: CALL_OW 34
6665: ST_TO_ADDR
// if Gladstone then
6666: LD_EXP 9
6670: IFFALSE 6697
// begin if GladstoneLoc <> 6 then
6672: LD_EXP 48
6676: PUSH
6677: LD_INT 6
6679: NONEQUAL
6680: IFFALSE 6697
// PlaceUnitArea ( Gladstone , Center_am_b , false ) ;
6682: LD_EXP 9
6686: PPUSH
6687: LD_INT 13
6689: PPUSH
6690: LD_INT 0
6692: PPUSH
6693: CALL_OW 49
// end ; Denis = CreateCharacter ( Denis ) ;
6697: LD_ADDR_EXP 11
6701: PUSH
6702: LD_STRING Denis
6704: PPUSH
6705: CALL_OW 34
6709: ST_TO_ADDR
// if Denis then
6710: LD_EXP 11
6714: IFFALSE 6741
// begin if DenisLoc <> 6 then
6716: LD_EXP 52
6720: PUSH
6721: LD_INT 6
6723: NONEQUAL
6724: IFFALSE 6741
// PlaceUnitArea ( Denis , Center_am_b , false ) ;
6726: LD_EXP 11
6730: PPUSH
6731: LD_INT 13
6733: PPUSH
6734: LD_INT 0
6736: PPUSH
6737: CALL_OW 49
// end ; Cornell = CreateCharacter ( Cornell ) ;
6741: LD_ADDR_EXP 10
6745: PUSH
6746: LD_STRING Cornell
6748: PPUSH
6749: CALL_OW 34
6753: ST_TO_ADDR
// if Cornell then
6754: LD_EXP 10
6758: IFFALSE 6785
// begin if CornellLoc <> 6 then
6760: LD_EXP 53
6764: PUSH
6765: LD_INT 6
6767: NONEQUAL
6768: IFFALSE 6785
// PlaceUnitArea ( Cornell , Center_am_b , false ) ;
6770: LD_EXP 10
6774: PPUSH
6775: LD_INT 13
6777: PPUSH
6778: LD_INT 0
6780: PPUSH
6781: CALL_OW 49
// end ; Yamoko = CreateCharacter ( Yamoko ) ;
6785: LD_ADDR_EXP 14
6789: PUSH
6790: LD_STRING Yamoko
6792: PPUSH
6793: CALL_OW 34
6797: ST_TO_ADDR
// if Yamoko then
6798: LD_EXP 14
6802: IFFALSE 6829
// begin if YamokoLoc <> 6 then
6804: LD_EXP 50
6808: PUSH
6809: LD_INT 6
6811: NONEQUAL
6812: IFFALSE 6829
// PlaceUnitArea ( Yamoko , Center_am_b , false ) ;
6814: LD_EXP 14
6818: PPUSH
6819: LD_INT 13
6821: PPUSH
6822: LD_INT 0
6824: PPUSH
6825: CALL_OW 49
// end ; Gary = CreateCharacter ( Gary ) ;
6829: LD_ADDR_EXP 15
6833: PUSH
6834: LD_STRING Gary
6836: PPUSH
6837: CALL_OW 34
6841: ST_TO_ADDR
// if Gary then
6842: LD_EXP 15
6846: IFFALSE 6873
// begin if GaryLoc <> 6 then
6848: LD_EXP 51
6852: PUSH
6853: LD_INT 6
6855: NONEQUAL
6856: IFFALSE 6873
// PlaceUnitArea ( Gary , Center_am_b , false ) ;
6858: LD_EXP 15
6862: PPUSH
6863: LD_INT 13
6865: PPUSH
6866: LD_INT 0
6868: PPUSH
6869: CALL_OW 49
// end ; VanHouten = CreateCharacter ( VanHouten ) ;
6873: LD_ADDR_EXP 24
6877: PUSH
6878: LD_STRING VanHouten
6880: PPUSH
6881: CALL_OW 34
6885: ST_TO_ADDR
// if VanHouten then
6886: LD_EXP 24
6890: IFFALSE 6917
// begin if VanHoutenLoc <> 6 then
6892: LD_EXP 47
6896: PUSH
6897: LD_INT 6
6899: NONEQUAL
6900: IFFALSE 6917
// PlaceUnitArea ( VanHoutenLoc , Center_am_b , false ) ;
6902: LD_EXP 47
6906: PPUSH
6907: LD_INT 13
6909: PPUSH
6910: LD_INT 0
6912: PPUSH
6913: CALL_OW 49
// end ; Stevens = CreateCharacter ( Stevens ) ;
6917: LD_ADDR_EXP 17
6921: PUSH
6922: LD_STRING Stevens
6924: PPUSH
6925: CALL_OW 34
6929: ST_TO_ADDR
// if not ( Stevens ) then
6930: LD_EXP 17
6934: NOT
6935: IFFALSE 6988
// begin PrepareScientist ( 1 , 9 ) ;
6937: LD_INT 1
6939: PPUSH
6940: LD_INT 9
6942: PPUSH
6943: CALL_OW 384
// hc_name = Baker Smith ;
6947: LD_ADDR_OWVAR 26
6951: PUSH
6952: LD_STRING Baker Smith
6954: ST_TO_ADDR
// Baker = CreateHuman ;
6955: LD_ADDR_EXP 23
6959: PUSH
6960: CALL_OW 44
6964: ST_TO_ADDR
// SetSkill ( Baker , skill_scientistic , 8 ) ;
6965: LD_EXP 23
6969: PPUSH
6970: LD_INT 4
6972: PPUSH
6973: LD_INT 8
6975: PPUSH
6976: CALL_OW 237
// hc_name =  ;
6980: LD_ADDR_OWVAR 26
6984: PUSH
6985: LD_STRING 
6987: ST_TO_ADDR
// end ; Coonie = CreateCharacter ( Coonie ) ;
6988: LD_ADDR_EXP 18
6992: PUSH
6993: LD_STRING Coonie
6995: PPUSH
6996: CALL_OW 34
7000: ST_TO_ADDR
// if Coonie and Woman_in_am14 <> 3 then
7001: LD_EXP 18
7005: PUSH
7006: LD_EXP 36
7010: PUSH
7011: LD_INT 3
7013: NONEQUAL
7014: AND
7015: IFFALSE 7026
// begin DestroyUnit ( Coonie ) ;
7017: LD_EXP 18
7021: PPUSH
7022: CALL_OW 65
// end ; if not debug_constant then
7026: LD_EXP 195
7030: NOT
7031: IFFALSE 7048
// Joan = CreateCharacter ( Joan ) else
7033: LD_ADDR_EXP 12
7037: PUSH
7038: LD_STRING Joan
7040: PPUSH
7041: CALL_OW 34
7045: ST_TO_ADDR
7046: GO 7078
// begin hc_name = Joan ;
7048: LD_ADDR_OWVAR 26
7052: PUSH
7053: LD_STRING Joan
7055: ST_TO_ADDR
// hc_sex = sex_female ;
7056: LD_ADDR_OWVAR 27
7060: PUSH
7061: LD_INT 2
7063: ST_TO_ADDR
// Joan = CreateHuman ;
7064: LD_ADDR_EXP 12
7068: PUSH
7069: CALL_OW 44
7073: ST_TO_ADDR
// InitHC ;
7074: CALL_OW 19
// end ; All_americans = FilterAllUnits ( [ [ f_side , americans1 ] , [ f_type , unit_human ] ] ) diff Powell ;
7078: LD_ADDR_EXP 61
7082: PUSH
7083: LD_INT 22
7085: PUSH
7086: LD_EXP 177
7090: PUSH
7091: EMPTY
7092: LIST
7093: LIST
7094: PUSH
7095: LD_INT 21
7097: PUSH
7098: LD_INT 1
7100: PUSH
7101: EMPTY
7102: LIST
7103: LIST
7104: PUSH
7105: EMPTY
7106: LIST
7107: LIST
7108: PPUSH
7109: CALL_OW 69
7113: PUSH
7114: LD_EXP 2
7118: DIFF
7119: ST_TO_ADDR
// Named_americans = All_americans ;
7120: LD_ADDR_EXP 62
7124: PUSH
7125: LD_EXP 61
7129: ST_TO_ADDR
// if Named_americans > 12 then
7130: LD_EXP 62
7134: PUSH
7135: LD_INT 12
7137: GREATER
7138: IFFALSE 7156
// Number_of_all = Named_americans + 8 else
7140: LD_ADDR_VAR 0 10
7144: PUSH
7145: LD_EXP 62
7149: PUSH
7150: LD_INT 8
7152: PLUS
7153: ST_TO_ADDR
7154: GO 7164
// Number_of_all = 20 ;
7156: LD_ADDR_VAR 0 10
7160: PUSH
7161: LD_INT 20
7163: ST_TO_ADDR
// while ( OtherNotJMM <> 0 ) and ( All_Americans < Number_of_all ) do
7164: LD_EXP 31
7168: PUSH
7169: LD_INT 0
7171: NONEQUAL
7172: PUSH
7173: LD_EXP 61
7177: PUSH
7178: LD_VAR 0 10
7182: LESS
7183: AND
7184: IFFALSE 7270
// begin Selected_unit = FindMaxSumSkill ( OtherNotJMM , 0 ) ;
7186: LD_ADDR_VAR 0 11
7190: PUSH
7191: LD_EXP 31
7195: PPUSH
7196: LD_INT 0
7198: PPUSH
7199: CALL 18104 0 2
7203: ST_TO_ADDR
// OtherNotJMM = OtherNotJMM diff Selected_unit ;
7204: LD_ADDR_EXP 31
7208: PUSH
7209: LD_EXP 31
7213: PUSH
7214: LD_VAR 0 11
7218: DIFF
7219: ST_TO_ADDR
// if GetNation ( Selected_unit ) <> 1 then
7220: LD_VAR 0 11
7224: PPUSH
7225: CALL_OW 248
7229: PUSH
7230: LD_INT 1
7232: NONEQUAL
7233: IFFALSE 7237
// continue ;
7235: GO 7164
// All_Americans = All_americans ^ Selected_unit ;
7237: LD_ADDR_EXP 61
7241: PUSH
7242: LD_EXP 61
7246: PUSH
7247: LD_VAR 0 11
7251: ADD
7252: ST_TO_ADDR
// PlaceUnitArea ( Selected_unit , Center_am_b , false ) ;
7253: LD_VAR 0 11
7257: PPUSH
7258: LD_INT 13
7260: PPUSH
7261: LD_INT 0
7263: PPUSH
7264: CALL_OW 49
// end ;
7268: GO 7164
// if All_americans < Number_of_all then
7270: LD_EXP 61
7274: PUSH
7275: LD_VAR 0 10
7279: LESS
7280: IFFALSE 7445
// for i = All_americans + 1 to Number_of_all do
7282: LD_ADDR_VAR 0 2
7286: PUSH
7287: DOUBLE
7288: LD_EXP 61
7292: PUSH
7293: LD_INT 1
7295: PLUS
7296: DEC
7297: ST_TO_ADDR
7298: LD_VAR 0 10
7302: PUSH
7303: FOR_TO
7304: IFFALSE 7443
// begin case ( i mod 4 ) of 0 :
7306: LD_VAR 0 2
7310: PUSH
7311: LD_INT 4
7313: MOD
7314: PUSH
7315: LD_INT 0
7317: DOUBLE
7318: EQUAL
7319: IFTRUE 7323
7321: GO 7336
7323: POP
// begin PrepareSoldier ( sex_male , 7 ) ;
7324: LD_INT 1
7326: PPUSH
7327: LD_INT 7
7329: PPUSH
7330: CALL_OW 381
// end ; 1 :
7334: GO 7400
7336: LD_INT 1
7338: DOUBLE
7339: EQUAL
7340: IFTRUE 7344
7342: GO 7357
7344: POP
// begin PrepareScientist ( sex_male , 7 ) ;
7345: LD_INT 1
7347: PPUSH
7348: LD_INT 7
7350: PPUSH
7351: CALL_OW 384
// end ; 2 :
7355: GO 7400
7357: LD_INT 2
7359: DOUBLE
7360: EQUAL
7361: IFTRUE 7365
7363: GO 7378
7365: POP
// begin PrepareMechanic ( sex_male , 7 ) ;
7366: LD_INT 1
7368: PPUSH
7369: LD_INT 7
7371: PPUSH
7372: CALL_OW 383
// end ; 3 :
7376: GO 7400
7378: LD_INT 3
7380: DOUBLE
7381: EQUAL
7382: IFTRUE 7386
7384: GO 7399
7386: POP
// begin PrepareEngineer ( sex_male , 7 ) ;
7387: LD_INT 1
7389: PPUSH
7390: LD_INT 7
7392: PPUSH
7393: CALL_OW 382
// end ; end ;
7397: GO 7400
7399: POP
// New_person = CreateHuman ;
7400: LD_ADDR_VAR 0 7
7404: PUSH
7405: CALL_OW 44
7409: ST_TO_ADDR
// All_americans = All_americans ^ New_person ;
7410: LD_ADDR_EXP 61
7414: PUSH
7415: LD_EXP 61
7419: PUSH
7420: LD_VAR 0 7
7424: ADD
7425: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_am_b , false ) ;
7426: LD_VAR 0 7
7430: PPUSH
7431: LD_INT 13
7433: PPUSH
7434: LD_INT 0
7436: PPUSH
7437: CALL_OW 49
// end ;
7441: GO 7303
7443: POP
7444: POP
// Remaining_Powells = All_americans ;
7445: LD_ADDR_EXP 64
7449: PUSH
7450: LD_EXP 61
7454: ST_TO_ADDR
// uc_nation = nation_russian ;
7455: LD_ADDR_OWVAR 21
7459: PUSH
7460: LD_INT 3
7462: ST_TO_ADDR
// uc_side = russians ;
7463: LD_ADDR_OWVAR 20
7467: PUSH
7468: LD_EXP 178
7472: ST_TO_ADDR
// uc_nation = nation_russian ;
7473: LD_ADDR_OWVAR 21
7477: PUSH
7478: LD_INT 3
7480: ST_TO_ADDR
// Platonov = NewCharacter ( Platonov ) ;
7481: LD_ADDR_EXP 26
7485: PUSH
7486: LD_STRING Platonov
7488: PPUSH
7489: CALL_OW 25
7493: ST_TO_ADDR
// if Platonov then
7494: LD_EXP 26
7498: IFFALSE 7562
// begin SetSkill ( Platonov , skill_combat , 10 ) ;
7500: LD_EXP 26
7504: PPUSH
7505: LD_INT 1
7507: PPUSH
7508: LD_INT 10
7510: PPUSH
7511: CALL_OW 237
// SetSkill ( Platonov , skill_engineering , 6 ) ;
7515: LD_EXP 26
7519: PPUSH
7520: LD_INT 2
7522: PPUSH
7523: LD_INT 6
7525: PPUSH
7526: CALL_OW 237
// SetSkill ( Platonov , skill_mechanical , 10 ) ;
7530: LD_EXP 26
7534: PPUSH
7535: LD_INT 3
7537: PPUSH
7538: LD_INT 10
7540: PPUSH
7541: CALL_OW 237
// SetSkill ( Platonov , skill_scientistic , 2 ) ;
7545: LD_EXP 26
7549: PPUSH
7550: LD_INT 4
7552: PPUSH
7553: LD_INT 2
7555: PPUSH
7556: CALL_OW 237
// end else
7560: GO 7650
// begin hc_sex = sex_male ;
7562: LD_ADDR_OWVAR 27
7566: PUSH
7567: LD_INT 1
7569: ST_TO_ADDR
// hc_class = class_soldier ;
7570: LD_ADDR_OWVAR 28
7574: PUSH
7575: LD_INT 1
7577: ST_TO_ADDR
// hc_skills = [ 10 , 6 , 10 , 3 ] ;
7578: LD_ADDR_OWVAR 31
7582: PUSH
7583: LD_INT 10
7585: PUSH
7586: LD_INT 6
7588: PUSH
7589: LD_INT 10
7591: PUSH
7592: LD_INT 3
7594: PUSH
7595: EMPTY
7596: LIST
7597: LIST
7598: LIST
7599: LIST
7600: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
7601: LD_ADDR_OWVAR 29
7605: PUSH
7606: LD_INT 10
7608: PUSH
7609: LD_INT 10
7611: PUSH
7612: EMPTY
7613: LIST
7614: LIST
7615: ST_TO_ADDR
// hc_name = Platonov ;
7616: LD_ADDR_OWVAR 26
7620: PUSH
7621: LD_STRING Platonov
7623: ST_TO_ADDR
// Platonov = CreateHuman ;
7624: LD_ADDR_EXP 26
7628: PUSH
7629: CALL_OW 44
7633: ST_TO_ADDR
// hc_name =  ;
7634: LD_ADDR_OWVAR 26
7638: PUSH
7639: LD_STRING 
7641: ST_TO_ADDR
// hc_gallery =  ;
7642: LD_ADDR_OWVAR 33
7646: PUSH
7647: LD_STRING 
7649: ST_TO_ADDR
// end ; uc_nation = nation_russian ;
7650: LD_ADDR_OWVAR 21
7654: PUSH
7655: LD_INT 3
7657: ST_TO_ADDR
// Kovaljuk = NewCharacter ( Kovaljuk ) ;
7658: LD_ADDR_EXP 27
7662: PUSH
7663: LD_STRING Kovaljuk
7665: PPUSH
7666: CALL_OW 25
7670: ST_TO_ADDR
// if Kovaljuk then
7671: LD_EXP 27
7675: IFFALSE 7739
// begin SetSkill ( Kovaljuk , skill_combat , 8 ) ;
7677: LD_EXP 27
7681: PPUSH
7682: LD_INT 1
7684: PPUSH
7685: LD_INT 8
7687: PPUSH
7688: CALL_OW 237
// SetSkill ( Kovaljuk , skill_engineering , 10 ) ;
7692: LD_EXP 27
7696: PPUSH
7697: LD_INT 2
7699: PPUSH
7700: LD_INT 10
7702: PPUSH
7703: CALL_OW 237
// SetSkill ( Kovaljuk , skill_mechanical , 4 ) ;
7707: LD_EXP 27
7711: PPUSH
7712: LD_INT 3
7714: PPUSH
7715: LD_INT 4
7717: PPUSH
7718: CALL_OW 237
// SetSkill ( Kovaljuk , skill_scientistic , 3 ) ;
7722: LD_EXP 27
7726: PPUSH
7727: LD_INT 4
7729: PPUSH
7730: LD_INT 3
7732: PPUSH
7733: CALL_OW 237
// end else
7737: GO 7843
// begin hc_sex = sex_male ;
7739: LD_ADDR_OWVAR 27
7743: PUSH
7744: LD_INT 1
7746: ST_TO_ADDR
// hc_class = class_soldier ;
7747: LD_ADDR_OWVAR 28
7751: PUSH
7752: LD_INT 1
7754: ST_TO_ADDR
// hc_skills = [ 8 , 10 , 4 , 3 ] ;
7755: LD_ADDR_OWVAR 31
7759: PUSH
7760: LD_INT 8
7762: PUSH
7763: LD_INT 10
7765: PUSH
7766: LD_INT 4
7768: PUSH
7769: LD_INT 3
7771: PUSH
7772: EMPTY
7773: LIST
7774: LIST
7775: LIST
7776: LIST
7777: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
7778: LD_ADDR_OWVAR 29
7782: PUSH
7783: LD_INT 10
7785: PUSH
7786: LD_INT 10
7788: PUSH
7789: EMPTY
7790: LIST
7791: LIST
7792: ST_TO_ADDR
// hc_name = Kovaljuk ;
7793: LD_ADDR_OWVAR 26
7797: PUSH
7798: LD_STRING Kovaljuk
7800: ST_TO_ADDR
// hc_gallery := ru ;
7801: LD_ADDR_OWVAR 33
7805: PUSH
7806: LD_STRING ru
7808: ST_TO_ADDR
// hc_face_number := 6 ;
7809: LD_ADDR_OWVAR 34
7813: PUSH
7814: LD_INT 6
7816: ST_TO_ADDR
// Kovaljuk = CreateHuman ;
7817: LD_ADDR_EXP 27
7821: PUSH
7822: CALL_OW 44
7826: ST_TO_ADDR
// hc_name =  ;
7827: LD_ADDR_OWVAR 26
7831: PUSH
7832: LD_STRING 
7834: ST_TO_ADDR
// hc_gallery =  ;
7835: LD_ADDR_OWVAR 33
7839: PUSH
7840: LD_STRING 
7842: ST_TO_ADDR
// end ; for Un = 1 to Number_of_russian_soldiers do
7843: LD_ADDR_VAR 0 3
7847: PUSH
7848: DOUBLE
7849: LD_INT 1
7851: DEC
7852: ST_TO_ADDR
7853: LD_EXP 133
7857: PUSH
7858: FOR_TO
7859: IFFALSE 7947
// begin if i in [ 1 , 2 ] then
7861: LD_VAR 0 2
7865: PUSH
7866: LD_INT 1
7868: PUSH
7869: LD_INT 2
7871: PUSH
7872: EMPTY
7873: LIST
7874: LIST
7875: IN
7876: IFFALSE 7892
// PrepareSoldier ( sex_male , human_difficulty_skill ) else
7878: LD_INT 1
7880: PPUSH
7881: LD_EXP 184
7885: PPUSH
7886: CALL_OW 381
7890: GO 7904
// PrepareSoldier ( 0 , human_difficulty_skill ) ;
7892: LD_INT 0
7894: PPUSH
7895: LD_EXP 184
7899: PPUSH
7900: CALL_OW 381
// New_person = CreateHuman ;
7904: LD_ADDR_VAR 0 7
7908: PUSH
7909: CALL_OW 44
7913: ST_TO_ADDR
// Russian_soldiers = Russian_soldiers ^ New_person ;
7914: LD_ADDR_EXP 107
7918: PUSH
7919: LD_EXP 107
7923: PUSH
7924: LD_VAR 0 7
7928: ADD
7929: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ru_b , false ) ;
7930: LD_VAR 0 7
7934: PPUSH
7935: LD_INT 16
7937: PPUSH
7938: LD_INT 0
7940: PPUSH
7941: CALL_OW 49
// end ;
7945: GO 7858
7947: POP
7948: POP
// for Un = 1 to Number_of_russian_scientists do
7949: LD_ADDR_VAR 0 3
7953: PUSH
7954: DOUBLE
7955: LD_INT 1
7957: DEC
7958: ST_TO_ADDR
7959: LD_EXP 134
7963: PUSH
7964: FOR_TO
7965: IFFALSE 8022
// begin PrepareScientist ( 0 , human_difficulty_skill ) ;
7967: LD_INT 0
7969: PPUSH
7970: LD_EXP 184
7974: PPUSH
7975: CALL_OW 384
// New_person = CreateHuman ;
7979: LD_ADDR_VAR 0 7
7983: PUSH
7984: CALL_OW 44
7988: ST_TO_ADDR
// Russian_scientists = Russian_scientists ^ New_person ;
7989: LD_ADDR_EXP 108
7993: PUSH
7994: LD_EXP 108
7998: PUSH
7999: LD_VAR 0 7
8003: ADD
8004: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ru_b , false ) ;
8005: LD_VAR 0 7
8009: PPUSH
8010: LD_INT 16
8012: PPUSH
8013: LD_INT 0
8015: PPUSH
8016: CALL_OW 49
// end ;
8020: GO 7964
8022: POP
8023: POP
// for Un = 1 to Number_of_russian_engineers do
8024: LD_ADDR_VAR 0 3
8028: PUSH
8029: DOUBLE
8030: LD_INT 1
8032: DEC
8033: ST_TO_ADDR
8034: LD_EXP 136
8038: PUSH
8039: FOR_TO
8040: IFFALSE 8097
// begin PrepareEngineer ( 0 , human_difficulty_skill ) ;
8042: LD_INT 0
8044: PPUSH
8045: LD_EXP 184
8049: PPUSH
8050: CALL_OW 382
// New_person = CreateHuman ;
8054: LD_ADDR_VAR 0 7
8058: PUSH
8059: CALL_OW 44
8063: ST_TO_ADDR
// Russian_engineers = Russian_engineers ^ New_person ;
8064: LD_ADDR_EXP 109
8068: PUSH
8069: LD_EXP 109
8073: PUSH
8074: LD_VAR 0 7
8078: ADD
8079: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ru_b , false ) ;
8080: LD_VAR 0 7
8084: PPUSH
8085: LD_INT 16
8087: PPUSH
8088: LD_INT 0
8090: PPUSH
8091: CALL_OW 49
// end ;
8095: GO 8039
8097: POP
8098: POP
// for Un = 1 to Number_of_russian_mechanics do
8099: LD_ADDR_VAR 0 3
8103: PUSH
8104: DOUBLE
8105: LD_INT 1
8107: DEC
8108: ST_TO_ADDR
8109: LD_EXP 135
8113: PUSH
8114: FOR_TO
8115: IFFALSE 8172
// begin PrepareMechanic ( 0 , human_difficulty_skill ) ;
8117: LD_INT 0
8119: PPUSH
8120: LD_EXP 184
8124: PPUSH
8125: CALL_OW 383
// New_person = CreateHuman ;
8129: LD_ADDR_VAR 0 7
8133: PUSH
8134: CALL_OW 44
8138: ST_TO_ADDR
// Russian_Mechanics = Russian_Mechanics ^ New_person ;
8139: LD_ADDR_EXP 110
8143: PUSH
8144: LD_EXP 110
8148: PUSH
8149: LD_VAR 0 7
8153: ADD
8154: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ru_b , false ) ;
8155: LD_VAR 0 7
8159: PPUSH
8160: LD_INT 16
8162: PPUSH
8163: LD_INT 0
8165: PPUSH
8166: CALL_OW 49
// end ;
8170: GO 8114
8172: POP
8173: POP
// All_russians = Russian_soldiers ^ Russian_scientists ^ Russian_Engineers ^ Russian_mechanics ;
8174: LD_ADDR_EXP 111
8178: PUSH
8179: LD_EXP 107
8183: PUSH
8184: LD_EXP 108
8188: ADD
8189: PUSH
8190: LD_EXP 109
8194: ADD
8195: PUSH
8196: LD_EXP 110
8200: ADD
8201: ST_TO_ADDR
// uc_nation = nation_arabian ;
8202: LD_ADDR_OWVAR 21
8206: PUSH
8207: LD_INT 2
8209: ST_TO_ADDR
// uc_side = arabians1 ;
8210: LD_ADDR_OWVAR 20
8214: PUSH
8215: LD_EXP 181
8219: ST_TO_ADDR
// Omar = NewCharacter ( Omar ) ;
8220: LD_ADDR_EXP 28
8224: PUSH
8225: LD_STRING Omar
8227: PPUSH
8228: CALL_OW 25
8232: ST_TO_ADDR
// if not ( Omar ) then
8233: LD_EXP 28
8237: NOT
8238: IFFALSE 8240
// begin end ; RemoveUnit ( Masto ) ;
8240: LD_INT 147
8242: PPUSH
8243: CALL_OW 64
// PlaceHumanInUnit ( Omar , Masto ) ;
8247: LD_EXP 28
8251: PPUSH
8252: LD_INT 147
8254: PPUSH
8255: CALL_OW 52
// Heike = NewCharacter ( Heike ) ;
8259: LD_ADDR_EXP 29
8263: PUSH
8264: LD_STRING Heike
8266: PPUSH
8267: CALL_OW 25
8271: ST_TO_ADDR
// if Heike then
8272: LD_EXP 29
8276: IFFALSE 8292
// begin SetClass ( Heike , class_mortar ) ;
8278: LD_EXP 29
8282: PPUSH
8283: LD_INT 8
8285: PPUSH
8286: CALL_OW 336
// end else
8290: GO 8292
// begin end ; Omar_Scientists = [ ] ;
8292: LD_ADDR_EXP 73
8296: PUSH
8297: EMPTY
8298: ST_TO_ADDR
// for i = 1 to 2 do
8299: LD_ADDR_VAR 0 2
8303: PUSH
8304: DOUBLE
8305: LD_INT 1
8307: DEC
8308: ST_TO_ADDR
8309: LD_INT 2
8311: PUSH
8312: FOR_TO
8313: IFFALSE 8355
// begin PrepareScientist ( 0 , human_difficulty_skill ) ;
8315: LD_INT 0
8317: PPUSH
8318: LD_EXP 184
8322: PPUSH
8323: CALL_OW 384
// New_Person = CreateHuman ;
8327: LD_ADDR_VAR 0 7
8331: PUSH
8332: CALL_OW 44
8336: ST_TO_ADDR
// Omar_Scientists = Omar_Scientists ^ New_Person ;
8337: LD_ADDR_EXP 73
8341: PUSH
8342: LD_EXP 73
8346: PUSH
8347: LD_VAR 0 7
8351: ADD
8352: ST_TO_ADDR
// end ;
8353: GO 8312
8355: POP
8356: POP
// Omar_Soldiers = [ ] ;
8357: LD_ADDR_EXP 72
8361: PUSH
8362: EMPTY
8363: ST_TO_ADDR
// for i = 1 to Number_Of_Omar_Soldiers do
8364: LD_ADDR_VAR 0 2
8368: PUSH
8369: DOUBLE
8370: LD_INT 1
8372: DEC
8373: ST_TO_ADDR
8374: LD_EXP 75
8378: PUSH
8379: FOR_TO
8380: IFFALSE 8444
// begin PrepareSoldier ( 0 , human_difficulty_skill ) ;
8382: LD_INT 0
8384: PPUSH
8385: LD_EXP 184
8389: PPUSH
8390: CALL_OW 381
// New_Person = CreateHuman ;
8394: LD_ADDR_VAR 0 7
8398: PUSH
8399: CALL_OW 44
8403: ST_TO_ADDR
// if i = 1 then
8404: LD_VAR 0 2
8408: PUSH
8409: LD_INT 1
8411: EQUAL
8412: IFFALSE 8426
// SetClass ( New_Person , class_mortar ) ;
8414: LD_VAR 0 7
8418: PPUSH
8419: LD_INT 8
8421: PPUSH
8422: CALL_OW 336
// Omar_Soldiers = Omar_Soldiers ^ New_Person ;
8426: LD_ADDR_EXP 72
8430: PUSH
8431: LD_EXP 72
8435: PUSH
8436: LD_VAR 0 7
8440: ADD
8441: ST_TO_ADDR
// end ;
8442: GO 8379
8444: POP
8445: POP
// for i = 1 to Number_of_Omar_Hovercrafts do
8446: LD_ADDR_VAR 0 2
8450: PUSH
8451: DOUBLE
8452: LD_INT 1
8454: DEC
8455: ST_TO_ADDR
8456: LD_EXP 76
8460: PUSH
8461: FOR_TO
8462: IFFALSE 8550
// begin uc_side = arabians1 ;
8464: LD_ADDR_OWVAR 20
8468: PUSH
8469: LD_EXP 181
8473: ST_TO_ADDR
// uc_nation = nation_arabian ;
8474: LD_ADDR_OWVAR 21
8478: PUSH
8479: LD_INT 2
8481: ST_TO_ADDR
// uc_direction = 2 ;
8482: LD_ADDR_OWVAR 24
8486: PUSH
8487: LD_INT 2
8489: ST_TO_ADDR
// vc_chassis = ar_hovercraft ;
8490: LD_ADDR_OWVAR 37
8494: PUSH
8495: LD_INT 11
8497: ST_TO_ADDR
// vc_engine = engine_combustion ;
8498: LD_ADDR_OWVAR 39
8502: PUSH
8503: LD_INT 1
8505: ST_TO_ADDR
// vc_control = control_manual ;
8506: LD_ADDR_OWVAR 38
8510: PUSH
8511: LD_INT 1
8513: ST_TO_ADDR
// vc_weapon = ar_double_machine_gun ;
8514: LD_ADDR_OWVAR 40
8518: PUSH
8519: LD_INT 24
8521: ST_TO_ADDR
// New_vehicle = CreateVehicle ;
8522: LD_ADDR_VAR 0 12
8526: PUSH
8527: CALL_OW 45
8531: ST_TO_ADDR
// Omar_vehicles = Omar_vehicles ^ New_vehicle ;
8532: LD_ADDR_EXP 74
8536: PUSH
8537: LD_EXP 74
8541: PUSH
8542: LD_VAR 0 12
8546: ADD
8547: ST_TO_ADDR
// end ;
8548: GO 8461
8550: POP
8551: POP
// for i = 1 to Number_of_Omar_Flamethrowers do
8552: LD_ADDR_VAR 0 2
8556: PUSH
8557: DOUBLE
8558: LD_INT 1
8560: DEC
8561: ST_TO_ADDR
8562: LD_EXP 77
8566: PUSH
8567: FOR_TO
8568: IFFALSE 8630
// begin vc_chassis = ar_half_tracked ;
8570: LD_ADDR_OWVAR 37
8574: PUSH
8575: LD_INT 14
8577: ST_TO_ADDR
// vc_engine = engine_combustion ;
8578: LD_ADDR_OWVAR 39
8582: PUSH
8583: LD_INT 1
8585: ST_TO_ADDR
// vc_control = control_manual ;
8586: LD_ADDR_OWVAR 38
8590: PUSH
8591: LD_INT 1
8593: ST_TO_ADDR
// vc_weapon = ar_flame_thrower ;
8594: LD_ADDR_OWVAR 40
8598: PUSH
8599: LD_INT 26
8601: ST_TO_ADDR
// New_vehicle = CreateVehicle ;
8602: LD_ADDR_VAR 0 12
8606: PUSH
8607: CALL_OW 45
8611: ST_TO_ADDR
// Omar_vehicles = Omar_vehicles ^ New_vehicle ;
8612: LD_ADDR_EXP 74
8616: PUSH
8617: LD_EXP 74
8621: PUSH
8622: LD_VAR 0 12
8626: ADD
8627: ST_TO_ADDR
// end ;
8628: GO 8567
8630: POP
8631: POP
// for i = 1 to Number_of_Omar_RocketLaunchers do
8632: LD_ADDR_VAR 0 2
8636: PUSH
8637: DOUBLE
8638: LD_INT 1
8640: DEC
8641: ST_TO_ADDR
8642: LD_EXP 78
8646: PUSH
8647: FOR_TO
8648: IFFALSE 8710
// begin vc_chassis = ar_half_tracked ;
8650: LD_ADDR_OWVAR 37
8654: PUSH
8655: LD_INT 14
8657: ST_TO_ADDR
// vc_engine = engine_combustion ;
8658: LD_ADDR_OWVAR 39
8662: PUSH
8663: LD_INT 1
8665: ST_TO_ADDR
// vc_control = control_manual ;
8666: LD_ADDR_OWVAR 38
8670: PUSH
8671: LD_INT 1
8673: ST_TO_ADDR
// vc_weapon = ar_rocket_launcher ;
8674: LD_ADDR_OWVAR 40
8678: PUSH
8679: LD_INT 28
8681: ST_TO_ADDR
// New_vehicle = CreateVehicle ;
8682: LD_ADDR_VAR 0 12
8686: PUSH
8687: CALL_OW 45
8691: ST_TO_ADDR
// Omar_vehicles = Omar_vehicles ^ New_vehicle ;
8692: LD_ADDR_EXP 74
8696: PUSH
8697: LD_EXP 74
8701: PUSH
8702: LD_VAR 0 12
8706: ADD
8707: ST_TO_ADDR
// end ;
8708: GO 8647
8710: POP
8711: POP
// for Un in Omar_vehicles do
8712: LD_ADDR_VAR 0 3
8716: PUSH
8717: LD_EXP 74
8721: PUSH
8722: FOR_IN
8723: IFFALSE 8763
// begin PrepareMechanic ( 0 , human_difficulty_skill ) ;
8725: LD_INT 0
8727: PPUSH
8728: LD_EXP 184
8732: PPUSH
8733: CALL_OW 383
// New_Person = CreateHuman ;
8737: LD_ADDR_VAR 0 7
8741: PUSH
8742: CALL_OW 44
8746: ST_TO_ADDR
// PlaceHumanInUnit ( New_Person , Un ) ;
8747: LD_VAR 0 7
8751: PPUSH
8752: LD_VAR 0 3
8756: PPUSH
8757: CALL_OW 52
// end ;
8761: GO 8722
8763: POP
8764: POP
// uc_nation = nation_arabian ;
8765: LD_ADDR_OWVAR 21
8769: PUSH
8770: LD_INT 2
8772: ST_TO_ADDR
// uc_side = arabians ;
8773: LD_ADDR_OWVAR 20
8777: PUSH
8778: LD_EXP 180
8782: ST_TO_ADDR
// Kurt = CreateCharacter ( Kurt ) ;
8783: LD_ADDR_EXP 13
8787: PUSH
8788: LD_STRING Kurt
8790: PPUSH
8791: CALL_OW 34
8795: ST_TO_ADDR
// if Kurt then
8796: LD_EXP 13
8800: IFFALSE 8872
// begin Really_Kurt = true ;
8802: LD_ADDR_EXP 205
8806: PUSH
8807: LD_INT 1
8809: ST_TO_ADDR
// SetSkill ( Kurt , skill_combat , 8 ) ;
8810: LD_EXP 13
8814: PPUSH
8815: LD_INT 1
8817: PPUSH
8818: LD_INT 8
8820: PPUSH
8821: CALL_OW 237
// SetSkill ( Kurt , skill_engineering , 4 ) ;
8825: LD_EXP 13
8829: PPUSH
8830: LD_INT 2
8832: PPUSH
8833: LD_INT 4
8835: PPUSH
8836: CALL_OW 237
// SetSkill ( Kurt , skill_mechanical , 3 ) ;
8840: LD_EXP 13
8844: PPUSH
8845: LD_INT 3
8847: PPUSH
8848: LD_INT 3
8850: PPUSH
8851: CALL_OW 237
// SetSkill ( Kurt , skill_scientistic , 5 ) ;
8855: LD_EXP 13
8859: PPUSH
8860: LD_INT 4
8862: PPUSH
8863: LD_INT 5
8865: PPUSH
8866: CALL_OW 237
// end else
8870: GO 8944
// begin Really_Kurt = false ;
8872: LD_ADDR_EXP 205
8876: PUSH
8877: LD_INT 0
8879: ST_TO_ADDR
// hc_sex = sex_male ;
8880: LD_ADDR_OWVAR 27
8884: PUSH
8885: LD_INT 1
8887: ST_TO_ADDR
// hc_class = class_mechanic ;
8888: LD_ADDR_OWVAR 28
8892: PUSH
8893: LD_INT 3
8895: ST_TO_ADDR
// hc_skills = [ 8 , 4 , 3 , 5 ] ;
8896: LD_ADDR_OWVAR 31
8900: PUSH
8901: LD_INT 8
8903: PUSH
8904: LD_INT 4
8906: PUSH
8907: LD_INT 3
8909: PUSH
8910: LD_INT 5
8912: PUSH
8913: EMPTY
8914: LIST
8915: LIST
8916: LIST
8917: LIST
8918: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
8919: LD_ADDR_OWVAR 29
8923: PUSH
8924: LD_INT 10
8926: PUSH
8927: LD_INT 10
8929: PUSH
8930: EMPTY
8931: LIST
8932: LIST
8933: ST_TO_ADDR
// Kurt = CreateHuman ;
8934: LD_ADDR_EXP 13
8938: PUSH
8939: CALL_OW 44
8943: ST_TO_ADDR
// end ; hc_sex = sex_male ;
8944: LD_ADDR_OWVAR 27
8948: PUSH
8949: LD_INT 1
8951: ST_TO_ADDR
// hc_class = class_mechanic ;
8952: LD_ADDR_OWVAR 28
8956: PUSH
8957: LD_INT 3
8959: ST_TO_ADDR
// hc_skills = [ 4 , 2 , 7 , 3 ] ;
8960: LD_ADDR_OWVAR 31
8964: PUSH
8965: LD_INT 4
8967: PUSH
8968: LD_INT 2
8970: PUSH
8971: LD_INT 7
8973: PUSH
8974: LD_INT 3
8976: PUSH
8977: EMPTY
8978: LIST
8979: LIST
8980: LIST
8981: LIST
8982: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
8983: LD_ADDR_OWVAR 29
8987: PUSH
8988: LD_INT 10
8990: PUSH
8991: LD_INT 10
8993: PUSH
8994: EMPTY
8995: LIST
8996: LIST
8997: ST_TO_ADDR
// hc_name = Ali Hadarach ;
8998: LD_ADDR_OWVAR 26
9002: PUSH
9003: LD_STRING Ali Hadarach
9005: ST_TO_ADDR
// Friend = CreateHuman ;
9006: LD_ADDR_EXP 21
9010: PUSH
9011: CALL_OW 44
9015: ST_TO_ADDR
// hc_name =  ;
9016: LD_ADDR_OWVAR 26
9020: PUSH
9021: LD_STRING 
9023: ST_TO_ADDR
// uc_nation = nation_russian ;
9024: LD_ADDR_OWVAR 21
9028: PUSH
9029: LD_INT 3
9031: ST_TO_ADDR
// Kozlov = NewCharacter ( Kozlov ) ;
9032: LD_ADDR_EXP 22
9036: PUSH
9037: LD_STRING Kozlov
9039: PPUSH
9040: CALL_OW 25
9044: ST_TO_ADDR
// if Kozlov then
9045: LD_EXP 22
9049: IFFALSE 9113
// begin SetSkill ( Kozlov , skill_combat , 2 ) ;
9051: LD_EXP 22
9055: PPUSH
9056: LD_INT 1
9058: PPUSH
9059: LD_INT 2
9061: PPUSH
9062: CALL_OW 237
// SetSkill ( Kozlov , skill_engineering , 8 ) ;
9066: LD_EXP 22
9070: PPUSH
9071: LD_INT 2
9073: PPUSH
9074: LD_INT 8
9076: PPUSH
9077: CALL_OW 237
// SetSkill ( Kozlov , skill_mechanical , 3 ) ;
9081: LD_EXP 22
9085: PPUSH
9086: LD_INT 3
9088: PPUSH
9089: LD_INT 3
9091: PPUSH
9092: CALL_OW 237
// SetSkill ( Kozlov , skill_scientistic , 10 ) ;
9096: LD_EXP 22
9100: PPUSH
9101: LD_INT 4
9103: PPUSH
9104: LD_INT 10
9106: PPUSH
9107: CALL_OW 237
// end else
9111: GO 9217
// begin hc_gallery = ru ;
9113: LD_ADDR_OWVAR 33
9117: PUSH
9118: LD_STRING ru
9120: ST_TO_ADDR
// hc_face_number = 34 ;
9121: LD_ADDR_OWVAR 34
9125: PUSH
9126: LD_INT 34
9128: ST_TO_ADDR
// hc_sex = sex_male ;
9129: LD_ADDR_OWVAR 27
9133: PUSH
9134: LD_INT 1
9136: ST_TO_ADDR
// hc_class = class_engineer ;
9137: LD_ADDR_OWVAR 28
9141: PUSH
9142: LD_INT 2
9144: ST_TO_ADDR
// hc_skills = [ 2 , 8 , 3 , 10 ] ;
9145: LD_ADDR_OWVAR 31
9149: PUSH
9150: LD_INT 2
9152: PUSH
9153: LD_INT 8
9155: PUSH
9156: LD_INT 3
9158: PUSH
9159: LD_INT 10
9161: PUSH
9162: EMPTY
9163: LIST
9164: LIST
9165: LIST
9166: LIST
9167: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9168: LD_ADDR_OWVAR 29
9172: PUSH
9173: LD_INT 10
9175: PUSH
9176: LD_INT 10
9178: PUSH
9179: EMPTY
9180: LIST
9181: LIST
9182: ST_TO_ADDR
// hc_name = Nikita S. Kozlov ;
9183: LD_ADDR_OWVAR 26
9187: PUSH
9188: LD_STRING Nikita S. Kozlov
9190: ST_TO_ADDR
// Kozlov = CreateHuman ;
9191: LD_ADDR_EXP 22
9195: PUSH
9196: CALL_OW 44
9200: ST_TO_ADDR
// hc_name =  ;
9201: LD_ADDR_OWVAR 26
9205: PUSH
9206: LD_STRING 
9208: ST_TO_ADDR
// hc_gallery =  ;
9209: LD_ADDR_OWVAR 33
9213: PUSH
9214: LD_STRING 
9216: ST_TO_ADDR
// end ; uc_nation = nation_arabian ;
9217: LD_ADDR_OWVAR 21
9221: PUSH
9222: LD_INT 2
9224: ST_TO_ADDR
// for Un = 1 to Number_of_Arabian_Soldiers do
9225: LD_ADDR_VAR 0 3
9229: PUSH
9230: DOUBLE
9231: LD_INT 1
9233: DEC
9234: ST_TO_ADDR
9235: LD_EXP 89
9239: PUSH
9240: FOR_TO
9241: IFFALSE 9341
// begin if i in [ 1 , 2 , 3 ] then
9243: LD_VAR 0 2
9247: PUSH
9248: LD_INT 1
9250: PUSH
9251: LD_INT 2
9253: PUSH
9254: LD_INT 3
9256: PUSH
9257: EMPTY
9258: LIST
9259: LIST
9260: LIST
9261: IN
9262: IFFALSE 9282
// PrepareSoldier ( sex_male , human_difficulty_skill - 1 ) else
9264: LD_INT 1
9266: PPUSH
9267: LD_EXP 184
9271: PUSH
9272: LD_INT 1
9274: MINUS
9275: PPUSH
9276: CALL_OW 381
9280: GO 9298
// PrepareSoldier ( 0 , human_difficulty_skill - 1 ) ;
9282: LD_INT 0
9284: PPUSH
9285: LD_EXP 184
9289: PUSH
9290: LD_INT 1
9292: MINUS
9293: PPUSH
9294: CALL_OW 381
// New_person = CreateHuman ;
9298: LD_ADDR_VAR 0 7
9302: PUSH
9303: CALL_OW 44
9307: ST_TO_ADDR
// Arabian_soldiers = Arabian_soldiers ^ New_person ;
9308: LD_ADDR_EXP 80
9312: PUSH
9313: LD_EXP 80
9317: PUSH
9318: LD_VAR 0 7
9322: ADD
9323: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ar_b , false ) ;
9324: LD_VAR 0 7
9328: PPUSH
9329: LD_INT 14
9331: PPUSH
9332: LD_INT 0
9334: PPUSH
9335: CALL_OW 49
// end ;
9339: GO 9240
9341: POP
9342: POP
// for Un = 1 to Number_of_Arabian_Engineers do
9343: LD_ADDR_VAR 0 3
9347: PUSH
9348: DOUBLE
9349: LD_INT 1
9351: DEC
9352: ST_TO_ADDR
9353: LD_EXP 92
9357: PUSH
9358: FOR_TO
9359: IFFALSE 9459
// begin PrepareEngineer ( 0 , human_difficulty_skill ) ;
9361: LD_INT 0
9363: PPUSH
9364: LD_EXP 184
9368: PPUSH
9369: CALL_OW 382
// New_person = CreateHuman ;
9373: LD_ADDR_VAR 0 7
9377: PUSH
9378: CALL_OW 44
9382: ST_TO_ADDR
// SetSkill ( New_person , class_engineer , human_difficulty_skill ) ;
9383: LD_VAR 0 7
9387: PPUSH
9388: LD_INT 2
9390: PPUSH
9391: LD_EXP 184
9395: PPUSH
9396: CALL_OW 237
// Arabian_Engineers = Arabian_Engineers ^ New_person ;
9400: LD_ADDR_EXP 81
9404: PUSH
9405: LD_EXP 81
9409: PUSH
9410: LD_VAR 0 7
9414: ADD
9415: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ar_b , false ) ;
9416: LD_VAR 0 7
9420: PPUSH
9421: LD_INT 14
9423: PPUSH
9424: LD_INT 0
9426: PPUSH
9427: CALL_OW 49
// ComEnterUnit ( New_person , ArDep2 ) ;
9431: LD_VAR 0 7
9435: PPUSH
9436: LD_INT 99
9438: PPUSH
9439: CALL_OW 120
// DoNotAttack ( americans1 , New_person ) ;
9443: LD_EXP 177
9447: PPUSH
9448: LD_VAR 0 7
9452: PPUSH
9453: CALL_OW 471
// end ;
9457: GO 9358
9459: POP
9460: POP
// for Un = 1 to Number_of_Arabian_Mechanics do
9461: LD_ADDR_VAR 0 3
9465: PUSH
9466: DOUBLE
9467: LD_INT 1
9469: DEC
9470: ST_TO_ADDR
9471: LD_EXP 91
9475: PUSH
9476: FOR_TO
9477: IFFALSE 9546
// begin PrepareMechanic ( 0 , human_difficulty_skill ) ;
9479: LD_INT 0
9481: PPUSH
9482: LD_EXP 184
9486: PPUSH
9487: CALL_OW 383
// New_person = CreateHuman ;
9491: LD_ADDR_VAR 0 7
9495: PUSH
9496: CALL_OW 44
9500: ST_TO_ADDR
// Arabian_mechanics = Arabian_mechanics ^ New_person ;
9501: LD_ADDR_EXP 83
9505: PUSH
9506: LD_EXP 83
9510: PUSH
9511: LD_VAR 0 7
9515: ADD
9516: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ar_b , false ) ;
9517: LD_VAR 0 7
9521: PPUSH
9522: LD_INT 14
9524: PPUSH
9525: LD_INT 0
9527: PPUSH
9528: CALL_OW 49
// ComEnterUnit ( New_person , ArFact ) ;
9532: LD_VAR 0 7
9536: PPUSH
9537: LD_INT 117
9539: PPUSH
9540: CALL_OW 120
// end ;
9544: GO 9476
9546: POP
9547: POP
// PrepareMechanic ( 0 , human_difficulty_skill ) ;
9548: LD_INT 0
9550: PPUSH
9551: LD_EXP 184
9555: PPUSH
9556: CALL_OW 383
// New_person = CreateHuman ;
9560: LD_ADDR_VAR 0 7
9564: PUSH
9565: CALL_OW 44
9569: ST_TO_ADDR
// Control_Driver = New_person ;
9570: LD_ADDR_EXP 85
9574: PUSH
9575: LD_VAR 0 7
9579: ST_TO_ADDR
// PlaceUnitArea ( Control_Driver , Center_ar_b , false ) ;
9580: LD_EXP 85
9584: PPUSH
9585: LD_INT 14
9587: PPUSH
9588: LD_INT 0
9590: PPUSH
9591: CALL_OW 49
// SetSkill ( Control_Driver , class_mechanic , 3 ) ;
9595: LD_EXP 85
9599: PPUSH
9600: LD_INT 3
9602: PPUSH
9603: LD_INT 3
9605: PPUSH
9606: CALL_OW 237
// RaiseSailEvent ( Link_Bombs ) ;
9610: LD_EXP 175
9614: PPUSH
9615: CALL_OW 427
// for Un = 1 to Number_of_Arabian_Scientists do
9619: LD_ADDR_VAR 0 3
9623: PUSH
9624: DOUBLE
9625: LD_INT 1
9627: DEC
9628: ST_TO_ADDR
9629: LD_EXP 90
9633: PUSH
9634: FOR_TO
9635: IFFALSE 9692
// begin PrepareScientist ( 0 , human_difficulty_skill ) ;
9637: LD_INT 0
9639: PPUSH
9640: LD_EXP 184
9644: PPUSH
9645: CALL_OW 384
// New_person = CreateHuman ;
9649: LD_ADDR_VAR 0 7
9653: PUSH
9654: CALL_OW 44
9658: ST_TO_ADDR
// Arabian_scientists = Arabian_scientists ^ New_person ;
9659: LD_ADDR_EXP 82
9663: PUSH
9664: LD_EXP 82
9668: PUSH
9669: LD_VAR 0 7
9673: ADD
9674: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ar_b , false ) ;
9675: LD_VAR 0 7
9679: PPUSH
9680: LD_INT 14
9682: PPUSH
9683: LD_INT 0
9685: PPUSH
9686: CALL_OW 49
// end ;
9690: GO 9634
9692: POP
9693: POP
// uc_nation = nation_nature ;
9694: LD_ADDR_OWVAR 21
9698: PUSH
9699: LD_INT 0
9701: ST_TO_ADDR
// for Un = 1 to 4 do
9702: LD_ADDR_VAR 0 3
9706: PUSH
9707: DOUBLE
9708: LD_INT 1
9710: DEC
9711: ST_TO_ADDR
9712: LD_INT 4
9714: PUSH
9715: FOR_TO
9716: IFFALSE 9879
// begin PrepareSoldier ( 0 , apeman_difficulty_skill ) ;
9718: LD_INT 0
9720: PPUSH
9721: LD_EXP 185
9725: PPUSH
9726: CALL_OW 381
// hc_class = class_apeman_soldier ;
9730: LD_ADDR_OWVAR 28
9734: PUSH
9735: LD_INT 15
9737: ST_TO_ADDR
// New_person = CreateHuman ;
9738: LD_ADDR_VAR 0 7
9742: PUSH
9743: CALL_OW 44
9747: ST_TO_ADDR
// Arabian_apemens = Arabian_apemens ^ New_person ;
9748: LD_ADDR_EXP 84
9752: PUSH
9753: LD_EXP 84
9757: PUSH
9758: LD_VAR 0 7
9762: ADD
9763: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_ar_b , false ) ;
9764: LD_VAR 0 7
9768: PPUSH
9769: LD_INT 14
9771: PPUSH
9772: LD_INT 0
9774: PPUSH
9775: CALL_OW 49
// case Un of 1 :
9779: LD_VAR 0 3
9783: PUSH
9784: LD_INT 1
9786: DOUBLE
9787: EQUAL
9788: IFTRUE 9792
9790: GO 9807
9792: POP
// ComEnterUnit ( New_person , ArRad1 ) ; 2 :
9793: LD_VAR 0 7
9797: PPUSH
9798: LD_INT 97
9800: PPUSH
9801: CALL_OW 120
9805: GO 9877
9807: LD_INT 2
9809: DOUBLE
9810: EQUAL
9811: IFTRUE 9815
9813: GO 9830
9815: POP
// ComEnterUnit ( New_person , ArRad2 ) ; 3 :
9816: LD_VAR 0 7
9820: PPUSH
9821: LD_INT 88
9823: PPUSH
9824: CALL_OW 120
9828: GO 9877
9830: LD_INT 3
9832: DOUBLE
9833: EQUAL
9834: IFTRUE 9838
9836: GO 9853
9838: POP
// ComEnterUnit ( New_person , ArRad3 ) ; 4 :
9839: LD_VAR 0 7
9843: PPUSH
9844: LD_INT 98
9846: PPUSH
9847: CALL_OW 120
9851: GO 9877
9853: LD_INT 4
9855: DOUBLE
9856: EQUAL
9857: IFTRUE 9861
9859: GO 9876
9861: POP
// ComEnterUnit ( New_person , ArRad4 ) ; end ;
9862: LD_VAR 0 7
9866: PPUSH
9867: LD_INT 127
9869: PPUSH
9870: CALL_OW 120
9874: GO 9877
9876: POP
// end ;
9877: GO 9715
9879: POP
9880: POP
// All_arabians = Arabian_soldiers ^ Arabian_scientists ^ Arabian_apemens ^ Control_Driver ;
9881: LD_ADDR_EXP 79
9885: PUSH
9886: LD_EXP 80
9890: PUSH
9891: LD_EXP 82
9895: ADD
9896: PUSH
9897: LD_EXP 84
9901: ADD
9902: PUSH
9903: LD_EXP 85
9907: ADD
9908: ST_TO_ADDR
// uc_side = alliance ;
9909: LD_ADDR_OWVAR 20
9913: PUSH
9914: LD_EXP 182
9918: ST_TO_ADDR
// uc_nation = nation_american ;
9919: LD_ADDR_OWVAR 21
9923: PUSH
9924: LD_INT 1
9926: ST_TO_ADDR
// Roth = NewCharacter ( Roth ) ;
9927: LD_ADDR_EXP 20
9931: PUSH
9932: LD_STRING Roth
9934: PPUSH
9935: CALL_OW 25
9939: ST_TO_ADDR
// if not Roth then
9940: LD_EXP 20
9944: NOT
9945: IFFALSE 9962
// BuildQuery ( Error: Roth not found!!! , [ OK ] ) else
9947: LD_STRING Error: Roth not found!!!
9949: PPUSH
9950: LD_STRING OK
9952: PUSH
9953: EMPTY
9954: LIST
9955: PPUSH
9956: CALL_OW 99
9960: GO 10007
// begin PlaceUnitArea ( Roth , Center_al_b , false ) ;
9962: LD_EXP 20
9966: PPUSH
9967: LD_INT 15
9969: PPUSH
9970: LD_INT 0
9972: PPUSH
9973: CALL_OW 49
// ComMoveXY ( Roth , 249 , 187 ) ;
9977: LD_EXP 20
9981: PPUSH
9982: LD_INT 249
9984: PPUSH
9985: LD_INT 187
9987: PPUSH
9988: CALL_OW 111
// AddComTurnXY ( Roth , 245 , 187 ) ;
9992: LD_EXP 20
9996: PPUSH
9997: LD_INT 245
9999: PPUSH
10000: LD_INT 187
10002: PPUSH
10003: CALL_OW 178
// end ; Simms = CreateCharacter ( Simms ) ;
10007: LD_ADDR_EXP 16
10011: PUSH
10012: LD_STRING Simms
10014: PPUSH
10015: CALL_OW 34
10019: ST_TO_ADDR
// if not ( Simms ) then
10020: LD_EXP 16
10024: NOT
10025: IFFALSE 10047
// begin PrepareScientist ( sex_female , 7 ) ;
10027: LD_INT 2
10029: PPUSH
10030: LD_INT 7
10032: PPUSH
10033: CALL_OW 384
// Simms = CreateHuman ;
10037: LD_ADDR_EXP 16
10041: PUSH
10042: CALL_OW 44
10046: ST_TO_ADDR
// end ; PlaceUnitArea ( Simms , Center_al_b , false ) ;
10047: LD_EXP 16
10051: PPUSH
10052: LD_INT 15
10054: PPUSH
10055: LD_INT 0
10057: PPUSH
10058: CALL_OW 49
// ComMoveXY ( Simms , 243 , 187 ) ;
10062: LD_EXP 16
10066: PPUSH
10067: LD_INT 243
10069: PPUSH
10070: LD_INT 187
10072: PPUSH
10073: CALL_OW 111
// AddComTurnXY ( Simms , 245 , 187 ) ;
10077: LD_EXP 16
10081: PPUSH
10082: LD_INT 245
10084: PPUSH
10085: LD_INT 187
10087: PPUSH
10088: CALL_OW 178
// uc_side = alliance ;
10092: LD_ADDR_OWVAR 20
10096: PUSH
10097: LD_EXP 182
10101: ST_TO_ADDR
// uc_nation = nation_american ;
10102: LD_ADDR_OWVAR 21
10106: PUSH
10107: LD_INT 1
10109: ST_TO_ADDR
// Alliance_am_soldiers = [ ] ;
10110: LD_ADDR_EXP 95
10114: PUSH
10115: EMPTY
10116: ST_TO_ADDR
// for Un = 1 to Number_of_AllAm_Soldiers do
10117: LD_ADDR_VAR 0 3
10121: PUSH
10122: DOUBLE
10123: LD_INT 1
10125: DEC
10126: ST_TO_ADDR
10127: LD_EXP 103
10131: PUSH
10132: FOR_TO
10133: IFFALSE 10190
// begin PrepareSoldier ( 0 , human_difficulty_skill ) ;
10135: LD_INT 0
10137: PPUSH
10138: LD_EXP 184
10142: PPUSH
10143: CALL_OW 381
// New_person = CreateHuman ;
10147: LD_ADDR_VAR 0 7
10151: PUSH
10152: CALL_OW 44
10156: ST_TO_ADDR
// Alliance_am_soldiers = Alliance_am_soldiers ^ New_person ;
10157: LD_ADDR_EXP 95
10161: PUSH
10162: LD_EXP 95
10166: PUSH
10167: LD_VAR 0 7
10171: ADD
10172: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_al_b , false ) ;
10173: LD_VAR 0 7
10177: PPUSH
10178: LD_INT 15
10180: PPUSH
10181: LD_INT 0
10183: PPUSH
10184: CALL_OW 49
// end ;
10188: GO 10132
10190: POP
10191: POP
// uc_side = alliance ;
10192: LD_ADDR_OWVAR 20
10196: PUSH
10197: LD_EXP 182
10201: ST_TO_ADDR
// uc_nation = nation_american ;
10202: LD_ADDR_OWVAR 21
10206: PUSH
10207: LD_INT 1
10209: ST_TO_ADDR
// Alliance_am_scientists = [ ] ;
10210: LD_ADDR_EXP 97
10214: PUSH
10215: EMPTY
10216: ST_TO_ADDR
// for Un = 1 to Number_of_AllAm_Scientists do
10217: LD_ADDR_VAR 0 3
10221: PUSH
10222: DOUBLE
10223: LD_INT 1
10225: DEC
10226: ST_TO_ADDR
10227: LD_EXP 104
10231: PUSH
10232: FOR_TO
10233: IFFALSE 10290
// begin PrepareScientist ( 0 , human_difficulty_skill ) ;
10235: LD_INT 0
10237: PPUSH
10238: LD_EXP 184
10242: PPUSH
10243: CALL_OW 384
// New_person = CreateHuman ;
10247: LD_ADDR_VAR 0 7
10251: PUSH
10252: CALL_OW 44
10256: ST_TO_ADDR
// Alliance_am_scientists = Alliance_am_scientists ^ New_person ;
10257: LD_ADDR_EXP 97
10261: PUSH
10262: LD_EXP 97
10266: PUSH
10267: LD_VAR 0 7
10271: ADD
10272: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_al_b , false ) ;
10273: LD_VAR 0 7
10277: PPUSH
10278: LD_INT 15
10280: PPUSH
10281: LD_INT 0
10283: PPUSH
10284: CALL_OW 49
// end ;
10288: GO 10232
10290: POP
10291: POP
// uc_side = alliance ;
10292: LD_ADDR_OWVAR 20
10296: PUSH
10297: LD_EXP 182
10301: ST_TO_ADDR
// uc_nation = nation_russian ;
10302: LD_ADDR_OWVAR 21
10306: PUSH
10307: LD_INT 3
10309: ST_TO_ADDR
// Alliance_rus_soldiers = [ ] ;
10310: LD_ADDR_EXP 94
10314: PUSH
10315: EMPTY
10316: ST_TO_ADDR
// for Un = 1 to Number_of_AllRu_Soldiers do
10317: LD_ADDR_VAR 0 3
10321: PUSH
10322: DOUBLE
10323: LD_INT 1
10325: DEC
10326: ST_TO_ADDR
10327: LD_EXP 105
10331: PUSH
10332: FOR_TO
10333: IFFALSE 10390
// begin PrepareSoldier ( 0 , human_difficulty_skill ) ;
10335: LD_INT 0
10337: PPUSH
10338: LD_EXP 184
10342: PPUSH
10343: CALL_OW 381
// New_person = CreateHuman ;
10347: LD_ADDR_VAR 0 7
10351: PUSH
10352: CALL_OW 44
10356: ST_TO_ADDR
// Alliance_rus_soldiers = Alliance_rus_soldiers ^ New_person ;
10357: LD_ADDR_EXP 94
10361: PUSH
10362: LD_EXP 94
10366: PUSH
10367: LD_VAR 0 7
10371: ADD
10372: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_al_b , false ) ;
10373: LD_VAR 0 7
10377: PPUSH
10378: LD_INT 15
10380: PPUSH
10381: LD_INT 0
10383: PPUSH
10384: CALL_OW 49
// end ;
10388: GO 10332
10390: POP
10391: POP
// uc_side = alliance ;
10392: LD_ADDR_OWVAR 20
10396: PUSH
10397: LD_EXP 182
10401: ST_TO_ADDR
// uc_nation = nation_russian ;
10402: LD_ADDR_OWVAR 21
10406: PUSH
10407: LD_INT 3
10409: ST_TO_ADDR
// Alliance_rus_scientists = [ ] ;
10410: LD_ADDR_EXP 96
10414: PUSH
10415: EMPTY
10416: ST_TO_ADDR
// for Un = 1 to Number_of_AllRu_Scientists do
10417: LD_ADDR_VAR 0 3
10421: PUSH
10422: DOUBLE
10423: LD_INT 1
10425: DEC
10426: ST_TO_ADDR
10427: LD_EXP 106
10431: PUSH
10432: FOR_TO
10433: IFFALSE 10490
// begin PrepareScientist ( 0 , human_difficulty_skill ) ;
10435: LD_INT 0
10437: PPUSH
10438: LD_EXP 184
10442: PPUSH
10443: CALL_OW 384
// New_person = CreateHuman ;
10447: LD_ADDR_VAR 0 7
10451: PUSH
10452: CALL_OW 44
10456: ST_TO_ADDR
// Alliance_rus_scientists = Alliance_rus_scientists ^ New_person ;
10457: LD_ADDR_EXP 96
10461: PUSH
10462: LD_EXP 96
10466: PUSH
10467: LD_VAR 0 7
10471: ADD
10472: ST_TO_ADDR
// PlaceUnitArea ( New_person , Center_al_b , false ) ;
10473: LD_VAR 0 7
10477: PPUSH
10478: LD_INT 15
10480: PPUSH
10481: LD_INT 0
10483: PPUSH
10484: CALL_OW 49
// end ;
10488: GO 10432
10490: POP
10491: POP
// uc_side = russians1 ;
10492: LD_ADDR_OWVAR 20
10496: PUSH
10497: LD_EXP 179
10501: ST_TO_ADDR
// uc_nation = nation_russian ;
10502: LD_ADDR_OWVAR 21
10506: PUSH
10507: LD_INT 3
10509: ST_TO_ADDR
// Vsevolod = NewCharacter ( Vsevolod ) ;
10510: LD_ADDR_EXP 25
10514: PUSH
10515: LD_STRING Vsevolod
10517: PPUSH
10518: CALL_OW 25
10522: ST_TO_ADDR
// if Vsevolod then
10523: LD_EXP 25
10527: IFFALSE 10603
// begin SetSkill ( Vsevolod , skill_combat , 6 ) ;
10529: LD_EXP 25
10533: PPUSH
10534: LD_INT 1
10536: PPUSH
10537: LD_INT 6
10539: PPUSH
10540: CALL_OW 237
// SetSkill ( Vsevolod , skill_engineering , 4 ) ;
10544: LD_EXP 25
10548: PPUSH
10549: LD_INT 2
10551: PPUSH
10552: LD_INT 4
10554: PPUSH
10555: CALL_OW 237
// SetSkill ( Vsevolod , skill_mechanical , 10 ) ;
10559: LD_EXP 25
10563: PPUSH
10564: LD_INT 3
10566: PPUSH
10567: LD_INT 10
10569: PPUSH
10570: CALL_OW 237
// SetSkill ( Vsevolod , skill_scientistic , 2 ) ;
10574: LD_EXP 25
10578: PPUSH
10579: LD_INT 4
10581: PPUSH
10582: LD_INT 2
10584: PPUSH
10585: CALL_OW 237
// SetClass ( Vsevolod , class_mechanic ) ;
10589: LD_EXP 25
10593: PPUSH
10594: LD_INT 3
10596: PPUSH
10597: CALL_OW 336
// end else
10601: GO 10691
// begin hc_sex = sex_male ;
10603: LD_ADDR_OWVAR 27
10607: PUSH
10608: LD_INT 1
10610: ST_TO_ADDR
// hc_class = class_mechanic ;
10611: LD_ADDR_OWVAR 28
10615: PUSH
10616: LD_INT 3
10618: ST_TO_ADDR
// hc_skills = [ 6 , 4 , 10 , 2 ] ;
10619: LD_ADDR_OWVAR 31
10623: PUSH
10624: LD_INT 6
10626: PUSH
10627: LD_INT 4
10629: PUSH
10630: LD_INT 10
10632: PUSH
10633: LD_INT 2
10635: PUSH
10636: EMPTY
10637: LIST
10638: LIST
10639: LIST
10640: LIST
10641: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
10642: LD_ADDR_OWVAR 29
10646: PUSH
10647: LD_INT 10
10649: PUSH
10650: LD_INT 10
10652: PUSH
10653: EMPTY
10654: LIST
10655: LIST
10656: ST_TO_ADDR
// hc_name = Vsevolod I. Gorki ;
10657: LD_ADDR_OWVAR 26
10661: PUSH
10662: LD_STRING Vsevolod I. Gorki
10664: ST_TO_ADDR
// Vsevolod = CreateHuman ;
10665: LD_ADDR_EXP 25
10669: PUSH
10670: CALL_OW 44
10674: ST_TO_ADDR
// hc_name =  ;
10675: LD_ADDR_OWVAR 26
10679: PUSH
10680: LD_STRING 
10682: ST_TO_ADDR
// hc_gallery =  ;
10683: LD_ADDR_OWVAR 33
10687: PUSH
10688: LD_STRING 
10690: ST_TO_ADDR
// end ; RevealFogArea ( americans , way ) ;
10691: LD_EXP 176
10695: PPUSH
10696: LD_INT 22
10698: PPUSH
10699: CALL_OW 332
// uc_side = americans ;
10703: LD_ADDR_OWVAR 20
10707: PUSH
10708: LD_EXP 176
10712: ST_TO_ADDR
// uc_nation = nation_american ;
10713: LD_ADDR_OWVAR 21
10717: PUSH
10718: LD_INT 1
10720: ST_TO_ADDR
// uc_direction = 0 ;
10721: LD_ADDR_OWVAR 24
10725: PUSH
10726: LD_INT 0
10728: ST_TO_ADDR
// if Initial_JMM_vehicle <> 0 then
10729: LD_EXP 39
10733: PUSH
10734: LD_INT 0
10736: NONEQUAL
10737: IFFALSE 10797
// begin vc_chassis = Initial_JMM_vehicle [ 1 ] ;
10739: LD_ADDR_OWVAR 37
10743: PUSH
10744: LD_EXP 39
10748: PUSH
10749: LD_INT 1
10751: ARRAY
10752: ST_TO_ADDR
// vc_engine = Initial_JMM_vehicle [ 2 ] ;
10753: LD_ADDR_OWVAR 39
10757: PUSH
10758: LD_EXP 39
10762: PUSH
10763: LD_INT 2
10765: ARRAY
10766: ST_TO_ADDR
// vc_control = Initial_JMM_vehicle [ 3 ] ;
10767: LD_ADDR_OWVAR 38
10771: PUSH
10772: LD_EXP 39
10776: PUSH
10777: LD_INT 3
10779: ARRAY
10780: ST_TO_ADDR
// vc_weapon = Initial_JMM_vehicle [ 4 ] ;
10781: LD_ADDR_OWVAR 40
10785: PUSH
10786: LD_EXP 39
10790: PUSH
10791: LD_INT 4
10793: ARRAY
10794: ST_TO_ADDR
// end else
10795: GO 10829
// begin vc_chassis = us_medium_tracked ;
10797: LD_ADDR_OWVAR 37
10801: PUSH
10802: LD_INT 3
10804: ST_TO_ADDR
// vc_engine = engine_siberite ;
10805: LD_ADDR_OWVAR 39
10809: PUSH
10810: LD_INT 3
10812: ST_TO_ADDR
// vc_control = control_manual ;
10813: LD_ADDR_OWVAR 38
10817: PUSH
10818: LD_INT 1
10820: ST_TO_ADDR
// vc_weapon = us_light_gun ;
10821: LD_ADDR_OWVAR 40
10825: PUSH
10826: LD_INT 3
10828: ST_TO_ADDR
// end ; JMM_veh = CreateVehicle ;
10829: LD_ADDR_EXP 57
10833: PUSH
10834: CALL_OW 45
10838: ST_TO_ADDR
// SetFuel ( Jmm_veh , 100 ) ;
10839: LD_EXP 57
10843: PPUSH
10844: LD_INT 100
10846: PPUSH
10847: CALL_OW 240
// PlaceHumanInUnit ( JMM , JMM_veh ) ;
10851: LD_EXP 1
10855: PPUSH
10856: LD_EXP 57
10860: PPUSH
10861: CALL_OW 52
// PlaceUnitXY ( JMM_veh , 100 , 151 , false ) ;
10865: LD_EXP 57
10869: PPUSH
10870: LD_INT 100
10872: PPUSH
10873: LD_INT 151
10875: PPUSH
10876: LD_INT 0
10878: PPUSH
10879: CALL_OW 48
// if woman_alive then
10883: LD_EXP 38
10887: IFFALSE 10922
// JMM_woman = [ Joan , Lisa , Coonie ] [ Woman_in_am14 ] else
10889: LD_ADDR_EXP 37
10893: PUSH
10894: LD_EXP 12
10898: PUSH
10899: LD_EXP 5
10903: PUSH
10904: LD_EXP 18
10908: PUSH
10909: EMPTY
10910: LIST
10911: LIST
10912: LIST
10913: PUSH
10914: LD_EXP 36
10918: ARRAY
10919: ST_TO_ADDR
10920: GO 10930
// JMM_Woman = 0 ;
10922: LD_ADDR_EXP 37
10926: PUSH
10927: LD_INT 0
10929: ST_TO_ADDR
// if woman_saved then
10930: LD_EXP 34
10934: IFFALSE 11104
// begin if Initial_Woman_vehicle <> 0 then
10936: LD_EXP 40
10940: PUSH
10941: LD_INT 0
10943: NONEQUAL
10944: IFFALSE 11004
// begin vc_chassis = Initial_Woman_vehicle [ 1 ] ;
10946: LD_ADDR_OWVAR 37
10950: PUSH
10951: LD_EXP 40
10955: PUSH
10956: LD_INT 1
10958: ARRAY
10959: ST_TO_ADDR
// vc_engine = Initial_Woman_vehicle [ 2 ] ;
10960: LD_ADDR_OWVAR 39
10964: PUSH
10965: LD_EXP 40
10969: PUSH
10970: LD_INT 2
10972: ARRAY
10973: ST_TO_ADDR
// vc_control = Initial_Woman_vehicle [ 3 ] ;
10974: LD_ADDR_OWVAR 38
10978: PUSH
10979: LD_EXP 40
10983: PUSH
10984: LD_INT 3
10986: ARRAY
10987: ST_TO_ADDR
// vc_weapon = Initial_Woman_vehicle [ 4 ] ;
10988: LD_ADDR_OWVAR 40
10992: PUSH
10993: LD_EXP 40
10997: PUSH
10998: LD_INT 4
11000: ARRAY
11001: ST_TO_ADDR
// end else
11002: GO 11036
// begin vc_chassis = us_medium_tracked ;
11004: LD_ADDR_OWVAR 37
11008: PUSH
11009: LD_INT 3
11011: ST_TO_ADDR
// vc_engine = engine_siberite ;
11012: LD_ADDR_OWVAR 39
11016: PUSH
11017: LD_INT 3
11019: ST_TO_ADDR
// vc_control = control_manual ;
11020: LD_ADDR_OWVAR 38
11024: PUSH
11025: LD_INT 1
11027: ST_TO_ADDR
// vc_weapon = us_light_gun ;
11028: LD_ADDR_OWVAR 40
11032: PUSH
11033: LD_INT 3
11035: ST_TO_ADDR
// end ; Woman_veh = CreateVehicle ;
11036: LD_ADDR_EXP 58
11040: PUSH
11041: CALL_OW 45
11045: ST_TO_ADDR
// SetFuel ( Woman_veh , 100 ) ;
11046: LD_EXP 58
11050: PPUSH
11051: LD_INT 100
11053: PPUSH
11054: CALL_OW 240
// SetSide ( JMM_woman , americans ) ;
11058: LD_EXP 37
11062: PPUSH
11063: LD_EXP 176
11067: PPUSH
11068: CALL_OW 235
// PlaceUnitXY ( Woman_veh , 101 , 156 , false ) ;
11072: LD_EXP 58
11076: PPUSH
11077: LD_INT 101
11079: PPUSH
11080: LD_INT 156
11082: PPUSH
11083: LD_INT 0
11085: PPUSH
11086: CALL_OW 48
// PlaceHumanInUnit ( JMM_woman , Woman_veh ) ;
11090: LD_EXP 37
11094: PPUSH
11095: LD_EXP 58
11099: PPUSH
11100: CALL_OW 52
// end ; end ;
11104: LD_VAR 0 1
11108: RET
// function Set_marks ; begin
11109: LD_INT 0
11111: PPUSH
// end ;
11112: LD_VAR 0 1
11116: RET
// function Set_attitudes ; begin
11117: LD_INT 0
11119: PPUSH
// SetAttitude ( americans , americans1 , att_friend , true ) ;
11120: LD_EXP 176
11124: PPUSH
11125: LD_EXP 177
11129: PPUSH
11130: LD_INT 1
11132: PPUSH
11133: LD_INT 1
11135: PPUSH
11136: CALL_OW 80
// SetAttitude ( russians , russians1 , att_friend , true ) ;
11140: LD_EXP 178
11144: PPUSH
11145: LD_EXP 179
11149: PPUSH
11150: LD_INT 1
11152: PPUSH
11153: LD_INT 1
11155: PPUSH
11156: CALL_OW 80
// SetAttitude ( arabians , arabians1 , att_friend , true ) ;
11160: LD_EXP 180
11164: PPUSH
11165: LD_EXP 181
11169: PPUSH
11170: LD_INT 1
11172: PPUSH
11173: LD_INT 1
11175: PPUSH
11176: CALL_OW 80
// SetAttitude ( arabians , russians , att_neutral , true ) ;
11180: LD_EXP 180
11184: PPUSH
11185: LD_EXP 178
11189: PPUSH
11190: LD_INT 0
11192: PPUSH
11193: LD_INT 1
11195: PPUSH
11196: CALL_OW 80
// SetAttitude ( arabians , russians1 , att_neutral , true ) ;
11200: LD_EXP 180
11204: PPUSH
11205: LD_EXP 179
11209: PPUSH
11210: LD_INT 0
11212: PPUSH
11213: LD_INT 1
11215: PPUSH
11216: CALL_OW 80
// SetAttitude ( arabians , alliance , att_neutral , true ) ;
11220: LD_EXP 180
11224: PPUSH
11225: LD_EXP 182
11229: PPUSH
11230: LD_INT 0
11232: PPUSH
11233: LD_INT 1
11235: PPUSH
11236: CALL_OW 80
// SetAttitude ( russians , alliance , att_neutral , true ) ;
11240: LD_EXP 178
11244: PPUSH
11245: LD_EXP 182
11249: PPUSH
11250: LD_INT 0
11252: PPUSH
11253: LD_INT 1
11255: PPUSH
11256: CALL_OW 80
// SetAttitude ( russians1 , alliance , att_neutral , true ) ;
11260: LD_EXP 179
11264: PPUSH
11265: LD_EXP 182
11269: PPUSH
11270: LD_INT 0
11272: PPUSH
11273: LD_INT 1
11275: PPUSH
11276: CALL_OW 80
// SetAttitude ( americans , russians , att_enemy , true ) ;
11280: LD_EXP 176
11284: PPUSH
11285: LD_EXP 178
11289: PPUSH
11290: LD_INT 2
11292: PPUSH
11293: LD_INT 1
11295: PPUSH
11296: CALL_OW 80
// SetAttitude ( americans , arabians , att_enemy , true ) ;
11300: LD_EXP 176
11304: PPUSH
11305: LD_EXP 180
11309: PPUSH
11310: LD_INT 2
11312: PPUSH
11313: LD_INT 1
11315: PPUSH
11316: CALL_OW 80
// SetAttitude ( americans , alliance , att_enemy , true ) ;
11320: LD_EXP 176
11324: PPUSH
11325: LD_EXP 182
11329: PPUSH
11330: LD_INT 2
11332: PPUSH
11333: LD_INT 1
11335: PPUSH
11336: CALL_OW 80
// SetAttitude ( americans1 , russians , att_enemy , true ) ;
11340: LD_EXP 177
11344: PPUSH
11345: LD_EXP 178
11349: PPUSH
11350: LD_INT 2
11352: PPUSH
11353: LD_INT 1
11355: PPUSH
11356: CALL_OW 80
// SetAttitude ( americans1 , arabians , att_enemy , true ) ;
11360: LD_EXP 177
11364: PPUSH
11365: LD_EXP 180
11369: PPUSH
11370: LD_INT 2
11372: PPUSH
11373: LD_INT 1
11375: PPUSH
11376: CALL_OW 80
// SetAttitude ( americans1 , alliance , att_friend , true ) ;
11380: LD_EXP 177
11384: PPUSH
11385: LD_EXP 182
11389: PPUSH
11390: LD_INT 1
11392: PPUSH
11393: LD_INT 1
11395: PPUSH
11396: CALL_OW 80
// SetAttitude ( Explorers_side , alliance , att_friend , true ) ;
11400: LD_EXP 183
11404: PPUSH
11405: LD_EXP 182
11409: PPUSH
11410: LD_INT 1
11412: PPUSH
11413: LD_INT 1
11415: PPUSH
11416: CALL_OW 80
// SetAttitude ( Explorers_Side , americans , att_friend , false ) ;
11420: LD_EXP 183
11424: PPUSH
11425: LD_EXP 176
11429: PPUSH
11430: LD_INT 1
11432: PPUSH
11433: LD_INT 0
11435: PPUSH
11436: CALL_OW 80
// SetAttitude ( americans , Explorers_side , att_neutral , false ) ;
11440: LD_EXP 176
11444: PPUSH
11445: LD_EXP 183
11449: PPUSH
11450: LD_INT 0
11452: PPUSH
11453: LD_INT 0
11455: PPUSH
11456: CALL_OW 80
// SetAttitude ( Explorers_side , russians , att_neutral , true ) ;
11460: LD_EXP 183
11464: PPUSH
11465: LD_EXP 178
11469: PPUSH
11470: LD_INT 0
11472: PPUSH
11473: LD_INT 1
11475: PPUSH
11476: CALL_OW 80
// SetAttitude ( Explorers_side , russians1 , att_neutral , true ) ;
11480: LD_EXP 183
11484: PPUSH
11485: LD_EXP 179
11489: PPUSH
11490: LD_INT 0
11492: PPUSH
11493: LD_INT 1
11495: PPUSH
11496: CALL_OW 80
// SetAttitude ( Explorers_side , arabians , att_neutral , true ) ;
11500: LD_EXP 183
11504: PPUSH
11505: LD_EXP 180
11509: PPUSH
11510: LD_INT 0
11512: PPUSH
11513: LD_INT 1
11515: PPUSH
11516: CALL_OW 80
// end ;
11520: LD_VAR 0 1
11524: RET
// function Send_units_to_initial_position ; begin
11525: LD_INT 0
11527: PPUSH
// end ;
11528: LD_VAR 0 1
11532: RET
// function Init ; begin
11533: LD_INT 0
11535: PPUSH
// RandomizeAll ;
11536: CALL_OW 11
// Set_variables ;
11540: CALL 0 0 0
// Prepare_difficulty ;
11544: CALL 3937 0 0
// Set_marks ;
11548: CALL 11109 0 0
// Set_attitudes ;
11552: CALL 11117 0 0
// Prepare_characters ;
11556: CALL 6133 0 0
// Send_units_to_initial_position ;
11560: CALL 11525 0 0
// end ;
11564: LD_VAR 0 1
11568: RET
// starting begin CenterNowOnXY ( 123 , 190 ) ;
11569: LD_INT 123
11571: PPUSH
11572: LD_INT 190
11574: PPUSH
11575: CALL_OW 86
// Debug_Constant = false ;
11579: LD_ADDR_EXP 195
11583: PUSH
11584: LD_INT 0
11586: ST_TO_ADDR
// InGameOn ;
11587: CALL_OW 8
// Init ;
11591: CALL 11533 0 0
// CenterJMM = true ;
11595: LD_ADDR_EXP 68
11599: PUSH
11600: LD_INT 1
11602: ST_TO_ADDR
// end ; end_of_file
11603: END
// function FirstTalk ; var list_of_q , selection , V ; begin
11604: LD_INT 0
11606: PPUSH
11607: PPUSH
11608: PPUSH
11609: PPUSH
// RaiseSailEvent ( Run_JMM_Vehicles ) ;
11610: LD_EXP 169
11614: PPUSH
11615: CALL_OW 427
// if kappa_delayed then
11619: LD_EXP 35
11623: IFFALSE 11847
// begin Say ( JMM , D1T-JMM-1 ) ;
11625: LD_EXP 1
11629: PPUSH
11630: LD_STRING D1T-JMM-1
11632: PPUSH
11633: CALL_OW 88
// Say ( Powell , D1T-Pow-1 ) ;
11637: LD_EXP 2
11641: PPUSH
11642: LD_STRING D1T-Pow-1
11644: PPUSH
11645: CALL_OW 88
// if kappa_saved then
11649: LD_EXP 33
11653: IFFALSE 11681
// begin Say ( JMM , D1T-JMM-2 ) ;
11655: LD_EXP 1
11659: PPUSH
11660: LD_STRING D1T-JMM-2
11662: PPUSH
11663: CALL_OW 88
// Say ( Powell , D1T-Pow-2 ) ;
11667: LD_EXP 2
11671: PPUSH
11672: LD_STRING D1T-Pow-2
11674: PPUSH
11675: CALL_OW 88
// end else
11679: GO 11845
// if not ( kappa_saved ) and Woman_saved then
11681: LD_EXP 33
11685: NOT
11686: PUSH
11687: LD_EXP 34
11691: AND
11692: IFFALSE 11807
// begin Say ( JMM , D1T-JMM-3 ) ;
11694: LD_EXP 1
11698: PPUSH
11699: LD_STRING D1T-JMM-3
11701: PPUSH
11702: CALL_OW 88
// Say ( Powell , D1T-Pow-3 ) ;
11706: LD_EXP 2
11710: PPUSH
11711: LD_STRING D1T-Pow-3
11713: PPUSH
11714: CALL_OW 88
// case Woman_in_am14 of 1 :
11718: LD_EXP 36
11722: PUSH
11723: LD_INT 1
11725: DOUBLE
11726: EQUAL
11727: IFTRUE 11731
11729: GO 11746
11731: POP
// Say ( Joan , D1T-Joan-3 ) ; 2 :
11732: LD_EXP 12
11736: PPUSH
11737: LD_STRING D1T-Joan-3
11739: PPUSH
11740: CALL_OW 88
11744: GO 11793
11746: LD_INT 2
11748: DOUBLE
11749: EQUAL
11750: IFTRUE 11754
11752: GO 11769
11754: POP
// Say ( Lisa , D1T-Lisa-3 ) ; 3 :
11755: LD_EXP 5
11759: PPUSH
11760: LD_STRING D1T-Lisa-3
11762: PPUSH
11763: CALL_OW 88
11767: GO 11793
11769: LD_INT 3
11771: DOUBLE
11772: EQUAL
11773: IFTRUE 11777
11775: GO 11792
11777: POP
// Say ( Coonie , D1T-Con-3 ) ; end ;
11778: LD_EXP 18
11782: PPUSH
11783: LD_STRING D1T-Con-3
11785: PPUSH
11786: CALL_OW 88
11790: GO 11793
11792: POP
// Say ( Powell , D1T-Pow-4 ) ;
11793: LD_EXP 2
11797: PPUSH
11798: LD_STRING D1T-Pow-4
11800: PPUSH
11801: CALL_OW 88
// end else
11805: GO 11845
// if not ( kappa_saved ) and not ( Woman_saved ) then
11807: LD_EXP 33
11811: NOT
11812: PUSH
11813: LD_EXP 34
11817: NOT
11818: AND
11819: IFFALSE 11845
// begin Say ( JMM , D1T-JMM-4 ) ;
11821: LD_EXP 1
11825: PPUSH
11826: LD_STRING D1T-JMM-4
11828: PPUSH
11829: CALL_OW 88
// Say ( Powell , D1T-Pow-5 ) ;
11833: LD_EXP 2
11837: PPUSH
11838: LD_STRING D1T-Pow-5
11840: PPUSH
11841: CALL_OW 88
// end ; end else
11845: GO 11871
// begin Say ( JMM , D1nT-JMM-1 ) ;
11847: LD_EXP 1
11851: PPUSH
11852: LD_STRING D1nT-JMM-1
11854: PPUSH
11855: CALL_OW 88
// Say ( Powell , D1nT-Pow-1 ) ;
11859: LD_EXP 2
11863: PPUSH
11864: LD_STRING D1nT-Pow-1
11866: PPUSH
11867: CALL_OW 88
// end ; Say ( JMM , D1-JMM-1 ) ;
11871: LD_EXP 1
11875: PPUSH
11876: LD_STRING D1-JMM-1
11878: PPUSH
11879: CALL_OW 88
// Say ( Powell , D1-Pow-1 ) ;
11883: LD_EXP 2
11887: PPUSH
11888: LD_STRING D1-Pow-1
11890: PPUSH
11891: CALL_OW 88
// Say ( JMM , D1-JMM-2 ) ;
11895: LD_EXP 1
11899: PPUSH
11900: LD_STRING D1-JMM-2
11902: PPUSH
11903: CALL_OW 88
// CenterJMM = false ;
11907: LD_ADDR_EXP 68
11911: PUSH
11912: LD_INT 0
11914: ST_TO_ADDR
// if not ( Skip ) then
11915: LD_EXP 186
11919: NOT
11920: IFFALSE 11931
// RaiseSailEvent ( Map_am_base ) ;
11922: LD_EXP 161
11926: PPUSH
11927: CALL_OW 427
// Say ( Powell , D1-Pow-2 ) ;
11931: LD_EXP 2
11935: PPUSH
11936: LD_STRING D1-Pow-2
11938: PPUSH
11939: CALL_OW 88
// Say ( JMM , D1-JMM-3 ) ;
11943: LD_EXP 1
11947: PPUSH
11948: LD_STRING D1-JMM-3
11950: PPUSH
11951: CALL_OW 88
// Say ( Powell , D1-Pow-3 ) ;
11955: LD_EXP 2
11959: PPUSH
11960: LD_STRING D1-Pow-3
11962: PPUSH
11963: CALL_OW 88
// Say ( JMM , D1-JMM-4 ) ;
11967: LD_EXP 1
11971: PPUSH
11972: LD_STRING D1-JMM-4
11974: PPUSH
11975: CALL_OW 88
// Say ( Powell , D1-Pow-4 ) ;
11979: LD_EXP 2
11983: PPUSH
11984: LD_STRING D1-Pow-4
11986: PPUSH
11987: CALL_OW 88
// Say ( JMM , D1-JMM-5 ) ;
11991: LD_EXP 1
11995: PPUSH
11996: LD_STRING D1-JMM-5
11998: PPUSH
11999: CALL_OW 88
// CenterJMM = false ;
12003: LD_ADDR_EXP 68
12007: PUSH
12008: LD_INT 0
12010: ST_TO_ADDR
// if not ( Skip ) then
12011: LD_EXP 186
12015: NOT
12016: IFFALSE 12027
// RaiseSailEvent ( Map_rus_attack ) ;
12018: LD_EXP 162
12022: PPUSH
12023: CALL_OW 427
// Say ( Powell , D1-Pow-5 ) ;
12027: LD_EXP 2
12031: PPUSH
12032: LD_STRING D1-Pow-5
12034: PPUSH
12035: CALL_OW 88
// if not ( Skip ) then
12039: LD_EXP 186
12043: NOT
12044: IFFALSE 12211
// begin list_of_q = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
12046: LD_ADDR_VAR 0 2
12050: PUSH
12051: LD_INT 1
12053: PUSH
12054: LD_INT 2
12056: PUSH
12057: LD_INT 3
12059: PUSH
12060: LD_INT 4
12062: PUSH
12063: LD_INT 5
12065: PUSH
12066: LD_INT 6
12068: PUSH
12069: EMPTY
12070: LIST
12071: LIST
12072: LIST
12073: LIST
12074: LIST
12075: LIST
12076: ST_TO_ADDR
// repeat selection = SelectiveQuery ( Q1 , list_of_q ) ;
12077: LD_ADDR_VAR 0 3
12081: PUSH
12082: LD_STRING Q1
12084: PPUSH
12085: LD_VAR 0 2
12089: PPUSH
12090: CALL_OW 98
12094: ST_TO_ADDR
// list_of_q = list_of_q diff selection ;
12095: LD_ADDR_VAR 0 2
12099: PUSH
12100: LD_VAR 0 2
12104: PUSH
12105: LD_VAR 0 3
12109: DIFF
12110: ST_TO_ADDR
// ResolveQuery ( selection , list_of_q ) ;
12111: LD_VAR 0 3
12115: PPUSH
12116: LD_VAR 0 2
12120: PPUSH
12121: CALL 12216 0 2
// until ( selection in [ 5 , 6 ] ) or list_of_q = 2 ;
12125: LD_VAR 0 3
12129: PUSH
12130: LD_INT 5
12132: PUSH
12133: LD_INT 6
12135: PUSH
12136: EMPTY
12137: LIST
12138: LIST
12139: IN
12140: PUSH
12141: LD_VAR 0 2
12145: PUSH
12146: LD_INT 2
12148: EQUAL
12149: OR
12150: IFFALSE 12077
// if not ( selection in [ 5 , 6 ] ) then
12152: LD_VAR 0 3
12156: PUSH
12157: LD_INT 5
12159: PUSH
12160: LD_INT 6
12162: PUSH
12163: EMPTY
12164: LIST
12165: LIST
12166: IN
12167: NOT
12168: IFFALSE 12211
// begin selection = SelectiveQuery ( Q1a , [ 1 , 2 ] ) ;
12170: LD_ADDR_VAR 0 3
12174: PUSH
12175: LD_STRING Q1a
12177: PPUSH
12178: LD_INT 1
12180: PUSH
12181: LD_INT 2
12183: PUSH
12184: EMPTY
12185: LIST
12186: LIST
12187: PPUSH
12188: CALL_OW 98
12192: ST_TO_ADDR
// ResolveQuery ( selection + 4 , list_of_q ) ;
12193: LD_VAR 0 3
12197: PUSH
12198: LD_INT 4
12200: PLUS
12201: PPUSH
12202: LD_VAR 0 2
12206: PPUSH
12207: CALL 12216 0 2
// end ; end ; end ;
12211: LD_VAR 0 1
12215: RET
// function ResolveQuery ( question , list_of_q ) ; begin
12216: LD_INT 0
12218: PPUSH
// case question of 1 :
12219: LD_VAR 0 1
12223: PUSH
12224: LD_INT 1
12226: DOUBLE
12227: EQUAL
12228: IFTRUE 12232
12230: GO 12283
12232: POP
// begin Say ( JMM , D2Mot-JMM-1 ) ;
12233: LD_EXP 1
12237: PPUSH
12238: LD_STRING D2Mot-JMM-1
12240: PPUSH
12241: CALL_OW 88
// Say ( Powell , D2Mot-Pow-1 ) ;
12245: LD_EXP 2
12249: PPUSH
12250: LD_STRING D2Mot-Pow-1
12252: PPUSH
12253: CALL_OW 88
// Say ( JMM , D2Mot-JMM-2 ) ;
12257: LD_EXP 1
12261: PPUSH
12262: LD_STRING D2Mot-JMM-2
12264: PPUSH
12265: CALL_OW 88
// Say ( Powell , D2Mot-Pow-2 ) ;
12269: LD_EXP 2
12273: PPUSH
12274: LD_STRING D2Mot-Pow-2
12276: PPUSH
12277: CALL_OW 88
// end ; 2 :
12281: GO 12634
12283: LD_INT 2
12285: DOUBLE
12286: EQUAL
12287: IFTRUE 12291
12289: GO 12367
12291: POP
// begin Say ( JMM , D2Rus-JMM-1 ) ;
12292: LD_EXP 1
12296: PPUSH
12297: LD_STRING D2Rus-JMM-1
12299: PPUSH
12300: CALL_OW 88
// Say ( Powell , D2Rus-Pow-1 ) ;
12304: LD_EXP 2
12308: PPUSH
12309: LD_STRING D2Rus-Pow-1
12311: PPUSH
12312: CALL_OW 88
// Say ( JMM , D2Rus-JMM-2 ) ;
12316: LD_EXP 1
12320: PPUSH
12321: LD_STRING D2Rus-JMM-2
12323: PPUSH
12324: CALL_OW 88
// if not ( 3 in list_of_q ) then
12328: LD_INT 3
12330: PUSH
12331: LD_VAR 0 2
12335: IN
12336: NOT
12337: IFFALSE 12353
// Say ( Powell , D2Rus-Pow-2 ) else
12339: LD_EXP 2
12343: PPUSH
12344: LD_STRING D2Rus-Pow-2
12346: PPUSH
12347: CALL_OW 88
12351: GO 12365
// Say ( Powell , D2Rus-Pow-2a ) ;
12353: LD_EXP 2
12357: PPUSH
12358: LD_STRING D2Rus-Pow-2a
12360: PPUSH
12361: CALL_OW 88
// end ; 3 :
12365: GO 12634
12367: LD_INT 3
12369: DOUBLE
12370: EQUAL
12371: IFTRUE 12375
12373: GO 12468
12375: POP
// begin Say ( JMM , D2Leg-JMM-1 ) ;
12376: LD_EXP 1
12380: PPUSH
12381: LD_STRING D2Leg-JMM-1
12383: PPUSH
12384: CALL_OW 88
// Say ( Powell , D2Leg-Pow-1 ) ;
12388: LD_EXP 2
12392: PPUSH
12393: LD_STRING D2Leg-Pow-1
12395: PPUSH
12396: CALL_OW 88
// if ( 2 in list_of_q ) then
12400: LD_INT 2
12402: PUSH
12403: LD_VAR 0 2
12407: IN
12408: IFFALSE 12434
// begin Say ( JMM , D2Leg-JMM-2 ) ;
12410: LD_EXP 1
12414: PPUSH
12415: LD_STRING D2Leg-JMM-2
12417: PPUSH
12418: CALL_OW 88
// Say ( Powell , D2Leg-Pow-2 ) ;
12422: LD_EXP 2
12426: PPUSH
12427: LD_STRING D2Leg-Pow-2
12429: PPUSH
12430: CALL_OW 88
// end ; Say ( JMM , D2Leg-JMM-3 ) ;
12434: LD_EXP 1
12438: PPUSH
12439: LD_STRING D2Leg-JMM-3
12441: PPUSH
12442: CALL_OW 88
// Say ( Powell , D2Leg-Pow-3 ) ;
12446: LD_EXP 2
12450: PPUSH
12451: LD_STRING D2Leg-Pow-3
12453: PPUSH
12454: CALL_OW 88
// Add_Legion_Objectives = true ;
12458: LD_ADDR_EXP 230
12462: PUSH
12463: LD_INT 1
12465: ST_TO_ADDR
// end ; 4 :
12466: GO 12634
12468: LD_INT 4
12470: DOUBLE
12471: EQUAL
12472: IFTRUE 12476
12474: GO 12551
12476: POP
// begin Say ( JMM , D2Ar-JMM-1 ) ;
12477: LD_EXP 1
12481: PPUSH
12482: LD_STRING D2Ar-JMM-1
12484: PPUSH
12485: CALL_OW 88
// Say ( Powell , D2Ar-Pow-1 ) ;
12489: LD_EXP 2
12493: PPUSH
12494: LD_STRING D2Ar-Pow-1
12496: PPUSH
12497: CALL_OW 88
// Say ( JMM , D2Ar-JMM-2 ) ;
12501: LD_EXP 1
12505: PPUSH
12506: LD_STRING D2Ar-JMM-2
12508: PPUSH
12509: CALL_OW 88
// Say ( Powell , D2Ar-Pow-2 ) ;
12513: LD_EXP 2
12517: PPUSH
12518: LD_STRING D2Ar-Pow-2
12520: PPUSH
12521: CALL_OW 88
// Say ( JMM , D2Ar-JMM-3 ) ;
12525: LD_EXP 1
12529: PPUSH
12530: LD_STRING D2Ar-JMM-3
12532: PPUSH
12533: CALL_OW 88
// Say ( Powell , D2Ar-Pow-3 ) ;
12537: LD_EXP 2
12541: PPUSH
12542: LD_STRING D2Ar-Pow-3
12544: PPUSH
12545: CALL_OW 88
// end ; 5 :
12549: GO 12634
12551: LD_INT 5
12553: DOUBLE
12554: EQUAL
12555: IFTRUE 12559
12557: GO 12574
12559: POP
// begin Say ( JMM , D2Conf-JMM-1 ) ;
12560: LD_EXP 1
12564: PPUSH
12565: LD_STRING D2Conf-JMM-1
12567: PPUSH
12568: CALL_OW 88
// end ; 6 :
12572: GO 12634
12574: LD_INT 6
12576: DOUBLE
12577: EQUAL
12578: IFTRUE 12582
12580: GO 12633
12582: POP
// begin Say ( JMM , D2Com-JMM-1 ) ;
12583: LD_EXP 1
12587: PPUSH
12588: LD_STRING D2Com-JMM-1
12590: PPUSH
12591: CALL_OW 88
// Say ( Powell , D2Com-Pow-1 ) ;
12595: LD_EXP 2
12599: PPUSH
12600: LD_STRING D2Com-Pow-1
12602: PPUSH
12603: CALL_OW 88
// Say ( JMM , D2Com-JMM-2 ) ;
12607: LD_EXP 1
12611: PPUSH
12612: LD_STRING D2Com-JMM-2
12614: PPUSH
12615: CALL_OW 88
// Say ( Powell , D2Com-Pow-2 ) ;
12619: LD_EXP 2
12623: PPUSH
12624: LD_STRING D2Com-Pow-2
12626: PPUSH
12627: CALL_OW 88
// end ; end ;
12631: GO 12634
12633: POP
// end ;
12634: LD_VAR 0 3
12638: RET
// export function SecondTalk ; begin
12639: LD_INT 0
12641: PPUSH
// Joan_semafor = true ;
12642: LD_ADDR_EXP 233
12646: PUSH
12647: LD_INT 1
12649: ST_TO_ADDR
// if Woman_saved > 0 then
12650: LD_EXP 34
12654: PUSH
12655: LD_INT 0
12657: GREATER
12658: IFFALSE 12759
// begin case Woman_saved of 1 :
12660: LD_EXP 34
12664: PUSH
12665: LD_INT 1
12667: DOUBLE
12668: EQUAL
12669: IFTRUE 12673
12671: GO 12688
12673: POP
// Say ( Joan , D3W-Joan-1 ) ; 2 :
12674: LD_EXP 12
12678: PPUSH
12679: LD_STRING D3W-Joan-1
12681: PPUSH
12682: CALL_OW 88
12686: GO 12735
12688: LD_INT 2
12690: DOUBLE
12691: EQUAL
12692: IFTRUE 12696
12694: GO 12711
12696: POP
// Say ( Lisa , D3W-Lisa-1 ) ; 3 :
12697: LD_EXP 5
12701: PPUSH
12702: LD_STRING D3W-Lisa-1
12704: PPUSH
12705: CALL_OW 88
12709: GO 12735
12711: LD_INT 3
12713: DOUBLE
12714: EQUAL
12715: IFTRUE 12719
12717: GO 12734
12719: POP
// Say ( Coonie , D3W-Con-1 ) ; end ;
12720: LD_EXP 18
12724: PPUSH
12725: LD_STRING D3W-Con-1
12727: PPUSH
12728: CALL_OW 88
12732: GO 12735
12734: POP
// Say ( JMM , D3W-JMM-1 ) ;
12735: LD_EXP 1
12739: PPUSH
12740: LD_STRING D3W-JMM-1
12742: PPUSH
12743: CALL_OW 88
// Say ( JMM , D3nW-JMM-1a ) ;
12747: LD_EXP 1
12751: PPUSH
12752: LD_STRING D3nW-JMM-1a
12754: PPUSH
12755: CALL_OW 88
// end ; Joan_semafor = false ;
12759: LD_ADDR_EXP 233
12763: PUSH
12764: LD_INT 0
12766: ST_TO_ADDR
// end ;
12767: LD_VAR 0 1
12771: RET
// every 0 0$1 do var hlp ;
12772: GO 12774
12774: DISABLE
12775: LD_INT 0
12777: PPUSH
// begin ingame_video = true ;
12778: LD_ADDR_OWVAR 52
12782: PUSH
12783: LD_INT 1
12785: ST_TO_ADDR
// interface_hidden = true ;
12786: LD_ADDR_OWVAR 54
12790: PUSH
12791: LD_INT 1
12793: ST_TO_ADDR
// FirstTalk ;
12794: CALL 11604 0 0
// WaitTask ( JMM_veh , 1 ) ;
12798: LD_EXP 57
12802: PPUSH
12803: LD_INT 1
12805: PPUSH
12806: CALL 17892 0 2
// if IsInUnit ( JMM ) then
12810: LD_EXP 1
12814: PPUSH
12815: CALL_OW 310
12819: IFFALSE 12845
// begin ComExitVehicle ( JMM ) ;
12821: LD_EXP 1
12825: PPUSH
12826: CALL_OW 121
// if JMM_Woman then
12830: LD_EXP 37
12834: IFFALSE 12845
// ComExitVehicle ( JMM_Woman ) ;
12836: LD_EXP 37
12840: PPUSH
12841: CALL_OW 121
// end ; Wait ( 0 0$1 ) ;
12845: LD_INT 35
12847: PPUSH
12848: CALL_OW 67
// Skip = false ;
12852: LD_ADDR_EXP 186
12856: PUSH
12857: LD_INT 0
12859: ST_TO_ADDR
// CenterJMM = false ;
12860: LD_ADDR_EXP 68
12864: PUSH
12865: LD_INT 0
12867: ST_TO_ADDR
// Wait ( 0 0$1 ) ;
12868: LD_INT 35
12870: PPUSH
12871: CALL_OW 67
// ComMoveXY ( [ JMM , JMM_woman ] , 68 , 105 ) ;
12875: LD_EXP 1
12879: PUSH
12880: LD_EXP 37
12884: PUSH
12885: EMPTY
12886: LIST
12887: LIST
12888: PPUSH
12889: LD_INT 68
12891: PPUSH
12892: LD_INT 105
12894: PPUSH
12895: CALL_OW 111
// ComMoveXY ( Powell , 47 , 64 ) ;
12899: LD_EXP 2
12903: PPUSH
12904: LD_INT 47
12906: PPUSH
12907: LD_INT 64
12909: PPUSH
12910: CALL_OW 111
// RaiseSailEvent ( Send_Helpers ) ;
12914: LD_EXP 163
12918: PPUSH
12919: CALL_OW 427
// CenterOnXY ( 64 , 99 ) ;
12923: LD_INT 64
12925: PPUSH
12926: LD_INT 99
12928: PPUSH
12929: CALL_OW 84
// WaitTask ( [ JMM , JMM_woman ] , 0.5 ) ;
12933: LD_EXP 1
12937: PUSH
12938: LD_EXP 37
12942: PUSH
12943: EMPTY
12944: LIST
12945: LIST
12946: PPUSH
12947: LD_REAL  5.00000000000000E-0001
12950: PPUSH
12951: CALL 17892 0 2
// end ;
12955: PPOPN 1
12957: END
// every 0 0$2 trigger Time_of_Ingame_Run_Over + 0 0$15 < tick marked 10 do
12958: LD_EXP 189
12962: PUSH
12963: LD_INT 525
12965: PLUS
12966: PUSH
12967: LD_OWVAR 1
12971: LESS
12972: IFFALSE 13136
12974: GO 12976
12976: DISABLE
// begin DialogueOn ;
12977: CALL_OW 6
// SayRadioNoName ( Friend , D7-Friend-1 ) ;
12981: LD_EXP 21
12985: PPUSH
12986: LD_STRING D7-Friend-1
12988: PPUSH
12989: CALL_OW 95
// Say ( JMM , D7-JMM-1 ) ;
12993: LD_EXP 1
12997: PPUSH
12998: LD_STRING D7-JMM-1
13000: PPUSH
13001: CALL_OW 88
// SayRadioNoName ( Friend , D7-Friend-2 ) ;
13005: LD_EXP 21
13009: PPUSH
13010: LD_STRING D7-Friend-2
13012: PPUSH
13013: CALL_OW 95
// Say ( JMM , D7-JMM-2 ) ;
13017: LD_EXP 1
13021: PPUSH
13022: LD_STRING D7-JMM-2
13024: PPUSH
13025: CALL_OW 88
// SayRadioNoName ( Friend , D7-Friend-3 ) ;
13029: LD_EXP 21
13033: PPUSH
13034: LD_STRING D7-Friend-3
13036: PPUSH
13037: CALL_OW 95
// Say ( JMM , D7-JMM-3 ) ;
13041: LD_EXP 1
13045: PPUSH
13046: LD_STRING D7-JMM-3
13048: PPUSH
13049: CALL_OW 88
// SayRadioNoName ( Friend , D7-Friend-4 ) ;
13053: LD_EXP 21
13057: PPUSH
13058: LD_STRING D7-Friend-4
13060: PPUSH
13061: CALL_OW 95
// Say ( JMM , D7-JMM-4 ) ;
13065: LD_EXP 1
13069: PPUSH
13070: LD_STRING D7-JMM-4
13072: PPUSH
13073: CALL_OW 88
// SayRadioNoName ( Friend , D7-Friend-5 ) ;
13077: LD_EXP 21
13081: PPUSH
13082: LD_STRING D7-Friend-5
13084: PPUSH
13085: CALL_OW 95
// Say ( JMM , D7-JMM-5 ) ;
13089: LD_EXP 1
13093: PPUSH
13094: LD_STRING D7-JMM-5
13096: PPUSH
13097: CALL_OW 88
// SayRadioNoName ( Friend , D7-Friend-6 ) ;
13101: LD_EXP 21
13105: PPUSH
13106: LD_STRING D7-Friend-6
13108: PPUSH
13109: CALL_OW 95
// Say ( JMM , D7-JMM-6 ) ;
13113: LD_EXP 1
13117: PPUSH
13118: LD_STRING D7-JMM-6
13120: PPUSH
13121: CALL_OW 88
// DialogueOff ;
13125: CALL_OW 7
// ChangeMissionObjectives ( Mlegion ) ;
13129: LD_STRING Mlegion
13131: PPUSH
13132: CALL_OW 337
// end ;
13136: END
// every 0 0$1 trigger tick > Stevens_Coming_Time marked 10 do var Stevens_people , Un , New_vehicle , Stev_vehicles ;
13137: LD_OWVAR 1
13141: PUSH
13142: LD_EXP 200
13146: GREATER
13147: IFFALSE 13931
13149: GO 13151
13151: DISABLE
13152: LD_INT 0
13154: PPUSH
13155: PPUSH
13156: PPUSH
13157: PPUSH
// begin Stevens_people = [ ] ;
13158: LD_ADDR_VAR 0 1
13162: PUSH
13163: EMPTY
13164: ST_TO_ADDR
// if BobbyLoc = 6 then
13165: LD_EXP 41
13169: PUSH
13170: LD_INT 6
13172: EQUAL
13173: IFFALSE 13191
// Stevens_people = Stevens_people ^ Bobby ;
13175: LD_ADDR_VAR 0 1
13179: PUSH
13180: LD_VAR 0 1
13184: PUSH
13185: LD_EXP 3
13189: ADD
13190: ST_TO_ADDR
// if CyrusLoc = 6 then
13191: LD_EXP 42
13195: PUSH
13196: LD_INT 6
13198: EQUAL
13199: IFFALSE 13217
// Stevens_people = Stevens_people ^ Cyrus ;
13201: LD_ADDR_VAR 0 1
13205: PUSH
13206: LD_VAR 0 1
13210: PUSH
13211: LD_EXP 4
13215: ADD
13216: ST_TO_ADDR
// if LisaLoc = 6 then
13217: LD_EXP 43
13221: PUSH
13222: LD_INT 6
13224: EQUAL
13225: IFFALSE 13243
// Stevens_people = Stevens_people ^ Lisa ;
13227: LD_ADDR_VAR 0 1
13231: PUSH
13232: LD_VAR 0 1
13236: PUSH
13237: LD_EXP 5
13241: ADD
13242: ST_TO_ADDR
// if FrankLoc = 6 then
13243: LD_EXP 44
13247: PUSH
13248: LD_INT 6
13250: EQUAL
13251: IFFALSE 13269
// Stevens_people = Stevens_people ^ Frank ;
13253: LD_ADDR_VAR 0 1
13257: PUSH
13258: LD_VAR 0 1
13262: PUSH
13263: LD_EXP 6
13267: ADD
13268: ST_TO_ADDR
// if BrownLoc = 6 then
13269: LD_EXP 45
13273: PUSH
13274: LD_INT 6
13276: EQUAL
13277: IFFALSE 13295
// Stevens_people = Stevens_people ^ Brown ;
13279: LD_ADDR_VAR 0 1
13283: PUSH
13284: LD_VAR 0 1
13288: PUSH
13289: LD_EXP 7
13293: ADD
13294: ST_TO_ADDR
// if DonaldsonLoc = 6 then
13295: LD_EXP 46
13299: PUSH
13300: LD_INT 6
13302: EQUAL
13303: IFFALSE 13321
// Stevens_people = Stevens_people ^ Donaldson ;
13305: LD_ADDR_VAR 0 1
13309: PUSH
13310: LD_VAR 0 1
13314: PUSH
13315: LD_EXP 8
13319: ADD
13320: ST_TO_ADDR
// if VanHoutenLoc = 6 then
13321: LD_EXP 47
13325: PUSH
13326: LD_INT 6
13328: EQUAL
13329: IFFALSE 13347
// Stevens_people = Stevens_people ^ VanHouten ;
13331: LD_ADDR_VAR 0 1
13335: PUSH
13336: LD_VAR 0 1
13340: PUSH
13341: LD_EXP 24
13345: ADD
13346: ST_TO_ADDR
// if GladstoneLoc = 6 then
13347: LD_EXP 48
13351: PUSH
13352: LD_INT 6
13354: EQUAL
13355: IFFALSE 13373
// Stevens_people = Stevens_people ^ Gladstone ;
13357: LD_ADDR_VAR 0 1
13361: PUSH
13362: LD_VAR 0 1
13366: PUSH
13367: LD_EXP 9
13371: ADD
13372: ST_TO_ADDR
// if YamokoLoc = 6 then
13373: LD_EXP 50
13377: PUSH
13378: LD_INT 6
13380: EQUAL
13381: IFFALSE 13399
// Stevens_people = Stevens_people ^ Yamoko ;
13383: LD_ADDR_VAR 0 1
13387: PUSH
13388: LD_VAR 0 1
13392: PUSH
13393: LD_EXP 14
13397: ADD
13398: ST_TO_ADDR
// if GaryLoc = 6 then
13399: LD_EXP 51
13403: PUSH
13404: LD_INT 6
13406: EQUAL
13407: IFFALSE 13425
// Stevens_people = Stevens_people ^ Gary ;
13409: LD_ADDR_VAR 0 1
13413: PUSH
13414: LD_VAR 0 1
13418: PUSH
13419: LD_EXP 15
13423: ADD
13424: ST_TO_ADDR
// if DenisLoc = 6 then
13425: LD_EXP 52
13429: PUSH
13430: LD_INT 6
13432: EQUAL
13433: IFFALSE 13451
// Stevens_people = Stevens_people ^ Denis ;
13435: LD_ADDR_VAR 0 1
13439: PUSH
13440: LD_VAR 0 1
13444: PUSH
13445: LD_EXP 11
13449: ADD
13450: ST_TO_ADDR
// if CornellLoc = 6 then
13451: LD_EXP 53
13455: PUSH
13456: LD_INT 6
13458: EQUAL
13459: IFFALSE 13477
// Stevens_people = Stevens_people ^ Cornell ;
13461: LD_ADDR_VAR 0 1
13465: PUSH
13466: LD_VAR 0 1
13470: PUSH
13471: LD_EXP 10
13475: ADD
13476: ST_TO_ADDR
// if Stevens then
13477: LD_EXP 17
13481: IFFALSE 13501
// Stevens_people = Stevens_people ^ Stevens else
13483: LD_ADDR_VAR 0 1
13487: PUSH
13488: LD_VAR 0 1
13492: PUSH
13493: LD_EXP 17
13497: ADD
13498: ST_TO_ADDR
13499: GO 13517
// Stevens_people = Stevens_people ^ Baker ;
13501: LD_ADDR_VAR 0 1
13505: PUSH
13506: LD_VAR 0 1
13510: PUSH
13511: LD_EXP 23
13515: ADD
13516: ST_TO_ADDR
// Stevens_people = Stevens_people ^ OtherWithJMM diff [ 0 ] ;
13517: LD_ADDR_VAR 0 1
13521: PUSH
13522: LD_VAR 0 1
13526: PUSH
13527: LD_EXP 30
13531: ADD
13532: PUSH
13533: LD_INT 0
13535: PUSH
13536: EMPTY
13537: LIST
13538: DIFF
13539: ST_TO_ADDR
// for Un in Stevens_people do
13540: LD_ADDR_VAR 0 2
13544: PUSH
13545: LD_VAR 0 1
13549: PUSH
13550: FOR_IN
13551: IFFALSE 13682
// begin SetSide ( Un , americans ) ;
13553: LD_VAR 0 2
13557: PPUSH
13558: LD_EXP 176
13562: PPUSH
13563: CALL_OW 235
// uc_side = americans ;
13567: LD_ADDR_OWVAR 20
13571: PUSH
13572: LD_EXP 176
13576: ST_TO_ADDR
// uc_nation = nation_american ;
13577: LD_ADDR_OWVAR 21
13581: PUSH
13582: LD_INT 1
13584: ST_TO_ADDR
// uc_direction = 1 ;
13585: LD_ADDR_OWVAR 24
13589: PUSH
13590: LD_INT 1
13592: ST_TO_ADDR
// vc_chassis = us_light_wheeled ;
13593: LD_ADDR_OWVAR 37
13597: PUSH
13598: LD_INT 1
13600: ST_TO_ADDR
// vc_engine = engine_combustion ;
13601: LD_ADDR_OWVAR 39
13605: PUSH
13606: LD_INT 1
13608: ST_TO_ADDR
// vc_control = control_manual ;
13609: LD_ADDR_OWVAR 38
13613: PUSH
13614: LD_INT 1
13616: ST_TO_ADDR
// vc_weapon = us_machine_gun ;
13617: LD_ADDR_OWVAR 40
13621: PUSH
13622: LD_INT 2
13624: ST_TO_ADDR
// New_vehicle = CreateVehicle ;
13625: LD_ADDR_VAR 0 3
13629: PUSH
13630: CALL_OW 45
13634: ST_TO_ADDR
// Stev_vehicles = Stev_vehicles ^ New_vehicle ;
13635: LD_ADDR_VAR 0 4
13639: PUSH
13640: LD_VAR 0 4
13644: PUSH
13645: LD_VAR 0 3
13649: ADD
13650: ST_TO_ADDR
// PlaceHumanInUnit ( Un , New_vehicle ) ;
13651: LD_VAR 0 2
13655: PPUSH
13656: LD_VAR 0 3
13660: PPUSH
13661: CALL_OW 52
// PlaceUnitArea ( New_vehicle , Stev_place , false ) ;
13665: LD_VAR 0 3
13669: PPUSH
13670: LD_INT 35
13672: PPUSH
13673: LD_INT 0
13675: PPUSH
13676: CALL_OW 49
// end ;
13680: GO 13550
13682: POP
13683: POP
// DialogueON ;
13684: CALL_OW 6
// CenterOnUnits ( Stev_vehicles ) ;
13688: LD_VAR 0 4
13692: PPUSH
13693: CALL_OW 85
// if Stevens then
13697: LD_EXP 17
13701: IFFALSE 13801
// begin SayRadio ( Stevens , D8-Huck-1 ) ;
13703: LD_EXP 17
13707: PPUSH
13708: LD_STRING D8-Huck-1
13710: PPUSH
13711: CALL_OW 94
// Say ( JMM , D8-JMM-1 ) ;
13715: LD_EXP 1
13719: PPUSH
13720: LD_STRING D8-JMM-1
13722: PPUSH
13723: CALL_OW 88
// SayRadio ( Stevens , D8-Huck-2 ) ;
13727: LD_EXP 17
13731: PPUSH
13732: LD_STRING D8-Huck-2
13734: PPUSH
13735: CALL_OW 94
// Say ( JMM , D8-JMM-2 ) ;
13739: LD_EXP 1
13743: PPUSH
13744: LD_STRING D8-JMM-2
13746: PPUSH
13747: CALL_OW 88
// SayRadio ( Stevens , D8-Huck-3 ) ;
13751: LD_EXP 17
13755: PPUSH
13756: LD_STRING D8-Huck-3
13758: PPUSH
13759: CALL_OW 94
// Say ( JMM , D8-JMM-3 ) ;
13763: LD_EXP 1
13767: PPUSH
13768: LD_STRING D8-JMM-3
13770: PPUSH
13771: CALL_OW 88
// SayRadio ( Stevens , D8-Huck-4 ) ;
13775: LD_EXP 17
13779: PPUSH
13780: LD_STRING D8-Huck-4
13782: PPUSH
13783: CALL_OW 94
// Say ( JMM , D8-JMM-4 ) ;
13787: LD_EXP 1
13791: PPUSH
13792: LD_STRING D8-JMM-4
13794: PPUSH
13795: CALL_OW 88
// end else
13799: GO 13897
// begin SayRadio ( Baker , D8-Huck-1 ) ;
13801: LD_EXP 23
13805: PPUSH
13806: LD_STRING D8-Huck-1
13808: PPUSH
13809: CALL_OW 94
// Say ( JMM , D8-JMM-1a ) ;
13813: LD_EXP 1
13817: PPUSH
13818: LD_STRING D8-JMM-1a
13820: PPUSH
13821: CALL_OW 88
// SayRadio ( Baker , D8-Huck-2 ) ;
13825: LD_EXP 23
13829: PPUSH
13830: LD_STRING D8-Huck-2
13832: PPUSH
13833: CALL_OW 94
// Say ( JMM , D8-JMM-2 ) ;
13837: LD_EXP 1
13841: PPUSH
13842: LD_STRING D8-JMM-2
13844: PPUSH
13845: CALL_OW 88
// SayRadio ( Baker , D8-Huck-3 ) ;
13849: LD_EXP 23
13853: PPUSH
13854: LD_STRING D8-Huck-3
13856: PPUSH
13857: CALL_OW 94
// Say ( JMM , D8-JMM-3 ) ;
13861: LD_EXP 1
13865: PPUSH
13866: LD_STRING D8-JMM-3
13868: PPUSH
13869: CALL_OW 88
// SayRadio ( Baker , D8-Huck-4 ) ;
13873: LD_EXP 23
13877: PPUSH
13878: LD_STRING D8-Huck-4
13880: PPUSH
13881: CALL_OW 94
// Say ( JMM , D8-JMM-4 ) ;
13885: LD_EXP 1
13889: PPUSH
13890: LD_STRING D8-JMM-4
13892: PPUSH
13893: CALL_OW 88
// end ; DialogueOFF ;
13897: CALL_OW 7
// SetTech ( tech_SibFiss , americans , state_enabled ) ;
13901: LD_INT 25
13903: PPUSH
13904: LD_EXP 176
13908: PPUSH
13909: LD_INT 1
13911: PPUSH
13912: CALL_OW 322
// ComMoveXY ( Stev_vehicles , 47 , 63 ) ;
13916: LD_VAR 0 4
13920: PPUSH
13921: LD_INT 47
13923: PPUSH
13924: LD_INT 63
13926: PPUSH
13927: CALL_OW 111
// end ;
13931: PPOPN 4
13933: END
// function CCreateVehicle ( nat , side , dir , chassis , engine , control , weapon ) ; var veh , i , person ; begin
13934: LD_INT 0
13936: PPUSH
13937: PPUSH
13938: PPUSH
13939: PPUSH
// uc_side = side ;
13940: LD_ADDR_OWVAR 20
13944: PUSH
13945: LD_VAR 0 2
13949: ST_TO_ADDR
// uc_direction = dir ;
13950: LD_ADDR_OWVAR 24
13954: PUSH
13955: LD_VAR 0 3
13959: ST_TO_ADDR
// uc_nation = nat ;
13960: LD_ADDR_OWVAR 21
13964: PUSH
13965: LD_VAR 0 1
13969: ST_TO_ADDR
// vc_chassis = chassis ;
13970: LD_ADDR_OWVAR 37
13974: PUSH
13975: LD_VAR 0 4
13979: ST_TO_ADDR
// vc_control = control ;
13980: LD_ADDR_OWVAR 38
13984: PUSH
13985: LD_VAR 0 6
13989: ST_TO_ADDR
// vc_engine = engine ;
13990: LD_ADDR_OWVAR 39
13994: PUSH
13995: LD_VAR 0 5
13999: ST_TO_ADDR
// vc_weapon = weapon ;
14000: LD_ADDR_OWVAR 40
14004: PUSH
14005: LD_VAR 0 7
14009: ST_TO_ADDR
// veh = CreateVehicle ;
14010: LD_ADDR_VAR 0 9
14014: PUSH
14015: CALL_OW 45
14019: ST_TO_ADDR
// result = veh ;
14020: LD_ADDR_VAR 0 8
14024: PUSH
14025: LD_VAR 0 9
14029: ST_TO_ADDR
// end ;
14030: LD_VAR 0 8
14034: RET
// every 0 0$2 trigger ( tick > Woman_Coming_Time ) and ( tick > Time_of_Ingame_Run_Over ) marked 11 do var New_veh , i , Un , Woman_vehs ;
14035: LD_OWVAR 1
14039: PUSH
14040: LD_EXP 201
14044: GREATER
14045: PUSH
14046: LD_OWVAR 1
14050: PUSH
14051: LD_EXP 189
14055: GREATER
14056: AND
14057: IFFALSE 14541
14059: GO 14061
14061: DISABLE
14062: LD_INT 0
14064: PPUSH
14065: PPUSH
14066: PPUSH
14067: PPUSH
// begin Woman_vehs = [ ] ;
14068: LD_ADDR_VAR 0 4
14072: PUSH
14073: EMPTY
14074: ST_TO_ADDR
// for i = 1 to 3 do
14075: LD_ADDR_VAR 0 2
14079: PUSH
14080: DOUBLE
14081: LD_INT 1
14083: DEC
14084: ST_TO_ADDR
14085: LD_INT 3
14087: PUSH
14088: FOR_TO
14089: IFFALSE 14142
// begin New_veh = CCreateVehicle ( nation_american , americans , 1 , us_medium_tracked , engine_siberite , control_computer , us_laser ) ;
14091: LD_ADDR_VAR 0 1
14095: PUSH
14096: LD_INT 1
14098: PPUSH
14099: LD_EXP 176
14103: PPUSH
14104: LD_INT 1
14106: PPUSH
14107: LD_INT 3
14109: PPUSH
14110: LD_INT 3
14112: PPUSH
14113: LD_INT 3
14115: PPUSH
14116: LD_INT 9
14118: PPUSH
14119: CALL 13934 0 7
14123: ST_TO_ADDR
// Woman_vehs = Woman_vehs ^ New_veh ;
14124: LD_ADDR_VAR 0 4
14128: PUSH
14129: LD_VAR 0 4
14133: PUSH
14134: LD_VAR 0 1
14138: ADD
14139: ST_TO_ADDR
// end ;
14140: GO 14088
14142: POP
14143: POP
// New_veh = CCreateVehicle ( nation_american , americans , 1 , us_medium_tracked , engine_siberite , control_computer , us_rocket_launcher ) ;
14144: LD_ADDR_VAR 0 1
14148: PUSH
14149: LD_INT 1
14151: PPUSH
14152: LD_EXP 176
14156: PPUSH
14157: LD_INT 1
14159: PPUSH
14160: LD_INT 3
14162: PPUSH
14163: LD_INT 3
14165: PPUSH
14166: LD_INT 3
14168: PPUSH
14169: LD_INT 7
14171: PPUSH
14172: CALL 13934 0 7
14176: ST_TO_ADDR
// Woman_vehs = Woman_vehs ^ New_veh ;
14177: LD_ADDR_VAR 0 4
14181: PUSH
14182: LD_VAR 0 4
14186: PUSH
14187: LD_VAR 0 1
14191: ADD
14192: ST_TO_ADDR
// New_veh = CCreateVehicle ( nation_american , americans , 1 , us_medium_tracked , engine_siberite , control_manual , us_rocket_launcher ) ;
14193: LD_ADDR_VAR 0 1
14197: PUSH
14198: LD_INT 1
14200: PPUSH
14201: LD_EXP 176
14205: PPUSH
14206: LD_INT 1
14208: PPUSH
14209: LD_INT 3
14211: PPUSH
14212: LD_INT 3
14214: PPUSH
14215: LD_INT 1
14217: PPUSH
14218: LD_INT 7
14220: PPUSH
14221: CALL 13934 0 7
14225: ST_TO_ADDR
// Woman_vehs = Woman_vehs ^ New_veh ;
14226: LD_ADDR_VAR 0 4
14230: PUSH
14231: LD_VAR 0 4
14235: PUSH
14236: LD_VAR 0 1
14240: ADD
14241: ST_TO_ADDR
// SetSide ( JMM_Woman , americans ) ;
14242: LD_EXP 37
14246: PPUSH
14247: LD_EXP 176
14251: PPUSH
14252: CALL_OW 235
// PlaceHumanInUnit ( JMM_Woman , New_veh ) ;
14256: LD_EXP 37
14260: PPUSH
14261: LD_VAR 0 1
14265: PPUSH
14266: CALL_OW 52
// for Un in Woman_vehs do
14270: LD_ADDR_VAR 0 3
14274: PUSH
14275: LD_VAR 0 4
14279: PUSH
14280: FOR_IN
14281: IFFALSE 14300
// PlaceUnitArea ( Un , Stev_place , false ) ;
14283: LD_VAR 0 3
14287: PPUSH
14288: LD_INT 35
14290: PPUSH
14291: LD_INT 0
14293: PPUSH
14294: CALL_OW 49
14298: GO 14280
14300: POP
14301: POP
// Wait ( 0 0$1 ) ;
14302: LD_INT 35
14304: PPUSH
14305: CALL_OW 67
// DialogueON ;
14309: CALL_OW 6
// case woman_in_am14 of 1 :
14313: LD_EXP 36
14317: PUSH
14318: LD_INT 1
14320: DOUBLE
14321: EQUAL
14322: IFTRUE 14326
14324: GO 14350
14326: POP
// begin CenterOnUnits ( Joan ) ;
14327: LD_EXP 12
14331: PPUSH
14332: CALL_OW 85
// SayRadio ( Joan , D10BW-Joan-1 ) ;
14336: LD_EXP 12
14340: PPUSH
14341: LD_STRING D10BW-Joan-1
14343: PPUSH
14344: CALL_OW 94
// end ; 2 :
14348: GO 14415
14350: LD_INT 2
14352: DOUBLE
14353: EQUAL
14354: IFTRUE 14358
14356: GO 14382
14358: POP
// begin CenterOnUnits ( Lisa ) ;
14359: LD_EXP 5
14363: PPUSH
14364: CALL_OW 85
// SayRadio ( Lisa , D10BW-Lisa-1 ) ;
14368: LD_EXP 5
14372: PPUSH
14373: LD_STRING D10BW-Lisa-1
14375: PPUSH
14376: CALL_OW 94
// end ; 3 :
14380: GO 14415
14382: LD_INT 3
14384: DOUBLE
14385: EQUAL
14386: IFTRUE 14390
14388: GO 14414
14390: POP
// begin CenterOnUnits ( Coonie ) ;
14391: LD_EXP 18
14395: PPUSH
14396: CALL_OW 85
// SayRadio ( Coonie , D10BW-Con-1 ) ;
14400: LD_EXP 18
14404: PPUSH
14405: LD_STRING D10BW-Con-1
14407: PPUSH
14408: CALL_OW 94
// end ; end ;
14412: GO 14415
14414: POP
// DialogueOFF ;
14415: CALL_OW 7
// Named_Americans = Named_Americans ^ JMM_woman ;
14419: LD_ADDR_EXP 62
14423: PUSH
14424: LD_EXP 62
14428: PUSH
14429: LD_EXP 37
14433: ADD
14434: ST_TO_ADDR
// All_americans = All_americans ^ JMM_woman ;
14435: LD_ADDR_EXP 61
14439: PUSH
14440: LD_EXP 61
14444: PUSH
14445: LD_EXP 37
14449: ADD
14450: ST_TO_ADDR
// ComMoveXY ( Woman_vehs , 97 , 167 ) ;
14451: LD_VAR 0 4
14455: PPUSH
14456: LD_INT 97
14458: PPUSH
14459: LD_INT 167
14461: PPUSH
14462: CALL_OW 111
// AddComMoveXY ( Woman_vehs , 102 , 147 ) ;
14466: LD_VAR 0 4
14470: PPUSH
14471: LD_INT 102
14473: PPUSH
14474: LD_INT 147
14476: PPUSH
14477: CALL_OW 171
// AddComMoveXY ( Woman_vehs , 96 , 128 ) ;
14481: LD_VAR 0 4
14485: PPUSH
14486: LD_INT 96
14488: PPUSH
14489: LD_INT 128
14491: PPUSH
14492: CALL_OW 171
// AddComMoveXY ( Woman_vehs , 80 , 108 ) ;
14496: LD_VAR 0 4
14500: PPUSH
14501: LD_INT 80
14503: PPUSH
14504: LD_INT 108
14506: PPUSH
14507: CALL_OW 171
// AddComMoveXY ( Woman_vehs , 63 , 92 ) ;
14511: LD_VAR 0 4
14515: PPUSH
14516: LD_INT 63
14518: PPUSH
14519: LD_INT 92
14521: PPUSH
14522: CALL_OW 171
// AddComMoveXY ( Woman_vehs , 47 , 63 ) ;
14526: LD_VAR 0 4
14530: PPUSH
14531: LD_INT 47
14533: PPUSH
14534: LD_INT 63
14536: PPUSH
14537: CALL_OW 171
// end ;
14541: PPOPN 4
14543: END
// every 0 0$2 trigger ( tick > Woman_Coming_Time ) and ( tick > Time_of_Ingame_Run_Over ) marked 12 do var New_veh , i , Un , Vsevolod_vehs ;
14544: LD_OWVAR 1
14548: PUSH
14549: LD_EXP 201
14553: GREATER
14554: PUSH
14555: LD_OWVAR 1
14559: PUSH
14560: LD_EXP 189
14564: GREATER
14565: AND
14566: IFFALSE 15320
14568: GO 14570
14570: DISABLE
14571: LD_INT 0
14573: PPUSH
14574: PPUSH
14575: PPUSH
14576: PPUSH
// begin Vsevolod_vehs = [ ] ;
14577: LD_ADDR_VAR 0 4
14581: PUSH
14582: EMPTY
14583: ST_TO_ADDR
// for i = 1 to 4 do
14584: LD_ADDR_VAR 0 2
14588: PUSH
14589: DOUBLE
14590: LD_INT 1
14592: DEC
14593: ST_TO_ADDR
14594: LD_INT 4
14596: PUSH
14597: FOR_TO
14598: IFFALSE 14651
// begin New_veh = CCreateVehicle ( nation_american , russians1 , 1 , us_medium_tracked , engine_siberite , control_computer , us_laser ) ;
14600: LD_ADDR_VAR 0 1
14604: PUSH
14605: LD_INT 1
14607: PPUSH
14608: LD_EXP 179
14612: PPUSH
14613: LD_INT 1
14615: PPUSH
14616: LD_INT 3
14618: PPUSH
14619: LD_INT 3
14621: PPUSH
14622: LD_INT 3
14624: PPUSH
14625: LD_INT 9
14627: PPUSH
14628: CALL 13934 0 7
14632: ST_TO_ADDR
// Vsevolod_vehs = Vsevolod_vehs ^ New_veh ;
14633: LD_ADDR_VAR 0 4
14637: PUSH
14638: LD_VAR 0 4
14642: PUSH
14643: LD_VAR 0 1
14647: ADD
14648: ST_TO_ADDR
// end ;
14649: GO 14597
14651: POP
14652: POP
// for i = 1 to 3 do
14653: LD_ADDR_VAR 0 2
14657: PUSH
14658: DOUBLE
14659: LD_INT 1
14661: DEC
14662: ST_TO_ADDR
14663: LD_INT 3
14665: PUSH
14666: FOR_TO
14667: IFFALSE 14720
// begin New_veh = CCreateVehicle ( nation_american , russians1 , 1 , us_medium_tracked , engine_siberite , control_computer , us_rocket_launcher ) ;
14669: LD_ADDR_VAR 0 1
14673: PUSH
14674: LD_INT 1
14676: PPUSH
14677: LD_EXP 179
14681: PPUSH
14682: LD_INT 1
14684: PPUSH
14685: LD_INT 3
14687: PPUSH
14688: LD_INT 3
14690: PPUSH
14691: LD_INT 3
14693: PPUSH
14694: LD_INT 7
14696: PPUSH
14697: CALL 13934 0 7
14701: ST_TO_ADDR
// Vsevolod_vehs = Vsevolod_vehs ^ New_veh ;
14702: LD_ADDR_VAR 0 4
14706: PUSH
14707: LD_VAR 0 4
14711: PUSH
14712: LD_VAR 0 1
14716: ADD
14717: ST_TO_ADDR
// end ;
14718: GO 14666
14720: POP
14721: POP
// New_veh = CCreateVehicle ( nation_american , russians1 , 1 , us_medium_tracked , engine_siberite , control_manual , us_rocket_launcher ) ;
14722: LD_ADDR_VAR 0 1
14726: PUSH
14727: LD_INT 1
14729: PPUSH
14730: LD_EXP 179
14734: PPUSH
14735: LD_INT 1
14737: PPUSH
14738: LD_INT 3
14740: PPUSH
14741: LD_INT 3
14743: PPUSH
14744: LD_INT 1
14746: PPUSH
14747: LD_INT 7
14749: PPUSH
14750: CALL 13934 0 7
14754: ST_TO_ADDR
// Vsevolod_vehs = Vsevolod_vehs ^ New_veh ;
14755: LD_ADDR_VAR 0 4
14759: PUSH
14760: LD_VAR 0 4
14764: PUSH
14765: LD_VAR 0 1
14769: ADD
14770: ST_TO_ADDR
// PlaceHumanInUnit ( Vsevolod , New_veh ) ;
14771: LD_EXP 25
14775: PPUSH
14776: LD_VAR 0 1
14780: PPUSH
14781: CALL_OW 52
// for Un in Vsevolod_vehs do
14785: LD_ADDR_VAR 0 3
14789: PUSH
14790: LD_VAR 0 4
14794: PUSH
14795: FOR_IN
14796: IFFALSE 14815
// PlaceUnitArea ( Un , Stev_place , false ) ;
14798: LD_VAR 0 3
14802: PPUSH
14803: LD_INT 35
14805: PPUSH
14806: LD_INT 0
14808: PPUSH
14809: CALL_OW 49
14813: GO 14795
14815: POP
14816: POP
// ComMoveXY ( Vsevolod_vehs , 135 , 180 ) ;
14817: LD_VAR 0 4
14821: PPUSH
14822: LD_INT 135
14824: PPUSH
14825: LD_INT 180
14827: PPUSH
14828: CALL_OW 111
// AddComMoveXY ( Vsevolod_vehs , 159 , 179 ) ;
14832: LD_VAR 0 4
14836: PPUSH
14837: LD_INT 159
14839: PPUSH
14840: LD_INT 179
14842: PPUSH
14843: CALL_OW 171
// WaitPos ( 159 , 179 , 10 , Vsevolod_vehs , 1 ) ;
14847: LD_INT 159
14849: PPUSH
14850: LD_INT 179
14852: PPUSH
14853: LD_INT 10
14855: PPUSH
14856: LD_VAR 0 4
14860: PPUSH
14861: LD_INT 1
14863: PPUSH
14864: CALL 17990 0 5
// AddComMoveXY ( Vsevolod_vehs , 174 , 170 ) ;
14868: LD_VAR 0 4
14872: PPUSH
14873: LD_INT 174
14875: PPUSH
14876: LD_INT 170
14878: PPUSH
14879: CALL_OW 171
// AddComMoveXY ( Vsevolod_vehs , 170 , 149 ) ;
14883: LD_VAR 0 4
14887: PPUSH
14888: LD_INT 170
14890: PPUSH
14891: LD_INT 149
14893: PPUSH
14894: CALL_OW 171
// AddComMoveXY ( Vsevolod_vehs , 156 , 134 ) ;
14898: LD_VAR 0 4
14902: PPUSH
14903: LD_INT 156
14905: PPUSH
14906: LD_INT 134
14908: PPUSH
14909: CALL_OW 171
// WaitPos ( 156 , 134 , 10 , Vsevolod_vehs , 1 ) ;
14913: LD_INT 156
14915: PPUSH
14916: LD_INT 134
14918: PPUSH
14919: LD_INT 10
14921: PPUSH
14922: LD_VAR 0 4
14926: PPUSH
14927: LD_INT 1
14929: PPUSH
14930: CALL 17990 0 5
// AddComMoveXY ( Vsevolod_vehs , 132 , 118 ) ;
14934: LD_VAR 0 4
14938: PPUSH
14939: LD_INT 132
14941: PPUSH
14942: LD_INT 118
14944: PPUSH
14945: CALL_OW 171
// AddComMoveXY ( Vsevolod_vehs , 113 , 97 ) ;
14949: LD_VAR 0 4
14953: PPUSH
14954: LD_INT 113
14956: PPUSH
14957: LD_INT 97
14959: PPUSH
14960: CALL_OW 171
// AddComMoveXY ( Vsevolod_vehs , 103 , 79 ) ;
14964: LD_VAR 0 4
14968: PPUSH
14969: LD_INT 103
14971: PPUSH
14972: LD_INT 79
14974: PPUSH
14975: CALL_OW 171
// WaitPos ( 103 , 79 , 10 , Vsevolod_vehs , 1 ) ;
14979: LD_INT 103
14981: PPUSH
14982: LD_INT 79
14984: PPUSH
14985: LD_INT 10
14987: PPUSH
14988: LD_VAR 0 4
14992: PPUSH
14993: LD_INT 1
14995: PPUSH
14996: CALL 17990 0 5
// AddComMoveXY ( Vsevolod_vehs , 73 , 62 ) ;
15000: LD_VAR 0 4
15004: PPUSH
15005: LD_INT 73
15007: PPUSH
15008: LD_INT 62
15010: PPUSH
15011: CALL_OW 171
// WaitPos ( 73 , 62 , 10 , Vsevolod_vehs , 1 ) ;
15015: LD_INT 73
15017: PPUSH
15018: LD_INT 62
15020: PPUSH
15021: LD_INT 10
15023: PPUSH
15024: LD_VAR 0 4
15028: PPUSH
15029: LD_INT 1
15031: PPUSH
15032: CALL 17990 0 5
// placeseeing ( 73 , 62 , americans , - 8 ) ;
15036: LD_INT 73
15038: PPUSH
15039: LD_INT 62
15041: PPUSH
15042: LD_EXP 176
15046: PPUSH
15047: LD_INT 8
15049: NEG
15050: PPUSH
15051: CALL_OW 330
// CenterOnXY ( 73 , 62 ) ;
15055: LD_INT 73
15057: PPUSH
15058: LD_INT 62
15060: PPUSH
15061: CALL_OW 84
// Wait ( 0 0$3 ) ;
15065: LD_INT 105
15067: PPUSH
15068: CALL_OW 67
// SA_OnVsevolodAppear ;
15072: CALL 56246 0 0
// DialogueON ;
15076: CALL_OW 6
// Say ( JMM , D10nB-JMM-1 ) ;
15080: LD_EXP 1
15084: PPUSH
15085: LD_STRING D10nB-JMM-1
15087: PPUSH
15088: CALL_OW 88
// Say ( Vsevolod , D10nB-Vse-1 ) ;
15092: LD_EXP 25
15096: PPUSH
15097: LD_STRING D10nB-Vse-1
15099: PPUSH
15100: CALL_OW 88
// if not ( IsOk ( Burlak ) ) then
15104: LD_EXP 19
15108: PPUSH
15109: CALL_OW 302
15113: NOT
15114: IFFALSE 15128
// Say ( Vsevolod ,  ) ;
15116: LD_EXP 25
15120: PPUSH
15121: LD_STRING 
15123: PPUSH
15124: CALL_OW 88
// Say ( JMM , D10nB-JMM-2 ) ;
15128: LD_EXP 1
15132: PPUSH
15133: LD_STRING D10nB-JMM-2
15135: PPUSH
15136: CALL_OW 88
// case Woman_in_am14 of 1 :
15140: LD_EXP 36
15144: PUSH
15145: LD_INT 1
15147: DOUBLE
15148: EQUAL
15149: IFTRUE 15153
15151: GO 15204
15153: POP
// begin Say ( Vsevolod , D10nB-Vse-2 ) ;
15154: LD_EXP 25
15158: PPUSH
15159: LD_STRING D10nB-Vse-2
15161: PPUSH
15162: CALL_OW 88
// Say ( JMM , D10nB-JMM-3 ) ;
15166: LD_EXP 1
15170: PPUSH
15171: LD_STRING D10nB-JMM-3
15173: PPUSH
15174: CALL_OW 88
// Say ( Vsevolod , D10nB-Vse-3 ) ;
15178: LD_EXP 25
15182: PPUSH
15183: LD_STRING D10nB-Vse-3
15185: PPUSH
15186: CALL_OW 88
// Say ( JMM , D10nB-JMM-4 ) ;
15190: LD_EXP 1
15194: PPUSH
15195: LD_STRING D10nB-JMM-4
15197: PPUSH
15198: CALL_OW 88
// end ; 2 :
15202: GO 15287
15204: LD_INT 2
15206: DOUBLE
15207: EQUAL
15208: IFTRUE 15212
15210: GO 15251
15212: POP
// begin Say ( JMM , D10nB-Vse-4 ) ;
15213: LD_EXP 1
15217: PPUSH
15218: LD_STRING D10nB-Vse-4
15220: PPUSH
15221: CALL_OW 88
// Say ( Vsevolod , D10nB-JMM-5 ) ;
15225: LD_EXP 25
15229: PPUSH
15230: LD_STRING D10nB-JMM-5
15232: PPUSH
15233: CALL_OW 88
// Say ( JMM , D10nB-Vse-5 ) ;
15237: LD_EXP 1
15241: PPUSH
15242: LD_STRING D10nB-Vse-5
15244: PPUSH
15245: CALL_OW 88
// end ; 3 :
15249: GO 15287
15251: LD_INT 3
15253: DOUBLE
15254: EQUAL
15255: IFTRUE 15259
15257: GO 15286
15259: POP
// begin Say ( Vsevolod , D10nB-Vse-5a ) ;
15260: LD_EXP 25
15264: PPUSH
15265: LD_STRING D10nB-Vse-5a
15267: PPUSH
15268: CALL_OW 88
// Say ( JMM , D10nB-JMM-6 ) ;
15272: LD_EXP 1
15276: PPUSH
15277: LD_STRING D10nB-JMM-6
15279: PPUSH
15280: CALL_OW 88
// end ; end ;
15284: GO 15287
15286: POP
// DialogueOFF ;
15287: CALL_OW 7
// removeseeing ( 73 , 62 , americans ) ;
15291: LD_INT 73
15293: PPUSH
15294: LD_INT 62
15296: PPUSH
15297: LD_EXP 176
15301: PPUSH
15302: CALL_OW 331
// AddMcUnits ( Russian1_reg_id , Vsevolod_vehs ) ;
15306: LD_EXP 237
15310: PPUSH
15311: LD_VAR 0 4
15315: PPUSH
15316: CALL_OW 390
// end ;
15320: PPOPN 4
15322: END
// every 0 0$1 trigger tick > Alliance_broadcast marked 10 do var list_of_q , selection ;
15323: LD_OWVAR 1
15327: PUSH
15328: LD_EXP 202
15332: GREATER
15333: IFFALSE 15739
15335: GO 15337
15337: DISABLE
15338: LD_INT 0
15340: PPUSH
15341: PPUSH
// begin DialogueON ;
15342: CALL_OW 6
// SayRadio ( Roth , D9-Roth-1 ) ;
15346: LD_EXP 20
15350: PPUSH
15351: LD_STRING D9-Roth-1
15353: PPUSH
15354: CALL_OW 94
// CenterOnUnits ( JMM ) ;
15358: LD_EXP 1
15362: PPUSH
15363: CALL_OW 85
// Say ( JMM , D9-JMM-1 ) ;
15367: LD_EXP 1
15371: PPUSH
15372: LD_STRING D9-JMM-1
15374: PPUSH
15375: CALL_OW 88
// SayRadio ( Roth , D9-Roth-2 ) ;
15379: LD_EXP 20
15383: PPUSH
15384: LD_STRING D9-Roth-2
15386: PPUSH
15387: CALL_OW 94
// SayRadio ( Roth , D9-Roth-2a ) ;
15391: LD_EXP 20
15395: PPUSH
15396: LD_STRING D9-Roth-2a
15398: PPUSH
15399: CALL_OW 94
// SayRadio ( Platonov , D9-Pla-2 ) ;
15403: LD_EXP 26
15407: PPUSH
15408: LD_STRING D9-Pla-2
15410: PPUSH
15411: CALL_OW 94
// SayRadio ( Roth , D9-Roth-3 ) ;
15415: LD_EXP 20
15419: PPUSH
15420: LD_STRING D9-Roth-3
15422: PPUSH
15423: CALL_OW 94
// SayRadio ( Platonov , D9-Pla-3 ) ;
15427: LD_EXP 26
15431: PPUSH
15432: LD_STRING D9-Pla-3
15434: PPUSH
15435: CALL_OW 94
// SayRadio ( Roth , D9-Roth-4 ) ;
15439: LD_EXP 20
15443: PPUSH
15444: LD_STRING D9-Roth-4
15446: PPUSH
15447: CALL_OW 94
// list_of_q = [ 1 , 2 , 3 ] ;
15451: LD_ADDR_VAR 0 1
15455: PUSH
15456: LD_INT 1
15458: PUSH
15459: LD_INT 2
15461: PUSH
15462: LD_INT 3
15464: PUSH
15465: EMPTY
15466: LIST
15467: LIST
15468: LIST
15469: ST_TO_ADDR
// selection = SelectiveQuery ( Q9 , list_of_q ) ;
15470: LD_ADDR_VAR 0 2
15474: PUSH
15475: LD_STRING Q9
15477: PPUSH
15478: LD_VAR 0 1
15482: PPUSH
15483: CALL_OW 98
15487: ST_TO_ADDR
// case selection of 1 :
15488: LD_VAR 0 2
15492: PUSH
15493: LD_INT 1
15495: DOUBLE
15496: EQUAL
15497: IFTRUE 15501
15499: GO 15523
15501: POP
// begin Wait ( 0 0$3 ) ;
15502: LD_INT 105
15504: PPUSH
15505: CALL_OW 67
// SayRadio ( Roth , D9a-Roth-1 ) ;
15509: LD_EXP 20
15513: PPUSH
15514: LD_STRING D9a-Roth-1
15516: PPUSH
15517: CALL_OW 94
// end ; 2 :
15521: GO 15656
15523: LD_INT 2
15525: DOUBLE
15526: EQUAL
15527: IFTRUE 15531
15529: GO 15565
15531: POP
// begin Wait ( 0 0$0.5 ) ;
15532: LD_INT 18
15534: PPUSH
15535: CALL_OW 67
// Say ( JMM , D9b-JMM-1 ) ;
15539: LD_EXP 1
15543: PPUSH
15544: LD_STRING D9b-JMM-1
15546: PPUSH
15547: CALL_OW 88
// SayRadio ( Roth , D9b-Roth-1 ) ;
15551: LD_EXP 20
15555: PPUSH
15556: LD_STRING D9b-Roth-1
15558: PPUSH
15559: CALL_OW 94
// end ; 3 :
15563: GO 15656
15565: LD_INT 3
15567: DOUBLE
15568: EQUAL
15569: IFTRUE 15573
15571: GO 15655
15573: POP
// begin Wait ( 0 0$2 ) ;
15574: LD_INT 70
15576: PPUSH
15577: CALL_OW 67
// Say ( JMM , D9c-JMM-1 ) ;
15581: LD_EXP 1
15585: PPUSH
15586: LD_STRING D9c-JMM-1
15588: PPUSH
15589: CALL_OW 88
// SayRadio ( Roth , D9c-Roth-1 ) ;
15593: LD_EXP 20
15597: PPUSH
15598: LD_STRING D9c-Roth-1
15600: PPUSH
15601: CALL_OW 94
// Say ( JMM , D9c-JMM-2 ) ;
15605: LD_EXP 1
15609: PPUSH
15610: LD_STRING D9c-JMM-2
15612: PPUSH
15613: CALL_OW 88
// SayRadio ( Roth , D9c-Roth-2 ) ;
15617: LD_EXP 20
15621: PPUSH
15622: LD_STRING D9c-Roth-2
15624: PPUSH
15625: CALL_OW 94
// Say ( JMM , D9c-JMM-3 ) ;
15629: LD_EXP 1
15633: PPUSH
15634: LD_STRING D9c-JMM-3
15636: PPUSH
15637: CALL_OW 88
// SayRadio ( Roth , D9c-Roth-3 ) ;
15641: LD_EXP 20
15645: PPUSH
15646: LD_STRING D9c-Roth-3
15648: PPUSH
15649: CALL_OW 94
// end ; end ;
15653: GO 15656
15655: POP
// SayRadio ( Roth , D9cont-Roth-1 ) ;
15656: LD_EXP 20
15660: PPUSH
15661: LD_STRING D9cont-Roth-1
15663: PPUSH
15664: CALL_OW 94
// Say ( JMM , D9cont-JMM-1 ) ;
15668: LD_EXP 1
15672: PPUSH
15673: LD_STRING D9cont-JMM-1
15675: PPUSH
15676: CALL_OW 88
// SayRadio ( Roth , D9cont-Roth-2 ) ;
15680: LD_EXP 20
15684: PPUSH
15685: LD_STRING D9cont-Roth-2
15687: PPUSH
15688: CALL_OW 94
// Say ( JMM , D9cont-JMM-2 ) ;
15692: LD_EXP 1
15696: PPUSH
15697: LD_STRING D9cont-JMM-2
15699: PPUSH
15700: CALL_OW 88
// SayRadio ( Roth , D9cont-Roth-3 ) ;
15704: LD_EXP 20
15708: PPUSH
15709: LD_STRING D9cont-Roth-3
15711: PPUSH
15712: CALL_OW 94
// Say ( JMM , D9cont-JMM-3 ) ;
15716: LD_EXP 1
15720: PPUSH
15721: LD_STRING D9cont-JMM-3
15723: PPUSH
15724: CALL_OW 88
// DialogueOFF ;
15728: CALL_OW 7
// ChangeMissionObjectives ( M3 ) ;
15732: LD_STRING M3
15734: PPUSH
15735: CALL_OW 337
// end ;
15739: PPOPN 2
15741: END
// every 0 0$1 trigger Behemots_broadcast < tick marked 10 do var Sold1 , list_of_all_males , UnNamed_males , Named_males ;
15742: LD_EXP 203
15746: PUSH
15747: LD_OWVAR 1
15751: LESS
15752: IFFALSE 16200
15754: GO 15756
15756: DISABLE
15757: LD_INT 0
15759: PPUSH
15760: PPUSH
15761: PPUSH
15762: PPUSH
// begin Sold1 = 0 ;
15763: LD_ADDR_VAR 0 1
15767: PUSH
15768: LD_INT 0
15770: ST_TO_ADDR
// BuildBehemots ;
15771: CALL 48010 0 0
// list_of_all_males = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_sex , sex_male ] , [ f_ok ] , f_not , [ [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_kamikaze ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ] ) ;
15775: LD_ADDR_VAR 0 2
15779: PUSH
15780: LD_INT 22
15782: PUSH
15783: LD_EXP 176
15787: PUSH
15788: EMPTY
15789: LIST
15790: LIST
15791: PUSH
15792: LD_INT 21
15794: PUSH
15795: LD_INT 1
15797: PUSH
15798: EMPTY
15799: LIST
15800: LIST
15801: PUSH
15802: LD_INT 26
15804: PUSH
15805: LD_INT 1
15807: PUSH
15808: EMPTY
15809: LIST
15810: LIST
15811: PUSH
15812: LD_INT 50
15814: PUSH
15815: EMPTY
15816: LIST
15817: PUSH
15818: LD_INT 3
15820: PUSH
15821: LD_INT 2
15823: PUSH
15824: LD_INT 25
15826: PUSH
15827: LD_INT 12
15829: PUSH
15830: EMPTY
15831: LIST
15832: LIST
15833: PUSH
15834: LD_INT 25
15836: PUSH
15837: LD_INT 16
15839: PUSH
15840: EMPTY
15841: LIST
15842: LIST
15843: PUSH
15844: LD_INT 25
15846: PUSH
15847: LD_INT 17
15849: PUSH
15850: EMPTY
15851: LIST
15852: LIST
15853: PUSH
15854: LD_INT 25
15856: PUSH
15857: LD_INT 15
15859: PUSH
15860: EMPTY
15861: LIST
15862: LIST
15863: PUSH
15864: LD_INT 25
15866: PUSH
15867: LD_INT 17
15869: PUSH
15870: EMPTY
15871: LIST
15872: LIST
15873: PUSH
15874: EMPTY
15875: LIST
15876: LIST
15877: LIST
15878: LIST
15879: LIST
15880: LIST
15881: PUSH
15882: EMPTY
15883: LIST
15884: PUSH
15885: EMPTY
15886: LIST
15887: LIST
15888: LIST
15889: LIST
15890: LIST
15891: LIST
15892: PPUSH
15893: CALL_OW 69
15897: ST_TO_ADDR
// UnNamed_males = list_of_all_males diff [ JMM , Powell , Bobby , Cyrus , Frank , Brown , Gladstone , Cornell , Denis , Gary , Stevens ] ;
15898: LD_ADDR_VAR 0 3
15902: PUSH
15903: LD_VAR 0 2
15907: PUSH
15908: LD_EXP 1
15912: PUSH
15913: LD_EXP 2
15917: PUSH
15918: LD_EXP 3
15922: PUSH
15923: LD_EXP 4
15927: PUSH
15928: LD_EXP 6
15932: PUSH
15933: LD_EXP 7
15937: PUSH
15938: LD_EXP 9
15942: PUSH
15943: LD_EXP 10
15947: PUSH
15948: LD_EXP 11
15952: PUSH
15953: LD_EXP 15
15957: PUSH
15958: LD_EXP 17
15962: PUSH
15963: EMPTY
15964: LIST
15965: LIST
15966: LIST
15967: LIST
15968: LIST
15969: LIST
15970: LIST
15971: LIST
15972: LIST
15973: LIST
15974: LIST
15975: DIFF
15976: ST_TO_ADDR
// if UnNamed_males <> 0 then
15977: LD_VAR 0 3
15981: PUSH
15982: LD_INT 0
15984: NONEQUAL
15985: IFFALSE 16013
// begin Sold1 = UnNamed_males [ Rand ( 1 , UnNamed_males ) ] ;
15987: LD_ADDR_VAR 0 1
15991: PUSH
15992: LD_VAR 0 3
15996: PUSH
15997: LD_INT 1
15999: PPUSH
16000: LD_VAR 0 3
16004: PPUSH
16005: CALL_OW 12
16009: ARRAY
16010: ST_TO_ADDR
// end else
16011: GO 16087
// if list_of_all_males diff [ JMM , Powell ] <> 0 then
16013: LD_VAR 0 2
16017: PUSH
16018: LD_EXP 1
16022: PUSH
16023: LD_EXP 2
16027: PUSH
16028: EMPTY
16029: LIST
16030: LIST
16031: PUSH
16032: LD_INT 0
16034: NONEQUAL
16035: DIFF
16036: IFFALSE 16087
// begin list_of_all_males = list_of_all_males diff [ JMM , Powell ] ;
16038: LD_ADDR_VAR 0 2
16042: PUSH
16043: LD_VAR 0 2
16047: PUSH
16048: LD_EXP 1
16052: PUSH
16053: LD_EXP 2
16057: PUSH
16058: EMPTY
16059: LIST
16060: LIST
16061: DIFF
16062: ST_TO_ADDR
// Sold1 = list_of_all_males [ Rand ( 1 , list_of_all_males ) ] ;
16063: LD_ADDR_VAR 0 1
16067: PUSH
16068: LD_VAR 0 2
16072: PUSH
16073: LD_INT 1
16075: PPUSH
16076: LD_VAR 0 2
16080: PPUSH
16081: CALL_OW 12
16085: ARRAY
16086: ST_TO_ADDR
// end ; if Sold1 <> 0 then
16087: LD_VAR 0 1
16091: PUSH
16092: LD_INT 0
16094: NONEQUAL
16095: IFFALSE 16200
// begin CenterNowOnUnits ( JMM ) ;
16097: LD_EXP 1
16101: PPUSH
16102: CALL_OW 87
// DialogueON ;
16106: CALL_OW 6
// Wait ( 0 0$1 ) ;
16110: LD_INT 35
16112: PPUSH
16113: CALL_OW 67
// Say ( Sold1 , D11-Sol1-1 ) ;
16117: LD_VAR 0 1
16121: PPUSH
16122: LD_STRING D11-Sol1-1
16124: PPUSH
16125: CALL_OW 88
// SayRadio ( Platonov , D11-Pla-1 ) ;
16129: LD_EXP 26
16133: PPUSH
16134: LD_STRING D11-Pla-1
16136: PPUSH
16137: CALL_OW 94
// SayRadio ( Kovaljuk , D11-Kov-1 ) ;
16141: LD_EXP 27
16145: PPUSH
16146: LD_STRING D11-Kov-1
16148: PPUSH
16149: CALL_OW 94
// SayRadio ( Platonov , D11-Pla-2 ) ;
16153: LD_EXP 26
16157: PPUSH
16158: LD_STRING D11-Pla-2
16160: PPUSH
16161: CALL_OW 94
// Say ( Sold1 , D11-Sol1-2 ) ;
16165: LD_VAR 0 1
16169: PPUSH
16170: LD_STRING D11-Sol1-2
16172: PPUSH
16173: CALL_OW 88
// Say ( JMM , D11-JMM-2 ) ;
16177: LD_EXP 1
16181: PPUSH
16182: LD_STRING D11-JMM-2
16184: PPUSH
16185: CALL_OW 88
// DialogueOff ;
16189: CALL_OW 7
// ChangeMissionObjectives ( M4 ) ;
16193: LD_STRING M4
16195: PPUSH
16196: CALL_OW 337
// end ; end ;
16200: PPOPN 4
16202: END
// every 0 0$1 trigger Alaskite_Bomb_Time < tick marked 10 do var list_of_q , selection , Americans_has_sib_rocket ;
16203: LD_EXP 212
16207: PUSH
16208: LD_OWVAR 1
16212: LESS
16213: IFFALSE 16548
16215: GO 16217
16217: DISABLE
16218: LD_INT 0
16220: PPUSH
16221: PPUSH
16222: PPUSH
// begin DialogueON ;
16223: CALL_OW 6
// Say ( Platonov , D15-Pla-1 ) ;
16227: LD_EXP 26
16231: PPUSH
16232: LD_STRING D15-Pla-1
16234: PPUSH
16235: CALL_OW 88
// list_of_q = [ 1 , 2 , 3 , 4 ] ;
16239: LD_ADDR_VAR 0 1
16243: PUSH
16244: LD_INT 1
16246: PUSH
16247: LD_INT 2
16249: PUSH
16250: LD_INT 3
16252: PUSH
16253: LD_INT 4
16255: PUSH
16256: EMPTY
16257: LIST
16258: LIST
16259: LIST
16260: LIST
16261: ST_TO_ADDR
// selection = SelectiveQuery ( Q15a , list_of_q ) ;
16262: LD_ADDR_VAR 0 2
16266: PUSH
16267: LD_STRING Q15a
16269: PPUSH
16270: LD_VAR 0 1
16274: PPUSH
16275: CALL_OW 98
16279: ST_TO_ADDR
// case selection of 1 :
16280: LD_VAR 0 2
16284: PUSH
16285: LD_INT 1
16287: DOUBLE
16288: EQUAL
16289: IFTRUE 16293
16291: GO 16321
16293: POP
// begin Say ( JMM , D15a-JMM-1 ) ;
16294: LD_EXP 1
16298: PPUSH
16299: LD_STRING D15a-JMM-1
16301: PPUSH
16302: CALL_OW 88
// enable ( JMM_has_surrounded ) ;
16306: LD_EXP 155
16310: ENABLE_MARKED
// Friend_has_to_escape = true ;
16311: LD_ADDR_EXP 228
16315: PUSH
16316: LD_INT 1
16318: ST_TO_ADDR
// end ; 2 :
16319: GO 16544
16321: LD_INT 2
16323: DOUBLE
16324: EQUAL
16325: IFTRUE 16329
16327: GO 16370
16329: POP
// begin Say ( JMM , D15b-JMM-1 ) ;
16330: LD_EXP 1
16334: PPUSH
16335: LD_STRING D15b-JMM-1
16337: PPUSH
16338: CALL_OW 88
// Say ( Platonov , D15b-Pla-1 ) ;
16342: LD_EXP 26
16346: PPUSH
16347: LD_STRING D15b-Pla-1
16349: PPUSH
16350: CALL_OW 88
// Time_to_Think_Over = tick + 3 3$0 ;
16354: LD_ADDR_EXP 217
16358: PUSH
16359: LD_OWVAR 1
16363: PUSH
16364: LD_INT 6300
16366: PLUS
16367: ST_TO_ADDR
// end ; 3 :
16368: GO 16544
16370: LD_INT 3
16372: DOUBLE
16373: EQUAL
16374: IFTRUE 16378
16376: GO 16421
16378: POP
// begin Say ( JMM , D15c-JMM-1 ) ;
16379: LD_EXP 1
16383: PPUSH
16384: LD_STRING D15c-JMM-1
16386: PPUSH
16387: CALL_OW 88
// Say ( Platonov , D15c-Pla-1 ) ;
16391: LD_EXP 26
16395: PPUSH
16396: LD_STRING D15c-Pla-1
16398: PPUSH
16399: CALL_OW 88
// Russian_Siberite_Attack = true ;
16403: LD_ADDR_EXP 215
16407: PUSH
16408: LD_INT 1
16410: ST_TO_ADDR
// Friend_has_to_escape = true ;
16411: LD_ADDR_EXP 228
16415: PUSH
16416: LD_INT 1
16418: ST_TO_ADDR
// end ; 4 :
16419: GO 16544
16421: LD_INT 4
16423: DOUBLE
16424: EQUAL
16425: IFTRUE 16429
16427: GO 16543
16429: POP
// begin Say ( JMM , D15d-JMM-1 ) ;
16430: LD_EXP 1
16434: PPUSH
16435: LD_STRING D15d-JMM-1
16437: PPUSH
16438: CALL_OW 88
// Say ( Platonov , D15d-Pla-1 ) ;
16442: LD_EXP 26
16446: PPUSH
16447: LD_STRING D15d-Pla-1
16449: PPUSH
16450: CALL_OW 88
// if Friend_Accepted then
16454: LD_EXP 219
16458: IFFALSE 16476
// The_Last_Time = tick + 1 1$0 else
16460: LD_ADDR_EXP 218
16464: PUSH
16465: LD_OWVAR 1
16469: PUSH
16470: LD_INT 2100
16472: PLUS
16473: ST_TO_ADDR
16474: GO 16490
// The_Last_Time = tick + 5 5$0 ;
16476: LD_ADDR_EXP 218
16480: PUSH
16481: LD_OWVAR 1
16485: PUSH
16486: LD_INT 10500
16488: PLUS
16489: ST_TO_ADDR
// Americans_has_sib_rocket = FilterAllUnits ( [ [ f_side , americans ] , [ f_weapon , us_siberium_rocket ] ] ) ;
16490: LD_ADDR_VAR 0 3
16494: PUSH
16495: LD_INT 22
16497: PUSH
16498: LD_EXP 176
16502: PUSH
16503: EMPTY
16504: LIST
16505: LIST
16506: PUSH
16507: LD_INT 34
16509: PUSH
16510: LD_INT 8
16512: PUSH
16513: EMPTY
16514: LIST
16515: LIST
16516: PUSH
16517: EMPTY
16518: LIST
16519: LIST
16520: PPUSH
16521: CALL_OW 69
16525: ST_TO_ADDR
// if not ( Americans_has_sib_rocket ) then
16526: LD_VAR 0 3
16530: NOT
16531: IFFALSE 16541
// Friend_has_to_escape = true ;
16533: LD_ADDR_EXP 228
16537: PUSH
16538: LD_INT 1
16540: ST_TO_ADDR
// end ; end ;
16541: GO 16544
16543: POP
// DialogueOFF ;
16544: CALL_OW 7
// end ;
16548: PPOPN 3
16550: END
// every 0 0$1 trigger ( Time_to_Think_Over <> 0 ) and ( Time_to_Think_Over < tick ) marked 10 do var selection , list_of_q , Americans_has_sib_rocket ;
16551: LD_EXP 217
16555: PUSH
16556: LD_INT 0
16558: NONEQUAL
16559: PUSH
16560: LD_EXP 217
16564: PUSH
16565: LD_OWVAR 1
16569: LESS
16570: AND
16571: IFFALSE 16841
16573: GO 16575
16575: DISABLE
16576: LD_INT 0
16578: PPUSH
16579: PPUSH
16580: PPUSH
// begin DialogueON ;
16581: CALL_OW 6
// list_of_q = [ 1 , 3 , 4 ] ;
16585: LD_ADDR_VAR 0 2
16589: PUSH
16590: LD_INT 1
16592: PUSH
16593: LD_INT 3
16595: PUSH
16596: LD_INT 4
16598: PUSH
16599: EMPTY
16600: LIST
16601: LIST
16602: LIST
16603: ST_TO_ADDR
// selection = SelectiveQuery ( Q15a , list_of_q ) ;
16604: LD_ADDR_VAR 0 1
16608: PUSH
16609: LD_STRING Q15a
16611: PPUSH
16612: LD_VAR 0 2
16616: PPUSH
16617: CALL_OW 98
16621: ST_TO_ADDR
// case selection of 1 :
16622: LD_VAR 0 1
16626: PUSH
16627: LD_INT 1
16629: DOUBLE
16630: EQUAL
16631: IFTRUE 16635
16633: GO 16663
16635: POP
// begin Say ( JMM , D15a-JMM-1 ) ;
16636: LD_EXP 1
16640: PPUSH
16641: LD_STRING D15a-JMM-1
16643: PPUSH
16644: CALL_OW 88
// enable ( JMM_has_surrounded ) ;
16648: LD_EXP 155
16652: ENABLE_MARKED
// Friend_has_to_escape = true ;
16653: LD_ADDR_EXP 228
16657: PUSH
16658: LD_INT 1
16660: ST_TO_ADDR
// end ; 3 :
16661: GO 16837
16663: LD_INT 3
16665: DOUBLE
16666: EQUAL
16667: IFTRUE 16671
16669: GO 16714
16671: POP
// begin Say ( JMM , D15c-JMM-1 ) ;
16672: LD_EXP 1
16676: PPUSH
16677: LD_STRING D15c-JMM-1
16679: PPUSH
16680: CALL_OW 88
// Say ( Platonov , D15c-Pla-1 ) ;
16684: LD_EXP 26
16688: PPUSH
16689: LD_STRING D15c-Pla-1
16691: PPUSH
16692: CALL_OW 88
// Russian_Siberite_Attack = true ;
16696: LD_ADDR_EXP 215
16700: PUSH
16701: LD_INT 1
16703: ST_TO_ADDR
// Friend_has_to_escape = true ;
16704: LD_ADDR_EXP 228
16708: PUSH
16709: LD_INT 1
16711: ST_TO_ADDR
// end ; 4 :
16712: GO 16837
16714: LD_INT 4
16716: DOUBLE
16717: EQUAL
16718: IFTRUE 16722
16720: GO 16836
16722: POP
// begin Say ( JMM , D15d-JMM-1a ) ;
16723: LD_EXP 1
16727: PPUSH
16728: LD_STRING D15d-JMM-1a
16730: PPUSH
16731: CALL_OW 88
// Say ( Platonov , D15d-Pla-1 ) ;
16735: LD_EXP 26
16739: PPUSH
16740: LD_STRING D15d-Pla-1
16742: PPUSH
16743: CALL_OW 88
// if Friend_Accepted then
16747: LD_EXP 219
16751: IFFALSE 16769
// The_Last_Time = tick + 1 1$0 else
16753: LD_ADDR_EXP 218
16757: PUSH
16758: LD_OWVAR 1
16762: PUSH
16763: LD_INT 2100
16765: PLUS
16766: ST_TO_ADDR
16767: GO 16783
// The_Last_Time = tick + 5 5$0 ;
16769: LD_ADDR_EXP 218
16773: PUSH
16774: LD_OWVAR 1
16778: PUSH
16779: LD_INT 10500
16781: PLUS
16782: ST_TO_ADDR
// Americans_has_sib_rocket = FilterAllUnits ( [ [ f_side , americans ] , [ f_weapon , us_siberium_rocket ] ] ) ;
16783: LD_ADDR_VAR 0 3
16787: PUSH
16788: LD_INT 22
16790: PUSH
16791: LD_EXP 176
16795: PUSH
16796: EMPTY
16797: LIST
16798: LIST
16799: PUSH
16800: LD_INT 34
16802: PUSH
16803: LD_INT 8
16805: PUSH
16806: EMPTY
16807: LIST
16808: LIST
16809: PUSH
16810: EMPTY
16811: LIST
16812: LIST
16813: PPUSH
16814: CALL_OW 69
16818: ST_TO_ADDR
// if not ( Americans_has_sib_rocket ) then
16819: LD_VAR 0 3
16823: NOT
16824: IFFALSE 16834
// Friend_has_to_escape = true ;
16826: LD_ADDR_EXP 228
16830: PUSH
16831: LD_INT 1
16833: ST_TO_ADDR
// end ; end ;
16834: GO 16837
16836: POP
// DialogueOFF ;
16837: CALL_OW 7
// end ;
16841: PPOPN 3
16843: END
// function FriendSelectedDialogue ; begin
16844: LD_INT 0
16846: PPUSH
// ComStop ( Friend ) ;
16847: LD_EXP 21
16851: PPUSH
16852: CALL_OW 141
// CenterNowOnUnits ( Friend ) ;
16856: LD_EXP 21
16860: PPUSH
16861: CALL_OW 87
// DialogueON ;
16865: CALL_OW 6
// Say ( JMM , D16-JMM-1 ) ;
16869: LD_EXP 1
16873: PPUSH
16874: LD_STRING D16-JMM-1
16876: PPUSH
16877: CALL_OW 88
// Say ( Friend , D16-Friend-1 ) ;
16881: LD_EXP 21
16885: PPUSH
16886: LD_STRING D16-Friend-1
16888: PPUSH
16889: CALL_OW 88
// Say ( JMM , D16-JMM-2 ) ;
16893: LD_EXP 1
16897: PPUSH
16898: LD_STRING D16-JMM-2
16900: PPUSH
16901: CALL_OW 88
// DialogueOFF ;
16905: CALL_OW 7
// end ;
16909: LD_VAR 0 1
16913: RET
// every 0 0$1 trigger ( Friend_has_to_escape ) and IsOk ( Friend ) do
16914: LD_EXP 228
16918: PUSH
16919: LD_EXP 21
16923: PPUSH
16924: CALL_OW 302
16928: AND
16929: IFFALSE 17076
16931: GO 16933
16933: DISABLE
// begin disable ;
16934: DISABLE
// if ( Alaskite_Bomb_Time + 0 0$15 < tick ) then
16935: LD_EXP 212
16939: PUSH
16940: LD_INT 525
16942: PLUS
16943: PUSH
16944: LD_OWVAR 1
16948: LESS
16949: IFFALSE 17075
// begin if IsSelected ( Friend ) then
16951: LD_EXP 21
16955: PPUSH
16956: CALL_OW 306
16960: IFFALSE 16971
// DeselectUnits ( Friend ) ;
16962: LD_EXP 21
16966: PPUSH
16967: CALL_OW 491
// enable ( Friend_Escapes ) ;
16971: LD_EXP 156
16975: ENABLE_MARKED
// ComMoveXY ( Friend , 20 , 2 ) ;
16976: LD_EXP 21
16980: PPUSH
16981: LD_INT 20
16983: PPUSH
16984: LD_INT 2
16986: PPUSH
16987: CALL_OW 111
// AddComHold ( Friend ) ;
16991: LD_EXP 21
16995: PPUSH
16996: CALL_OW 200
// Wait ( 0 0$0.5 ) ;
17000: LD_INT 18
17002: PPUSH
17003: CALL_OW 67
// while ( HasTask ( Friend ) and not ( IsSelected ( Friend ) ) ) do
17007: LD_EXP 21
17011: PPUSH
17012: CALL_OW 314
17016: PUSH
17017: LD_EXP 21
17021: PPUSH
17022: CALL_OW 306
17026: NOT
17027: AND
17028: IFFALSE 17039
// Wait ( 0 0$1 ) ;
17030: LD_INT 35
17032: PPUSH
17033: CALL_OW 67
17037: GO 17007
// if IsSelected ( Friend ) then
17039: LD_EXP 21
17043: PPUSH
17044: CALL_OW 306
17048: IFFALSE 17056
// FriendSelectedDialogue else
17050: CALL 16844 0 0
17054: GO 17073
// begin DestroyUnit ( Friend ) ;
17056: LD_EXP 21
17060: PPUSH
17061: CALL_OW 65
// Friend_escaped = true ;
17065: LD_ADDR_EXP 220
17069: PUSH
17070: LD_INT 1
17072: ST_TO_ADDR
// end ; end else
17073: GO 17076
// enable ;
17075: ENABLE
// end ;
17076: END
// every 0 0$1 trigger ( The_Last_Time <> 0 ) and ( The_Last_Time < tick ) marked 10 do var Americans_has_sib_rocket , Sold1 , list_of_all_males , UnNamed_males , Named_males ;
17077: LD_EXP 218
17081: PUSH
17082: LD_INT 0
17084: NONEQUAL
17085: PUSH
17086: LD_EXP 218
17090: PUSH
17091: LD_OWVAR 1
17095: LESS
17096: AND
17097: IFFALSE 17655
17099: GO 17101
17101: DISABLE
17102: LD_INT 0
17104: PPUSH
17105: PPUSH
17106: PPUSH
17107: PPUSH
17108: PPUSH
// begin Named_males = [ Bobby , Cyrus , Frank , Brown , Gladstone , Cornell , Denis , Gary , Stevens ] ;
17109: LD_ADDR_VAR 0 5
17113: PUSH
17114: LD_EXP 3
17118: PUSH
17119: LD_EXP 4
17123: PUSH
17124: LD_EXP 6
17128: PUSH
17129: LD_EXP 7
17133: PUSH
17134: LD_EXP 9
17138: PUSH
17139: LD_EXP 10
17143: PUSH
17144: LD_EXP 11
17148: PUSH
17149: LD_EXP 15
17153: PUSH
17154: LD_EXP 17
17158: PUSH
17159: EMPTY
17160: LIST
17161: LIST
17162: LIST
17163: LIST
17164: LIST
17165: LIST
17166: LIST
17167: LIST
17168: LIST
17169: ST_TO_ADDR
// list_of_all_males = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] , [ f_sex , sex_male ] , [ f_ok ] , f_not , [ [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_kamikaze ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ] ) ;
17170: LD_ADDR_VAR 0 3
17174: PUSH
17175: LD_INT 22
17177: PUSH
17178: LD_EXP 176
17182: PUSH
17183: EMPTY
17184: LIST
17185: LIST
17186: PUSH
17187: LD_INT 21
17189: PUSH
17190: LD_INT 1
17192: PUSH
17193: EMPTY
17194: LIST
17195: LIST
17196: PUSH
17197: LD_INT 26
17199: PUSH
17200: LD_INT 1
17202: PUSH
17203: EMPTY
17204: LIST
17205: LIST
17206: PUSH
17207: LD_INT 50
17209: PUSH
17210: EMPTY
17211: LIST
17212: PUSH
17213: LD_INT 3
17215: PUSH
17216: LD_INT 2
17218: PUSH
17219: LD_INT 25
17221: PUSH
17222: LD_INT 12
17224: PUSH
17225: EMPTY
17226: LIST
17227: LIST
17228: PUSH
17229: LD_INT 25
17231: PUSH
17232: LD_INT 16
17234: PUSH
17235: EMPTY
17236: LIST
17237: LIST
17238: PUSH
17239: LD_INT 25
17241: PUSH
17242: LD_INT 17
17244: PUSH
17245: EMPTY
17246: LIST
17247: LIST
17248: PUSH
17249: LD_INT 25
17251: PUSH
17252: LD_INT 15
17254: PUSH
17255: EMPTY
17256: LIST
17257: LIST
17258: PUSH
17259: LD_INT 25
17261: PUSH
17262: LD_INT 17
17264: PUSH
17265: EMPTY
17266: LIST
17267: LIST
17268: PUSH
17269: EMPTY
17270: LIST
17271: LIST
17272: LIST
17273: LIST
17274: LIST
17275: LIST
17276: PUSH
17277: EMPTY
17278: LIST
17279: PUSH
17280: EMPTY
17281: LIST
17282: LIST
17283: LIST
17284: LIST
17285: LIST
17286: LIST
17287: PPUSH
17288: CALL_OW 69
17292: ST_TO_ADDR
// UnNamed_males = list_of_all_males diff ( [ JMM , Powell ] ^ Named_males ) ;
17293: LD_ADDR_VAR 0 4
17297: PUSH
17298: LD_VAR 0 3
17302: PUSH
17303: LD_EXP 1
17307: PUSH
17308: LD_EXP 2
17312: PUSH
17313: EMPTY
17314: LIST
17315: LIST
17316: PUSH
17317: LD_VAR 0 5
17321: ADD
17322: DIFF
17323: ST_TO_ADDR
// if UnNamed_males <> 0 then
17324: LD_VAR 0 4
17328: PUSH
17329: LD_INT 0
17331: NONEQUAL
17332: IFFALSE 17360
// begin Sold1 = list_of_all_males [ Rand ( 1 , list_of_all_males ) ] ;
17334: LD_ADDR_VAR 0 2
17338: PUSH
17339: LD_VAR 0 3
17343: PUSH
17344: LD_INT 1
17346: PPUSH
17347: LD_VAR 0 3
17351: PPUSH
17352: CALL_OW 12
17356: ARRAY
17357: ST_TO_ADDR
// end else
17358: GO 17429
// begin Named_males = UnitFilter ( Named_males , [ [ f_ok ] , [ f_sex , sex_male ] ] ) ;
17360: LD_ADDR_VAR 0 5
17364: PUSH
17365: LD_VAR 0 5
17369: PPUSH
17370: LD_INT 50
17372: PUSH
17373: EMPTY
17374: LIST
17375: PUSH
17376: LD_INT 26
17378: PUSH
17379: LD_INT 1
17381: PUSH
17382: EMPTY
17383: LIST
17384: LIST
17385: PUSH
17386: EMPTY
17387: LIST
17388: LIST
17389: PPUSH
17390: CALL_OW 72
17394: ST_TO_ADDR
// if named_males <> 0 then
17395: LD_VAR 0 5
17399: PUSH
17400: LD_INT 0
17402: NONEQUAL
17403: IFFALSE 17429
// Sold1 = Named_males [ Rand ( 1 , Named_males ) ] ;
17405: LD_ADDR_VAR 0 2
17409: PUSH
17410: LD_VAR 0 5
17414: PUSH
17415: LD_INT 1
17417: PPUSH
17418: LD_VAR 0 5
17422: PPUSH
17423: CALL_OW 12
17427: ARRAY
17428: ST_TO_ADDR
// end ; Americans_has_sib_rocket = FilterAllUnits ( [ [ f_side , americans ] , [ f_weapon , us_siberium_rocket ] ] ) ;
17429: LD_ADDR_VAR 0 1
17433: PUSH
17434: LD_INT 22
17436: PUSH
17437: LD_EXP 176
17441: PUSH
17442: EMPTY
17443: LIST
17444: LIST
17445: PUSH
17446: LD_INT 34
17448: PUSH
17449: LD_INT 8
17451: PUSH
17452: EMPTY
17453: LIST
17454: LIST
17455: PUSH
17456: EMPTY
17457: LIST
17458: LIST
17459: PPUSH
17460: CALL_OW 69
17464: ST_TO_ADDR
// DialogueON ;
17465: CALL_OW 6
// if ( Americans_has_sib_rocket = 0 ) and Friend_Accepted then
17469: LD_VAR 0 1
17473: PUSH
17474: LD_INT 0
17476: EQUAL
17477: PUSH
17478: LD_EXP 219
17482: AND
17483: IFFALSE 17588
// begin Say ( Platonov , D16a-Pla-1 ) ;
17485: LD_EXP 26
17489: PPUSH
17490: LD_STRING D16a-Pla-1
17492: PPUSH
17493: CALL_OW 88
// if IsOk ( Stevens ) then
17497: LD_EXP 17
17501: PPUSH
17502: CALL_OW 302
17506: IFFALSE 17522
// Say ( Stevens , D16a-Huck-1 ) else
17508: LD_EXP 17
17512: PPUSH
17513: LD_STRING D16a-Huck-1
17515: PPUSH
17516: CALL_OW 88
17520: GO 17534
// Say ( Sold1 , D16a-Sol1-1 ) ;
17522: LD_VAR 0 2
17526: PPUSH
17527: LD_STRING D16a-Sol1-1
17529: PPUSH
17530: CALL_OW 88
// if Friend_Escaped then
17534: LD_EXP 220
17538: IFFALSE 17554
// Say ( JMM , D16a-JMM-1 ) else
17540: LD_EXP 1
17544: PPUSH
17545: LD_STRING D16a-JMM-1
17547: PPUSH
17548: CALL_OW 88
17552: GO 17578
// begin Say ( JMM , D16a-JMM-1a ) ;
17554: LD_EXP 1
17558: PPUSH
17559: LD_STRING D16a-JMM-1a
17561: PPUSH
17562: CALL_OW 88
// Say ( Friend , D16a-Friend-1 ) ;
17566: LD_EXP 21
17570: PPUSH
17571: LD_STRING D16a-Friend-1
17573: PPUSH
17574: CALL_OW 88
// end ; Russian_Siberite_Attack = true ;
17578: LD_ADDR_EXP 215
17582: PUSH
17583: LD_INT 1
17585: ST_TO_ADDR
// end else
17586: GO 17651
// if ( Americans_has_sib_rocket = 0 ) and not ( Friend_Accepted ) then
17588: LD_VAR 0 1
17592: PUSH
17593: LD_INT 0
17595: EQUAL
17596: PUSH
17597: LD_EXP 219
17601: NOT
17602: AND
17603: IFFALSE 17639
// begin Say ( Platonov , D16b-Pla-1 ) ;
17605: LD_EXP 26
17609: PPUSH
17610: LD_STRING D16b-Pla-1
17612: PPUSH
17613: CALL_OW 88
// Say ( JMM , D16b-JMM-1 ) ;
17617: LD_EXP 1
17621: PPUSH
17622: LD_STRING D16b-JMM-1
17624: PPUSH
17625: CALL_OW 88
// Russian_Siberite_Attack = true ;
17629: LD_ADDR_EXP 215
17633: PUSH
17634: LD_INT 1
17636: ST_TO_ADDR
// end else
17637: GO 17651
// begin Say ( Platonov , D16c-Pla-1 ) ;
17639: LD_EXP 26
17643: PPUSH
17644: LD_STRING D16c-Pla-1
17646: PPUSH
17647: CALL_OW 88
// end ; DialogueOFF ;
17651: CALL_OW 7
// end ;
17655: PPOPN 5
17657: END
// every 0 0$2 trigger CenterJMM do var X , Y , NewX , NewY ;
17658: LD_EXP 68
17662: IFFALSE 17823
17664: GO 17666
17666: DISABLE
17667: LD_INT 0
17669: PPUSH
17670: PPUSH
17671: PPUSH
17672: PPUSH
// begin if IsInUnit ( JMM ) = JMM_veh then
17673: LD_EXP 1
17677: PPUSH
17678: CALL_OW 310
17682: PUSH
17683: LD_EXP 57
17687: EQUAL
17688: IFFALSE 17778
// begin X = GetX ( JMM_veh ) ;
17690: LD_ADDR_VAR 0 1
17694: PUSH
17695: LD_EXP 57
17699: PPUSH
17700: CALL_OW 250
17704: ST_TO_ADDR
// Y = GetY ( Jmm_veh ) ;
17705: LD_ADDR_VAR 0 2
17709: PUSH
17710: LD_EXP 57
17714: PPUSH
17715: CALL_OW 251
17719: ST_TO_ADDR
// NewX = ShiftX ( X , GetDir ( JMM_veh ) , 5 ) ;
17720: LD_ADDR_VAR 0 3
17724: PUSH
17725: LD_VAR 0 1
17729: PPUSH
17730: LD_EXP 57
17734: PPUSH
17735: CALL_OW 254
17739: PPUSH
17740: LD_INT 5
17742: PPUSH
17743: CALL_OW 272
17747: ST_TO_ADDR
// NewY = ShiftY ( Y , GetDir ( JMM_veh ) , 5 ) ;
17748: LD_ADDR_VAR 0 4
17752: PUSH
17753: LD_VAR 0 2
17757: PPUSH
17758: LD_EXP 57
17762: PPUSH
17763: CALL_OW 254
17767: PPUSH
17768: LD_INT 5
17770: PPUSH
17771: CALL_OW 273
17775: ST_TO_ADDR
// end else
17776: GO 17808
// begin NewX = GetX ( JMM ) ;
17778: LD_ADDR_VAR 0 3
17782: PUSH
17783: LD_EXP 1
17787: PPUSH
17788: CALL_OW 250
17792: ST_TO_ADDR
// NewY = GetY ( JMM ) ;
17793: LD_ADDR_VAR 0 4
17797: PUSH
17798: LD_EXP 1
17802: PPUSH
17803: CALL_OW 251
17807: ST_TO_ADDR
// end ; CenterOnXY ( NewX , NewY ) ;
17808: LD_VAR 0 3
17812: PPUSH
17813: LD_VAR 0 4
17817: PPUSH
17818: CALL_OW 84
// enable ;
17822: ENABLE
// end ; end_of_file
17823: PPOPN 4
17825: END
// var taken ; export function ComMoveXYR ( Un , x , y , r , b ) ; var Hex ; begin
17826: LD_INT 0
17828: PPUSH
17829: PPUSH
// Hex = RandHexXYR ( x , y , r , b ) ;
17830: LD_ADDR_VAR 0 7
17834: PUSH
17835: LD_VAR 0 2
17839: PPUSH
17840: LD_VAR 0 3
17844: PPUSH
17845: LD_VAR 0 4
17849: PPUSH
17850: LD_VAR 0 5
17854: PPUSH
17855: CALL_OW 17
17859: ST_TO_ADDR
// ComMoveXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) end ;
17860: LD_VAR 0 1
17864: PPUSH
17865: LD_VAR 0 7
17869: PUSH
17870: LD_INT 1
17872: ARRAY
17873: PPUSH
17874: LD_VAR 0 7
17878: PUSH
17879: LD_INT 2
17881: ARRAY
17882: PPUSH
17883: CALL_OW 111
17887: LD_VAR 0 6
17891: RET
// export function WaitTask ( list_of_units , reaction ) ; var i , busy ; begin
17892: LD_INT 0
17894: PPUSH
17895: PPUSH
17896: PPUSH
// wait ( 2 ) ;
17897: LD_INT 2
17899: PPUSH
17900: CALL_OW 67
// repeat busy = false ;
17904: LD_ADDR_VAR 0 5
17908: PUSH
17909: LD_INT 0
17911: ST_TO_ADDR
// for i in list_of_units do
17912: LD_ADDR_VAR 0 4
17916: PUSH
17917: LD_VAR 0 1
17921: PUSH
17922: FOR_IN
17923: IFFALSE 17957
// if IsOk ( i ) then
17925: LD_VAR 0 4
17929: PPUSH
17930: CALL_OW 302
17934: IFFALSE 17955
// if HasTask ( i ) then
17936: LD_VAR 0 4
17940: PPUSH
17941: CALL_OW 314
17945: IFFALSE 17955
// begin busy = true ;
17947: LD_ADDR_VAR 0 5
17951: PUSH
17952: LD_INT 1
17954: ST_TO_ADDR
// end ;
17955: GO 17922
17957: POP
17958: POP
// if busy then
17959: LD_VAR 0 5
17963: IFFALSE 17978
// wait ( 0 0$1 * reaction ) ;
17965: LD_INT 35
17967: PUSH
17968: LD_VAR 0 2
17972: MUL
17973: PPUSH
17974: CALL_OW 67
// until not ( busy ) ;
17978: LD_VAR 0 5
17982: NOT
17983: IFFALSE 17904
// end ;
17985: LD_VAR 0 3
17989: RET
// export function WaitPos ( x_pos , y_pos , dist , list_of_units , reaction ) ; var i , are_at_position ; begin
17990: LD_INT 0
17992: PPUSH
17993: PPUSH
17994: PPUSH
// wait ( 2 ) ;
17995: LD_INT 2
17997: PPUSH
17998: CALL_OW 67
// repeat are_at_position = true ;
18002: LD_ADDR_VAR 0 8
18006: PUSH
18007: LD_INT 1
18009: ST_TO_ADDR
// for i in list_of_units do
18010: LD_ADDR_VAR 0 7
18014: PUSH
18015: LD_VAR 0 4
18019: PUSH
18020: FOR_IN
18021: IFFALSE 18071
// if IsOk ( i ) then
18023: LD_VAR 0 7
18027: PPUSH
18028: CALL_OW 302
18032: IFFALSE 18069
// if GetDistUnitXY ( i , x_pos , y_pos ) > dist then
18034: LD_VAR 0 7
18038: PPUSH
18039: LD_VAR 0 1
18043: PPUSH
18044: LD_VAR 0 2
18048: PPUSH
18049: CALL_OW 297
18053: PUSH
18054: LD_VAR 0 3
18058: GREATER
18059: IFFALSE 18069
// are_at_position = false ;
18061: LD_ADDR_VAR 0 8
18065: PUSH
18066: LD_INT 0
18068: ST_TO_ADDR
18069: GO 18020
18071: POP
18072: POP
// if not ( are_at_position ) then
18073: LD_VAR 0 8
18077: NOT
18078: IFFALSE 18093
// wait ( 0 0$1 * reaction ) ;
18080: LD_INT 35
18082: PUSH
18083: LD_VAR 0 5
18087: MUL
18088: PPUSH
18089: CALL_OW 67
// until are_at_position ;
18093: LD_VAR 0 8
18097: IFFALSE 18002
// end ;
18099: LD_VAR 0 6
18103: RET
// export function FindMaxSumSkill ( Uns , sex ) ; var Skill_Sum , Selected_unit , New_Skill_Sum , i ; begin
18104: LD_INT 0
18106: PPUSH
18107: PPUSH
18108: PPUSH
18109: PPUSH
18110: PPUSH
// Skill_Sum = - 1 ;
18111: LD_ADDR_VAR 0 4
18115: PUSH
18116: LD_INT 1
18118: NEG
18119: ST_TO_ADDR
// Selected_unit = 0 ;
18120: LD_ADDR_VAR 0 5
18124: PUSH
18125: LD_INT 0
18127: ST_TO_ADDR
// for i = 1 to Uns do
18128: LD_ADDR_VAR 0 7
18132: PUSH
18133: DOUBLE
18134: LD_INT 1
18136: DEC
18137: ST_TO_ADDR
18138: LD_VAR 0 1
18142: PUSH
18143: FOR_TO
18144: IFFALSE 18303
// begin New_Skill_Sum = GetSkill ( Uns [ i ] , skill_combat ) + GetSkill ( Uns [ i ] , skill_engineering ) + GetSkill ( Uns [ i ] , skill_mechanical ) + GetSkill ( Uns [ i ] , skill_scientistic ) ;
18146: LD_ADDR_VAR 0 6
18150: PUSH
18151: LD_VAR 0 1
18155: PUSH
18156: LD_VAR 0 7
18160: ARRAY
18161: PPUSH
18162: LD_INT 1
18164: PPUSH
18165: CALL_OW 259
18169: PUSH
18170: LD_VAR 0 1
18174: PUSH
18175: LD_VAR 0 7
18179: ARRAY
18180: PPUSH
18181: LD_INT 2
18183: PPUSH
18184: CALL_OW 259
18188: PLUS
18189: PUSH
18190: LD_VAR 0 1
18194: PUSH
18195: LD_VAR 0 7
18199: ARRAY
18200: PPUSH
18201: LD_INT 3
18203: PPUSH
18204: CALL_OW 259
18208: PLUS
18209: PUSH
18210: LD_VAR 0 1
18214: PUSH
18215: LD_VAR 0 7
18219: ARRAY
18220: PPUSH
18221: LD_INT 4
18223: PPUSH
18224: CALL_OW 259
18228: PLUS
18229: ST_TO_ADDR
// if New_Skill_Sum > Skill_Sum and ( ( sex = 0 ) or ( sex = GetSex ( Uns [ i ] ) ) ) then
18230: LD_VAR 0 6
18234: PUSH
18235: LD_VAR 0 4
18239: GREATER
18240: PUSH
18241: LD_VAR 0 2
18245: PUSH
18246: LD_INT 0
18248: EQUAL
18249: PUSH
18250: LD_VAR 0 2
18254: PUSH
18255: LD_VAR 0 1
18259: PUSH
18260: LD_VAR 0 7
18264: ARRAY
18265: PPUSH
18266: CALL_OW 258
18270: EQUAL
18271: OR
18272: AND
18273: IFFALSE 18301
// begin Skill_Sum = New_Skill_Sum ;
18275: LD_ADDR_VAR 0 4
18279: PUSH
18280: LD_VAR 0 6
18284: ST_TO_ADDR
// Selected_unit = Uns [ i ] ;
18285: LD_ADDR_VAR 0 5
18289: PUSH
18290: LD_VAR 0 1
18294: PUSH
18295: LD_VAR 0 7
18299: ARRAY
18300: ST_TO_ADDR
// end ; end ;
18301: GO 18143
18303: POP
18304: POP
// result = Selected_unit ;
18305: LD_ADDR_VAR 0 3
18309: PUSH
18310: LD_VAR 0 5
18314: ST_TO_ADDR
// end ;
18315: LD_VAR 0 3
18319: RET
// export function FindMinSumSkill ( Uns , sex ) ; var Skill_Sum , Selected_unit , New_Skill_Sum , i ; begin
18320: LD_INT 0
18322: PPUSH
18323: PPUSH
18324: PPUSH
18325: PPUSH
18326: PPUSH
// Skill_Sum = 100 ;
18327: LD_ADDR_VAR 0 4
18331: PUSH
18332: LD_INT 100
18334: ST_TO_ADDR
// Selected_unit = 0 ;
18335: LD_ADDR_VAR 0 5
18339: PUSH
18340: LD_INT 0
18342: ST_TO_ADDR
// for i = 1 to Uns do
18343: LD_ADDR_VAR 0 7
18347: PUSH
18348: DOUBLE
18349: LD_INT 1
18351: DEC
18352: ST_TO_ADDR
18353: LD_VAR 0 1
18357: PUSH
18358: FOR_TO
18359: IFFALSE 18518
// begin New_Skill_Sum = GetSkill ( Uns [ i ] , skill_combat ) + GetSkill ( Uns [ i ] , skill_engineering ) + GetSkill ( Uns [ i ] , skill_mechanical ) + GetSkill ( Uns [ i ] , skill_scientistic ) ;
18361: LD_ADDR_VAR 0 6
18365: PUSH
18366: LD_VAR 0 1
18370: PUSH
18371: LD_VAR 0 7
18375: ARRAY
18376: PPUSH
18377: LD_INT 1
18379: PPUSH
18380: CALL_OW 259
18384: PUSH
18385: LD_VAR 0 1
18389: PUSH
18390: LD_VAR 0 7
18394: ARRAY
18395: PPUSH
18396: LD_INT 2
18398: PPUSH
18399: CALL_OW 259
18403: PLUS
18404: PUSH
18405: LD_VAR 0 1
18409: PUSH
18410: LD_VAR 0 7
18414: ARRAY
18415: PPUSH
18416: LD_INT 3
18418: PPUSH
18419: CALL_OW 259
18423: PLUS
18424: PUSH
18425: LD_VAR 0 1
18429: PUSH
18430: LD_VAR 0 7
18434: ARRAY
18435: PPUSH
18436: LD_INT 4
18438: PPUSH
18439: CALL_OW 259
18443: PLUS
18444: ST_TO_ADDR
// if New_Skill_Sum < Skill_Sum and ( ( sex = 0 ) or ( sex = GetSex ( Uns [ i ] ) ) ) then
18445: LD_VAR 0 6
18449: PUSH
18450: LD_VAR 0 4
18454: LESS
18455: PUSH
18456: LD_VAR 0 2
18460: PUSH
18461: LD_INT 0
18463: EQUAL
18464: PUSH
18465: LD_VAR 0 2
18469: PUSH
18470: LD_VAR 0 1
18474: PUSH
18475: LD_VAR 0 7
18479: ARRAY
18480: PPUSH
18481: CALL_OW 258
18485: EQUAL
18486: OR
18487: AND
18488: IFFALSE 18516
// begin Skill_Sum = New_Skill_Sum ;
18490: LD_ADDR_VAR 0 4
18494: PUSH
18495: LD_VAR 0 6
18499: ST_TO_ADDR
// Selected_unit = Uns [ i ] ;
18500: LD_ADDR_VAR 0 5
18504: PUSH
18505: LD_VAR 0 1
18509: PUSH
18510: LD_VAR 0 7
18514: ARRAY
18515: ST_TO_ADDR
// end ; end ;
18516: GO 18358
18518: POP
18519: POP
// result = Selected_unit ;
18520: LD_ADDR_VAR 0 3
18524: PUSH
18525: LD_VAR 0 5
18529: ST_TO_ADDR
// end ;
18530: LD_VAR 0 3
18534: RET
// export function RSiberiteAttack ( Rocket ) ; var American_units , Selected_unit , Factories , Teleport1 , Teleport2 , Un ; begin
18535: LD_INT 0
18537: PPUSH
18538: PPUSH
18539: PPUSH
18540: PPUSH
18541: PPUSH
18542: PPUSH
18543: PPUSH
// Selected_unit = 0 ;
18544: LD_ADDR_VAR 0 4
18548: PUSH
18549: LD_INT 0
18551: ST_TO_ADDR
// American_units = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_building ] ] ) ;
18552: LD_ADDR_VAR 0 3
18556: PUSH
18557: LD_INT 22
18559: PUSH
18560: LD_EXP 176
18564: PUSH
18565: EMPTY
18566: LIST
18567: LIST
18568: PUSH
18569: LD_INT 21
18571: PUSH
18572: LD_INT 3
18574: PUSH
18575: EMPTY
18576: LIST
18577: LIST
18578: PUSH
18579: EMPTY
18580: LIST
18581: LIST
18582: PPUSH
18583: CALL_OW 69
18587: ST_TO_ADDR
// Factories = UnitFilter ( American_units , [ f_btype , b_factory ] ) ;
18588: LD_ADDR_VAR 0 5
18592: PUSH
18593: LD_VAR 0 3
18597: PPUSH
18598: LD_INT 30
18600: PUSH
18601: LD_INT 3
18603: PUSH
18604: EMPTY
18605: LIST
18606: LIST
18607: PPUSH
18608: CALL_OW 72
18612: ST_TO_ADDR
// if Factories then
18613: LD_VAR 0 5
18617: IFFALSE 18684
// begin Selected_unit = Factories [ 1 ] ;
18619: LD_ADDR_VAR 0 4
18623: PUSH
18624: LD_VAR 0 5
18628: PUSH
18629: LD_INT 1
18631: ARRAY
18632: ST_TO_ADDR
// for Un in Factories do
18633: LD_ADDR_VAR 0 8
18637: PUSH
18638: LD_VAR 0 5
18642: PUSH
18643: FOR_IN
18644: IFFALSE 18680
// if UnitsInside ( Un ) > UnitsInside ( Selected_unit ) then
18646: LD_VAR 0 8
18650: PPUSH
18651: CALL_OW 313
18655: PUSH
18656: LD_VAR 0 4
18660: PPUSH
18661: CALL_OW 313
18665: GREATER
18666: IFFALSE 18678
// Selected_unit = Un ;
18668: LD_ADDR_VAR 0 4
18672: PUSH
18673: LD_VAR 0 8
18677: ST_TO_ADDR
18678: GO 18643
18680: POP
18681: POP
// end else
18682: GO 18714
// if American_units then
18684: LD_VAR 0 3
18688: IFFALSE 18714
// begin Selected_unit = American_units [ Rand ( 1 , American_units ) ] ;
18690: LD_ADDR_VAR 0 4
18694: PUSH
18695: LD_VAR 0 3
18699: PUSH
18700: LD_INT 1
18702: PPUSH
18703: LD_VAR 0 3
18707: PPUSH
18708: CALL_OW 12
18712: ARRAY
18713: ST_TO_ADDR
// end ; if Rand ( 1 , 2 ) = 1 then
18714: LD_INT 1
18716: PPUSH
18717: LD_INT 2
18719: PPUSH
18720: CALL_OW 12
18724: PUSH
18725: LD_INT 1
18727: EQUAL
18728: IFFALSE 18884
// begin Teleport1 = GetUnitNumber ( 165 , 60 ) ;
18730: LD_ADDR_VAR 0 6
18734: PUSH
18735: LD_INT 165
18737: PPUSH
18738: LD_INT 60
18740: PPUSH
18741: CALL_OW 438
18745: ST_TO_ADDR
// Teleport2 = GetUnitNumber ( 182 , 87 ) ;
18746: LD_ADDR_VAR 0 7
18750: PUSH
18751: LD_INT 182
18753: PPUSH
18754: LD_INT 87
18756: PPUSH
18757: CALL_OW 438
18761: ST_TO_ADDR
// if Rand ( 1 , 2 ) = 1 then
18762: LD_INT 1
18764: PPUSH
18765: LD_INT 2
18767: PPUSH
18768: CALL_OW 12
18772: PUSH
18773: LD_INT 1
18775: EQUAL
18776: IFFALSE 18832
// begin if IsOk ( Teleport1 ) then
18778: LD_VAR 0 6
18782: PPUSH
18783: CALL_OW 302
18787: IFFALSE 18805
// ComEnterUnit ( Rocket , Teleport1 ) else
18789: LD_VAR 0 1
18793: PPUSH
18794: LD_VAR 0 6
18798: PPUSH
18799: CALL_OW 120
18803: GO 18830
// if IsOk ( Teleport2 ) then
18805: LD_VAR 0 7
18809: PPUSH
18810: CALL_OW 302
18814: IFFALSE 18830
// ComEnterUnit ( Rocket , Teleport2 ) end else
18816: LD_VAR 0 1
18820: PPUSH
18821: LD_VAR 0 7
18825: PPUSH
18826: CALL_OW 120
18830: GO 18884
// begin if IsOk ( Teleport2 ) then
18832: LD_VAR 0 7
18836: PPUSH
18837: CALL_OW 302
18841: IFFALSE 18859
// ComEnterUnit ( Rocket , Teleport2 ) else
18843: LD_VAR 0 1
18847: PPUSH
18848: LD_VAR 0 7
18852: PPUSH
18853: CALL_OW 120
18857: GO 18884
// if IsOk ( Teleport1 ) then
18859: LD_VAR 0 6
18863: PPUSH
18864: CALL_OW 302
18868: IFFALSE 18884
// ComEnterUnit ( Rocket , Teleport1 ) end ;
18870: LD_VAR 0 1
18874: PPUSH
18875: LD_VAR 0 6
18879: PPUSH
18880: CALL_OW 120
// end ; AddComAttackPlace ( Rocket , GetX ( Selected_unit ) , GetY ( Selected_unit ) ) ;
18884: LD_VAR 0 1
18888: PPUSH
18889: LD_VAR 0 4
18893: PPUSH
18894: CALL_OW 250
18898: PPUSH
18899: LD_VAR 0 4
18903: PPUSH
18904: CALL_OW 251
18908: PPUSH
18909: CALL_OW 176
// end ;
18913: LD_VAR 0 2
18917: RET
// on SailEvent ( Event ) do begin case Event of Map_am_base :
18918: LD_VAR 0 1
18922: PUSH
18923: LD_EXP 161
18927: DOUBLE
18928: EQUAL
18929: IFTRUE 18933
18931: GO 18980
18933: POP
// begin Wait ( 0 0$1 ) ;
18934: LD_INT 35
18936: PPUSH
18937: CALL_OW 67
// RevealFogArea ( americans , Map_am ) ;
18941: LD_EXP 176
18945: PPUSH
18946: LD_INT 20
18948: PPUSH
18949: CALL_OW 332
// CenterOnXY ( 60 , 88 ) ;
18953: LD_INT 60
18955: PPUSH
18956: LD_INT 88
18958: PPUSH
18959: CALL_OW 84
// Wait ( 0 0$4 ) ;
18963: LD_INT 140
18965: PPUSH
18966: CALL_OW 67
// CenterJMM = true ;
18970: LD_ADDR_EXP 68
18974: PUSH
18975: LD_INT 1
18977: ST_TO_ADDR
// end ; Map_rus_attack :
18978: GO 19328
18980: LD_EXP 162
18984: DOUBLE
18985: EQUAL
18986: IFTRUE 18990
18988: GO 19084
18990: POP
// begin Wait ( 0 0$4 ) ;
18991: LD_INT 140
18993: PPUSH
18994: CALL_OW 67
// CenterOnXY ( 118 , 180 ) ;
18998: LD_INT 118
19000: PPUSH
19001: LD_INT 180
19003: PPUSH
19004: CALL_OW 84
// Wait ( 0 0$4 ) ;
19008: LD_INT 140
19010: PPUSH
19011: CALL_OW 67
// CenterOnXY ( 76 , 133 ) ;
19015: LD_INT 76
19017: PPUSH
19018: LD_INT 133
19020: PPUSH
19021: CALL_OW 84
// Wait ( 0 0$3 ) ;
19025: LD_INT 105
19027: PPUSH
19028: CALL_OW 67
// if IsInUnit ( JMM ) <> 0 then
19032: LD_EXP 1
19036: PPUSH
19037: CALL_OW 310
19041: PUSH
19042: LD_INT 0
19044: NONEQUAL
19045: IFFALSE 19058
// CenterOnUnits ( JMM_veh ) else
19047: LD_EXP 57
19051: PPUSH
19052: CALL_OW 85
19056: GO 19067
// CenterOnUnits ( JMM ) ;
19058: LD_EXP 1
19062: PPUSH
19063: CALL_OW 85
// if not ( End_of_journey ) then
19067: LD_EXP 66
19071: NOT
19072: IFFALSE 19082
// CenterJMM = true ;
19074: LD_ADDR_EXP 68
19078: PUSH
19079: LD_INT 1
19081: ST_TO_ADDR
// end ; Send_Helpers :
19082: GO 19328
19084: LD_EXP 163
19088: DOUBLE
19089: EQUAL
19090: IFTRUE 19094
19092: GO 19101
19094: POP
// SendHelpers ; Start_Am1_Base :
19095: CALL 21817 0 0
19099: GO 19328
19101: LD_EXP 164
19105: DOUBLE
19106: EQUAL
19107: IFTRUE 19111
19109: GO 19118
19111: POP
// StartAm1Base ; Send_Material :
19112: CALL 23252 0 0
19116: GO 19328
19118: LD_EXP 165
19122: DOUBLE
19123: EQUAL
19124: IFTRUE 19128
19126: GO 19135
19128: POP
// SendMaterial ; Capture_JMM_Vehicles :
19129: CALL 22798 0 0
19133: GO 19328
19135: LD_EXP 166
19139: DOUBLE
19140: EQUAL
19141: IFTRUE 19145
19143: GO 19152
19145: POP
// CaptureJMMVehicles ; First_Powells_Attack :
19146: CALL 21238 0 0
19150: GO 19328
19152: LD_EXP 167
19156: DOUBLE
19157: EQUAL
19158: IFTRUE 19162
19160: GO 19169
19162: POP
// FirstPowellsAttack ; Second_Powells_Attack :
19163: CALL 24869 0 0
19167: GO 19328
19169: LD_EXP 168
19173: DOUBLE
19174: EQUAL
19175: IFTRUE 19179
19177: GO 19186
19179: POP
// SecondPowellsAttack ; Run_JMM_Vehicles :
19180: CALL 25843 0 0
19184: GO 19328
19186: LD_EXP 169
19190: DOUBLE
19191: EQUAL
19192: IFTRUE 19196
19194: GO 19203
19196: POP
// RunJMMVehicles ; Rus1_Attack :
19197: CALL 20964 0 0
19201: GO 19328
19203: LD_EXP 170
19207: DOUBLE
19208: EQUAL
19209: IFTRUE 19213
19211: GO 19220
19213: POP
// Rus1Attack ; Rus_Attack :
19214: CALL 38271 0 0
19218: GO 19328
19220: LD_EXP 171
19224: DOUBLE
19225: EQUAL
19226: IFTRUE 19230
19228: GO 19237
19230: POP
// RusAttack ; Retreat_Report :
19231: CALL 47265 0 0
19235: GO 19328
19237: LD_EXP 172
19241: DOUBLE
19242: EQUAL
19243: IFTRUE 19247
19245: GO 19254
19247: POP
// RetreatReport ; JMM_Talk :
19248: CALL 24799 0 0
19252: GO 19328
19254: LD_EXP 173
19258: DOUBLE
19259: EQUAL
19260: IFTRUE 19264
19262: GO 19271
19264: POP
// JMMTalk ; Send_Arabian_Back :
19265: CALL 21579 0 0
19269: GO 19328
19271: LD_EXP 174
19275: DOUBLE
19276: EQUAL
19277: IFTRUE 19281
19279: GO 19293
19281: POP
// SendArabianBack ( Arabian_Outside ) ; Link_Bombs :
19282: LD_EXP 86
19286: PPUSH
19287: CALL 31392 0 1
19291: GO 19328
19293: LD_EXP 175
19297: DOUBLE
19298: EQUAL
19299: IFTRUE 19303
19301: GO 19310
19303: POP
// LinkBombs ; JMM_Is_Ready :
19304: CALL 6070 0 0
19308: GO 19328
19310: LD_EXP 144
19314: DOUBLE
19315: EQUAL
19316: IFTRUE 19320
19318: GO 19327
19320: POP
// JMMIsReady ; end ;
19321: CALL 30295 0 0
19325: GO 19328
19327: POP
// end ;
19328: PPOPN 1
19330: END
// on DialogueSkipped ( i ) do begin Skip = true ;
19331: LD_ADDR_EXP 186
19335: PUSH
19336: LD_INT 1
19338: ST_TO_ADDR
// end ;
19339: PPOPN 1
19341: END
// on VehicleConstructed ( veh , fact ) do begin case GetSide ( veh ) of americans1 :
19342: LD_VAR 0 1
19346: PPUSH
19347: CALL_OW 255
19351: PUSH
19352: LD_EXP 177
19356: DOUBLE
19357: EQUAL
19358: IFTRUE 19362
19360: GO 19374
19362: POP
// Am1VehicleConstructed ( veh ) ; arabians :
19363: LD_VAR 0 1
19367: PPUSH
19368: CALL 24280 0 1
19372: GO 19419
19374: LD_EXP 180
19378: DOUBLE
19379: EQUAL
19380: IFTRUE 19384
19382: GO 19396
19384: POP
// ArVehicleConstructed ( veh ) ; russians :
19385: LD_VAR 0 1
19389: PPUSH
19390: CALL 35160 0 1
19394: GO 19419
19396: LD_EXP 178
19400: DOUBLE
19401: EQUAL
19402: IFTRUE 19406
19404: GO 19418
19406: POP
// BuildGroups ( veh ) ; end ;
19407: LD_VAR 0 1
19411: PPUSH
19412: CALL 45071 0 1
19416: GO 19419
19418: POP
// end ;
19419: PPOPN 2
19421: END
// on VehicleCaptured ( VehNew , VehOld , OrigSide , Hum ) do begin if VehOld = JMM_veh then
19422: LD_VAR 0 2
19426: PUSH
19427: LD_EXP 57
19431: EQUAL
19432: IFFALSE 19450
// Captured_vehicles = Captured_vehicles ^ VehNew ;
19434: LD_ADDR_EXP 60
19438: PUSH
19439: LD_EXP 60
19443: PUSH
19444: LD_VAR 0 1
19448: ADD
19449: ST_TO_ADDR
// if VehOld = Woman_veh then
19450: LD_VAR 0 2
19454: PUSH
19455: LD_EXP 58
19459: EQUAL
19460: IFFALSE 19478
// Captured_vehicles = Captured_vehicles ^ VehNew ;
19462: LD_ADDR_EXP 60
19466: PUSH
19467: LD_EXP 60
19471: PUSH
19472: LD_VAR 0 1
19476: ADD
19477: ST_TO_ADDR
// end ;
19478: PPOPN 4
19480: END
// on BuildingCaptured ( build , origside , eng ) do begin case origside of americans1 :
19481: LD_VAR 0 2
19485: PUSH
19486: LD_EXP 177
19490: DOUBLE
19491: EQUAL
19492: IFTRUE 19496
19494: GO 19516
19496: POP
// begin Say ( Powell , DBack3-Pow-1 ) ;
19497: LD_EXP 2
19501: PPUSH
19502: LD_STRING DBack3-Pow-1
19504: PPUSH
19505: CALL_OW 88
// enable ( out_of_base ) ;
19509: LD_EXP 138
19513: ENABLE_MARKED
// end ; alliance :
19514: GO 19534
19516: LD_EXP 182
19520: DOUBLE
19521: EQUAL
19522: IFTRUE 19526
19524: GO 19533
19526: POP
// begin AllianceBuildingInRed ;
19527: CALL 50868 0 0
// end ; end ;
19531: GO 19534
19533: POP
// end ;
19534: PPOPN 3
19536: END
// on ResearchComplete ( tech , lab ) do var Uns ;
19537: LD_INT 0
19539: PPUSH
// begin if lab in [ RusLab1 , RusLab2 ] then
19540: LD_VAR 0 2
19544: PUSH
19545: LD_INT 2
19547: PUSH
19548: LD_INT 1
19550: PUSH
19551: EMPTY
19552: LIST
19553: LIST
19554: IN
19555: IFFALSE 19574
// SetTech ( tech , Russians1 , state_researched ) ;
19557: LD_VAR 0 1
19561: PPUSH
19562: LD_EXP 179
19566: PPUSH
19567: LD_INT 2
19569: PPUSH
19570: CALL_OW 322
// if ( tech = tech_ST3 ) and ( lab = RusLab1 ) then
19574: LD_VAR 0 1
19578: PUSH
19579: LD_INT 65
19581: EQUAL
19582: PUSH
19583: LD_VAR 0 2
19587: PUSH
19588: LD_INT 2
19590: EQUAL
19591: AND
19592: IFFALSE 19616
// begin Uns = UnitsInside ( RusLab1 ) ;
19594: LD_ADDR_VAR 0 3
19598: PUSH
19599: LD_INT 2
19601: PPUSH
19602: CALL_OW 313
19606: ST_TO_ADDR
// ChangeScientists ( Uns ) ;
19607: LD_VAR 0 3
19611: PPUSH
19612: CALL 42669 0 1
// end ; if ( tech = tech_Sib3 ) and ( lab = RusLab2 ) then
19616: LD_VAR 0 1
19620: PUSH
19621: LD_INT 56
19623: EQUAL
19624: PUSH
19625: LD_VAR 0 2
19629: PUSH
19630: LD_INT 1
19632: EQUAL
19633: AND
19634: IFFALSE 19658
// begin Uns = UnitsInside ( RusLab2 ) ;
19636: LD_ADDR_VAR 0 3
19640: PUSH
19641: LD_INT 1
19643: PPUSH
19644: CALL_OW 313
19648: ST_TO_ADDR
// ChangeScientists ( Uns ) ;
19649: LD_VAR 0 3
19653: PPUSH
19654: CALL 42669 0 1
// end ; if ( tech = tech_ST3 ) and ( lab = AllLabR1 ) then
19658: LD_VAR 0 1
19662: PUSH
19663: LD_INT 65
19665: EQUAL
19666: PUSH
19667: LD_VAR 0 2
19671: PUSH
19672: LD_INT 39
19674: EQUAL
19675: AND
19676: IFFALSE 19693
// begin ComEnterUnit ( UnitsInside ( AllLabR1 ) , AllLabR2 ) ;
19678: LD_INT 39
19680: PPUSH
19681: CALL_OW 313
19685: PPUSH
19686: LD_INT 133
19688: PPUSH
19689: CALL_OW 120
// end ; if ( tech = tech_Weap3 ) and ( lab = AllLabR2 ) then
19693: LD_VAR 0 1
19697: PUSH
19698: LD_INT 53
19700: EQUAL
19701: PUSH
19702: LD_VAR 0 2
19706: PUSH
19707: LD_INT 133
19709: EQUAL
19710: AND
19711: IFFALSE 19713
// begin end ; if ( tech = tech_Sib3 ) and ( lab = AllLabA ) then
19713: LD_VAR 0 1
19717: PUSH
19718: LD_INT 56
19720: EQUAL
19721: PUSH
19722: LD_VAR 0 2
19726: PUSH
19727: LD_INT 46
19729: EQUAL
19730: AND
19731: IFFALSE 19733
// begin end ; end ;
19733: PPOPN 3
19735: END
// on UnitGoesToRed ( Un ) do var i ;
19736: LD_INT 0
19738: PPUSH
// begin case GetSide ( Un ) of Americans :
19739: LD_VAR 0 1
19743: PPUSH
19744: CALL_OW 255
19748: PUSH
19749: LD_EXP 176
19753: DOUBLE
19754: EQUAL
19755: IFTRUE 19759
19757: GO 19762
19759: POP
// begin end ; Americans1 :
19760: GO 20242
19762: LD_EXP 177
19766: DOUBLE
19767: EQUAL
19768: IFTRUE 19772
19770: GO 19775
19772: POP
// begin end ; Russians :
19773: GO 20242
19775: LD_EXP 178
19779: DOUBLE
19780: EQUAL
19781: IFTRUE 19785
19783: GO 19788
19785: POP
// begin end ; Russians1 :
19786: GO 20242
19788: LD_EXP 179
19792: DOUBLE
19793: EQUAL
19794: IFTRUE 19798
19796: GO 19875
19798: POP
// begin if ( GetType ( Un ) = unit_vehicle ) then
19799: LD_VAR 0 1
19803: PPUSH
19804: CALL_OW 247
19808: PUSH
19809: LD_INT 2
19811: EQUAL
19812: IFFALSE 19873
// if ( GetControl ( Un ) = control_manual ) and ( ( GetWeapon ( Un ) = ru_rocket ) or ( GetWeapon ( Un ) = ru_time_lapser ) ) then
19814: LD_VAR 0 1
19818: PPUSH
19819: CALL_OW 263
19823: PUSH
19824: LD_INT 1
19826: EQUAL
19827: PUSH
19828: LD_VAR 0 1
19832: PPUSH
19833: CALL_OW 264
19837: PUSH
19838: LD_INT 47
19840: EQUAL
19841: PUSH
19842: LD_VAR 0 1
19846: PPUSH
19847: CALL_OW 264
19851: PUSH
19852: LD_INT 49
19854: EQUAL
19855: OR
19856: AND
19857: IFFALSE 19873
// begin PriorityAttack ( Russians1 , Un ) ;
19859: LD_EXP 179
19863: PPUSH
19864: LD_VAR 0 1
19868: PPUSH
19869: CALL_OW 470
// end ; end ; Arabians :
19873: GO 20242
19875: LD_EXP 180
19879: DOUBLE
19880: EQUAL
19881: IFTRUE 19885
19883: GO 20196
19885: POP
// begin if Un = ArDep1 then
19886: LD_VAR 0 1
19890: PUSH
19891: LD_INT 122
19893: EQUAL
19894: IFFALSE 19913
// begin SetLives ( [ ArRuFact , ArRuSibExt ] , 0 ) ;
19896: LD_INT 105
19898: PUSH
19899: LD_INT 116
19901: PUSH
19902: EMPTY
19903: LIST
19904: LIST
19905: PPUSH
19906: LD_INT 0
19908: PPUSH
19909: CALL_OW 234
// end ; if GetBType ( Un ) = b_turret then
19913: LD_VAR 0 1
19917: PPUSH
19918: CALL_OW 266
19922: PUSH
19923: LD_INT 33
19925: EQUAL
19926: IFFALSE 20083
// begin i = UnitsInside ( Un ) ;
19928: LD_ADDR_VAR 0 2
19932: PUSH
19933: LD_VAR 0 1
19937: PPUSH
19938: CALL_OW 313
19942: ST_TO_ADDR
// if ( i ^ [ ] ) = 1 then
19943: LD_VAR 0 2
19947: PUSH
19948: EMPTY
19949: ADD
19950: PUSH
19951: LD_INT 1
19953: EQUAL
19954: IFFALSE 20083
// if GetNation ( Un ) = nation_nature then
19956: LD_VAR 0 1
19960: PPUSH
19961: CALL_OW 248
19965: PUSH
19966: LD_INT 0
19968: EQUAL
19969: IFFALSE 20083
// begin ComMoveXYR ( Un , 48 , 4 , 3 , false ) ;
19971: LD_VAR 0 1
19975: PPUSH
19976: LD_INT 48
19978: PPUSH
19979: LD_INT 4
19981: PPUSH
19982: LD_INT 3
19984: PPUSH
19985: LD_INT 0
19987: PPUSH
19988: CALL 17826 0 5
// AddComHold ( Un ) ;
19992: LD_VAR 0 1
19996: PPUSH
19997: CALL_OW 200
// while ( R1_Attack_Continues = false ) or not ( ExistMc ( Arabian_def_id ) ) do
20001: LD_EXP 196
20005: PUSH
20006: LD_INT 0
20008: EQUAL
20009: PUSH
20010: LD_EXP 235
20014: PPUSH
20015: CALL_OW 386
20019: NOT
20020: OR
20021: IFFALSE 20032
// Wait ( 0 0$1 ) ;
20023: LD_INT 35
20025: PPUSH
20026: CALL_OW 67
20030: GO 20001
// ComMoveXYR ( Un , 63 , 16 , 3 , true ) ;
20032: LD_VAR 0 1
20036: PPUSH
20037: LD_INT 63
20039: PPUSH
20040: LD_INT 16
20042: PPUSH
20043: LD_INT 3
20045: PPUSH
20046: LD_INT 1
20048: PPUSH
20049: CALL 17826 0 5
// AddMcUnits ( Arabian_def_id , Un ) ;
20053: LD_EXP 235
20057: PPUSH
20058: LD_VAR 0 1
20062: PPUSH
20063: CALL_OW 390
// All_arabians = Arabian_soldiers ^ Un ;
20067: LD_ADDR_EXP 79
20071: PUSH
20072: LD_EXP 80
20076: PUSH
20077: LD_VAR 0 1
20081: ADD
20082: ST_TO_ADDR
// end ; end ; if ( Un = New_ArRu_Fact ) and IsOk ( Kozlov ) then
20083: LD_VAR 0 1
20087: PUSH
20088: LD_EXP 87
20092: EQUAL
20093: PUSH
20094: LD_EXP 22
20098: PPUSH
20099: CALL_OW 302
20103: AND
20104: IFFALSE 20194
// begin if GetClass ( Kozlov ) <> class_engineer then
20106: LD_EXP 22
20110: PPUSH
20111: CALL_OW 257
20115: PUSH
20116: LD_INT 2
20118: NONEQUAL
20119: IFFALSE 20154
// begin ComEnterUnit ( Kozlov , ArDep1 ) ;
20121: LD_EXP 22
20125: PPUSH
20126: LD_INT 122
20128: PPUSH
20129: CALL_OW 120
// AddComChangeProfession ( Kozlov , class_engineer ) ;
20133: LD_EXP 22
20137: PPUSH
20138: LD_INT 2
20140: PPUSH
20141: CALL_OW 183
// AddComExitBuilding ( Kozlov ) ;
20145: LD_EXP 22
20149: PPUSH
20150: CALL_OW 182
// end ; AddComRepairBuilding ( Kozlov , New_ArRu_Fact ) ;
20154: LD_EXP 22
20158: PPUSH
20159: LD_EXP 87
20163: PPUSH
20164: CALL_OW 190
// AddComEnterUnit ( Kozlov , New_ArRu_Fact ) ;
20168: LD_EXP 22
20172: PPUSH
20173: LD_EXP 87
20177: PPUSH
20178: CALL_OW 180
// AddComChangeProfession ( Kozlov , class_mechanic ) ;
20182: LD_EXP 22
20186: PPUSH
20187: LD_INT 3
20189: PPUSH
20190: CALL_OW 183
// end ; end ; Arabians1 :
20194: GO 20242
20196: LD_EXP 181
20200: DOUBLE
20201: EQUAL
20202: IFTRUE 20206
20204: GO 20209
20206: POP
// begin end ; Alliance :
20207: GO 20242
20209: LD_EXP 182
20213: DOUBLE
20214: EQUAL
20215: IFTRUE 20219
20217: GO 20241
20219: POP
// begin if ( GetType ( Un ) = unit_building ) then
20220: LD_VAR 0 1
20224: PPUSH
20225: CALL_OW 247
20229: PUSH
20230: LD_INT 3
20232: EQUAL
20233: IFFALSE 20239
// AllianceBuildingInRed ;
20235: CALL 50868 0 0
// end ; end ;
20239: GO 20242
20241: POP
// end ;
20242: PPOPN 2
20244: END
// on HumanDestroyed ( un , side , nation , x , y , direction , sex , class ) do var i ;
20245: LD_INT 0
20247: PPUSH
// begin Wait ( 1 ) ;
20248: LD_INT 1
20250: PPUSH
20251: CALL_OW 67
// case side of americans :
20255: LD_VAR 0 2
20259: PUSH
20260: LD_EXP 176
20264: DOUBLE
20265: EQUAL
20266: IFTRUE 20270
20268: GO 20291
20270: POP
// begin if nation <> nation_nature then
20271: LD_VAR 0 3
20275: PUSH
20276: LD_INT 0
20278: NONEQUAL
20279: IFFALSE 20289
// No_Looses = false ;
20281: LD_ADDR_EXP 56
20285: PUSH
20286: LD_INT 0
20288: ST_TO_ADDR
// end ; arabians :
20289: GO 20494
20291: LD_EXP 180
20295: DOUBLE
20296: EQUAL
20297: IFTRUE 20301
20299: GO 20308
20301: POP
// begin ArabianPersonIsDead ;
20302: CALL 33807 0 0
// end ; arabians1 :
20306: GO 20494
20308: LD_EXP 181
20312: DOUBLE
20313: EQUAL
20314: IFTRUE 20318
20316: GO 20329
20318: POP
// begin HeikeLastWords ;
20319: CALL 49994 0 0
// TestForEndOfMission ;
20323: CALL 50066 0 0
// end ; alliance :
20327: GO 20494
20329: LD_EXP 182
20333: DOUBLE
20334: EQUAL
20335: IFTRUE 20339
20337: GO 20367
20339: POP
// begin if ( un = Roth ) then
20340: LD_VAR 0 1
20344: PUSH
20345: LD_EXP 20
20349: EQUAL
20350: IFFALSE 20361
// ChangeMissionObjectives ( M3b ) else
20352: LD_STRING M3b
20354: PPUSH
20355: CALL_OW 337
20359: GO 20365
// AlliancePersonIsDead ;
20361: CALL 50785 0 0
// end ; russians :
20365: GO 20494
20367: LD_EXP 178
20371: DOUBLE
20372: EQUAL
20373: IFTRUE 20377
20375: GO 20493
20377: POP
// begin if Un in Behemot_Engineers then
20378: LD_VAR 0 1
20382: PUSH
20383: LD_EXP 127
20387: IN
20388: IFFALSE 20491
// begin Behemot_Engineers = Behemot_Engineers diff Un ;
20390: LD_ADDR_EXP 127
20394: PUSH
20395: LD_EXP 127
20399: PUSH
20400: LD_VAR 0 1
20404: DIFF
20405: ST_TO_ADDR
// if Behemot_Engineers = [ ] then
20406: LD_EXP 127
20410: PUSH
20411: EMPTY
20412: EQUAL
20413: IFFALSE 20440
// begin if Russian_project_canceled then
20415: LD_EXP 55
20419: IFFALSE 20428
// ChangeMissionObjectives ( M4a ) ;
20421: LD_STRING M4a
20423: PPUSH
20424: CALL_OW 337
// Number_of_complete_Behemots = 0 ;
20428: LD_ADDR_EXP 223
20432: PUSH
20433: LD_INT 0
20435: ST_TO_ADDR
// BehemotsAttack ;
20436: CALL 48242 0 0
// end ; Wait ( 1 ) ;
20440: LD_INT 1
20442: PPUSH
20443: CALL_OW 67
// for i in Behemot_Engineers do
20447: LD_ADDR_VAR 0 9
20451: PUSH
20452: LD_EXP 127
20456: PUSH
20457: FOR_IN
20458: IFFALSE 20477
// if HasTask ( i ) then
20460: LD_VAR 0 9
20464: PPUSH
20465: CALL_OW 314
20469: IFFALSE 20475
// exit ;
20471: POP
20472: POP
20473: GO 20494
20475: GO 20457
20477: POP
20478: POP
// Number_of_complete_Behemots = 0 ;
20479: LD_ADDR_EXP 223
20483: PUSH
20484: LD_INT 0
20486: ST_TO_ADDR
// BehemotsAttack ;
20487: CALL 48242 0 0
// end ; end ; end ;
20491: GO 20494
20493: POP
// end ;
20494: PPOPN 9
20496: END
// on SiberiteRocketExploded ( Un , x , y ) do begin SA_OnSiberiteRocketExploded ( Un ) ;
20497: LD_VAR 0 1
20501: PPUSH
20502: CALL 56186 0 1
// if InArea ( x , y , Rus_Base ) then
20506: LD_VAR 0 2
20510: PPUSH
20511: LD_VAR 0 3
20515: PPUSH
20516: LD_INT 5
20518: PPUSH
20519: CALL_OW 309
20523: IFFALSE 20571
// begin if GetSide ( Un ) = arabians then
20525: LD_VAR 0 1
20529: PPUSH
20530: CALL_OW 255
20534: PUSH
20535: LD_EXP 180
20539: EQUAL
20540: IFFALSE 20549
// enable ( Matherlod_Contamined1 ) else
20542: LD_EXP 149
20546: ENABLE_MARKED
20547: GO 20571
// if GetSide ( Un ) = americans then
20549: LD_VAR 0 1
20553: PPUSH
20554: CALL_OW 255
20558: PUSH
20559: LD_EXP 176
20563: EQUAL
20564: IFFALSE 20571
// enable ( Matherlod_Contamined2 ) ;
20566: LD_EXP 150
20570: ENABLE_MARKED
// end ; if GetSide ( Un ) = russians then
20571: LD_VAR 0 1
20575: PPUSH
20576: CALL_OW 255
20580: PUSH
20581: LD_EXP 178
20585: EQUAL
20586: IFFALSE 20607
// begin Wait ( 0 0$5 ) ;
20588: LD_INT 175
20590: PPUSH
20591: CALL_OW 67
// Say ( Platonov , D18-Pla-1 ) ;
20595: LD_EXP 26
20599: PPUSH
20600: LD_STRING D18-Pla-1
20602: PPUSH
20603: CALL_OW 88
// end ; end ;
20607: PPOPN 3
20609: END
// on BuildingStarted ( build , hum ) do begin if GetBType ( build ) = b_behemoth then
20610: LD_VAR 0 1
20614: PPUSH
20615: CALL_OW 266
20619: PUSH
20620: LD_INT 37
20622: EQUAL
20623: IFFALSE 20641
// Russian_Behemots = Russian_Behemots ^ build ;
20625: LD_ADDR_EXP 128
20629: PUSH
20630: LD_EXP 128
20634: PUSH
20635: LD_VAR 0 1
20639: ADD
20640: ST_TO_ADDR
// end ;
20641: PPOPN 2
20643: END
// on BehemothConstructed ( behemot ) do var i ;
20644: LD_INT 0
20646: PPUSH
// begin if GetSide ( behemot ) = 1 then
20647: LD_VAR 0 1
20651: PPUSH
20652: CALL_OW 255
20656: PUSH
20657: LD_INT 1
20659: EQUAL
20660: IFFALSE 20664
// exit ;
20662: GO 20790
// Russian_Behemots = UnitFilter ( ( Russian_Behemots ^ behemot ) diff [ 0 ] , [ f_alive ] ) ;
20664: LD_ADDR_EXP 128
20668: PUSH
20669: LD_EXP 128
20673: PUSH
20674: LD_VAR 0 1
20678: ADD
20679: PUSH
20680: LD_INT 0
20682: PUSH
20683: EMPTY
20684: LIST
20685: DIFF
20686: PPUSH
20687: LD_INT 51
20689: PUSH
20690: EMPTY
20691: LIST
20692: PPUSH
20693: CALL_OW 72
20697: ST_TO_ADDR
// New_Behemots = New_Behemots ^ behemot ;
20698: LD_ADDR_EXP 129
20702: PUSH
20703: LD_EXP 129
20707: PUSH
20708: LD_VAR 0 1
20712: ADD
20713: ST_TO_ADDR
// if Russian_project_canceled = true then
20714: LD_EXP 55
20718: PUSH
20719: LD_INT 1
20721: EQUAL
20722: IFFALSE 20739
// begin Russian_project_canceled = false ;
20724: LD_ADDR_EXP 55
20728: PUSH
20729: LD_INT 0
20731: ST_TO_ADDR
// ChangeMissionObjectives ( M4b ) ;
20732: LD_STRING M4b
20734: PPUSH
20735: CALL_OW 337
// end ; Wait ( 1 ) ;
20739: LD_INT 1
20741: PPUSH
20742: CALL_OW 67
// for i in Behemot_Engineers do
20746: LD_ADDR_VAR 0 2
20750: PUSH
20751: LD_EXP 127
20755: PUSH
20756: FOR_IN
20757: IFFALSE 20776
// if HasTask ( i ) then
20759: LD_VAR 0 2
20763: PPUSH
20764: CALL_OW 314
20768: IFFALSE 20774
// exit ;
20770: POP
20771: POP
20772: GO 20790
20774: GO 20756
20776: POP
20777: POP
// Number_of_complete_Behemots = 0 ;
20778: LD_ADDR_EXP 223
20782: PUSH
20783: LD_INT 0
20785: ST_TO_ADDR
// BehemotsAttack ;
20786: CALL 48242 0 0
// end ;
20790: PPOPN 2
20792: END
// on SibDepositContaminated ( Un , X , Y ) do begin if InArea ( X , Y , R_base ) then
20793: LD_VAR 0 2
20797: PPUSH
20798: LD_VAR 0 3
20802: PPUSH
20803: LD_INT 36
20805: PPUSH
20806: CALL_OW 309
20810: IFFALSE 20871
// begin if GetSide ( Un ) = arabians1 then
20812: LD_VAR 0 1
20816: PPUSH
20817: CALL_OW 255
20821: PUSH
20822: LD_EXP 181
20826: EQUAL
20827: IFFALSE 20871
// begin CenterOnXY ( X , Y ) ;
20829: LD_VAR 0 2
20833: PPUSH
20834: LD_VAR 0 3
20838: PPUSH
20839: CALL_OW 84
// placeseeing ( X , Y , americans , - 12 ) ;
20843: LD_VAR 0 2
20847: PPUSH
20848: LD_VAR 0 3
20852: PPUSH
20853: LD_EXP 176
20857: PPUSH
20858: LD_INT 12
20860: NEG
20861: PPUSH
20862: CALL_OW 330
// enable ( Matherlod_Contamined3 ) ;
20866: LD_EXP 151
20870: ENABLE_MARKED
// end ; end ; end ;
20871: PPOPN 3
20873: END
// var reg_res ; on McRegistryResultChanges ( mcid , count , strength ) do begin case mcid of Alliance_wood_reg_id :
20874: LD_VAR 0 1
20878: PUSH
20879: LD_EXP 249
20883: DOUBLE
20884: EQUAL
20885: IFTRUE 20889
20887: GO 20896
20889: POP
// GuardAllianceWood ; end ;
20890: CALL 55262 0 0
20894: GO 20897
20896: POP
// reg_res = count &    & strength ;
20897: LD_ADDR_LOC 2
20901: PUSH
20902: LD_VAR 0 2
20906: PUSH
20907: LD_STRING   
20909: STR
20910: PUSH
20911: LD_VAR 0 3
20915: STR
20916: ST_TO_ADDR
// end ;
20917: PPOPN 3
20919: END
// on McDefendTakesUnit ( mcid , un ) do begin taken := taken ^ [ un ] ;
20920: LD_ADDR_LOC 1
20924: PUSH
20925: LD_LOC 1
20929: PUSH
20930: LD_VAR 0 2
20934: PUSH
20935: EMPTY
20936: LIST
20937: ADD
20938: ST_TO_ADDR
// end ;
20939: PPOPN 2
20941: END
// on McDefendReturnsUnit ( mcid , un ) do begin taken := taken diff [ un ] ;
20942: LD_ADDR_LOC 1
20946: PUSH
20947: LD_LOC 1
20951: PUSH
20952: LD_VAR 0 2
20956: PUSH
20957: EMPTY
20958: LIST
20959: DIFF
20960: ST_TO_ADDR
// end ; end_of_file
20961: PPOPN 2
20963: END
// var driver1 , driver2 , Selected_Sold ; var soldiers , soldiers1 , Retreat_Boy ; var driver , developer ; var R1_Attacking_Units , R1_Patroling_Units ; var The_original_mechanical_Skill ; export function RunJMMVehicles ; var V ; begin
20964: LD_INT 0
20966: PPUSH
20967: PPUSH
// RevealFogArea ( americans , map_ar ) ;
20968: LD_EXP 176
20972: PPUSH
20973: LD_INT 19
20975: PPUSH
20976: CALL_OW 332
// V = [ JMM_veh ] ;
20980: LD_ADDR_VAR 0 2
20984: PUSH
20985: LD_EXP 57
20989: PUSH
20990: EMPTY
20991: LIST
20992: ST_TO_ADDR
// if JMM_Woman then
20993: LD_EXP 37
20997: IFFALSE 21018
// V = V ^ [ Woman_veh ] ;
20999: LD_ADDR_VAR 0 2
21003: PUSH
21004: LD_VAR 0 2
21008: PUSH
21009: LD_EXP 58
21013: PUSH
21014: EMPTY
21015: LIST
21016: ADD
21017: ST_TO_ADDR
// AddComMoveXY ( V , 94 , 124 ) ;
21018: LD_VAR 0 2
21022: PPUSH
21023: LD_INT 94
21025: PPUSH
21026: LD_INT 124
21028: PPUSH
21029: CALL_OW 171
// AddComMoveXY ( V , 47 , 79 ) ;
21033: LD_VAR 0 2
21037: PPUSH
21038: LD_INT 47
21040: PPUSH
21041: LD_INT 79
21043: PPUSH
21044: CALL_OW 171
// WaitTask ( V , 0.5 ) ;
21048: LD_VAR 0 2
21052: PPUSH
21053: LD_REAL  5.00000000000000E-0001
21056: PPUSH
21057: CALL 17892 0 2
// ComExitVehicle ( V ) ;
21061: LD_VAR 0 2
21065: PPUSH
21066: CALL_OW 121
// if not ( Skip ) then
21070: LD_EXP 186
21074: NOT
21075: IFFALSE 21085
// CenterJMM = false ;
21077: LD_ADDR_EXP 68
21081: PUSH
21082: LD_INT 0
21084: ST_TO_ADDR
// End_of_journey = true ;
21085: LD_ADDR_EXP 66
21089: PUSH
21090: LD_INT 1
21092: ST_TO_ADDR
// RaiseSailEvent ( Capture_JMM_Vehicles ) ;
21093: LD_EXP 166
21097: PPUSH
21098: CALL_OW 427
// Wait ( 2 ) ;
21102: LD_INT 2
21104: PPUSH
21105: CALL_OW 67
// if not ( Skip ) then
21109: LD_EXP 186
21113: NOT
21114: IFFALSE 21131
// ComMoveXY ( JMM , 48 , 63 ) ;
21116: LD_EXP 1
21120: PPUSH
21121: LD_INT 48
21123: PPUSH
21124: LD_INT 63
21126: PPUSH
21127: CALL_OW 111
// if not ( Skip ) then
21131: LD_EXP 186
21135: NOT
21136: IFFALSE 21152
// AddComTurnUnit ( JMM , Powell ) ;
21138: LD_EXP 1
21142: PPUSH
21143: LD_EXP 2
21147: PPUSH
21148: CALL_OW 179
// if not ( Skip ) then
21152: LD_EXP 186
21156: NOT
21157: IFFALSE 21174
// ComMoveXY ( JMM_Woman , 47 , 68 ) ;
21159: LD_EXP 37
21163: PPUSH
21164: LD_INT 47
21166: PPUSH
21167: LD_INT 68
21169: PPUSH
21170: CALL_OW 111
// if not ( Skip ) then
21174: LD_EXP 186
21178: NOT
21179: IFFALSE 21196
// ComMoveXY ( Powell , 43 , 63 ) ;
21181: LD_EXP 2
21185: PPUSH
21186: LD_INT 43
21188: PPUSH
21189: LD_INT 63
21191: PPUSH
21192: CALL_OW 111
// if not ( Skip ) then
21196: LD_EXP 186
21200: NOT
21201: IFFALSE 21217
// AddComTurnUnit ( Powell , JMM ) ;
21203: LD_EXP 2
21207: PPUSH
21208: LD_EXP 1
21212: PPUSH
21213: CALL_OW 179
// if not ( Skip ) then
21217: LD_EXP 186
21221: NOT
21222: IFFALSE 21233
// CenterOnUnits ( Powell ) ;
21224: LD_EXP 2
21228: PPUSH
21229: CALL_OW 85
// end ;
21233: LD_VAR 0 1
21237: RET
// export function CaptureJMMVehicles ; var possible_drivers , hex ; begin
21238: LD_INT 0
21240: PPUSH
21241: PPUSH
21242: PPUSH
// possible_drivers = Remaining_Powells diff Named_americans ;
21243: LD_ADDR_VAR 0 2
21247: PUSH
21248: LD_EXP 64
21252: PUSH
21253: LD_EXP 62
21257: DIFF
21258: ST_TO_ADDR
// driver1 = possible_drivers [ 1 ] ;
21259: LD_ADDR_LOC 3
21263: PUSH
21264: LD_VAR 0 2
21268: PUSH
21269: LD_INT 1
21271: ARRAY
21272: ST_TO_ADDR
// driver2 = possible_drivers [ 2 ] ;
21273: LD_ADDR_LOC 4
21277: PUSH
21278: LD_VAR 0 2
21282: PUSH
21283: LD_INT 2
21285: ARRAY
21286: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff ( driver1 ^ driver2 ) ;
21287: LD_ADDR_EXP 64
21291: PUSH
21292: LD_EXP 64
21296: PUSH
21297: LD_LOC 3
21301: PUSH
21302: LD_LOC 4
21306: ADD
21307: DIFF
21308: ST_TO_ADDR
// ComEnterUnit ( driver1 , JMM_veh ) ;
21309: LD_LOC 3
21313: PPUSH
21314: LD_EXP 57
21318: PPUSH
21319: CALL_OW 120
// hex = RandHexArea ( Am1_parking , true ) ;
21323: LD_ADDR_VAR 0 3
21327: PUSH
21328: LD_INT 21
21330: PPUSH
21331: LD_INT 1
21333: PPUSH
21334: CALL_OW 16
21338: ST_TO_ADDR
// AddComMoveXY ( driver1 , hex [ 1 ] , hex [ 2 ] ) ;
21339: LD_LOC 3
21343: PPUSH
21344: LD_VAR 0 3
21348: PUSH
21349: LD_INT 1
21351: ARRAY
21352: PPUSH
21353: LD_VAR 0 3
21357: PUSH
21358: LD_INT 2
21360: ARRAY
21361: PPUSH
21362: CALL_OW 171
// AddComExitVehicle ( driver1 ) ;
21366: LD_LOC 3
21370: PPUSH
21371: CALL_OW 181
// AddComEnterUnit ( driver1 , AmArm ) ;
21375: LD_LOC 3
21379: PPUSH
21380: LD_INT 92
21382: PPUSH
21383: CALL_OW 180
// AddComChangeProfession ( driver1 , class_soldier ) ;
21387: LD_LOC 3
21391: PPUSH
21392: LD_INT 1
21394: PPUSH
21395: CALL_OW 183
// if Woman_veh then
21399: LD_EXP 58
21403: IFFALSE 21540
// begin ComEnterUnit ( driver2 , Woman_veh ) ;
21405: LD_LOC 4
21409: PPUSH
21410: LD_EXP 58
21414: PPUSH
21415: CALL_OW 120
// hex = RandHexArea ( Am1_parking , true ) ;
21419: LD_ADDR_VAR 0 3
21423: PUSH
21424: LD_INT 21
21426: PPUSH
21427: LD_INT 1
21429: PPUSH
21430: CALL_OW 16
21434: ST_TO_ADDR
// AddComMoveXY ( driver2 , hex [ 1 ] , hex [ 2 ] ) ;
21435: LD_LOC 4
21439: PPUSH
21440: LD_VAR 0 3
21444: PUSH
21445: LD_INT 1
21447: ARRAY
21448: PPUSH
21449: LD_VAR 0 3
21453: PUSH
21454: LD_INT 2
21456: ARRAY
21457: PPUSH
21458: CALL_OW 171
// AddComExitVehicle ( driver2 ) ;
21462: LD_LOC 4
21466: PPUSH
21467: CALL_OW 181
// AddComEnterUnit ( driver2 , AmArm ) ;
21471: LD_LOC 4
21475: PPUSH
21476: LD_INT 92
21478: PPUSH
21479: CALL_OW 180
// AddComChangeProfession ( driver2 , class_soldier ) ;
21483: LD_LOC 4
21487: PPUSH
21488: LD_INT 1
21490: PPUSH
21491: CALL_OW 183
// WaitTask ( [ driver1 , driver2 ] , 1 ) ;
21495: LD_LOC 3
21499: PUSH
21500: LD_LOC 4
21504: PUSH
21505: EMPTY
21506: LIST
21507: LIST
21508: PPUSH
21509: LD_INT 1
21511: PPUSH
21512: CALL 17892 0 2
// Remaining_Powells = Remaining_Powells ^ driver1 ^ driver2 ;
21516: LD_ADDR_EXP 64
21520: PUSH
21521: LD_EXP 64
21525: PUSH
21526: LD_LOC 3
21530: ADD
21531: PUSH
21532: LD_LOC 4
21536: ADD
21537: ST_TO_ADDR
// end else
21538: GO 21574
// begin WaitTask ( driver1 , 1 ) ;
21540: LD_LOC 3
21544: PPUSH
21545: LD_INT 1
21547: PPUSH
21548: CALL 17892 0 2
// Remaining_Powells = Remaining_Powells ^ driver1 ^ driver2 ;
21552: LD_ADDR_EXP 64
21556: PUSH
21557: LD_EXP 64
21561: PUSH
21562: LD_LOC 3
21566: ADD
21567: PUSH
21568: LD_LOC 4
21572: ADD
21573: ST_TO_ADDR
// end ; end ;
21574: LD_VAR 0 1
21578: RET
// export function JMMTalk ; begin
21579: LD_INT 0
21581: PPUSH
// while Joan_semafor do
21582: LD_EXP 233
21586: IFFALSE 21597
// Wait ( 0 0$1 ) ;
21588: LD_INT 35
21590: PPUSH
21591: CALL_OW 67
21595: GO 21582
// case Selected_Sold of Lisa :
21597: LD_LOC 5
21601: PUSH
21602: LD_EXP 5
21606: DOUBLE
21607: EQUAL
21608: IFTRUE 21612
21610: GO 21627
21612: POP
// Say ( Lisa , D3nW-Lisa-1 ) ; Cyrus :
21613: LD_EXP 5
21617: PPUSH
21618: LD_STRING D3nW-Lisa-1
21620: PPUSH
21621: CALL_OW 88
21625: GO 21778
21627: LD_EXP 4
21631: DOUBLE
21632: EQUAL
21633: IFTRUE 21637
21635: GO 21652
21637: POP
// Say ( Cyrus , D3nW-Cyrus-1 ) ; Bobby :
21638: LD_EXP 4
21642: PPUSH
21643: LD_STRING D3nW-Cyrus-1
21645: PPUSH
21646: CALL_OW 88
21650: GO 21778
21652: LD_EXP 3
21656: DOUBLE
21657: EQUAL
21658: IFTRUE 21662
21660: GO 21677
21662: POP
// Say ( Bobby , D3nW-Bobby-1 ) ; Gary :
21663: LD_EXP 3
21667: PPUSH
21668: LD_STRING D3nW-Bobby-1
21670: PPUSH
21671: CALL_OW 88
21675: GO 21778
21677: LD_EXP 15
21681: DOUBLE
21682: EQUAL
21683: IFTRUE 21687
21685: GO 21702
21687: POP
// Say ( Gary , D3nW-Gary-1 ) ; Donaldson :
21688: LD_EXP 15
21692: PPUSH
21693: LD_STRING D3nW-Gary-1
21695: PPUSH
21696: CALL_OW 88
21700: GO 21778
21702: LD_EXP 8
21706: DOUBLE
21707: EQUAL
21708: IFTRUE 21712
21710: GO 21727
21712: POP
// Say ( Donaldson , D3nW-Don-1 ) ; Frank :
21713: LD_EXP 8
21717: PPUSH
21718: LD_STRING D3nW-Don-1
21720: PPUSH
21721: CALL_OW 88
21725: GO 21778
21727: LD_EXP 6
21731: DOUBLE
21732: EQUAL
21733: IFTRUE 21737
21735: GO 21752
21737: POP
// Say ( Frank , D3nW-Frank-1 ) ; Cornell :
21738: LD_EXP 6
21742: PPUSH
21743: LD_STRING D3nW-Frank-1
21745: PPUSH
21746: CALL_OW 88
21750: GO 21778
21752: LD_EXP 10
21756: DOUBLE
21757: EQUAL
21758: IFTRUE 21762
21760: GO 21777
21762: POP
// Say ( Cornell , D3nW-Corn-1 ) ; end ;
21763: LD_EXP 10
21767: PPUSH
21768: LD_STRING D3nW-Corn-1
21770: PPUSH
21771: CALL_OW 88
21775: GO 21778
21777: POP
// if Selected_Sold > 0 then
21778: LD_LOC 5
21782: PUSH
21783: LD_INT 0
21785: GREATER
21786: IFFALSE 21812
// begin Say ( JMM , D3nW-JMM-1 ) ;
21788: LD_EXP 1
21792: PPUSH
21793: LD_STRING D3nW-JMM-1
21795: PPUSH
21796: CALL_OW 88
// Say ( JMM , D3nW-JMM-1a ) ;
21800: LD_EXP 1
21804: PPUSH
21805: LD_STRING D3nW-JMM-1a
21807: PPUSH
21808: CALL_OW 88
// end ; end ;
21812: LD_VAR 0 1
21816: RET
// export function SendHelpers ; var Named_without_woman , Un , Uns , i , Possible_Units ; begin
21817: LD_INT 0
21819: PPUSH
21820: PPUSH
21821: PPUSH
21822: PPUSH
21823: PPUSH
21824: PPUSH
// JMM_Helpers = Named_Americans ;
21825: LD_ADDR_EXP 67
21829: PUSH
21830: LD_EXP 62
21834: ST_TO_ADDR
// if Named_Americans > Number_of_JMM_Helpers then
21835: LD_EXP 62
21839: PUSH
21840: LD_EXP 69
21844: GREATER
21845: IFFALSE 22037
// begin Uns = FindMaxSkill ( JMM_Helpers , skill_engineering ) ;
21847: LD_ADDR_VAR 0 4
21851: PUSH
21852: LD_EXP 67
21856: PPUSH
21857: LD_INT 2
21859: PPUSH
21860: CALL_OW 433
21864: ST_TO_ADDR
// JMM_Helpers = JMM_Helpers diff Uns ;
21865: LD_ADDR_EXP 67
21869: PUSH
21870: LD_EXP 67
21874: PUSH
21875: LD_VAR 0 4
21879: DIFF
21880: ST_TO_ADDR
// Uns = Uns ^ FindMaxSkill ( JMM_Helpers , skill_scientistic ) ;
21881: LD_ADDR_VAR 0 4
21885: PUSH
21886: LD_VAR 0 4
21890: PUSH
21891: LD_EXP 67
21895: PPUSH
21896: LD_INT 4
21898: PPUSH
21899: CALL_OW 433
21903: ADD
21904: ST_TO_ADDR
// JMM_Helpers = JMM_Helpers diff Uns ;
21905: LD_ADDR_EXP 67
21909: PUSH
21910: LD_EXP 67
21914: PUSH
21915: LD_VAR 0 4
21919: DIFF
21920: ST_TO_ADDR
// Uns = Uns ^ FindMaxSkill ( JMM_Helpers , skill_combat ) ;
21921: LD_ADDR_VAR 0 4
21925: PUSH
21926: LD_VAR 0 4
21930: PUSH
21931: LD_EXP 67
21935: PPUSH
21936: LD_INT 1
21938: PPUSH
21939: CALL_OW 433
21943: ADD
21944: ST_TO_ADDR
// JMM_Helpers = JMM_Helpers diff Uns ;
21945: LD_ADDR_EXP 67
21949: PUSH
21950: LD_EXP 67
21954: PUSH
21955: LD_VAR 0 4
21959: DIFF
21960: ST_TO_ADDR
// for Un = Number_of_JMM_Helpers to Named_Americans - 1 do
21961: LD_ADDR_VAR 0 3
21965: PUSH
21966: DOUBLE
21967: LD_EXP 69
21971: DEC
21972: ST_TO_ADDR
21973: LD_EXP 62
21977: PUSH
21978: LD_INT 1
21980: MINUS
21981: PUSH
21982: FOR_TO
21983: IFFALSE 22017
// begin JMM_Helpers = JMM_Helpers diff JMM_Helpers [ Rand ( 1 , JMM_Helpers ) ] ;
21985: LD_ADDR_EXP 67
21989: PUSH
21990: LD_EXP 67
21994: PUSH
21995: LD_EXP 67
21999: PUSH
22000: LD_INT 1
22002: PPUSH
22003: LD_EXP 67
22007: PPUSH
22008: CALL_OW 12
22012: ARRAY
22013: DIFF
22014: ST_TO_ADDR
// end ;
22015: GO 21982
22017: POP
22018: POP
// JMM_Helpers = JMM_Helpers ^ Uns ;
22019: LD_ADDR_EXP 67
22023: PUSH
22024: LD_EXP 67
22028: PUSH
22029: LD_VAR 0 4
22033: ADD
22034: ST_TO_ADDR
// end else
22035: GO 22149
// if Named_Americans < Number_of_JMM_Helpers then
22037: LD_EXP 62
22041: PUSH
22042: LD_EXP 69
22046: LESS
22047: IFFALSE 22149
// begin JMM_Helpers = JMM_Helpers ^ FindMaxSkill ( ( All_americans diff ( JMM_Helpers ^ JMM_Woman ) ) , skill_engineering ) ;
22049: LD_ADDR_EXP 67
22053: PUSH
22054: LD_EXP 67
22058: PUSH
22059: LD_EXP 61
22063: PUSH
22064: LD_EXP 67
22068: PUSH
22069: LD_EXP 37
22073: ADD
22074: DIFF
22075: PPUSH
22076: LD_INT 2
22078: PPUSH
22079: CALL_OW 433
22083: ADD
22084: ST_TO_ADDR
// for Un = Named_Americans + 2 to Number_of_JMM_Helpers do
22085: LD_ADDR_VAR 0 3
22089: PUSH
22090: DOUBLE
22091: LD_EXP 62
22095: PUSH
22096: LD_INT 2
22098: PLUS
22099: DEC
22100: ST_TO_ADDR
22101: LD_EXP 69
22105: PUSH
22106: FOR_TO
22107: IFFALSE 22147
// begin JMM_Helpers = JMM_Helpers ^ FindMaxSkill ( ( All_americans diff ( JMM_Helpers ^ JMM_Woman ) ) , skill_combat ) ;
22109: LD_ADDR_EXP 67
22113: PUSH
22114: LD_EXP 67
22118: PUSH
22119: LD_EXP 61
22123: PUSH
22124: LD_EXP 67
22128: PUSH
22129: LD_EXP 37
22133: ADD
22134: DIFF
22135: PPUSH
22136: LD_INT 1
22138: PPUSH
22139: CALL_OW 433
22143: ADD
22144: ST_TO_ADDR
// end ;
22145: GO 22106
22147: POP
22148: POP
// end ; Uns = JMM_Helpers ;
22149: LD_ADDR_VAR 0 4
22153: PUSH
22154: LD_EXP 67
22158: ST_TO_ADDR
// Un = FindMaxSkill ( Uns , skill_engineering ) ;
22159: LD_ADDR_VAR 0 3
22163: PUSH
22164: LD_VAR 0 4
22168: PPUSH
22169: LD_INT 2
22171: PPUSH
22172: CALL_OW 433
22176: ST_TO_ADDR
// Uns = Uns diff Un ;
22177: LD_ADDR_VAR 0 4
22181: PUSH
22182: LD_VAR 0 4
22186: PUSH
22187: LD_VAR 0 3
22191: DIFF
22192: ST_TO_ADDR
// if GetClass ( Un ) <> class_engineer then
22193: LD_VAR 0 3
22197: PPUSH
22198: CALL_OW 257
22202: PUSH
22203: LD_INT 2
22205: NONEQUAL
22206: IFFALSE 22249
// begin ComEnterUnit ( Un , AmDep ) ;
22208: LD_VAR 0 3
22212: PPUSH
22213: LD_INT 84
22215: PPUSH
22216: CALL_OW 120
// AddComChangeProfession ( Un , class_engineer ) ;
22220: LD_VAR 0 3
22224: PPUSH
22225: LD_INT 2
22227: PPUSH
22228: CALL_OW 183
// AddComMoveXY ( Un , 68 , 107 ) ;
22232: LD_VAR 0 3
22236: PPUSH
22237: LD_INT 68
22239: PPUSH
22240: LD_INT 107
22242: PPUSH
22243: CALL_OW 171
// end else
22247: GO 22264
// ComMoveXY ( Un , 68 , 107 ) ;
22249: LD_VAR 0 3
22253: PPUSH
22254: LD_INT 68
22256: PPUSH
22257: LD_INT 107
22259: PPUSH
22260: CALL_OW 111
// for i = 1 to 1 do
22264: LD_ADDR_VAR 0 5
22268: PUSH
22269: DOUBLE
22270: LD_INT 1
22272: DEC
22273: ST_TO_ADDR
22274: LD_INT 1
22276: PUSH
22277: FOR_TO
22278: IFFALSE 22387
// begin Un = FindMaxSkill ( Uns , skill_scientistic ) ;
22280: LD_ADDR_VAR 0 3
22284: PUSH
22285: LD_VAR 0 4
22289: PPUSH
22290: LD_INT 4
22292: PPUSH
22293: CALL_OW 433
22297: ST_TO_ADDR
// Uns = Uns diff Un ;
22298: LD_ADDR_VAR 0 4
22302: PUSH
22303: LD_VAR 0 4
22307: PUSH
22308: LD_VAR 0 3
22312: DIFF
22313: ST_TO_ADDR
// if GetClass ( Un ) <> class_scientistic then
22314: LD_VAR 0 3
22318: PPUSH
22319: CALL_OW 257
22323: PUSH
22324: LD_INT 4
22326: NONEQUAL
22327: IFFALSE 22370
// begin ComEnterUnit ( Un , AmLab ) ;
22329: LD_VAR 0 3
22333: PPUSH
22334: LD_INT 91
22336: PPUSH
22337: CALL_OW 120
// AddComChangeProfession ( Un , class_scientistic ) ;
22341: LD_VAR 0 3
22345: PPUSH
22346: LD_INT 4
22348: PPUSH
22349: CALL_OW 183
// AddComMoveXY ( Un , 68 , 107 ) ;
22353: LD_VAR 0 3
22357: PPUSH
22358: LD_INT 68
22360: PPUSH
22361: LD_INT 107
22363: PPUSH
22364: CALL_OW 171
// end else
22368: GO 22385
// ComMoveXY ( Un , 68 , 107 ) ;
22370: LD_VAR 0 3
22374: PPUSH
22375: LD_INT 68
22377: PPUSH
22378: LD_INT 107
22380: PPUSH
22381: CALL_OW 111
// end ;
22385: GO 22277
22387: POP
22388: POP
// for Un in Uns do
22389: LD_ADDR_VAR 0 3
22393: PUSH
22394: LD_VAR 0 4
22398: PUSH
22399: FOR_IN
22400: IFFALSE 22475
// begin if GetClass ( Un ) <> class_soldier then
22402: LD_VAR 0 3
22406: PPUSH
22407: CALL_OW 257
22411: PUSH
22412: LD_INT 1
22414: NONEQUAL
22415: IFFALSE 22458
// begin ComEnterUnit ( Un , AmArm ) ;
22417: LD_VAR 0 3
22421: PPUSH
22422: LD_INT 92
22424: PPUSH
22425: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
22429: LD_VAR 0 3
22433: PPUSH
22434: LD_INT 1
22436: PPUSH
22437: CALL_OW 183
// AddComMoveXY ( Un , 68 , 107 ) ;
22441: LD_VAR 0 3
22445: PPUSH
22446: LD_INT 68
22448: PPUSH
22449: LD_INT 107
22451: PPUSH
22452: CALL_OW 171
// end else
22456: GO 22473
// ComMoveXY ( Un , 68 , 107 ) ;
22458: LD_VAR 0 3
22462: PPUSH
22463: LD_INT 68
22465: PPUSH
22466: LD_INT 107
22468: PPUSH
22469: CALL_OW 111
// end ;
22473: GO 22399
22475: POP
22476: POP
// Uns = JMM_Helpers ;
22477: LD_ADDR_VAR 0 4
22481: PUSH
22482: LD_EXP 67
22486: ST_TO_ADDR
// while Uns > 0 do
22487: LD_VAR 0 4
22491: PUSH
22492: LD_INT 0
22494: GREATER
22495: IFFALSE 22574
// begin for Un in Uns do
22497: LD_ADDR_VAR 0 3
22501: PUSH
22502: LD_VAR 0 4
22506: PUSH
22507: FOR_IN
22508: IFFALSE 22563
// if GetDistUnitXY ( Un , 68 , 107 ) < 6 then
22510: LD_VAR 0 3
22514: PPUSH
22515: LD_INT 68
22517: PPUSH
22518: LD_INT 107
22520: PPUSH
22521: CALL_OW 297
22525: PUSH
22526: LD_INT 6
22528: LESS
22529: IFFALSE 22561
// begin SetSide ( Un , americans ) ;
22531: LD_VAR 0 3
22535: PPUSH
22536: LD_EXP 176
22540: PPUSH
22541: CALL_OW 235
// Uns = Uns diff Un ;
22545: LD_ADDR_VAR 0 4
22549: PUSH
22550: LD_VAR 0 4
22554: PUSH
22555: LD_VAR 0 3
22559: DIFF
22560: ST_TO_ADDR
// end ;
22561: GO 22507
22563: POP
22564: POP
// Wait ( 0 0$1 ) ;
22565: LD_INT 35
22567: PPUSH
22568: CALL_OW 67
// end ;
22572: GO 22487
// ingame_video = false ;
22574: LD_ADDR_OWVAR 52
22578: PUSH
22579: LD_INT 0
22581: ST_TO_ADDR
// interface_hidden = false ;
22582: LD_ADDR_OWVAR 54
22586: PUSH
22587: LD_INT 0
22589: ST_TO_ADDR
// ChangeMissionObjectives ( M1 ) ;
22590: LD_STRING M1
22592: PPUSH
22593: CALL_OW 337
// CenterNowOnXY ( 66 , 101 ) ;
22597: LD_INT 66
22599: PPUSH
22600: LD_INT 101
22602: PPUSH
22603: CALL_OW 86
// SaveForQuickRestart ;
22607: CALL_OW 22
// enable ( First_JMM_Task ) ;
22611: LD_EXP 137
22615: ENABLE_MARKED
// Skip := true ;
22616: LD_ADDR_EXP 186
22620: PUSH
22621: LD_INT 1
22623: ST_TO_ADDR
// CenterJMM = false ;
22624: LD_ADDR_EXP 68
22628: PUSH
22629: LD_INT 0
22631: ST_TO_ADDR
// Wait ( 0 0$2 ) ;
22632: LD_INT 70
22634: PPUSH
22635: CALL_OW 67
// RandomizeAll ;
22639: CALL_OW 11
// SecondTalk ;
22643: CALL 12639 0 0
// StartRussianBase ;
22647: CALL 41756 0 0
// StartAllianceBase ;
22651: CALL 50157 0 0
// StartArabianBase ;
22655: CALL 31188 0 0
// R1_Attack_Continues = true ;
22659: LD_ADDR_EXP 196
22663: PUSH
22664: LD_INT 1
22666: ST_TO_ADDR
// enable ( R1_attack ) ;
22667: LD_EXP 140
22671: ENABLE_MARKED
// Possible_Units = 0 ;
22672: LD_ADDR_VAR 0 6
22676: PUSH
22677: LD_INT 0
22679: ST_TO_ADDR
// Possible_Units = JMM_Helpers isect [ Lisa , Cyrus , Bobby , Gary , Donaldson , Frank , Cornell ] ;
22680: LD_ADDR_VAR 0 6
22684: PUSH
22685: LD_EXP 67
22689: PUSH
22690: LD_EXP 5
22694: PUSH
22695: LD_EXP 4
22699: PUSH
22700: LD_EXP 3
22704: PUSH
22705: LD_EXP 15
22709: PUSH
22710: LD_EXP 8
22714: PUSH
22715: LD_EXP 6
22719: PUSH
22720: LD_EXP 10
22724: PUSH
22725: EMPTY
22726: LIST
22727: LIST
22728: LIST
22729: LIST
22730: LIST
22731: LIST
22732: LIST
22733: ISECT
22734: ST_TO_ADDR
// Selected_Sold = Possible_Units [ Rand ( 1 , Possible_Units ) ] ;
22735: LD_ADDR_LOC 5
22739: PUSH
22740: LD_VAR 0 6
22744: PUSH
22745: LD_INT 1
22747: PPUSH
22748: LD_VAR 0 6
22752: PPUSH
22753: CALL_OW 12
22757: ARRAY
22758: ST_TO_ADDR
// RaiseSailEvent ( JMM_Talk ) ;
22759: LD_EXP 173
22763: PPUSH
22764: CALL_OW 427
// Remaining_Powells = Remaining_Powells diff JMM_Helpers ;
22768: LD_ADDR_EXP 64
22772: PUSH
22773: LD_EXP 64
22777: PUSH
22778: LD_EXP 67
22782: DIFF
22783: ST_TO_ADDR
// RaiseSailEvent ( Start_Am1_Base ) ;
22784: LD_EXP 164
22788: PPUSH
22789: CALL_OW 427
// end ;
22793: LD_VAR 0 1
22797: RET
// export function SendMaterial ; var Un , i , Cans_Positions , Free_Place ; begin
22798: LD_INT 0
22800: PPUSH
22801: PPUSH
22802: PPUSH
22803: PPUSH
22804: PPUSH
// ComEnterUnit ( Carriers , AmDep ) ;
22805: LD_EXP 65
22809: PPUSH
22810: LD_INT 84
22812: PPUSH
22813: CALL_OW 120
// for Un in Carriers do
22817: LD_ADDR_VAR 0 2
22821: PUSH
22822: LD_EXP 65
22826: PUSH
22827: FOR_IN
22828: IFFALSE 22844
// begin AddComChangeProfession ( Un , class_engineer ) ;
22830: LD_VAR 0 2
22834: PPUSH
22835: LD_INT 2
22837: PPUSH
22838: CALL_OW 183
// end ;
22842: GO 22827
22844: POP
22845: POP
// WaitTask ( Carriers , 0.5 ) ;
22846: LD_EXP 65
22850: PPUSH
22851: LD_REAL  5.00000000000000E-0001
22854: PPUSH
22855: CALL 17892 0 2
// Cans_Positions = [ [ 63 , 103 ] , [ 68 , 101 ] , [ 66 , 96 ] , [ 64 , 99 ] , [ 59 , 99 ] , [ 67 , 104 ] , [ 69 , 95 ] ] ;
22859: LD_ADDR_VAR 0 4
22863: PUSH
22864: LD_INT 63
22866: PUSH
22867: LD_INT 103
22869: PUSH
22870: EMPTY
22871: LIST
22872: LIST
22873: PUSH
22874: LD_INT 68
22876: PUSH
22877: LD_INT 101
22879: PUSH
22880: EMPTY
22881: LIST
22882: LIST
22883: PUSH
22884: LD_INT 66
22886: PUSH
22887: LD_INT 96
22889: PUSH
22890: EMPTY
22891: LIST
22892: LIST
22893: PUSH
22894: LD_INT 64
22896: PUSH
22897: LD_INT 99
22899: PUSH
22900: EMPTY
22901: LIST
22902: LIST
22903: PUSH
22904: LD_INT 59
22906: PUSH
22907: LD_INT 99
22909: PUSH
22910: EMPTY
22911: LIST
22912: LIST
22913: PUSH
22914: LD_INT 67
22916: PUSH
22917: LD_INT 104
22919: PUSH
22920: EMPTY
22921: LIST
22922: LIST
22923: PUSH
22924: LD_INT 69
22926: PUSH
22927: LD_INT 95
22929: PUSH
22930: EMPTY
22931: LIST
22932: LIST
22933: PUSH
22934: EMPTY
22935: LIST
22936: LIST
22937: LIST
22938: LIST
22939: LIST
22940: LIST
22941: LIST
22942: ST_TO_ADDR
// for i = 1 to Number_of_crates do
22943: LD_ADDR_VAR 0 3
22947: PUSH
22948: DOUBLE
22949: LD_INT 1
22951: DEC
22952: ST_TO_ADDR
22953: LD_EXP 197
22957: PUSH
22958: FOR_TO
22959: IFFALSE 23053
// begin if i = 1 then
22961: LD_VAR 0 3
22965: PUSH
22966: LD_INT 1
22968: EQUAL
22969: IFFALSE 22988
// ComTransport ( Carriers , AmDep , mat_cans ) else
22971: LD_EXP 65
22975: PPUSH
22976: LD_INT 84
22978: PPUSH
22979: LD_INT 1
22981: PPUSH
22982: CALL_OW 151
22986: GO 23003
// AddComTransport ( Carriers , AmDep , mat_cans ) ;
22988: LD_EXP 65
22992: PPUSH
22993: LD_INT 84
22995: PPUSH
22996: LD_INT 1
22998: PPUSH
22999: CALL_OW 211
// AddComMoveXY ( Carriers , Cans_Positions [ i ] [ 1 ] , Cans_Positions [ i ] [ 2 ] ) ;
23003: LD_EXP 65
23007: PPUSH
23008: LD_VAR 0 4
23012: PUSH
23013: LD_VAR 0 3
23017: ARRAY
23018: PUSH
23019: LD_INT 1
23021: ARRAY
23022: PPUSH
23023: LD_VAR 0 4
23027: PUSH
23028: LD_VAR 0 3
23032: ARRAY
23033: PUSH
23034: LD_INT 2
23036: ARRAY
23037: PPUSH
23038: CALL_OW 171
// AddComUnload ( Carriers ) ;
23042: LD_EXP 65
23046: PPUSH
23047: CALL_OW 219
// end ;
23051: GO 22958
23053: POP
23054: POP
// AddComMoveXY ( Carriers , 48 , 73 ) ;
23055: LD_EXP 65
23059: PPUSH
23060: LD_INT 48
23062: PPUSH
23063: LD_INT 73
23065: PPUSH
23066: CALL_OW 171
// WaitTask ( Carriers , 1 ) ;
23070: LD_EXP 65
23074: PPUSH
23075: LD_INT 1
23077: PPUSH
23078: CALL 17892 0 2
// Free_Place = 6 - UnitsInside ( AmArm ) ;
23082: LD_ADDR_VAR 0 5
23086: PUSH
23087: LD_INT 6
23089: PUSH
23090: LD_INT 92
23092: PPUSH
23093: CALL_OW 313
23097: MINUS
23098: ST_TO_ADDR
// if Free_Place > 2 then
23099: LD_VAR 0 5
23103: PUSH
23104: LD_INT 2
23106: GREATER
23107: IFFALSE 23123
// AddComEnterUnit ( Carriers , AmArm ) else
23109: LD_EXP 65
23113: PPUSH
23114: LD_INT 92
23116: PPUSH
23117: CALL_OW 180
23121: GO 23219
// begin for i = 1 to Free_Place do
23123: LD_ADDR_VAR 0 3
23127: PUSH
23128: DOUBLE
23129: LD_INT 1
23131: DEC
23132: ST_TO_ADDR
23133: LD_VAR 0 5
23137: PUSH
23138: FOR_TO
23139: IFFALSE 23173
// begin AddComEnterUnit ( Carriers [ i ] , AmArm ) ;
23141: LD_EXP 65
23145: PUSH
23146: LD_VAR 0 3
23150: ARRAY
23151: PPUSH
23152: LD_INT 92
23154: PPUSH
23155: CALL_OW 180
// AddComChangeProfession ( Carriers , class_soldier ) ;
23159: LD_EXP 65
23163: PPUSH
23164: LD_INT 1
23166: PPUSH
23167: CALL_OW 183
// end ;
23171: GO 23138
23173: POP
23174: POP
// for i = Free_Place + 1 to 3 do
23175: LD_ADDR_VAR 0 3
23179: PUSH
23180: DOUBLE
23181: LD_VAR 0 5
23185: PUSH
23186: LD_INT 1
23188: PLUS
23189: DEC
23190: ST_TO_ADDR
23191: LD_INT 3
23193: PUSH
23194: FOR_TO
23195: IFFALSE 23217
// AddComEnterUnit ( Carriers [ i ] , AmLab ) ;
23197: LD_EXP 65
23201: PUSH
23202: LD_VAR 0 3
23206: ARRAY
23207: PPUSH
23208: LD_INT 91
23210: PPUSH
23211: CALL_OW 180
23215: GO 23194
23217: POP
23218: POP
// end ; WaitTask ( Carriers , 1 ) ;
23219: LD_EXP 65
23223: PPUSH
23224: LD_INT 1
23226: PPUSH
23227: CALL 17892 0 2
// Remaining_Powells = Remaining_Powells ^ Carriers ;
23231: LD_ADDR_EXP 64
23235: PUSH
23236: LD_EXP 64
23240: PUSH
23241: LD_EXP 65
23245: ADD
23246: ST_TO_ADDR
// end ;
23247: LD_VAR 0 1
23251: RET
// export function StartAm1Base ; var i , Un , Uns ; begin
23252: LD_INT 0
23254: PPUSH
23255: PPUSH
23256: PPUSH
23257: PPUSH
// Remaining_Named = ( Remaining_Powells diff JMM_Helpers ) isect Named_americans ;
23258: LD_ADDR_EXP 63
23262: PUSH
23263: LD_EXP 64
23267: PUSH
23268: LD_EXP 67
23272: DIFF
23273: PUSH
23274: LD_EXP 62
23278: ISECT
23279: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff Named_americans ;
23280: LD_ADDR_EXP 64
23284: PUSH
23285: LD_EXP 64
23289: PUSH
23290: LD_EXP 62
23294: DIFF
23295: ST_TO_ADDR
// Carriers = [ ] ;
23296: LD_ADDR_EXP 65
23300: PUSH
23301: EMPTY
23302: ST_TO_ADDR
// for i = 1 to 3 do
23303: LD_ADDR_VAR 0 2
23307: PUSH
23308: DOUBLE
23309: LD_INT 1
23311: DEC
23312: ST_TO_ADDR
23313: LD_INT 3
23315: PUSH
23316: FOR_TO
23317: IFFALSE 23361
// begin Carriers = Carriers ^ Remaining_Powells [ 1 ] ;
23319: LD_ADDR_EXP 65
23323: PUSH
23324: LD_EXP 65
23328: PUSH
23329: LD_EXP 64
23333: PUSH
23334: LD_INT 1
23336: ARRAY
23337: ADD
23338: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff Remaining_Powells [ 1 ] ;
23339: LD_ADDR_EXP 64
23343: PUSH
23344: LD_EXP 64
23348: PUSH
23349: LD_EXP 64
23353: PUSH
23354: LD_INT 1
23356: ARRAY
23357: DIFF
23358: ST_TO_ADDR
// end ;
23359: GO 23316
23361: POP
23362: POP
// RaiseSailEvent ( Send_material ) ;
23363: LD_EXP 165
23367: PPUSH
23368: CALL_OW 427
// while UnitFilter ( Carriers , [ f_not , [ f_class , class_engineer ] ] ) do
23372: LD_EXP 65
23376: PPUSH
23377: LD_INT 3
23379: PUSH
23380: LD_INT 25
23382: PUSH
23383: LD_INT 2
23385: PUSH
23386: EMPTY
23387: LIST
23388: LIST
23389: PUSH
23390: EMPTY
23391: LIST
23392: LIST
23393: PPUSH
23394: CALL_OW 72
23398: IFFALSE 23409
// Wait ( 0 0$1 ) ;
23400: LD_INT 35
23402: PPUSH
23403: CALL_OW 67
23407: GO 23372
// i = 0 ;
23409: LD_ADDR_VAR 0 2
23413: PUSH
23414: LD_INT 0
23416: ST_TO_ADDR
// Uns = Remaining_Powells ;
23417: LD_ADDR_VAR 0 4
23421: PUSH
23422: LD_EXP 64
23426: ST_TO_ADDR
// repeat i = i + 1 ;
23427: LD_ADDR_VAR 0 2
23431: PUSH
23432: LD_VAR 0 2
23436: PUSH
23437: LD_INT 1
23439: PLUS
23440: ST_TO_ADDR
// case i of 1 :
23441: LD_VAR 0 2
23445: PUSH
23446: LD_INT 1
23448: DOUBLE
23449: EQUAL
23450: IFTRUE 23454
23452: GO 23527
23454: POP
// begin Un = FindMaxSkill ( Uns , skill_combat ) ;
23455: LD_ADDR_VAR 0 3
23459: PUSH
23460: LD_VAR 0 4
23464: PPUSH
23465: LD_INT 1
23467: PPUSH
23468: CALL_OW 433
23472: ST_TO_ADDR
// Uns = Uns diff Un ;
23473: LD_ADDR_VAR 0 4
23477: PUSH
23478: LD_VAR 0 4
23482: PUSH
23483: LD_VAR 0 3
23487: DIFF
23488: ST_TO_ADDR
// ComEnterUnit ( Un , AmArm ) ;
23489: LD_VAR 0 3
23493: PPUSH
23494: LD_INT 92
23496: PPUSH
23497: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
23501: LD_VAR 0 3
23505: PPUSH
23506: LD_INT 1
23508: PPUSH
23509: CALL_OW 183
// AddComEnterUnit ( Un , AmB1 ) ;
23513: LD_VAR 0 3
23517: PPUSH
23518: LD_INT 89
23520: PPUSH
23521: CALL_OW 180
// end ; 2 :
23525: GO 23924
23527: LD_INT 2
23529: DOUBLE
23530: EQUAL
23531: IFTRUE 23535
23533: GO 23608
23535: POP
// begin Un = FindMaxSkill ( Uns , skill_combat ) ;
23536: LD_ADDR_VAR 0 3
23540: PUSH
23541: LD_VAR 0 4
23545: PPUSH
23546: LD_INT 1
23548: PPUSH
23549: CALL_OW 433
23553: ST_TO_ADDR
// Uns = Uns diff Un ;
23554: LD_ADDR_VAR 0 4
23558: PUSH
23559: LD_VAR 0 4
23563: PUSH
23564: LD_VAR 0 3
23568: DIFF
23569: ST_TO_ADDR
// ComEnterUnit ( Un , AmArm ) ;
23570: LD_VAR 0 3
23574: PPUSH
23575: LD_INT 92
23577: PPUSH
23578: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
23582: LD_VAR 0 3
23586: PPUSH
23587: LD_INT 1
23589: PPUSH
23590: CALL_OW 183
// AddComEnterUnit ( Un , AmB2 ) ;
23594: LD_VAR 0 3
23598: PPUSH
23599: LD_INT 90
23601: PPUSH
23602: CALL_OW 180
// end ; 3 :
23606: GO 23924
23608: LD_INT 3
23610: DOUBLE
23611: EQUAL
23612: IFTRUE 23616
23614: GO 23710
23616: POP
// begin Un = FindMinSkill ( Uns , skill_mechanical ) ;
23617: LD_ADDR_VAR 0 3
23621: PUSH
23622: LD_VAR 0 4
23626: PPUSH
23627: LD_INT 3
23629: PPUSH
23630: CALL_OW 443
23634: ST_TO_ADDR
// The_original_mechanical_Skill = GetSkill ( Un , skill_mechanical ) ;
23635: LD_ADDR_LOC 13
23639: PUSH
23640: LD_VAR 0 3
23644: PPUSH
23645: LD_INT 3
23647: PPUSH
23648: CALL_OW 259
23652: ST_TO_ADDR
// SetSkill ( Un , skill_mechanical , 5 ) ;
23653: LD_VAR 0 3
23657: PPUSH
23658: LD_INT 3
23660: PPUSH
23661: LD_INT 5
23663: PPUSH
23664: CALL_OW 237
// Uns = Uns diff Un ;
23668: LD_ADDR_VAR 0 4
23672: PUSH
23673: LD_VAR 0 4
23677: PUSH
23678: LD_VAR 0 3
23682: DIFF
23683: ST_TO_ADDR
// ComEnterUnit ( Un , AmFact ) ;
23684: LD_VAR 0 3
23688: PPUSH
23689: LD_INT 85
23691: PPUSH
23692: CALL_OW 120
// AddComChangeProfession ( Un , class_mechanic ) ;
23696: LD_VAR 0 3
23700: PPUSH
23701: LD_INT 3
23703: PPUSH
23704: CALL_OW 183
// end ; 4 :
23708: GO 23924
23710: LD_INT 4
23712: DOUBLE
23713: EQUAL
23714: IFTRUE 23718
23716: GO 23789
23718: POP
// begin Un = FindMinSkill ( Uns , skill_scientistic ) ;
23719: LD_ADDR_VAR 0 3
23723: PUSH
23724: LD_VAR 0 4
23728: PPUSH
23729: LD_INT 4
23731: PPUSH
23732: CALL_OW 443
23736: ST_TO_ADDR
// Uns = Uns diff Un ;
23737: LD_ADDR_VAR 0 4
23741: PUSH
23742: LD_VAR 0 4
23746: PUSH
23747: LD_VAR 0 3
23751: DIFF
23752: ST_TO_ADDR
// ComEnterUnit ( Un , AmLab ) ;
23753: LD_VAR 0 3
23757: PPUSH
23758: LD_INT 91
23760: PPUSH
23761: CALL_OW 120
// AddComChangeProfession ( Un , class_scientistic ) ;
23765: LD_VAR 0 3
23769: PPUSH
23770: LD_INT 4
23772: PPUSH
23773: CALL_OW 183
// Developer = Un ;
23777: LD_ADDR_LOC 10
23781: PUSH
23782: LD_VAR 0 3
23786: ST_TO_ADDR
// end ; else
23787: GO 23924
23789: POP
// begin if ( i mod 2 = 1 ) and ( i > 2 ) then
23790: LD_VAR 0 2
23794: PUSH
23795: LD_INT 2
23797: MOD
23798: PUSH
23799: LD_INT 1
23801: EQUAL
23802: PUSH
23803: LD_VAR 0 2
23807: PUSH
23808: LD_INT 2
23810: GREATER
23811: AND
23812: IFFALSE 23870
// begin Un = Uns [ 1 ] ;
23814: LD_ADDR_VAR 0 3
23818: PUSH
23819: LD_VAR 0 4
23823: PUSH
23824: LD_INT 1
23826: ARRAY
23827: ST_TO_ADDR
// Uns = Uns diff Un ;
23828: LD_ADDR_VAR 0 4
23832: PUSH
23833: LD_VAR 0 4
23837: PUSH
23838: LD_VAR 0 3
23842: DIFF
23843: ST_TO_ADDR
// ComEnterUnit ( Un , AmArm ) ;
23844: LD_VAR 0 3
23848: PPUSH
23849: LD_INT 92
23851: PPUSH
23852: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
23856: LD_VAR 0 3
23860: PPUSH
23861: LD_INT 1
23863: PPUSH
23864: CALL_OW 183
// end else
23868: GO 23924
// begin Un = Uns [ 1 ] ;
23870: LD_ADDR_VAR 0 3
23874: PUSH
23875: LD_VAR 0 4
23879: PUSH
23880: LD_INT 1
23882: ARRAY
23883: ST_TO_ADDR
// Uns = Uns diff Un ;
23884: LD_ADDR_VAR 0 4
23888: PUSH
23889: LD_VAR 0 4
23893: PUSH
23894: LD_VAR 0 3
23898: DIFF
23899: ST_TO_ADDR
// ComEnterUnit ( Un , AmDep ) ;
23900: LD_VAR 0 3
23904: PPUSH
23905: LD_INT 84
23907: PPUSH
23908: CALL_OW 120
// AddComChangeProfession ( Un , class_engineer ) ;
23912: LD_VAR 0 3
23916: PPUSH
23917: LD_INT 2
23919: PPUSH
23920: CALL_OW 183
// end ; end ; end ; until Uns = 0 ;
23924: LD_VAR 0 4
23928: PUSH
23929: LD_INT 0
23931: EQUAL
23932: IFFALSE 23427
// ComResearch ( AmLab , tech_Tech1 ) ;
23934: LD_INT 91
23936: PPUSH
23937: LD_INT 48
23939: PPUSH
23940: CALL_OW 124
// AddComResearch ( AmLab , tech_Tech2 ) ;
23944: LD_INT 91
23946: PPUSH
23947: LD_INT 49
23949: PPUSH
23950: CALL_OW 184
// AddComResearch ( AmLab , tech_Tech3 ) ;
23954: LD_INT 91
23956: PPUSH
23957: LD_INT 50
23959: PPUSH
23960: CALL_OW 184
// AddComConstruct ( AmFact , us_medium_tracked , engine_solar , control_manual , us_light_gun ) ;
23964: LD_INT 85
23966: PPUSH
23967: LD_INT 3
23969: PPUSH
23970: LD_INT 2
23972: PPUSH
23973: LD_INT 1
23975: PPUSH
23976: LD_INT 3
23978: PPUSH
23979: CALL_OW 185
// if Remaining_Named <> 0 then
23983: LD_EXP 63
23987: PUSH
23988: LD_INT 0
23990: NONEQUAL
23991: IFFALSE 24275
// begin ComEnterUnit ( Remaining_Named [ 1 ] , AmLab ) ;
23993: LD_EXP 63
23997: PUSH
23998: LD_INT 1
24000: ARRAY
24001: PPUSH
24002: LD_INT 91
24004: PPUSH
24005: CALL_OW 120
// AddComChangeProfession ( Remaining_Named [ 1 ] , class_scientistic ) ;
24009: LD_EXP 63
24013: PUSH
24014: LD_INT 1
24016: ARRAY
24017: PPUSH
24018: LD_INT 4
24020: PPUSH
24021: CALL_OW 183
// while ( GetClass ( Carriers [ 1 ] ) <> class_engineer or GetClass ( Carriers [ 2 ] ) <> class_engineer or GetClass ( Carriers [ 3 ] ) <> class_engineer ) do
24025: LD_EXP 65
24029: PUSH
24030: LD_INT 1
24032: ARRAY
24033: PPUSH
24034: CALL_OW 257
24038: PUSH
24039: LD_INT 2
24041: NONEQUAL
24042: PUSH
24043: LD_EXP 65
24047: PUSH
24048: LD_INT 2
24050: ARRAY
24051: PPUSH
24052: CALL_OW 257
24056: PUSH
24057: LD_INT 2
24059: NONEQUAL
24060: OR
24061: PUSH
24062: LD_EXP 65
24066: PUSH
24067: LD_INT 3
24069: ARRAY
24070: PPUSH
24071: CALL_OW 257
24075: PUSH
24076: LD_INT 2
24078: NONEQUAL
24079: OR
24080: IFFALSE 24091
// Wait ( 0 0$1 ) ;
24082: LD_INT 35
24084: PPUSH
24085: CALL_OW 67
24089: GO 24025
// if Remaining_Named > 7 then
24091: LD_EXP 63
24095: PUSH
24096: LD_INT 7
24098: GREATER
24099: IFFALSE 24217
// begin for i = 2 to 7 do
24101: LD_ADDR_VAR 0 2
24105: PUSH
24106: DOUBLE
24107: LD_INT 2
24109: DEC
24110: ST_TO_ADDR
24111: LD_INT 7
24113: PUSH
24114: FOR_TO
24115: IFFALSE 24155
// begin ComEnterUnit ( Remaining_Named [ i ] , AmDep ) ;
24117: LD_EXP 63
24121: PUSH
24122: LD_VAR 0 2
24126: ARRAY
24127: PPUSH
24128: LD_INT 84
24130: PPUSH
24131: CALL_OW 120
// AddComChangeProfession ( Remaining_Named [ i ] , class_engineer ) ;
24135: LD_EXP 63
24139: PUSH
24140: LD_VAR 0 2
24144: ARRAY
24145: PPUSH
24146: LD_INT 2
24148: PPUSH
24149: CALL_OW 183
// end ;
24153: GO 24114
24155: POP
24156: POP
// for i = 8 to Remaining_Named do
24157: LD_ADDR_VAR 0 2
24161: PUSH
24162: DOUBLE
24163: LD_INT 8
24165: DEC
24166: ST_TO_ADDR
24167: LD_EXP 63
24171: PUSH
24172: FOR_TO
24173: IFFALSE 24213
// begin ComEnterUnit ( Remaining_Named [ i ] , AmArm ) ;
24175: LD_EXP 63
24179: PUSH
24180: LD_VAR 0 2
24184: ARRAY
24185: PPUSH
24186: LD_INT 92
24188: PPUSH
24189: CALL_OW 120
// AddComChangeProfession ( Remaining_Named [ i ] , class_soldier ) ;
24193: LD_EXP 63
24197: PUSH
24198: LD_VAR 0 2
24202: ARRAY
24203: PPUSH
24204: LD_INT 1
24206: PPUSH
24207: CALL_OW 183
// end ;
24211: GO 24172
24213: POP
24214: POP
// end else
24215: GO 24275
// for i = 2 to Remaining_Named do
24217: LD_ADDR_VAR 0 2
24221: PUSH
24222: DOUBLE
24223: LD_INT 2
24225: DEC
24226: ST_TO_ADDR
24227: LD_EXP 63
24231: PUSH
24232: FOR_TO
24233: IFFALSE 24273
// begin ComEnterUnit ( Remaining_Named [ i ] , AmDep ) ;
24235: LD_EXP 63
24239: PUSH
24240: LD_VAR 0 2
24244: ARRAY
24245: PPUSH
24246: LD_INT 84
24248: PPUSH
24249: CALL_OW 120
// AddComChangeProfession ( Remaining_Named [ i ] , class_engineer ) ;
24253: LD_EXP 63
24257: PUSH
24258: LD_VAR 0 2
24262: ARRAY
24263: PPUSH
24264: LD_INT 2
24266: PPUSH
24267: CALL_OW 183
// end ;
24271: GO 24232
24273: POP
24274: POP
// end ; end ;
24275: LD_VAR 0 1
24279: RET
// export function Am1VehicleConstructed ( veh ) ; var hex ; begin
24280: LD_INT 0
24282: PPUSH
24283: PPUSH
// driver = UnitsInside ( veh ) [ 1 ] ;
24284: LD_ADDR_LOC 9
24288: PUSH
24289: LD_VAR 0 1
24293: PPUSH
24294: CALL_OW 313
24298: PUSH
24299: LD_INT 1
24301: ARRAY
24302: ST_TO_ADDR
// Am1_vehicles = Am1_vehicles ^ veh ;
24303: LD_ADDR_EXP 59
24307: PUSH
24308: LD_EXP 59
24312: PUSH
24313: LD_VAR 0 1
24317: ADD
24318: ST_TO_ADDR
// if Am1_vehicles < 4 then
24319: LD_EXP 59
24323: PUSH
24324: LD_INT 4
24326: LESS
24327: IFFALSE 24450
// begin hex = RandHexArea ( Am1_parking , true ) ;
24329: LD_ADDR_VAR 0 3
24333: PUSH
24334: LD_INT 21
24336: PPUSH
24337: LD_INT 1
24339: PPUSH
24340: CALL_OW 16
24344: ST_TO_ADDR
// ComMoveXY ( driver , hex [ 1 ] , hex [ 2 ] ) ;
24345: LD_LOC 9
24349: PPUSH
24350: LD_VAR 0 3
24354: PUSH
24355: LD_INT 1
24357: ARRAY
24358: PPUSH
24359: LD_VAR 0 3
24363: PUSH
24364: LD_INT 2
24366: ARRAY
24367: PPUSH
24368: CALL_OW 111
// AddComExitVehicle ( driver ) ;
24372: LD_LOC 9
24376: PPUSH
24377: CALL_OW 181
// AddComEnterUnit ( driver , AmFact ) ;
24381: LD_LOC 9
24385: PPUSH
24386: LD_INT 85
24388: PPUSH
24389: CALL_OW 180
// if Powell_Attack_Counter in [ 1 , 3 ] then
24393: LD_EXP 193
24397: PUSH
24398: LD_INT 1
24400: PUSH
24401: LD_INT 3
24403: PUSH
24404: EMPTY
24405: LIST
24406: LIST
24407: IN
24408: IFFALSE 24448
// ComConstruct ( Amfact , us_medium_tracked , engine_solar , control_manual , [ us_light_gun , us_double_gun ] [ Rand ( 1 , 2 ) ] ) ;
24410: LD_INT 85
24412: PPUSH
24413: LD_INT 3
24415: PPUSH
24416: LD_INT 2
24418: PPUSH
24419: LD_INT 1
24421: PPUSH
24422: LD_INT 3
24424: PUSH
24425: LD_INT 5
24427: PUSH
24428: EMPTY
24429: LIST
24430: LIST
24431: PUSH
24432: LD_INT 1
24434: PPUSH
24435: LD_INT 2
24437: PPUSH
24438: CALL_OW 12
24442: ARRAY
24443: PPUSH
24444: CALL_OW 125
// end else
24448: GO 24794
// if Powell_Attack_Counter = 1 then
24450: LD_EXP 193
24454: PUSH
24455: LD_INT 1
24457: EQUAL
24458: IFFALSE 24588
// begin Powell_Attack_Counter = 2 ;
24460: LD_ADDR_EXP 193
24464: PUSH
24465: LD_INT 2
24467: ST_TO_ADDR
// ComMoveXY ( driver , 52 , 64 ) ;
24468: LD_LOC 9
24472: PPUSH
24473: LD_INT 52
24475: PPUSH
24476: LD_INT 64
24478: PPUSH
24479: CALL_OW 111
// AddComExitVehicle ( driver ) ;
24483: LD_LOC 9
24487: PPUSH
24488: CALL_OW 181
// AddComEnterUnit ( driver , AmFact ) ;
24492: LD_LOC 9
24496: PPUSH
24497: LD_INT 85
24499: PPUSH
24500: CALL_OW 180
// Wait ( 1 ) ;
24504: LD_INT 1
24506: PPUSH
24507: CALL_OW 67
// WaitTask ( driver , 1 ) ;
24511: LD_LOC 9
24515: PPUSH
24516: LD_INT 1
24518: PPUSH
24519: CALL 17892 0 2
// Remaining_Powells = Remaining_Powells diff driver ;
24523: LD_ADDR_EXP 64
24527: PUSH
24528: LD_EXP 64
24532: PUSH
24533: LD_LOC 9
24537: DIFF
24538: ST_TO_ADDR
// FirstPowellsAttack ;
24539: CALL 24869 0 0
// Powell_Attack_Counter = 3 ;
24543: LD_ADDR_EXP 193
24547: PUSH
24548: LD_INT 3
24550: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells ^ driver ;
24551: LD_ADDR_EXP 64
24555: PUSH
24556: LD_EXP 64
24560: PUSH
24561: LD_LOC 9
24565: ADD
24566: ST_TO_ADDR
// ComConstruct ( AmFact , us_medium_tracked , engine_solar , control_manual , us_light_gun ) ;
24567: LD_INT 85
24569: PPUSH
24570: LD_INT 3
24572: PPUSH
24573: LD_INT 2
24575: PPUSH
24576: LD_INT 1
24578: PPUSH
24579: LD_INT 3
24581: PPUSH
24582: CALL_OW 125
// end else
24586: GO 24794
// if Powell_Attack_Counter = 3 then
24588: LD_EXP 193
24592: PUSH
24593: LD_INT 3
24595: EQUAL
24596: IFFALSE 24691
// begin Powell_Attack_Counter = 4 ;
24598: LD_ADDR_EXP 193
24602: PUSH
24603: LD_INT 4
24605: ST_TO_ADDR
// ComConstruct ( AmFact , us_medium_tracked , engine_solar , control_manual , us_light_gun ) ;
24606: LD_INT 85
24608: PPUSH
24609: LD_INT 3
24611: PPUSH
24612: LD_INT 2
24614: PPUSH
24615: LD_INT 1
24617: PPUSH
24618: LD_INT 3
24620: PPUSH
24621: CALL_OW 125
// hex = RandHexArea ( Am1_parking , true ) ;
24625: LD_ADDR_VAR 0 3
24629: PUSH
24630: LD_INT 21
24632: PPUSH
24633: LD_INT 1
24635: PPUSH
24636: CALL_OW 16
24640: ST_TO_ADDR
// ComMoveXY ( driver , hex [ 1 ] , hex [ 2 ] ) ;
24641: LD_LOC 9
24645: PPUSH
24646: LD_VAR 0 3
24650: PUSH
24651: LD_INT 1
24653: ARRAY
24654: PPUSH
24655: LD_VAR 0 3
24659: PUSH
24660: LD_INT 2
24662: ARRAY
24663: PPUSH
24664: CALL_OW 111
// AddComExitVehicle ( driver ) ;
24668: LD_LOC 9
24672: PPUSH
24673: CALL_OW 181
// AddComEnterUnit ( driver , AmFact ) ;
24677: LD_LOC 9
24681: PPUSH
24682: LD_INT 85
24684: PPUSH
24685: CALL_OW 180
// end else
24689: GO 24794
// if Powell_Attack_Counter = 4 then
24691: LD_EXP 193
24695: PUSH
24696: LD_INT 4
24698: EQUAL
24699: IFFALSE 24794
// begin Powell_Attack_Counter = 5 ;
24701: LD_ADDR_EXP 193
24705: PUSH
24706: LD_INT 5
24708: ST_TO_ADDR
// Am1_vehicles = Am1_vehicles diff veh ;
24709: LD_ADDR_EXP 59
24713: PUSH
24714: LD_EXP 59
24718: PUSH
24719: LD_VAR 0 1
24723: DIFF
24724: ST_TO_ADDR
// Powell_vehicle = veh ;
24725: LD_ADDR_EXP 192
24729: PUSH
24730: LD_VAR 0 1
24734: ST_TO_ADDR
// ComMoveXY ( driver , 52 , 64 ) ;
24735: LD_LOC 9
24739: PPUSH
24740: LD_INT 52
24742: PPUSH
24743: LD_INT 64
24745: PPUSH
24746: CALL_OW 111
// AddComExitVehicle ( driver ) ;
24750: LD_LOC 9
24754: PPUSH
24755: CALL_OW 181
// AddComEnterUnit ( driver , AmFact ) ;
24759: LD_LOC 9
24763: PPUSH
24764: LD_INT 85
24766: PPUSH
24767: CALL_OW 180
// Wait ( 1 ) ;
24771: LD_INT 1
24773: PPUSH
24774: CALL_OW 67
// WaitTask ( driver , 1 ) ;
24778: LD_LOC 9
24782: PPUSH
24783: LD_INT 1
24785: PPUSH
24786: CALL 17892 0 2
// SecondPowellsAttack ;
24790: CALL 25843 0 0
// end ; end ;
24794: LD_VAR 0 2
24798: RET
// export function RetreatReport ; begin
24799: LD_INT 0
24801: PPUSH
// Say ( Retreat_Boy , D4a-Sol1-1 ) ;
24802: LD_LOC 8
24806: PPUSH
24807: LD_STRING D4a-Sol1-1
24809: PPUSH
24810: CALL_OW 88
// Wait ( 0 0$4 ) ;
24814: LD_INT 140
24816: PPUSH
24817: CALL_OW 67
// Say ( Powell , D4a-Pow-1 ) ;
24821: LD_EXP 2
24825: PPUSH
24826: LD_STRING D4a-Pow-1
24828: PPUSH
24829: CALL_OW 88
// Wait ( 0 0$2 ) ;
24833: LD_INT 70
24835: PPUSH
24836: CALL_OW 67
// Say ( Retreat_Boy , D4a-Sol1-2 ) ;
24840: LD_LOC 8
24844: PPUSH
24845: LD_STRING D4a-Sol1-2
24847: PPUSH
24848: CALL_OW 88
// Say ( Powell , D4a-Pow-2 ) ;
24852: LD_EXP 2
24856: PPUSH
24857: LD_STRING D4a-Pow-2
24859: PPUSH
24860: CALL_OW 88
// end ;
24864: LD_VAR 0 1
24868: RET
// export function FirstPowellsAttack ; var i , Un , ret , first_ret , InsideArm ; begin
24869: LD_INT 0
24871: PPUSH
24872: PPUSH
24873: PPUSH
24874: PPUSH
24875: PPUSH
24876: PPUSH
// soldiers = [ ] ;
24877: LD_ADDR_LOC 6
24881: PUSH
24882: EMPTY
24883: ST_TO_ADDR
// ret = [ 0 , 0 , 0 , 0 ] ;
24884: LD_ADDR_VAR 0 4
24888: PUSH
24889: LD_INT 0
24891: PUSH
24892: LD_INT 0
24894: PUSH
24895: LD_INT 0
24897: PUSH
24898: LD_INT 0
24900: PUSH
24901: EMPTY
24902: LIST
24903: LIST
24904: LIST
24905: LIST
24906: ST_TO_ADDR
// first_ret = true ;
24907: LD_ADDR_VAR 0 5
24911: PUSH
24912: LD_INT 1
24914: ST_TO_ADDR
// InsideArm = UnitsInside ( AmArm ) ;
24915: LD_ADDR_VAR 0 6
24919: PUSH
24920: LD_INT 92
24922: PPUSH
24923: CALL_OW 313
24927: ST_TO_ADDR
// ComExitBuilding ( InsideArm ) ;
24928: LD_VAR 0 6
24932: PPUSH
24933: CALL_OW 122
// ComMoveXY ( InsideArm , 55 , 69 ) ;
24937: LD_VAR 0 6
24941: PPUSH
24942: LD_INT 55
24944: PPUSH
24945: LD_INT 69
24947: PPUSH
24948: CALL_OW 111
// for i = 1 to 4 do
24952: LD_ADDR_VAR 0 2
24956: PUSH
24957: DOUBLE
24958: LD_INT 1
24960: DEC
24961: ST_TO_ADDR
24962: LD_INT 4
24964: PUSH
24965: FOR_TO
24966: IFFALSE 25142
// begin Un = 0 ;
24968: LD_ADDR_VAR 0 3
24972: PUSH
24973: LD_INT 0
24975: ST_TO_ADDR
// Un = FindMinSumSkill ( Remaining_Powells diff [ driver , developer ] , sex_male ) ;
24976: LD_ADDR_VAR 0 3
24980: PUSH
24981: LD_EXP 64
24985: PUSH
24986: LD_LOC 9
24990: PUSH
24991: LD_LOC 10
24995: PUSH
24996: EMPTY
24997: LIST
24998: LIST
24999: DIFF
25000: PPUSH
25001: LD_INT 1
25003: PPUSH
25004: CALL 18320 0 2
25008: ST_TO_ADDR
// if Un = 0 then
25009: LD_VAR 0 3
25013: PUSH
25014: LD_INT 0
25016: EQUAL
25017: IFFALSE 25037
// Un = FindMinSumSkill ( Remaining_Powells , 0 ) ;
25019: LD_ADDR_VAR 0 3
25023: PUSH
25024: LD_EXP 64
25028: PPUSH
25029: LD_INT 0
25031: PPUSH
25032: CALL 18320 0 2
25036: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff Un ;
25037: LD_ADDR_EXP 64
25041: PUSH
25042: LD_EXP 64
25046: PUSH
25047: LD_VAR 0 3
25051: DIFF
25052: ST_TO_ADDR
// soldiers = soldiers ^ Un ;
25053: LD_ADDR_LOC 6
25057: PUSH
25058: LD_LOC 6
25062: PUSH
25063: LD_VAR 0 3
25067: ADD
25068: ST_TO_ADDR
// if GetClass ( Un ) <> class_soldier then
25069: LD_VAR 0 3
25073: PPUSH
25074: CALL_OW 257
25078: PUSH
25079: LD_INT 1
25081: NONEQUAL
25082: IFFALSE 25125
// begin ComEnterUnit ( Un , AmArm ) ;
25084: LD_VAR 0 3
25088: PPUSH
25089: LD_INT 92
25091: PPUSH
25092: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
25096: LD_VAR 0 3
25100: PPUSH
25101: LD_INT 1
25103: PPUSH
25104: CALL_OW 183
// AddComMoveXY ( Un , 45 , 64 ) ;
25108: LD_VAR 0 3
25112: PPUSH
25113: LD_INT 45
25115: PPUSH
25116: LD_INT 64
25118: PPUSH
25119: CALL_OW 171
// end else
25123: GO 25140
// ComMoveXY ( Un , 45 , 64 ) ;
25125: LD_VAR 0 3
25129: PPUSH
25130: LD_INT 45
25132: PPUSH
25133: LD_INT 64
25135: PPUSH
25136: CALL_OW 111
// end ;
25140: GO 24965
25142: POP
25143: POP
// WaitTask ( soldiers , 1 ) ;
25144: LD_LOC 6
25148: PPUSH
25149: LD_INT 1
25151: PPUSH
25152: CALL 17892 0 2
// ComEnterUnit ( InsideArm diff soldiers , AmArm ) ;
25156: LD_VAR 0 6
25160: PUSH
25161: LD_LOC 6
25165: DIFF
25166: PPUSH
25167: LD_INT 92
25169: PPUSH
25170: CALL_OW 120
// if not ( Debug_Constant ) then
25174: LD_EXP 195
25178: NOT
25179: IFFALSE 25200
// begin while tick < 12 12$0 do
25181: LD_OWVAR 1
25185: PUSH
25186: LD_INT 25200
25188: LESS
25189: IFFALSE 25200
// Wait ( 0 0$1 ) ;
25191: LD_INT 35
25193: PPUSH
25194: CALL_OW 67
25198: GO 25181
// end ; Say ( Powell , D4-Pow-1 ) ;
25200: LD_EXP 2
25204: PPUSH
25205: LD_STRING D4-Pow-1
25207: PPUSH
25208: CALL_OW 88
// Say ( soldiers [ 1 ] , D4-Sol1-1 ) ;
25212: LD_LOC 6
25216: PUSH
25217: LD_INT 1
25219: ARRAY
25220: PPUSH
25221: LD_STRING D4-Sol1-1
25223: PPUSH
25224: CALL_OW 88
// Say ( Powell , D4-Pow-2 ) ;
25228: LD_EXP 2
25232: PPUSH
25233: LD_STRING D4-Pow-2
25235: PPUSH
25236: CALL_OW 88
// for i = 1 to 4 do
25240: LD_ADDR_VAR 0 2
25244: PUSH
25245: DOUBLE
25246: LD_INT 1
25248: DEC
25249: ST_TO_ADDR
25250: LD_INT 4
25252: PUSH
25253: FOR_TO
25254: IFFALSE 25305
// begin ComEnterUnit ( soldiers [ i ] , Am1_vehicles [ i ] ) ;
25256: LD_LOC 6
25260: PUSH
25261: LD_VAR 0 2
25265: ARRAY
25266: PPUSH
25267: LD_EXP 59
25271: PUSH
25272: LD_VAR 0 2
25276: ARRAY
25277: PPUSH
25278: CALL_OW 120
// AddComMoveXY ( soldiers [ i ] , 66 , 61 ) ;
25282: LD_LOC 6
25286: PUSH
25287: LD_VAR 0 2
25291: ARRAY
25292: PPUSH
25293: LD_INT 66
25295: PPUSH
25296: LD_INT 61
25298: PPUSH
25299: CALL_OW 171
// end ;
25303: GO 25253
25305: POP
25306: POP
// WaitPos ( 66 , 61 , 6 , Am1_vehicles , 1 ) ;
25307: LD_INT 66
25309: PPUSH
25310: LD_INT 61
25312: PPUSH
25313: LD_INT 6
25315: PPUSH
25316: LD_EXP 59
25320: PPUSH
25321: LD_INT 1
25323: PPUSH
25324: CALL 17990 0 5
// ComAgressiveMove ( Am1_vehicles , 76 , 22 ) ;
25328: LD_EXP 59
25332: PPUSH
25333: LD_INT 76
25335: PPUSH
25336: LD_INT 22
25338: PPUSH
25339: CALL_OW 114
// while not ( IsInArea ( soldiers [ 1 ] , Am_Base ) and IsInArea ( soldiers [ 2 ] , Am_Base ) and IsInArea ( soldiers [ 3 ] , Am_Base ) and IsInArea ( soldiers [ 4 ] , Am_Base ) ) do
25343: LD_LOC 6
25347: PUSH
25348: LD_INT 1
25350: ARRAY
25351: PPUSH
25352: LD_INT 1
25354: PPUSH
25355: CALL_OW 308
25359: PUSH
25360: LD_LOC 6
25364: PUSH
25365: LD_INT 2
25367: ARRAY
25368: PPUSH
25369: LD_INT 1
25371: PPUSH
25372: CALL_OW 308
25376: AND
25377: PUSH
25378: LD_LOC 6
25382: PUSH
25383: LD_INT 3
25385: ARRAY
25386: PPUSH
25387: LD_INT 1
25389: PPUSH
25390: CALL_OW 308
25394: AND
25395: PUSH
25396: LD_LOC 6
25400: PUSH
25401: LD_INT 4
25403: ARRAY
25404: PPUSH
25405: LD_INT 1
25407: PPUSH
25408: CALL_OW 308
25412: AND
25413: NOT
25414: IFFALSE 25614
// begin for i = 1 to 4 do
25416: LD_ADDR_VAR 0 2
25420: PUSH
25421: DOUBLE
25422: LD_INT 1
25424: DEC
25425: ST_TO_ADDR
25426: LD_INT 4
25428: PUSH
25429: FOR_TO
25430: IFFALSE 25603
// begin if not ( IsInUnit ( soldiers [ i ] ) ) and not ( ret [ i ] ) then
25432: LD_LOC 6
25436: PUSH
25437: LD_VAR 0 2
25441: ARRAY
25442: PPUSH
25443: CALL_OW 310
25447: NOT
25448: PUSH
25449: LD_VAR 0 4
25453: PUSH
25454: LD_VAR 0 2
25458: ARRAY
25459: NOT
25460: AND
25461: IFFALSE 25568
// begin if first_ret then
25463: LD_VAR 0 5
25467: IFFALSE 25502
// begin first_ret = false ;
25469: LD_ADDR_VAR 0 5
25473: PUSH
25474: LD_INT 0
25476: ST_TO_ADDR
// Retreat_Boy = soldiers [ i ] ;
25477: LD_ADDR_LOC 8
25481: PUSH
25482: LD_LOC 6
25486: PUSH
25487: LD_VAR 0 2
25491: ARRAY
25492: ST_TO_ADDR
// RaiseSailEvent ( Retreat_Report ) ;
25493: LD_EXP 172
25497: PPUSH
25498: CALL_OW 427
// end ; ret = replace ( ret , i , 1 ) ;
25502: LD_ADDR_VAR 0 4
25506: PUSH
25507: LD_VAR 0 4
25511: PPUSH
25512: LD_VAR 0 2
25516: PPUSH
25517: LD_INT 1
25519: PPUSH
25520: CALL_OW 1
25524: ST_TO_ADDR
// ComMoveXY ( soldiers [ i ] , 51 , 65 ) ;
25525: LD_LOC 6
25529: PUSH
25530: LD_VAR 0 2
25534: ARRAY
25535: PPUSH
25536: LD_INT 51
25538: PPUSH
25539: LD_INT 65
25541: PPUSH
25542: CALL_OW 111
// DoNotAttack ( arabians , soldiers [ i ] ) ;
25546: LD_EXP 180
25550: PPUSH
25551: LD_LOC 6
25555: PUSH
25556: LD_VAR 0 2
25560: ARRAY
25561: PPUSH
25562: CALL_OW 471
// end else
25566: GO 25601
// if ret [ i ] then
25568: LD_VAR 0 4
25572: PUSH
25573: LD_VAR 0 2
25577: ARRAY
25578: IFFALSE 25601
// ComMoveXY ( soldiers [ i ] , 51 , 65 ) ;
25580: LD_LOC 6
25584: PUSH
25585: LD_VAR 0 2
25589: ARRAY
25590: PPUSH
25591: LD_INT 51
25593: PPUSH
25594: LD_INT 65
25596: PPUSH
25597: CALL_OW 111
// end ;
25601: GO 25429
25603: POP
25604: POP
// Wait ( 0 0$0.2 ) ;
25605: LD_INT 7
25607: PPUSH
25608: CALL_OW 67
// end ;
25612: GO 25343
// for Un in soldiers do
25614: LD_ADDR_VAR 0 3
25618: PUSH
25619: LD_LOC 6
25623: PUSH
25624: FOR_IN
25625: IFFALSE 25643
// NormalAttack ( arabians , Un ) ;
25627: LD_EXP 180
25631: PPUSH
25632: LD_VAR 0 3
25636: PPUSH
25637: CALL_OW 472
25641: GO 25624
25643: POP
25644: POP
// if UnitsInside ( AmB1 ) = 0 then
25645: LD_INT 89
25647: PPUSH
25648: CALL_OW 313
25652: PUSH
25653: LD_INT 0
25655: EQUAL
25656: IFFALSE 25714
// begin ComEnterUnit ( soldiers [ 1 ] , AmB1 ) ;
25658: LD_LOC 6
25662: PUSH
25663: LD_INT 1
25665: ARRAY
25666: PPUSH
25667: LD_INT 89
25669: PPUSH
25670: CALL_OW 120
// Remaining_Powells = Remaining_Powells ^ soldiers [ 1 ] ;
25674: LD_ADDR_EXP 64
25678: PUSH
25679: LD_EXP 64
25683: PUSH
25684: LD_LOC 6
25688: PUSH
25689: LD_INT 1
25691: ARRAY
25692: ADD
25693: ST_TO_ADDR
// soldiers = soldiers diff soldiers [ 1 ] ;
25694: LD_ADDR_LOC 6
25698: PUSH
25699: LD_LOC 6
25703: PUSH
25704: LD_LOC 6
25708: PUSH
25709: LD_INT 1
25711: ARRAY
25712: DIFF
25713: ST_TO_ADDR
// end ; if UnitsInside ( AmB2 ) = 0 then
25714: LD_INT 90
25716: PPUSH
25717: CALL_OW 313
25721: PUSH
25722: LD_INT 0
25724: EQUAL
25725: IFFALSE 25783
// begin ComEnterUnit ( soldiers [ 2 ] , AmB2 ) ;
25727: LD_LOC 6
25731: PUSH
25732: LD_INT 2
25734: ARRAY
25735: PPUSH
25736: LD_INT 90
25738: PPUSH
25739: CALL_OW 120
// Remaining_Powells = Remaining_Powells ^ soldiers [ 2 ] ;
25743: LD_ADDR_EXP 64
25747: PUSH
25748: LD_EXP 64
25752: PUSH
25753: LD_LOC 6
25757: PUSH
25758: LD_INT 2
25760: ARRAY
25761: ADD
25762: ST_TO_ADDR
// soldiers = soldiers diff soldiers [ 2 ] ;
25763: LD_ADDR_LOC 6
25767: PUSH
25768: LD_LOC 6
25772: PUSH
25773: LD_LOC 6
25777: PUSH
25778: LD_INT 2
25780: ARRAY
25781: DIFF
25782: ST_TO_ADDR
// end ; for Un in soldiers do
25783: LD_ADDR_VAR 0 3
25787: PUSH
25788: LD_LOC 6
25792: PUSH
25793: FOR_IN
25794: IFFALSE 25826
// begin Remaining_Powells = Remaining_Powells ^ Un ;
25796: LD_ADDR_EXP 64
25800: PUSH
25801: LD_EXP 64
25805: PUSH
25806: LD_VAR 0 3
25810: ADD
25811: ST_TO_ADDR
// ComEnterUnit ( Un , AmArm ) ;
25812: LD_VAR 0 3
25816: PPUSH
25817: LD_INT 92
25819: PPUSH
25820: CALL_OW 120
// end ;
25824: GO 25793
25826: POP
25827: POP
// Am1_vehicles = Captured_vehicles ;
25828: LD_ADDR_EXP 59
25832: PUSH
25833: LD_EXP 60
25837: ST_TO_ADDR
// end ;
25838: LD_VAR 0 1
25842: RET
// export function SecondPowellsAttack ; var i , Un , Un1 , Initial_lives , InsideArm , Hex , JMM_Labs ; begin
25843: LD_INT 0
25845: PPUSH
25846: PPUSH
25847: PPUSH
25848: PPUSH
25849: PPUSH
25850: PPUSH
25851: PPUSH
25852: PPUSH
// soldiers = [ ] ;
25853: LD_ADDR_LOC 6
25857: PUSH
25858: EMPTY
25859: ST_TO_ADDR
// soldiers1 = [ ] ;
25860: LD_ADDR_LOC 7
25864: PUSH
25865: EMPTY
25866: ST_TO_ADDR
// if not ( Debug_Constant ) then
25867: LD_EXP 195
25871: NOT
25872: IFFALSE 26070
// begin while tick < 20 20$0 do
25874: LD_OWVAR 1
25878: PUSH
25879: LD_INT 42000
25881: LESS
25882: IFFALSE 25893
// Wait ( 0 0$1 ) ;
25884: LD_INT 35
25886: PPUSH
25887: CALL_OW 67
25891: GO 25874
// disable ( R1_attack ) ;
25893: LD_EXP 140
25897: DISABLE_MARKED
// R1_Attack_Continues = false ;
25898: LD_ADDR_EXP 196
25902: PUSH
25903: LD_INT 0
25905: ST_TO_ADDR
// while tick < 23 23$30 do
25906: LD_OWVAR 1
25910: PUSH
25911: LD_INT 49350
25913: LESS
25914: IFFALSE 25925
// Wait ( 0 0$1 ) ;
25916: LD_INT 35
25918: PPUSH
25919: CALL_OW 67
25923: GO 25906
// R1_Attacking_Units = GetMcUnits ( Russian1_att_id ) ;
25925: LD_ADDR_LOC 11
25929: PUSH
25930: LD_EXP 238
25934: PPUSH
25935: CALL_OW 389
25939: ST_TO_ADDR
// RemoveMcUnits ( Russian1_att_id , R1_Attacking_Units ) ;
25940: LD_EXP 238
25944: PPUSH
25945: LD_LOC 11
25949: PPUSH
25950: CALL_OW 391
// ComMoveXY ( R1_Attacking_Units , 93 , 173 ) ;
25954: LD_LOC 11
25958: PPUSH
25959: LD_INT 93
25961: PPUSH
25962: LD_INT 173
25964: PPUSH
25965: CALL_OW 111
// AddComHold ( R1_Attacking_Units ) ;
25969: LD_LOC 11
25973: PPUSH
25974: CALL_OW 200
// R1_Patroling_Units = GetMcUnits ( Russian1_patr_id ) ;
25978: LD_ADDR_LOC 12
25982: PUSH
25983: LD_EXP 240
25987: PPUSH
25988: CALL_OW 389
25992: ST_TO_ADDR
// RemoveMcUnits ( Russian1_patr_id , R1_Patroling_Units ) ;
25993: LD_EXP 240
25997: PPUSH
25998: LD_LOC 12
26002: PPUSH
26003: CALL_OW 391
// ComMoveXY ( R1_Patroling_Units , 93 , 173 ) ;
26007: LD_LOC 12
26011: PPUSH
26012: LD_INT 93
26014: PPUSH
26015: LD_INT 173
26017: PPUSH
26018: CALL_OW 111
// AddComHold ( R1_Patroling_Units ) ;
26022: LD_LOC 12
26026: PPUSH
26027: CALL_OW 200
// while tick < 24 24$0 do
26031: LD_OWVAR 1
26035: PUSH
26036: LD_INT 50400
26038: LESS
26039: IFFALSE 26050
// Wait ( 0 0$1 ) ;
26041: LD_INT 35
26043: PPUSH
26044: CALL_OW 67
26048: GO 26031
// SetAttitude ( russians1 , americans , att_friend , true ) ;
26050: LD_EXP 179
26054: PPUSH
26055: LD_EXP 176
26059: PPUSH
26060: LD_INT 1
26062: PPUSH
26063: LD_INT 1
26065: PPUSH
26066: CALL_OW 80
// end ; disable ( Not_Ingame_Run_over ) ;
26070: LD_EXP 157
26074: DISABLE_MARKED
// if Remaining_Powells > 8 then
26075: LD_EXP 64
26079: PUSH
26080: LD_INT 8
26082: GREATER
26083: IFFALSE 26138
// begin Remaining_Powells = Remaining_Powells diff Driver ;
26085: LD_ADDR_EXP 64
26089: PUSH
26090: LD_EXP 64
26094: PUSH
26095: LD_LOC 9
26099: DIFF
26100: ST_TO_ADDR
// SetSkill ( Driver , skill_mechanical , The_original_mechanical_Skill + GetSkill ( Driver , skill_mechanical ) - 5 ) ;
26101: LD_LOC 9
26105: PPUSH
26106: LD_INT 3
26108: PPUSH
26109: LD_LOC 13
26113: PUSH
26114: LD_LOC 9
26118: PPUSH
26119: LD_INT 3
26121: PPUSH
26122: CALL_OW 259
26126: PLUS
26127: PUSH
26128: LD_INT 5
26130: MINUS
26131: PPUSH
26132: CALL_OW 237
// end else
26136: GO 26146
// Driver = 0 ;
26138: LD_ADDR_LOC 9
26142: PUSH
26143: LD_INT 0
26145: ST_TO_ADDR
// for i = 1 to 4 do
26146: LD_ADDR_VAR 0 2
26150: PUSH
26151: DOUBLE
26152: LD_INT 1
26154: DEC
26155: ST_TO_ADDR
26156: LD_INT 4
26158: PUSH
26159: FOR_TO
26160: IFFALSE 26285
// begin Un = FindMinSumSkill ( Remaining_Powells , 0 ) ;
26162: LD_ADDR_VAR 0 3
26166: PUSH
26167: LD_EXP 64
26171: PPUSH
26172: LD_INT 0
26174: PPUSH
26175: CALL 18320 0 2
26179: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff Un ;
26180: LD_ADDR_EXP 64
26184: PUSH
26185: LD_EXP 64
26189: PUSH
26190: LD_VAR 0 3
26194: DIFF
26195: ST_TO_ADDR
// soldiers = soldiers ^ Un ;
26196: LD_ADDR_LOC 6
26200: PUSH
26201: LD_LOC 6
26205: PUSH
26206: LD_VAR 0 3
26210: ADD
26211: ST_TO_ADDR
// if GetClass ( Un ) <> class_soldier then
26212: LD_VAR 0 3
26216: PPUSH
26217: CALL_OW 257
26221: PUSH
26222: LD_INT 1
26224: NONEQUAL
26225: IFFALSE 26268
// begin ComEnterUnit ( Un , AmArm ) ;
26227: LD_VAR 0 3
26231: PPUSH
26232: LD_INT 92
26234: PPUSH
26235: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
26239: LD_VAR 0 3
26243: PPUSH
26244: LD_INT 1
26246: PPUSH
26247: CALL_OW 183
// AddComMoveXY ( Un , 45 , 64 ) ;
26251: LD_VAR 0 3
26255: PPUSH
26256: LD_INT 45
26258: PPUSH
26259: LD_INT 64
26261: PPUSH
26262: CALL_OW 171
// end else
26266: GO 26283
// ComMoveXY ( Un , 45 , 64 ) ;
26268: LD_VAR 0 3
26272: PPUSH
26273: LD_INT 45
26275: PPUSH
26276: LD_INT 64
26278: PPUSH
26279: CALL_OW 111
// end ;
26283: GO 26159
26285: POP
26286: POP
// WaitTask ( soldiers , 1 ) ;
26287: LD_LOC 6
26291: PPUSH
26292: LD_INT 1
26294: PPUSH
26295: CALL 17892 0 2
// for i = 1 to 4 do
26299: LD_ADDR_VAR 0 2
26303: PUSH
26304: DOUBLE
26305: LD_INT 1
26307: DEC
26308: ST_TO_ADDR
26309: LD_INT 4
26311: PUSH
26312: FOR_TO
26313: IFFALSE 26478
// begin if ( ( i = 1 ) or ( i = 2 ) ) then
26315: LD_VAR 0 2
26319: PUSH
26320: LD_INT 1
26322: EQUAL
26323: PUSH
26324: LD_VAR 0 2
26328: PUSH
26329: LD_INT 2
26331: EQUAL
26332: OR
26333: IFFALSE 26355
// Un = FindMinSumSkill ( Remaining_Powells , sex_male ) else
26335: LD_ADDR_VAR 0 3
26339: PUSH
26340: LD_EXP 64
26344: PPUSH
26345: LD_INT 1
26347: PPUSH
26348: CALL 18320 0 2
26352: ST_TO_ADDR
26353: GO 26373
// Un = FindMinSumSkill ( Remaining_Powells , 0 ) ;
26355: LD_ADDR_VAR 0 3
26359: PUSH
26360: LD_EXP 64
26364: PPUSH
26365: LD_INT 0
26367: PPUSH
26368: CALL 18320 0 2
26372: ST_TO_ADDR
// Remaining_Powells = Remaining_Powells diff Un ;
26373: LD_ADDR_EXP 64
26377: PUSH
26378: LD_EXP 64
26382: PUSH
26383: LD_VAR 0 3
26387: DIFF
26388: ST_TO_ADDR
// soldiers1 = soldiers1 ^ Un ;
26389: LD_ADDR_LOC 7
26393: PUSH
26394: LD_LOC 7
26398: PUSH
26399: LD_VAR 0 3
26403: ADD
26404: ST_TO_ADDR
// if GetClass ( Un ) <> class_soldier then
26405: LD_VAR 0 3
26409: PPUSH
26410: CALL_OW 257
26414: PUSH
26415: LD_INT 1
26417: NONEQUAL
26418: IFFALSE 26461
// begin ComEnterUnit ( Un , AmArm ) ;
26420: LD_VAR 0 3
26424: PPUSH
26425: LD_INT 92
26427: PPUSH
26428: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
26432: LD_VAR 0 3
26436: PPUSH
26437: LD_INT 1
26439: PPUSH
26440: CALL_OW 183
// AddComMoveXY ( Un , 45 , 64 ) ;
26444: LD_VAR 0 3
26448: PPUSH
26449: LD_INT 45
26451: PPUSH
26452: LD_INT 64
26454: PPUSH
26455: CALL_OW 171
// end else
26459: GO 26476
// ComMoveXY ( Un , 45 , 64 ) ;
26461: LD_VAR 0 3
26465: PPUSH
26466: LD_INT 45
26468: PPUSH
26469: LD_INT 64
26471: PPUSH
26472: CALL_OW 111
// end ;
26476: GO 26312
26478: POP
26479: POP
// if Driver <> 0 then
26480: LD_LOC 9
26484: PUSH
26485: LD_INT 0
26487: NONEQUAL
26488: IFFALSE 26513
// Remaining_Powells = Insert ( Remaining_Powells , 1 , Driver ) ;
26490: LD_ADDR_EXP 64
26494: PUSH
26495: LD_EXP 64
26499: PPUSH
26500: LD_INT 1
26502: PPUSH
26503: LD_LOC 9
26507: PPUSH
26508: CALL_OW 2
26512: ST_TO_ADDR
// ingame_video = true ;
26513: LD_ADDR_OWVAR 52
26517: PUSH
26518: LD_INT 1
26520: ST_TO_ADDR
// interface_hidden = true ;
26521: LD_ADDR_OWVAR 54
26525: PUSH
26526: LD_INT 1
26528: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_hastask ] ] ) do
26529: LD_ADDR_VAR 0 2
26533: PUSH
26534: LD_INT 22
26536: PUSH
26537: LD_INT 1
26539: PUSH
26540: EMPTY
26541: LIST
26542: LIST
26543: PUSH
26544: LD_INT 21
26546: PUSH
26547: LD_INT 1
26549: PUSH
26550: EMPTY
26551: LIST
26552: LIST
26553: PUSH
26554: LD_INT 60
26556: PUSH
26557: EMPTY
26558: LIST
26559: PUSH
26560: EMPTY
26561: LIST
26562: LIST
26563: LIST
26564: PPUSH
26565: CALL_OW 69
26569: PUSH
26570: FOR_IN
26571: IFFALSE 26584
// ComStop ( i ) ;
26573: LD_VAR 0 2
26577: PPUSH
26578: CALL_OW 141
26582: GO 26570
26584: POP
26585: POP
// CenterOnXY ( 48 , 63 ) ;
26586: LD_INT 48
26588: PPUSH
26589: LD_INT 63
26591: PPUSH
26592: CALL_OW 84
// JMM_Labs = FilterAllUnits ( [ [ f_side , americans ] , [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_full ] , [ f_btype , b_lab_half ] ] ] ) ;
26596: LD_ADDR_VAR 0 8
26600: PUSH
26601: LD_INT 22
26603: PUSH
26604: LD_EXP 176
26608: PUSH
26609: EMPTY
26610: LIST
26611: LIST
26612: PUSH
26613: LD_INT 2
26615: PUSH
26616: LD_INT 30
26618: PUSH
26619: LD_INT 6
26621: PUSH
26622: EMPTY
26623: LIST
26624: LIST
26625: PUSH
26626: LD_INT 30
26628: PUSH
26629: LD_INT 8
26631: PUSH
26632: EMPTY
26633: LIST
26634: LIST
26635: PUSH
26636: LD_INT 30
26638: PUSH
26639: LD_INT 7
26641: PUSH
26642: EMPTY
26643: LIST
26644: LIST
26645: PUSH
26646: EMPTY
26647: LIST
26648: LIST
26649: LIST
26650: LIST
26651: PUSH
26652: EMPTY
26653: LIST
26654: LIST
26655: PPUSH
26656: CALL_OW 69
26660: ST_TO_ADDR
// ComExitBuilding ( JMM_Labs ) ;
26661: LD_VAR 0 8
26665: PPUSH
26666: CALL_OW 122
// WaitTask ( soldiers1 , 1 ) ;
26670: LD_LOC 7
26674: PPUSH
26675: LD_INT 1
26677: PPUSH
26678: CALL 17892 0 2
// if UnitsInside ( AmB1 ) = 0 then
26682: LD_INT 89
26684: PPUSH
26685: CALL_OW 313
26689: PUSH
26690: LD_INT 0
26692: EQUAL
26693: IFFALSE 26786
// begin Un = FindMaxSkill ( Remaining_Named ^ Remaining_Powells , skill_combat ) ;
26695: LD_ADDR_VAR 0 3
26699: PUSH
26700: LD_EXP 63
26704: PUSH
26705: LD_EXP 64
26709: ADD
26710: PPUSH
26711: LD_INT 1
26713: PPUSH
26714: CALL_OW 433
26718: ST_TO_ADDR
// if GetClass ( Un ) = class_soldier then
26719: LD_VAR 0 3
26723: PPUSH
26724: CALL_OW 257
26728: PUSH
26729: LD_INT 1
26731: EQUAL
26732: IFFALSE 26748
// ComEnterUnit ( Un , AmB1 ) else
26734: LD_VAR 0 3
26738: PPUSH
26739: LD_INT 89
26741: PPUSH
26742: CALL_OW 120
26746: GO 26784
// begin ComEnterUnit ( Un , AmArm ) ;
26748: LD_VAR 0 3
26752: PPUSH
26753: LD_INT 92
26755: PPUSH
26756: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
26760: LD_VAR 0 3
26764: PPUSH
26765: LD_INT 1
26767: PPUSH
26768: CALL_OW 183
// AddComEnterUnit ( Un , AmB1 ) ;
26772: LD_VAR 0 3
26776: PPUSH
26777: LD_INT 89
26779: PPUSH
26780: CALL_OW 180
// end ; end else
26784: GO 26799
// Un = UnitsInside ( AmB1 ) ;
26786: LD_ADDR_VAR 0 3
26790: PUSH
26791: LD_INT 89
26793: PPUSH
26794: CALL_OW 313
26798: ST_TO_ADDR
// if UnitsInside ( AmB2 ) = 0 then
26799: LD_INT 90
26801: PPUSH
26802: CALL_OW 313
26806: PUSH
26807: LD_INT 0
26809: EQUAL
26810: IFFALSE 26909
// begin Un1 = FindMaxSkill ( ( Remaining_Named ^ Remaining_Powells ) diff Un , skill_combat ) ;
26812: LD_ADDR_VAR 0 4
26816: PUSH
26817: LD_EXP 63
26821: PUSH
26822: LD_EXP 64
26826: ADD
26827: PUSH
26828: LD_VAR 0 3
26832: DIFF
26833: PPUSH
26834: LD_INT 1
26836: PPUSH
26837: CALL_OW 433
26841: ST_TO_ADDR
// if GetClass ( Un1 ) = class_soldier then
26842: LD_VAR 0 4
26846: PPUSH
26847: CALL_OW 257
26851: PUSH
26852: LD_INT 1
26854: EQUAL
26855: IFFALSE 26871
// ComEnterUnit ( Un1 , AmB2 ) else
26857: LD_VAR 0 4
26861: PPUSH
26862: LD_INT 90
26864: PPUSH
26865: CALL_OW 120
26869: GO 26907
// begin ComEnterUnit ( Un1 , AmArm ) ;
26871: LD_VAR 0 4
26875: PPUSH
26876: LD_INT 92
26878: PPUSH
26879: CALL_OW 120
// AddComChangeProfession ( Un1 , class_soldier ) ;
26883: LD_VAR 0 4
26887: PPUSH
26888: LD_INT 1
26890: PPUSH
26891: CALL_OW 183
// AddComEnterUnit ( Un1 , AmB2 ) ;
26895: LD_VAR 0 4
26899: PPUSH
26900: LD_INT 90
26902: PPUSH
26903: CALL_OW 180
// end ; end else
26907: GO 26922
// Un1 = UnitsInside ( AmB2 ) ;
26909: LD_ADDR_VAR 0 4
26913: PUSH
26914: LD_INT 90
26916: PPUSH
26917: CALL_OW 313
26921: ST_TO_ADDR
// ComEnterUnit ( Remaining_Powells diff ( Un ^ Un1 ) , AmArm ) ;
26922: LD_EXP 64
26926: PUSH
26927: LD_VAR 0 3
26931: PUSH
26932: LD_VAR 0 4
26936: ADD
26937: DIFF
26938: PPUSH
26939: LD_INT 92
26941: PPUSH
26942: CALL_OW 120
// AddComChangeProfession ( Remaining_Powells diff ( Un ^ Un1 ) , class_soldier ) ;
26946: LD_EXP 64
26950: PUSH
26951: LD_VAR 0 3
26955: PUSH
26956: LD_VAR 0 4
26960: ADD
26961: DIFF
26962: PPUSH
26963: LD_INT 1
26965: PPUSH
26966: CALL_OW 183
// game_speed = 4 ;
26970: LD_ADDR_OWVAR 65
26974: PUSH
26975: LD_INT 4
26977: ST_TO_ADDR
// Say ( Powell , D5-Pow-1 ) ;
26978: LD_EXP 2
26982: PPUSH
26983: LD_STRING D5-Pow-1
26985: PPUSH
26986: CALL_OW 88
// Say ( Soldiers1 [ 1 ] , D5-Sol2-1 ) ;
26990: LD_LOC 7
26994: PUSH
26995: LD_INT 1
26997: ARRAY
26998: PPUSH
26999: LD_STRING D5-Sol2-1
27001: PPUSH
27002: CALL_OW 88
// Say ( Powell , D5-Pow-2 ) ;
27006: LD_EXP 2
27010: PPUSH
27011: LD_STRING D5-Pow-2
27013: PPUSH
27014: CALL_OW 88
// Say ( Soldiers1 [ 2 ] , D5-Sol2-2 ) ;
27018: LD_LOC 7
27022: PUSH
27023: LD_INT 2
27025: ARRAY
27026: PPUSH
27027: LD_STRING D5-Sol2-2
27029: PPUSH
27030: CALL_OW 88
// Say ( Powell , D5-Pow-3 ) ;
27034: LD_EXP 2
27038: PPUSH
27039: LD_STRING D5-Pow-3
27041: PPUSH
27042: CALL_OW 88
// disable ( First_JMM_Task ) ;
27046: LD_EXP 137
27050: DISABLE_MARKED
// EnableVideoExclamations ;
27051: CALL_OW 498
// for i = 1 to 4 do
27055: LD_ADDR_VAR 0 2
27059: PUSH
27060: DOUBLE
27061: LD_INT 1
27063: DEC
27064: ST_TO_ADDR
27065: LD_INT 4
27067: PUSH
27068: FOR_TO
27069: IFFALSE 27120
// begin ComEnterUnit ( soldiers [ i ] , Am1_vehicles [ i ] ) ;
27071: LD_LOC 6
27075: PUSH
27076: LD_VAR 0 2
27080: ARRAY
27081: PPUSH
27082: LD_EXP 59
27086: PUSH
27087: LD_VAR 0 2
27091: ARRAY
27092: PPUSH
27093: CALL_OW 120
// AddComMoveXY ( soldiers [ i ] , 68 , 64 ) ;
27097: LD_LOC 6
27101: PUSH
27102: LD_VAR 0 2
27106: ARRAY
27107: PPUSH
27108: LD_INT 68
27110: PPUSH
27111: LD_INT 64
27113: PPUSH
27114: CALL_OW 171
// end ;
27118: GO 27068
27120: POP
27121: POP
// for i = 1 to 4 do
27122: LD_ADDR_VAR 0 2
27126: PUSH
27127: DOUBLE
27128: LD_INT 1
27130: DEC
27131: ST_TO_ADDR
27132: LD_INT 4
27134: PUSH
27135: FOR_TO
27136: IFFALSE 27161
// begin ComMoveXY ( soldiers1 [ i ] , 68 , 64 ) ;
27138: LD_LOC 7
27142: PUSH
27143: LD_VAR 0 2
27147: ARRAY
27148: PPUSH
27149: LD_INT 68
27151: PPUSH
27152: LD_INT 64
27154: PPUSH
27155: CALL_OW 111
// end ;
27159: GO 27135
27161: POP
27162: POP
// enable ( Center_on_fight ) ;
27163: LD_EXP 143
27167: ENABLE_MARKED
// WaitPos ( 68 , 64 , 8 , Am1_vehicles ^ soldiers1 ^ soldiers , 1 ) ;
27168: LD_INT 68
27170: PPUSH
27171: LD_INT 64
27173: PPUSH
27174: LD_INT 8
27176: PPUSH
27177: LD_EXP 59
27181: PUSH
27182: LD_LOC 7
27186: ADD
27187: PUSH
27188: LD_LOC 6
27192: ADD
27193: PPUSH
27194: LD_INT 1
27196: PPUSH
27197: CALL 17990 0 5
// ComAgressiveMove ( Am1_vehicles ^ soldiers1 ^ soldiers , 76 , 22 ) ;
27201: LD_EXP 59
27205: PUSH
27206: LD_LOC 7
27210: ADD
27211: PUSH
27212: LD_LOC 6
27216: ADD
27217: PPUSH
27218: LD_INT 76
27220: PPUSH
27221: LD_INT 22
27223: PPUSH
27224: CALL_OW 114
// Initial_lives = GetLives ( Am1_vehicles ^ soldiers1 ^ soldiers ) ;
27228: LD_ADDR_VAR 0 5
27232: PUSH
27233: LD_EXP 59
27237: PUSH
27238: LD_LOC 7
27242: ADD
27243: PUSH
27244: LD_LOC 6
27248: ADD
27249: PPUSH
27250: CALL_OW 256
27254: ST_TO_ADDR
// repeat Wait ( 0 0$1 ) ;
27255: LD_INT 35
27257: PPUSH
27258: CALL_OW 67
// until Initial_lives > GetLives ( Am1_vehicles ^ soldiers1 ^ soldiers ) + 1 ;
27262: LD_VAR 0 5
27266: PUSH
27267: LD_EXP 59
27271: PUSH
27272: LD_LOC 7
27276: ADD
27277: PUSH
27278: LD_LOC 6
27282: ADD
27283: PPUSH
27284: CALL_OW 256
27288: PUSH
27289: LD_INT 1
27291: PLUS
27292: GREATER
27293: IFFALSE 27255
// Say ( Powell , D5a-Pow-1 ) ;
27295: LD_EXP 2
27299: PPUSH
27300: LD_STRING D5a-Pow-1
27302: PPUSH
27303: CALL_OW 88
// Say ( Powell , D5a-Pow-1a ) ;
27307: LD_EXP 2
27311: PPUSH
27312: LD_STRING D5a-Pow-1a
27314: PPUSH
27315: CALL_OW 88
// Wait ( 0 0$1 ) ;
27319: LD_INT 35
27321: PPUSH
27322: CALL_OW 67
// Say ( Powell , D5a-Pow-1b ) ;
27326: LD_EXP 2
27330: PPUSH
27331: LD_STRING D5a-Pow-1b
27333: PPUSH
27334: CALL_OW 88
// Wait ( 0 0$1 ) ;
27338: LD_INT 35
27340: PPUSH
27341: CALL_OW 67
// Say ( Powell , D5a-Pow-1c ) ;
27345: LD_EXP 2
27349: PPUSH
27350: LD_STRING D5a-Pow-1c
27352: PPUSH
27353: CALL_OW 88
// Say ( Powell , D5a-Pow-1d ) ;
27357: LD_EXP 2
27361: PPUSH
27362: LD_STRING D5a-Pow-1d
27364: PPUSH
27365: CALL_OW 88
// while ( GetLives ( soldiers ^ soldiers1 ) > 0 ) do
27369: LD_LOC 6
27373: PUSH
27374: LD_LOC 7
27378: ADD
27379: PPUSH
27380: CALL_OW 256
27384: PUSH
27385: LD_INT 0
27387: GREATER
27388: IFFALSE 27399
// Wait ( 0 0$0.5 ) ;
27390: LD_INT 18
27392: PPUSH
27393: CALL_OW 67
27397: GO 27369
// DisableVideoExclamations ;
27399: CALL_OW 499
// disable ( Center_on_fight ) ;
27403: LD_EXP 143
27407: DISABLE_MARKED
// enable ( Great_Ingame_Video ) ;
27408: LD_EXP 139
27412: ENABLE_MARKED
// end ;
27413: LD_VAR 0 1
27417: RET
// every 0 0$1 marked 3 do var Units_Outside , All_A1 , Sold , Arabian1 , Arabian2 , Arabian3 , Arabian_Buildings , Alive , Un , Remaining_named_males , Remaining_named_females , Uns , i , Hex ;
27418: GO 27420
27420: DISABLE
27421: LD_INT 0
27423: PPUSH
27424: PPUSH
27425: PPUSH
27426: PPUSH
27427: PPUSH
27428: PPUSH
27429: PPUSH
27430: PPUSH
27431: PPUSH
27432: PPUSH
27433: PPUSH
27434: PPUSH
27435: PPUSH
27436: PPUSH
// begin Uns = [ ] ;
27437: LD_ADDR_VAR 0 12
27441: PUSH
27442: EMPTY
27443: ST_TO_ADDR
// Remaining_named_males = UnitFilter ( Remaining_named , [ f_sex , sex_male ] ) ;
27444: LD_ADDR_VAR 0 10
27448: PUSH
27449: LD_EXP 63
27453: PPUSH
27454: LD_INT 26
27456: PUSH
27457: LD_INT 1
27459: PUSH
27460: EMPTY
27461: LIST
27462: LIST
27463: PPUSH
27464: CALL_OW 72
27468: ST_TO_ADDR
// Remaining_named_females = UnitFilter ( Remaining_named , [ f_sex , sex_female ] ) ;
27469: LD_ADDR_VAR 0 11
27473: PUSH
27474: LD_EXP 63
27478: PPUSH
27479: LD_INT 26
27481: PUSH
27482: LD_INT 2
27484: PUSH
27485: EMPTY
27486: LIST
27487: LIST
27488: PPUSH
27489: CALL_OW 72
27493: ST_TO_ADDR
// for i = Remaining_named_males + 1 to 3 do
27494: LD_ADDR_VAR 0 13
27498: PUSH
27499: DOUBLE
27500: LD_VAR 0 10
27504: PUSH
27505: LD_INT 1
27507: PLUS
27508: DEC
27509: ST_TO_ADDR
27510: LD_INT 3
27512: PUSH
27513: FOR_TO
27514: IFFALSE 27564
// if ( Remaining_named_females >= ( i - Remaining_named_males ) ) then
27516: LD_VAR 0 11
27520: PUSH
27521: LD_VAR 0 13
27525: PUSH
27526: LD_VAR 0 10
27530: MINUS
27531: GREATEREQUAL
27532: IFFALSE 27562
// Uns = Uns ^ Remaining_named_females [ i - Remaining_named_males ] ;
27534: LD_ADDR_VAR 0 12
27538: PUSH
27539: LD_VAR 0 12
27543: PUSH
27544: LD_VAR 0 11
27548: PUSH
27549: LD_VAR 0 13
27553: PUSH
27554: LD_VAR 0 10
27558: MINUS
27559: ARRAY
27560: ADD
27561: ST_TO_ADDR
27562: GO 27513
27564: POP
27565: POP
// Remaining_named_males = Remaining_named_males ^ Uns ;
27566: LD_ADDR_VAR 0 10
27570: PUSH
27571: LD_VAR 0 10
27575: PUSH
27576: LD_VAR 0 12
27580: ADD
27581: ST_TO_ADDR
// Sold = [ ] ;
27582: LD_ADDR_VAR 0 3
27586: PUSH
27587: EMPTY
27588: ST_TO_ADDR
// for i = 1 to 3 do
27589: LD_ADDR_VAR 0 13
27593: PUSH
27594: DOUBLE
27595: LD_INT 1
27597: DEC
27598: ST_TO_ADDR
27599: LD_INT 3
27601: PUSH
27602: FOR_TO
27603: IFFALSE 27721
// begin Un = FindMaxSumSkill ( Remaining_Powells diff Sold , sex_male ) ;
27605: LD_ADDR_VAR 0 9
27609: PUSH
27610: LD_EXP 64
27614: PUSH
27615: LD_VAR 0 3
27619: DIFF
27620: PPUSH
27621: LD_INT 1
27623: PPUSH
27624: CALL 18104 0 2
27628: ST_TO_ADDR
// if Un = 0 then
27629: LD_VAR 0 9
27633: PUSH
27634: LD_INT 0
27636: EQUAL
27637: IFFALSE 27663
// Un = FindMaxSumSkill ( Remaining_named_males diff Sold , sex_male ) ;
27639: LD_ADDR_VAR 0 9
27643: PUSH
27644: LD_VAR 0 10
27648: PUSH
27649: LD_VAR 0 3
27653: DIFF
27654: PPUSH
27655: LD_INT 1
27657: PPUSH
27658: CALL 18104 0 2
27662: ST_TO_ADDR
// if Un = 0 then
27663: LD_VAR 0 9
27667: PUSH
27668: LD_INT 0
27670: EQUAL
27671: IFFALSE 27703
// Un = FindMaxSumSkill ( ( Remaining_Powells ^ Remaining_named_males ) diff Sold , sex_male ) ;
27673: LD_ADDR_VAR 0 9
27677: PUSH
27678: LD_EXP 64
27682: PUSH
27683: LD_VAR 0 10
27687: ADD
27688: PUSH
27689: LD_VAR 0 3
27693: DIFF
27694: PPUSH
27695: LD_INT 1
27697: PPUSH
27698: CALL 18104 0 2
27702: ST_TO_ADDR
// Sold = Sold ^ Un ;
27703: LD_ADDR_VAR 0 3
27707: PUSH
27708: LD_VAR 0 3
27712: PUSH
27713: LD_VAR 0 9
27717: ADD
27718: ST_TO_ADDR
// end ;
27719: GO 27602
27721: POP
27722: POP
// Uns = UnitFilter ( Arabian_soldiers , [ f_sex , sex_male ] ) ;
27723: LD_ADDR_VAR 0 12
27727: PUSH
27728: LD_EXP 80
27732: PPUSH
27733: LD_INT 26
27735: PUSH
27736: LD_INT 1
27738: PUSH
27739: EMPTY
27740: LIST
27741: LIST
27742: PPUSH
27743: CALL_OW 72
27747: ST_TO_ADDR
// Arabian1 = Uns [ 1 ] ;
27748: LD_ADDR_VAR 0 4
27752: PUSH
27753: LD_VAR 0 12
27757: PUSH
27758: LD_INT 1
27760: ARRAY
27761: ST_TO_ADDR
// Arabian2 = Uns [ 2 ] ;
27762: LD_ADDR_VAR 0 5
27766: PUSH
27767: LD_VAR 0 12
27771: PUSH
27772: LD_INT 2
27774: ARRAY
27775: ST_TO_ADDR
// Arabian3 = Uns [ 3 ] ;
27776: LD_ADDR_VAR 0 6
27780: PUSH
27781: LD_VAR 0 12
27785: PUSH
27786: LD_INT 3
27788: ARRAY
27789: ST_TO_ADDR
// if GetLives ( ArT1 ) > 0 and GetLives ( ArT1 ) < 500 then
27790: LD_INT 107
27792: PPUSH
27793: CALL_OW 256
27797: PUSH
27798: LD_INT 0
27800: GREATER
27801: PUSH
27802: LD_INT 107
27804: PPUSH
27805: CALL_OW 256
27809: PUSH
27810: LD_INT 500
27812: LESS
27813: AND
27814: IFFALSE 27826
// SetLives ( ArT1 , 500 ) ;
27816: LD_INT 107
27818: PPUSH
27819: LD_INT 500
27821: PPUSH
27822: CALL_OW 234
// RemoveMcUnits ( Arabian_def_id , Arabian_soldiers ^ ArT1 ) ;
27826: LD_EXP 235
27830: PPUSH
27831: LD_EXP 80
27835: PUSH
27836: LD_INT 107
27838: ADD
27839: PPUSH
27840: CALL_OW 391
// ComMoveXY ( Arabian_soldiers , 52 , 15 ) ;
27844: LD_EXP 80
27848: PPUSH
27849: LD_INT 52
27851: PPUSH
27852: LD_INT 15
27854: PPUSH
27855: CALL_OW 111
// AddComHold ( Arabian_soldiers ) ;
27859: LD_EXP 80
27863: PPUSH
27864: CALL_OW 200
// Wait ( 0 0$0.5 ) ;
27868: LD_INT 18
27870: PPUSH
27871: CALL_OW 67
// ComEnterUnit ( Arabian1 , ArT1 ) ;
27875: LD_VAR 0 4
27879: PPUSH
27880: LD_INT 107
27882: PPUSH
27883: CALL_OW 120
// ComMoveXY ( Arabian2 , 71 , 18 ) ;
27887: LD_VAR 0 5
27891: PPUSH
27892: LD_INT 71
27894: PPUSH
27895: LD_INT 18
27897: PPUSH
27898: CALL_OW 111
// AddComHold ( Arabian2 ) ;
27902: LD_VAR 0 5
27906: PPUSH
27907: CALL_OW 200
// ComMoveXY ( Arabian_mechanics [ 1 ] , 83 , 15 ) ;
27911: LD_EXP 83
27915: PUSH
27916: LD_INT 1
27918: ARRAY
27919: PPUSH
27920: LD_INT 83
27922: PPUSH
27923: LD_INT 15
27925: PPUSH
27926: CALL_OW 111
// AddComHold ( Arabian_mechanics [ 1 ] ) ;
27930: LD_EXP 83
27934: PUSH
27935: LD_INT 1
27937: ARRAY
27938: PPUSH
27939: CALL_OW 200
// ComMoveXY ( Arabian3 , 85 , 26 ) ;
27943: LD_VAR 0 6
27947: PPUSH
27948: LD_INT 85
27950: PPUSH
27951: LD_INT 26
27953: PPUSH
27954: CALL_OW 111
// AddComHold ( Arabian3 ) ;
27958: LD_VAR 0 6
27962: PPUSH
27963: CALL_OW 200
// RemoveMcUnits ( Arabian_build_id , Arabian_Engineers ) ;
27967: LD_EXP 236
27971: PPUSH
27972: LD_EXP 81
27976: PPUSH
27977: CALL_OW 391
// ComEnterUnit ( Arabian_Engineers , GetUnitNumber ( 53 , 7 ) ) ;
27981: LD_EXP 81
27985: PPUSH
27986: LD_INT 53
27988: PPUSH
27989: LD_INT 7
27991: PPUSH
27992: CALL_OW 438
27996: PPUSH
27997: CALL_OW 120
// CenterOnXY ( 60 , 62 ) ;
28001: LD_INT 60
28003: PPUSH
28004: LD_INT 62
28006: PPUSH
28007: CALL_OW 84
// Say ( Sold [ 3 ] , D6-Sol3-1 ) ;
28011: LD_VAR 0 3
28015: PUSH
28016: LD_INT 3
28018: ARRAY
28019: PPUSH
28020: LD_STRING D6-Sol3-1
28022: PPUSH
28023: CALL_OW 88
// ComMoveXY ( ArBomb1 , 71 , 61 ) ;
28027: LD_INT 139
28029: PPUSH
28030: LD_INT 71
28032: PPUSH
28033: LD_INT 61
28035: PPUSH
28036: CALL_OW 111
// ComMoveXY ( ArBomb2 , 74 , 61 ) ;
28040: LD_INT 138
28042: PPUSH
28043: LD_INT 74
28045: PPUSH
28046: LD_INT 61
28048: PPUSH
28049: CALL_OW 111
// Say ( Powell , D6-Pow-1 ) ;
28053: LD_EXP 2
28057: PPUSH
28058: LD_STRING D6-Pow-1
28060: PPUSH
28061: CALL_OW 88
// WaitPos ( 71 , 61 , 6 , [ ArBomb1 , ArBomb2 ] , 1 ) ;
28065: LD_INT 71
28067: PPUSH
28068: LD_INT 61
28070: PPUSH
28071: LD_INT 6
28073: PPUSH
28074: LD_INT 139
28076: PUSH
28077: LD_INT 138
28079: PUSH
28080: EMPTY
28081: LIST
28082: LIST
28083: PPUSH
28084: LD_INT 1
28086: PPUSH
28087: CALL 17990 0 5
// Say ( Sold [ 1 ] , D6-Sol3-2 ) ;
28091: LD_VAR 0 3
28095: PUSH
28096: LD_INT 1
28098: ARRAY
28099: PPUSH
28100: LD_STRING D6-Sol3-2
28102: PPUSH
28103: CALL_OW 88
// ComMoveXY ( ArBomb1 , 50 , 56 ) ;
28107: LD_INT 139
28109: PPUSH
28110: LD_INT 50
28112: PPUSH
28113: LD_INT 56
28115: PPUSH
28116: CALL_OW 111
// AddComMoveXY ( ArBomb1 , 46 , 52 ) ;
28120: LD_INT 139
28122: PPUSH
28123: LD_INT 46
28125: PPUSH
28126: LD_INT 52
28128: PPUSH
28129: CALL_OW 171
// PriorityAttack ( americans1 , ArBomb1 ) ;
28133: LD_EXP 177
28137: PPUSH
28138: LD_INT 139
28140: PPUSH
28141: CALL_OW 470
// ComMoveXY ( ArBomb2 , 48 , 60 ) ;
28145: LD_INT 138
28147: PPUSH
28148: LD_INT 48
28150: PPUSH
28151: LD_INT 60
28153: PPUSH
28154: CALL_OW 111
// AddComMoveXY ( ArBomb2 , 45 , 57 ) ;
28158: LD_INT 138
28160: PPUSH
28161: LD_INT 45
28163: PPUSH
28164: LD_INT 57
28166: PPUSH
28167: CALL_OW 171
// AddComAttackUnit ( ArBomb2 , AmFact ) ;
28171: LD_INT 138
28173: PPUSH
28174: LD_INT 85
28176: PPUSH
28177: CALL_OW 175
// DoNotAttack ( americans1 , ArBomb2 ) ;
28181: LD_EXP 177
28185: PPUSH
28186: LD_INT 138
28188: PPUSH
28189: CALL_OW 471
// ComMoveXY ( Powell , 58 , 68 ) ;
28193: LD_EXP 2
28197: PPUSH
28198: LD_INT 58
28200: PPUSH
28201: LD_INT 68
28203: PPUSH
28204: CALL_OW 111
// AddComHold ( Powell ) ;
28208: LD_EXP 2
28212: PPUSH
28213: CALL_OW 200
// ComExitBuilding ( UnitsInside ( AmArm ) ) ;
28217: LD_INT 92
28219: PPUSH
28220: CALL_OW 313
28224: PPUSH
28225: CALL_OW 122
// ComExitBuilding ( UnitsInside ( AmFact ) ) ;
28229: LD_INT 85
28231: PPUSH
28232: CALL_OW 313
28236: PPUSH
28237: CALL_OW 122
// Wait ( 1 ) ;
28241: LD_INT 1
28243: PPUSH
28244: CALL_OW 67
// while UnitsInside ( AmArm ) <> 0 do
28248: LD_INT 92
28250: PPUSH
28251: CALL_OW 313
28255: PUSH
28256: LD_INT 0
28258: NONEQUAL
28259: IFFALSE 28270
// Wait ( 2 ) ;
28261: LD_INT 2
28263: PPUSH
28264: CALL_OW 67
28268: GO 28248
// Units_Outside = FilterUnitsInArea ( Am_Base , [ [ f_side , americans1 ] , [ f_type , unit_human ] ] ) diff ( soldiers1 ^ soldiers ^ Powell ) ;
28270: LD_ADDR_VAR 0 1
28274: PUSH
28275: LD_INT 1
28277: PPUSH
28278: LD_INT 22
28280: PUSH
28281: LD_EXP 177
28285: PUSH
28286: EMPTY
28287: LIST
28288: LIST
28289: PUSH
28290: LD_INT 21
28292: PUSH
28293: LD_INT 1
28295: PUSH
28296: EMPTY
28297: LIST
28298: LIST
28299: PUSH
28300: EMPTY
28301: LIST
28302: LIST
28303: PPUSH
28304: CALL_OW 70
28308: PUSH
28309: LD_LOC 7
28313: PUSH
28314: LD_LOC 6
28318: ADD
28319: PUSH
28320: LD_EXP 2
28324: ADD
28325: DIFF
28326: ST_TO_ADDR
// for Un in Units_Outside do
28327: LD_ADDR_VAR 0 9
28331: PUSH
28332: LD_VAR 0 1
28336: PUSH
28337: FOR_IN
28338: IFFALSE 28400
// begin Hex = RandHexXYR ( 56 , 69 , 2 , false ) ;
28340: LD_ADDR_VAR 0 14
28344: PUSH
28345: LD_INT 56
28347: PPUSH
28348: LD_INT 69
28350: PPUSH
28351: LD_INT 2
28353: PPUSH
28354: LD_INT 0
28356: PPUSH
28357: CALL_OW 17
28361: ST_TO_ADDR
// ComMoveXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) ;
28362: LD_VAR 0 9
28366: PPUSH
28367: LD_VAR 0 14
28371: PUSH
28372: LD_INT 1
28374: ARRAY
28375: PPUSH
28376: LD_VAR 0 14
28380: PUSH
28381: LD_INT 2
28383: ARRAY
28384: PPUSH
28385: CALL_OW 111
// AddComHold ( Un ) ;
28389: LD_VAR 0 9
28393: PPUSH
28394: CALL_OW 200
// end ;
28398: GO 28337
28400: POP
28401: POP
// enable ( Talk_Bomba ) ;
28402: LD_EXP 142
28406: ENABLE_MARKED
// while ( IsOk ( ArBomb1 ) or IsOk ( ArBomb2 ) ) do
28407: LD_INT 139
28409: PPUSH
28410: CALL_OW 302
28414: PUSH
28415: LD_INT 138
28417: PPUSH
28418: CALL_OW 302
28422: OR
28423: IFFALSE 28509
// begin if ( GetDistUnitXY ( ArBomb1 , 41 , 54 ) <= 7 ) and ( GetLives ( ArBomb1 ) > 250 ) then
28425: LD_INT 139
28427: PPUSH
28428: LD_INT 41
28430: PPUSH
28431: LD_INT 54
28433: PPUSH
28434: CALL_OW 297
28438: PUSH
28439: LD_INT 7
28441: LESSEQUAL
28442: PUSH
28443: LD_INT 139
28445: PPUSH
28446: CALL_OW 256
28450: PUSH
28451: LD_INT 250
28453: GREATER
28454: AND
28455: IFFALSE 28467
// SetLives ( ArBomb1 , 200 ) ;
28457: LD_INT 139
28459: PPUSH
28460: LD_INT 200
28462: PPUSH
28463: CALL_OW 234
// if not ( IsOk ( ArBomb2 ) ) then
28467: LD_INT 138
28469: PPUSH
28470: CALL_OW 302
28474: NOT
28475: IFFALSE 28500
// if GetLives ( AmFact ) > 0 then
28477: LD_INT 85
28479: PPUSH
28480: CALL_OW 256
28484: PUSH
28485: LD_INT 0
28487: GREATER
28488: IFFALSE 28500
// SetLives ( AmFact , 0 ) ;
28490: LD_INT 85
28492: PPUSH
28493: LD_INT 0
28495: PPUSH
28496: CALL_OW 234
// Wait ( 4 ) ;
28500: LD_INT 4
28502: PPUSH
28503: CALL_OW 67
// end ;
28507: GO 28407
// Wait ( 0 0$2 ) ;
28509: LD_INT 70
28511: PPUSH
28512: CALL_OW 67
// Say ( Powell , D6a-Pow-1 ) ;
28516: LD_EXP 2
28520: PPUSH
28521: LD_STRING D6a-Pow-1
28523: PPUSH
28524: CALL_OW 88
// Say ( Sold [ 1 ] , D6a-Sol3-1 ) ;
28528: LD_VAR 0 3
28532: PUSH
28533: LD_INT 1
28535: ARRAY
28536: PPUSH
28537: LD_STRING D6a-Sol3-1
28539: PPUSH
28540: CALL_OW 88
// Say ( Powell , D6a-Pow-2 ) ;
28544: LD_EXP 2
28548: PPUSH
28549: LD_STRING D6a-Pow-2
28551: PPUSH
28552: CALL_OW 88
// Say ( Sold [ 1 ] , D6a-Sol3-2 ) ;
28556: LD_VAR 0 3
28560: PUSH
28561: LD_INT 1
28563: ARRAY
28564: PPUSH
28565: LD_STRING D6a-Sol3-2
28567: PPUSH
28568: CALL_OW 88
// Say ( Powell , D6a-Pow-3 ) ;
28572: LD_EXP 2
28576: PPUSH
28577: LD_STRING D6a-Pow-3
28579: PPUSH
28580: CALL_OW 88
// Center_To_Powell = true ;
28584: LD_ADDR_EXP 194
28588: PUSH
28589: LD_INT 1
28591: ST_TO_ADDR
// enable ( Protect_Powell ) ;
28592: LD_EXP 141
28596: ENABLE_MARKED
// ComEnterUnit ( Powell , Powell_vehicle ) ;
28597: LD_EXP 2
28601: PPUSH
28602: LD_EXP 192
28606: PPUSH
28607: CALL_OW 120
// AddComMoveXY ( Powell , 66 , 62 ) ;
28611: LD_EXP 2
28615: PPUSH
28616: LD_INT 66
28618: PPUSH
28619: LD_INT 62
28621: PPUSH
28622: CALL_OW 171
// AddComMoveXY ( Powell , 81 , 61 ) ;
28626: LD_EXP 2
28630: PPUSH
28631: LD_INT 81
28633: PPUSH
28634: LD_INT 61
28636: PPUSH
28637: CALL_OW 171
// AddComMoveXY ( Powell , 86 , 56 ) ;
28641: LD_EXP 2
28645: PPUSH
28646: LD_INT 86
28648: PPUSH
28649: LD_INT 56
28651: PPUSH
28652: CALL_OW 171
// AddComMoveXY ( Powell , 74 , 24 ) ;
28656: LD_EXP 2
28660: PPUSH
28661: LD_INT 74
28663: PPUSH
28664: LD_INT 24
28666: PPUSH
28667: CALL_OW 171
// while GetDistUnitXY ( Powell_vehicle , 74 , 24 ) > 12 do
28671: LD_EXP 192
28675: PPUSH
28676: LD_INT 74
28678: PPUSH
28679: LD_INT 24
28681: PPUSH
28682: CALL_OW 297
28686: PUSH
28687: LD_INT 12
28689: GREATER
28690: IFFALSE 28701
// Wait ( 0 0$0.1 ) ;
28692: LD_INT 4
28694: PPUSH
28695: CALL_OW 67
28699: GO 28671
// Say ( Powell , D6b-Pow-1 ) ;
28701: LD_EXP 2
28705: PPUSH
28706: LD_STRING D6b-Pow-1
28708: PPUSH
28709: CALL_OW 88
// game_speed = 3 ;
28713: LD_ADDR_OWVAR 65
28717: PUSH
28718: LD_INT 3
28720: ST_TO_ADDR
// while GetDistUnitXY ( Powell_vehicle , 74 , 24 ) > 5 do
28721: LD_EXP 192
28725: PPUSH
28726: LD_INT 74
28728: PPUSH
28729: LD_INT 24
28731: PPUSH
28732: CALL_OW 297
28736: PUSH
28737: LD_INT 5
28739: GREATER
28740: IFFALSE 28751
// Wait ( 0 0$0.1 ) ;
28742: LD_INT 4
28744: PPUSH
28745: CALL_OW 67
28749: GO 28721
// SetLives ( Powell_vehicle , 251 ) ;
28751: LD_EXP 192
28755: PPUSH
28756: LD_INT 251
28758: PPUSH
28759: CALL_OW 234
// while IsInUnit ( Powell ) do
28763: LD_EXP 2
28767: PPUSH
28768: CALL_OW 310
28772: IFFALSE 28783
// Wait ( 2 ) ;
28774: LD_INT 2
28776: PPUSH
28777: CALL_OW 67
28781: GO 28763
// SetAttr ( Powell , attr_speed , 14 ) ;
28783: LD_EXP 2
28787: PPUSH
28788: LD_INT 2
28790: PPUSH
28791: LD_INT 14
28793: PPUSH
28794: CALL_OW 239
// ComEnterUnit ( Powell , PowBomb ) ;
28798: LD_EXP 2
28802: PPUSH
28803: LD_INT 137
28805: PPUSH
28806: CALL_OW 120
// Say ( Powell , D6b-Pow-1a ) ;
28810: LD_EXP 2
28814: PPUSH
28815: LD_STRING D6b-Pow-1a
28817: PPUSH
28818: CALL_OW 88
// repeat wait ( 2 ) ;
28822: LD_INT 2
28824: PPUSH
28825: CALL_OW 67
// until IsInUnit ( Powell ) ;
28829: LD_EXP 2
28833: PPUSH
28834: CALL_OW 310
28838: IFFALSE 28822
// AddComMoveXY ( Powell , 81 , 21 ) ;
28840: LD_EXP 2
28844: PPUSH
28845: LD_INT 81
28847: PPUSH
28848: LD_INT 21
28850: PPUSH
28851: CALL_OW 171
// AddComMoveXY ( Powell , 73 , 16 ) ;
28855: LD_EXP 2
28859: PPUSH
28860: LD_INT 73
28862: PPUSH
28863: LD_INT 16
28865: PPUSH
28866: CALL_OW 171
// AddComMoveXY ( Powell , 76 , 21 ) ;
28870: LD_EXP 2
28874: PPUSH
28875: LD_INT 76
28877: PPUSH
28878: LD_INT 21
28880: PPUSH
28881: CALL_OW 171
// AddComMoveXY ( Powell , 78 , 15 ) ;
28885: LD_EXP 2
28889: PPUSH
28890: LD_INT 78
28892: PPUSH
28893: LD_INT 15
28895: PPUSH
28896: CALL_OW 171
// Say ( Powell , D6b-Pow-1b ) ;
28900: LD_EXP 2
28904: PPUSH
28905: LD_STRING D6b-Pow-1b
28907: PPUSH
28908: CALL_OW 88
// ComMoveXY ( Arabian_soldiers , 48 , 14 ) ;
28912: LD_EXP 80
28916: PPUSH
28917: LD_INT 48
28919: PPUSH
28920: LD_INT 14
28922: PPUSH
28923: CALL_OW 111
// AddComHold ( Arabian_soldiers ) ;
28927: LD_EXP 80
28931: PPUSH
28932: CALL_OW 200
// ComEnterUnit ( Arabian_mechanics [ 1 ] , ArFact ) ;
28936: LD_EXP 83
28940: PUSH
28941: LD_INT 1
28943: ARRAY
28944: PPUSH
28945: LD_INT 117
28947: PPUSH
28948: CALL_OW 120
// ComMoveXY ( Arabian3 , 96 , 29 ) ;
28952: LD_VAR 0 6
28956: PPUSH
28957: LD_INT 96
28959: PPUSH
28960: LD_INT 29
28962: PPUSH
28963: CALL_OW 111
// async ;
28967: ASYNC
// Say ( Arabian1 , D6b-ArSol1-1 ) ;
28968: LD_VAR 0 4
28972: PPUSH
28973: LD_STRING D6b-ArSol1-1
28975: PPUSH
28976: CALL_OW 88
// wait ( 0 0$1 ) ;
28980: LD_INT 35
28982: PPUSH
28983: CALL_OW 67
// Say ( Arabian2 , D6b-ArSol2-1 ) ;
28987: LD_VAR 0 5
28991: PPUSH
28992: LD_STRING D6b-ArSol2-1
28994: PPUSH
28995: CALL_OW 88
// wait ( 0 0$0.5 ) ;
28999: LD_INT 18
29001: PPUSH
29002: CALL_OW 67
// sync ;
29006: SYNC
// Say ( Powell , D6b-Pow-2 ) ;
29007: LD_EXP 2
29011: PPUSH
29012: LD_STRING D6b-Pow-2
29014: PPUSH
29015: CALL_OW 88
// WaitTask ( Powell , 0.1 ) ;
29019: LD_EXP 2
29023: PPUSH
29024: LD_REAL  1.00000000000000E-0001
29027: PPUSH
29028: CALL 17892 0 2
// if IsInUnit ( Powell ) then
29032: LD_EXP 2
29036: PPUSH
29037: CALL_OW 310
29041: IFFALSE 29061
// WaitTask ( IsInUnit ( Powell ) , 0.1 ) ;
29043: LD_EXP 2
29047: PPUSH
29048: CALL_OW 310
29052: PPUSH
29053: LD_REAL  1.00000000000000E-0001
29056: PPUSH
29057: CALL 17892 0 2
// DialogueOn ;
29061: CALL_OW 6
// Say ( Powell , D6b-Pow-2a ) ;
29065: LD_EXP 2
29069: PPUSH
29070: LD_STRING D6b-Pow-2a
29072: PPUSH
29073: CALL_OW 88
// DialogueOff ;
29077: CALL_OW 7
// disable ( Protect_Powell ) ;
29081: LD_EXP 141
29085: DISABLE_MARKED
// ComAttackUnit ( IsInUnit ( Powell ) , ArRuFact ) ;
29086: LD_EXP 2
29090: PPUSH
29091: CALL_OW 310
29095: PPUSH
29096: LD_INT 105
29098: PPUSH
29099: CALL_OW 115
// placeseeing ( 78 , 12 , americans , - 8 ) ;
29103: LD_INT 78
29105: PPUSH
29106: LD_INT 12
29108: PPUSH
29109: LD_EXP 176
29113: PPUSH
29114: LD_INT 8
29116: NEG
29117: PPUSH
29118: CALL_OW 330
// while IsOk ( IsInUnit ( Powell ) ) do
29122: LD_EXP 2
29126: PPUSH
29127: CALL_OW 310
29131: PPUSH
29132: CALL_OW 302
29136: IFFALSE 29147
// Wait ( 0 0$0.5 ) ;
29138: LD_INT 18
29140: PPUSH
29141: CALL_OW 67
29145: GO 29122
// if GetLives ( ArRuFact ) > 0 then
29147: LD_INT 105
29149: PPUSH
29150: CALL_OW 256
29154: PUSH
29155: LD_INT 0
29157: GREATER
29158: IFFALSE 29170
// SetLives ( ArRuFact , 0 ) ;
29160: LD_INT 105
29162: PPUSH
29163: LD_INT 0
29165: PPUSH
29166: CALL_OW 234
// Center_To_Powell = false ;
29170: LD_ADDR_EXP 194
29174: PUSH
29175: LD_INT 0
29177: ST_TO_ADDR
// Wait ( 0 0$5 ) ;
29178: LD_INT 175
29180: PPUSH
29181: CALL_OW 67
// removeseeing ( 78 , 12 , americans ) ;
29185: LD_INT 78
29187: PPUSH
29188: LD_INT 12
29190: PPUSH
29191: LD_EXP 176
29195: PPUSH
29196: CALL_OW 331
// CenterOnUnits ( JMM ) ;
29200: LD_EXP 1
29204: PPUSH
29205: CALL_OW 85
// RepairArabExtensions ;
29209: CALL 31834 0 0
// AddMcUnits ( Arabian_def_id , Arabian_soldiers ^ ArT1 ) ;
29213: LD_EXP 235
29217: PPUSH
29218: LD_EXP 80
29222: PUSH
29223: LD_INT 107
29225: ADD
29226: PPUSH
29227: CALL_OW 390
// for Un in Arabian_Soldiers do
29231: LD_ADDR_VAR 0 9
29235: PUSH
29236: LD_EXP 80
29240: PUSH
29241: FOR_IN
29242: IFFALSE 29289
// begin Hex = RandHexArea ( Ar_Base , false ) ;
29244: LD_ADDR_VAR 0 14
29248: PUSH
29249: LD_INT 17
29251: PPUSH
29252: LD_INT 0
29254: PPUSH
29255: CALL_OW 16
29259: ST_TO_ADDR
// ComMoveXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) ;
29260: LD_VAR 0 9
29264: PPUSH
29265: LD_VAR 0 14
29269: PUSH
29270: LD_INT 1
29272: ARRAY
29273: PPUSH
29274: LD_VAR 0 14
29278: PUSH
29279: LD_INT 2
29281: ARRAY
29282: PPUSH
29283: CALL_OW 111
// end ;
29287: GO 29241
29289: POP
29290: POP
// Say ( Sold [ 1 ] , D6c-Sol3-1 ) ;
29291: LD_VAR 0 3
29295: PUSH
29296: LD_INT 1
29298: ARRAY
29299: PPUSH
29300: LD_STRING D6c-Sol3-1
29302: PPUSH
29303: CALL_OW 88
// Say ( Jmm , D6c-JMM-1 ) ;
29307: LD_EXP 1
29311: PPUSH
29312: LD_STRING D6c-JMM-1
29314: PPUSH
29315: CALL_OW 88
// Alive = UnitFilter ( [ Cyrus , Bobby , Cornell ] , [ f_ok ] ) ;
29319: LD_ADDR_VAR 0 8
29323: PUSH
29324: LD_EXP 4
29328: PUSH
29329: LD_EXP 3
29333: PUSH
29334: LD_EXP 10
29338: PUSH
29339: EMPTY
29340: LIST
29341: LIST
29342: LIST
29343: PPUSH
29344: LD_INT 50
29346: PUSH
29347: EMPTY
29348: LIST
29349: PPUSH
29350: CALL_OW 72
29354: ST_TO_ADDR
// if Alive > 0 then
29355: LD_VAR 0 8
29359: PUSH
29360: LD_INT 0
29362: GREATER
29363: IFFALSE 29391
// Un = Alive [ Rand ( 1 , Alive ) ] else
29365: LD_ADDR_VAR 0 9
29369: PUSH
29370: LD_VAR 0 8
29374: PUSH
29375: LD_INT 1
29377: PPUSH
29378: LD_VAR 0 8
29382: PPUSH
29383: CALL_OW 12
29387: ARRAY
29388: ST_TO_ADDR
29389: GO 29405
// Un = Sold [ 3 ] ;
29391: LD_ADDR_VAR 0 9
29395: PUSH
29396: LD_VAR 0 3
29400: PUSH
29401: LD_INT 3
29403: ARRAY
29404: ST_TO_ADDR
// case Un of Cyrus :
29405: LD_VAR 0 9
29409: PUSH
29410: LD_EXP 4
29414: DOUBLE
29415: EQUAL
29416: IFTRUE 29420
29418: GO 29435
29420: POP
// Say ( Cyrus , D6c-Cyrus-1 ) ; Bobby :
29421: LD_EXP 4
29425: PPUSH
29426: LD_STRING D6c-Cyrus-1
29428: PPUSH
29429: CALL_OW 88
29433: GO 29519
29435: LD_EXP 3
29439: DOUBLE
29440: EQUAL
29441: IFTRUE 29445
29443: GO 29460
29445: POP
// Say ( Bobby , D6c-Bobby-1 ) ; Cornell :
29446: LD_EXP 3
29450: PPUSH
29451: LD_STRING D6c-Bobby-1
29453: PPUSH
29454: CALL_OW 88
29458: GO 29519
29460: LD_EXP 10
29464: DOUBLE
29465: EQUAL
29466: IFTRUE 29470
29468: GO 29485
29470: POP
// Say ( Cornell , D6c-Corn-1 ) ; Sold [ 3 ] :
29471: LD_EXP 10
29475: PPUSH
29476: LD_STRING D6c-Corn-1
29478: PPUSH
29479: CALL_OW 88
29483: GO 29519
29485: LD_VAR 0 3
29489: PUSH
29490: LD_INT 3
29492: ARRAY
29493: DOUBLE
29494: EQUAL
29495: IFTRUE 29499
29497: GO 29518
29499: POP
// Say ( Sold [ 3 ] , D6c-Sol1-1 ) ; end ;
29500: LD_VAR 0 3
29504: PUSH
29505: LD_INT 3
29507: ARRAY
29508: PPUSH
29509: LD_STRING D6c-Sol1-1
29511: PPUSH
29512: CALL_OW 88
29516: GO 29519
29518: POP
// Alive = UnitFilter ( [ Lisa , Gary , Donaldson ] , [ f_ok ] ) ;
29519: LD_ADDR_VAR 0 8
29523: PUSH
29524: LD_EXP 5
29528: PUSH
29529: LD_EXP 15
29533: PUSH
29534: LD_EXP 8
29538: PUSH
29539: EMPTY
29540: LIST
29541: LIST
29542: LIST
29543: PPUSH
29544: LD_INT 50
29546: PUSH
29547: EMPTY
29548: LIST
29549: PPUSH
29550: CALL_OW 72
29554: ST_TO_ADDR
// if Alive > 0 then
29555: LD_VAR 0 8
29559: PUSH
29560: LD_INT 0
29562: GREATER
29563: IFFALSE 29591
// Un = Alive [ Rand ( 1 , Alive ) ] else
29565: LD_ADDR_VAR 0 9
29569: PUSH
29570: LD_VAR 0 8
29574: PUSH
29575: LD_INT 1
29577: PPUSH
29578: LD_VAR 0 8
29582: PPUSH
29583: CALL_OW 12
29587: ARRAY
29588: ST_TO_ADDR
29589: GO 29605
// Un = Sold [ 2 ] ;
29591: LD_ADDR_VAR 0 9
29595: PUSH
29596: LD_VAR 0 3
29600: PUSH
29601: LD_INT 2
29603: ARRAY
29604: ST_TO_ADDR
// case Un of Lisa :
29605: LD_VAR 0 9
29609: PUSH
29610: LD_EXP 5
29614: DOUBLE
29615: EQUAL
29616: IFTRUE 29620
29618: GO 29635
29620: POP
// Say ( Lisa , D6c-Lisa-1 ) ; Gary :
29621: LD_EXP 5
29625: PPUSH
29626: LD_STRING D6c-Lisa-1
29628: PPUSH
29629: CALL_OW 88
29633: GO 29719
29635: LD_EXP 15
29639: DOUBLE
29640: EQUAL
29641: IFTRUE 29645
29643: GO 29660
29645: POP
// Say ( Gary , D6c-Gary-1 ) ; Donaldson :
29646: LD_EXP 15
29650: PPUSH
29651: LD_STRING D6c-Gary-1
29653: PPUSH
29654: CALL_OW 88
29658: GO 29719
29660: LD_EXP 8
29664: DOUBLE
29665: EQUAL
29666: IFTRUE 29670
29668: GO 29685
29670: POP
// Say ( Donaldson , D6c-Don-1 ) ; Sold [ 2 ] :
29671: LD_EXP 8
29675: PPUSH
29676: LD_STRING D6c-Don-1
29678: PPUSH
29679: CALL_OW 88
29683: GO 29719
29685: LD_VAR 0 3
29689: PUSH
29690: LD_INT 2
29692: ARRAY
29693: DOUBLE
29694: EQUAL
29695: IFTRUE 29699
29697: GO 29718
29699: POP
// Say ( Sold [ 2 ] , D6c-Sol2-1 ) ; end ;
29700: LD_VAR 0 3
29704: PUSH
29705: LD_INT 2
29707: ARRAY
29708: PPUSH
29709: LD_STRING D6c-Sol2-1
29711: PPUSH
29712: CALL_OW 88
29716: GO 29719
29718: POP
// Say ( Sold [ 1 ] , D6c-Sol3-2 ) ;
29719: LD_VAR 0 3
29723: PUSH
29724: LD_INT 1
29726: ARRAY
29727: PPUSH
29728: LD_STRING D6c-Sol3-2
29730: PPUSH
29731: CALL_OW 88
// Wait ( 0 0$2 ) ;
29735: LD_INT 70
29737: PPUSH
29738: CALL_OW 67
// Say ( JMM , D6c-JMM-2 ) ;
29742: LD_EXP 1
29746: PPUSH
29747: LD_STRING D6c-JMM-2
29749: PPUSH
29750: CALL_OW 88
// SetSide ( FilterAllUnits ( [ f_side , Americans1 ] ) , americans ) ;
29754: LD_INT 22
29756: PUSH
29757: LD_EXP 177
29761: PUSH
29762: EMPTY
29763: LIST
29764: LIST
29765: PPUSH
29766: CALL_OW 69
29770: PPUSH
29771: LD_EXP 176
29775: PPUSH
29776: CALL_OW 235
// ingame_video = false ;
29780: LD_ADDR_OWVAR 52
29784: PUSH
29785: LD_INT 0
29787: ST_TO_ADDR
// interface_hidden = false ;
29788: LD_ADDR_OWVAR 54
29792: PUSH
29793: LD_INT 0
29795: ST_TO_ADDR
// ChangeMissionObjectives ( M2 ) ;
29796: LD_STRING M2
29798: PPUSH
29799: CALL_OW 337
// Wait ( 0 0$1 ) ;
29803: LD_INT 35
29805: PPUSH
29806: CALL_OW 67
// enable ( R1_attack ) ;
29810: LD_EXP 140
29814: ENABLE_MARKED
// R1_Attack_Continues = true ;
29815: LD_ADDR_EXP 196
29819: PUSH
29820: LD_INT 1
29822: ST_TO_ADDR
// ComMoveXY ( R1_Attacking_Units , 101 , 147 ) ;
29823: LD_LOC 11
29827: PPUSH
29828: LD_INT 101
29830: PPUSH
29831: LD_INT 147
29833: PPUSH
29834: CALL_OW 111
// AddMcUnits ( Russian1_att_id , R1_Attacking_Units ) ;
29838: LD_EXP 238
29842: PPUSH
29843: LD_LOC 11
29847: PPUSH
29848: CALL_OW 390
// ComMoveXY ( R1_Patroling_Units , 101 , 147 ) ;
29852: LD_LOC 12
29856: PPUSH
29857: LD_INT 101
29859: PPUSH
29860: LD_INT 147
29862: PPUSH
29863: CALL_OW 111
// AddMcUnits ( Russian1_patr_id , R1_Patroling_Units ) ;
29867: LD_EXP 240
29871: PPUSH
29872: LD_LOC 12
29876: PPUSH
29877: CALL_OW 390
// SetAttitude ( russians1 , americans , att_enemy , true ) ;
29881: LD_EXP 179
29885: PPUSH
29886: LD_EXP 176
29890: PPUSH
29891: LD_INT 2
29893: PPUSH
29894: LD_INT 1
29896: PPUSH
29897: CALL_OW 80
// Arabian_Buildings = FilterUnitsInArea ( Ar_Base , [ f_type , unit_building ] ) ;
29901: LD_ADDR_VAR 0 7
29905: PUSH
29906: LD_INT 17
29908: PPUSH
29909: LD_INT 21
29911: PUSH
29912: LD_INT 3
29914: PUSH
29915: EMPTY
29916: LIST
29917: LIST
29918: PPUSH
29919: CALL_OW 70
29923: ST_TO_ADDR
// for Un in Arabian_Buildings do
29924: LD_ADDR_VAR 0 9
29928: PUSH
29929: LD_VAR 0 7
29933: PUSH
29934: FOR_IN
29935: IFFALSE 29981
// if ( GetLives ( Un ) > 0 ) and ( GetLives ( Un ) < 250 ) then
29937: LD_VAR 0 9
29941: PPUSH
29942: CALL_OW 256
29946: PUSH
29947: LD_INT 0
29949: GREATER
29950: PUSH
29951: LD_VAR 0 9
29955: PPUSH
29956: CALL_OW 256
29960: PUSH
29961: LD_INT 250
29963: LESS
29964: AND
29965: IFFALSE 29979
// SetLives ( Un , 400 ) ;
29967: LD_VAR 0 9
29971: PPUSH
29972: LD_INT 400
29974: PPUSH
29975: CALL_OW 234
29979: GO 29934
29981: POP
29982: POP
// AddMcUnits ( Arabian_build_id , Arabian_Engineers ) ;
29983: LD_EXP 236
29987: PPUSH
29988: LD_EXP 81
29992: PPUSH
29993: CALL_OW 390
// ComExitBuilding ( Arabian_Engineers ) ;
29997: LD_EXP 81
30001: PPUSH
30002: CALL_OW 122
// enable ( Ingame_Run_over ) ;
30006: LD_EXP 145
30010: ENABLE_MARKED
// Time_of_Ingame_Run_Over = tick ;
30011: LD_ADDR_EXP 189
30015: PUSH
30016: LD_OWVAR 1
30020: ST_TO_ADDR
// Woman_Coming_Time = Woman_Coming_Time + tick ;
30021: LD_ADDR_EXP 201
30025: PUSH
30026: LD_EXP 201
30030: PUSH
30031: LD_OWVAR 1
30035: PLUS
30036: ST_TO_ADDR
// Rus_Attack_time = Rus_Attack_time + tick ;
30037: LD_ADDR_EXP 130
30041: PUSH
30042: LD_EXP 130
30046: PUSH
30047: LD_OWVAR 1
30051: PLUS
30052: ST_TO_ADDR
// Stevens_Coming_Time = Stevens_Coming_Time + tick ;
30053: LD_ADDR_EXP 200
30057: PUSH
30058: LD_EXP 200
30062: PUSH
30063: LD_OWVAR 1
30067: PLUS
30068: ST_TO_ADDR
// Alliance_broadcast = Alliance_broadcast + tick ;
30069: LD_ADDR_EXP 202
30073: PUSH
30074: LD_EXP 202
30078: PUSH
30079: LD_OWVAR 1
30083: PLUS
30084: ST_TO_ADDR
// Arabian_siberite_attack_time = Arabian_siberite_attack_time + tick ;
30085: LD_ADDR_EXP 213
30089: PUSH
30090: LD_EXP 213
30094: PUSH
30095: LD_OWVAR 1
30099: PLUS
30100: ST_TO_ADDR
// Behemots_broadcast = Behemots_broadcast + tick ;
30101: LD_ADDR_EXP 203
30105: PUSH
30106: LD_EXP 203
30110: PUSH
30111: LD_OWVAR 1
30115: PLUS
30116: ST_TO_ADDR
// Alaskite_Bomb_Time = Alaskite_Bomb_Time + tick ;
30117: LD_ADDR_EXP 212
30121: PUSH
30122: LD_EXP 212
30126: PUSH
30127: LD_OWVAR 1
30131: PLUS
30132: ST_TO_ADDR
// Time_of_first_capture = Time_of_first_capture + tick ;
30133: LD_ADDR_EXP 204
30137: PUSH
30138: LD_EXP 204
30142: PUSH
30143: LD_OWVAR 1
30147: PLUS
30148: ST_TO_ADDR
// Behemot_attack_time = Behemot_attack_time + tick ;
30149: LD_ADDR_EXP 225
30153: PUSH
30154: LD_EXP 225
30158: PUSH
30159: LD_OWVAR 1
30163: PLUS
30164: ST_TO_ADDR
// enable ( Game_Continue ) ;
30165: LD_EXP 146
30169: ENABLE_MARKED
// enable ( Timer ) ;
30170: LD_EXP 159
30174: ENABLE_MARKED
// SetTech ( tech_Gun , americans , state_researched ) ;
30175: LD_INT 39
30177: PPUSH
30178: LD_EXP 176
30182: PPUSH
30183: LD_INT 2
30185: PPUSH
30186: CALL_OW 322
// SetTech ( tech_SolPow , americans , state_researched ) ;
30190: LD_INT 35
30192: PPUSH
30193: LD_EXP 176
30197: PPUSH
30198: LD_INT 2
30200: PPUSH
30201: CALL_OW 322
// SetTech ( tech_SolEng , americans , state_researched ) ;
30205: LD_INT 45
30207: PPUSH
30208: LD_EXP 176
30212: PPUSH
30213: LD_INT 2
30215: PPUSH
30216: CALL_OW 322
// All_americans = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] ] ) ;
30220: LD_ADDR_EXP 61
30224: PUSH
30225: LD_INT 22
30227: PUSH
30228: LD_EXP 176
30232: PUSH
30233: EMPTY
30234: LIST
30235: LIST
30236: PUSH
30237: LD_INT 21
30239: PUSH
30240: LD_INT 1
30242: PUSH
30243: EMPTY
30244: LIST
30245: LIST
30246: PUSH
30247: EMPTY
30248: LIST
30249: LIST
30250: PPUSH
30251: CALL_OW 69
30255: ST_TO_ADDR
// All_russians = FilterAllUnits ( [ [ f_side , russians ] , [ f_type , unit_human ] ] ) ;
30256: LD_ADDR_EXP 111
30260: PUSH
30261: LD_INT 22
30263: PUSH
30264: LD_EXP 178
30268: PUSH
30269: EMPTY
30270: LIST
30271: LIST
30272: PUSH
30273: LD_INT 21
30275: PUSH
30276: LD_INT 1
30278: PUSH
30279: EMPTY
30280: LIST
30281: LIST
30282: PUSH
30283: EMPTY
30284: LIST
30285: LIST
30286: PPUSH
30287: CALL_OW 69
30291: ST_TO_ADDR
// end ;
30292: PPOPN 14
30294: END
// export function JMMIsReady ; begin
30295: LD_INT 0
30297: PPUSH
// Say ( JMM , D6c-JMM-2 ) ;
30298: LD_EXP 1
30302: PPUSH
30303: LD_STRING D6c-JMM-2
30305: PPUSH
30306: CALL_OW 88
// end ;
30310: LD_VAR 0 1
30314: RET
// every 0 0$0.2 marked 6 do
30315: GO 30317
30317: DISABLE
// begin Say ( Powell , D6-Pow-2 ) ;
30318: LD_EXP 2
30322: PPUSH
30323: LD_STRING D6-Pow-2
30325: PPUSH
30326: CALL_OW 88
// end ;
30330: END
// every 0 0$0.1 marked 5 do
30331: GO 30333
30333: DISABLE
// begin if IsInUnit ( Powell ) = 0 then
30334: LD_EXP 2
30338: PPUSH
30339: CALL_OW 310
30343: PUSH
30344: LD_INT 0
30346: EQUAL
30347: IFFALSE 30376
// begin if GetLives ( Powell ) < 900 then
30349: LD_EXP 2
30353: PPUSH
30354: CALL_OW 256
30358: PUSH
30359: LD_INT 900
30361: LESS
30362: IFFALSE 30376
// SetLives ( Powell , 1000 ) ;
30364: LD_EXP 2
30368: PPUSH
30369: LD_INT 1000
30371: PPUSH
30372: CALL_OW 234
// end ; if ( IsInUnit ( Powell ) <> 0 ) and ( IsInUnit ( Powell ) <> Powell_vehicle ) then
30376: LD_EXP 2
30380: PPUSH
30381: CALL_OW 310
30385: PUSH
30386: LD_INT 0
30388: NONEQUAL
30389: PUSH
30390: LD_EXP 2
30394: PPUSH
30395: CALL_OW 310
30399: PUSH
30400: LD_EXP 192
30404: NONEQUAL
30405: AND
30406: IFFALSE 30472
// begin if GetLives ( IsInUnit ( Powell ) ) < 400 then
30408: LD_EXP 2
30412: PPUSH
30413: CALL_OW 310
30417: PPUSH
30418: CALL_OW 256
30422: PUSH
30423: LD_INT 400
30425: LESS
30426: IFFALSE 30445
// SetLives ( IsInUnit ( Powell ) , 400 ) ;
30428: LD_EXP 2
30432: PPUSH
30433: CALL_OW 310
30437: PPUSH
30438: LD_INT 400
30440: PPUSH
30441: CALL_OW 234
// if GetLives ( Powell ) < 400 then
30445: LD_EXP 2
30449: PPUSH
30450: CALL_OW 256
30454: PUSH
30455: LD_INT 400
30457: LESS
30458: IFFALSE 30472
// SetLives ( Powell , 400 ) ;
30460: LD_EXP 2
30464: PPUSH
30465: LD_INT 400
30467: PPUSH
30468: CALL_OW 234
// end ; enable ;
30472: ENABLE
// end ;
30473: END
// every 0 0$2 trigger Center_To_Powell do var X , Y , NewX , NewY ;
30474: LD_EXP 194
30478: IFFALSE 30709
30480: GO 30482
30482: DISABLE
30483: LD_INT 0
30485: PPUSH
30486: PPUSH
30487: PPUSH
30488: PPUSH
// begin if IsInUnit ( Powell ) = Powell_vehicle then
30489: LD_EXP 2
30493: PPUSH
30494: CALL_OW 310
30498: PUSH
30499: LD_EXP 192
30503: EQUAL
30504: IFFALSE 30608
// begin X = GetX ( Powell_vehicle ) ;
30506: LD_ADDR_VAR 0 1
30510: PUSH
30511: LD_EXP 192
30515: PPUSH
30516: CALL_OW 250
30520: ST_TO_ADDR
// Y = GetY ( Powell_vehicle ) ;
30521: LD_ADDR_VAR 0 2
30525: PUSH
30526: LD_EXP 192
30530: PPUSH
30531: CALL_OW 251
30535: ST_TO_ADDR
// NewX = ShiftX ( X , GetDir ( Powell_vehicle ) , 5 ) ;
30536: LD_ADDR_VAR 0 3
30540: PUSH
30541: LD_VAR 0 1
30545: PPUSH
30546: LD_EXP 192
30550: PPUSH
30551: CALL_OW 254
30555: PPUSH
30556: LD_INT 5
30558: PPUSH
30559: CALL_OW 272
30563: ST_TO_ADDR
// NewY = ShiftY ( Y , GetDir ( Powell_vehicle ) , 5 ) ;
30564: LD_ADDR_VAR 0 4
30568: PUSH
30569: LD_VAR 0 2
30573: PPUSH
30574: LD_EXP 192
30578: PPUSH
30579: CALL_OW 254
30583: PPUSH
30584: LD_INT 5
30586: PPUSH
30587: CALL_OW 273
30591: ST_TO_ADDR
// CenterOnXY ( NewX , NewY ) ;
30592: LD_VAR 0 3
30596: PPUSH
30597: LD_VAR 0 4
30601: PPUSH
30602: CALL_OW 84
// end else
30606: GO 30708
// begin X = GetX ( Powell ) ;
30608: LD_ADDR_VAR 0 1
30612: PUSH
30613: LD_EXP 2
30617: PPUSH
30618: CALL_OW 250
30622: ST_TO_ADDR
// Y = GetY ( Powell ) ;
30623: LD_ADDR_VAR 0 2
30627: PUSH
30628: LD_EXP 2
30632: PPUSH
30633: CALL_OW 251
30637: ST_TO_ADDR
// NewX = ShiftX ( X , GetDir ( Powell ) , 2 ) ;
30638: LD_ADDR_VAR 0 3
30642: PUSH
30643: LD_VAR 0 1
30647: PPUSH
30648: LD_EXP 2
30652: PPUSH
30653: CALL_OW 254
30657: PPUSH
30658: LD_INT 2
30660: PPUSH
30661: CALL_OW 272
30665: ST_TO_ADDR
// NewY = ShiftY ( Y , GetDir ( Powell ) , 2 ) ;
30666: LD_ADDR_VAR 0 4
30670: PUSH
30671: LD_VAR 0 2
30675: PPUSH
30676: LD_EXP 2
30680: PPUSH
30681: CALL_OW 254
30685: PPUSH
30686: LD_INT 2
30688: PPUSH
30689: CALL_OW 273
30693: ST_TO_ADDR
// CenterOnXY ( NewX , NewY ) ;
30694: LD_VAR 0 3
30698: PPUSH
30699: LD_VAR 0 4
30703: PPUSH
30704: CALL_OW 84
// end ; enable ;
30708: ENABLE
// end ;
30709: PPOPN 4
30711: END
// every 0 0$1 trigger FilterUnitsExceptArea ( JMM_Hill , [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) marked 1 do var i ;
30712: LD_INT 2
30714: PPUSH
30715: LD_INT 22
30717: PUSH
30718: LD_INT 1
30720: PUSH
30721: EMPTY
30722: LIST
30723: LIST
30724: PUSH
30725: LD_INT 21
30727: PUSH
30728: LD_INT 1
30730: PUSH
30731: EMPTY
30732: LIST
30733: LIST
30734: PUSH
30735: EMPTY
30736: LIST
30737: LIST
30738: PPUSH
30739: CALL_OW 71
30743: IFFALSE 30851
30745: GO 30747
30747: DISABLE
30748: LD_INT 0
30750: PPUSH
// begin enable ;
30751: ENABLE
// for i in FilterUnitsExceptArea ( JMM_Hill , [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) do
30752: LD_ADDR_VAR 0 1
30756: PUSH
30757: LD_INT 2
30759: PPUSH
30760: LD_INT 22
30762: PUSH
30763: LD_INT 1
30765: PUSH
30766: EMPTY
30767: LIST
30768: LIST
30769: PUSH
30770: LD_INT 21
30772: PUSH
30773: LD_INT 1
30775: PUSH
30776: EMPTY
30777: LIST
30778: LIST
30779: PUSH
30780: EMPTY
30781: LIST
30782: LIST
30783: PPUSH
30784: CALL_OW 71
30788: PUSH
30789: FOR_IN
30790: IFFALSE 30809
// ComMoveXY ( i , 68 , 107 ) ;
30792: LD_VAR 0 1
30796: PPUSH
30797: LD_INT 68
30799: PPUSH
30800: LD_INT 107
30802: PPUSH
30803: CALL_OW 111
30807: GO 30789
30809: POP
30810: POP
// if ( Powell_angry_time + 0 0$06 ) < tick then
30811: LD_EXP 251
30815: PUSH
30816: LD_INT 210
30818: PLUS
30819: PUSH
30820: LD_OWVAR 1
30824: LESS
30825: IFFALSE 30851
// begin Powell_angry_counter := Powell_angry_counter + 1 ;
30827: LD_ADDR_EXP 250
30831: PUSH
30832: LD_EXP 250
30836: PUSH
30837: LD_INT 1
30839: PLUS
30840: ST_TO_ADDR
// Powell_angry_time := tick ;
30841: LD_ADDR_EXP 251
30845: PUSH
30846: LD_OWVAR 1
30850: ST_TO_ADDR
// end ; end ;
30851: PPOPN 1
30853: END
// every 0 0$1 trigger Powell_angry_time = tick do
30854: LD_EXP 251
30858: PUSH
30859: LD_OWVAR 1
30863: EQUAL
30864: IFFALSE 30950
30866: GO 30868
30868: DISABLE
// begin enable ;
30869: ENABLE
// case Powell_angry_counter of 1 :
30870: LD_EXP 250
30874: PUSH
30875: LD_INT 1
30877: DOUBLE
30878: EQUAL
30879: IFTRUE 30883
30881: GO 30898
30883: POP
// Say ( Powell , DBack1-Pow-1 ) ; 2 :
30884: LD_EXP 2
30888: PPUSH
30889: LD_STRING DBack1-Pow-1
30891: PPUSH
30892: CALL_OW 88
30896: GO 30950
30898: LD_INT 2
30900: DOUBLE
30901: EQUAL
30902: IFTRUE 30906
30904: GO 30921
30906: POP
// Say ( Powell , DBack2-Pow-1 ) ; 3 :
30907: LD_EXP 2
30911: PPUSH
30912: LD_STRING DBack2-Pow-1
30914: PPUSH
30915: CALL_OW 88
30919: GO 30950
30921: LD_INT 3
30923: DOUBLE
30924: EQUAL
30925: IFTRUE 30929
30927: GO 30949
30929: POP
// begin Say ( Powell , DBack3-Pow-1 ) ;
30930: LD_EXP 2
30934: PPUSH
30935: LD_STRING DBack3-Pow-1
30937: PPUSH
30938: CALL_OW 88
// enable ( out_of_base ) ;
30942: LD_EXP 138
30946: ENABLE_MARKED
// end ; end ;
30947: GO 30950
30949: POP
// end ;
30950: END
// every 0 0$2 marked 7 do var Sum_X , Sum_Y , New_X , New_Y , Number , Un ;
30951: GO 30953
30953: DISABLE
30954: LD_INT 0
30956: PPUSH
30957: PPUSH
30958: PPUSH
30959: PPUSH
30960: PPUSH
30961: PPUSH
// begin Number = UnitFilter ( Soldiers ^ Soldiers1 , [ f_alive ] ) ;
30962: LD_ADDR_VAR 0 5
30966: PUSH
30967: LD_LOC 6
30971: PUSH
30972: LD_LOC 7
30976: ADD
30977: PPUSH
30978: LD_INT 51
30980: PUSH
30981: EMPTY
30982: LIST
30983: PPUSH
30984: CALL_OW 72
30988: ST_TO_ADDR
// if Number > 0 then
30989: LD_VAR 0 5
30993: PUSH
30994: LD_INT 0
30996: GREATER
30997: IFFALSE 31156
// begin for Un in ( Soldiers ^ Soldiers1 ) do
30999: LD_ADDR_VAR 0 6
31003: PUSH
31004: LD_LOC 6
31008: PUSH
31009: LD_LOC 7
31013: ADD
31014: PUSH
31015: FOR_IN
31016: IFFALSE 31084
// begin if IsLive ( Un ) then
31018: LD_VAR 0 6
31022: PPUSH
31023: CALL_OW 300
31027: IFFALSE 31050
// Sum_X = Sum_X + GetX ( Un ) ;
31029: LD_ADDR_VAR 0 1
31033: PUSH
31034: LD_VAR 0 1
31038: PUSH
31039: LD_VAR 0 6
31043: PPUSH
31044: CALL_OW 250
31048: PLUS
31049: ST_TO_ADDR
// if IsLive ( Un ) then
31050: LD_VAR 0 6
31054: PPUSH
31055: CALL_OW 300
31059: IFFALSE 31082
// Sum_Y = Sum_Y + GetY ( Un ) ;
31061: LD_ADDR_VAR 0 2
31065: PUSH
31066: LD_VAR 0 2
31070: PUSH
31071: LD_VAR 0 6
31075: PPUSH
31076: CALL_OW 251
31080: PLUS
31081: ST_TO_ADDR
// end ;
31082: GO 31015
31084: POP
31085: POP
// New_X = ( Sum_X + Number / 2 ) div Number ;
31086: LD_ADDR_VAR 0 3
31090: PUSH
31091: LD_VAR 0 1
31095: PUSH
31096: LD_VAR 0 5
31100: PUSH
31101: LD_INT 2
31103: DIVREAL
31104: PLUS
31105: PUSH
31106: LD_VAR 0 5
31110: DIV
31111: ST_TO_ADDR
// New_Y = ( ( Sum_Y + Number / 2 ) div Number ) - 5 ;
31112: LD_ADDR_VAR 0 4
31116: PUSH
31117: LD_VAR 0 2
31121: PUSH
31122: LD_VAR 0 5
31126: PUSH
31127: LD_INT 2
31129: DIVREAL
31130: PLUS
31131: PUSH
31132: LD_VAR 0 5
31136: DIV
31137: PUSH
31138: LD_INT 5
31140: MINUS
31141: ST_TO_ADDR
// CenterOnXY ( New_X , New_Y ) ;
31142: LD_VAR 0 3
31146: PPUSH
31147: LD_VAR 0 4
31151: PPUSH
31152: CALL_OW 84
// end ; enable ;
31156: ENABLE
// end ;
31157: PPOPN 6
31159: END
// every 0 0$1 marked 24 do
31160: GO 31162
31162: DISABLE
// begin display_strings = [ #Am15-1 , tick - Time_of_Ingame_Run_Over ] ;
31163: LD_ADDR_OWVAR 47
31167: PUSH
31168: LD_STRING #Am15-1
31170: PUSH
31171: LD_OWVAR 1
31175: PUSH
31176: LD_EXP 189
31180: MINUS
31181: PUSH
31182: EMPTY
31183: LIST
31184: LIST
31185: ST_TO_ADDR
// enable ;
31186: ENABLE
// end ; end_of_file
31187: END
// export function StartArabianBase ; var units_to_protect ; begin
31188: LD_INT 0
31190: PPUSH
31191: PPUSH
// units_to_protect = FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_building ] ] ) ;
31192: LD_ADDR_VAR 0 2
31196: PUSH
31197: LD_INT 22
31199: PUSH
31200: LD_EXP 180
31204: PUSH
31205: EMPTY
31206: LIST
31207: LIST
31208: PUSH
31209: LD_INT 21
31211: PUSH
31212: LD_INT 3
31214: PUSH
31215: EMPTY
31216: LIST
31217: LIST
31218: PUSH
31219: EMPTY
31220: LIST
31221: LIST
31222: PPUSH
31223: CALL_OW 69
31227: ST_TO_ADDR
// Arabian_reg_id = McRegistry ( arabians , [ [ mc_reg_area_to_guard , Arabians_Base ] , [ mc_reg_area_to_protect , Arabians_Base ] , [ mc_reg_units_to_protect , units_to_protect ] , - mc_reg_only_important , - mc_reg_ignore_fog ] ) ;
31228: LD_ADDR_EXP 234
31232: PUSH
31233: LD_EXP 180
31237: PPUSH
31238: LD_INT 2
31240: PUSH
31241: LD_INT 4
31243: PUSH
31244: EMPTY
31245: LIST
31246: LIST
31247: PUSH
31248: LD_INT 3
31250: PUSH
31251: LD_INT 4
31253: PUSH
31254: EMPTY
31255: LIST
31256: LIST
31257: PUSH
31258: LD_INT 4
31260: PUSH
31261: LD_VAR 0 2
31265: PUSH
31266: EMPTY
31267: LIST
31268: LIST
31269: PUSH
31270: LD_INT 8
31272: NEG
31273: PUSH
31274: LD_INT 7
31276: NEG
31277: PUSH
31278: EMPTY
31279: LIST
31280: LIST
31281: LIST
31282: LIST
31283: LIST
31284: PPUSH
31285: CALL_OW 399
31289: ST_TO_ADDR
// Arabian_def_id = McDefend ( 100 , Arabian_reg_id , Arabian_soldiers ^ units_to_protect , [ [ mc_area_dont_leave , Ar_Base ] , [ mc_retreat_area_people , Ar_Heal ] , [ mc_retreat_lives_people , 550 ] ] ) ;
31290: LD_ADDR_EXP 235
31294: PUSH
31295: LD_INT 100
31297: PPUSH
31298: LD_EXP 234
31302: PPUSH
31303: LD_EXP 80
31307: PUSH
31308: LD_VAR 0 2
31312: ADD
31313: PPUSH
31314: LD_INT 2
31316: PUSH
31317: LD_INT 17
31319: PUSH
31320: EMPTY
31321: LIST
31322: LIST
31323: PUSH
31324: LD_INT 7
31326: PUSH
31327: LD_INT 23
31329: PUSH
31330: EMPTY
31331: LIST
31332: LIST
31333: PUSH
31334: LD_INT 5
31336: PUSH
31337: LD_INT 550
31339: PUSH
31340: EMPTY
31341: LIST
31342: LIST
31343: PUSH
31344: EMPTY
31345: LIST
31346: LIST
31347: LIST
31348: PPUSH
31349: CALL_OW 401
31353: ST_TO_ADDR
// Arabian_build_id = McBase ( 50 , Arabian_Engineers , Arabian_Buildings , [ ] , [ ] , [ mc_base_cont ] ) ;
31354: LD_ADDR_EXP 236
31358: PUSH
31359: LD_INT 50
31361: PPUSH
31362: LD_EXP 81
31366: PPUSH
31367: LD_EXP 88
31371: PPUSH
31372: EMPTY
31373: PPUSH
31374: EMPTY
31375: PPUSH
31376: LD_INT 1
31378: PUSH
31379: EMPTY
31380: LIST
31381: PPUSH
31382: CALL_OW 397
31386: ST_TO_ADDR
// end ;
31387: LD_VAR 0 1
31391: RET
// export function SendArabianBack ( Un ) ; var Hex , New_Hex , i ; begin
31392: LD_INT 0
31394: PPUSH
31395: PPUSH
31396: PPUSH
31397: PPUSH
// if GetClass ( Un ) = class_scientistic then
31398: LD_VAR 0 1
31402: PPUSH
31403: CALL_OW 257
31407: PUSH
31408: LD_INT 4
31410: EQUAL
31411: IFFALSE 31431
// Hex = RandHexArea ( Ar_Heal , false ) else
31413: LD_ADDR_VAR 0 3
31417: PUSH
31418: LD_INT 23
31420: PPUSH
31421: LD_INT 0
31423: PPUSH
31424: CALL_OW 16
31428: ST_TO_ADDR
31429: GO 31447
// Hex = RandHexArea ( Ar_Base , false ) ;
31431: LD_ADDR_VAR 0 3
31435: PUSH
31436: LD_INT 17
31438: PPUSH
31439: LD_INT 0
31441: PPUSH
31442: CALL_OW 16
31446: ST_TO_ADDR
// for i = 1 to 10 do
31447: LD_ADDR_VAR 0 5
31451: PUSH
31452: DOUBLE
31453: LD_INT 1
31455: DEC
31456: ST_TO_ADDR
31457: LD_INT 10
31459: PUSH
31460: FOR_TO
31461: IFFALSE 31582
// begin if GetClass ( Un ) = class_scientistic then
31463: LD_VAR 0 1
31467: PPUSH
31468: CALL_OW 257
31472: PUSH
31473: LD_INT 4
31475: EQUAL
31476: IFFALSE 31496
// New_Hex = RandHexArea ( Ar_Heal , false ) else
31478: LD_ADDR_VAR 0 4
31482: PUSH
31483: LD_INT 23
31485: PPUSH
31486: LD_INT 0
31488: PPUSH
31489: CALL_OW 16
31493: ST_TO_ADDR
31494: GO 31512
// New_Hex = RandHexArea ( Ar_Base , false ) ;
31496: LD_ADDR_VAR 0 4
31500: PUSH
31501: LD_INT 17
31503: PPUSH
31504: LD_INT 0
31506: PPUSH
31507: CALL_OW 16
31511: ST_TO_ADDR
// if GetDistUnitXY ( Un , New_Hex [ 1 ] , New_Hex [ 2 ] ) < GetDistUnitXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) then
31512: LD_VAR 0 1
31516: PPUSH
31517: LD_VAR 0 4
31521: PUSH
31522: LD_INT 1
31524: ARRAY
31525: PPUSH
31526: LD_VAR 0 4
31530: PUSH
31531: LD_INT 2
31533: ARRAY
31534: PPUSH
31535: CALL_OW 297
31539: PUSH
31540: LD_VAR 0 1
31544: PPUSH
31545: LD_VAR 0 3
31549: PUSH
31550: LD_INT 1
31552: ARRAY
31553: PPUSH
31554: LD_VAR 0 3
31558: PUSH
31559: LD_INT 2
31561: ARRAY
31562: PPUSH
31563: CALL_OW 297
31567: LESS
31568: IFFALSE 31580
// Hex = New_Hex ;
31570: LD_ADDR_VAR 0 3
31574: PUSH
31575: LD_VAR 0 4
31579: ST_TO_ADDR
// end ;
31580: GO 31460
31582: POP
31583: POP
// if GetUnitMc ( Un ) = Arabian_def_id then
31584: LD_VAR 0 1
31588: PPUSH
31589: CALL_OW 388
31593: PUSH
31594: LD_EXP 235
31598: EQUAL
31599: IFFALSE 31670
// begin RemoveMcUnits ( Arabian_def_id , Un ) ;
31601: LD_EXP 235
31605: PPUSH
31606: LD_VAR 0 1
31610: PPUSH
31611: CALL_OW 391
// ComMoveXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) ;
31615: LD_VAR 0 1
31619: PPUSH
31620: LD_VAR 0 3
31624: PUSH
31625: LD_INT 1
31627: ARRAY
31628: PPUSH
31629: LD_VAR 0 3
31633: PUSH
31634: LD_INT 2
31636: ARRAY
31637: PPUSH
31638: CALL_OW 111
// WaitTask ( Un , 1 ) ;
31642: LD_VAR 0 1
31646: PPUSH
31647: LD_INT 1
31649: PPUSH
31650: CALL 17892 0 2
// AddMcUnits ( Arabian_def_id , Un ) ;
31654: LD_EXP 235
31658: PPUSH
31659: LD_VAR 0 1
31663: PPUSH
31664: CALL_OW 390
// end else
31668: GO 31709
// begin ComMoveXY ( Un , Hex [ 1 ] , Hex [ 2 ] ) ;
31670: LD_VAR 0 1
31674: PPUSH
31675: LD_VAR 0 3
31679: PUSH
31680: LD_INT 1
31682: ARRAY
31683: PPUSH
31684: LD_VAR 0 3
31688: PUSH
31689: LD_INT 2
31691: ARRAY
31692: PPUSH
31693: CALL_OW 111
// WaitTask ( Un , 1 ) ;
31697: LD_VAR 0 1
31701: PPUSH
31702: LD_INT 1
31704: PPUSH
31705: CALL 17892 0 2
// end ; end ;
31709: LD_VAR 0 2
31713: RET
// every 0 0$10 trigger not ( Friend_has_come ) do var Un ;
31714: LD_EXP 226
31718: NOT
31719: IFFALSE 31831
31721: GO 31723
31723: DISABLE
31724: LD_INT 0
31726: PPUSH
// begin for Un in All_Arabians do
31727: LD_ADDR_VAR 0 1
31731: PUSH
31732: LD_EXP 79
31736: PUSH
31737: FOR_IN
31738: IFFALSE 31828
// begin if ( ( GetClass ( Un ) = class_scientistic ) and not ( IsInArea ( Un , Ar_Heal ) ) or ( GetClass ( Un ) <> class_scientistic ) and not ( IsInArea ( Un , Ar_Base ) ) ) then
31740: LD_VAR 0 1
31744: PPUSH
31745: CALL_OW 257
31749: PUSH
31750: LD_INT 4
31752: EQUAL
31753: PUSH
31754: LD_VAR 0 1
31758: PPUSH
31759: LD_INT 23
31761: PPUSH
31762: CALL_OW 308
31766: NOT
31767: AND
31768: PUSH
31769: LD_VAR 0 1
31773: PPUSH
31774: CALL_OW 257
31778: PUSH
31779: LD_INT 4
31781: NONEQUAL
31782: PUSH
31783: LD_VAR 0 1
31787: PPUSH
31788: LD_INT 17
31790: PPUSH
31791: CALL_OW 308
31795: NOT
31796: AND
31797: OR
31798: IFFALSE 31826
// begin Arabian_Outside = Un ;
31800: LD_ADDR_EXP 86
31804: PUSH
31805: LD_VAR 0 1
31809: ST_TO_ADDR
// RaiseSailEvent ( Send_Arabian_Back ) ;
31810: LD_EXP 174
31814: PPUSH
31815: CALL_OW 427
// Wait ( 1 ) ;
31819: LD_INT 1
31821: PPUSH
31822: CALL_OW 67
// end end ;
31826: GO 31737
31828: POP
31829: POP
// enable ;
31830: ENABLE
// end ;
31831: PPOPN 1
31833: END
// export function RepairArabExtensions ; begin
31834: LD_INT 0
31836: PPUSH
// uc_nation = nation_russian ;
31837: LD_ADDR_OWVAR 21
31841: PUSH
31842: LD_INT 3
31844: ST_TO_ADDR
// uc_side = arabians ;
31845: LD_ADDR_OWVAR 20
31849: PUSH
31850: LD_EXP 180
31854: ST_TO_ADDR
// if not ( IsDead ( ArRuSibExt ) ) and GetLives ( ArRuSibExt ) < 1000 then
31855: LD_INT 116
31857: PPUSH
31858: CALL_OW 301
31862: NOT
31863: PUSH
31864: LD_INT 116
31866: PPUSH
31867: CALL_OW 256
31871: PUSH
31872: LD_INT 1000
31874: LESS
31875: AND
31876: IFFALSE 31888
// SetLives ( ArRuSibExt , 1000 ) ;
31878: LD_INT 116
31880: PPUSH
31881: LD_INT 1000
31883: PPUSH
31884: CALL_OW 234
// if not ( IsDead ( ArRuRoExt ) ) and GetLives ( ArRuRoExt ) < 1000 then
31888: LD_INT 115
31890: PPUSH
31891: CALL_OW 301
31895: NOT
31896: PUSH
31897: LD_INT 115
31899: PPUSH
31900: CALL_OW 256
31904: PUSH
31905: LD_INT 1000
31907: LESS
31908: AND
31909: IFFALSE 31921
// SetLives ( ArRuRoExt , 1000 ) ;
31911: LD_INT 115
31913: PPUSH
31914: LD_INT 1000
31916: PPUSH
31917: CALL_OW 234
// if not ( IsDead ( ArRuTrackExt ) ) and GetLives ( ArRuTrackExt ) < 1000 then
31921: LD_INT 141
31923: PPUSH
31924: CALL_OW 301
31928: NOT
31929: PUSH
31930: LD_INT 141
31932: PPUSH
31933: CALL_OW 256
31937: PUSH
31938: LD_INT 1000
31940: LESS
31941: AND
31942: IFFALSE 31954
// SetLives ( ArRuTrackExt , 1000 ) ;
31944: LD_INT 141
31946: PPUSH
31947: LD_INT 1000
31949: PPUSH
31950: CALL_OW 234
// if not ( IsDead ( ArRuCompExt ) ) and GetLives ( ArRuTrackExt ) < 1000 then
31954: LD_INT 142
31956: PPUSH
31957: CALL_OW 301
31961: NOT
31962: PUSH
31963: LD_INT 141
31965: PPUSH
31966: CALL_OW 256
31970: PUSH
31971: LD_INT 1000
31973: LESS
31974: AND
31975: IFFALSE 31987
// SetLives ( ArRuTrackExt , 1000 ) ;
31977: LD_INT 141
31979: PPUSH
31980: LD_INT 1000
31982: PPUSH
31983: CALL_OW 234
// end ;
31987: LD_VAR 0 1
31991: RET
// every 0 0$1 marked 9 do
31992: GO 31994
31994: DISABLE
// begin disable ;
31995: DISABLE
// SetResourceType ( GetBase ( GetUnitNumber ( 84 , 4 ) ) , mat_cans , 200 ) ;
31996: LD_INT 84
31998: PPUSH
31999: LD_INT 4
32001: PPUSH
32002: CALL_OW 438
32006: PPUSH
32007: CALL_OW 274
32011: PPUSH
32012: LD_INT 1
32014: PPUSH
32015: LD_INT 200
32017: PPUSH
32018: CALL_OW 277
// PlaceUnitArea ( Kozlov , Ar_Base , false ) ;
32022: LD_EXP 22
32026: PPUSH
32027: LD_INT 17
32029: PPUSH
32030: LD_INT 0
32032: PPUSH
32033: CALL_OW 49
// Wait ( 1 ) ;
32037: LD_INT 1
32039: PPUSH
32040: CALL_OW 67
// ComEnterUnit ( Kozlov , ArDep1 ) ;
32044: LD_EXP 22
32048: PPUSH
32049: LD_INT 122
32051: PPUSH
32052: CALL_OW 120
// AddComChangeProfession ( Kozlov , class_engineer ) ;
32056: LD_EXP 22
32060: PPUSH
32061: LD_INT 2
32063: PPUSH
32064: CALL_OW 183
// AddComExitBuilding ( Kozlov ) ;
32068: LD_EXP 22
32072: PPUSH
32073: CALL_OW 182
// AddComBuild ( Kozlov , b_workshop , 78 , 12 , 3 ) ;
32077: LD_EXP 22
32081: PPUSH
32082: LD_INT 2
32084: PPUSH
32085: LD_INT 78
32087: PPUSH
32088: LD_INT 12
32090: PPUSH
32091: LD_INT 3
32093: PPUSH
32094: CALL_OW 205
// while GetBType ( GetUnitNumber ( 78 , 12 ) ) <> b_workshop do
32098: LD_INT 78
32100: PPUSH
32101: LD_INT 12
32103: PPUSH
32104: CALL_OW 438
32108: PPUSH
32109: CALL_OW 266
32113: PUSH
32114: LD_INT 2
32116: NONEQUAL
32117: IFFALSE 32128
// begin Wait ( 0 0$1 ) ;
32119: LD_INT 35
32121: PPUSH
32122: CALL_OW 67
// end ;
32126: GO 32098
// RemoveMcUnits ( Arabian_build_id , Arabian_Engineers ) ;
32128: LD_EXP 236
32132: PPUSH
32133: LD_EXP 81
32137: PPUSH
32138: CALL_OW 391
// ComRepairBuilding ( Arabian_Engineers , GetUnitNumber ( 78 , 12 ) ) ;
32142: LD_EXP 81
32146: PPUSH
32147: LD_INT 78
32149: PPUSH
32150: LD_INT 12
32152: PPUSH
32153: CALL_OW 438
32157: PPUSH
32158: CALL_OW 130
// WaitTask ( Kozlov , 1 ) ;
32162: LD_EXP 22
32166: PPUSH
32167: LD_INT 1
32169: PPUSH
32170: CALL 17892 0 2
// ComUpgrade ( GetUnitNumber ( 78 , 12 ) ) ;
32174: LD_INT 78
32176: PPUSH
32177: LD_INT 12
32179: PPUSH
32180: CALL_OW 438
32184: PPUSH
32185: CALL_OW 146
// repeat Wait ( 1 ) ;
32189: LD_INT 1
32191: PPUSH
32192: CALL_OW 67
// until GetBType ( GetUnitNumber ( 78 , 12 ) ) = b_factory ;
32196: LD_INT 78
32198: PPUSH
32199: LD_INT 12
32201: PPUSH
32202: CALL_OW 438
32206: PPUSH
32207: CALL_OW 266
32211: PUSH
32212: LD_INT 3
32214: EQUAL
32215: IFFALSE 32189
// ComRepairBuilding ( Kozlov ^ Arabian_Engineers , GetUnitNumber ( 78 , 12 ) ) ;
32217: LD_EXP 22
32221: PUSH
32222: LD_EXP 81
32226: ADD
32227: PPUSH
32228: LD_INT 78
32230: PPUSH
32231: LD_INT 12
32233: PPUSH
32234: CALL_OW 438
32238: PPUSH
32239: CALL_OW 130
// WaitTask ( Kozlov , 1 ) ;
32243: LD_EXP 22
32247: PPUSH
32248: LD_INT 1
32250: PPUSH
32251: CALL 17892 0 2
// if IsDead ( ArRuSibExt ) then
32255: LD_INT 116
32257: PPUSH
32258: CALL_OW 301
32262: IFFALSE 32388
// begin SetResourceType ( GetBase ( GetUnitNumber ( 84 , 4 ) ) , mat_siberit , 200 ) ;
32264: LD_INT 84
32266: PPUSH
32267: LD_INT 4
32269: PPUSH
32270: CALL_OW 438
32274: PPUSH
32275: CALL_OW 274
32279: PPUSH
32280: LD_INT 3
32282: PPUSH
32283: LD_INT 200
32285: PPUSH
32286: CALL_OW 277
// SetResourceType ( GetBase ( GetUnitNumber ( 84 , 4 ) ) , mat_cans , 200 ) ;
32290: LD_INT 84
32292: PPUSH
32293: LD_INT 4
32295: PPUSH
32296: CALL_OW 438
32300: PPUSH
32301: CALL_OW 274
32305: PPUSH
32306: LD_INT 1
32308: PPUSH
32309: LD_INT 200
32311: PPUSH
32312: CALL_OW 277
// while GetBType ( GetUnitNumber ( 74 , 12 ) ) <> b_ext_siberium do
32316: LD_INT 74
32318: PPUSH
32319: LD_INT 12
32321: PPUSH
32322: CALL_OW 438
32326: PPUSH
32327: CALL_OW 266
32331: PUSH
32332: LD_INT 21
32334: NONEQUAL
32335: IFFALSE 32368
// begin ComBuild ( Kozlov , b_ext_siberium , 74 , 12 , 1 ) ;
32337: LD_EXP 22
32341: PPUSH
32342: LD_INT 21
32344: PPUSH
32345: LD_INT 74
32347: PPUSH
32348: LD_INT 12
32350: PPUSH
32351: LD_INT 1
32353: PPUSH
32354: CALL_OW 145
// Wait ( 0.5 ) ;
32358: LD_REAL  5.00000000000000E-0001
32361: PPUSH
32362: CALL_OW 67
// end ;
32366: GO 32316
// ComRepairBuilding ( Arabian_Engineers , GetUnitNumber ( 74 , 12 ) ) ;
32368: LD_EXP 81
32372: PPUSH
32373: LD_INT 74
32375: PPUSH
32376: LD_INT 12
32378: PPUSH
32379: CALL_OW 438
32383: PPUSH
32384: CALL_OW 130
// end ; repeat Wait ( 2 ) ;
32388: LD_INT 2
32390: PPUSH
32391: CALL_OW 67
// until not ( HasTask ( Kozlov ) ) ;
32395: LD_EXP 22
32399: PPUSH
32400: CALL_OW 314
32404: NOT
32405: IFFALSE 32388
// WaitTask ( Kozlov , 1 ) ;
32407: LD_EXP 22
32411: PPUSH
32412: LD_INT 1
32414: PPUSH
32415: CALL 17892 0 2
// if IsDead ( ArRuTrackExt ) then
32419: LD_INT 141
32421: PPUSH
32422: CALL_OW 301
32426: IFFALSE 32552
// begin SetResourceType ( GetBase ( GetUnitNumber ( 84 , 4 ) ) , mat_siberit , 200 ) ;
32428: LD_INT 84
32430: PPUSH
32431: LD_INT 4
32433: PPUSH
32434: CALL_OW 438
32438: PPUSH
32439: CALL_OW 274
32443: PPUSH
32444: LD_INT 3
32446: PPUSH
32447: LD_INT 200
32449: PPUSH
32450: CALL_OW 277
// SetResourceType ( GetBase ( GetUnitNumber ( 84 , 4 ) ) , mat_cans , 200 ) ;
32454: LD_INT 84
32456: PPUSH
32457: LD_INT 4
32459: PPUSH
32460: CALL_OW 438
32464: PPUSH
32465: CALL_OW 274
32469: PPUSH
32470: LD_INT 1
32472: PPUSH
32473: LD_INT 200
32475: PPUSH
32476: CALL_OW 277
// while GetBType ( GetUnitNumber ( 81 , 12 ) ) <> b_ext_track do
32480: LD_INT 81
32482: PPUSH
32483: LD_INT 12
32485: PPUSH
32486: CALL_OW 438
32490: PPUSH
32491: CALL_OW 266
32495: PUSH
32496: LD_INT 16
32498: NONEQUAL
32499: IFFALSE 32532
// begin ComBuild ( Kozlov , b_ext_track , 81 , 12 , 4 ) ;
32501: LD_EXP 22
32505: PPUSH
32506: LD_INT 16
32508: PPUSH
32509: LD_INT 81
32511: PPUSH
32512: LD_INT 12
32514: PPUSH
32515: LD_INT 4
32517: PPUSH
32518: CALL_OW 145
// Wait ( 0.5 ) ;
32522: LD_REAL  5.00000000000000E-0001
32525: PPUSH
32526: CALL_OW 67
// end ;
32530: GO 32480
// ComRepairBuilding ( Arabian_Engineers , GetUnitNumber ( 81 , 12 ) ) ;
32532: LD_EXP 81
32536: PPUSH
32537: LD_INT 81
32539: PPUSH
32540: LD_INT 12
32542: PPUSH
32543: CALL_OW 438
32547: PPUSH
32548: CALL_OW 130
// end ; repeat Wait ( 2 ) ;
32552: LD_INT 2
32554: PPUSH
32555: CALL_OW 67
// until not ( HasTask ( Kozlov ) ) ;
32559: LD_EXP 22
32563: PPUSH
32564: CALL_OW 314
32568: NOT
32569: IFFALSE 32552
// WaitTask ( Kozlov , 1 ) ;
32571: LD_EXP 22
32575: PPUSH
32576: LD_INT 1
32578: PPUSH
32579: CALL 17892 0 2
// SetResourceType ( GetBase ( GetUnitNumber ( 78 , 12 ) ) , mat_siberit , 200 ) ;
32583: LD_INT 78
32585: PPUSH
32586: LD_INT 12
32588: PPUSH
32589: CALL_OW 438
32593: PPUSH
32594: CALL_OW 274
32598: PPUSH
32599: LD_INT 3
32601: PPUSH
32602: LD_INT 200
32604: PPUSH
32605: CALL_OW 277
// SetResourceType ( GetBase ( GetUnitNumber ( 78 , 12 ) ) , mat_cans , 200 ) ;
32609: LD_INT 78
32611: PPUSH
32612: LD_INT 12
32614: PPUSH
32615: CALL_OW 438
32619: PPUSH
32620: CALL_OW 274
32624: PPUSH
32625: LD_INT 1
32627: PPUSH
32628: LD_INT 200
32630: PPUSH
32631: CALL_OW 277
// ComEnterUnit ( Kozlov , GetUnitNumber ( 78 , 12 ) ) ;
32635: LD_EXP 22
32639: PPUSH
32640: LD_INT 78
32642: PPUSH
32643: LD_INT 12
32645: PPUSH
32646: CALL_OW 438
32650: PPUSH
32651: CALL_OW 120
// AddComChangeProfession ( Kozlov , class_mechanic ) ;
32655: LD_EXP 22
32659: PPUSH
32660: LD_INT 3
32662: PPUSH
32663: CALL_OW 183
// AddComConstruct ( GetUnitNumber ( 78 , 12 ) , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) ;
32667: LD_INT 78
32669: PPUSH
32670: LD_INT 12
32672: PPUSH
32673: CALL_OW 438
32677: PPUSH
32678: LD_INT 24
32680: PPUSH
32681: LD_INT 3
32683: PPUSH
32684: LD_INT 3
32686: PPUSH
32687: LD_INT 48
32689: PPUSH
32690: CALL_OW 185
// AddMcUnits ( Arabian_build_id , Arabian_Engineers ) ;
32694: LD_EXP 236
32698: PPUSH
32699: LD_EXP 81
32703: PPUSH
32704: CALL_OW 390
// Wait ( 0 0$10 ) ;
32708: LD_INT 350
32710: PPUSH
32711: CALL_OW 67
// Starting_Construction_Time = tick ;
32715: LD_ADDR_EXP 231
32719: PUSH
32720: LD_OWVAR 1
32724: ST_TO_ADDR
// Construction_of_Arabian_rocket = true ;
32725: LD_ADDR_EXP 198
32729: PUSH
32730: LD_INT 1
32732: ST_TO_ADDR
// end ;
32733: END
// every 0 0$1 trigger Construction_of_Arabian_rocket and IsOk ( GetUnitNumber ( 78 , 12 ) ) marked 10 do var progress ;
32734: LD_EXP 198
32738: PUSH
32739: LD_INT 78
32741: PPUSH
32742: LD_INT 12
32744: PPUSH
32745: CALL_OW 438
32749: PPUSH
32750: CALL_OW 302
32754: AND
32755: IFFALSE 32965
32757: GO 32759
32759: DISABLE
32760: LD_INT 0
32762: PPUSH
// begin if ( tick < Arabian_siberite_attack_time ) and ( Number_of_Arabian_rocket = 1 ) and IsOk ( GetUnitNumber ( 78 , 12 ) ) and GetSide ( GetUnitNumber ( 78 , 12 ) ) = arabians then
32763: LD_OWVAR 1
32767: PUSH
32768: LD_EXP 213
32772: LESS
32773: PUSH
32774: LD_EXP 199
32778: PUSH
32779: LD_INT 1
32781: EQUAL
32782: AND
32783: PUSH
32784: LD_INT 78
32786: PPUSH
32787: LD_INT 12
32789: PPUSH
32790: CALL_OW 438
32794: PPUSH
32795: CALL_OW 302
32799: AND
32800: PUSH
32801: LD_INT 78
32803: PPUSH
32804: LD_INT 12
32806: PPUSH
32807: CALL_OW 438
32811: PPUSH
32812: CALL_OW 255
32816: PUSH
32817: LD_EXP 180
32821: EQUAL
32822: AND
32823: IFFALSE 32908
// begin progress = 100 * ( tick - Starting_Construction_Time ) / ( Arabian_siberite_attack_time - Starting_Construction_Time ) div 1 ;
32825: LD_ADDR_VAR 0 1
32829: PUSH
32830: LD_INT 100
32832: PUSH
32833: LD_OWVAR 1
32837: PUSH
32838: LD_EXP 231
32842: MINUS
32843: MUL
32844: PUSH
32845: LD_EXP 213
32849: PUSH
32850: LD_EXP 231
32854: MINUS
32855: DIVREAL
32856: PUSH
32857: LD_INT 1
32859: DIV
32860: ST_TO_ADDR
// if progress > 0 then
32861: LD_VAR 0 1
32865: PUSH
32866: LD_INT 0
32868: GREATER
32869: IFFALSE 32885
// progress = progress - 1 ;
32871: LD_ADDR_VAR 0 1
32875: PUSH
32876: LD_VAR 0 1
32880: PUSH
32881: LD_INT 1
32883: MINUS
32884: ST_TO_ADDR
// SetWorkingProgress ( GetUnitNumber ( 78 , 12 ) , progress ) ;
32885: LD_INT 78
32887: PPUSH
32888: LD_INT 12
32890: PPUSH
32891: CALL_OW 438
32895: PPUSH
32896: LD_VAR 0 1
32900: PPUSH
32901: CALL_OW 329
// enable ;
32905: ENABLE
// end else
32906: GO 32965
// if ( tick >= Arabian_siberite_attack_time ) and ( Number_of_Arabian_rocket = 1 ) and IsOk ( GetUnitNumber ( 78 , 12 ) ) then
32908: LD_OWVAR 1
32912: PUSH
32913: LD_EXP 213
32917: GREATEREQUAL
32918: PUSH
32919: LD_EXP 199
32923: PUSH
32924: LD_INT 1
32926: EQUAL
32927: AND
32928: PUSH
32929: LD_INT 78
32931: PPUSH
32932: LD_INT 12
32934: PPUSH
32935: CALL_OW 438
32939: PPUSH
32940: CALL_OW 302
32944: AND
32945: IFFALSE 32965
// begin SetWorkingProgress ( GetUnitNumber ( 78 , 12 ) , 99 ) ;
32947: LD_INT 78
32949: PPUSH
32950: LD_INT 12
32952: PPUSH
32953: CALL_OW 438
32957: PPUSH
32958: LD_INT 99
32960: PPUSH
32961: CALL_OW 329
// end ; end ;
32965: PPOPN 1
32967: END
// function SiberiteRocketAttack ( rocket , X , Y , Num_of_rocket ) ; var RocketDriver ; begin
32968: LD_INT 0
32970: PPUSH
32971: PPUSH
// ComAttackPlace ( rocket , X , Y ) ;
32972: LD_VAR 0 1
32976: PPUSH
32977: LD_VAR 0 2
32981: PPUSH
32982: LD_VAR 0 3
32986: PPUSH
32987: CALL_OW 116
// case Num_of_rocket of 1 :
32991: LD_VAR 0 4
32995: PUSH
32996: LD_INT 1
32998: DOUBLE
32999: EQUAL
33000: IFTRUE 33004
33002: GO 33019
33004: POP
// Say ( Kurt , D12-Kurt-1 ) ; 2 :
33005: LD_EXP 13
33009: PPUSH
33010: LD_STRING D12-Kurt-1
33012: PPUSH
33013: CALL_OW 88
33017: GO 33055
33019: LD_INT 2
33021: DOUBLE
33022: EQUAL
33023: IFTRUE 33027
33025: GO 33054
33027: POP
// begin Say ( Kurt , D12a-Kurt-1 ) ;
33028: LD_EXP 13
33032: PPUSH
33033: LD_STRING D12a-Kurt-1
33035: PPUSH
33036: CALL_OW 88
// Say ( Roth , D12a-Roth-1 ) ;
33040: LD_EXP 20
33044: PPUSH
33045: LD_STRING D12a-Roth-1
33047: PPUSH
33048: CALL_OW 88
// end ; end ;
33052: GO 33055
33054: POP
// end ;
33055: LD_VAR 0 5
33059: RET
// function FriendComing ; var list_of_q , selection ; begin
33060: LD_INT 0
33062: PPUSH
33063: PPUSH
33064: PPUSH
// if Add_Legion_Objectives then
33065: LD_EXP 230
33069: IFFALSE 33105
// begin Add_Legion_Objectives = false ;
33071: LD_ADDR_EXP 230
33075: PUSH
33076: LD_INT 0
33078: ST_TO_ADDR
// if Number_of_Arabian_rocket = 1 then
33079: LD_EXP 199
33083: PUSH
33084: LD_INT 1
33086: EQUAL
33087: IFFALSE 33098
// ChangeMissionObjectives ( MlegionOut ) else
33089: LD_STRING MlegionOut
33091: PPUSH
33092: CALL_OW 337
33096: GO 33105
// ChangeMissionObjectives ( MlegionDel ) ;
33098: LD_STRING MlegionDel
33100: PPUSH
33101: CALL_OW 337
// end ; Friend_has_come = true ;
33105: LD_ADDR_EXP 226
33109: PUSH
33110: LD_INT 1
33112: ST_TO_ADDR
// KillMc ( Arabian_reg_id ) ;
33113: LD_EXP 234
33117: PPUSH
33118: CALL_OW 387
// KillMc ( Arabian_def_id ) ;
33122: LD_EXP 235
33126: PPUSH
33127: CALL_OW 387
// KillMc ( Arabian_build_id ) ;
33131: LD_EXP 236
33135: PPUSH
33136: CALL_OW 387
// if SeeXY ( americans , 31 , 4 ) and not ( GetUnitNumber ( 31 , 4 ) > 0 ) then
33140: LD_EXP 176
33144: PPUSH
33145: LD_INT 31
33147: PPUSH
33148: LD_INT 4
33150: PPUSH
33151: CALL_OW 293
33155: PUSH
33156: LD_INT 31
33158: PPUSH
33159: LD_INT 4
33161: PPUSH
33162: CALL_OW 438
33166: PUSH
33167: LD_INT 0
33169: GREATER
33170: NOT
33171: AND
33172: IFFALSE 33194
// PlaceUnitXY ( Friend , 31 , 4 , false ) else
33174: LD_EXP 21
33178: PPUSH
33179: LD_INT 31
33181: PPUSH
33182: LD_INT 4
33184: PPUSH
33185: LD_INT 0
33187: PPUSH
33188: CALL_OW 48
33192: GO 33323
// if SeeXY ( americans , 88 , 7 ) and not ( GetUnitNumber ( 88 , 7 ) > 0 ) then
33194: LD_EXP 176
33198: PPUSH
33199: LD_INT 88
33201: PPUSH
33202: LD_INT 7
33204: PPUSH
33205: CALL_OW 293
33209: PUSH
33210: LD_INT 88
33212: PPUSH
33213: LD_INT 7
33215: PPUSH
33216: CALL_OW 438
33220: PUSH
33221: LD_INT 0
33223: GREATER
33224: NOT
33225: AND
33226: IFFALSE 33248
// PlaceUnitXY ( Friend , 88 , 7 , false ) else
33228: LD_EXP 21
33232: PPUSH
33233: LD_INT 88
33235: PPUSH
33236: LD_INT 7
33238: PPUSH
33239: LD_INT 0
33241: PPUSH
33242: CALL_OW 48
33246: GO 33323
// if SeeXY ( americans , 101 , 23 ) and not ( GetUnitNumber ( 101 , 23 ) > 0 ) then
33248: LD_EXP 176
33252: PPUSH
33253: LD_INT 101
33255: PPUSH
33256: LD_INT 23
33258: PPUSH
33259: CALL_OW 293
33263: PUSH
33264: LD_INT 101
33266: PPUSH
33267: LD_INT 23
33269: PPUSH
33270: CALL_OW 438
33274: PUSH
33275: LD_INT 0
33277: GREATER
33278: NOT
33279: AND
33280: IFFALSE 33302
// PlaceUnitXY ( Friend , 101 , 23 , false ) else
33282: LD_EXP 21
33286: PPUSH
33287: LD_INT 101
33289: PPUSH
33290: LD_INT 23
33292: PPUSH
33293: LD_INT 0
33295: PPUSH
33296: CALL_OW 48
33300: GO 33323
// PlaceUnitXYR ( Friend , 6 , 4 , 3 , false ) ;
33302: LD_EXP 21
33306: PPUSH
33307: LD_INT 6
33309: PPUSH
33310: LD_INT 4
33312: PPUSH
33313: LD_INT 3
33315: PPUSH
33316: LD_INT 0
33318: PPUSH
33319: CALL_OW 50
// ComMoveUnit ( Friend , JMM ) ;
33323: LD_EXP 21
33327: PPUSH
33328: LD_EXP 1
33332: PPUSH
33333: CALL_OW 112
// SetAttitude ( americans , arabians , att_friend , true ) ;
33337: LD_EXP 176
33341: PPUSH
33342: LD_EXP 180
33346: PPUSH
33347: LD_INT 1
33349: PPUSH
33350: LD_INT 1
33352: PPUSH
33353: CALL_OW 80
// All_Americans = FilterAllUnits ( [ [ f_side , americans ] , [ f_type , unit_human ] ] ) ;
33357: LD_ADDR_EXP 61
33361: PUSH
33362: LD_INT 22
33364: PUSH
33365: LD_EXP 176
33369: PUSH
33370: EMPTY
33371: LIST
33372: LIST
33373: PUSH
33374: LD_INT 21
33376: PUSH
33377: LD_INT 1
33379: PUSH
33380: EMPTY
33381: LIST
33382: LIST
33383: PUSH
33384: EMPTY
33385: LIST
33386: LIST
33387: PPUSH
33388: CALL_OW 69
33392: ST_TO_ADDR
// repeat Wait ( 0 0$1 ) ;
33393: LD_INT 35
33395: PPUSH
33396: CALL_OW 67
// until UnitFilter ( All_Americans , [ f_dist , Friend , 4 ] ) > 0 ;
33400: LD_EXP 61
33404: PPUSH
33405: LD_INT 91
33407: PUSH
33408: LD_EXP 21
33412: PUSH
33413: LD_INT 4
33415: PUSH
33416: EMPTY
33417: LIST
33418: LIST
33419: LIST
33420: PPUSH
33421: CALL_OW 72
33425: PUSH
33426: LD_INT 0
33428: GREATER
33429: IFFALSE 33393
// ComHold ( Friend ) ;
33431: LD_EXP 21
33435: PPUSH
33436: CALL_OW 140
// CenterNowOnUnits ( Friend ) ;
33440: LD_EXP 21
33444: PPUSH
33445: CALL_OW 87
// Wait ( 0 0$0.5 ) ;
33449: LD_INT 18
33451: PPUSH
33452: CALL_OW 67
// DialogueON ;
33456: CALL_OW 6
// Say ( JMM , D14-JMM-1 ) ;
33460: LD_EXP 1
33464: PPUSH
33465: LD_STRING D14-JMM-1
33467: PPUSH
33468: CALL_OW 88
// Say ( Friend , D14-Friend-1 ) ;
33472: LD_EXP 21
33476: PPUSH
33477: LD_STRING D14-Friend-1
33479: PPUSH
33480: CALL_OW 88
// Say ( JMM , D14-JMM-2 ) ;
33484: LD_EXP 1
33488: PPUSH
33489: LD_STRING D14-JMM-2
33491: PPUSH
33492: CALL_OW 88
// Say ( Friend , D14-Friend-2 ) ;
33496: LD_EXP 21
33500: PPUSH
33501: LD_STRING D14-Friend-2
33503: PPUSH
33504: CALL_OW 88
// Say ( JMM , D14-JMM-3 ) ;
33508: LD_EXP 1
33512: PPUSH
33513: LD_STRING D14-JMM-3
33515: PPUSH
33516: CALL_OW 88
// Say ( Friend , D14-Friend-3 ) ;
33520: LD_EXP 21
33524: PPUSH
33525: LD_STRING D14-Friend-3
33527: PPUSH
33528: CALL_OW 88
// list_of_q = [ 1 , 2 , 3 ] ;
33532: LD_ADDR_VAR 0 2
33536: PUSH
33537: LD_INT 1
33539: PUSH
33540: LD_INT 2
33542: PUSH
33543: LD_INT 3
33545: PUSH
33546: EMPTY
33547: LIST
33548: LIST
33549: LIST
33550: ST_TO_ADDR
// selection = SelectiveQuery ( Q14 , list_of_q ) ;
33551: LD_ADDR_VAR 0 3
33555: PUSH
33556: LD_STRING Q14
33558: PPUSH
33559: LD_VAR 0 2
33563: PPUSH
33564: CALL_OW 98
33568: ST_TO_ADDR
// case selection of 1 :
33569: LD_VAR 0 3
33573: PUSH
33574: LD_INT 1
33576: DOUBLE
33577: EQUAL
33578: IFTRUE 33582
33580: GO 33638
33582: POP
// begin Say ( JMM , D14a-JMM-1 ) ;
33583: LD_EXP 1
33587: PPUSH
33588: LD_STRING D14a-JMM-1
33590: PPUSH
33591: CALL_OW 88
// SetSide ( Friend , americans ) ;
33595: LD_EXP 21
33599: PPUSH
33600: LD_EXP 176
33604: PPUSH
33605: CALL_OW 235
// All_americans = All_americans ^ [ Friend ] ;
33609: LD_ADDR_EXP 61
33613: PUSH
33614: LD_EXP 61
33618: PUSH
33619: LD_EXP 21
33623: PUSH
33624: EMPTY
33625: LIST
33626: ADD
33627: ST_TO_ADDR
// Friend_Accepted = true ;
33628: LD_ADDR_EXP 219
33632: PUSH
33633: LD_INT 1
33635: ST_TO_ADDR
// end ; 2 :
33636: GO 33736
33638: LD_INT 2
33640: DOUBLE
33641: EQUAL
33642: IFTRUE 33646
33644: GO 33668
33646: POP
// begin Say ( JMM , D14b-JMM-1 ) ;
33647: LD_EXP 1
33651: PPUSH
33652: LD_STRING D14b-JMM-1
33654: PPUSH
33655: CALL_OW 88
// Wait ( 0 0$1 ) ;
33659: LD_INT 35
33661: PPUSH
33662: CALL_OW 67
// end ; 3 :
33666: GO 33736
33668: LD_INT 3
33670: DOUBLE
33671: EQUAL
33672: IFTRUE 33676
33674: GO 33735
33676: POP
// begin Say ( JMM , D14c-JMM-1 ) ;
33677: LD_EXP 1
33681: PPUSH
33682: LD_STRING D14c-JMM-1
33684: PPUSH
33685: CALL_OW 88
// Say ( Friend , D14c-Friend-1 ) ;
33689: LD_EXP 21
33693: PPUSH
33694: LD_STRING D14c-Friend-1
33696: PPUSH
33697: CALL_OW 88
// Say ( JMM , D14c-JMM-2 ) ;
33701: LD_EXP 1
33705: PPUSH
33706: LD_STRING D14c-JMM-2
33708: PPUSH
33709: CALL_OW 88
// SetAttitude ( americans , arabians , att_enemy , true ) ;
33713: LD_EXP 176
33717: PPUSH
33718: LD_EXP 180
33722: PPUSH
33723: LD_INT 2
33725: PPUSH
33726: LD_INT 1
33728: PPUSH
33729: CALL_OW 80
// end ; end ;
33733: GO 33736
33735: POP
// DialogueOFF ;
33736: CALL_OW 7
// if GetSide ( Friend ) = arabians then
33740: LD_EXP 21
33744: PPUSH
33745: CALL_OW 255
33749: PUSH
33750: LD_EXP 180
33754: EQUAL
33755: IFFALSE 33802
// begin ComMoveXY ( Friend , 4 , 3 ) ;
33757: LD_EXP 21
33761: PPUSH
33762: LD_INT 4
33764: PPUSH
33765: LD_INT 3
33767: PPUSH
33768: CALL_OW 111
// AddComHold ( Friend ) ;
33772: LD_EXP 21
33776: PPUSH
33777: CALL_OW 200
// WaitTask ( Friend , 1 ) ;
33781: LD_EXP 21
33785: PPUSH
33786: LD_INT 1
33788: PPUSH
33789: CALL 17892 0 2
// DestroyUnit ( Friend ) ;
33793: LD_EXP 21
33797: PPUSH
33798: CALL_OW 65
// end ; end ;
33802: LD_VAR 0 1
33806: RET
// export function ArabianPersonIsDead ; var unit_lives , Un , Unit_with_max_lives , X , Y , dir , cl , InUn , Units_to_stop , Mech_in_fact , ar_units ; begin
33807: LD_INT 0
33809: PPUSH
33810: PPUSH
33811: PPUSH
33812: PPUSH
33813: PPUSH
33814: PPUSH
33815: PPUSH
33816: PPUSH
33817: PPUSH
33818: PPUSH
33819: PPUSH
33820: PPUSH
// ar_units = FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_human ] , [ f_alive ] , f_not , [ f_nation , nation_nature ] ] ) diff [ Kozlov , Friend , Kurt ] ;
33821: LD_ADDR_VAR 0 12
33825: PUSH
33826: LD_INT 22
33828: PUSH
33829: LD_EXP 180
33833: PUSH
33834: EMPTY
33835: LIST
33836: LIST
33837: PUSH
33838: LD_INT 21
33840: PUSH
33841: LD_INT 1
33843: PUSH
33844: EMPTY
33845: LIST
33846: LIST
33847: PUSH
33848: LD_INT 51
33850: PUSH
33851: EMPTY
33852: LIST
33853: PUSH
33854: LD_INT 3
33856: PUSH
33857: LD_INT 23
33859: PUSH
33860: LD_INT 0
33862: PUSH
33863: EMPTY
33864: LIST
33865: LIST
33866: PUSH
33867: EMPTY
33868: LIST
33869: LIST
33870: LIST
33871: LIST
33872: LIST
33873: PPUSH
33874: CALL_OW 69
33878: PUSH
33879: LD_EXP 22
33883: PUSH
33884: LD_EXP 21
33888: PUSH
33889: LD_EXP 13
33893: PUSH
33894: EMPTY
33895: LIST
33896: LIST
33897: LIST
33898: DIFF
33899: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_human ] , [ f_alive ] ] ) = 0 and not ( Friend_has_come ) then
33900: LD_INT 22
33902: PUSH
33903: LD_EXP 180
33907: PUSH
33908: EMPTY
33909: LIST
33910: LIST
33911: PUSH
33912: LD_INT 21
33914: PUSH
33915: LD_INT 1
33917: PUSH
33918: EMPTY
33919: LIST
33920: LIST
33921: PUSH
33922: LD_INT 51
33924: PUSH
33925: EMPTY
33926: LIST
33927: PUSH
33928: EMPTY
33929: LIST
33930: LIST
33931: LIST
33932: PPUSH
33933: CALL_OW 69
33937: PUSH
33938: LD_INT 0
33940: EQUAL
33941: PUSH
33942: LD_EXP 226
33946: NOT
33947: AND
33948: IFFALSE 33954
// FriendComing ;
33950: CALL 33060 0 0
// if ar_units = 8 then
33954: LD_VAR 0 12
33958: PUSH
33959: LD_INT 8
33961: EQUAL
33962: IFFALSE 34093
// begin Mech_in_fact = UnitsInside ( ArFact ) ;
33964: LD_ADDR_VAR 0 11
33968: PUSH
33969: LD_INT 117
33971: PPUSH
33972: CALL_OW 313
33976: ST_TO_ADDR
// ComExitBuilding ( Mech_in_fact ) ;
33977: LD_VAR 0 11
33981: PPUSH
33982: CALL_OW 122
// AddMcUnits ( Arabian_def_id , Mech_in_fact ) ;
33986: LD_EXP 235
33990: PPUSH
33991: LD_VAR 0 11
33995: PPUSH
33996: CALL_OW 390
// Wait ( 0 0$2 ) ;
34000: LD_INT 70
34002: PPUSH
34003: CALL_OW 67
// SetLives ( UnitFilter ( [ GetUnitNumber ( 89 , 21 ) , GetUnitNumber ( 93 , 21 ) , GetUnitNumber ( 89 , 18 ) , GetUnitNumber ( 92 , 24 ) , GetUnitNumber ( 44 , 3 ) , ] , [ f_side , arabians ] ) , 0 ) ;
34007: LD_INT 89
34009: PPUSH
34010: LD_INT 21
34012: PPUSH
34013: CALL_OW 438
34017: PUSH
34018: LD_INT 93
34020: PPUSH
34021: LD_INT 21
34023: PPUSH
34024: CALL_OW 438
34028: PUSH
34029: LD_INT 89
34031: PPUSH
34032: LD_INT 18
34034: PPUSH
34035: CALL_OW 438
34039: PUSH
34040: LD_INT 92
34042: PPUSH
34043: LD_INT 24
34045: PPUSH
34046: CALL_OW 438
34050: PUSH
34051: LD_INT 44
34053: PPUSH
34054: LD_INT 3
34056: PPUSH
34057: CALL_OW 438
34061: PUSH
34062: EMPTY
34063: LIST
34064: LIST
34065: LIST
34066: LIST
34067: LIST
34068: PPUSH
34069: LD_INT 22
34071: PUSH
34072: LD_EXP 180
34076: PUSH
34077: EMPTY
34078: LIST
34079: LIST
34080: PPUSH
34081: CALL_OW 72
34085: PPUSH
34086: LD_INT 0
34088: PPUSH
34089: CALL_OW 234
// end ; if ar_units = 4 then
34093: LD_VAR 0 12
34097: PUSH
34098: LD_INT 4
34100: EQUAL
34101: IFFALSE 35155
// begin SetAttitude ( arabians , russians , att_friend , true ) ;
34103: LD_EXP 180
34107: PPUSH
34108: LD_EXP 178
34112: PPUSH
34113: LD_INT 1
34115: PPUSH
34116: LD_INT 1
34118: PPUSH
34119: CALL_OW 80
// Units_to_stop = FilterAllUnits ( [ [ f_side , americans ] , [ f_side , arabians ] , [ f_ok ] ] ) ;
34123: LD_ADDR_VAR 0 10
34127: PUSH
34128: LD_INT 22
34130: PUSH
34131: LD_EXP 176
34135: PUSH
34136: EMPTY
34137: LIST
34138: LIST
34139: PUSH
34140: LD_INT 22
34142: PUSH
34143: LD_EXP 180
34147: PUSH
34148: EMPTY
34149: LIST
34150: LIST
34151: PUSH
34152: LD_INT 50
34154: PUSH
34155: EMPTY
34156: LIST
34157: PUSH
34158: EMPTY
34159: LIST
34160: LIST
34161: LIST
34162: PPUSH
34163: CALL_OW 69
34167: ST_TO_ADDR
// ComStop ( Units_to_stop ) ;
34168: LD_VAR 0 10
34172: PPUSH
34173: CALL_OW 141
// SetLives ( [ GetUnitNumber ( 78 , 12 ) , Kozlov ] ^ UnitFilter ( [ GetUnitNumber ( 91 , 3 ) , GetUnitNumber ( 93 , 7 ) ] , [ f_side , arabians ] ) , 0 ) ;
34177: LD_INT 78
34179: PPUSH
34180: LD_INT 12
34182: PPUSH
34183: CALL_OW 438
34187: PUSH
34188: LD_EXP 22
34192: PUSH
34193: EMPTY
34194: LIST
34195: LIST
34196: PUSH
34197: LD_INT 91
34199: PPUSH
34200: LD_INT 3
34202: PPUSH
34203: CALL_OW 438
34207: PUSH
34208: LD_INT 93
34210: PPUSH
34211: LD_INT 7
34213: PPUSH
34214: CALL_OW 438
34218: PUSH
34219: EMPTY
34220: LIST
34221: LIST
34222: PPUSH
34223: LD_INT 22
34225: PUSH
34226: LD_EXP 180
34230: PUSH
34231: EMPTY
34232: LIST
34233: LIST
34234: PPUSH
34235: CALL_OW 72
34239: ADD
34240: PPUSH
34241: LD_INT 0
34243: PPUSH
34244: CALL_OW 234
// SetResourceType ( GetBase ( ArDep1 ) , mat_cans , 20 ) ;
34248: LD_INT 122
34250: PPUSH
34251: CALL_OW 274
34255: PPUSH
34256: LD_INT 1
34258: PPUSH
34259: LD_INT 20
34261: PPUSH
34262: CALL_OW 277
// SetResourceType ( GetBase ( ArDep1 ) , mat_siberit , 10 ) ;
34266: LD_INT 122
34268: PPUSH
34269: CALL_OW 274
34273: PPUSH
34274: LD_INT 3
34276: PPUSH
34277: LD_INT 10
34279: PPUSH
34280: CALL_OW 277
// SetResourceType ( GetBase ( ArDep2 ) , mat_cans , 15 ) ;
34284: LD_INT 99
34286: PPUSH
34287: CALL_OW 274
34291: PPUSH
34292: LD_INT 1
34294: PPUSH
34295: LD_INT 15
34297: PPUSH
34298: CALL_OW 277
// SetResourceType ( GetBase ( ArDep2 ) , mat_siberit , 15 ) ;
34302: LD_INT 99
34304: PPUSH
34305: CALL_OW 274
34309: PPUSH
34310: LD_INT 3
34312: PPUSH
34313: LD_INT 15
34315: PPUSH
34316: CALL_OW 277
// Wait ( 1 ) ;
34320: LD_INT 1
34322: PPUSH
34323: CALL_OW 67
// unit_lives = GetLives ( ar_units [ 1 ] ) ;
34327: LD_ADDR_VAR 0 2
34331: PUSH
34332: LD_VAR 0 12
34336: PUSH
34337: LD_INT 1
34339: ARRAY
34340: PPUSH
34341: CALL_OW 256
34345: ST_TO_ADDR
// Unit_with_max_lives = ar_units [ 1 ] ;
34346: LD_ADDR_VAR 0 4
34350: PUSH
34351: LD_VAR 0 12
34355: PUSH
34356: LD_INT 1
34358: ARRAY
34359: ST_TO_ADDR
// for Un in ar_units do
34360: LD_ADDR_VAR 0 3
34364: PUSH
34365: LD_VAR 0 12
34369: PUSH
34370: FOR_IN
34371: IFFALSE 34417
// if GetLives ( Un ) > unit_lives then
34373: LD_VAR 0 3
34377: PPUSH
34378: CALL_OW 256
34382: PUSH
34383: LD_VAR 0 2
34387: GREATER
34388: IFFALSE 34415
// begin Unit_with_max_lives = Un ;
34390: LD_ADDR_VAR 0 4
34394: PUSH
34395: LD_VAR 0 3
34399: ST_TO_ADDR
// unit_lives = GetLives ( Un ) ;
34400: LD_ADDR_VAR 0 2
34404: PUSH
34405: LD_VAR 0 3
34409: PPUSH
34410: CALL_OW 256
34414: ST_TO_ADDR
// end ;
34415: GO 34370
34417: POP
34418: POP
// X = GetX ( Unit_with_max_lives ) ;
34419: LD_ADDR_VAR 0 5
34423: PUSH
34424: LD_VAR 0 4
34428: PPUSH
34429: CALL_OW 250
34433: ST_TO_ADDR
// Y = GetY ( Unit_with_max_lives ) ;
34434: LD_ADDR_VAR 0 6
34438: PUSH
34439: LD_VAR 0 4
34443: PPUSH
34444: CALL_OW 251
34448: ST_TO_ADDR
// dir = GetDir ( Unit_with_max_lives ) ;
34449: LD_ADDR_VAR 0 7
34453: PUSH
34454: LD_VAR 0 4
34458: PPUSH
34459: CALL_OW 254
34463: ST_TO_ADDR
// cl = GetClass ( Unit_with_max_lives ) ;
34464: LD_ADDR_VAR 0 8
34468: PUSH
34469: LD_VAR 0 4
34473: PPUSH
34474: CALL_OW 257
34478: ST_TO_ADDR
// if IsInUnit ( Unit_with_max_lives ) = 0 then
34479: LD_VAR 0 4
34483: PPUSH
34484: CALL_OW 310
34488: PUSH
34489: LD_INT 0
34491: EQUAL
34492: IFFALSE 34569
// begin DestroyUnit ( Unit_with_max_lives ) ;
34494: LD_VAR 0 4
34498: PPUSH
34499: CALL_OW 65
// SetLives ( Kurt , unit_lives ) ;
34503: LD_EXP 13
34507: PPUSH
34508: LD_VAR 0 2
34512: PPUSH
34513: CALL_OW 234
// SetClass ( Kurt , cl ) ;
34517: LD_EXP 13
34521: PPUSH
34522: LD_VAR 0 8
34526: PPUSH
34527: CALL_OW 336
// SetDir ( Kurt , dir ) ;
34531: LD_EXP 13
34535: PPUSH
34536: LD_VAR 0 7
34540: PPUSH
34541: CALL_OW 233
// PlaceUnitXY ( Kurt , X , Y , false ) ;
34545: LD_EXP 13
34549: PPUSH
34550: LD_VAR 0 5
34554: PPUSH
34555: LD_VAR 0 6
34559: PPUSH
34560: LD_INT 0
34562: PPUSH
34563: CALL_OW 48
// end else
34567: GO 34635
// begin InUn = IsInUnit ( Unit_with_max_lives ) ;
34569: LD_ADDR_VAR 0 9
34573: PUSH
34574: LD_VAR 0 4
34578: PPUSH
34579: CALL_OW 310
34583: ST_TO_ADDR
// DestroyUnit ( Unit_with_max_lives ) ;
34584: LD_VAR 0 4
34588: PPUSH
34589: CALL_OW 65
// SetLives ( Kurt , unit_lives ) ;
34593: LD_EXP 13
34597: PPUSH
34598: LD_VAR 0 2
34602: PPUSH
34603: CALL_OW 234
// SetClass ( Kurt , cl ) ;
34607: LD_EXP 13
34611: PPUSH
34612: LD_VAR 0 8
34616: PPUSH
34617: CALL_OW 336
// PlaceHumanInUnit ( Kurt , InUn ) ;
34621: LD_EXP 13
34625: PPUSH
34626: LD_VAR 0 9
34630: PPUSH
34631: CALL_OW 52
// end ; DialogueON ;
34635: CALL_OW 6
// Say ( JMM , D13-JMM-1 ) ;
34639: LD_EXP 1
34643: PPUSH
34644: LD_STRING D13-JMM-1
34646: PPUSH
34647: CALL_OW 88
// Say ( Kurt , D13-Kurt-1 ) ;
34651: LD_EXP 13
34655: PPUSH
34656: LD_STRING D13-Kurt-1
34658: PPUSH
34659: CALL_OW 88
// Say ( JMM , D13-JMM-2 ) ;
34663: LD_EXP 1
34667: PPUSH
34668: LD_STRING D13-JMM-2
34670: PPUSH
34671: CALL_OW 88
// if legion_cheated then
34675: LD_EXP 32
34679: IFFALSE 34715
// begin Say ( Kurt , D13-Kurt-2 ) ;
34681: LD_EXP 13
34685: PPUSH
34686: LD_STRING D13-Kurt-2
34688: PPUSH
34689: CALL_OW 88
// SetAttitude ( arabians , russians , att_enemy , true ) ;
34693: LD_EXP 180
34697: PPUSH
34698: LD_EXP 178
34702: PPUSH
34703: LD_INT 2
34705: PPUSH
34706: LD_INT 1
34708: PPUSH
34709: CALL_OW 80
// end else
34713: GO 35151
// begin if Really_Kurt then
34715: LD_EXP 205
34719: IFFALSE 34735
// Say ( Kurt , D13-Kurt-2a ) else
34721: LD_EXP 13
34725: PPUSH
34726: LD_STRING D13-Kurt-2a
34728: PPUSH
34729: CALL_OW 88
34733: GO 34747
// Say ( Kurt , D13-Kurt-2b ) ;
34735: LD_EXP 13
34739: PPUSH
34740: LD_STRING D13-Kurt-2b
34742: PPUSH
34743: CALL_OW 88
// Say ( JMM , D13-JMM-3 ) ;
34747: LD_EXP 1
34751: PPUSH
34752: LD_STRING D13-JMM-3
34754: PPUSH
34755: CALL_OW 88
// Say ( Kurt , D13-Kurt-3 ) ;
34759: LD_EXP 13
34763: PPUSH
34764: LD_STRING D13-Kurt-3
34766: PPUSH
34767: CALL_OW 88
// Say ( JMM , D13-JMM-4 ) ;
34771: LD_EXP 1
34775: PPUSH
34776: LD_STRING D13-JMM-4
34778: PPUSH
34779: CALL_OW 88
// ar_units = Kurt ^ ( FilterAllUnits ( [ [ f_side , arabians ] , [ f_type , unit_human ] , [ f_alive ] ] ) diff Kozlov ) ;
34783: LD_ADDR_VAR 0 12
34787: PUSH
34788: LD_EXP 13
34792: PUSH
34793: LD_INT 22
34795: PUSH
34796: LD_EXP 180
34800: PUSH
34801: EMPTY
34802: LIST
34803: LIST
34804: PUSH
34805: LD_INT 21
34807: PUSH
34808: LD_INT 1
34810: PUSH
34811: EMPTY
34812: LIST
34813: LIST
34814: PUSH
34815: LD_INT 51
34817: PUSH
34818: EMPTY
34819: LIST
34820: PUSH
34821: EMPTY
34822: LIST
34823: LIST
34824: LIST
34825: PPUSH
34826: CALL_OW 69
34830: PUSH
34831: LD_EXP 22
34835: DIFF
34836: ADD
34837: ST_TO_ADDR
// for Un in ar_units do
34838: LD_ADDR_VAR 0 3
34842: PUSH
34843: LD_VAR 0 12
34847: PUSH
34848: FOR_IN
34849: IFFALSE 35031
// begin if GetLives ( Un ) < 300 then
34851: LD_VAR 0 3
34855: PPUSH
34856: CALL_OW 256
34860: PUSH
34861: LD_INT 300
34863: LESS
34864: IFFALSE 34878
// SetLives ( Un , 300 ) ;
34866: LD_VAR 0 3
34870: PPUSH
34871: LD_INT 300
34873: PPUSH
34874: CALL_OW 234
// SetSide ( Un , americans ) ;
34878: LD_VAR 0 3
34882: PPUSH
34883: LD_EXP 176
34887: PPUSH
34888: CALL_OW 235
// if GetType ( IsInUnit ( Un ) ) = unit_vehicle then
34892: LD_VAR 0 3
34896: PPUSH
34897: CALL_OW 310
34901: PPUSH
34902: CALL_OW 247
34906: PUSH
34907: LD_INT 2
34909: EQUAL
34910: IFFALSE 34923
// ComExitVehicle ( Un ) else
34912: LD_VAR 0 3
34916: PPUSH
34917: CALL_OW 121
34921: GO 34952
// if GetType ( IsInUnit ( Un ) ) = unit_building then
34923: LD_VAR 0 3
34927: PPUSH
34928: CALL_OW 310
34932: PPUSH
34933: CALL_OW 247
34937: PUSH
34938: LD_INT 3
34940: EQUAL
34941: IFFALSE 34952
// ComExitBuilding ( Un ) ;
34943: LD_VAR 0 3
34947: PPUSH
34948: CALL_OW 122
// if not ( ( GetClass ( Un ) = class_apeman ) or ( GetClass ( Un ) = class_apeman_engineer ) or ( GetClass ( Un ) = class_apeman_kamikaze ) or ( GetClass ( Un ) = class_apeman_soldier ) ) then
34952: LD_VAR 0 3
34956: PPUSH
34957: CALL_OW 257
34961: PUSH
34962: LD_INT 12
34964: EQUAL
34965: PUSH
34966: LD_VAR 0 3
34970: PPUSH
34971: CALL_OW 257
34975: PUSH
34976: LD_INT 16
34978: EQUAL
34979: OR
34980: PUSH
34981: LD_VAR 0 3
34985: PPUSH
34986: CALL_OW 257
34990: PUSH
34991: LD_INT 17
34993: EQUAL
34994: OR
34995: PUSH
34996: LD_VAR 0 3
35000: PPUSH
35001: CALL_OW 257
35005: PUSH
35006: LD_INT 15
35008: EQUAL
35009: OR
35010: NOT
35011: IFFALSE 35029
// All_americans = All_americans ^ Un ;
35013: LD_ADDR_EXP 61
35017: PUSH
35018: LD_EXP 61
35022: PUSH
35023: LD_VAR 0 3
35027: ADD
35028: ST_TO_ADDR
// end ;
35029: GO 34848
35031: POP
35032: POP
// for Un in Arabian_buildings do
35033: LD_ADDR_VAR 0 3
35037: PUSH
35038: LD_EXP 88
35042: PUSH
35043: FOR_IN
35044: IFFALSE 35109
// begin if IsOk ( GetUnitNumber ( Un [ 2 ] , Un [ 3 ] ) ) then
35046: LD_VAR 0 3
35050: PUSH
35051: LD_INT 2
35053: ARRAY
35054: PPUSH
35055: LD_VAR 0 3
35059: PUSH
35060: LD_INT 3
35062: ARRAY
35063: PPUSH
35064: CALL_OW 438
35068: PPUSH
35069: CALL_OW 302
35073: IFFALSE 35107
// SetSide ( GetUnitNumber ( Un [ 2 ] , Un [ 3 ] ) , americans ) ;
35075: LD_VAR 0 3
35079: PUSH
35080: LD_INT 2
35082: ARRAY
35083: PPUSH
35084: LD_VAR 0 3
35088: PUSH
35089: LD_INT 3
35091: ARRAY
35092: PPUSH
35093: CALL_OW 438
35097: PPUSH
35098: LD_EXP 176
35102: PPUSH
35103: CALL_OW 235
// end ;
35107: GO 35043
35109: POP
35110: POP
// DialogueOFF ;
35111: CALL_OW 7
// SA_OnLegionJoin ;
35115: CALL 56216 0 0
// Hint ( Legion ) ;
35119: LD_STRING Legion
35121: PPUSH
35122: CALL_OW 339
// ChangeMissionObjectives ( MlegionOut ) ;
35126: LD_STRING MlegionOut
35128: PPUSH
35129: CALL_OW 337
// Wait ( 0 0$5 ) ;
35133: LD_INT 175
35135: PPUSH
35136: CALL_OW 67
// if not ( Friend_has_come ) then
35140: LD_EXP 226
35144: NOT
35145: IFFALSE 35151
// FriendComing ;
35147: CALL 33060 0 0
// end ; DialogueOFF ;
35151: CALL_OW 7
// end ; end ;
35155: LD_VAR 0 1
35159: RET
// export function ArVehicleConstructed ( veh ) ; begin
35160: LD_INT 0
35162: PPUSH
// if ( GetWeapon ( veh ) = ru_siberium_rocket ) then
35163: LD_VAR 0 1
35167: PPUSH
35168: CALL_OW 264
35172: PUSH
35173: LD_INT 48
35175: EQUAL
35176: IFFALSE 35334
// begin Wait ( 0 0$2 ) ;
35178: LD_INT 70
35180: PPUSH
35181: CALL_OW 67
// ComExitVehicle ( Kozlov ) ;
35185: LD_EXP 22
35189: PPUSH
35190: CALL_OW 121
// Wait ( 2 ) ;
35194: LD_INT 2
35196: PPUSH
35197: CALL_OW 67
// ComEnterUnit ( Kozlov , GetUnitNumber ( 78 , 12 ) ) ;
35201: LD_EXP 22
35205: PPUSH
35206: LD_INT 78
35208: PPUSH
35209: LD_INT 12
35211: PPUSH
35212: CALL_OW 438
35216: PPUSH
35217: CALL_OW 120
// AddComConstruct ( GetUnitNumber ( 78 , 12 ) , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) ;
35221: LD_INT 78
35223: PPUSH
35224: LD_INT 12
35226: PPUSH
35227: CALL_OW 438
35231: PPUSH
35232: LD_INT 24
35234: PPUSH
35235: LD_INT 3
35237: PPUSH
35238: LD_INT 3
35240: PPUSH
35241: LD_INT 48
35243: PPUSH
35244: CALL_OW 185
// case Number_of_Arabian_rocket of 1 :
35248: LD_EXP 199
35252: PUSH
35253: LD_INT 1
35255: DOUBLE
35256: EQUAL
35257: IFTRUE 35261
35259: GO 35304
35261: POP
// begin Construction_of_Arabian_rocket = false ;
35262: LD_ADDR_EXP 198
35266: PUSH
35267: LD_INT 0
35269: ST_TO_ADDR
// Number_of_Arabian_rocket = Number_of_Arabian_rocket + 1 ;
35270: LD_ADDR_EXP 199
35274: PUSH
35275: LD_EXP 199
35279: PUSH
35280: LD_INT 1
35282: PLUS
35283: ST_TO_ADDR
// SiberiteRocketAttack ( veh , 46 , 64 , 1 ) ;
35284: LD_VAR 0 1
35288: PPUSH
35289: LD_INT 46
35291: PPUSH
35292: LD_INT 64
35294: PPUSH
35295: LD_INT 1
35297: PPUSH
35298: CALL 32968 0 4
// end ; 2 :
35302: GO 35334
35304: LD_INT 2
35306: DOUBLE
35307: EQUAL
35308: IFTRUE 35312
35310: GO 35333
35312: POP
// SiberiteRocketAttack ( veh , 155 , 60 , 2 ) ; end ;
35313: LD_VAR 0 1
35317: PPUSH
35318: LD_INT 155
35320: PPUSH
35321: LD_INT 60
35323: PPUSH
35324: LD_INT 2
35326: PPUSH
35327: CALL 32968 0 4
35331: GO 35334
35333: POP
// end ; end ; end_of_file
35334: LD_VAR 0 2
35338: RET
// function PrepareAndCreateVehicleR1P ( number , chassis , engine , control , weapon ) ; var veh , i , person ; begin
35339: LD_INT 0
35341: PPUSH
35342: PPUSH
35343: PPUSH
35344: PPUSH
// uc_side = russians1 ;
35345: LD_ADDR_OWVAR 20
35349: PUSH
35350: LD_EXP 179
35354: ST_TO_ADDR
// uc_direction = 0 ;
35355: LD_ADDR_OWVAR 24
35359: PUSH
35360: LD_INT 0
35362: ST_TO_ADDR
// uc_nation = nation_russian ;
35363: LD_ADDR_OWVAR 21
35367: PUSH
35368: LD_INT 3
35370: ST_TO_ADDR
// for i = 1 to number do
35371: LD_ADDR_VAR 0 8
35375: PUSH
35376: DOUBLE
35377: LD_INT 1
35379: DEC
35380: ST_TO_ADDR
35381: LD_VAR 0 1
35385: PUSH
35386: FOR_TO
35387: IFFALSE 35523
// begin vc_chassis = chassis ;
35389: LD_ADDR_OWVAR 37
35393: PUSH
35394: LD_VAR 0 2
35398: ST_TO_ADDR
// vc_control = control ;
35399: LD_ADDR_OWVAR 38
35403: PUSH
35404: LD_VAR 0 4
35408: ST_TO_ADDR
// vc_engine = engine ;
35409: LD_ADDR_OWVAR 39
35413: PUSH
35414: LD_VAR 0 3
35418: ST_TO_ADDR
// vc_weapon = weapon ;
35419: LD_ADDR_OWVAR 40
35423: PUSH
35424: LD_VAR 0 5
35428: ST_TO_ADDR
// veh = CreateVehicle ;
35429: LD_ADDR_VAR 0 7
35433: PUSH
35434: CALL_OW 45
35438: ST_TO_ADDR
// New_Patrol_Group = New_Patrol_Group ^ veh ;
35439: LD_ADDR_EXP 122
35443: PUSH
35444: LD_EXP 122
35448: PUSH
35449: LD_VAR 0 7
35453: ADD
35454: ST_TO_ADDR
// if control = control_manual then
35455: LD_VAR 0 4
35459: PUSH
35460: LD_INT 1
35462: EQUAL
35463: IFFALSE 35521
// begin PrepareMechanic ( 0 , 7 + Difficulty ) ;
35465: LD_INT 0
35467: PPUSH
35468: LD_INT 7
35470: PUSH
35471: LD_OWVAR 67
35475: PLUS
35476: PPUSH
35477: CALL_OW 383
// Person = CreateHuman ;
35481: LD_ADDR_VAR 0 9
35485: PUSH
35486: CALL_OW 44
35490: ST_TO_ADDR
// PlaceHumanInUnit ( Person , veh ) ;
35491: LD_VAR 0 9
35495: PPUSH
35496: LD_VAR 0 7
35500: PPUSH
35501: CALL_OW 52
// New_Patrol_Group = New_Patrol_Group ^ Person ;
35505: LD_ADDR_EXP 122
35509: PUSH
35510: LD_EXP 122
35514: PUSH
35515: LD_VAR 0 9
35519: ADD
35520: ST_TO_ADDR
// end ; end ;
35521: GO 35386
35523: POP
35524: POP
// end ;
35525: LD_VAR 0 6
35529: RET
// function PrepareAndCreateVehicleR1 ( number , chassis , engine , control , weapon ) ; var veh , i , person ; begin
35530: LD_INT 0
35532: PPUSH
35533: PPUSH
35534: PPUSH
35535: PPUSH
// uc_side = russians1 ;
35536: LD_ADDR_OWVAR 20
35540: PUSH
35541: LD_EXP 179
35545: ST_TO_ADDR
// uc_direction = 0 ;
35546: LD_ADDR_OWVAR 24
35550: PUSH
35551: LD_INT 0
35553: ST_TO_ADDR
// uc_nation = nation_russian ;
35554: LD_ADDR_OWVAR 21
35558: PUSH
35559: LD_INT 3
35561: ST_TO_ADDR
// for i = 1 to number do
35562: LD_ADDR_VAR 0 8
35566: PUSH
35567: DOUBLE
35568: LD_INT 1
35570: DEC
35571: ST_TO_ADDR
35572: LD_VAR 0 1
35576: PUSH
35577: FOR_TO
35578: IFFALSE 35714
// begin vc_chassis = chassis ;
35580: LD_ADDR_OWVAR 37
35584: PUSH
35585: LD_VAR 0 2
35589: ST_TO_ADDR
// vc_control = control ;
35590: LD_ADDR_OWVAR 38
35594: PUSH
35595: LD_VAR 0 4
35599: ST_TO_ADDR
// vc_engine = engine ;
35600: LD_ADDR_OWVAR 39
35604: PUSH
35605: LD_VAR 0 3
35609: ST_TO_ADDR
// vc_weapon = weapon ;
35610: LD_ADDR_OWVAR 40
35614: PUSH
35615: LD_VAR 0 5
35619: ST_TO_ADDR
// veh = CreateVehicle ;
35620: LD_ADDR_VAR 0 7
35624: PUSH
35625: CALL_OW 45
35629: ST_TO_ADDR
// R1_Attack_Group = R1_Attack_Group ^ veh ;
35630: LD_ADDR_EXP 118
35634: PUSH
35635: LD_EXP 118
35639: PUSH
35640: LD_VAR 0 7
35644: ADD
35645: ST_TO_ADDR
// if control = control_manual then
35646: LD_VAR 0 4
35650: PUSH
35651: LD_INT 1
35653: EQUAL
35654: IFFALSE 35712
// begin PrepareMechanic ( 0 , 7 + Difficulty ) ;
35656: LD_INT 0
35658: PPUSH
35659: LD_INT 7
35661: PUSH
35662: LD_OWVAR 67
35666: PLUS
35667: PPUSH
35668: CALL_OW 383
// Person = CreateHuman ;
35672: LD_ADDR_VAR 0 9
35676: PUSH
35677: CALL_OW 44
35681: ST_TO_ADDR
// PlaceHumanInUnit ( Person , veh ) ;
35682: LD_VAR 0 9
35686: PPUSH
35687: LD_VAR 0 7
35691: PPUSH
35692: CALL_OW 52
// R1_Attack_Group = R1_Attack_Group ^ Person ;
35696: LD_ADDR_EXP 118
35700: PUSH
35701: LD_EXP 118
35705: PUSH
35706: LD_VAR 0 9
35710: ADD
35711: ST_TO_ADDR
// end ; end ;
35712: GO 35577
35714: POP
35715: POP
// end ;
35716: LD_VAR 0 6
35720: RET
// function GetRandomVehicle ( time ) ; var Rand_Veh , Selected , Credits , Probab , engine ; begin
35721: LD_INT 0
35723: PPUSH
35724: PPUSH
35725: PPUSH
35726: PPUSH
35727: PPUSH
35728: PPUSH
// Selected = false ;
35729: LD_ADDR_VAR 0 4
35733: PUSH
35734: LD_INT 0
35736: ST_TO_ADDR
// if time <= 2 then
35737: LD_VAR 0 1
35741: PUSH
35742: LD_INT 2
35744: LESSEQUAL
35745: IFFALSE 35757
// engine = engine_combustion else
35747: LD_ADDR_VAR 0 7
35751: PUSH
35752: LD_INT 1
35754: ST_TO_ADDR
35755: GO 35765
// engine = engine_siberite ;
35757: LD_ADDR_VAR 0 7
35761: PUSH
35762: LD_INT 3
35764: ST_TO_ADDR
// repeat Probab = Rand ( 1 , 100 ) ;
35765: LD_ADDR_VAR 0 6
35769: PUSH
35770: LD_INT 1
35772: PPUSH
35773: LD_INT 100
35775: PPUSH
35776: CALL_OW 12
35780: ST_TO_ADDR
// case time of 1 :
35781: LD_VAR 0 1
35785: PUSH
35786: LD_INT 1
35788: DOUBLE
35789: EQUAL
35790: IFTRUE 35794
35792: GO 35832
35794: POP
// Rand_Veh = [ 1 , 2 , 3 , 4 ] [ Rand ( 1 , 4 ) ] ; 2 :
35795: LD_ADDR_VAR 0 3
35799: PUSH
35800: LD_INT 1
35802: PUSH
35803: LD_INT 2
35805: PUSH
35806: LD_INT 3
35808: PUSH
35809: LD_INT 4
35811: PUSH
35812: EMPTY
35813: LIST
35814: LIST
35815: LIST
35816: LIST
35817: PUSH
35818: LD_INT 1
35820: PPUSH
35821: LD_INT 4
35823: PPUSH
35824: CALL_OW 12
35828: ARRAY
35829: ST_TO_ADDR
35830: GO 36107
35832: LD_INT 2
35834: DOUBLE
35835: EQUAL
35836: IFTRUE 35840
35838: GO 35886
35840: POP
// Rand_Veh = [ 1 , 2 , 3 , 4 , 5 , 6 ] [ Rand ( 1 , 6 ) ] ; 3 :
35841: LD_ADDR_VAR 0 3
35845: PUSH
35846: LD_INT 1
35848: PUSH
35849: LD_INT 2
35851: PUSH
35852: LD_INT 3
35854: PUSH
35855: LD_INT 4
35857: PUSH
35858: LD_INT 5
35860: PUSH
35861: LD_INT 6
35863: PUSH
35864: EMPTY
35865: LIST
35866: LIST
35867: LIST
35868: LIST
35869: LIST
35870: LIST
35871: PUSH
35872: LD_INT 1
35874: PPUSH
35875: LD_INT 6
35877: PPUSH
35878: CALL_OW 12
35882: ARRAY
35883: ST_TO_ADDR
35884: GO 36107
35886: LD_INT 3
35888: DOUBLE
35889: EQUAL
35890: IFTRUE 35894
35892: GO 35936
35894: POP
// Rand_Veh = [ 3 , 4 , 5 , 6 , 7 ] [ Rand ( 1 , 5 ) ] ; 4 :
35895: LD_ADDR_VAR 0 3
35899: PUSH
35900: LD_INT 3
35902: PUSH
35903: LD_INT 4
35905: PUSH
35906: LD_INT 5
35908: PUSH
35909: LD_INT 6
35911: PUSH
35912: LD_INT 7
35914: PUSH
35915: EMPTY
35916: LIST
35917: LIST
35918: LIST
35919: LIST
35920: LIST
35921: PUSH
35922: LD_INT 1
35924: PPUSH
35925: LD_INT 5
35927: PPUSH
35928: CALL_OW 12
35932: ARRAY
35933: ST_TO_ADDR
35934: GO 36107
35936: LD_INT 4
35938: DOUBLE
35939: EQUAL
35940: IFTRUE 35944
35942: GO 35990
35944: POP
// Rand_Veh = [ 3 , 4 , 5 , 6 , 7 , 8 ] [ Rand ( 1 , 6 ) ] ; 5 :
35945: LD_ADDR_VAR 0 3
35949: PUSH
35950: LD_INT 3
35952: PUSH
35953: LD_INT 4
35955: PUSH
35956: LD_INT 5
35958: PUSH
35959: LD_INT 6
35961: PUSH
35962: LD_INT 7
35964: PUSH
35965: LD_INT 8
35967: PUSH
35968: EMPTY
35969: LIST
35970: LIST
35971: LIST
35972: LIST
35973: LIST
35974: LIST
35975: PUSH
35976: LD_INT 1
35978: PPUSH
35979: LD_INT 6
35981: PPUSH
35982: CALL_OW 12
35986: ARRAY
35987: ST_TO_ADDR
35988: GO 36107
35990: LD_INT 5
35992: DOUBLE
35993: EQUAL
35994: IFTRUE 35998
35996: GO 36044
35998: POP
// Rand_Veh = [ 4 , 5 , 6 , 7 , 8 , 9 ] [ Rand ( 1 , 6 ) ] ; 6 :
35999: LD_ADDR_VAR 0 3
36003: PUSH
36004: LD_INT 4
36006: PUSH
36007: LD_INT 5
36009: PUSH
36010: LD_INT 6
36012: PUSH
36013: LD_INT 7
36015: PUSH
36016: LD_INT 8
36018: PUSH
36019: LD_INT 9
36021: PUSH
36022: EMPTY
36023: LIST
36024: LIST
36025: LIST
36026: LIST
36027: LIST
36028: LIST
36029: PUSH
36030: LD_INT 1
36032: PPUSH
36033: LD_INT 6
36035: PPUSH
36036: CALL_OW 12
36040: ARRAY
36041: ST_TO_ADDR
36042: GO 36107
36044: LD_INT 6
36046: DOUBLE
36047: EQUAL
36048: IFTRUE 36052
36050: GO 36106
36052: POP
// Rand_Veh = [ 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ] [ Rand ( 1 , 8 ) ] ; end ;
36053: LD_ADDR_VAR 0 3
36057: PUSH
36058: LD_INT 5
36060: PUSH
36061: LD_INT 6
36063: PUSH
36064: LD_INT 7
36066: PUSH
36067: LD_INT 8
36069: PUSH
36070: LD_INT 9
36072: PUSH
36073: LD_INT 10
36075: PUSH
36076: LD_INT 11
36078: PUSH
36079: LD_INT 12
36081: PUSH
36082: EMPTY
36083: LIST
36084: LIST
36085: LIST
36086: LIST
36087: LIST
36088: LIST
36089: LIST
36090: LIST
36091: PUSH
36092: LD_INT 1
36094: PPUSH
36095: LD_INT 8
36097: PPUSH
36098: CALL_OW 12
36102: ARRAY
36103: ST_TO_ADDR
36104: GO 36107
36106: POP
// case Rand_Veh of 1 :
36107: LD_VAR 0 3
36111: PUSH
36112: LD_INT 1
36114: DOUBLE
36115: EQUAL
36116: IFTRUE 36120
36118: GO 36200
36120: POP
// begin if ( time <= 1 and Probab < 60 ) or ( time <= 3 and Probab < 20 ) then
36121: LD_VAR 0 1
36125: PUSH
36126: LD_INT 1
36128: LESSEQUAL
36129: PUSH
36130: LD_VAR 0 6
36134: PUSH
36135: LD_INT 60
36137: LESS
36138: AND
36139: PUSH
36140: LD_VAR 0 1
36144: PUSH
36145: LD_INT 3
36147: LESSEQUAL
36148: PUSH
36149: LD_VAR 0 6
36153: PUSH
36154: LD_INT 20
36156: LESS
36157: AND
36158: OR
36159: IFFALSE 36198
// begin Selected = true ;
36161: LD_ADDR_VAR 0 4
36165: PUSH
36166: LD_INT 1
36168: ST_TO_ADDR
// Credits = 3 ;
36169: LD_ADDR_VAR 0 5
36173: PUSH
36174: LD_INT 3
36176: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine , control_computer , ru_heavy_machine_gun ) ;
36177: LD_INT 1
36179: PPUSH
36180: LD_INT 22
36182: PPUSH
36183: LD_VAR 0 7
36187: PPUSH
36188: LD_INT 3
36190: PPUSH
36191: LD_INT 42
36193: PPUSH
36194: CALL 35530 0 5
// end ; end ; 2 :
36198: GO 36887
36200: LD_INT 2
36202: DOUBLE
36203: EQUAL
36204: IFTRUE 36208
36206: GO 36288
36208: POP
// begin if ( time <= 1 and Probab < 80 ) or ( time <= 3 and Probab < 30 ) then
36209: LD_VAR 0 1
36213: PUSH
36214: LD_INT 1
36216: LESSEQUAL
36217: PUSH
36218: LD_VAR 0 6
36222: PUSH
36223: LD_INT 80
36225: LESS
36226: AND
36227: PUSH
36228: LD_VAR 0 1
36232: PUSH
36233: LD_INT 3
36235: LESSEQUAL
36236: PUSH
36237: LD_VAR 0 6
36241: PUSH
36242: LD_INT 30
36244: LESS
36245: AND
36246: OR
36247: IFFALSE 36286
// begin Selected = true ;
36249: LD_ADDR_VAR 0 4
36253: PUSH
36254: LD_INT 1
36256: ST_TO_ADDR
// Credits = 4 ;
36257: LD_ADDR_VAR 0 5
36261: PUSH
36262: LD_INT 4
36264: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_heavy_machine_gun ) ;
36265: LD_INT 1
36267: PPUSH
36268: LD_INT 24
36270: PPUSH
36271: LD_VAR 0 7
36275: PPUSH
36276: LD_INT 3
36278: PPUSH
36279: LD_INT 42
36281: PPUSH
36282: CALL 35530 0 5
// end ; end ; 4 :
36286: GO 36887
36288: LD_INT 4
36290: DOUBLE
36291: EQUAL
36292: IFTRUE 36296
36294: GO 36396
36296: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 80 ) or ( time > 3 and Probab < 40 ) then
36297: LD_VAR 0 1
36301: PUSH
36302: LD_INT 1
36304: LESSEQUAL
36305: PUSH
36306: LD_VAR 0 6
36310: PUSH
36311: LD_INT 100
36313: LESS
36314: AND
36315: PUSH
36316: LD_VAR 0 1
36320: PUSH
36321: LD_INT 3
36323: LESSEQUAL
36324: PUSH
36325: LD_VAR 0 6
36329: PUSH
36330: LD_INT 80
36332: LESS
36333: AND
36334: OR
36335: PUSH
36336: LD_VAR 0 1
36340: PUSH
36341: LD_INT 3
36343: GREATER
36344: PUSH
36345: LD_VAR 0 6
36349: PUSH
36350: LD_INT 40
36352: LESS
36353: AND
36354: OR
36355: IFFALSE 36394
// begin Selected = true ;
36357: LD_ADDR_VAR 0 4
36361: PUSH
36362: LD_INT 1
36364: ST_TO_ADDR
// Credits = 5 ;
36365: LD_ADDR_VAR 0 5
36369: PUSH
36370: LD_INT 5
36372: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine , control_computer , ru_gatling_gun ) end ;
36373: LD_INT 1
36375: PPUSH
36376: LD_INT 22
36378: PPUSH
36379: LD_VAR 0 7
36383: PPUSH
36384: LD_INT 3
36386: PPUSH
36387: LD_INT 43
36389: PPUSH
36390: CALL 35530 0 5
// end ; 3 :
36394: GO 36887
36396: LD_INT 3
36398: DOUBLE
36399: EQUAL
36400: IFTRUE 36404
36402: GO 36484
36404: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 40 ) then
36405: LD_VAR 0 1
36409: PUSH
36410: LD_INT 1
36412: LESSEQUAL
36413: PUSH
36414: LD_VAR 0 6
36418: PUSH
36419: LD_INT 100
36421: LESS
36422: AND
36423: PUSH
36424: LD_VAR 0 1
36428: PUSH
36429: LD_INT 3
36431: LESSEQUAL
36432: PUSH
36433: LD_VAR 0 6
36437: PUSH
36438: LD_INT 40
36440: LESS
36441: AND
36442: OR
36443: IFFALSE 36482
// begin Selected = true ;
36445: LD_ADDR_VAR 0 4
36449: PUSH
36450: LD_INT 1
36452: ST_TO_ADDR
// Credits = 5 ;
36453: LD_ADDR_VAR 0 5
36457: PUSH
36458: LD_INT 5
36460: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine , control_computer , ru_gun ) end ;
36461: LD_INT 1
36463: PPUSH
36464: LD_INT 22
36466: PPUSH
36467: LD_VAR 0 7
36471: PPUSH
36472: LD_INT 3
36474: PPUSH
36475: LD_INT 44
36477: PPUSH
36478: CALL 35530 0 5
// end ; 5 :
36482: GO 36887
36484: LD_INT 5
36486: DOUBLE
36487: EQUAL
36488: IFTRUE 36492
36490: GO 36532
36492: POP
// begin Selected = true ;
36493: LD_ADDR_VAR 0 4
36497: PUSH
36498: LD_INT 1
36500: ST_TO_ADDR
// Credits = 7 ;
36501: LD_ADDR_VAR 0 5
36505: PUSH
36506: LD_INT 7
36508: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_gatling_gun ) end ; 6 :
36509: LD_INT 1
36511: PPUSH
36512: LD_INT 24
36514: PPUSH
36515: LD_VAR 0 7
36519: PPUSH
36520: LD_INT 3
36522: PPUSH
36523: LD_INT 43
36525: PPUSH
36526: CALL 35530 0 5
36530: GO 36887
36532: LD_INT 6
36534: DOUBLE
36535: EQUAL
36536: IFTRUE 36540
36538: GO 36640
36540: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 60 ) or ( time > 3 and Probab < 20 ) then
36541: LD_VAR 0 1
36545: PUSH
36546: LD_INT 1
36548: LESSEQUAL
36549: PUSH
36550: LD_VAR 0 6
36554: PUSH
36555: LD_INT 100
36557: LESS
36558: AND
36559: PUSH
36560: LD_VAR 0 1
36564: PUSH
36565: LD_INT 3
36567: LESSEQUAL
36568: PUSH
36569: LD_VAR 0 6
36573: PUSH
36574: LD_INT 60
36576: LESS
36577: AND
36578: OR
36579: PUSH
36580: LD_VAR 0 1
36584: PUSH
36585: LD_INT 3
36587: GREATER
36588: PUSH
36589: LD_VAR 0 6
36593: PUSH
36594: LD_INT 20
36596: LESS
36597: AND
36598: OR
36599: IFFALSE 36638
// begin Selected = true ;
36601: LD_ADDR_VAR 0 4
36605: PUSH
36606: LD_INT 1
36608: ST_TO_ADDR
// Credits = 7 ;
36609: LD_ADDR_VAR 0 5
36613: PUSH
36614: LD_INT 7
36616: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_gun ) end ;
36617: LD_INT 1
36619: PPUSH
36620: LD_INT 24
36622: PPUSH
36623: LD_VAR 0 7
36627: PPUSH
36628: LD_INT 3
36630: PPUSH
36631: LD_INT 44
36633: PPUSH
36634: CALL 35530 0 5
// end ; 7 :
36638: GO 36887
36640: LD_INT 7
36642: DOUBLE
36643: EQUAL
36644: IFTRUE 36648
36646: GO 36688
36648: POP
// begin Selected = true ;
36649: LD_ADDR_VAR 0 4
36653: PUSH
36654: LD_INT 1
36656: ST_TO_ADDR
// Credits = 11 ;
36657: LD_ADDR_VAR 0 5
36661: PUSH
36662: LD_INT 11
36664: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_heavy_gun ) ;
36665: LD_INT 1
36667: PPUSH
36668: LD_INT 24
36670: PPUSH
36671: LD_VAR 0 7
36675: PPUSH
36676: LD_INT 3
36678: PPUSH
36679: LD_INT 46
36681: PPUSH
36682: CALL 35530 0 5
// end ; 8 :
36686: GO 36887
36688: LD_INT 8
36690: DOUBLE
36691: EQUAL
36692: IFTRUE 36696
36694: GO 36736
36696: POP
// begin Selected = true ;
36697: LD_ADDR_VAR 0 4
36701: PUSH
36702: LD_INT 1
36704: ST_TO_ADDR
// Credits = 9 ;
36705: LD_ADDR_VAR 0 5
36709: PUSH
36710: LD_INT 9
36712: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine , control_computer , ru_rocket_launcher ) ;
36713: LD_INT 1
36715: PPUSH
36716: LD_INT 22
36718: PPUSH
36719: LD_VAR 0 7
36723: PPUSH
36724: LD_INT 3
36726: PPUSH
36727: LD_INT 45
36729: PPUSH
36730: CALL 35530 0 5
// end ; 9 :
36734: GO 36887
36736: LD_INT 9
36738: DOUBLE
36739: EQUAL
36740: IFTRUE 36744
36742: GO 36784
36744: POP
// begin Selected = true ;
36745: LD_ADDR_VAR 0 4
36749: PUSH
36750: LD_INT 1
36752: ST_TO_ADDR
// Credits = 11 ;
36753: LD_ADDR_VAR 0 5
36757: PUSH
36758: LD_INT 11
36760: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_rocket_launcher ) ;
36761: LD_INT 1
36763: PPUSH
36764: LD_INT 24
36766: PPUSH
36767: LD_VAR 0 7
36771: PPUSH
36772: LD_INT 3
36774: PPUSH
36775: LD_INT 45
36777: PPUSH
36778: CALL 35530 0 5
// end ; 10 , 11 :
36782: GO 36887
36784: LD_INT 10
36786: DOUBLE
36787: EQUAL
36788: IFTRUE 36798
36790: LD_INT 11
36792: DOUBLE
36793: EQUAL
36794: IFTRUE 36798
36796: GO 36838
36798: POP
// begin Selected = true ;
36799: LD_ADDR_VAR 0 4
36803: PUSH
36804: LD_INT 1
36806: ST_TO_ADDR
// Credits = 15 ;
36807: LD_ADDR_VAR 0 5
36811: PUSH
36812: LD_INT 15
36814: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_rocket ) ;
36815: LD_INT 1
36817: PPUSH
36818: LD_INT 24
36820: PPUSH
36821: LD_VAR 0 7
36825: PPUSH
36826: LD_INT 3
36828: PPUSH
36829: LD_INT 47
36831: PPUSH
36832: CALL 35530 0 5
// end ; 12 :
36836: GO 36887
36838: LD_INT 12
36840: DOUBLE
36841: EQUAL
36842: IFTRUE 36846
36844: GO 36886
36846: POP
// begin Selected = true ;
36847: LD_ADDR_VAR 0 4
36851: PUSH
36852: LD_INT 1
36854: ST_TO_ADDR
// Credits = 15 ;
36855: LD_ADDR_VAR 0 5
36859: PUSH
36860: LD_INT 15
36862: ST_TO_ADDR
// PrepareAndCreateVehicleR1 ( 1 , ru_heavy_tracked , engine , control_computer , ru_rocket ) ;
36863: LD_INT 1
36865: PPUSH
36866: LD_INT 24
36868: PPUSH
36869: LD_VAR 0 7
36873: PPUSH
36874: LD_INT 3
36876: PPUSH
36877: LD_INT 47
36879: PPUSH
36880: CALL 35530 0 5
// end ; end ;
36884: GO 36887
36886: POP
// until Selected ;
36887: LD_VAR 0 4
36891: IFFALSE 35765
// Result = Credits ;
36893: LD_ADDR_VAR 0 2
36897: PUSH
36898: LD_VAR 0 5
36902: ST_TO_ADDR
// end ;
36903: LD_VAR 0 2
36907: RET
// function GenerateGroup ( Credits , time ) ; var Used_Credits ; begin
36908: LD_INT 0
36910: PPUSH
36911: PPUSH
// repeat Used_Credits = Used_Credits + GetRandomVehicle ( time ) ;
36912: LD_ADDR_VAR 0 4
36916: PUSH
36917: LD_VAR 0 4
36921: PUSH
36922: LD_VAR 0 2
36926: PPUSH
36927: CALL 35721 0 1
36931: PLUS
36932: ST_TO_ADDR
// until Credits < Used_Credits ;
36933: LD_VAR 0 1
36937: PUSH
36938: LD_VAR 0 4
36942: LESS
36943: IFFALSE 36912
// result = Used_Credits ;
36945: LD_ADDR_VAR 0 3
36949: PUSH
36950: LD_VAR 0 4
36954: ST_TO_ADDR
// end ;
36955: LD_VAR 0 3
36959: RET
// function GenerateAttackingGroup ; var Power , Next_time , Number_of_units , Person , veh , i , Used_Credits , Credits , Strength_of_attack ; begin
36960: LD_INT 0
36962: PPUSH
36963: PPUSH
36964: PPUSH
36965: PPUSH
36966: PPUSH
36967: PPUSH
36968: PPUSH
36969: PPUSH
36970: PPUSH
36971: PPUSH
// Power = Rand ( 1 , 3 ) ;
36972: LD_ADDR_VAR 0 2
36976: PUSH
36977: LD_INT 1
36979: PPUSH
36980: LD_INT 3
36982: PPUSH
36983: CALL_OW 12
36987: ST_TO_ADDR
// Number_of_units = Rand ( 1 , 2 ) ;
36988: LD_ADDR_VAR 0 4
36992: PUSH
36993: LD_INT 1
36995: PPUSH
36996: LD_INT 2
36998: PPUSH
36999: CALL_OW 12
37003: ST_TO_ADDR
// R1_Attack_Group = [ ] ;
37004: LD_ADDR_EXP 118
37008: PUSH
37009: EMPTY
37010: ST_TO_ADDR
// if tick < 6 6$0 then
37011: LD_OWVAR 1
37015: PUSH
37016: LD_INT 12600
37018: LESS
37019: IFFALSE 37363
// begin case R1_Attack_Counter of 1 :
37021: LD_EXP 116
37025: PUSH
37026: LD_INT 1
37028: DOUBLE
37029: EQUAL
37030: IFTRUE 37034
37032: GO 37100
37034: POP
// begin PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine_combustion , control_computer , ru_gun ) ;
37035: LD_INT 1
37037: PPUSH
37038: LD_INT 22
37040: PPUSH
37041: LD_INT 1
37043: PPUSH
37044: LD_INT 3
37046: PPUSH
37047: LD_INT 44
37049: PPUSH
37050: CALL 35530 0 5
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine_combustion , control_computer , ru_gatling_gun ) ;
37054: LD_INT 1
37056: PPUSH
37057: LD_INT 22
37059: PPUSH
37060: LD_INT 1
37062: PPUSH
37063: LD_INT 3
37065: PPUSH
37066: LD_INT 43
37068: PPUSH
37069: CALL 35530 0 5
// R1_attack_time = [ 0 0$40 , 0 0$30 , 0 0$20 ] [ Difficulty ] ;
37073: LD_ADDR_EXP 114
37077: PUSH
37078: LD_INT 1400
37080: PUSH
37081: LD_INT 1050
37083: PUSH
37084: LD_INT 700
37086: PUSH
37087: EMPTY
37088: LIST
37089: LIST
37090: LIST
37091: PUSH
37092: LD_OWVAR 67
37096: ARRAY
37097: ST_TO_ADDR
// end ; 2 :
37098: GO 37361
37100: LD_INT 2
37102: DOUBLE
37103: EQUAL
37104: IFTRUE 37108
37106: GO 37172
37108: POP
// begin PrepareAndCreateVehicleR1 ( [ 2 , 3 , 4 ] [ Difficulty ] , ru_medium_tracked , engine_combustion , control_computer , ru_gatling_gun ) ;
37109: LD_INT 2
37111: PUSH
37112: LD_INT 3
37114: PUSH
37115: LD_INT 4
37117: PUSH
37118: EMPTY
37119: LIST
37120: LIST
37121: LIST
37122: PUSH
37123: LD_OWVAR 67
37127: ARRAY
37128: PPUSH
37129: LD_INT 22
37131: PPUSH
37132: LD_INT 1
37134: PPUSH
37135: LD_INT 3
37137: PPUSH
37138: LD_INT 43
37140: PPUSH
37141: CALL 35530 0 5
// R1_attack_time = [ 3 3$0 , 3 3$00 , 3 3$00 ] [ Difficulty ] ;
37145: LD_ADDR_EXP 114
37149: PUSH
37150: LD_INT 6300
37152: PUSH
37153: LD_INT 6300
37155: PUSH
37156: LD_INT 6300
37158: PUSH
37159: EMPTY
37160: LIST
37161: LIST
37162: LIST
37163: PUSH
37164: LD_OWVAR 67
37168: ARRAY
37169: ST_TO_ADDR
// end ; 3 :
37170: GO 37361
37172: LD_INT 3
37174: DOUBLE
37175: EQUAL
37176: IFTRUE 37180
37178: GO 37246
37180: POP
// begin PrepareAndCreateVehicleR1 ( 2 , ru_heavy_tracked , engine_combustion , control_computer , ru_gun ) ;
37181: LD_INT 2
37183: PPUSH
37184: LD_INT 24
37186: PPUSH
37187: LD_INT 1
37189: PPUSH
37190: LD_INT 3
37192: PPUSH
37193: LD_INT 44
37195: PPUSH
37196: CALL 35530 0 5
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine_combustion , control_computer , ru_gatling_gun ) ;
37200: LD_INT 1
37202: PPUSH
37203: LD_INT 22
37205: PPUSH
37206: LD_INT 1
37208: PPUSH
37209: LD_INT 3
37211: PPUSH
37212: LD_INT 43
37214: PPUSH
37215: CALL 35530 0 5
// R1_attack_time = [ 2 2$50 , 2 2$20 , 2 2$0 ] [ Difficulty ] ;
37219: LD_ADDR_EXP 114
37223: PUSH
37224: LD_INT 5950
37226: PUSH
37227: LD_INT 4900
37229: PUSH
37230: LD_INT 4200
37232: PUSH
37233: EMPTY
37234: LIST
37235: LIST
37236: LIST
37237: PUSH
37238: LD_OWVAR 67
37242: ARRAY
37243: ST_TO_ADDR
// end ; else
37244: GO 37361
37246: POP
// begin Credits = [ 8 , 11 , 14 ] [ Difficulty ] ;
37247: LD_ADDR_VAR 0 9
37251: PUSH
37252: LD_INT 8
37254: PUSH
37255: LD_INT 11
37257: PUSH
37258: LD_INT 14
37260: PUSH
37261: EMPTY
37262: LIST
37263: LIST
37264: LIST
37265: PUSH
37266: LD_OWVAR 67
37270: ARRAY
37271: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 1 ) ;
37272: LD_ADDR_VAR 0 8
37276: PUSH
37277: LD_VAR 0 9
37281: PUSH
37282: LD_EXP 191
37286: PLUS
37287: PPUSH
37288: LD_INT 1
37290: PPUSH
37291: CALL 36908 0 2
37295: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
37296: LD_ADDR_EXP 191
37300: PUSH
37301: LD_VAR 0 9
37305: PUSH
37306: LD_EXP 191
37310: PLUS
37311: PUSH
37312: LD_VAR 0 8
37316: MINUS
37317: ST_TO_ADDR
// R1_attack_time = [ 2 2$50 , 2 2$20 , 2 2$0 ] [ Difficulty ] ;
37318: LD_ADDR_EXP 114
37322: PUSH
37323: LD_INT 5950
37325: PUSH
37326: LD_INT 4900
37328: PUSH
37329: LD_INT 4200
37331: PUSH
37332: EMPTY
37333: LIST
37334: LIST
37335: LIST
37336: PUSH
37337: LD_OWVAR 67
37341: ARRAY
37342: ST_TO_ADDR
// if R1_attack_time > 6 6$0 then
37343: LD_EXP 114
37347: PUSH
37348: LD_INT 12600
37350: GREATER
37351: IFFALSE 37361
// R1_Attack_Counter = 0 ;
37353: LD_ADDR_EXP 116
37357: PUSH
37358: LD_INT 0
37360: ST_TO_ADDR
// end ; end ; end else
37361: GO 38195
// if tick < 14 14$0 then
37363: LD_OWVAR 1
37367: PUSH
37368: LD_INT 29400
37370: LESS
37371: IFFALSE 37603
// begin case R1_Attack_Counter of 1 :
37373: LD_EXP 116
37377: PUSH
37378: LD_INT 1
37380: DOUBLE
37381: EQUAL
37382: IFTRUE 37386
37384: GO 37486
37386: POP
// begin case Difficulty of 1 , 2 :
37387: LD_OWVAR 67
37391: PUSH
37392: LD_INT 1
37394: DOUBLE
37395: EQUAL
37396: IFTRUE 37406
37398: LD_INT 2
37400: DOUBLE
37401: EQUAL
37402: IFTRUE 37406
37404: GO 37428
37406: POP
// PrepareAndCreateVehicleR1 ( 3 , ru_heavy_tracked , engine_siberite , control_computer , ru_gun ) ; 3 :
37407: LD_INT 3
37409: PPUSH
37410: LD_INT 24
37412: PPUSH
37413: LD_INT 3
37415: PPUSH
37416: LD_INT 3
37418: PPUSH
37419: LD_INT 44
37421: PPUSH
37422: CALL 35530 0 5
37426: GO 37459
37428: LD_INT 3
37430: DOUBLE
37431: EQUAL
37432: IFTRUE 37436
37434: GO 37458
37436: POP
// PrepareAndCreateVehicleR1 ( 1 , ru_medium_tracked , engine_siberite , control_computer , ru_rocket_launcher ) ; end ;
37437: LD_INT 1
37439: PPUSH
37440: LD_INT 22
37442: PPUSH
37443: LD_INT 3
37445: PPUSH
37446: LD_INT 3
37448: PPUSH
37449: LD_INT 45
37451: PPUSH
37452: CALL 35530 0 5
37456: GO 37459
37458: POP
// R1_attack_time = [ 1 1$50 , 1 1$20 , 1 1$30 ] [ Difficulty ] ;
37459: LD_ADDR_EXP 114
37463: PUSH
37464: LD_INT 3850
37466: PUSH
37467: LD_INT 2800
37469: PUSH
37470: LD_INT 3150
37472: PUSH
37473: EMPTY
37474: LIST
37475: LIST
37476: LIST
37477: PUSH
37478: LD_OWVAR 67
37482: ARRAY
37483: ST_TO_ADDR
// end ; else
37484: GO 37601
37486: POP
// begin Credits = [ 14 , 18 , 22 ] [ Difficulty ] ;
37487: LD_ADDR_VAR 0 9
37491: PUSH
37492: LD_INT 14
37494: PUSH
37495: LD_INT 18
37497: PUSH
37498: LD_INT 22
37500: PUSH
37501: EMPTY
37502: LIST
37503: LIST
37504: LIST
37505: PUSH
37506: LD_OWVAR 67
37510: ARRAY
37511: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 2 ) ;
37512: LD_ADDR_VAR 0 8
37516: PUSH
37517: LD_VAR 0 9
37521: PUSH
37522: LD_EXP 191
37526: PLUS
37527: PPUSH
37528: LD_INT 2
37530: PPUSH
37531: CALL 36908 0 2
37535: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
37536: LD_ADDR_EXP 191
37540: PUSH
37541: LD_VAR 0 9
37545: PUSH
37546: LD_EXP 191
37550: PLUS
37551: PUSH
37552: LD_VAR 0 8
37556: MINUS
37557: ST_TO_ADDR
// R1_attack_time = [ 3 3$30 , 3 3$0 , 2 2$40 ] [ Difficulty ] ;
37558: LD_ADDR_EXP 114
37562: PUSH
37563: LD_INT 7350
37565: PUSH
37566: LD_INT 6300
37568: PUSH
37569: LD_INT 5600
37571: PUSH
37572: EMPTY
37573: LIST
37574: LIST
37575: LIST
37576: PUSH
37577: LD_OWVAR 67
37581: ARRAY
37582: ST_TO_ADDR
// if R1_attack_time > 14 14$0 then
37583: LD_EXP 114
37587: PUSH
37588: LD_INT 29400
37590: GREATER
37591: IFFALSE 37601
// R1_Attack_Counter = 0 ;
37593: LD_ADDR_EXP 116
37597: PUSH
37598: LD_INT 0
37600: ST_TO_ADDR
// end ; end ; end else
37601: GO 38195
// if tick < 25 25$0 then
37603: LD_OWVAR 1
37607: PUSH
37608: LD_INT 52500
37610: LESS
37611: IFFALSE 37729
// begin Credits = [ 8 , 10 , 12 ] [ Difficulty ] ;
37613: LD_ADDR_VAR 0 9
37617: PUSH
37618: LD_INT 8
37620: PUSH
37621: LD_INT 10
37623: PUSH
37624: LD_INT 12
37626: PUSH
37627: EMPTY
37628: LIST
37629: LIST
37630: LIST
37631: PUSH
37632: LD_OWVAR 67
37636: ARRAY
37637: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 3 ) ;
37638: LD_ADDR_VAR 0 8
37642: PUSH
37643: LD_VAR 0 9
37647: PUSH
37648: LD_EXP 191
37652: PLUS
37653: PPUSH
37654: LD_INT 3
37656: PPUSH
37657: CALL 36908 0 2
37661: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
37662: LD_ADDR_EXP 191
37666: PUSH
37667: LD_VAR 0 9
37671: PUSH
37672: LD_EXP 191
37676: PLUS
37677: PUSH
37678: LD_VAR 0 8
37682: MINUS
37683: ST_TO_ADDR
// R1_attack_time = [ 2 2$0 , 1 1$50 , 1 1$40 ] [ Difficulty ] ;
37684: LD_ADDR_EXP 114
37688: PUSH
37689: LD_INT 4200
37691: PUSH
37692: LD_INT 3850
37694: PUSH
37695: LD_INT 3500
37697: PUSH
37698: EMPTY
37699: LIST
37700: LIST
37701: LIST
37702: PUSH
37703: LD_OWVAR 67
37707: ARRAY
37708: ST_TO_ADDR
// if R1_attack_time > 25 25$0 then
37709: LD_EXP 114
37713: PUSH
37714: LD_INT 52500
37716: GREATER
37717: IFFALSE 37727
// R1_Attack_Counter = 0 ;
37719: LD_ADDR_EXP 116
37723: PUSH
37724: LD_INT 0
37726: ST_TO_ADDR
// end else
37727: GO 38195
// if tick < Rus_Attack_time then
37729: LD_OWVAR 1
37733: PUSH
37734: LD_EXP 130
37738: LESS
37739: IFFALSE 37839
// begin Credits = [ 14 , 18 , 22 ] [ Difficulty ] ;
37741: LD_ADDR_VAR 0 9
37745: PUSH
37746: LD_INT 14
37748: PUSH
37749: LD_INT 18
37751: PUSH
37752: LD_INT 22
37754: PUSH
37755: EMPTY
37756: LIST
37757: LIST
37758: LIST
37759: PUSH
37760: LD_OWVAR 67
37764: ARRAY
37765: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 4 ) ;
37766: LD_ADDR_VAR 0 8
37770: PUSH
37771: LD_VAR 0 9
37775: PUSH
37776: LD_EXP 191
37780: PLUS
37781: PPUSH
37782: LD_INT 4
37784: PPUSH
37785: CALL 36908 0 2
37789: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
37790: LD_ADDR_EXP 191
37794: PUSH
37795: LD_VAR 0 9
37799: PUSH
37800: LD_EXP 191
37804: PLUS
37805: PUSH
37806: LD_VAR 0 8
37810: MINUS
37811: ST_TO_ADDR
// R1_attack_time = [ 4 4$0 , 3 3$30 , 3 3$10 ] [ Difficulty ] ;
37812: LD_ADDR_EXP 114
37816: PUSH
37817: LD_INT 8400
37819: PUSH
37820: LD_INT 7350
37822: PUSH
37823: LD_INT 6650
37825: PUSH
37826: EMPTY
37827: LIST
37828: LIST
37829: LIST
37830: PUSH
37831: LD_OWVAR 67
37835: ARRAY
37836: ST_TO_ADDR
// end else
37837: GO 38195
// if tick < Stevens_Coming_Time then
37839: LD_OWVAR 1
37843: PUSH
37844: LD_EXP 200
37848: LESS
37849: IFFALSE 37949
// begin Credits = [ 18 , 22 , 26 ] [ Difficulty ] ;
37851: LD_ADDR_VAR 0 9
37855: PUSH
37856: LD_INT 18
37858: PUSH
37859: LD_INT 22
37861: PUSH
37862: LD_INT 26
37864: PUSH
37865: EMPTY
37866: LIST
37867: LIST
37868: LIST
37869: PUSH
37870: LD_OWVAR 67
37874: ARRAY
37875: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 5 ) ;
37876: LD_ADDR_VAR 0 8
37880: PUSH
37881: LD_VAR 0 9
37885: PUSH
37886: LD_EXP 191
37890: PLUS
37891: PPUSH
37892: LD_INT 5
37894: PPUSH
37895: CALL 36908 0 2
37899: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
37900: LD_ADDR_EXP 191
37904: PUSH
37905: LD_VAR 0 9
37909: PUSH
37910: LD_EXP 191
37914: PLUS
37915: PUSH
37916: LD_VAR 0 8
37920: MINUS
37921: ST_TO_ADDR
// R1_attack_time = [ 4 4$3 , 4 4$0 , 3 3$30 ] [ Difficulty ] ;
37922: LD_ADDR_EXP 114
37926: PUSH
37927: LD_INT 8505
37929: PUSH
37930: LD_INT 8400
37932: PUSH
37933: LD_INT 7350
37935: PUSH
37936: EMPTY
37937: LIST
37938: LIST
37939: LIST
37940: PUSH
37941: LD_OWVAR 67
37945: ARRAY
37946: ST_TO_ADDR
// end else
37947: GO 38195
// if tick < Alaskite_Bomb_Time then
37949: LD_OWVAR 1
37953: PUSH
37954: LD_EXP 212
37958: LESS
37959: IFFALSE 38059
// begin Credits = [ 22 , 27 , 32 ] [ Difficulty ] ;
37961: LD_ADDR_VAR 0 9
37965: PUSH
37966: LD_INT 22
37968: PUSH
37969: LD_INT 27
37971: PUSH
37972: LD_INT 32
37974: PUSH
37975: EMPTY
37976: LIST
37977: LIST
37978: LIST
37979: PUSH
37980: LD_OWVAR 67
37984: ARRAY
37985: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 5 ) ;
37986: LD_ADDR_VAR 0 8
37990: PUSH
37991: LD_VAR 0 9
37995: PUSH
37996: LD_EXP 191
38000: PLUS
38001: PPUSH
38002: LD_INT 5
38004: PPUSH
38005: CALL 36908 0 2
38009: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
38010: LD_ADDR_EXP 191
38014: PUSH
38015: LD_VAR 0 9
38019: PUSH
38020: LD_EXP 191
38024: PLUS
38025: PUSH
38026: LD_VAR 0 8
38030: MINUS
38031: ST_TO_ADDR
// R1_attack_time = [ 4 4$0 , 3 3$30 , 3 3$10 ] [ Difficulty ] ;
38032: LD_ADDR_EXP 114
38036: PUSH
38037: LD_INT 8400
38039: PUSH
38040: LD_INT 7350
38042: PUSH
38043: LD_INT 6650
38045: PUSH
38046: EMPTY
38047: LIST
38048: LIST
38049: LIST
38050: PUSH
38051: LD_OWVAR 67
38055: ARRAY
38056: ST_TO_ADDR
// end else
38057: GO 38195
// if tick > Alaskite_Bomb_Time then
38059: LD_OWVAR 1
38063: PUSH
38064: LD_EXP 212
38068: GREATER
38069: IFFALSE 38195
// begin Strength_of_attack = Rand ( 1 , 7 ) ;
38071: LD_ADDR_VAR 0 10
38075: PUSH
38076: LD_INT 1
38078: PPUSH
38079: LD_INT 7
38081: PPUSH
38082: CALL_OW 12
38086: ST_TO_ADDR
// Credits = [ 6 , 8 , 10 ] [ Difficulty ] * Strength_of_attack ;
38087: LD_ADDR_VAR 0 9
38091: PUSH
38092: LD_INT 6
38094: PUSH
38095: LD_INT 8
38097: PUSH
38098: LD_INT 10
38100: PUSH
38101: EMPTY
38102: LIST
38103: LIST
38104: LIST
38105: PUSH
38106: LD_OWVAR 67
38110: ARRAY
38111: PUSH
38112: LD_VAR 0 10
38116: MUL
38117: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 6 ) ;
38118: LD_ADDR_VAR 0 8
38122: PUSH
38123: LD_VAR 0 9
38127: PUSH
38128: LD_EXP 191
38132: PLUS
38133: PPUSH
38134: LD_INT 6
38136: PPUSH
38137: CALL 36908 0 2
38141: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
38142: LD_ADDR_EXP 191
38146: PUSH
38147: LD_VAR 0 9
38151: PUSH
38152: LD_EXP 191
38156: PLUS
38157: PUSH
38158: LD_VAR 0 8
38162: MINUS
38163: ST_TO_ADDR
// R1_attack_time = [ 1 1$0 , 1 1$0 , 1 1$0 ] [ Difficulty ] * Strength_of_attack ;
38164: LD_ADDR_EXP 114
38168: PUSH
38169: LD_INT 2100
38171: PUSH
38172: LD_INT 2100
38174: PUSH
38175: LD_INT 2100
38177: PUSH
38178: EMPTY
38179: LIST
38180: LIST
38181: LIST
38182: PUSH
38183: LD_OWVAR 67
38187: ARRAY
38188: PUSH
38189: LD_VAR 0 10
38193: MUL
38194: ST_TO_ADDR
// end ; end ;
38195: LD_VAR 0 1
38199: RET
// function GeneratePatrolingGroup ; begin
38200: LD_INT 0
38202: PPUSH
// New_Patrol_Group = [ ] ;
38203: LD_ADDR_EXP 122
38207: PUSH
38208: EMPTY
38209: ST_TO_ADDR
// if R1_Attack_Counter > 2 then
38210: LD_EXP 116
38214: PUSH
38215: LD_INT 2
38217: GREATER
38218: IFFALSE 38266
// begin R1Patrol_group = UnitFilter ( R1Patrol_group , [ f_alive ] ) ;
38220: LD_ADDR_EXP 123
38224: PUSH
38225: LD_EXP 123
38229: PPUSH
38230: LD_INT 51
38232: PUSH
38233: EMPTY
38234: LIST
38235: PPUSH
38236: CALL_OW 72
38240: ST_TO_ADDR
// PrepareAndCreateVehicleR1P ( 1 - R1Patrol_Group , ru_medium_tracked , engine_siberite , control_computer , ru_heavy_machine_gun ) ;
38241: LD_INT 1
38243: PUSH
38244: LD_EXP 123
38248: MINUS
38249: PPUSH
38250: LD_INT 22
38252: PPUSH
38253: LD_INT 3
38255: PPUSH
38256: LD_INT 3
38258: PPUSH
38259: LD_INT 42
38261: PPUSH
38262: CALL 35339 0 5
// end ; end ;
38266: LD_VAR 0 1
38270: RET
// export function Rus1Attack ; var Un , Am_units , Attack_area , Area_changed , Hlp_R1_Attack_Group , Hlp_New_Patrol_Group , temp_list , spawn_at_Arrival1 ; begin
38271: LD_INT 0
38273: PPUSH
38274: PPUSH
38275: PPUSH
38276: PPUSH
38277: PPUSH
38278: PPUSH
38279: PPUSH
38280: PPUSH
38281: PPUSH
// Hlp_R1_Attack_Group = R1_Attack_Group ;
38282: LD_ADDR_VAR 0 6
38286: PUSH
38287: LD_EXP 118
38291: ST_TO_ADDR
// Hlp_New_Patrol_Group = New_Patrol_Group ;
38292: LD_ADDR_VAR 0 7
38296: PUSH
38297: LD_EXP 122
38301: ST_TO_ADDR
// if tick < 12 12$0 then
38302: LD_OWVAR 1
38306: PUSH
38307: LD_INT 25200
38309: LESS
38310: IFFALSE 38386
// begin for Un in Hlp_R1_Attack_Group do
38312: LD_ADDR_VAR 0 2
38316: PUSH
38317: LD_VAR 0 6
38321: PUSH
38322: FOR_IN
38323: IFFALSE 38342
// PlaceUnitArea ( Un , Arrival1 , false ) ;
38325: LD_VAR 0 2
38329: PPUSH
38330: LD_INT 24
38332: PPUSH
38333: LD_INT 0
38335: PPUSH
38336: CALL_OW 49
38340: GO 38322
38342: POP
38343: POP
// for Un in Hlp_New_Patrol_Group do
38344: LD_ADDR_VAR 0 2
38348: PUSH
38349: LD_VAR 0 7
38353: PUSH
38354: FOR_IN
38355: IFFALSE 38374
// PlaceUnitArea ( Un , Arrival1 , false ) ;
38357: LD_VAR 0 2
38361: PPUSH
38362: LD_INT 24
38364: PPUSH
38365: LD_INT 0
38367: PPUSH
38368: CALL_OW 49
38372: GO 38354
38374: POP
38375: POP
// spawn_at_Arrival1 = true ;
38376: LD_ADDR_VAR 0 9
38380: PUSH
38381: LD_INT 1
38383: ST_TO_ADDR
// end else
38384: GO 38544
// begin if Rand ( 0 , 1 ) then
38386: LD_INT 0
38388: PPUSH
38389: LD_INT 1
38391: PPUSH
38392: CALL_OW 12
38396: IFFALSE 38472
// begin for Un in Hlp_R1_Attack_Group do
38398: LD_ADDR_VAR 0 2
38402: PUSH
38403: LD_VAR 0 6
38407: PUSH
38408: FOR_IN
38409: IFFALSE 38428
// PlaceUnitArea ( Un , Arrival1 , false ) ;
38411: LD_VAR 0 2
38415: PPUSH
38416: LD_INT 24
38418: PPUSH
38419: LD_INT 0
38421: PPUSH
38422: CALL_OW 49
38426: GO 38408
38428: POP
38429: POP
// for Un in Hlp_New_Patrol_Group do
38430: LD_ADDR_VAR 0 2
38434: PUSH
38435: LD_VAR 0 7
38439: PUSH
38440: FOR_IN
38441: IFFALSE 38460
// PlaceUnitArea ( Un , Arrival1 , false ) ;
38443: LD_VAR 0 2
38447: PPUSH
38448: LD_INT 24
38450: PPUSH
38451: LD_INT 0
38453: PPUSH
38454: CALL_OW 49
38458: GO 38440
38460: POP
38461: POP
// spawn_at_Arrival1 = true ;
38462: LD_ADDR_VAR 0 9
38466: PUSH
38467: LD_INT 1
38469: ST_TO_ADDR
// end else
38470: GO 38544
// begin for Un in Hlp_R1_Attack_Group do
38472: LD_ADDR_VAR 0 2
38476: PUSH
38477: LD_VAR 0 6
38481: PUSH
38482: FOR_IN
38483: IFFALSE 38502
// PlaceUnitArea ( Un , Arrival2 , false ) ;
38485: LD_VAR 0 2
38489: PPUSH
38490: LD_INT 25
38492: PPUSH
38493: LD_INT 0
38495: PPUSH
38496: CALL_OW 49
38500: GO 38482
38502: POP
38503: POP
// for Un in Hlp_New_Patrol_Group do
38504: LD_ADDR_VAR 0 2
38508: PUSH
38509: LD_VAR 0 7
38513: PUSH
38514: FOR_IN
38515: IFFALSE 38534
// PlaceUnitArea ( Un , Arrival2 , false ) ;
38517: LD_VAR 0 2
38521: PPUSH
38522: LD_INT 25
38524: PPUSH
38525: LD_INT 0
38527: PPUSH
38528: CALL_OW 49
38532: GO 38514
38534: POP
38535: POP
// spawn_at_Arrival1 = false ;
38536: LD_ADDR_VAR 0 9
38540: PUSH
38541: LD_INT 0
38543: ST_TO_ADDR
// end ; end ; Main_R1_Attack_Group = Main_R1_Attack_Group ^ Hlp_R1_Attack_Group ;
38544: LD_ADDR_EXP 119
38548: PUSH
38549: LD_EXP 119
38553: PUSH
38554: LD_VAR 0 6
38558: ADD
38559: ST_TO_ADDR
// Main_R1_Attack_Group = UnitFilter ( Main_R1_Attack_Group , [ f_alive ] ) ;
38560: LD_ADDR_EXP 119
38564: PUSH
38565: LD_EXP 119
38569: PPUSH
38570: LD_INT 51
38572: PUSH
38573: EMPTY
38574: LIST
38575: PPUSH
38576: CALL_OW 72
38580: ST_TO_ADDR
// Area_changed = false ;
38581: LD_ADDR_VAR 0 5
38585: PUSH
38586: LD_INT 0
38588: ST_TO_ADDR
// if FilterUnitsInArea ( JMM_Hill , [ f_side , americans ] ) > 0 then
38589: LD_INT 2
38591: PPUSH
38592: LD_INT 22
38594: PUSH
38595: LD_EXP 176
38599: PUSH
38600: EMPTY
38601: LIST
38602: LIST
38603: PPUSH
38604: CALL_OW 70
38608: PUSH
38609: LD_INT 0
38611: GREATER
38612: IFFALSE 38632
// begin Area_changed = true ;
38614: LD_ADDR_VAR 0 5
38618: PUSH
38619: LD_INT 1
38621: ST_TO_ADDR
// attack_area = JMM_Hill ;
38622: LD_ADDR_VAR 0 4
38626: PUSH
38627: LD_INT 2
38629: ST_TO_ADDR
// end else
38630: GO 39017
// if FilterUnitsInArea ( Am_Base , [ f_side , americans ] ) > 0 then
38632: LD_INT 1
38634: PPUSH
38635: LD_INT 22
38637: PUSH
38638: LD_EXP 176
38642: PUSH
38643: EMPTY
38644: LIST
38645: LIST
38646: PPUSH
38647: CALL_OW 70
38651: PUSH
38652: LD_INT 0
38654: GREATER
38655: IFFALSE 38675
// begin Area_changed = true ;
38657: LD_ADDR_VAR 0 5
38661: PUSH
38662: LD_INT 1
38664: ST_TO_ADDR
// attack_area = Am_Base ;
38665: LD_ADDR_VAR 0 4
38669: PUSH
38670: LD_INT 1
38672: ST_TO_ADDR
// end else
38673: GO 39017
// if FilterUnitsInArea ( Ar_Base , [ f_side , americans ] ) > 0 then
38675: LD_INT 17
38677: PPUSH
38678: LD_INT 22
38680: PUSH
38681: LD_EXP 176
38685: PUSH
38686: EMPTY
38687: LIST
38688: LIST
38689: PPUSH
38690: CALL_OW 70
38694: PUSH
38695: LD_INT 0
38697: GREATER
38698: IFFALSE 38718
// begin Area_changed = true ;
38700: LD_ADDR_VAR 0 5
38704: PUSH
38705: LD_INT 1
38707: ST_TO_ADDR
// attack_area = Ar_Base ;
38708: LD_ADDR_VAR 0 4
38712: PUSH
38713: LD_INT 17
38715: ST_TO_ADDR
// end else
38716: GO 39017
// if FilterUnitsInArea ( Plan3 , [ f_side , americans ] ) > 0 then
38718: LD_INT 31
38720: PPUSH
38721: LD_INT 22
38723: PUSH
38724: LD_EXP 176
38728: PUSH
38729: EMPTY
38730: LIST
38731: LIST
38732: PPUSH
38733: CALL_OW 70
38737: PUSH
38738: LD_INT 0
38740: GREATER
38741: IFFALSE 38761
// begin Area_changed = true ;
38743: LD_ADDR_VAR 0 5
38747: PUSH
38748: LD_INT 1
38750: ST_TO_ADDR
// attack_area = Plan3 ;
38751: LD_ADDR_VAR 0 4
38755: PUSH
38756: LD_INT 31
38758: ST_TO_ADDR
// end else
38759: GO 39017
// if FilterUnitsInArea ( Plan1 , [ f_side , americans ] ) > 0 then
38761: LD_INT 29
38763: PPUSH
38764: LD_INT 22
38766: PUSH
38767: LD_EXP 176
38771: PUSH
38772: EMPTY
38773: LIST
38774: LIST
38775: PPUSH
38776: CALL_OW 70
38780: PUSH
38781: LD_INT 0
38783: GREATER
38784: IFFALSE 38804
// begin Area_changed = true ;
38786: LD_ADDR_VAR 0 5
38790: PUSH
38791: LD_INT 1
38793: ST_TO_ADDR
// attack_area = Plan1 ;
38794: LD_ADDR_VAR 0 4
38798: PUSH
38799: LD_INT 29
38801: ST_TO_ADDR
// end else
38802: GO 39017
// if FilterUnitsInArea ( Plan5 , [ f_side , americans ] ) > 0 then
38804: LD_INT 33
38806: PPUSH
38807: LD_INT 22
38809: PUSH
38810: LD_EXP 176
38814: PUSH
38815: EMPTY
38816: LIST
38817: LIST
38818: PPUSH
38819: CALL_OW 70
38823: PUSH
38824: LD_INT 0
38826: GREATER
38827: IFFALSE 38847
// begin Area_changed = true ;
38829: LD_ADDR_VAR 0 5
38833: PUSH
38834: LD_INT 1
38836: ST_TO_ADDR
// attack_area = Plan5 ;
38837: LD_ADDR_VAR 0 4
38841: PUSH
38842: LD_INT 33
38844: ST_TO_ADDR
// end else
38845: GO 39017
// if FilterUnitsInArea ( Plan2 , [ f_side , americans ] ) > 0 then
38847: LD_INT 30
38849: PPUSH
38850: LD_INT 22
38852: PUSH
38853: LD_EXP 176
38857: PUSH
38858: EMPTY
38859: LIST
38860: LIST
38861: PPUSH
38862: CALL_OW 70
38866: PUSH
38867: LD_INT 0
38869: GREATER
38870: IFFALSE 38890
// begin Area_changed = true ;
38872: LD_ADDR_VAR 0 5
38876: PUSH
38877: LD_INT 1
38879: ST_TO_ADDR
// attack_area = Plan2 ;
38880: LD_ADDR_VAR 0 4
38884: PUSH
38885: LD_INT 30
38887: ST_TO_ADDR
// end else
38888: GO 39017
// if FilterUnitsInArea ( Plan4 , [ f_side , americans ] ) > 0 then
38890: LD_INT 32
38892: PPUSH
38893: LD_INT 22
38895: PUSH
38896: LD_EXP 176
38900: PUSH
38901: EMPTY
38902: LIST
38903: LIST
38904: PPUSH
38905: CALL_OW 70
38909: PUSH
38910: LD_INT 0
38912: GREATER
38913: IFFALSE 38933
// begin Area_changed = true ;
38915: LD_ADDR_VAR 0 5
38919: PUSH
38920: LD_INT 1
38922: ST_TO_ADDR
// attack_area = Plan4 ;
38923: LD_ADDR_VAR 0 4
38927: PUSH
38928: LD_INT 32
38930: ST_TO_ADDR
// end else
38931: GO 39017
// if FilterUnitsInArea ( Plan6 , [ f_side , americans ] ) > 0 then
38933: LD_INT 34
38935: PPUSH
38936: LD_INT 22
38938: PUSH
38939: LD_EXP 176
38943: PUSH
38944: EMPTY
38945: LIST
38946: LIST
38947: PPUSH
38948: CALL_OW 70
38952: PUSH
38953: LD_INT 0
38955: GREATER
38956: IFFALSE 38976
// begin Area_changed = true ;
38958: LD_ADDR_VAR 0 5
38962: PUSH
38963: LD_INT 1
38965: ST_TO_ADDR
// attack_area = Plan6 ;
38966: LD_ADDR_VAR 0 4
38970: PUSH
38971: LD_INT 34
38973: ST_TO_ADDR
// end else
38974: GO 39017
// if FilterUnitsInArea ( Aliance_Base , [ f_side , americans ] ) > 0 then
38976: LD_INT 7
38978: PPUSH
38979: LD_INT 22
38981: PUSH
38982: LD_EXP 176
38986: PUSH
38987: EMPTY
38988: LIST
38989: LIST
38990: PPUSH
38991: CALL_OW 70
38995: PUSH
38996: LD_INT 0
38998: GREATER
38999: IFFALSE 39017
// begin Area_changed = true ;
39001: LD_ADDR_VAR 0 5
39005: PUSH
39006: LD_INT 1
39008: ST_TO_ADDR
// attack_area = Aliance_Base ;
39009: LD_ADDR_VAR 0 4
39013: PUSH
39014: LD_INT 7
39016: ST_TO_ADDR
// end ; temp_list = Hlp_R1_Attack_Group ^ Hlp_New_Patrol_Group ;
39017: LD_ADDR_VAR 0 8
39021: PUSH
39022: LD_VAR 0 6
39026: PUSH
39027: LD_VAR 0 7
39031: ADD
39032: ST_TO_ADDR
// case attack_area of JMM_Hill :
39033: LD_VAR 0 4
39037: PUSH
39038: LD_INT 2
39040: DOUBLE
39041: EQUAL
39042: IFTRUE 39046
39044: GO 39132
39046: POP
// begin if spawn_at_Arrival1 then
39047: LD_VAR 0 9
39051: IFFALSE 39055
// begin end else
39053: GO 39130
// begin ComAgressiveMove ( temp_list , 163 , 181 ) ;
39055: LD_VAR 0 8
39059: PPUSH
39060: LD_INT 163
39062: PPUSH
39063: LD_INT 181
39065: PPUSH
39066: CALL_OW 114
// AddComAgressiveMove ( temp_list , 175 , 165 ) ;
39070: LD_VAR 0 8
39074: PPUSH
39075: LD_INT 175
39077: PPUSH
39078: LD_INT 165
39080: PPUSH
39081: CALL_OW 174
// AddComAgressiveMove ( temp_list , 160 , 138 ) ;
39085: LD_VAR 0 8
39089: PPUSH
39090: LD_INT 160
39092: PPUSH
39093: LD_INT 138
39095: PPUSH
39096: CALL_OW 174
// AddComAgressiveMove ( temp_list , 138 , 121 ) ;
39100: LD_VAR 0 8
39104: PPUSH
39105: LD_INT 138
39107: PPUSH
39108: LD_INT 121
39110: PPUSH
39111: CALL_OW 174
// AddComAgressiveMove ( temp_list , 113 , 105 ) ;
39115: LD_VAR 0 8
39119: PPUSH
39120: LD_INT 113
39122: PPUSH
39123: LD_INT 105
39125: PPUSH
39126: CALL_OW 174
// end ; end ; Am_Base :
39130: GO 39550
39132: LD_INT 1
39134: DOUBLE
39135: EQUAL
39136: IFTRUE 39140
39138: GO 39271
39140: POP
// begin if spawn_at_Arrival1 then
39141: LD_VAR 0 9
39145: IFFALSE 39164
// begin ComAgressiveMove ( temp_list , 86 , 123 ) ;
39147: LD_VAR 0 8
39151: PPUSH
39152: LD_INT 86
39154: PPUSH
39155: LD_INT 123
39157: PPUSH
39158: CALL_OW 114
// end else
39162: GO 39269
// begin ComAgressiveMove ( temp_list , 163 , 181 ) ;
39164: LD_VAR 0 8
39168: PPUSH
39169: LD_INT 163
39171: PPUSH
39172: LD_INT 181
39174: PPUSH
39175: CALL_OW 114
// AddComAgressiveMove ( temp_list , 175 , 165 ) ;
39179: LD_VAR 0 8
39183: PPUSH
39184: LD_INT 175
39186: PPUSH
39187: LD_INT 165
39189: PPUSH
39190: CALL_OW 174
// AddComAgressiveMove ( temp_list , 160 , 138 ) ;
39194: LD_VAR 0 8
39198: PPUSH
39199: LD_INT 160
39201: PPUSH
39202: LD_INT 138
39204: PPUSH
39205: CALL_OW 174
// AddComAgressiveMove ( temp_list , 138 , 121 ) ;
39209: LD_VAR 0 8
39213: PPUSH
39214: LD_INT 138
39216: PPUSH
39217: LD_INT 121
39219: PPUSH
39220: CALL_OW 174
// AddComAgressiveMove ( temp_list , 113 , 105 ) ;
39224: LD_VAR 0 8
39228: PPUSH
39229: LD_INT 113
39231: PPUSH
39232: LD_INT 105
39234: PPUSH
39235: CALL_OW 174
// AddComAgressiveMove ( temp_list , 99 , 83 ) ;
39239: LD_VAR 0 8
39243: PPUSH
39244: LD_INT 99
39246: PPUSH
39247: LD_INT 83
39249: PPUSH
39250: CALL_OW 174
// AddComAgressiveMove ( temp_list , 83 , 62 ) ;
39254: LD_VAR 0 8
39258: PPUSH
39259: LD_INT 83
39261: PPUSH
39262: LD_INT 62
39264: PPUSH
39265: CALL_OW 174
// end ; end ; Ar_Base :
39269: GO 39550
39271: LD_INT 17
39273: DOUBLE
39274: EQUAL
39275: IFTRUE 39279
39277: GO 39455
39279: POP
// begin if spawn_at_Arrival1 then
39280: LD_VAR 0 9
39284: IFFALSE 39348
// begin ComAgressiveMove ( temp_list , 86 , 123 ) ;
39286: LD_VAR 0 8
39290: PPUSH
39291: LD_INT 86
39293: PPUSH
39294: LD_INT 123
39296: PPUSH
39297: CALL_OW 114
// AddComAgressiveMove ( temp_list , 71 , 101 ) ;
39301: LD_VAR 0 8
39305: PPUSH
39306: LD_INT 71
39308: PPUSH
39309: LD_INT 101
39311: PPUSH
39312: CALL_OW 174
// AddComAgressiveMove ( temp_list , 58 , 77 ) ;
39316: LD_VAR 0 8
39320: PPUSH
39321: LD_INT 58
39323: PPUSH
39324: LD_INT 77
39326: PPUSH
39327: CALL_OW 174
// AddComAgressiveMove ( temp_list , 66 , 61 ) ;
39331: LD_VAR 0 8
39335: PPUSH
39336: LD_INT 66
39338: PPUSH
39339: LD_INT 61
39341: PPUSH
39342: CALL_OW 174
// end else
39346: GO 39453
// begin ComAgressiveMove ( temp_list , 163 , 181 ) ;
39348: LD_VAR 0 8
39352: PPUSH
39353: LD_INT 163
39355: PPUSH
39356: LD_INT 181
39358: PPUSH
39359: CALL_OW 114
// AddComAgressiveMove ( temp_list , 175 , 165 ) ;
39363: LD_VAR 0 8
39367: PPUSH
39368: LD_INT 175
39370: PPUSH
39371: LD_INT 165
39373: PPUSH
39374: CALL_OW 174
// AddComAgressiveMove ( temp_list , 160 , 138 ) ;
39378: LD_VAR 0 8
39382: PPUSH
39383: LD_INT 160
39385: PPUSH
39386: LD_INT 138
39388: PPUSH
39389: CALL_OW 174
// AddComAgressiveMove ( temp_list , 138 , 121 ) ;
39393: LD_VAR 0 8
39397: PPUSH
39398: LD_INT 138
39400: PPUSH
39401: LD_INT 121
39403: PPUSH
39404: CALL_OW 174
// AddComAgressiveMove ( temp_list , 113 , 105 ) ;
39408: LD_VAR 0 8
39412: PPUSH
39413: LD_INT 113
39415: PPUSH
39416: LD_INT 105
39418: PPUSH
39419: CALL_OW 174
// AddComAgressiveMove ( temp_list , 108 , 82 ) ;
39423: LD_VAR 0 8
39427: PPUSH
39428: LD_INT 108
39430: PPUSH
39431: LD_INT 82
39433: PPUSH
39434: CALL_OW 174
// AddComAgressiveMove ( temp_list , 99 , 59 ) ;
39438: LD_VAR 0 8
39442: PPUSH
39443: LD_INT 99
39445: PPUSH
39446: LD_INT 59
39448: PPUSH
39449: CALL_OW 174
// end ; end ; Aliance_Base :
39453: GO 39550
39455: LD_INT 7
39457: DOUBLE
39458: EQUAL
39459: IFTRUE 39463
39461: GO 39549
39463: POP
// begin if spawn_at_Arrival1 then
39464: LD_VAR 0 9
39468: IFFALSE 39532
// begin ComAgressiveMove ( temp_list , 96 , 163 ) ;
39470: LD_VAR 0 8
39474: PPUSH
39475: LD_INT 96
39477: PPUSH
39478: LD_INT 163
39480: PPUSH
39481: CALL_OW 114
// AddComAgressiveMove ( temp_list , 120 , 179 ) ;
39485: LD_VAR 0 8
39489: PPUSH
39490: LD_INT 120
39492: PPUSH
39493: LD_INT 179
39495: PPUSH
39496: CALL_OW 174
// AddComAgressiveMove ( temp_list , 141 , 179 ) ;
39500: LD_VAR 0 8
39504: PPUSH
39505: LD_INT 141
39507: PPUSH
39508: LD_INT 179
39510: PPUSH
39511: CALL_OW 174
// AddComAgressiveMove ( temp_list , 163 , 179 ) ;
39515: LD_VAR 0 8
39519: PPUSH
39520: LD_INT 163
39522: PPUSH
39523: LD_INT 179
39525: PPUSH
39526: CALL_OW 174
// end else
39530: GO 39547
// begin ComAgressiveMove ( temp_list , 163 , 179 ) ;
39532: LD_VAR 0 8
39536: PPUSH
39537: LD_INT 163
39539: PPUSH
39540: LD_INT 179
39542: PPUSH
39543: CALL_OW 114
// end ; end ; end ;
39547: GO 39550
39549: POP
// WaitTask ( temp_list , 1 ) ;
39550: LD_VAR 0 8
39554: PPUSH
39555: LD_INT 1
39557: PPUSH
39558: CALL 17892 0 2
// if not ( ExistMc ( Russian1_reg_id ) ) then
39562: LD_EXP 237
39566: PPUSH
39567: CALL_OW 386
39571: NOT
39572: IFFALSE 39630
// begin Russian1_reg_id = McRegistry ( russians1 , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , attack_area ] , - mc_reg_only_important , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
39574: LD_ADDR_EXP 237
39578: PUSH
39579: LD_EXP 179
39583: PPUSH
39584: LD_INT 1
39586: PUSH
39587: LD_INT 70
39589: PUSH
39590: EMPTY
39591: LIST
39592: LIST
39593: PUSH
39594: LD_INT 2
39596: PUSH
39597: LD_VAR 0 4
39601: PUSH
39602: EMPTY
39603: LIST
39604: LIST
39605: PUSH
39606: LD_INT 8
39608: NEG
39609: PUSH
39610: LD_INT 7
39612: PUSH
39613: LD_INT 9
39615: PUSH
39616: EMPTY
39617: LIST
39618: LIST
39619: LIST
39620: LIST
39621: LIST
39622: PPUSH
39623: CALL_OW 399
39627: ST_TO_ADDR
// end else
39628: GO 39660
// if Area_changed then
39630: LD_VAR 0 5
39634: IFFALSE 39660
// begin McRegistryChangeOptions ( Russian1_reg_id , [ [ mc_reg_area_to_guard , attack_area ] ] ) ;
39636: LD_EXP 237
39640: PPUSH
39641: LD_INT 2
39643: PUSH
39644: LD_VAR 0 4
39648: PUSH
39649: EMPTY
39650: LIST
39651: LIST
39652: PUSH
39653: EMPTY
39654: LIST
39655: PPUSH
39656: CALL_OW 400
// end ; if not ( ExistMc ( Russian1_att_id ) ) then
39660: LD_EXP 238
39664: PPUSH
39665: CALL_OW 386
39669: NOT
39670: IFFALSE 39747
// begin Russian1_att_id = McAttack ( 100 , Russian1_reg_id , Main_R1_Attack_Group , [ [ mc_retreat_area_vehicles , retreat1 ] , [ mc_retreat_area_people , retreat1 ] , [ mc_retreat_lives_vehicles , 600 ] , [ mc_retreat_lives_people , 600 ] , mc_no_stop ] ) ;
39672: LD_ADDR_EXP 238
39676: PUSH
39677: LD_INT 100
39679: PPUSH
39680: LD_EXP 237
39684: PPUSH
39685: LD_EXP 119
39689: PPUSH
39690: LD_INT 8
39692: PUSH
39693: LD_INT 40
39695: PUSH
39696: EMPTY
39697: LIST
39698: LIST
39699: PUSH
39700: LD_INT 7
39702: PUSH
39703: LD_INT 40
39705: PUSH
39706: EMPTY
39707: LIST
39708: LIST
39709: PUSH
39710: LD_INT 6
39712: PUSH
39713: LD_INT 600
39715: PUSH
39716: EMPTY
39717: LIST
39718: LIST
39719: PUSH
39720: LD_INT 5
39722: PUSH
39723: LD_INT 600
39725: PUSH
39726: EMPTY
39727: LIST
39728: LIST
39729: PUSH
39730: LD_INT 10
39732: PUSH
39733: EMPTY
39734: LIST
39735: LIST
39736: LIST
39737: LIST
39738: LIST
39739: PPUSH
39740: CALL_OW 402
39744: ST_TO_ADDR
// end else
39745: GO 39761
// begin AddMcUnits ( Russian1_att_id , Hlp_R1_Attack_Group ) ;
39747: LD_EXP 238
39751: PPUSH
39752: LD_VAR 0 6
39756: PPUSH
39757: CALL_OW 390
// end ; if not ( ExistMc ( Russian1_reg1_id ) ) then
39761: LD_EXP 239
39765: PPUSH
39766: CALL_OW 386
39770: NOT
39771: IFFALSE 39821
// begin Russian1_reg1_id = McRegistry ( russians1 , [ [ mc_reg_refresh_time , 0 0$4 ] , [ mc_reg_area_to_guard , attack_area ] , - mc_reg_only_important ] ) ;
39773: LD_ADDR_EXP 239
39777: PUSH
39778: LD_EXP 179
39782: PPUSH
39783: LD_INT 1
39785: PUSH
39786: LD_INT 140
39788: PUSH
39789: EMPTY
39790: LIST
39791: LIST
39792: PUSH
39793: LD_INT 2
39795: PUSH
39796: LD_VAR 0 4
39800: PUSH
39801: EMPTY
39802: LIST
39803: LIST
39804: PUSH
39805: LD_INT 8
39807: NEG
39808: PUSH
39809: EMPTY
39810: LIST
39811: LIST
39812: LIST
39813: PPUSH
39814: CALL_OW 399
39818: ST_TO_ADDR
// end else
39819: GO 39851
// if Area_changed then
39821: LD_VAR 0 5
39825: IFFALSE 39851
// begin McRegistryChangeOptions ( Russian1_reg1_id , [ [ mc_reg_area_to_guard , attack_area ] ] ) ;
39827: LD_EXP 239
39831: PPUSH
39832: LD_INT 2
39834: PUSH
39835: LD_VAR 0 4
39839: PUSH
39840: EMPTY
39841: LIST
39842: LIST
39843: PUSH
39844: EMPTY
39845: LIST
39846: PPUSH
39847: CALL_OW 400
// end ; if not ( ExistMc ( Russian1_patr_id ) ) and ( Hlp_New_Patrol_Group <> 0 ) then
39851: LD_EXP 240
39855: PPUSH
39856: CALL_OW 386
39860: NOT
39861: PUSH
39862: LD_VAR 0 7
39866: PUSH
39867: LD_INT 0
39869: NONEQUAL
39870: AND
39871: IFFALSE 39914
// begin R1Patrol_group = Hlp_New_Patrol_Group ;
39873: LD_ADDR_EXP 123
39877: PUSH
39878: LD_VAR 0 7
39882: ST_TO_ADDR
// Russian1_patr_id = McPatrol ( 100 , Russian1_reg1_id , Hlp_New_Patrol_Group , [ mc_no_stop ] ) ;
39883: LD_ADDR_EXP 240
39887: PUSH
39888: LD_INT 100
39890: PPUSH
39891: LD_EXP 239
39895: PPUSH
39896: LD_VAR 0 7
39900: PPUSH
39901: LD_INT 10
39903: PUSH
39904: EMPTY
39905: LIST
39906: PPUSH
39907: CALL_OW 403
39911: ST_TO_ADDR
// end else
39912: GO 39954
// begin R1Patrol_group = R1Patrol_group ^ Hlp_New_Patrol_Group ;
39914: LD_ADDR_EXP 123
39918: PUSH
39919: LD_EXP 123
39923: PUSH
39924: LD_VAR 0 7
39928: ADD
39929: ST_TO_ADDR
// if Hlp_New_Patrol_Group <> 0 then
39930: LD_VAR 0 7
39934: PUSH
39935: LD_INT 0
39937: NONEQUAL
39938: IFFALSE 39954
// AddMcUnits ( Russian1_patr_id , Hlp_New_Patrol_Group ) ;
39940: LD_EXP 240
39944: PPUSH
39945: LD_VAR 0 7
39949: PPUSH
39950: CALL_OW 390
// end ; end ;
39954: LD_VAR 0 1
39958: RET
// every 0 0$1 do var Un , ill ;
39959: GO 39961
39961: DISABLE
39962: LD_INT 0
39964: PPUSH
39965: PPUSH
// begin ill = FilterUnitsInArea ( OutComming , [ [ f_side , russians1 ] , f_not , [ f_lives , 600 ] ] ) ;
39966: LD_ADDR_VAR 0 2
39970: PUSH
39971: LD_INT 41
39973: PPUSH
39974: LD_INT 22
39976: PUSH
39977: LD_EXP 179
39981: PUSH
39982: EMPTY
39983: LIST
39984: LIST
39985: PUSH
39986: LD_INT 3
39988: PUSH
39989: LD_INT 24
39991: PUSH
39992: LD_INT 600
39994: PUSH
39995: EMPTY
39996: LIST
39997: LIST
39998: PUSH
39999: EMPTY
40000: LIST
40001: LIST
40002: LIST
40003: PPUSH
40004: CALL_OW 70
40008: ST_TO_ADDR
// ill = ill ^ FilterUnitsInArea ( arrival2 , [ [ f_side , russians1 ] , f_not , [ f_lives , 600 ] ] ) ;
40009: LD_ADDR_VAR 0 2
40013: PUSH
40014: LD_VAR 0 2
40018: PUSH
40019: LD_INT 25
40021: PPUSH
40022: LD_INT 22
40024: PUSH
40025: LD_EXP 179
40029: PUSH
40030: EMPTY
40031: LIST
40032: LIST
40033: PUSH
40034: LD_INT 3
40036: PUSH
40037: LD_INT 24
40039: PUSH
40040: LD_INT 600
40042: PUSH
40043: EMPTY
40044: LIST
40045: LIST
40046: PUSH
40047: EMPTY
40048: LIST
40049: LIST
40050: LIST
40051: PPUSH
40052: CALL_OW 70
40056: ADD
40057: ST_TO_ADDR
// if ill > 0 then
40058: LD_VAR 0 2
40062: PUSH
40063: LD_INT 0
40065: GREATER
40066: IFFALSE 40124
// begin Main_R1_Attack_Group = Main_R1_Attack_Group diff ill ;
40068: LD_ADDR_EXP 119
40072: PUSH
40073: LD_EXP 119
40077: PUSH
40078: LD_VAR 0 2
40082: DIFF
40083: ST_TO_ADDR
// RemoveMcUnits ( Russian1_att_id , ill ) ;
40084: LD_EXP 238
40088: PPUSH
40089: LD_VAR 0 2
40093: PPUSH
40094: CALL_OW 391
// for Un in ill do
40098: LD_ADDR_VAR 0 1
40102: PUSH
40103: LD_VAR 0 2
40107: PUSH
40108: FOR_IN
40109: IFFALSE 40122
// DestroyUnit ( Un ) ;
40111: LD_VAR 0 1
40115: PPUSH
40116: CALL_OW 65
40120: GO 40108
40122: POP
40123: POP
// end ; enable ;
40124: ENABLE
// end ;
40125: PPOPN 2
40127: END
// every 0 0$1 marked 4 do
40128: GO 40130
40130: DISABLE
// begin disable ;
40131: DISABLE
// if Main_R1_Attack_Group < 50 then
40132: LD_EXP 119
40136: PUSH
40137: LD_INT 50
40139: LESS
40140: IFFALSE 40208
// begin R1_Attack_Counter = R1_Attack_Counter + 1 ;
40142: LD_ADDR_EXP 116
40146: PUSH
40147: LD_EXP 116
40151: PUSH
40152: LD_INT 1
40154: PLUS
40155: ST_TO_ADDR
// GenerateAttackingGroup ;
40156: CALL 36960 0 0
// GeneratePatrolingGroup ;
40160: CALL 38200 0 0
// Wait ( R1_attack_time ) ;
40164: LD_EXP 114
40168: PPUSH
40169: CALL_OW 67
// while R1_Attack_Continues = false do
40173: LD_EXP 196
40177: PUSH
40178: LD_INT 0
40180: EQUAL
40181: IFFALSE 40192
// Wait ( 0 0$1 ) ;
40183: LD_INT 35
40185: PPUSH
40186: CALL_OW 67
40190: GO 40173
// RaiseSailEvent ( Rus1_Attack ) ;
40192: LD_EXP 170
40196: PPUSH
40197: CALL_OW 427
// Wait ( 1 ) ;
40201: LD_INT 1
40203: PPUSH
40204: CALL_OW 67
// end ; enable ;
40208: ENABLE
// end ; end_of_file
40209: END
// every 0 0$1 trigger IsDead ( Powell ) marked 8 do
40210: LD_EXP 2
40214: PPUSH
40215: CALL_OW 301
40219: IFFALSE 40235
40221: GO 40223
40223: DISABLE
// begin YouLost ( Surrender ) ;
40224: LD_STRING Surrender
40226: PPUSH
40227: CALL_OW 104
// ExitGame ;
40231: CALL_OW 341
// end ;
40235: END
// every 0 0$1 marked 22 do
40236: GO 40238
40238: DISABLE
// begin YouLost ( JMMCaptured ) ;
40239: LD_STRING JMMCaptured
40241: PPUSH
40242: CALL_OW 104
// ExitGame ;
40246: CALL_OW 341
// end ;
40250: END
// every 0 0$1 marked 19 do
40251: GO 40253
40253: DISABLE
// begin YouLost ( Surrender ) ;
40254: LD_STRING Surrender
40256: PPUSH
40257: CALL_OW 104
// ExitGame ;
40261: CALL_OW 341
// end ;
40265: END
// every 0 0$1 marked 2 do
40266: GO 40268
40268: DISABLE
// begin YouLost ( Dismissed ) ;
40269: LD_STRING Dismissed
40271: PPUSH
40272: CALL_OW 104
// ExitGame ;
40276: CALL_OW 341
// end ;
40280: END
// every 0 0$5 trigger IsDead ( JMM ) or not IsPlaced ( JMM ) do
40281: LD_EXP 1
40285: PPUSH
40286: CALL_OW 301
40290: PUSH
40291: LD_EXP 1
40295: PPUSH
40296: CALL_OW 305
40300: NOT
40301: OR
40302: IFFALSE 40318
40304: GO 40306
40306: DISABLE
// begin YouLost ( JMM ) ;
40307: LD_STRING JMM
40309: PPUSH
40310: CALL_OW 104
// ExitGame ;
40314: CALL_OW 341
// end ;
40318: END
// every 0 0$5 marked 13 do
40319: GO 40321
40321: DISABLE
// begin Wait ( 0 0$5 ) ;
40322: LD_INT 175
40324: PPUSH
40325: CALL_OW 67
// YouLost ( Motherlode1 ) ;
40329: LD_STRING Motherlode1
40331: PPUSH
40332: CALL_OW 104
// ExitGame ;
40336: CALL_OW 341
// end ;
40340: END
// every 0 0$5 marked 14 do
40341: GO 40343
40343: DISABLE
// begin Wait ( 0 0$5 ) ;
40344: LD_INT 175
40346: PPUSH
40347: CALL_OW 67
// YouLost ( Motherlode2 ) ;
40351: LD_STRING Motherlode2
40353: PPUSH
40354: CALL_OW 104
// ExitGame ;
40358: CALL_OW 341
// end ;
40362: END
// every 0 0$5 marked 15 do
40363: GO 40365
40365: DISABLE
// begin Wait ( 0 0$7 ) ;
40366: LD_INT 245
40368: PPUSH
40369: CALL_OW 67
// YouLost ( Motherlode3 ) ;
40373: LD_STRING Motherlode3
40375: PPUSH
40376: CALL_OW 104
// ExitGame ;
40380: CALL_OW 341
// end ;
40384: END
// every 0 0$1 marked 23 do var medal1 , medal2 , medal3 ;
40385: GO 40387
40387: DISABLE
40388: LD_INT 0
40390: PPUSH
40391: PPUSH
40392: PPUSH
// begin medal1 := false ;
40393: LD_ADDR_VAR 0 1
40397: PUSH
40398: LD_INT 0
40400: ST_TO_ADDR
// medal2 := false ;
40401: LD_ADDR_VAR 0 2
40405: PUSH
40406: LD_INT 0
40408: ST_TO_ADDR
// medal3 := false ;
40409: LD_ADDR_VAR 0 3
40413: PUSH
40414: LD_INT 0
40416: ST_TO_ADDR
// DialogueON ;
40417: CALL_OW 6
// Say ( JMM , D20-JMM-1 ) ;
40421: LD_EXP 1
40425: PPUSH
40426: LD_STRING D20-JMM-1
40428: PPUSH
40429: CALL_OW 88
// if IsOk ( Joan ) and GetSide ( Joan ) = americans then
40433: LD_EXP 12
40437: PPUSH
40438: CALL_OW 302
40442: PUSH
40443: LD_EXP 12
40447: PPUSH
40448: CALL_OW 255
40452: PUSH
40453: LD_EXP 176
40457: EQUAL
40458: AND
40459: IFFALSE 40473
// Say ( Joan , D20-Joan-1 ) ;
40461: LD_EXP 12
40465: PPUSH
40466: LD_STRING D20-Joan-1
40468: PPUSH
40469: CALL_OW 88
// if IsOk ( Lisa ) and GetSide ( Lisa ) = americans then
40473: LD_EXP 5
40477: PPUSH
40478: CALL_OW 302
40482: PUSH
40483: LD_EXP 5
40487: PPUSH
40488: CALL_OW 255
40492: PUSH
40493: LD_EXP 176
40497: EQUAL
40498: AND
40499: IFFALSE 40513
// Say ( Lisa , D20-Lisa-1 ) ;
40501: LD_EXP 5
40505: PPUSH
40506: LD_STRING D20-Lisa-1
40508: PPUSH
40509: CALL_OW 88
// if IsOk ( Donaldson ) and GetSide ( Donaldson ) = americans then
40513: LD_EXP 8
40517: PPUSH
40518: CALL_OW 302
40522: PUSH
40523: LD_EXP 8
40527: PPUSH
40528: CALL_OW 255
40532: PUSH
40533: LD_EXP 176
40537: EQUAL
40538: AND
40539: IFFALSE 40553
// Say ( Donaldson , D20-Don-1 ) ;
40541: LD_EXP 8
40545: PPUSH
40546: LD_STRING D20-Don-1
40548: PPUSH
40549: CALL_OW 88
// if IsOk ( Cornell ) and GetSide ( Cornell ) = americans then
40553: LD_EXP 10
40557: PPUSH
40558: CALL_OW 302
40562: PUSH
40563: LD_EXP 10
40567: PPUSH
40568: CALL_OW 255
40572: PUSH
40573: LD_EXP 176
40577: EQUAL
40578: AND
40579: IFFALSE 40593
// Say ( Cornell , D20-Corn-1 ) ;
40581: LD_EXP 10
40585: PPUSH
40586: LD_STRING D20-Corn-1
40588: PPUSH
40589: CALL_OW 88
// if IsOk ( Denis ) and GetSide ( Denis ) = americans then
40593: LD_EXP 11
40597: PPUSH
40598: CALL_OW 302
40602: PUSH
40603: LD_EXP 11
40607: PPUSH
40608: CALL_OW 255
40612: PUSH
40613: LD_EXP 176
40617: EQUAL
40618: AND
40619: IFFALSE 40633
// Say ( Denis , D20-Den-1 ) ;
40621: LD_EXP 11
40625: PPUSH
40626: LD_STRING D20-Den-1
40628: PPUSH
40629: CALL_OW 88
// if IsOk ( Bobby ) and GetSide ( Bobby ) = americans then
40633: LD_EXP 3
40637: PPUSH
40638: CALL_OW 302
40642: PUSH
40643: LD_EXP 3
40647: PPUSH
40648: CALL_OW 255
40652: PUSH
40653: LD_EXP 176
40657: EQUAL
40658: AND
40659: IFFALSE 40673
// Say ( Bobby , D20-Bobby-1 ) ;
40661: LD_EXP 3
40665: PPUSH
40666: LD_STRING D20-Bobby-1
40668: PPUSH
40669: CALL_OW 88
// if IsOk ( Gladstone ) and GetSide ( Gladstone ) = americans then
40673: LD_EXP 9
40677: PPUSH
40678: CALL_OW 302
40682: PUSH
40683: LD_EXP 9
40687: PPUSH
40688: CALL_OW 255
40692: PUSH
40693: LD_EXP 176
40697: EQUAL
40698: AND
40699: IFFALSE 40713
// Say ( Gladstone , D20-Glad-1 ) ;
40701: LD_EXP 9
40705: PPUSH
40706: LD_STRING D20-Glad-1
40708: PPUSH
40709: CALL_OW 88
// if IsOk ( Cyrus ) and GetSide ( Cyrus ) = americans then
40713: LD_EXP 4
40717: PPUSH
40718: CALL_OW 302
40722: PUSH
40723: LD_EXP 4
40727: PPUSH
40728: CALL_OW 255
40732: PUSH
40733: LD_EXP 176
40737: EQUAL
40738: AND
40739: IFFALSE 40753
// Say ( Cyrus , D20-Cyrus-1 ) ;
40741: LD_EXP 4
40745: PPUSH
40746: LD_STRING D20-Cyrus-1
40748: PPUSH
40749: CALL_OW 88
// if IsOk ( Stevens ) and GetSide ( Stevens ) = americans then
40753: LD_EXP 17
40757: PPUSH
40758: CALL_OW 302
40762: PUSH
40763: LD_EXP 17
40767: PPUSH
40768: CALL_OW 255
40772: PUSH
40773: LD_EXP 176
40777: EQUAL
40778: AND
40779: IFFALSE 40793
// Say ( Stevens , D20-Huck-1 ) ;
40781: LD_EXP 17
40785: PPUSH
40786: LD_STRING D20-Huck-1
40788: PPUSH
40789: CALL_OW 88
// if IsOk ( Brown ) and GetSide ( Brown ) = americans then
40793: LD_EXP 7
40797: PPUSH
40798: CALL_OW 302
40802: PUSH
40803: LD_EXP 7
40807: PPUSH
40808: CALL_OW 255
40812: PUSH
40813: LD_EXP 176
40817: EQUAL
40818: AND
40819: IFFALSE 40833
// Say ( Brown , D20-Brown-1 ) ;
40821: LD_EXP 7
40825: PPUSH
40826: LD_STRING D20-Brown-1
40828: PPUSH
40829: CALL_OW 88
// if IsOk ( Gary ) and GetSide ( Gary ) = americans then
40833: LD_EXP 15
40837: PPUSH
40838: CALL_OW 302
40842: PUSH
40843: LD_EXP 15
40847: PPUSH
40848: CALL_OW 255
40852: PUSH
40853: LD_EXP 176
40857: EQUAL
40858: AND
40859: IFFALSE 40873
// Say ( Gary , D20-Gary-1 ) ;
40861: LD_EXP 15
40865: PPUSH
40866: LD_STRING D20-Gary-1
40868: PPUSH
40869: CALL_OW 88
// if IsOk ( Coonie ) and GetSide ( Coonie ) = americans then
40873: LD_EXP 18
40877: PPUSH
40878: CALL_OW 302
40882: PUSH
40883: LD_EXP 18
40887: PPUSH
40888: CALL_OW 255
40892: PUSH
40893: LD_EXP 176
40897: EQUAL
40898: AND
40899: IFFALSE 40913
// Say ( Coonie , D20-Con-1 ) ;
40901: LD_EXP 18
40905: PPUSH
40906: LD_STRING D20-Con-1
40908: PPUSH
40909: CALL_OW 88
// if IsOk ( Kurt ) and GetSide ( Kurt ) = americans then
40913: LD_EXP 13
40917: PPUSH
40918: CALL_OW 302
40922: PUSH
40923: LD_EXP 13
40927: PPUSH
40928: CALL_OW 255
40932: PUSH
40933: LD_EXP 176
40937: EQUAL
40938: AND
40939: IFFALSE 40953
// Say ( Kurt , D20-Kurt-1 ) ;
40941: LD_EXP 13
40945: PPUSH
40946: LD_STRING D20-Kurt-1
40948: PPUSH
40949: CALL_OW 88
// if IsOk ( Yamoko ) and GetSide ( Yamoko ) = americans then
40953: LD_EXP 14
40957: PPUSH
40958: CALL_OW 302
40962: PUSH
40963: LD_EXP 14
40967: PPUSH
40968: CALL_OW 255
40972: PUSH
40973: LD_EXP 176
40977: EQUAL
40978: AND
40979: IFFALSE 40993
// Say ( Yamoko , D20-Yam-1 ) ;
40981: LD_EXP 14
40985: PPUSH
40986: LD_STRING D20-Yam-1
40988: PPUSH
40989: CALL_OW 88
// if IsOk ( Frank ) and GetSide ( Frank ) = americans then
40993: LD_EXP 6
40997: PPUSH
40998: CALL_OW 302
41002: PUSH
41003: LD_EXP 6
41007: PPUSH
41008: CALL_OW 255
41012: PUSH
41013: LD_EXP 176
41017: EQUAL
41018: AND
41019: IFFALSE 41033
// Say ( Frank , D20-Frank-1 ) ;
41021: LD_EXP 6
41025: PPUSH
41026: LD_STRING D20-Frank-1
41028: PPUSH
41029: CALL_OW 88
// DialogueOFF ;
41033: CALL_OW 7
// if Roth_Captured then
41037: LD_EXP 54
41041: IFFALSE 41063
// begin medal1 := true ;
41043: LD_ADDR_VAR 0 1
41047: PUSH
41048: LD_INT 1
41050: ST_TO_ADDR
// AddMedal ( Roth , 1 ) ;
41051: LD_STRING Roth
41053: PPUSH
41054: LD_INT 1
41056: PPUSH
41057: CALL_OW 101
// end else
41061: GO 41098
// begin if IsOk ( Roth ) then
41063: LD_EXP 20
41067: PPUSH
41068: CALL_OW 302
41072: IFFALSE 41087
// AddMedal ( Roth , - 2 ) else
41074: LD_STRING Roth
41076: PPUSH
41077: LD_INT 2
41079: NEG
41080: PPUSH
41081: CALL_OW 101
41085: GO 41098
// AddMedal ( Roth , - 1 ) ;
41087: LD_STRING Roth
41089: PPUSH
41090: LD_INT 1
41092: NEG
41093: PPUSH
41094: CALL_OW 101
// end ; AddMedal ( Project , Russian_project_canceled ) ;
41098: LD_STRING Project
41100: PPUSH
41101: LD_EXP 55
41105: PPUSH
41106: CALL_OW 101
// if Russian_project_canceled then
41110: LD_EXP 55
41114: IFFALSE 41124
// medal2 := true ;
41116: LD_ADDR_VAR 0 2
41120: PUSH
41121: LD_INT 1
41123: ST_TO_ADDR
// AddMedal ( NoLosses , No_Looses ) ;
41124: LD_STRING NoLosses
41126: PPUSH
41127: LD_EXP 56
41131: PPUSH
41132: CALL_OW 101
// if No_Looses then
41136: LD_EXP 56
41140: IFFALSE 41150
// medal3 := true ;
41142: LD_ADDR_VAR 0 3
41146: PUSH
41147: LD_INT 1
41149: ST_TO_ADDR
// SA_EndMission ( 1 , 15 , medal1 , medal2 , medal3 ) ;
41150: LD_INT 1
41152: PPUSH
41153: LD_INT 15
41155: PPUSH
41156: LD_VAR 0 1
41160: PPUSH
41161: LD_VAR 0 2
41165: PPUSH
41166: LD_VAR 0 3
41170: PPUSH
41171: CALL 56261 0 5
// SA_OnMissionComplete ;
41175: CALL 56231 0 0
// GiveMedals ( MAIN ) ;
41179: LD_STRING MAIN
41181: PPUSH
41182: CALL_OW 102
// SaveCharacters ( JMM , JMM ) ;
41186: LD_EXP 1
41190: PPUSH
41191: LD_STRING JMM
41193: PPUSH
41194: CALL_OW 38
// if IsLive ( Cyrus ) then
41198: LD_EXP 4
41202: PPUSH
41203: CALL_OW 300
41207: IFFALSE 41221
// SaveCharacters ( Cyrus , Cyrus ) ;
41209: LD_EXP 4
41213: PPUSH
41214: LD_STRING Cyrus
41216: PPUSH
41217: CALL_OW 38
// if IsLive ( Bobby ) then
41221: LD_EXP 3
41225: PPUSH
41226: CALL_OW 300
41230: IFFALSE 41244
// SaveCharacters ( Bobby , Bobby ) ;
41232: LD_EXP 3
41236: PPUSH
41237: LD_STRING Bobby
41239: PPUSH
41240: CALL_OW 38
// if IsLive ( Lisa ) then
41244: LD_EXP 5
41248: PPUSH
41249: CALL_OW 300
41253: IFFALSE 41267
// SaveCharacters ( Lisa , Lisa ) ;
41255: LD_EXP 5
41259: PPUSH
41260: LD_STRING Lisa
41262: PPUSH
41263: CALL_OW 38
// if IsLive ( Frank ) then
41267: LD_EXP 6
41271: PPUSH
41272: CALL_OW 300
41276: IFFALSE 41290
// SaveCharacters ( Frank , Frank ) ;
41278: LD_EXP 6
41282: PPUSH
41283: LD_STRING Frank
41285: PPUSH
41286: CALL_OW 38
// if IsLive ( Donaldson ) then
41290: LD_EXP 8
41294: PPUSH
41295: CALL_OW 300
41299: IFFALSE 41313
// SaveCharacters ( Donaldson , Donaldson ) ;
41301: LD_EXP 8
41305: PPUSH
41306: LD_STRING Donaldson
41308: PPUSH
41309: CALL_OW 38
// if IsLive ( Brown ) then
41313: LD_EXP 7
41317: PPUSH
41318: CALL_OW 300
41322: IFFALSE 41336
// SaveCharacters ( Brown , Brown ) ;
41324: LD_EXP 7
41328: PPUSH
41329: LD_STRING Brown
41331: PPUSH
41332: CALL_OW 38
// if IsLive ( Denis ) then
41336: LD_EXP 11
41340: PPUSH
41341: CALL_OW 300
41345: IFFALSE 41359
// SaveCharacters ( Denis , Denis ) ;
41347: LD_EXP 11
41351: PPUSH
41352: LD_STRING Denis
41354: PPUSH
41355: CALL_OW 38
// if IsLive ( Gladstone ) then
41359: LD_EXP 9
41363: PPUSH
41364: CALL_OW 300
41368: IFFALSE 41382
// SaveCharacters ( Gladstone , Gladstone ) ;
41370: LD_EXP 9
41374: PPUSH
41375: LD_STRING Gladstone
41377: PPUSH
41378: CALL_OW 38
// if IsLive ( Yamoko ) then
41382: LD_EXP 14
41386: PPUSH
41387: CALL_OW 300
41391: IFFALSE 41405
// SaveCharacters ( Yamoko , Yamoko ) ;
41393: LD_EXP 14
41397: PPUSH
41398: LD_STRING Yamoko
41400: PPUSH
41401: CALL_OW 38
// if IsLive ( Cornell ) then
41405: LD_EXP 10
41409: PPUSH
41410: CALL_OW 300
41414: IFFALSE 41428
// SaveCharacters ( Cornell , Cornell ) ;
41416: LD_EXP 10
41420: PPUSH
41421: LD_STRING Cornell
41423: PPUSH
41424: CALL_OW 38
// if IsLive ( Joan ) then
41428: LD_EXP 12
41432: PPUSH
41433: CALL_OW 300
41437: IFFALSE 41451
// SaveCharacters ( Joan , Joan ) ;
41439: LD_EXP 12
41443: PPUSH
41444: LD_STRING Joan
41446: PPUSH
41447: CALL_OW 38
// if IsLive ( Kurt ) then
41451: LD_EXP 13
41455: PPUSH
41456: CALL_OW 300
41460: IFFALSE 41474
// SaveCharacters ( Kurt , Kurt ) ;
41462: LD_EXP 13
41466: PPUSH
41467: LD_STRING Kurt
41469: PPUSH
41470: CALL_OW 38
// if IsLive ( Gary ) then
41474: LD_EXP 15
41478: PPUSH
41479: CALL_OW 300
41483: IFFALSE 41497
// SaveCharacters ( Gary , Gary ) ;
41485: LD_EXP 15
41489: PPUSH
41490: LD_STRING Gary
41492: PPUSH
41493: CALL_OW 38
// if IsLive ( Stevens ) then
41497: LD_EXP 17
41501: PPUSH
41502: CALL_OW 300
41506: IFFALSE 41520
// SaveCharacters ( Stevens , Stevens ) ;
41508: LD_EXP 17
41512: PPUSH
41513: LD_STRING Stevens
41515: PPUSH
41516: CALL_OW 38
// if IsLive ( Coonie ) then
41520: LD_EXP 18
41524: PPUSH
41525: CALL_OW 300
41529: IFFALSE 41543
// SaveCharacters ( Coonie , Coonie ) ;
41531: LD_EXP 18
41535: PPUSH
41536: LD_STRING Coonie
41538: PPUSH
41539: CALL_OW 38
// if IsLive ( Baker ) then
41543: LD_EXP 23
41547: PPUSH
41548: CALL_OW 300
41552: IFFALSE 41566
// SaveCharacters ( Baker , Baker ) ;
41554: LD_EXP 23
41558: PPUSH
41559: LD_STRING Baker
41561: PPUSH
41562: CALL_OW 38
// if IsLive ( VanHouten ) then
41566: LD_EXP 24
41570: PPUSH
41571: CALL_OW 300
41575: IFFALSE 41589
// SaveCharacters ( VanHouten , VanHouten ) ;
41577: LD_EXP 24
41581: PPUSH
41582: LD_STRING VanHouten
41584: PPUSH
41585: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_alive ] , [ f_side , americans ] , [ f_type , unit_human ] ] ) diff [ JMM , Cyrus , Bobby , Lisa , Frank , Donaldson , Brown , Denis , Gladstone , Yamoko , Cornell , Joan , Kurt , Gary , Stevens , Coonie , Baker , VanHouten ] , Am15Winners ) ;
41589: LD_INT 51
41591: PUSH
41592: EMPTY
41593: LIST
41594: PUSH
41595: LD_INT 22
41597: PUSH
41598: LD_EXP 176
41602: PUSH
41603: EMPTY
41604: LIST
41605: LIST
41606: PUSH
41607: LD_INT 21
41609: PUSH
41610: LD_INT 1
41612: PUSH
41613: EMPTY
41614: LIST
41615: LIST
41616: PUSH
41617: EMPTY
41618: LIST
41619: LIST
41620: LIST
41621: PPUSH
41622: CALL_OW 69
41626: PUSH
41627: LD_EXP 1
41631: PUSH
41632: LD_EXP 4
41636: PUSH
41637: LD_EXP 3
41641: PUSH
41642: LD_EXP 5
41646: PUSH
41647: LD_EXP 6
41651: PUSH
41652: LD_EXP 8
41656: PUSH
41657: LD_EXP 7
41661: PUSH
41662: LD_EXP 11
41666: PUSH
41667: LD_EXP 9
41671: PUSH
41672: LD_EXP 14
41676: PUSH
41677: LD_EXP 10
41681: PUSH
41682: LD_EXP 12
41686: PUSH
41687: LD_EXP 13
41691: PUSH
41692: LD_EXP 15
41696: PUSH
41697: LD_EXP 17
41701: PUSH
41702: LD_EXP 18
41706: PUSH
41707: LD_EXP 23
41711: PUSH
41712: LD_EXP 24
41716: PUSH
41717: EMPTY
41718: LIST
41719: LIST
41720: LIST
41721: LIST
41722: LIST
41723: LIST
41724: LIST
41725: LIST
41726: LIST
41727: LIST
41728: LIST
41729: LIST
41730: LIST
41731: LIST
41732: LIST
41733: LIST
41734: LIST
41735: LIST
41736: DIFF
41737: PPUSH
41738: LD_STRING Am15Winners
41740: PPUSH
41741: CALL_OW 38
// YouWin ;
41745: CALL_OW 103
// ExitGame ;
41749: CALL_OW 341
// end ; end_of_file
41753: PPOPN 3
41755: END
// export function StartRussianBase ; var i , Bunkers , Turrets , units_to_protect , Teleport1 , Teleport2 , R_Eng ; begin
41756: LD_INT 0
41758: PPUSH
41759: PPUSH
41760: PPUSH
41761: PPUSH
41762: PPUSH
41763: PPUSH
41764: PPUSH
41765: PPUSH
// Teleport1 = GetUnitNumber ( 165 , 60 ) ;
41766: LD_ADDR_VAR 0 6
41770: PUSH
41771: LD_INT 165
41773: PPUSH
41774: LD_INT 60
41776: PPUSH
41777: CALL_OW 438
41781: ST_TO_ADDR
// Teleport2 = GetUnitNumber ( 182 , 87 ) ;
41782: LD_ADDR_VAR 0 7
41786: PUSH
41787: LD_INT 182
41789: PPUSH
41790: LD_INT 87
41792: PPUSH
41793: CALL_OW 438
41797: ST_TO_ADDR
// TeleportExit ( Teleport1 , 90 , 71 ) ;
41798: LD_VAR 0 6
41802: PPUSH
41803: LD_INT 90
41805: PPUSH
41806: LD_INT 71
41808: PPUSH
41809: CALL_OW 243
// TeleportExit ( Teleport2 , 147 , 109 ) ;
41813: LD_VAR 0 7
41817: PPUSH
41818: LD_INT 147
41820: PPUSH
41821: LD_INT 109
41823: PPUSH
41824: CALL_OW 243
// for i = 3 to 4 do
41828: LD_ADDR_VAR 0 2
41832: PUSH
41833: DOUBLE
41834: LD_INT 3
41836: DEC
41837: ST_TO_ADDR
41838: LD_INT 4
41840: PUSH
41841: FOR_TO
41842: IFFALSE 41864
// ComEnterUnit ( Russian_scientists [ i ] , RusLab1 ) ;
41844: LD_EXP 108
41848: PUSH
41849: LD_VAR 0 2
41853: ARRAY
41854: PPUSH
41855: LD_INT 2
41857: PPUSH
41858: CALL_OW 120
41862: GO 41841
41864: POP
41865: POP
// for i = 5 to 6 do
41866: LD_ADDR_VAR 0 2
41870: PUSH
41871: DOUBLE
41872: LD_INT 5
41874: DEC
41875: ST_TO_ADDR
41876: LD_INT 6
41878: PUSH
41879: FOR_TO
41880: IFFALSE 41902
// ComEnterUnit ( Russian_scientists [ i ] , RusLab2 ) ;
41882: LD_EXP 108
41886: PUSH
41887: LD_VAR 0 2
41891: ARRAY
41892: PPUSH
41893: LD_INT 1
41895: PPUSH
41896: CALL_OW 120
41900: GO 41879
41902: POP
41903: POP
// for i = 3 to Number_of_Russian_Engineers do
41904: LD_ADDR_VAR 0 2
41908: PUSH
41909: DOUBLE
41910: LD_INT 3
41912: DEC
41913: ST_TO_ADDR
41914: LD_EXP 136
41918: PUSH
41919: FOR_TO
41920: IFFALSE 41960
// begin ComEnterUnit ( Russian_engineers [ i ] , RusLab2 ) ;
41922: LD_EXP 109
41926: PUSH
41927: LD_VAR 0 2
41931: ARRAY
41932: PPUSH
41933: LD_INT 1
41935: PPUSH
41936: CALL_OW 120
// AddComChangeProfession ( Russian_engineers [ i ] , class_scientistic ) ;
41940: LD_EXP 109
41944: PUSH
41945: LD_VAR 0 2
41949: ARRAY
41950: PPUSH
41951: LD_INT 4
41953: PPUSH
41954: CALL_OW 183
// end ;
41958: GO 41919
41960: POP
41961: POP
// ComResearch ( RusLab1 , tech_Comp1 ) ;
41962: LD_INT 2
41964: PPUSH
41965: LD_INT 57
41967: PPUSH
41968: CALL_OW 124
// ComResearch ( RusLab1 , tech_Comp2 ) ;
41972: LD_INT 2
41974: PPUSH
41975: LD_INT 58
41977: PPUSH
41978: CALL_OW 124
// AddComResearch ( RusLab1 , tech_Comp3 ) ;
41982: LD_INT 2
41984: PPUSH
41985: LD_INT 59
41987: PPUSH
41988: CALL_OW 184
// AddComResearch ( RusLab1 , tech_ST1 ) ;
41992: LD_INT 2
41994: PPUSH
41995: LD_INT 63
41997: PPUSH
41998: CALL_OW 184
// AddComResearch ( RusLab1 , tech_ST2 ) ;
42002: LD_INT 2
42004: PPUSH
42005: LD_INT 64
42007: PPUSH
42008: CALL_OW 184
// AddComResearch ( RusLab1 , tech_ST3 ) ;
42012: LD_INT 2
42014: PPUSH
42015: LD_INT 65
42017: PPUSH
42018: CALL_OW 184
// ComResearch ( RusLab2 , tech_Weap1 ) ;
42022: LD_INT 1
42024: PPUSH
42025: LD_INT 51
42027: PPUSH
42028: CALL_OW 124
// AddComResearch ( RusLab2 , tech_Weap2 ) ;
42032: LD_INT 1
42034: PPUSH
42035: LD_INT 52
42037: PPUSH
42038: CALL_OW 184
// AddComResearch ( RusLab2 , tech_SibFiss ) ;
42042: LD_INT 1
42044: PPUSH
42045: LD_INT 25
42047: PPUSH
42048: CALL_OW 184
// AddComResearch ( RusLab2 , tech_Weap3 ) ;
42052: LD_INT 1
42054: PPUSH
42055: LD_INT 53
42057: PPUSH
42058: CALL_OW 184
// AddComResearch ( RusLab2 , tech_Sib1 ) ;
42062: LD_INT 1
42064: PPUSH
42065: LD_INT 54
42067: PPUSH
42068: CALL_OW 184
// AddComResearch ( RusLab2 , tech_Sib2 ) ;
42072: LD_INT 1
42074: PPUSH
42075: LD_INT 55
42077: PPUSH
42078: CALL_OW 184
// AddComResearch ( RusLab2 , tech_Sib3 ) ;
42082: LD_INT 1
42084: PPUSH
42085: LD_INT 56
42087: PPUSH
42088: CALL_OW 184
// for i = 1 to 3 do
42092: LD_ADDR_VAR 0 2
42096: PUSH
42097: DOUBLE
42098: LD_INT 1
42100: DEC
42101: ST_TO_ADDR
42102: LD_INT 3
42104: PUSH
42105: FOR_TO
42106: IFFALSE 42136
// ComEnterUnit ( Russian_mechanics [ i ] , GetUnitNumber ( 195 , 84 ) ) ;
42108: LD_EXP 110
42112: PUSH
42113: LD_VAR 0 2
42117: ARRAY
42118: PPUSH
42119: LD_INT 195
42121: PPUSH
42122: LD_INT 84
42124: PPUSH
42125: CALL_OW 438
42129: PPUSH
42130: CALL_OW 120
42134: GO 42105
42136: POP
42137: POP
// for i = 4 to 6 do
42138: LD_ADDR_VAR 0 2
42142: PUSH
42143: DOUBLE
42144: LD_INT 4
42146: DEC
42147: ST_TO_ADDR
42148: LD_INT 6
42150: PUSH
42151: FOR_TO
42152: IFFALSE 42182
// ComEnterUnit ( Russian_mechanics [ i ] , GetUnitNumber ( 170 , 35 ) ) ;
42154: LD_EXP 110
42158: PUSH
42159: LD_VAR 0 2
42163: ARRAY
42164: PPUSH
42165: LD_INT 170
42167: PPUSH
42168: LD_INT 35
42170: PPUSH
42171: CALL_OW 438
42175: PPUSH
42176: CALL_OW 120
42180: GO 42151
42182: POP
42183: POP
// Bunkers = FilterAllUnits ( [ [ f_side , russians ] , [ f_type , unit_building ] , [ f_btype , b_bunker ] ] ) ;
42184: LD_ADDR_VAR 0 3
42188: PUSH
42189: LD_INT 22
42191: PUSH
42192: LD_EXP 178
42196: PUSH
42197: EMPTY
42198: LIST
42199: LIST
42200: PUSH
42201: LD_INT 21
42203: PUSH
42204: LD_INT 3
42206: PUSH
42207: EMPTY
42208: LIST
42209: LIST
42210: PUSH
42211: LD_INT 30
42213: PUSH
42214: LD_INT 32
42216: PUSH
42217: EMPTY
42218: LIST
42219: LIST
42220: PUSH
42221: EMPTY
42222: LIST
42223: LIST
42224: LIST
42225: PPUSH
42226: CALL_OW 69
42230: ST_TO_ADDR
// if Bunkers <= Russian_soldiers then
42231: LD_VAR 0 3
42235: PUSH
42236: LD_EXP 107
42240: LESSEQUAL
42241: IFFALSE 42339
// begin for i = 1 to Bunkers do
42243: LD_ADDR_VAR 0 2
42247: PUSH
42248: DOUBLE
42249: LD_INT 1
42251: DEC
42252: ST_TO_ADDR
42253: LD_VAR 0 3
42257: PUSH
42258: FOR_TO
42259: IFFALSE 42289
// ComEnterUnit ( Russian_soldiers [ i ] , Bunkers [ i ] ) ;
42261: LD_EXP 107
42265: PUSH
42266: LD_VAR 0 2
42270: ARRAY
42271: PPUSH
42272: LD_VAR 0 3
42276: PUSH
42277: LD_VAR 0 2
42281: ARRAY
42282: PPUSH
42283: CALL_OW 120
42287: GO 42258
42289: POP
42290: POP
// for i = Bunkers + 1 to Russian_soldiers do
42291: LD_ADDR_VAR 0 2
42295: PUSH
42296: DOUBLE
42297: LD_VAR 0 3
42301: PUSH
42302: LD_INT 1
42304: PLUS
42305: DEC
42306: ST_TO_ADDR
42307: LD_EXP 107
42311: PUSH
42312: FOR_TO
42313: IFFALSE 42335
// ComEnterUnit ( Russian_soldiers [ i ] , RusBarr1 ) ;
42315: LD_EXP 107
42319: PUSH
42320: LD_VAR 0 2
42324: ARRAY
42325: PPUSH
42326: LD_INT 27
42328: PPUSH
42329: CALL_OW 120
42333: GO 42312
42335: POP
42336: POP
// end else
42337: GO 42387
// begin for i = 1 to Russian_soldiers do
42339: LD_ADDR_VAR 0 2
42343: PUSH
42344: DOUBLE
42345: LD_INT 1
42347: DEC
42348: ST_TO_ADDR
42349: LD_EXP 107
42353: PUSH
42354: FOR_TO
42355: IFFALSE 42385
// ComEnterUnit ( Russian_soldiers [ i ] , Bunkers [ i ] ) ;
42357: LD_EXP 107
42361: PUSH
42362: LD_VAR 0 2
42366: ARRAY
42367: PPUSH
42368: LD_VAR 0 3
42372: PUSH
42373: LD_VAR 0 2
42377: ARRAY
42378: PPUSH
42379: CALL_OW 120
42383: GO 42354
42385: POP
42386: POP
// end ; Turrets = FilterAllUnits ( [ [ f_side , russians ] , [ f_type , unit_building ] , [ f_btype , b_turret ] ] ) ;
42387: LD_ADDR_VAR 0 4
42391: PUSH
42392: LD_INT 22
42394: PUSH
42395: LD_EXP 178
42399: PUSH
42400: EMPTY
42401: LIST
42402: LIST
42403: PUSH
42404: LD_INT 21
42406: PUSH
42407: LD_INT 3
42409: PUSH
42410: EMPTY
42411: LIST
42412: LIST
42413: PUSH
42414: LD_INT 30
42416: PUSH
42417: LD_INT 33
42419: PUSH
42420: EMPTY
42421: LIST
42422: LIST
42423: PUSH
42424: EMPTY
42425: LIST
42426: LIST
42427: LIST
42428: PPUSH
42429: CALL_OW 69
42433: ST_TO_ADDR
// units_to_protect = Bunkers ^ Turrets ^ RusBarr1 ^ RusBarr2 ;
42434: LD_ADDR_VAR 0 5
42438: PUSH
42439: LD_VAR 0 3
42443: PUSH
42444: LD_VAR 0 4
42448: ADD
42449: PUSH
42450: LD_INT 27
42452: ADD
42453: PUSH
42454: LD_INT 3
42456: ADD
42457: ST_TO_ADDR
// Russian_reg_def_id = McRegistry ( russians , [ [ mc_reg_area_to_guard , Rus_Base ] , [ mc_reg_area_to_protect , Rus_Base ] , [ mc_reg_units_to_protect , units_to_protect ] , - mc_reg_only_important , - mc_reg_ignore_fog ] ) ;
42458: LD_ADDR_EXP 244
42462: PUSH
42463: LD_EXP 178
42467: PPUSH
42468: LD_INT 2
42470: PUSH
42471: LD_INT 5
42473: PUSH
42474: EMPTY
42475: LIST
42476: LIST
42477: PUSH
42478: LD_INT 3
42480: PUSH
42481: LD_INT 5
42483: PUSH
42484: EMPTY
42485: LIST
42486: LIST
42487: PUSH
42488: LD_INT 4
42490: PUSH
42491: LD_VAR 0 5
42495: PUSH
42496: EMPTY
42497: LIST
42498: LIST
42499: PUSH
42500: LD_INT 8
42502: NEG
42503: PUSH
42504: LD_INT 7
42506: NEG
42507: PUSH
42508: EMPTY
42509: LIST
42510: LIST
42511: LIST
42512: LIST
42513: LIST
42514: PPUSH
42515: CALL_OW 399
42519: ST_TO_ADDR
// Russian_def_id = McDefend ( 100 , Russian_reg_def_id , Russian_soldiers ^ units_to_protect , [ [ mc_area_dont_leave , Rus_Base ] , [ mc_retreat_area_people , Rus_Heal ] , [ mc_retreat_lives_people , 550 ] ] ) ;
42520: LD_ADDR_EXP 245
42524: PUSH
42525: LD_INT 100
42527: PPUSH
42528: LD_EXP 244
42532: PPUSH
42533: LD_EXP 107
42537: PUSH
42538: LD_VAR 0 5
42542: ADD
42543: PPUSH
42544: LD_INT 2
42546: PUSH
42547: LD_INT 5
42549: PUSH
42550: EMPTY
42551: LIST
42552: LIST
42553: PUSH
42554: LD_INT 7
42556: PUSH
42557: LD_INT 27
42559: PUSH
42560: EMPTY
42561: LIST
42562: LIST
42563: PUSH
42564: LD_INT 5
42566: PUSH
42567: LD_INT 550
42569: PUSH
42570: EMPTY
42571: LIST
42572: LIST
42573: PUSH
42574: EMPTY
42575: LIST
42576: LIST
42577: LIST
42578: PPUSH
42579: CALL_OW 401
42583: ST_TO_ADDR
// R_Eng = [ ] ;
42584: LD_ADDR_VAR 0 8
42588: PUSH
42589: EMPTY
42590: ST_TO_ADDR
// for i = 3 to Russian_Engineers do
42591: LD_ADDR_VAR 0 2
42595: PUSH
42596: DOUBLE
42597: LD_INT 3
42599: DEC
42600: ST_TO_ADDR
42601: LD_EXP 109
42605: PUSH
42606: FOR_TO
42607: IFFALSE 42633
// R_Eng = R_Eng ^ Russian_Engineers [ i ] ;
42609: LD_ADDR_VAR 0 8
42613: PUSH
42614: LD_VAR 0 8
42618: PUSH
42619: LD_EXP 109
42623: PUSH
42624: LD_VAR 0 2
42628: ARRAY
42629: ADD
42630: ST_TO_ADDR
42631: GO 42606
42633: POP
42634: POP
// McBase ( Russian_build_id , R_Eng , Russian_Buildings , [ ] , [ ] , [ mc_base_cont ] ) ;
42635: LD_EXP 246
42639: PPUSH
42640: LD_VAR 0 8
42644: PPUSH
42645: LD_EXP 113
42649: PPUSH
42650: EMPTY
42651: PPUSH
42652: EMPTY
42653: PPUSH
42654: LD_INT 1
42656: PUSH
42657: EMPTY
42658: LIST
42659: PPUSH
42660: CALL_OW 397
// end ;
42664: LD_VAR 0 1
42668: RET
// export function ChangeScientists ( Uns ) ; var Un , hex , InBarr1 , InBarr2 , eng , i ; begin
42669: LD_INT 0
42671: PPUSH
42672: PPUSH
42673: PPUSH
42674: PPUSH
42675: PPUSH
42676: PPUSH
42677: PPUSH
// eng = Uns isect Russian_engineers ;
42678: LD_ADDR_VAR 0 7
42682: PUSH
42683: LD_VAR 0 1
42687: PUSH
42688: LD_EXP 109
42692: ISECT
42693: ST_TO_ADDR
// Uns = Uns diff ( Uns isect Russian_engineers ) ;
42694: LD_ADDR_VAR 0 1
42698: PUSH
42699: LD_VAR 0 1
42703: PUSH
42704: LD_VAR 0 1
42708: PUSH
42709: LD_EXP 109
42713: ISECT
42714: DIFF
42715: ST_TO_ADDR
// AddMcUnits ( Russian_build_id , eng ) ;
42716: LD_EXP 246
42720: PPUSH
42721: LD_VAR 0 7
42725: PPUSH
42726: CALL_OW 390
// for i = 1 to 2 do
42730: LD_ADDR_VAR 0 8
42734: PUSH
42735: DOUBLE
42736: LD_INT 1
42738: DEC
42739: ST_TO_ADDR
42740: LD_INT 2
42742: PUSH
42743: FOR_TO
42744: IFFALSE 42798
// if Uns <> 0 then
42746: LD_VAR 0 1
42750: PUSH
42751: LD_INT 0
42753: NONEQUAL
42754: IFFALSE 42796
// begin Rus_Doctors = Rus_Doctors ^ Russian_engineers [ 1 ] ;
42756: LD_ADDR_EXP 112
42760: PUSH
42761: LD_EXP 112
42765: PUSH
42766: LD_EXP 109
42770: PUSH
42771: LD_INT 1
42773: ARRAY
42774: ADD
42775: ST_TO_ADDR
// Uns = Uns diff Russian_engineers [ 1 ] ;
42776: LD_ADDR_VAR 0 1
42780: PUSH
42781: LD_VAR 0 1
42785: PUSH
42786: LD_EXP 109
42790: PUSH
42791: LD_INT 1
42793: ARRAY
42794: DIFF
42795: ST_TO_ADDR
// end ;
42796: GO 42743
42798: POP
42799: POP
// for Un in Rus_Doctors do
42800: LD_ADDR_VAR 0 3
42804: PUSH
42805: LD_EXP 112
42809: PUSH
42810: FOR_IN
42811: IFFALSE 42867
// begin hex = RandHexArea ( Rus_Heal , true ) ;
42813: LD_ADDR_VAR 0 4
42817: PUSH
42818: LD_INT 27
42820: PPUSH
42821: LD_INT 1
42823: PPUSH
42824: CALL_OW 16
42828: ST_TO_ADDR
// SetRememberedX ( Un , hex [ 1 ] ) ;
42829: LD_VAR 0 3
42833: PPUSH
42834: LD_VAR 0 4
42838: PUSH
42839: LD_INT 1
42841: ARRAY
42842: PPUSH
42843: CALL_OW 231
// SetRememberedY ( Un , hex [ 2 ] ) ;
42847: LD_VAR 0 3
42851: PPUSH
42852: LD_VAR 0 4
42856: PUSH
42857: LD_INT 2
42859: ARRAY
42860: PPUSH
42861: CALL_OW 232
// end ;
42865: GO 42810
42867: POP
42868: POP
// ComReturn ( Rus_Doctors ) ;
42869: LD_EXP 112
42873: PPUSH
42874: CALL_OW 144
// InBarr1 = UnitsInside ( RusBarr1 ) ;
42878: LD_ADDR_VAR 0 5
42882: PUSH
42883: LD_INT 27
42885: PPUSH
42886: CALL_OW 313
42890: ST_TO_ADDR
// InBarr2 = UnitsInside ( RusBarr2 ) ;
42891: LD_ADDR_VAR 0 6
42895: PUSH
42896: LD_INT 3
42898: PPUSH
42899: CALL_OW 313
42903: ST_TO_ADDR
// for Un in Uns do
42904: LD_ADDR_VAR 0 3
42908: PUSH
42909: LD_VAR 0 1
42913: PUSH
42914: FOR_IN
42915: IFFALSE 43085
// begin if InBarr1 < 6 then
42917: LD_VAR 0 5
42921: PUSH
42922: LD_INT 6
42924: LESS
42925: IFFALSE 42985
// begin InBarr1 = InBarr1 + 1 ;
42927: LD_ADDR_VAR 0 5
42931: PUSH
42932: LD_VAR 0 5
42936: PUSH
42937: LD_INT 1
42939: PLUS
42940: ST_TO_ADDR
// Russian_soldiers = Russian_soldiers ^ Un ;
42941: LD_ADDR_EXP 107
42945: PUSH
42946: LD_EXP 107
42950: PUSH
42951: LD_VAR 0 3
42955: ADD
42956: ST_TO_ADDR
// AddMcUnits ( Russian_def_id , Un ) ;
42957: LD_EXP 245
42961: PPUSH
42962: LD_VAR 0 3
42966: PPUSH
42967: CALL_OW 390
// ComEnterUnit ( Un , RusBarr1 ) ;
42971: LD_VAR 0 3
42975: PPUSH
42976: LD_INT 27
42978: PPUSH
42979: CALL_OW 120
// end else
42983: GO 43083
// if InBarr2 < 6 then
42985: LD_VAR 0 6
42989: PUSH
42990: LD_INT 6
42992: LESS
42993: IFFALSE 43053
// begin InBarr2 = InBarr2 + 1 ;
42995: LD_ADDR_VAR 0 6
42999: PUSH
43000: LD_VAR 0 6
43004: PUSH
43005: LD_INT 1
43007: PLUS
43008: ST_TO_ADDR
// Russian_soldiers = Russian_soldiers ^ Un ;
43009: LD_ADDR_EXP 107
43013: PUSH
43014: LD_EXP 107
43018: PUSH
43019: LD_VAR 0 3
43023: ADD
43024: ST_TO_ADDR
// AddMcUnits ( Russian_def_id , Un ) ;
43025: LD_EXP 245
43029: PPUSH
43030: LD_VAR 0 3
43034: PPUSH
43035: CALL_OW 390
// ComEnterUnit ( Un , RusBarr2 ) ;
43039: LD_VAR 0 3
43043: PPUSH
43044: LD_INT 3
43046: PPUSH
43047: CALL_OW 120
// end else
43051: GO 43083
// begin Russian_soldiers = Russian_soldiers ^ Un ;
43053: LD_ADDR_EXP 107
43057: PUSH
43058: LD_EXP 107
43062: PUSH
43063: LD_VAR 0 3
43067: ADD
43068: ST_TO_ADDR
// AddMcUnits ( Russian_def_id , Un ) ;
43069: LD_EXP 245
43073: PPUSH
43074: LD_VAR 0 3
43078: PPUSH
43079: CALL_OW 390
// end ; end ;
43083: GO 42914
43085: POP
43086: POP
// end ;
43087: LD_VAR 0 2
43091: RET
// every 0 0$5 do var Un ;
43092: GO 43094
43094: DISABLE
43095: LD_INT 0
43097: PPUSH
// begin for Un in Rus_Doctors do
43098: LD_ADDR_VAR 0 1
43102: PUSH
43103: LD_EXP 112
43107: PUSH
43108: FOR_IN
43109: IFFALSE 43199
// begin if not ( HasTask ( Un ) ) then
43111: LD_VAR 0 1
43115: PPUSH
43116: CALL_OW 314
43120: NOT
43121: IFFALSE 43197
// if ( GetClass ( Un ) <> class_scientistic ) then
43123: LD_VAR 0 1
43127: PPUSH
43128: CALL_OW 257
43132: PUSH
43133: LD_INT 4
43135: NONEQUAL
43136: IFFALSE 43173
// begin ComEnterUnit ( Un , RusLab2 ) ;
43138: LD_VAR 0 1
43142: PPUSH
43143: LD_INT 1
43145: PPUSH
43146: CALL_OW 120
// AddComChangeProfession ( Un , class_scientistic ) ;
43150: LD_VAR 0 1
43154: PPUSH
43155: LD_INT 4
43157: PPUSH
43158: CALL_OW 183
// AddComReturn ( Un ) ;
43162: LD_VAR 0 1
43166: PPUSH
43167: CALL_OW 204
// end else
43171: GO 43197
// if not ( IsInArea ( Un , Rus_Heal ) ) then
43173: LD_VAR 0 1
43177: PPUSH
43178: LD_INT 27
43180: PPUSH
43181: CALL_OW 308
43185: NOT
43186: IFFALSE 43197
// ComReturn ( Un ) ;
43188: LD_VAR 0 1
43192: PPUSH
43193: CALL_OW 144
// end ;
43197: GO 43108
43199: POP
43200: POP
// end ;
43201: PPOPN 1
43203: END
// function GetRandomVehicle ( time ) ; var Rand_Veh , Selected , Credits , Probab , engine ; begin
43204: LD_INT 0
43206: PPUSH
43207: PPUSH
43208: PPUSH
43209: PPUSH
43210: PPUSH
43211: PPUSH
// Selected = false ;
43212: LD_ADDR_VAR 0 4
43216: PUSH
43217: LD_INT 0
43219: ST_TO_ADDR
// engine = engine_siberite ;
43220: LD_ADDR_VAR 0 7
43224: PUSH
43225: LD_INT 3
43227: ST_TO_ADDR
// repeat Probab = Rand ( 1 , 100 ) ;
43228: LD_ADDR_VAR 0 6
43232: PUSH
43233: LD_INT 1
43235: PPUSH
43236: LD_INT 100
43238: PPUSH
43239: CALL_OW 12
43243: ST_TO_ADDR
// case time of 1 :
43244: LD_VAR 0 1
43248: PUSH
43249: LD_INT 1
43251: DOUBLE
43252: EQUAL
43253: IFTRUE 43257
43255: GO 43303
43257: POP
// Rand_Veh = [ 1 , 2 , 3 , 4 , 5 , 6 ] [ Rand ( 1 , 6 ) ] ; 2 :
43258: LD_ADDR_VAR 0 3
43262: PUSH
43263: LD_INT 1
43265: PUSH
43266: LD_INT 2
43268: PUSH
43269: LD_INT 3
43271: PUSH
43272: LD_INT 4
43274: PUSH
43275: LD_INT 5
43277: PUSH
43278: LD_INT 6
43280: PUSH
43281: EMPTY
43282: LIST
43283: LIST
43284: LIST
43285: LIST
43286: LIST
43287: LIST
43288: PUSH
43289: LD_INT 1
43291: PPUSH
43292: LD_INT 6
43294: PPUSH
43295: CALL_OW 12
43299: ARRAY
43300: ST_TO_ADDR
43301: GO 43420
43303: LD_INT 2
43305: DOUBLE
43306: EQUAL
43307: IFTRUE 43311
43309: GO 43357
43311: POP
// Rand_Veh = [ 3 , 4 , 5 , 6 , 7 , 8 ] [ Rand ( 1 , 6 ) ] ; 3 :
43312: LD_ADDR_VAR 0 3
43316: PUSH
43317: LD_INT 3
43319: PUSH
43320: LD_INT 4
43322: PUSH
43323: LD_INT 5
43325: PUSH
43326: LD_INT 6
43328: PUSH
43329: LD_INT 7
43331: PUSH
43332: LD_INT 8
43334: PUSH
43335: EMPTY
43336: LIST
43337: LIST
43338: LIST
43339: LIST
43340: LIST
43341: LIST
43342: PUSH
43343: LD_INT 1
43345: PPUSH
43346: LD_INT 6
43348: PPUSH
43349: CALL_OW 12
43353: ARRAY
43354: ST_TO_ADDR
43355: GO 43420
43357: LD_INT 3
43359: DOUBLE
43360: EQUAL
43361: IFTRUE 43365
43363: GO 43419
43365: POP
// Rand_Veh = [ 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ] [ Rand ( 1 , 8 ) ] ; end ;
43366: LD_ADDR_VAR 0 3
43370: PUSH
43371: LD_INT 5
43373: PUSH
43374: LD_INT 6
43376: PUSH
43377: LD_INT 7
43379: PUSH
43380: LD_INT 8
43382: PUSH
43383: LD_INT 9
43385: PUSH
43386: LD_INT 10
43388: PUSH
43389: LD_INT 11
43391: PUSH
43392: LD_INT 12
43394: PUSH
43395: EMPTY
43396: LIST
43397: LIST
43398: LIST
43399: LIST
43400: LIST
43401: LIST
43402: LIST
43403: LIST
43404: PUSH
43405: LD_INT 1
43407: PPUSH
43408: LD_INT 8
43410: PPUSH
43411: CALL_OW 12
43415: ARRAY
43416: ST_TO_ADDR
43417: GO 43420
43419: POP
// case Rand_Veh of 1 :
43420: LD_VAR 0 3
43424: PUSH
43425: LD_INT 1
43427: DOUBLE
43428: EQUAL
43429: IFTRUE 43433
43431: GO 43526
43433: POP
// begin if ( time <= 1 and Probab < 60 ) or ( time <= 3 and Probab < 20 ) then
43434: LD_VAR 0 1
43438: PUSH
43439: LD_INT 1
43441: LESSEQUAL
43442: PUSH
43443: LD_VAR 0 6
43447: PUSH
43448: LD_INT 60
43450: LESS
43451: AND
43452: PUSH
43453: LD_VAR 0 1
43457: PUSH
43458: LD_INT 3
43460: LESSEQUAL
43461: PUSH
43462: LD_VAR 0 6
43466: PUSH
43467: LD_INT 20
43469: LESS
43470: AND
43471: OR
43472: IFFALSE 43524
// begin Selected = true ;
43474: LD_ADDR_VAR 0 4
43478: PUSH
43479: LD_INT 1
43481: ST_TO_ADDR
// Credits = 3 ;
43482: LD_ADDR_VAR 0 5
43486: PUSH
43487: LD_INT 3
43489: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_medium_tracked , engine , control_computer , ru_heavy_machine_gun ] ] ;
43490: LD_ADDR_EXP 121
43494: PUSH
43495: LD_EXP 121
43499: PUSH
43500: LD_INT 22
43502: PUSH
43503: LD_VAR 0 7
43507: PUSH
43508: LD_INT 3
43510: PUSH
43511: LD_INT 42
43513: PUSH
43514: EMPTY
43515: LIST
43516: LIST
43517: LIST
43518: LIST
43519: PUSH
43520: EMPTY
43521: LIST
43522: ADD
43523: ST_TO_ADDR
// end ; end ; 2 :
43524: GO 44343
43526: LD_INT 2
43528: DOUBLE
43529: EQUAL
43530: IFTRUE 43534
43532: GO 43627
43534: POP
// begin if ( time <= 1 and Probab < 80 ) or ( time <= 3 and Probab < 30 ) then
43535: LD_VAR 0 1
43539: PUSH
43540: LD_INT 1
43542: LESSEQUAL
43543: PUSH
43544: LD_VAR 0 6
43548: PUSH
43549: LD_INT 80
43551: LESS
43552: AND
43553: PUSH
43554: LD_VAR 0 1
43558: PUSH
43559: LD_INT 3
43561: LESSEQUAL
43562: PUSH
43563: LD_VAR 0 6
43567: PUSH
43568: LD_INT 30
43570: LESS
43571: AND
43572: OR
43573: IFFALSE 43625
// begin Selected = true ;
43575: LD_ADDR_VAR 0 4
43579: PUSH
43580: LD_INT 1
43582: ST_TO_ADDR
// Credits = 4 ;
43583: LD_ADDR_VAR 0 5
43587: PUSH
43588: LD_INT 4
43590: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_heavy_machine_gun ] ] ;
43591: LD_ADDR_EXP 121
43595: PUSH
43596: LD_EXP 121
43600: PUSH
43601: LD_INT 24
43603: PUSH
43604: LD_VAR 0 7
43608: PUSH
43609: LD_INT 3
43611: PUSH
43612: LD_INT 42
43614: PUSH
43615: EMPTY
43616: LIST
43617: LIST
43618: LIST
43619: LIST
43620: PUSH
43621: EMPTY
43622: LIST
43623: ADD
43624: ST_TO_ADDR
// end ; end ; 4 :
43625: GO 44343
43627: LD_INT 4
43629: DOUBLE
43630: EQUAL
43631: IFTRUE 43635
43633: GO 43748
43635: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 80 ) or ( time > 3 and Probab < 50 ) then
43636: LD_VAR 0 1
43640: PUSH
43641: LD_INT 1
43643: LESSEQUAL
43644: PUSH
43645: LD_VAR 0 6
43649: PUSH
43650: LD_INT 100
43652: LESS
43653: AND
43654: PUSH
43655: LD_VAR 0 1
43659: PUSH
43660: LD_INT 3
43662: LESSEQUAL
43663: PUSH
43664: LD_VAR 0 6
43668: PUSH
43669: LD_INT 80
43671: LESS
43672: AND
43673: OR
43674: PUSH
43675: LD_VAR 0 1
43679: PUSH
43680: LD_INT 3
43682: GREATER
43683: PUSH
43684: LD_VAR 0 6
43688: PUSH
43689: LD_INT 50
43691: LESS
43692: AND
43693: OR
43694: IFFALSE 43746
// begin Selected = true ;
43696: LD_ADDR_VAR 0 4
43700: PUSH
43701: LD_INT 1
43703: ST_TO_ADDR
// Credits = 5 ;
43704: LD_ADDR_VAR 0 5
43708: PUSH
43709: LD_INT 5
43711: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_medium_tracked , engine , control_computer , ru_gatling_gun ] ] ;
43712: LD_ADDR_EXP 121
43716: PUSH
43717: LD_EXP 121
43721: PUSH
43722: LD_INT 22
43724: PUSH
43725: LD_VAR 0 7
43729: PUSH
43730: LD_INT 3
43732: PUSH
43733: LD_INT 43
43735: PUSH
43736: EMPTY
43737: LIST
43738: LIST
43739: LIST
43740: LIST
43741: PUSH
43742: EMPTY
43743: LIST
43744: ADD
43745: ST_TO_ADDR
// end ; end ; 3 :
43746: GO 44343
43748: LD_INT 3
43750: DOUBLE
43751: EQUAL
43752: IFTRUE 43756
43754: GO 43849
43756: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 40 ) then
43757: LD_VAR 0 1
43761: PUSH
43762: LD_INT 1
43764: LESSEQUAL
43765: PUSH
43766: LD_VAR 0 6
43770: PUSH
43771: LD_INT 100
43773: LESS
43774: AND
43775: PUSH
43776: LD_VAR 0 1
43780: PUSH
43781: LD_INT 3
43783: LESSEQUAL
43784: PUSH
43785: LD_VAR 0 6
43789: PUSH
43790: LD_INT 40
43792: LESS
43793: AND
43794: OR
43795: IFFALSE 43847
// begin Selected = true ;
43797: LD_ADDR_VAR 0 4
43801: PUSH
43802: LD_INT 1
43804: ST_TO_ADDR
// Credits = 5 ;
43805: LD_ADDR_VAR 0 5
43809: PUSH
43810: LD_INT 5
43812: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_medium_tracked , engine , control_computer , ru_gun ] ] ;
43813: LD_ADDR_EXP 121
43817: PUSH
43818: LD_EXP 121
43822: PUSH
43823: LD_INT 22
43825: PUSH
43826: LD_VAR 0 7
43830: PUSH
43831: LD_INT 3
43833: PUSH
43834: LD_INT 44
43836: PUSH
43837: EMPTY
43838: LIST
43839: LIST
43840: LIST
43841: LIST
43842: PUSH
43843: EMPTY
43844: LIST
43845: ADD
43846: ST_TO_ADDR
// end ; end ; 5 :
43847: GO 44343
43849: LD_INT 5
43851: DOUBLE
43852: EQUAL
43853: IFTRUE 43857
43855: GO 43910
43857: POP
// begin Selected = true ;
43858: LD_ADDR_VAR 0 4
43862: PUSH
43863: LD_INT 1
43865: ST_TO_ADDR
// Credits = 7 ;
43866: LD_ADDR_VAR 0 5
43870: PUSH
43871: LD_INT 7
43873: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_gatling_gun ] ] ;
43874: LD_ADDR_EXP 121
43878: PUSH
43879: LD_EXP 121
43883: PUSH
43884: LD_INT 24
43886: PUSH
43887: LD_VAR 0 7
43891: PUSH
43892: LD_INT 3
43894: PUSH
43895: LD_INT 43
43897: PUSH
43898: EMPTY
43899: LIST
43900: LIST
43901: LIST
43902: LIST
43903: PUSH
43904: EMPTY
43905: LIST
43906: ADD
43907: ST_TO_ADDR
// end ; 6 :
43908: GO 44343
43910: LD_INT 6
43912: DOUBLE
43913: EQUAL
43914: IFTRUE 43918
43916: GO 44031
43918: POP
// begin if ( time <= 1 and Probab < 100 ) or ( time <= 3 and Probab < 60 ) or ( time > 3 and Probab < 20 ) then
43919: LD_VAR 0 1
43923: PUSH
43924: LD_INT 1
43926: LESSEQUAL
43927: PUSH
43928: LD_VAR 0 6
43932: PUSH
43933: LD_INT 100
43935: LESS
43936: AND
43937: PUSH
43938: LD_VAR 0 1
43942: PUSH
43943: LD_INT 3
43945: LESSEQUAL
43946: PUSH
43947: LD_VAR 0 6
43951: PUSH
43952: LD_INT 60
43954: LESS
43955: AND
43956: OR
43957: PUSH
43958: LD_VAR 0 1
43962: PUSH
43963: LD_INT 3
43965: GREATER
43966: PUSH
43967: LD_VAR 0 6
43971: PUSH
43972: LD_INT 20
43974: LESS
43975: AND
43976: OR
43977: IFFALSE 44029
// begin Selected = true ;
43979: LD_ADDR_VAR 0 4
43983: PUSH
43984: LD_INT 1
43986: ST_TO_ADDR
// Credits = 7 ;
43987: LD_ADDR_VAR 0 5
43991: PUSH
43992: LD_INT 7
43994: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_gun ] ] ;
43995: LD_ADDR_EXP 121
43999: PUSH
44000: LD_EXP 121
44004: PUSH
44005: LD_INT 24
44007: PUSH
44008: LD_VAR 0 7
44012: PUSH
44013: LD_INT 3
44015: PUSH
44016: LD_INT 44
44018: PUSH
44019: EMPTY
44020: LIST
44021: LIST
44022: LIST
44023: LIST
44024: PUSH
44025: EMPTY
44026: LIST
44027: ADD
44028: ST_TO_ADDR
// end ; end ; 7 :
44029: GO 44343
44031: LD_INT 7
44033: DOUBLE
44034: EQUAL
44035: IFTRUE 44039
44037: GO 44092
44039: POP
// begin Selected = true ;
44040: LD_ADDR_VAR 0 4
44044: PUSH
44045: LD_INT 1
44047: ST_TO_ADDR
// Credits = 9 ;
44048: LD_ADDR_VAR 0 5
44052: PUSH
44053: LD_INT 9
44055: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_medium_tracked , engine , control_computer , ru_rocket_launcher ] ] ;
44056: LD_ADDR_EXP 121
44060: PUSH
44061: LD_EXP 121
44065: PUSH
44066: LD_INT 22
44068: PUSH
44069: LD_VAR 0 7
44073: PUSH
44074: LD_INT 3
44076: PUSH
44077: LD_INT 45
44079: PUSH
44080: EMPTY
44081: LIST
44082: LIST
44083: LIST
44084: LIST
44085: PUSH
44086: EMPTY
44087: LIST
44088: ADD
44089: ST_TO_ADDR
// end ; 8 :
44090: GO 44343
44092: LD_INT 8
44094: DOUBLE
44095: EQUAL
44096: IFTRUE 44100
44098: GO 44153
44100: POP
// begin Selected = true ;
44101: LD_ADDR_VAR 0 4
44105: PUSH
44106: LD_INT 1
44108: ST_TO_ADDR
// Credits = 11 ;
44109: LD_ADDR_VAR 0 5
44113: PUSH
44114: LD_INT 11
44116: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_rocket_launcher ] ] ;
44117: LD_ADDR_EXP 121
44121: PUSH
44122: LD_EXP 121
44126: PUSH
44127: LD_INT 24
44129: PUSH
44130: LD_VAR 0 7
44134: PUSH
44135: LD_INT 3
44137: PUSH
44138: LD_INT 45
44140: PUSH
44141: EMPTY
44142: LIST
44143: LIST
44144: LIST
44145: LIST
44146: PUSH
44147: EMPTY
44148: LIST
44149: ADD
44150: ST_TO_ADDR
// end ; 9 :
44151: GO 44343
44153: LD_INT 9
44155: DOUBLE
44156: EQUAL
44157: IFTRUE 44161
44159: GO 44214
44161: POP
// begin Selected = true ;
44162: LD_ADDR_VAR 0 4
44166: PUSH
44167: LD_INT 1
44169: ST_TO_ADDR
// Credits = 11 ;
44170: LD_ADDR_VAR 0 5
44174: PUSH
44175: LD_INT 11
44177: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_heavy_gun ] ] ;
44178: LD_ADDR_EXP 121
44182: PUSH
44183: LD_EXP 121
44187: PUSH
44188: LD_INT 24
44190: PUSH
44191: LD_VAR 0 7
44195: PUSH
44196: LD_INT 3
44198: PUSH
44199: LD_INT 46
44201: PUSH
44202: EMPTY
44203: LIST
44204: LIST
44205: LIST
44206: LIST
44207: PUSH
44208: EMPTY
44209: LIST
44210: ADD
44211: ST_TO_ADDR
// end ; 10 , 11 :
44212: GO 44343
44214: LD_INT 10
44216: DOUBLE
44217: EQUAL
44218: IFTRUE 44228
44220: LD_INT 11
44222: DOUBLE
44223: EQUAL
44224: IFTRUE 44228
44226: GO 44281
44228: POP
// begin Selected = true ;
44229: LD_ADDR_VAR 0 4
44233: PUSH
44234: LD_INT 1
44236: ST_TO_ADDR
// Credits = 15 ;
44237: LD_ADDR_VAR 0 5
44241: PUSH
44242: LD_INT 15
44244: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_rocket ] ] ;
44245: LD_ADDR_EXP 121
44249: PUSH
44250: LD_EXP 121
44254: PUSH
44255: LD_INT 24
44257: PUSH
44258: LD_VAR 0 7
44262: PUSH
44263: LD_INT 3
44265: PUSH
44266: LD_INT 47
44268: PUSH
44269: EMPTY
44270: LIST
44271: LIST
44272: LIST
44273: LIST
44274: PUSH
44275: EMPTY
44276: LIST
44277: ADD
44278: ST_TO_ADDR
// end ; 12 :
44279: GO 44343
44281: LD_INT 12
44283: DOUBLE
44284: EQUAL
44285: IFTRUE 44289
44287: GO 44342
44289: POP
// begin Selected = true ;
44290: LD_ADDR_VAR 0 4
44294: PUSH
44295: LD_INT 1
44297: ST_TO_ADDR
// Credits = 4 ;
44298: LD_ADDR_VAR 0 5
44302: PUSH
44303: LD_INT 4
44305: ST_TO_ADDR
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine , control_computer , ru_time_lapser ] ] ;
44306: LD_ADDR_EXP 121
44310: PUSH
44311: LD_EXP 121
44315: PUSH
44316: LD_INT 24
44318: PUSH
44319: LD_VAR 0 7
44323: PUSH
44324: LD_INT 3
44326: PUSH
44327: LD_INT 49
44329: PUSH
44330: EMPTY
44331: LIST
44332: LIST
44333: LIST
44334: LIST
44335: PUSH
44336: EMPTY
44337: LIST
44338: ADD
44339: ST_TO_ADDR
// end ; end ;
44340: GO 44343
44342: POP
// until Selected ;
44343: LD_VAR 0 4
44347: IFFALSE 43228
// Result = Credits ;
44349: LD_ADDR_VAR 0 2
44353: PUSH
44354: LD_VAR 0 5
44358: ST_TO_ADDR
// end ;
44359: LD_VAR 0 2
44363: RET
// function GenerateGroup ( Credits , time ) ; var Used_Credits , i ; begin
44364: LD_INT 0
44366: PPUSH
44367: PPUSH
44368: PPUSH
// Used_Credits = 0 ;
44369: LD_ADDR_VAR 0 4
44373: PUSH
44374: LD_INT 0
44376: ST_TO_ADDR
// if Russian_Siberite_Attack then
44377: LD_EXP 215
44381: IFFALSE 44493
// begin if CanBeConstructed ( GetUnitNumber ( 195 , 84 ) , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) or CanBeConstructed ( GetUnitNumber ( 170 , 35 ) , ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ) then
44383: LD_INT 195
44385: PPUSH
44386: LD_INT 84
44388: PPUSH
44389: CALL_OW 438
44393: PPUSH
44394: LD_INT 24
44396: PPUSH
44397: LD_INT 3
44399: PPUSH
44400: LD_INT 3
44402: PPUSH
44403: LD_INT 48
44405: PPUSH
44406: CALL_OW 448
44410: PUSH
44411: LD_INT 170
44413: PPUSH
44414: LD_INT 35
44416: PPUSH
44417: CALL_OW 438
44421: PPUSH
44422: LD_INT 24
44424: PPUSH
44425: LD_INT 3
44427: PPUSH
44428: LD_INT 3
44430: PPUSH
44431: LD_INT 48
44433: PPUSH
44434: CALL_OW 448
44438: OR
44439: IFFALSE 44493
// begin for i = 1 to 2 do
44441: LD_ADDR_VAR 0 5
44445: PUSH
44446: DOUBLE
44447: LD_INT 1
44449: DEC
44450: ST_TO_ADDR
44451: LD_INT 2
44453: PUSH
44454: FOR_TO
44455: IFFALSE 44491
// R_Attack_Group = R_Attack_Group ^ [ [ ru_heavy_tracked , engine_siberite , control_computer , ru_siberium_rocket ] ] ;
44457: LD_ADDR_EXP 121
44461: PUSH
44462: LD_EXP 121
44466: PUSH
44467: LD_INT 24
44469: PUSH
44470: LD_INT 3
44472: PUSH
44473: LD_INT 3
44475: PUSH
44476: LD_INT 48
44478: PUSH
44479: EMPTY
44480: LIST
44481: LIST
44482: LIST
44483: LIST
44484: PUSH
44485: EMPTY
44486: LIST
44487: ADD
44488: ST_TO_ADDR
44489: GO 44454
44491: POP
44492: POP
// end ; end ; repeat Used_Credits = Used_Credits + GetRandomVehicle ( time ) ;
44493: LD_ADDR_VAR 0 4
44497: PUSH
44498: LD_VAR 0 4
44502: PUSH
44503: LD_VAR 0 2
44507: PPUSH
44508: CALL 43204 0 1
44512: PLUS
44513: ST_TO_ADDR
// until Credits < Used_Credits ;
44514: LD_VAR 0 1
44518: PUSH
44519: LD_VAR 0 4
44523: LESS
44524: IFFALSE 44493
// result = Used_Credits ;
44526: LD_ADDR_VAR 0 3
44530: PUSH
44531: LD_VAR 0 4
44535: ST_TO_ADDR
// end ;
44536: LD_VAR 0 3
44540: RET
// function GenerateAttackingGroup ; var Power , Next_time , Number_of_units , Person , veh , i , Used_Credits , Credits , Strength_of_attack ; begin
44541: LD_INT 0
44543: PPUSH
44544: PPUSH
44545: PPUSH
44546: PPUSH
44547: PPUSH
44548: PPUSH
44549: PPUSH
44550: PPUSH
44551: PPUSH
44552: PPUSH
// Power = Rand ( 1 , 3 ) ;
44553: LD_ADDR_VAR 0 2
44557: PUSH
44558: LD_INT 1
44560: PPUSH
44561: LD_INT 3
44563: PPUSH
44564: CALL_OW 12
44568: ST_TO_ADDR
// Number_of_units = Rand ( 1 , 2 ) ;
44569: LD_ADDR_VAR 0 4
44573: PUSH
44574: LD_INT 1
44576: PPUSH
44577: LD_INT 2
44579: PPUSH
44580: CALL_OW 12
44584: ST_TO_ADDR
// R_Attack_Group = [ ] ;
44585: LD_ADDR_EXP 121
44589: PUSH
44590: EMPTY
44591: ST_TO_ADDR
// if tick < Rus_Attack_Time + 10 10$0 then
44592: LD_OWVAR 1
44596: PUSH
44597: LD_EXP 130
44601: PUSH
44602: LD_INT 21000
44604: PLUS
44605: LESS
44606: IFFALSE 44768
// begin case R_Attack_Counter of 1 :
44608: LD_EXP 117
44612: PUSH
44613: LD_INT 1
44615: DOUBLE
44616: EQUAL
44617: IFTRUE 44621
44619: GO 44686
44621: POP
// begin R_Attack_Group = R_Attack_Group ;
44622: LD_ADDR_EXP 121
44626: PUSH
44627: LD_EXP 121
44631: ST_TO_ADDR
// for i = 1 to 3 do
44632: LD_ADDR_VAR 0 7
44636: PUSH
44637: DOUBLE
44638: LD_INT 1
44640: DEC
44641: ST_TO_ADDR
44642: LD_INT 3
44644: PUSH
44645: FOR_TO
44646: IFFALSE 44682
// begin R_Attack_Group = R_Attack_Group ^ [ [ ru_medium_tracked , engine_siberite , control_computer , ru_gun ] ] ;
44648: LD_ADDR_EXP 121
44652: PUSH
44653: LD_EXP 121
44657: PUSH
44658: LD_INT 22
44660: PUSH
44661: LD_INT 3
44663: PUSH
44664: LD_INT 3
44666: PUSH
44667: LD_INT 44
44669: PUSH
44670: EMPTY
44671: LIST
44672: LIST
44673: LIST
44674: LIST
44675: PUSH
44676: EMPTY
44677: LIST
44678: ADD
44679: ST_TO_ADDR
// end ;
44680: GO 44645
44682: POP
44683: POP
// end ; else
44684: GO 44766
44686: POP
// begin Credits = 20 ;
44687: LD_ADDR_VAR 0 9
44691: PUSH
44692: LD_INT 20
44694: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R_Attack_Overflow , 1 ) ;
44695: LD_ADDR_VAR 0 8
44699: PUSH
44700: LD_VAR 0 9
44704: PUSH
44705: LD_EXP 214
44709: PLUS
44710: PPUSH
44711: LD_INT 1
44713: PPUSH
44714: CALL 44364 0 2
44718: ST_TO_ADDR
// R_Attack_Overflow = ( Credits + R_Attack_Overflow ) - Used_Credits ;
44719: LD_ADDR_EXP 214
44723: PUSH
44724: LD_VAR 0 9
44728: PUSH
44729: LD_EXP 214
44733: PLUS
44734: PUSH
44735: LD_VAR 0 8
44739: MINUS
44740: ST_TO_ADDR
// R_attack_time = [ 5 5$0 , 4 4$30 , 4 4$0 ] [ Difficulty ] ;
44741: LD_ADDR_EXP 115
44745: PUSH
44746: LD_INT 10500
44748: PUSH
44749: LD_INT 9450
44751: PUSH
44752: LD_INT 8400
44754: PUSH
44755: EMPTY
44756: LIST
44757: LIST
44758: LIST
44759: PUSH
44760: LD_OWVAR 67
44764: ARRAY
44765: ST_TO_ADDR
// end ; end ; end else
44766: GO 44989
// if tick < Rus_Attack_Time + 30 30$0 then
44768: LD_OWVAR 1
44772: PUSH
44773: LD_EXP 130
44777: PUSH
44778: LD_INT 63000
44780: PLUS
44781: LESS
44782: IFFALSE 44865
// begin Credits = 20 ;
44784: LD_ADDR_VAR 0 9
44788: PUSH
44789: LD_INT 20
44791: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R_Attack_Overflow , 2 ) ;
44792: LD_ADDR_VAR 0 8
44796: PUSH
44797: LD_VAR 0 9
44801: PUSH
44802: LD_EXP 214
44806: PLUS
44807: PPUSH
44808: LD_INT 2
44810: PPUSH
44811: CALL 44364 0 2
44815: ST_TO_ADDR
// R_Attack_Overflow = ( Credits + R_Attack_Overflow ) - Used_Credits ;
44816: LD_ADDR_EXP 214
44820: PUSH
44821: LD_VAR 0 9
44825: PUSH
44826: LD_EXP 214
44830: PLUS
44831: PUSH
44832: LD_VAR 0 8
44836: MINUS
44837: ST_TO_ADDR
// R_attack_time = [ 7 7$0 , 6 6$30 , 6 6$0 ] [ Difficulty ] ;
44838: LD_ADDR_EXP 115
44842: PUSH
44843: LD_INT 14700
44845: PUSH
44846: LD_INT 13650
44848: PUSH
44849: LD_INT 12600
44851: PUSH
44852: EMPTY
44853: LIST
44854: LIST
44855: LIST
44856: PUSH
44857: LD_OWVAR 67
44861: ARRAY
44862: ST_TO_ADDR
// end else
44863: GO 44989
// begin Strength_of_attack = Rand ( 1 , 7 ) ;
44865: LD_ADDR_VAR 0 10
44869: PUSH
44870: LD_INT 1
44872: PPUSH
44873: LD_INT 7
44875: PPUSH
44876: CALL_OW 12
44880: ST_TO_ADDR
// Credits = [ 6 , 8 , 10 ] [ Difficulty ] * Strength_of_attack ;
44881: LD_ADDR_VAR 0 9
44885: PUSH
44886: LD_INT 6
44888: PUSH
44889: LD_INT 8
44891: PUSH
44892: LD_INT 10
44894: PUSH
44895: EMPTY
44896: LIST
44897: LIST
44898: LIST
44899: PUSH
44900: LD_OWVAR 67
44904: ARRAY
44905: PUSH
44906: LD_VAR 0 10
44910: MUL
44911: ST_TO_ADDR
// Used_Credits = GenerateGroup ( Credits + R1_Attack_Overflow , 3 ) ;
44912: LD_ADDR_VAR 0 8
44916: PUSH
44917: LD_VAR 0 9
44921: PUSH
44922: LD_EXP 191
44926: PLUS
44927: PPUSH
44928: LD_INT 3
44930: PPUSH
44931: CALL 44364 0 2
44935: ST_TO_ADDR
// R1_Attack_Overflow = ( Credits + R1_Attack_Overflow ) - Used_Credits ;
44936: LD_ADDR_EXP 191
44940: PUSH
44941: LD_VAR 0 9
44945: PUSH
44946: LD_EXP 191
44950: PLUS
44951: PUSH
44952: LD_VAR 0 8
44956: MINUS
44957: ST_TO_ADDR
// R1_attack_time = [ 0 0$30 , 0 0$25 , 0 0$20 ] [ Difficulty ] * Strength_of_attack ;
44958: LD_ADDR_EXP 114
44962: PUSH
44963: LD_INT 1050
44965: PUSH
44966: LD_INT 875
44968: PUSH
44969: LD_INT 700
44971: PUSH
44972: EMPTY
44973: LIST
44974: LIST
44975: LIST
44976: PUSH
44977: LD_OWVAR 67
44981: ARRAY
44982: PUSH
44983: LD_VAR 0 10
44987: MUL
44988: ST_TO_ADDR
// end ; end ;
44989: LD_VAR 0 1
44993: RET
// function GeneratePatrolingGroup ; var i ; begin
44994: LD_INT 0
44996: PPUSH
44997: PPUSH
// R_Patrol_group = [ ] ;
44998: LD_ADDR_EXP 124
45002: PUSH
45003: EMPTY
45004: ST_TO_ADDR
// for i = 1 to 1 - ( R_Patrol_Group ^ [ ] ) do
45005: LD_ADDR_VAR 0 2
45009: PUSH
45010: DOUBLE
45011: LD_INT 1
45013: DEC
45014: ST_TO_ADDR
45015: LD_INT 1
45017: PUSH
45018: LD_EXP 124
45022: PUSH
45023: EMPTY
45024: ADD
45025: MINUS
45026: PUSH
45027: FOR_TO
45028: IFFALSE 45064
// R_Patrol_Group = R_Patrol_Group ^ [ [ ru_medium_tracked , engine_siberite , control_computer , ru_heavy_machine_gun ] ] ;
45030: LD_ADDR_EXP 124
45034: PUSH
45035: LD_EXP 124
45039: PUSH
45040: LD_INT 22
45042: PUSH
45043: LD_INT 3
45045: PUSH
45046: LD_INT 3
45048: PUSH
45049: LD_INT 42
45051: PUSH
45052: EMPTY
45053: LIST
45054: LIST
45055: LIST
45056: LIST
45057: PUSH
45058: EMPTY
45059: LIST
45060: ADD
45061: ST_TO_ADDR
45062: GO 45027
45064: POP
45065: POP
// end ;
45066: LD_VAR 0 1
45070: RET
// export function BuildGroups ( Constructed_vehicle ) ; var Un , i ; begin
45071: LD_INT 0
45073: PPUSH
45074: PPUSH
45075: PPUSH
// if Constructed_vehicle <> 0 then
45076: LD_VAR 0 1
45080: PUSH
45081: LD_INT 0
45083: NONEQUAL
45084: IFFALSE 45196
// begin if ( GetWeapon ( Constructed_vehicle ) = ru_heavy_machine_gun ) then
45086: LD_VAR 0 1
45090: PPUSH
45091: CALL_OW 264
45095: PUSH
45096: LD_INT 42
45098: EQUAL
45099: IFFALSE 45133
// begin R_Constructed_Patrol = R_Constructed_Patrol ^ Constructed_vehicle ;
45101: LD_ADDR_EXP 126
45105: PUSH
45106: LD_EXP 126
45110: PUSH
45111: LD_VAR 0 1
45115: ADD
45116: ST_TO_ADDR
// AddMcUnits ( Russian_def_id , Constructed_vehicle ) end else
45117: LD_EXP 245
45121: PPUSH
45122: LD_VAR 0 1
45126: PPUSH
45127: CALL_OW 390
45131: GO 45196
// if ( GetWeapon ( Constructed_vehicle ) = ru_siberium_rocket ) then
45133: LD_VAR 0 1
45137: PPUSH
45138: CALL_OW 264
45142: PUSH
45143: LD_INT 48
45145: EQUAL
45146: IFFALSE 45166
// begin Russian_Siberite_rockets = Russian_Siberite_rockets ^ Constructed_vehicle ;
45148: LD_ADDR_EXP 216
45152: PUSH
45153: LD_EXP 216
45157: PUSH
45158: LD_VAR 0 1
45162: ADD
45163: ST_TO_ADDR
// end else
45164: GO 45196
// begin R_Constructed_Attack = R_Constructed_Attack ^ Constructed_vehicle ;
45166: LD_ADDR_EXP 125
45170: PUSH
45171: LD_EXP 125
45175: PUSH
45176: LD_VAR 0 1
45180: ADD
45181: ST_TO_ADDR
// AddMcUnits ( Russian_def_id , Constructed_vehicle ) ;
45182: LD_EXP 245
45186: PPUSH
45187: LD_VAR 0 1
45191: PPUSH
45192: CALL_OW 390
// end end ; i = 1 ;
45196: LD_ADDR_VAR 0 4
45200: PUSH
45201: LD_INT 1
45203: ST_TO_ADDR
// while i <= R_Attack_Group do
45204: LD_VAR 0 4
45208: PUSH
45209: LD_EXP 121
45213: LESSEQUAL
45214: IFFALSE 45410
// begin if not ( CanBeConstructed ( GetUnitNumber ( 195 , 84 ) , R_Attack_Group [ i ] [ 1 ] , R_Attack_Group [ i ] [ 2 ] , R_Attack_Group [ i ] [ 3 ] , R_Attack_Group [ i ] [ 4 ] ) ) and not ( CanBeConstructed ( GetUnitNumber ( 170 , 35 ) , R_Attack_Group [ i ] [ 1 ] , R_Attack_Group [ i ] [ 2 ] , R_Attack_Group [ i ] [ 3 ] , R_Attack_Group [ i ] [ 4 ] ) ) then
45216: LD_INT 195
45218: PPUSH
45219: LD_INT 84
45221: PPUSH
45222: CALL_OW 438
45226: PPUSH
45227: LD_EXP 121
45231: PUSH
45232: LD_VAR 0 4
45236: ARRAY
45237: PUSH
45238: LD_INT 1
45240: ARRAY
45241: PPUSH
45242: LD_EXP 121
45246: PUSH
45247: LD_VAR 0 4
45251: ARRAY
45252: PUSH
45253: LD_INT 2
45255: ARRAY
45256: PPUSH
45257: LD_EXP 121
45261: PUSH
45262: LD_VAR 0 4
45266: ARRAY
45267: PUSH
45268: LD_INT 3
45270: ARRAY
45271: PPUSH
45272: LD_EXP 121
45276: PUSH
45277: LD_VAR 0 4
45281: ARRAY
45282: PUSH
45283: LD_INT 4
45285: ARRAY
45286: PPUSH
45287: CALL_OW 448
45291: NOT
45292: PUSH
45293: LD_INT 170
45295: PPUSH
45296: LD_INT 35
45298: PPUSH
45299: CALL_OW 438
45303: PPUSH
45304: LD_EXP 121
45308: PUSH
45309: LD_VAR 0 4
45313: ARRAY
45314: PUSH
45315: LD_INT 1
45317: ARRAY
45318: PPUSH
45319: LD_EXP 121
45323: PUSH
45324: LD_VAR 0 4
45328: ARRAY
45329: PUSH
45330: LD_INT 2
45332: ARRAY
45333: PPUSH
45334: LD_EXP 121
45338: PUSH
45339: LD_VAR 0 4
45343: ARRAY
45344: PUSH
45345: LD_INT 3
45347: ARRAY
45348: PPUSH
45349: LD_EXP 121
45353: PUSH
45354: LD_VAR 0 4
45358: ARRAY
45359: PUSH
45360: LD_INT 4
45362: ARRAY
45363: PPUSH
45364: CALL_OW 448
45368: NOT
45369: AND
45370: IFFALSE 45394
// R_Attack_Group = Delete ( R_Attack_Group , i ) else
45372: LD_ADDR_EXP 121
45376: PUSH
45377: LD_EXP 121
45381: PPUSH
45382: LD_VAR 0 4
45386: PPUSH
45387: CALL_OW 3
45391: ST_TO_ADDR
45392: GO 45408
// i = i + 1 ;
45394: LD_ADDR_VAR 0 4
45398: PUSH
45399: LD_VAR 0 4
45403: PUSH
45404: LD_INT 1
45406: PLUS
45407: ST_TO_ADDR
// end ;
45408: GO 45204
// i = 1 ;
45410: LD_ADDR_VAR 0 4
45414: PUSH
45415: LD_INT 1
45417: ST_TO_ADDR
// while i <= R_Patrol_Group do
45418: LD_VAR 0 4
45422: PUSH
45423: LD_EXP 124
45427: LESSEQUAL
45428: IFFALSE 45624
// begin if not ( CanBeConstructed ( GetUnitNumber ( 195 , 84 ) , R_Patrol_Group [ i ] [ 1 ] , R_Patrol_Group [ i ] [ 2 ] , R_Patrol_Group [ i ] [ 3 ] , R_Patrol_Group [ i ] [ 4 ] ) ) and not ( CanBeConstructed ( GetUnitNumber ( 170 , 35 ) , R_Patrol_Group [ i ] [ 1 ] , R_Patrol_Group [ i ] [ 2 ] , R_Patrol_Group [ i ] [ 3 ] , R_Patrol_Group [ i ] [ 4 ] ) ) then
45430: LD_INT 195
45432: PPUSH
45433: LD_INT 84
45435: PPUSH
45436: CALL_OW 438
45440: PPUSH
45441: LD_EXP 124
45445: PUSH
45446: LD_VAR 0 4
45450: ARRAY
45451: PUSH
45452: LD_INT 1
45454: ARRAY
45455: PPUSH
45456: LD_EXP 124
45460: PUSH
45461: LD_VAR 0 4
45465: ARRAY
45466: PUSH
45467: LD_INT 2
45469: ARRAY
45470: PPUSH
45471: LD_EXP 124
45475: PUSH
45476: LD_VAR 0 4
45480: ARRAY
45481: PUSH
45482: LD_INT 3
45484: ARRAY
45485: PPUSH
45486: LD_EXP 124
45490: PUSH
45491: LD_VAR 0 4
45495: ARRAY
45496: PUSH
45497: LD_INT 4
45499: ARRAY
45500: PPUSH
45501: CALL_OW 448
45505: NOT
45506: PUSH
45507: LD_INT 170
45509: PPUSH
45510: LD_INT 35
45512: PPUSH
45513: CALL_OW 438
45517: PPUSH
45518: LD_EXP 124
45522: PUSH
45523: LD_VAR 0 4
45527: ARRAY
45528: PUSH
45529: LD_INT 1
45531: ARRAY
45532: PPUSH
45533: LD_EXP 124
45537: PUSH
45538: LD_VAR 0 4
45542: ARRAY
45543: PUSH
45544: LD_INT 2
45546: ARRAY
45547: PPUSH
45548: LD_EXP 124
45552: PUSH
45553: LD_VAR 0 4
45557: ARRAY
45558: PUSH
45559: LD_INT 3
45561: ARRAY
45562: PPUSH
45563: LD_EXP 124
45567: PUSH
45568: LD_VAR 0 4
45572: ARRAY
45573: PUSH
45574: LD_INT 4
45576: ARRAY
45577: PPUSH
45578: CALL_OW 448
45582: NOT
45583: AND
45584: IFFALSE 45608
// R_Patrol_Group = Delete ( R_Patrol_Group , i ) else
45586: LD_ADDR_EXP 124
45590: PUSH
45591: LD_EXP 124
45595: PPUSH
45596: LD_VAR 0 4
45600: PPUSH
45601: CALL_OW 3
45605: ST_TO_ADDR
45606: GO 45622
// i = i + 1 ;
45608: LD_ADDR_VAR 0 4
45612: PUSH
45613: LD_VAR 0 4
45617: PUSH
45618: LD_INT 1
45620: PLUS
45621: ST_TO_ADDR
// end ;
45622: GO 45418
// if ( R_Attack_Group > 0 ) then
45624: LD_EXP 121
45628: PUSH
45629: LD_INT 0
45631: GREATER
45632: IFFALSE 45817
// if not ( BuildingStatus ( GetUnitNumber ( 195 , 84 ) ) = bs_working ) and CanBeConstructed ( GetUnitNumber ( 195 , 84 ) , R_Attack_Group [ 1 ] [ 1 ] , R_Attack_Group [ 1 ] [ 2 ] , R_Attack_Group [ 1 ] [ 3 ] , R_Attack_Group [ 1 ] [ 4 ] ) then
45634: LD_INT 195
45636: PPUSH
45637: LD_INT 84
45639: PPUSH
45640: CALL_OW 438
45644: PPUSH
45645: CALL_OW 461
45649: PUSH
45650: LD_INT 3
45652: EQUAL
45653: NOT
45654: PUSH
45655: LD_INT 195
45657: PPUSH
45658: LD_INT 84
45660: PPUSH
45661: CALL_OW 438
45665: PPUSH
45666: LD_EXP 121
45670: PUSH
45671: LD_INT 1
45673: ARRAY
45674: PUSH
45675: LD_INT 1
45677: ARRAY
45678: PPUSH
45679: LD_EXP 121
45683: PUSH
45684: LD_INT 1
45686: ARRAY
45687: PUSH
45688: LD_INT 2
45690: ARRAY
45691: PPUSH
45692: LD_EXP 121
45696: PUSH
45697: LD_INT 1
45699: ARRAY
45700: PUSH
45701: LD_INT 3
45703: ARRAY
45704: PPUSH
45705: LD_EXP 121
45709: PUSH
45710: LD_INT 1
45712: ARRAY
45713: PUSH
45714: LD_INT 4
45716: ARRAY
45717: PPUSH
45718: CALL_OW 448
45722: AND
45723: IFFALSE 45817
// begin ComConstruct ( GetUnitNumber ( 195 , 84 ) , R_Attack_Group [ 1 ] [ 1 ] , R_Attack_Group [ 1 ] [ 2 ] , R_Attack_Group [ 1 ] [ 3 ] , R_Attack_Group [ 1 ] [ 4 ] ) ;
45725: LD_INT 195
45727: PPUSH
45728: LD_INT 84
45730: PPUSH
45731: CALL_OW 438
45735: PPUSH
45736: LD_EXP 121
45740: PUSH
45741: LD_INT 1
45743: ARRAY
45744: PUSH
45745: LD_INT 1
45747: ARRAY
45748: PPUSH
45749: LD_EXP 121
45753: PUSH
45754: LD_INT 1
45756: ARRAY
45757: PUSH
45758: LD_INT 2
45760: ARRAY
45761: PPUSH
45762: LD_EXP 121
45766: PUSH
45767: LD_INT 1
45769: ARRAY
45770: PUSH
45771: LD_INT 3
45773: ARRAY
45774: PPUSH
45775: LD_EXP 121
45779: PUSH
45780: LD_INT 1
45782: ARRAY
45783: PUSH
45784: LD_INT 4
45786: ARRAY
45787: PPUSH
45788: CALL_OW 125
// R_Attack_Group = Delete ( R_Attack_Group , 1 ) ;
45792: LD_ADDR_EXP 121
45796: PUSH
45797: LD_EXP 121
45801: PPUSH
45802: LD_INT 1
45804: PPUSH
45805: CALL_OW 3
45809: ST_TO_ADDR
// Wait ( 1 ) ;
45810: LD_INT 1
45812: PPUSH
45813: CALL_OW 67
// end ; if ( R_Attack_Group > 0 ) then
45817: LD_EXP 121
45821: PUSH
45822: LD_INT 0
45824: GREATER
45825: IFFALSE 46010
// if not ( BuildingStatus ( GetUnitNumber ( 170 , 35 ) ) = bs_working ) and CanBeConstructed ( GetUnitNumber ( 170 , 35 ) , R_Attack_Group [ 1 ] [ 1 ] , R_Attack_Group [ 1 ] [ 2 ] , R_Attack_Group [ 1 ] [ 3 ] , R_Attack_Group [ 1 ] [ 4 ] ) then
45827: LD_INT 170
45829: PPUSH
45830: LD_INT 35
45832: PPUSH
45833: CALL_OW 438
45837: PPUSH
45838: CALL_OW 461
45842: PUSH
45843: LD_INT 3
45845: EQUAL
45846: NOT
45847: PUSH
45848: LD_INT 170
45850: PPUSH
45851: LD_INT 35
45853: PPUSH
45854: CALL_OW 438
45858: PPUSH
45859: LD_EXP 121
45863: PUSH
45864: LD_INT 1
45866: ARRAY
45867: PUSH
45868: LD_INT 1
45870: ARRAY
45871: PPUSH
45872: LD_EXP 121
45876: PUSH
45877: LD_INT 1
45879: ARRAY
45880: PUSH
45881: LD_INT 2
45883: ARRAY
45884: PPUSH
45885: LD_EXP 121
45889: PUSH
45890: LD_INT 1
45892: ARRAY
45893: PUSH
45894: LD_INT 3
45896: ARRAY
45897: PPUSH
45898: LD_EXP 121
45902: PUSH
45903: LD_INT 1
45905: ARRAY
45906: PUSH
45907: LD_INT 4
45909: ARRAY
45910: PPUSH
45911: CALL_OW 448
45915: AND
45916: IFFALSE 46010
// begin ComConstruct ( GetUnitNumber ( 170 , 35 ) , R_Attack_Group [ 1 ] [ 1 ] , R_Attack_Group [ 1 ] [ 2 ] , R_Attack_Group [ 1 ] [ 3 ] , R_Attack_Group [ 1 ] [ 4 ] ) ;
45918: LD_INT 170
45920: PPUSH
45921: LD_INT 35
45923: PPUSH
45924: CALL_OW 438
45928: PPUSH
45929: LD_EXP 121
45933: PUSH
45934: LD_INT 1
45936: ARRAY
45937: PUSH
45938: LD_INT 1
45940: ARRAY
45941: PPUSH
45942: LD_EXP 121
45946: PUSH
45947: LD_INT 1
45949: ARRAY
45950: PUSH
45951: LD_INT 2
45953: ARRAY
45954: PPUSH
45955: LD_EXP 121
45959: PUSH
45960: LD_INT 1
45962: ARRAY
45963: PUSH
45964: LD_INT 3
45966: ARRAY
45967: PPUSH
45968: LD_EXP 121
45972: PUSH
45973: LD_INT 1
45975: ARRAY
45976: PUSH
45977: LD_INT 4
45979: ARRAY
45980: PPUSH
45981: CALL_OW 125
// R_Attack_Group = Delete ( R_Attack_Group , 1 ) ;
45985: LD_ADDR_EXP 121
45989: PUSH
45990: LD_EXP 121
45994: PPUSH
45995: LD_INT 1
45997: PPUSH
45998: CALL_OW 3
46002: ST_TO_ADDR
// Wait ( 1 ) ;
46003: LD_INT 1
46005: PPUSH
46006: CALL_OW 67
// end ; if ( R_Patrol_Group > 0 ) then
46010: LD_EXP 124
46014: PUSH
46015: LD_INT 0
46017: GREATER
46018: IFFALSE 46203
// if not ( BuildingStatus ( GetUnitNumber ( 195 , 84 ) ) = bs_working ) and CanBeConstructed ( GetUnitNumber ( 195 , 84 ) , R_Patrol_Group [ 1 ] [ 1 ] , R_Patrol_Group [ 1 ] [ 2 ] , R_Patrol_Group [ 1 ] [ 3 ] , R_Patrol_Group [ 1 ] [ 4 ] ) then
46020: LD_INT 195
46022: PPUSH
46023: LD_INT 84
46025: PPUSH
46026: CALL_OW 438
46030: PPUSH
46031: CALL_OW 461
46035: PUSH
46036: LD_INT 3
46038: EQUAL
46039: NOT
46040: PUSH
46041: LD_INT 195
46043: PPUSH
46044: LD_INT 84
46046: PPUSH
46047: CALL_OW 438
46051: PPUSH
46052: LD_EXP 124
46056: PUSH
46057: LD_INT 1
46059: ARRAY
46060: PUSH
46061: LD_INT 1
46063: ARRAY
46064: PPUSH
46065: LD_EXP 124
46069: PUSH
46070: LD_INT 1
46072: ARRAY
46073: PUSH
46074: LD_INT 2
46076: ARRAY
46077: PPUSH
46078: LD_EXP 124
46082: PUSH
46083: LD_INT 1
46085: ARRAY
46086: PUSH
46087: LD_INT 3
46089: ARRAY
46090: PPUSH
46091: LD_EXP 124
46095: PUSH
46096: LD_INT 1
46098: ARRAY
46099: PUSH
46100: LD_INT 4
46102: ARRAY
46103: PPUSH
46104: CALL_OW 448
46108: AND
46109: IFFALSE 46203
// begin ComConstruct ( GetUnitNumber ( 195 , 84 ) , R_Patrol_Group [ 1 ] [ 1 ] , R_Patrol_Group [ 1 ] [ 2 ] , R_Patrol_Group [ 1 ] [ 3 ] , R_Patrol_Group [ 1 ] [ 4 ] ) ;
46111: LD_INT 195
46113: PPUSH
46114: LD_INT 84
46116: PPUSH
46117: CALL_OW 438
46121: PPUSH
46122: LD_EXP 124
46126: PUSH
46127: LD_INT 1
46129: ARRAY
46130: PUSH
46131: LD_INT 1
46133: ARRAY
46134: PPUSH
46135: LD_EXP 124
46139: PUSH
46140: LD_INT 1
46142: ARRAY
46143: PUSH
46144: LD_INT 2
46146: ARRAY
46147: PPUSH
46148: LD_EXP 124
46152: PUSH
46153: LD_INT 1
46155: ARRAY
46156: PUSH
46157: LD_INT 3
46159: ARRAY
46160: PPUSH
46161: LD_EXP 124
46165: PUSH
46166: LD_INT 1
46168: ARRAY
46169: PUSH
46170: LD_INT 4
46172: ARRAY
46173: PPUSH
46174: CALL_OW 125
// R_Patrol_Group = Delete ( R_Patrol_Group , 1 ) ;
46178: LD_ADDR_EXP 124
46182: PUSH
46183: LD_EXP 124
46187: PPUSH
46188: LD_INT 1
46190: PPUSH
46191: CALL_OW 3
46195: ST_TO_ADDR
// Wait ( 1 ) ;
46196: LD_INT 1
46198: PPUSH
46199: CALL_OW 67
// end ; if ( R_Patrol_Group > 0 ) then
46203: LD_EXP 124
46207: PUSH
46208: LD_INT 0
46210: GREATER
46211: IFFALSE 46396
// if not ( BuildingStatus ( GetUnitNumber ( 170 , 35 ) ) = bs_working ) and CanBeConstructed ( GetUnitNumber ( 170 , 35 ) , R_Patrol_Group [ 1 ] [ 1 ] , R_Patrol_Group [ 1 ] [ 2 ] , R_Patrol_Group [ 1 ] [ 3 ] , R_Patrol_Group [ 1 ] [ 4 ] ) then
46213: LD_INT 170
46215: PPUSH
46216: LD_INT 35
46218: PPUSH
46219: CALL_OW 438
46223: PPUSH
46224: CALL_OW 461
46228: PUSH
46229: LD_INT 3
46231: EQUAL
46232: NOT
46233: PUSH
46234: LD_INT 170
46236: PPUSH
46237: LD_INT 35
46239: PPUSH
46240: CALL_OW 438
46244: PPUSH
46245: LD_EXP 124
46249: PUSH
46250: LD_INT 1
46252: ARRAY
46253: PUSH
46254: LD_INT 1
46256: ARRAY
46257: PPUSH
46258: LD_EXP 124
46262: PUSH
46263: LD_INT 1
46265: ARRAY
46266: PUSH
46267: LD_INT 2
46269: ARRAY
46270: PPUSH
46271: LD_EXP 124
46275: PUSH
46276: LD_INT 1
46278: ARRAY
46279: PUSH
46280: LD_INT 3
46282: ARRAY
46283: PPUSH
46284: LD_EXP 124
46288: PUSH
46289: LD_INT 1
46291: ARRAY
46292: PUSH
46293: LD_INT 4
46295: ARRAY
46296: PPUSH
46297: CALL_OW 448
46301: AND
46302: IFFALSE 46396
// begin ComConstruct ( GetUnitNumber ( 170 , 35 ) , R_Patrol_Group [ 1 ] [ 1 ] , R_Patrol_Group [ 1 ] [ 2 ] , R_Patrol_Group [ 1 ] [ 3 ] , R_Patrol_Group [ 1 ] [ 4 ] ) ;
46304: LD_INT 170
46306: PPUSH
46307: LD_INT 35
46309: PPUSH
46310: CALL_OW 438
46314: PPUSH
46315: LD_EXP 124
46319: PUSH
46320: LD_INT 1
46322: ARRAY
46323: PUSH
46324: LD_INT 1
46326: ARRAY
46327: PPUSH
46328: LD_EXP 124
46332: PUSH
46333: LD_INT 1
46335: ARRAY
46336: PUSH
46337: LD_INT 2
46339: ARRAY
46340: PPUSH
46341: LD_EXP 124
46345: PUSH
46346: LD_INT 1
46348: ARRAY
46349: PUSH
46350: LD_INT 3
46352: ARRAY
46353: PPUSH
46354: LD_EXP 124
46358: PUSH
46359: LD_INT 1
46361: ARRAY
46362: PUSH
46363: LD_INT 4
46365: ARRAY
46366: PPUSH
46367: CALL_OW 125
// R_Patrol_Group = Delete ( R_Patrol_Group , 1 ) ;
46371: LD_ADDR_EXP 124
46375: PUSH
46376: LD_EXP 124
46380: PPUSH
46381: LD_INT 1
46383: PPUSH
46384: CALL_OW 3
46388: ST_TO_ADDR
// Wait ( 1 ) ;
46389: LD_INT 1
46391: PPUSH
46392: CALL_OW 67
// end ; end ;
46396: LD_VAR 0 2
46400: RET
// function SetAttackArea ; var Attack_Area ; begin
46401: LD_INT 0
46403: PPUSH
46404: PPUSH
// if FilterUnitsInArea ( Plan4 , [ f_side , americans ] ) > 0 then
46405: LD_INT 32
46407: PPUSH
46408: LD_INT 22
46410: PUSH
46411: LD_EXP 176
46415: PUSH
46416: EMPTY
46417: LIST
46418: LIST
46419: PPUSH
46420: CALL_OW 70
46424: PUSH
46425: LD_INT 0
46427: GREATER
46428: IFFALSE 46440
// attack_area = Plan4 else
46430: LD_ADDR_VAR 0 2
46434: PUSH
46435: LD_INT 32
46437: ST_TO_ADDR
46438: GO 46771
// if FilterUnitsInArea ( Plan6 , [ [ f_side , americans ] , f_not , [ f_type , unit_human ] ] ) > 0 then
46440: LD_INT 34
46442: PPUSH
46443: LD_INT 22
46445: PUSH
46446: LD_EXP 176
46450: PUSH
46451: EMPTY
46452: LIST
46453: LIST
46454: PUSH
46455: LD_INT 3
46457: PUSH
46458: LD_INT 21
46460: PUSH
46461: LD_INT 1
46463: PUSH
46464: EMPTY
46465: LIST
46466: LIST
46467: PUSH
46468: EMPTY
46469: LIST
46470: LIST
46471: LIST
46472: PPUSH
46473: CALL_OW 70
46477: PUSH
46478: LD_INT 0
46480: GREATER
46481: IFFALSE 46493
// attack_area = Plan6 else
46483: LD_ADDR_VAR 0 2
46487: PUSH
46488: LD_INT 34
46490: ST_TO_ADDR
46491: GO 46771
// if FilterUnitsInArea ( Am_Base , [ f_side , americans ] ) > 0 then
46493: LD_INT 1
46495: PPUSH
46496: LD_INT 22
46498: PUSH
46499: LD_EXP 176
46503: PUSH
46504: EMPTY
46505: LIST
46506: LIST
46507: PPUSH
46508: CALL_OW 70
46512: PUSH
46513: LD_INT 0
46515: GREATER
46516: IFFALSE 46528
// attack_area = Am_Base else
46518: LD_ADDR_VAR 0 2
46522: PUSH
46523: LD_INT 1
46525: ST_TO_ADDR
46526: GO 46771
// if FilterUnitsInArea ( JMM_Hill , [ f_side , americans ] ) > 0 then
46528: LD_INT 2
46530: PPUSH
46531: LD_INT 22
46533: PUSH
46534: LD_EXP 176
46538: PUSH
46539: EMPTY
46540: LIST
46541: LIST
46542: PPUSH
46543: CALL_OW 70
46547: PUSH
46548: LD_INT 0
46550: GREATER
46551: IFFALSE 46563
// attack_area = JMM_Hill else
46553: LD_ADDR_VAR 0 2
46557: PUSH
46558: LD_INT 2
46560: ST_TO_ADDR
46561: GO 46771
// if FilterUnitsInArea ( Plan3 , [ f_side , americans ] ) > 0 then
46563: LD_INT 31
46565: PPUSH
46566: LD_INT 22
46568: PUSH
46569: LD_EXP 176
46573: PUSH
46574: EMPTY
46575: LIST
46576: LIST
46577: PPUSH
46578: CALL_OW 70
46582: PUSH
46583: LD_INT 0
46585: GREATER
46586: IFFALSE 46598
// attack_area = Plan3 else
46588: LD_ADDR_VAR 0 2
46592: PUSH
46593: LD_INT 31
46595: ST_TO_ADDR
46596: GO 46771
// if FilterUnitsInArea ( Ar_Base , [ f_side , americans ] ) > 0 then
46598: LD_INT 17
46600: PPUSH
46601: LD_INT 22
46603: PUSH
46604: LD_EXP 176
46608: PUSH
46609: EMPTY
46610: LIST
46611: LIST
46612: PPUSH
46613: CALL_OW 70
46617: PUSH
46618: LD_INT 0
46620: GREATER
46621: IFFALSE 46633
// attack_area = Ar_Base else
46623: LD_ADDR_VAR 0 2
46627: PUSH
46628: LD_INT 17
46630: ST_TO_ADDR
46631: GO 46771
// if FilterUnitsInArea ( Plan5 , [ f_side , americans ] ) > 0 then
46633: LD_INT 33
46635: PPUSH
46636: LD_INT 22
46638: PUSH
46639: LD_EXP 176
46643: PUSH
46644: EMPTY
46645: LIST
46646: LIST
46647: PPUSH
46648: CALL_OW 70
46652: PUSH
46653: LD_INT 0
46655: GREATER
46656: IFFALSE 46668
// attack_area = Plan5 else
46658: LD_ADDR_VAR 0 2
46662: PUSH
46663: LD_INT 33
46665: ST_TO_ADDR
46666: GO 46771
// if FilterUnitsInArea ( Aliance_Base , [ f_side , americans ] ) > 0 then
46668: LD_INT 7
46670: PPUSH
46671: LD_INT 22
46673: PUSH
46674: LD_EXP 176
46678: PUSH
46679: EMPTY
46680: LIST
46681: LIST
46682: PPUSH
46683: CALL_OW 70
46687: PUSH
46688: LD_INT 0
46690: GREATER
46691: IFFALSE 46703
// attack_area = Aliance_Base else
46693: LD_ADDR_VAR 0 2
46697: PUSH
46698: LD_INT 7
46700: ST_TO_ADDR
46701: GO 46771
// if FilterUnitsInArea ( Plan1 , [ f_side , americans ] ) > 0 then
46703: LD_INT 29
46705: PPUSH
46706: LD_INT 22
46708: PUSH
46709: LD_EXP 176
46713: PUSH
46714: EMPTY
46715: LIST
46716: LIST
46717: PPUSH
46718: CALL_OW 70
46722: PUSH
46723: LD_INT 0
46725: GREATER
46726: IFFALSE 46738
// attack_area = Plan1 else
46728: LD_ADDR_VAR 0 2
46732: PUSH
46733: LD_INT 29
46735: ST_TO_ADDR
46736: GO 46771
// if FilterUnitsInArea ( Plan2 , [ f_side , americans ] ) > 0 then
46738: LD_INT 30
46740: PPUSH
46741: LD_INT 22
46743: PUSH
46744: LD_EXP 176
46748: PUSH
46749: EMPTY
46750: LIST
46751: LIST
46752: PPUSH
46753: CALL_OW 70
46757: PUSH
46758: LD_INT 0
46760: GREATER
46761: IFFALSE 46771
// attack_area = Plan2 ;
46763: LD_ADDR_VAR 0 2
46767: PUSH
46768: LD_INT 30
46770: ST_TO_ADDR
// result = Attack_Area ;
46771: LD_ADDR_VAR 0 1
46775: PUSH
46776: LD_VAR 0 2
46780: ST_TO_ADDR
// end ;
46781: LD_VAR 0 1
46785: RET
// function GoThroughTeleport ( Attack_Area ) ; var Teleport1 , Teleport2 ; begin
46786: LD_INT 0
46788: PPUSH
46789: PPUSH
46790: PPUSH
// Teleport1 = GetUnitNumber ( 165 , 60 ) ;
46791: LD_ADDR_VAR 0 3
46795: PUSH
46796: LD_INT 165
46798: PPUSH
46799: LD_INT 60
46801: PPUSH
46802: CALL_OW 438
46806: ST_TO_ADDR
// Teleport2 = GetUnitNumber ( 182 , 87 ) ;
46807: LD_ADDR_VAR 0 4
46811: PUSH
46812: LD_INT 182
46814: PPUSH
46815: LD_INT 87
46817: PPUSH
46818: CALL_OW 438
46822: ST_TO_ADDR
// if Attack_Area in [ Am_Base , JMM_Hill , Plan3 , Ar_Base , Plan1 ] then
46823: LD_VAR 0 1
46827: PUSH
46828: LD_INT 1
46830: PUSH
46831: LD_INT 2
46833: PUSH
46834: LD_INT 31
46836: PUSH
46837: LD_INT 17
46839: PUSH
46840: LD_INT 29
46842: PUSH
46843: EMPTY
46844: LIST
46845: LIST
46846: LIST
46847: LIST
46848: LIST
46849: IN
46850: IFFALSE 46918
// begin if IsOk ( Teleport1 ) then
46852: LD_VAR 0 3
46856: PPUSH
46857: CALL_OW 302
46861: IFFALSE 46885
// ComEnterUnit ( R_New_Attack ^ R_New_Patrol , Teleport1 ) else
46863: LD_EXP 131
46867: PUSH
46868: LD_EXP 132
46872: ADD
46873: PPUSH
46874: LD_VAR 0 3
46878: PPUSH
46879: CALL_OW 120
46883: GO 46916
// if IsOk ( Teleport2 ) then
46885: LD_VAR 0 4
46889: PPUSH
46890: CALL_OW 302
46894: IFFALSE 46916
// ComEnterUnit ( R_New_Attack ^ R_New_Patrol , Teleport2 ) end else
46896: LD_EXP 131
46900: PUSH
46901: LD_EXP 132
46905: ADD
46906: PPUSH
46907: LD_VAR 0 4
46911: PPUSH
46912: CALL_OW 120
46916: GO 46982
// begin if IsOk ( Teleport2 ) then
46918: LD_VAR 0 4
46922: PPUSH
46923: CALL_OW 302
46927: IFFALSE 46951
// ComEnterUnit ( R_New_Attack ^ R_New_Patrol , Teleport2 ) else
46929: LD_EXP 131
46933: PUSH
46934: LD_EXP 132
46938: ADD
46939: PPUSH
46940: LD_VAR 0 4
46944: PPUSH
46945: CALL_OW 120
46949: GO 46982
// if IsOk ( Teleport1 ) then
46951: LD_VAR 0 3
46955: PPUSH
46956: CALL_OW 302
46960: IFFALSE 46982
// ComEnterUnit ( R_New_Attack ^ R_New_Patrol , Teleport1 ) end ;
46962: LD_EXP 131
46966: PUSH
46967: LD_EXP 132
46971: ADD
46972: PPUSH
46973: LD_VAR 0 3
46977: PPUSH
46978: CALL_OW 120
// WaitTask ( R_New_Attack ^ R_New_Patrol , 1 ) ;
46982: LD_EXP 131
46986: PUSH
46987: LD_EXP 132
46991: ADD
46992: PPUSH
46993: LD_INT 1
46995: PPUSH
46996: CALL 17892 0 2
// end ;
47000: LD_VAR 0 2
47004: RET
// function StartOfRusAttack ( Attack_Area ) ; var Un ; begin
47005: LD_INT 0
47007: PPUSH
47008: PPUSH
// if Russian_Siberite_Attack then
47009: LD_EXP 215
47013: IFFALSE 47041
// for Un in Russian_Siberite_rockets do
47015: LD_ADDR_VAR 0 3
47019: PUSH
47020: LD_EXP 216
47024: PUSH
47025: FOR_IN
47026: IFFALSE 47039
// RSiberiteAttack ( Un ) ;
47028: LD_VAR 0 3
47032: PPUSH
47033: CALL 18535 0 1
47037: GO 47025
47039: POP
47040: POP
// if not ( ExistMc ( Russian_reg_id ) ) then
47041: LD_EXP 241
47045: PPUSH
47046: CALL_OW 386
47050: NOT
47051: IFFALSE 47109
// begin Russian_reg_id = McRegistry ( russians , [ [ mc_reg_refresh_time , 0 0$5 ] , [ mc_reg_area_to_guard , attack_area ] , - mc_reg_only_important , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
47053: LD_ADDR_EXP 241
47057: PUSH
47058: LD_EXP 178
47062: PPUSH
47063: LD_INT 1
47065: PUSH
47066: LD_INT 175
47068: PUSH
47069: EMPTY
47070: LIST
47071: LIST
47072: PUSH
47073: LD_INT 2
47075: PUSH
47076: LD_VAR 0 1
47080: PUSH
47081: EMPTY
47082: LIST
47083: LIST
47084: PUSH
47085: LD_INT 8
47087: NEG
47088: PUSH
47089: LD_INT 7
47091: PUSH
47092: LD_INT 9
47094: PUSH
47095: EMPTY
47096: LIST
47097: LIST
47098: LIST
47099: LIST
47100: LIST
47101: PPUSH
47102: CALL_OW 399
47106: ST_TO_ADDR
// end else
47107: GO 47133
// begin McRegistryChangeOptions ( Russian_reg_id , [ [ mc_reg_area_to_guard , attack_area ] ] ) ;
47109: LD_EXP 241
47113: PPUSH
47114: LD_INT 2
47116: PUSH
47117: LD_VAR 0 1
47121: PUSH
47122: EMPTY
47123: LIST
47124: LIST
47125: PUSH
47126: EMPTY
47127: LIST
47128: PPUSH
47129: CALL_OW 400
// end ; if not ( ExistMc ( Russian_att_id ) ) then
47133: LD_EXP 242
47137: PPUSH
47138: CALL_OW 386
47142: NOT
47143: IFFALSE 47220
// begin Russian_att_id = McAttack ( 100 , Russian_reg_id , Main_R_Attack_Group , [ [ mc_retreat_area_vehicles , retreat1 ] , [ mc_retreat_area_people , retreat1 ] , [ mc_retreat_lives_vehicles , 600 ] , [ mc_retreat_lives_people , 600 ] , mc_no_stop ] ) ;
47145: LD_ADDR_EXP 242
47149: PUSH
47150: LD_INT 100
47152: PPUSH
47153: LD_EXP 241
47157: PPUSH
47158: LD_EXP 120
47162: PPUSH
47163: LD_INT 8
47165: PUSH
47166: LD_INT 40
47168: PUSH
47169: EMPTY
47170: LIST
47171: LIST
47172: PUSH
47173: LD_INT 7
47175: PUSH
47176: LD_INT 40
47178: PUSH
47179: EMPTY
47180: LIST
47181: LIST
47182: PUSH
47183: LD_INT 6
47185: PUSH
47186: LD_INT 600
47188: PUSH
47189: EMPTY
47190: LIST
47191: LIST
47192: PUSH
47193: LD_INT 5
47195: PUSH
47196: LD_INT 600
47198: PUSH
47199: EMPTY
47200: LIST
47201: LIST
47202: PUSH
47203: LD_INT 10
47205: PUSH
47206: EMPTY
47207: LIST
47208: LIST
47209: LIST
47210: LIST
47211: LIST
47212: PPUSH
47213: CALL_OW 402
47217: ST_TO_ADDR
// end else
47218: GO 47240
// begin AddMcUnits ( Russian_att_id , R_New_Attack ^ R_New_Patrol ) ;
47220: LD_EXP 242
47224: PPUSH
47225: LD_EXP 131
47229: PUSH
47230: LD_EXP 132
47234: ADD
47235: PPUSH
47236: CALL_OW 390
// end ; RemoveMcUnits ( Russian_def_id , R_New_Attack ^ R_New_Patrol ) ;
47240: LD_EXP 245
47244: PPUSH
47245: LD_EXP 131
47249: PUSH
47250: LD_EXP 132
47254: ADD
47255: PPUSH
47256: CALL_OW 391
// end ;
47260: LD_VAR 0 2
47264: RET
// export function RusAttack ; var Attack_Area ; begin
47265: LD_INT 0
47267: PPUSH
47268: PPUSH
// while ( FilterUnitsInArea ( R_base , [ [ f_side , americans ] , [ f_ok ] ] ) > 0 ) do
47269: LD_INT 36
47271: PPUSH
47272: LD_INT 22
47274: PUSH
47275: LD_EXP 176
47279: PUSH
47280: EMPTY
47281: LIST
47282: LIST
47283: PUSH
47284: LD_INT 50
47286: PUSH
47287: EMPTY
47288: LIST
47289: PUSH
47290: EMPTY
47291: LIST
47292: LIST
47293: PPUSH
47294: CALL_OW 70
47298: PUSH
47299: LD_INT 0
47301: GREATER
47302: IFFALSE 47313
// Wait ( 0 0$10 ) ;
47304: LD_INT 350
47306: PPUSH
47307: CALL_OW 67
47311: GO 47269
// Main_R_Attack_Group = Main_R_Attack_Group ^ R_New_Attack ^ R_New_Patrol ;
47313: LD_ADDR_EXP 120
47317: PUSH
47318: LD_EXP 120
47322: PUSH
47323: LD_EXP 131
47327: ADD
47328: PUSH
47329: LD_EXP 132
47333: ADD
47334: ST_TO_ADDR
// Main_R_Attack_Group = UnitFilter ( Main_R_Attack_Group , [ f_ok ] ) ;
47335: LD_ADDR_EXP 120
47339: PUSH
47340: LD_EXP 120
47344: PPUSH
47345: LD_INT 50
47347: PUSH
47348: EMPTY
47349: LIST
47350: PPUSH
47351: CALL_OW 72
47355: ST_TO_ADDR
// Attack_Area = SetAttackArea ;
47356: LD_ADDR_VAR 0 2
47360: PUSH
47361: CALL 46401 0 0
47365: ST_TO_ADDR
// if ( R_New_Attack ^ R_New_Patrol <> 0 ) then
47366: LD_EXP 131
47370: PUSH
47371: LD_EXP 132
47375: ADD
47376: PUSH
47377: LD_INT 0
47379: NONEQUAL
47380: IFFALSE 47391
// GoThroughTeleport ( Attack_Area ) ;
47382: LD_VAR 0 2
47386: PPUSH
47387: CALL 46786 0 1
// StartOfRusAttack ( Attack_Area ) ;
47391: LD_VAR 0 2
47395: PPUSH
47396: CALL 47005 0 1
// end ;
47400: LD_VAR 0 1
47404: RET
// every 0 0$1 trigger tick > Rus_Attack_Time marked 10 do
47405: LD_OWVAR 1
47409: PUSH
47410: LD_EXP 130
47414: GREATER
47415: IFFALSE 47656
47417: GO 47419
47419: DISABLE
// begin disable ;
47420: DISABLE
// while true do
47421: LD_INT 1
47423: IFFALSE 47656
// begin if Main_R_Attack_Group < 40 then
47425: LD_EXP 120
47429: PUSH
47430: LD_INT 40
47432: LESS
47433: IFFALSE 47464
// begin R_Attack_counter = R_Attack_counter + 1 ;
47435: LD_ADDR_EXP 117
47439: PUSH
47440: LD_EXP 117
47444: PUSH
47445: LD_INT 1
47447: PLUS
47448: ST_TO_ADDR
// GenerateAttackingGroup ;
47449: CALL 44541 0 0
// GeneratePatrolingGroup ;
47453: CALL 44994 0 0
// BuildGroups ( 0 ) ;
47457: LD_INT 0
47459: PPUSH
47460: CALL 45071 0 1
// end ; while ( R_Attack_Group <> 0 ) or ( R_Patrol_Group <> 0 ) or ( BuildingStatus ( GetUnitNumber ( 170 , 35 ) ) = bs_working ) or ( BuildingStatus ( GetUnitNumber ( 195 , 84 ) ) = bs_working ) do
47464: LD_EXP 121
47468: PUSH
47469: LD_INT 0
47471: NONEQUAL
47472: PUSH
47473: LD_EXP 124
47477: PUSH
47478: LD_INT 0
47480: NONEQUAL
47481: OR
47482: PUSH
47483: LD_INT 170
47485: PPUSH
47486: LD_INT 35
47488: PPUSH
47489: CALL_OW 438
47493: PPUSH
47494: CALL_OW 461
47498: PUSH
47499: LD_INT 3
47501: EQUAL
47502: OR
47503: PUSH
47504: LD_INT 195
47506: PPUSH
47507: LD_INT 84
47509: PPUSH
47510: CALL_OW 438
47514: PPUSH
47515: CALL_OW 461
47519: PUSH
47520: LD_INT 3
47522: EQUAL
47523: OR
47524: IFFALSE 47535
// Wait ( 1 1$0 ) ;
47526: LD_INT 2100
47528: PPUSH
47529: CALL_OW 67
47533: GO 47464
// if ( R_New_Attack ^ R_New_Patrol ) = 0 then
47535: LD_EXP 131
47539: PUSH
47540: LD_EXP 132
47544: ADD
47545: PUSH
47546: LD_INT 0
47548: EQUAL
47549: IFFALSE 47560
// Wait ( 0 0$15 ) else
47551: LD_INT 525
47553: PPUSH
47554: CALL_OW 67
47558: GO 47611
// begin while R_attack_time > 0 0$15 do
47560: LD_EXP 115
47564: PUSH
47565: LD_INT 525
47567: GREATER
47568: IFFALSE 47602
// begin R_attack_time = R_attack_time - 0 0$15 ;
47570: LD_ADDR_EXP 115
47574: PUSH
47575: LD_EXP 115
47579: PUSH
47580: LD_INT 525
47582: MINUS
47583: ST_TO_ADDR
// RaiseSailEvent ( Rus_Attack ) ;
47584: LD_EXP 171
47588: PPUSH
47589: CALL_OW 427
// Wait ( 0 0$15 ) ;
47593: LD_INT 525
47595: PPUSH
47596: CALL_OW 67
// end ;
47600: GO 47560
// Wait ( R_attack_time ) ;
47602: LD_EXP 115
47606: PPUSH
47607: CALL_OW 67
// end ; R_New_Attack = R_Constructed_Attack ;
47611: LD_ADDR_EXP 131
47615: PUSH
47616: LD_EXP 125
47620: ST_TO_ADDR
// R_Constructed_Attack = [ ] ;
47621: LD_ADDR_EXP 125
47625: PUSH
47626: EMPTY
47627: ST_TO_ADDR
// R_New_Patrol = R_Constructed_Patrol ;
47628: LD_ADDR_EXP 132
47632: PUSH
47633: LD_EXP 126
47637: ST_TO_ADDR
// R_Constructed_Patrol = [ ] ;
47638: LD_ADDR_EXP 126
47642: PUSH
47643: EMPTY
47644: ST_TO_ADDR
// RaiseSailEvent ( Rus_Attack ) ;
47645: LD_EXP 171
47649: PPUSH
47650: CALL_OW 427
// end ;
47654: GO 47421
// end ;
47656: END
// every 0 0$1 trigger Russian_Siberite_Attack do var Un ;
47657: LD_EXP 215
47661: IFFALSE 47695
47663: GO 47665
47665: DISABLE
47666: LD_INT 0
47668: PPUSH
// begin for Un in Russian_Siberite_rockets do
47669: LD_ADDR_VAR 0 1
47673: PUSH
47674: LD_EXP 216
47678: PUSH
47679: FOR_IN
47680: IFFALSE 47693
// RSiberiteAttack ( Un ) ;
47682: LD_VAR 0 1
47686: PPUSH
47687: CALL 18535 0 1
47691: GO 47679
47693: POP
47694: POP
// end ;
47695: PPOPN 1
47697: END
// every 0 0$30 do var Dep1 , Dep2 , Dep3 ;
47698: GO 47700
47700: DISABLE
47701: LD_INT 0
47703: PPUSH
47704: PPUSH
47705: PPUSH
// begin Dep1 = GetUnitNumber ( 175 , 56 ) ;
47706: LD_ADDR_VAR 0 1
47710: PUSH
47711: LD_INT 175
47713: PPUSH
47714: LD_INT 56
47716: PPUSH
47717: CALL_OW 438
47721: ST_TO_ADDR
// Dep2 = GetUnitNumber ( 175 , 81 ) ;
47722: LD_ADDR_VAR 0 2
47726: PUSH
47727: LD_INT 175
47729: PPUSH
47730: LD_INT 81
47732: PPUSH
47733: CALL_OW 438
47737: ST_TO_ADDR
// Dep3 = GetUnitNumber ( 213 , 117 ) ;
47738: LD_ADDR_VAR 0 3
47742: PUSH
47743: LD_INT 213
47745: PPUSH
47746: LD_INT 117
47748: PPUSH
47749: CALL_OW 438
47753: ST_TO_ADDR
// if IsOk ( Dep1 ) and GetSide ( Dep1 ) = russians then
47754: LD_VAR 0 1
47758: PPUSH
47759: CALL_OW 302
47763: PUSH
47764: LD_VAR 0 1
47768: PPUSH
47769: CALL_OW 255
47773: PUSH
47774: LD_EXP 178
47778: EQUAL
47779: AND
47780: IFFALSE 47838
// begin SetResourceType ( GetBase ( Dep1 ) , mat_siberit , rand ( 1500 , 2000 ) ) ;
47782: LD_VAR 0 1
47786: PPUSH
47787: CALL_OW 274
47791: PPUSH
47792: LD_INT 3
47794: PPUSH
47795: LD_INT 1500
47797: PPUSH
47798: LD_INT 2000
47800: PPUSH
47801: CALL_OW 12
47805: PPUSH
47806: CALL_OW 277
// SetResourceType ( GetBase ( Dep1 ) , mat_cans , rand ( 1500 , 2000 ) ) ;
47810: LD_VAR 0 1
47814: PPUSH
47815: CALL_OW 274
47819: PPUSH
47820: LD_INT 1
47822: PPUSH
47823: LD_INT 1500
47825: PPUSH
47826: LD_INT 2000
47828: PPUSH
47829: CALL_OW 12
47833: PPUSH
47834: CALL_OW 277
// end ; if IsOk ( Dep2 ) and GetSide ( Dep2 ) = russians then
47838: LD_VAR 0 2
47842: PPUSH
47843: CALL_OW 302
47847: PUSH
47848: LD_VAR 0 2
47852: PPUSH
47853: CALL_OW 255
47857: PUSH
47858: LD_EXP 178
47862: EQUAL
47863: AND
47864: IFFALSE 47922
// begin SetResourceType ( GetBase ( Dep2 ) , mat_siberit , rand ( 1500 , 2000 ) ) ;
47866: LD_VAR 0 2
47870: PPUSH
47871: CALL_OW 274
47875: PPUSH
47876: LD_INT 3
47878: PPUSH
47879: LD_INT 1500
47881: PPUSH
47882: LD_INT 2000
47884: PPUSH
47885: CALL_OW 12
47889: PPUSH
47890: CALL_OW 277
// SetResourceType ( GetBase ( Dep2 ) , mat_cans , rand ( 1500 , 2000 ) ) ;
47894: LD_VAR 0 2
47898: PPUSH
47899: CALL_OW 274
47903: PPUSH
47904: LD_INT 1
47906: PPUSH
47907: LD_INT 1500
47909: PPUSH
47910: LD_INT 2000
47912: PPUSH
47913: CALL_OW 12
47917: PPUSH
47918: CALL_OW 277
// end ; if IsOk ( Dep3 ) and GetSide ( Dep3 ) = russians then
47922: LD_VAR 0 3
47926: PPUSH
47927: CALL_OW 302
47931: PUSH
47932: LD_VAR 0 3
47936: PPUSH
47937: CALL_OW 255
47941: PUSH
47942: LD_EXP 178
47946: EQUAL
47947: AND
47948: IFFALSE 48006
// begin SetResourceType ( GetBase ( Dep3 ) , mat_siberit , rand ( 500 , 600 ) ) ;
47950: LD_VAR 0 3
47954: PPUSH
47955: CALL_OW 274
47959: PPUSH
47960: LD_INT 3
47962: PPUSH
47963: LD_INT 500
47965: PPUSH
47966: LD_INT 600
47968: PPUSH
47969: CALL_OW 12
47973: PPUSH
47974: CALL_OW 277
// SetResourceType ( GetBase ( Dep3 ) , mat_cans , rand ( 2000 , 2200 ) ) ;
47978: LD_VAR 0 3
47982: PPUSH
47983: CALL_OW 274
47987: PPUSH
47988: LD_INT 1
47990: PPUSH
47991: LD_INT 2000
47993: PPUSH
47994: LD_INT 2200
47996: PPUSH
47997: CALL_OW 12
48001: PPUSH
48002: CALL_OW 277
// end ; enable ;
48006: ENABLE
// end ;
48007: PPOPN 3
48009: END
// export function BuildBehemots ; var i , Un , New_Person ; begin
48010: LD_INT 0
48012: PPUSH
48013: PPUSH
48014: PPUSH
48015: PPUSH
// uc_side = russians ;
48016: LD_ADDR_OWVAR 20
48020: PUSH
48021: LD_EXP 178
48025: ST_TO_ADDR
// uc_nation = nation_russian ;
48026: LD_ADDR_OWVAR 21
48030: PUSH
48031: LD_INT 3
48033: ST_TO_ADDR
// for i = 1 to Number_of_Behemots do
48034: LD_ADDR_VAR 0 2
48038: PUSH
48039: DOUBLE
48040: LD_INT 1
48042: DEC
48043: ST_TO_ADDR
48044: LD_EXP 221
48048: PUSH
48049: FOR_TO
48050: IFFALSE 48134
// begin PrepareMechanic ( 0 , human_difficulty_skill ) ;
48052: LD_INT 0
48054: PPUSH
48055: LD_EXP 184
48059: PPUSH
48060: CALL_OW 383
// New_Person = CreateHuman ;
48064: LD_ADDR_VAR 0 4
48068: PUSH
48069: CALL_OW 44
48073: ST_TO_ADDR
// PlaceHumanInUnit ( New_Person , GetUnitNumber ( 175 , 81 ) ) ;
48074: LD_VAR 0 4
48078: PPUSH
48079: LD_INT 175
48081: PPUSH
48082: LD_INT 81
48084: PPUSH
48085: CALL_OW 438
48089: PPUSH
48090: CALL_OW 52
// AddComExitBuilding ( New_Person ) ;
48094: LD_VAR 0 4
48098: PPUSH
48099: CALL_OW 182
// Behemot_Engineers = Behemot_Engineers ^ New_Person ;
48103: LD_ADDR_EXP 127
48107: PUSH
48108: LD_EXP 127
48112: PUSH
48113: LD_VAR 0 4
48117: ADD
48118: ST_TO_ADDR
// WaitTask ( New_Person , 0.2 ) ;
48119: LD_VAR 0 4
48123: PPUSH
48124: LD_REAL  2.00000000000000E-0001
48127: PPUSH
48128: CALL 17892 0 2
// end ;
48132: GO 48049
48134: POP
48135: POP
// SetSkill ( Behemot_Engineers , skill_engineering , Human_difficulty_skill ) ;
48136: LD_EXP 127
48140: PPUSH
48141: LD_INT 2
48143: PPUSH
48144: LD_EXP 184
48148: PPUSH
48149: CALL_OW 237
// i = 1 ;
48153: LD_ADDR_VAR 0 2
48157: PUSH
48158: LD_INT 1
48160: ST_TO_ADDR
// for Un in Behemot_Engineers do
48161: LD_ADDR_VAR 0 3
48165: PUSH
48166: LD_EXP 127
48170: PUSH
48171: FOR_IN
48172: IFFALSE 48235
// begin ComBuildBehemoth ( Un , b_behemoth , Behemot_Places [ i ] [ 1 ] , Behemot_Places [ i ] [ 2 ] , 5 ) ;
48174: LD_VAR 0 3
48178: PPUSH
48179: LD_INT 37
48181: PPUSH
48182: LD_EXP 224
48186: PUSH
48187: LD_VAR 0 2
48191: ARRAY
48192: PUSH
48193: LD_INT 1
48195: ARRAY
48196: PPUSH
48197: LD_EXP 224
48201: PUSH
48202: LD_VAR 0 2
48206: ARRAY
48207: PUSH
48208: LD_INT 2
48210: ARRAY
48211: PPUSH
48212: LD_INT 5
48214: PPUSH
48215: CALL_OW 170
// i = i + 1 ;
48219: LD_ADDR_VAR 0 2
48223: PUSH
48224: LD_VAR 0 2
48228: PUSH
48229: LD_INT 1
48231: PLUS
48232: ST_TO_ADDR
// end ;
48233: GO 48171
48235: POP
48236: POP
// end ;
48237: LD_VAR 0 1
48241: RET
// export function BehemotsAttack ; var i , Un ; begin
48242: LD_INT 0
48244: PPUSH
48245: PPUSH
48246: PPUSH
// while tick < Behemot_attack_time do
48247: LD_OWVAR 1
48251: PUSH
48252: LD_EXP 225
48256: LESS
48257: IFFALSE 48268
// Wait ( 0 0$2 ) ;
48259: LD_INT 70
48261: PPUSH
48262: CALL_OW 67
48266: GO 48247
// AddMcUnits ( Russian_att_id , New_Behemots ) ;
48268: LD_EXP 242
48272: PPUSH
48273: LD_EXP 129
48277: PPUSH
48278: CALL_OW 390
// New_Behemots = [ ] ;
48282: LD_ADDR_EXP 129
48286: PUSH
48287: EMPTY
48288: ST_TO_ADDR
// i = 1 ;
48289: LD_ADDR_VAR 0 2
48293: PUSH
48294: LD_INT 1
48296: ST_TO_ADDR
// for Un in Behemot_Engineers do
48297: LD_ADDR_VAR 0 3
48301: PUSH
48302: LD_EXP 127
48306: PUSH
48307: FOR_IN
48308: IFFALSE 48371
// begin ComBuildBehemoth ( Un , b_behemoth , Behemot_Places [ i ] [ 1 ] , Behemot_Places [ i ] [ 2 ] , 5 ) ;
48310: LD_VAR 0 3
48314: PPUSH
48315: LD_INT 37
48317: PPUSH
48318: LD_EXP 224
48322: PUSH
48323: LD_VAR 0 2
48327: ARRAY
48328: PUSH
48329: LD_INT 1
48331: ARRAY
48332: PPUSH
48333: LD_EXP 224
48337: PUSH
48338: LD_VAR 0 2
48342: ARRAY
48343: PUSH
48344: LD_INT 2
48346: ARRAY
48347: PPUSH
48348: LD_INT 5
48350: PPUSH
48351: CALL_OW 170
// i = i + 1 ;
48355: LD_ADDR_VAR 0 2
48359: PUSH
48360: LD_VAR 0 2
48364: PUSH
48365: LD_INT 1
48367: PLUS
48368: ST_TO_ADDR
// end ;
48369: GO 48307
48371: POP
48372: POP
// i = 1 ;
48373: LD_ADDR_VAR 0 2
48377: PUSH
48378: LD_INT 1
48380: ST_TO_ADDR
// for Un in Behemot_Engineers do
48381: LD_ADDR_VAR 0 3
48385: PUSH
48386: LD_EXP 127
48390: PUSH
48391: FOR_IN
48392: IFFALSE 48521
// begin while IsOk ( Un ) and not ( GetBType ( GetUnitNumber ( Behemot_Places [ i ] [ 1 ] , Behemot_Places [ i ] [ 2 ] ) ) = b_behemoth ) do
48394: LD_VAR 0 3
48398: PPUSH
48399: CALL_OW 302
48403: PUSH
48404: LD_EXP 224
48408: PUSH
48409: LD_VAR 0 2
48413: ARRAY
48414: PUSH
48415: LD_INT 1
48417: ARRAY
48418: PPUSH
48419: LD_EXP 224
48423: PUSH
48424: LD_VAR 0 2
48428: ARRAY
48429: PUSH
48430: LD_INT 2
48432: ARRAY
48433: PPUSH
48434: CALL_OW 438
48438: PPUSH
48439: CALL_OW 266
48443: PUSH
48444: LD_INT 37
48446: EQUAL
48447: NOT
48448: AND
48449: IFFALSE 48505
// begin ComBuildBehemoth ( Un , b_behemoth , Behemot_Places [ i ] [ 1 ] , Behemot_Places [ i ] [ 2 ] , 5 ) ;
48451: LD_VAR 0 3
48455: PPUSH
48456: LD_INT 37
48458: PPUSH
48459: LD_EXP 224
48463: PUSH
48464: LD_VAR 0 2
48468: ARRAY
48469: PUSH
48470: LD_INT 1
48472: ARRAY
48473: PPUSH
48474: LD_EXP 224
48478: PUSH
48479: LD_VAR 0 2
48483: ARRAY
48484: PUSH
48485: LD_INT 2
48487: ARRAY
48488: PPUSH
48489: LD_INT 5
48491: PPUSH
48492: CALL_OW 170
// Wait ( 0 0$0.5 ) ;
48496: LD_INT 18
48498: PPUSH
48499: CALL_OW 67
// end ;
48503: GO 48394
// i = i + 1 ;
48505: LD_ADDR_VAR 0 2
48509: PUSH
48510: LD_VAR 0 2
48514: PUSH
48515: LD_INT 1
48517: PLUS
48518: ST_TO_ADDR
// end ;
48519: GO 48391
48521: POP
48522: POP
// end ;
48523: LD_VAR 0 1
48527: RET
// every 0 0$2 trigger Russian_Behemots <> 0 do var Un ;
48528: LD_EXP 128
48532: PUSH
48533: LD_INT 0
48535: NONEQUAL
48536: IFFALSE 48644
48538: GO 48540
48540: DISABLE
48541: LD_INT 0
48543: PPUSH
// begin for Un in Russian_Behemots do
48544: LD_ADDR_VAR 0 1
48548: PUSH
48549: LD_EXP 128
48553: PUSH
48554: FOR_IN
48555: IFFALSE 48641
// if See ( americans , Un ) then
48557: LD_EXP 176
48561: PPUSH
48562: LD_VAR 0 1
48566: PPUSH
48567: CALL_OW 292
48571: IFFALSE 48639
// begin if IsInArea ( Un , Plan6 ) then
48573: LD_VAR 0 1
48577: PPUSH
48578: LD_INT 34
48580: PPUSH
48581: CALL_OW 308
48585: IFFALSE 48614
// begin CenterOnUnits ( Un ) ;
48587: LD_VAR 0 1
48591: PPUSH
48592: CALL_OW 85
// Say ( JMM , D17a-JMM-1 ) ;
48596: LD_EXP 1
48600: PPUSH
48601: LD_STRING D17a-JMM-1
48603: PPUSH
48604: CALL_OW 88
// exit ;
48608: POP
48609: POP
48610: GO 48644
// end else
48612: GO 48639
// begin CenterOnUnits ( Un ) ;
48614: LD_VAR 0 1
48618: PPUSH
48619: CALL_OW 85
// Say ( JMM , D17b-JMM-1 ) ;
48623: LD_EXP 1
48627: PPUSH
48628: LD_STRING D17b-JMM-1
48630: PPUSH
48631: CALL_OW 88
// exit ;
48635: POP
48636: POP
48637: GO 48644
// end ; end ;
48639: GO 48554
48641: POP
48642: POP
// enable ;
48643: ENABLE
// end ;
48644: PPOPN 1
48646: END
// every 0 0$10 trigger ( not ( Russian_Siberite_Attack ) or not ( The_Last_Arabian_Attack_Begun ) ) do var Teleport1 , Teleport2 , Un , i , hex , sib_r , rus_remaind ;
48647: LD_EXP 215
48651: NOT
48652: PUSH
48653: LD_EXP 227
48657: NOT
48658: OR
48659: IFFALSE 48884
48661: GO 48663
48663: DISABLE
48664: LD_INT 0
48666: PPUSH
48667: PPUSH
48668: PPUSH
48669: PPUSH
48670: PPUSH
48671: PPUSH
48672: PPUSH
// begin rus_remaind = UnitFilter ( All_Russians , [ f_ok ] ) ;
48673: LD_ADDR_VAR 0 7
48677: PUSH
48678: LD_EXP 111
48682: PPUSH
48683: LD_INT 50
48685: PUSH
48686: EMPTY
48687: LIST
48688: PPUSH
48689: CALL_OW 72
48693: ST_TO_ADDR
// if ( rus_remaind < 3 ) and not ( The_Last_Arabian_Attack_Begun ) then
48694: LD_VAR 0 7
48698: PUSH
48699: LD_INT 3
48701: LESS
48702: PUSH
48703: LD_EXP 227
48707: NOT
48708: AND
48709: IFFALSE 48723
// begin The_Last_Arabian_Attack_Begun = true ;
48711: LD_ADDR_EXP 227
48715: PUSH
48716: LD_INT 1
48718: ST_TO_ADDR
// TheLastArabianAttack ;
48719: CALL 50126 0 0
// end ; if ( rus_remaind < 10 ) and not ( Russian_Siberite_Attack ) then
48723: LD_VAR 0 7
48727: PUSH
48728: LD_INT 10
48730: LESS
48731: PUSH
48732: LD_EXP 215
48736: NOT
48737: AND
48738: IFFALSE 48869
// begin if ( FilterUnitsInArea ( R_base , [ [ f_side , americans ] , [ f_ok ] ] ) <> 0 ) then
48740: LD_INT 36
48742: PPUSH
48743: LD_INT 22
48745: PUSH
48746: LD_EXP 176
48750: PUSH
48751: EMPTY
48752: LIST
48753: LIST
48754: PUSH
48755: LD_INT 50
48757: PUSH
48758: EMPTY
48759: LIST
48760: PUSH
48761: EMPTY
48762: LIST
48763: LIST
48764: PPUSH
48765: CALL_OW 70
48769: PUSH
48770: LD_INT 0
48772: NONEQUAL
48773: IFFALSE 48869
// begin sib_r = FilterAllUnits ( [ [ f_side , Russians ] , [ f_ok ] , [ f_weapon , ru_siberium_rocket ] ] ) ;
48775: LD_ADDR_VAR 0 6
48779: PUSH
48780: LD_INT 22
48782: PUSH
48783: LD_EXP 178
48787: PUSH
48788: EMPTY
48789: LIST
48790: LIST
48791: PUSH
48792: LD_INT 50
48794: PUSH
48795: EMPTY
48796: LIST
48797: PUSH
48798: LD_INT 34
48800: PUSH
48801: LD_INT 48
48803: PUSH
48804: EMPTY
48805: LIST
48806: LIST
48807: PUSH
48808: EMPTY
48809: LIST
48810: LIST
48811: LIST
48812: PPUSH
48813: CALL_OW 69
48817: ST_TO_ADDR
// if ( sib_r <> 0 ) and not ( Russian_Siberite_Attack ) then
48818: LD_VAR 0 6
48822: PUSH
48823: LD_INT 0
48825: NONEQUAL
48826: PUSH
48827: LD_EXP 215
48831: NOT
48832: AND
48833: IFFALSE 48869
// begin Russian_Siberite_Attack = true ;
48835: LD_ADDR_EXP 215
48839: PUSH
48840: LD_INT 1
48842: ST_TO_ADDR
// for Un in sib_r do
48843: LD_ADDR_VAR 0 3
48847: PUSH
48848: LD_VAR 0 6
48852: PUSH
48853: FOR_IN
48854: IFFALSE 48867
// RSiberiteAttack ( Un ) ;
48856: LD_VAR 0 3
48860: PPUSH
48861: CALL 18535 0 1
48865: GO 48853
48867: POP
48868: POP
// end ; end ; end ; if not ( Russian_Siberite_Attack ) or not ( The_Last_Arabian_Attack_Begun ) then
48869: LD_EXP 215
48873: NOT
48874: PUSH
48875: LD_EXP 227
48879: NOT
48880: OR
48881: IFFALSE 48884
// enable ;
48883: ENABLE
// end ; end_of_file
48884: PPOPN 7
48886: END
// function PlaceAttackingUnits ; var Un ; begin
48887: LD_INT 0
48889: PPUSH
48890: PPUSH
// for Un in Omar_vehicles do
48891: LD_ADDR_VAR 0 2
48895: PUSH
48896: LD_EXP 74
48900: PUSH
48901: FOR_IN
48902: IFFALSE 48921
// PlaceUnitArea ( Un , ArStart1 , false ) ;
48904: LD_VAR 0 2
48908: PPUSH
48909: LD_INT 38
48911: PPUSH
48912: LD_INT 0
48914: PPUSH
48915: CALL_OW 49
48919: GO 48901
48921: POP
48922: POP
// PlaceUnitArea ( Masto , ArStart , false ) ;
48923: LD_INT 147
48925: PPUSH
48926: LD_INT 37
48928: PPUSH
48929: LD_INT 0
48931: PPUSH
48932: CALL_OW 49
// PlaceUnitArea ( Heike , ArStart , false ) ;
48936: LD_EXP 29
48940: PPUSH
48941: LD_INT 37
48943: PPUSH
48944: LD_INT 0
48946: PPUSH
48947: CALL_OW 49
// for Un in Omar_Soldiers do
48951: LD_ADDR_VAR 0 2
48955: PUSH
48956: LD_EXP 72
48960: PUSH
48961: FOR_IN
48962: IFFALSE 48981
// PlaceUnitArea ( Un , ArStart , false ) ;
48964: LD_VAR 0 2
48968: PPUSH
48969: LD_INT 37
48971: PPUSH
48972: LD_INT 0
48974: PPUSH
48975: CALL_OW 49
48979: GO 48961
48981: POP
48982: POP
// for Un in Omar_Scientists do
48983: LD_ADDR_VAR 0 2
48987: PUSH
48988: LD_EXP 73
48992: PUSH
48993: FOR_IN
48994: IFFALSE 49013
// PlaceUnitArea ( Un , ArStart , false ) ;
48996: LD_VAR 0 2
49000: PPUSH
49001: LD_INT 37
49003: PPUSH
49004: LD_INT 0
49006: PPUSH
49007: CALL_OW 49
49011: GO 48993
49013: POP
49014: POP
// end ;
49015: LD_VAR 0 1
49019: RET
// function JMM_warns ; var Remaining_americans , Remaining_unnamed_males , sold ; begin
49020: LD_INT 0
49022: PPUSH
49023: PPUSH
49024: PPUSH
49025: PPUSH
// placeseeing ( 157 , 7 , americans , - 15 ) ;
49026: LD_INT 157
49028: PPUSH
49029: LD_INT 7
49031: PPUSH
49032: LD_EXP 176
49036: PPUSH
49037: LD_INT 15
49039: NEG
49040: PPUSH
49041: CALL_OW 330
// placeseeing ( 165 , 21 , americans , - 15 ) ;
49045: LD_INT 165
49047: PPUSH
49048: LD_INT 21
49050: PPUSH
49051: LD_EXP 176
49055: PPUSH
49056: LD_INT 15
49058: NEG
49059: PPUSH
49060: CALL_OW 330
// CenterNowOnUnits ( [ Omar , Heike ] ) ;
49064: LD_EXP 28
49068: PUSH
49069: LD_EXP 29
49073: PUSH
49074: EMPTY
49075: LIST
49076: LIST
49077: PPUSH
49078: CALL_OW 87
// Wait ( 0 0$0.5 ) ;
49082: LD_INT 18
49084: PPUSH
49085: CALL_OW 67
// Remaining_americans = FilterAllUnits ( [ [ f_side , americans ] , [ f_sex , sex_male ] , f_not , [ [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_kamikaze ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ] ) diff JMM ;
49089: LD_ADDR_VAR 0 2
49093: PUSH
49094: LD_INT 22
49096: PUSH
49097: LD_EXP 176
49101: PUSH
49102: EMPTY
49103: LIST
49104: LIST
49105: PUSH
49106: LD_INT 26
49108: PUSH
49109: LD_INT 1
49111: PUSH
49112: EMPTY
49113: LIST
49114: LIST
49115: PUSH
49116: LD_INT 3
49118: PUSH
49119: LD_INT 2
49121: PUSH
49122: LD_INT 25
49124: PUSH
49125: LD_INT 12
49127: PUSH
49128: EMPTY
49129: LIST
49130: LIST
49131: PUSH
49132: LD_INT 25
49134: PUSH
49135: LD_INT 16
49137: PUSH
49138: EMPTY
49139: LIST
49140: LIST
49141: PUSH
49142: LD_INT 25
49144: PUSH
49145: LD_INT 17
49147: PUSH
49148: EMPTY
49149: LIST
49150: LIST
49151: PUSH
49152: LD_INT 25
49154: PUSH
49155: LD_INT 15
49157: PUSH
49158: EMPTY
49159: LIST
49160: LIST
49161: PUSH
49162: LD_INT 25
49164: PUSH
49165: LD_INT 17
49167: PUSH
49168: EMPTY
49169: LIST
49170: LIST
49171: PUSH
49172: EMPTY
49173: LIST
49174: LIST
49175: LIST
49176: LIST
49177: LIST
49178: LIST
49179: PUSH
49180: EMPTY
49181: LIST
49182: PUSH
49183: EMPTY
49184: LIST
49185: LIST
49186: LIST
49187: LIST
49188: PPUSH
49189: CALL_OW 69
49193: PUSH
49194: LD_EXP 1
49198: DIFF
49199: ST_TO_ADDR
// Remaining_unnamed_males = Remaining_americans diff [ JMM , Powell , Bobby , Cyrus , Lisa , Frank , Brown , Donaldson , Gladstone , Cornell , Denis , Joan , Kurt , Yamoko , Gary , Simms , Stevens , Coonie , Friend ] ;
49200: LD_ADDR_VAR 0 3
49204: PUSH
49205: LD_VAR 0 2
49209: PUSH
49210: LD_EXP 1
49214: PUSH
49215: LD_EXP 2
49219: PUSH
49220: LD_EXP 3
49224: PUSH
49225: LD_EXP 4
49229: PUSH
49230: LD_EXP 5
49234: PUSH
49235: LD_EXP 6
49239: PUSH
49240: LD_EXP 7
49244: PUSH
49245: LD_EXP 8
49249: PUSH
49250: LD_EXP 9
49254: PUSH
49255: LD_EXP 10
49259: PUSH
49260: LD_EXP 11
49264: PUSH
49265: LD_EXP 12
49269: PUSH
49270: LD_EXP 13
49274: PUSH
49275: LD_EXP 14
49279: PUSH
49280: LD_EXP 15
49284: PUSH
49285: LD_EXP 16
49289: PUSH
49290: LD_EXP 17
49294: PUSH
49295: LD_EXP 18
49299: PUSH
49300: LD_EXP 21
49304: PUSH
49305: EMPTY
49306: LIST
49307: LIST
49308: LIST
49309: LIST
49310: LIST
49311: LIST
49312: LIST
49313: LIST
49314: LIST
49315: LIST
49316: LIST
49317: LIST
49318: LIST
49319: LIST
49320: LIST
49321: LIST
49322: LIST
49323: LIST
49324: LIST
49325: DIFF
49326: ST_TO_ADDR
// Sold = 0 ;
49327: LD_ADDR_VAR 0 4
49331: PUSH
49332: LD_INT 0
49334: ST_TO_ADDR
// if Remaining_unnamed_males <> 0 then
49335: LD_VAR 0 3
49339: PUSH
49340: LD_INT 0
49342: NONEQUAL
49343: IFFALSE 49371
// Sold = Remaining_unnamed_males [ Rand ( 1 , Remaining_unnamed_males ) ] else
49345: LD_ADDR_VAR 0 4
49349: PUSH
49350: LD_VAR 0 3
49354: PUSH
49355: LD_INT 1
49357: PPUSH
49358: LD_VAR 0 3
49362: PPUSH
49363: CALL_OW 12
49367: ARRAY
49368: ST_TO_ADDR
49369: GO 49405
// if Sold <> 0 then
49371: LD_VAR 0 4
49375: PUSH
49376: LD_INT 0
49378: NONEQUAL
49379: IFFALSE 49405
// Sold = Remaining_americans [ Rand ( 1 , Remaining_americans ) ] ;
49381: LD_ADDR_VAR 0 4
49385: PUSH
49386: LD_VAR 0 2
49390: PUSH
49391: LD_INT 1
49393: PPUSH
49394: LD_VAR 0 2
49398: PPUSH
49399: CALL_OW 12
49403: ARRAY
49404: ST_TO_ADDR
// DialogueON ;
49405: CALL_OW 6
// Say ( JMM , D19-JMM-1 ) ;
49409: LD_EXP 1
49413: PPUSH
49414: LD_STRING D19-JMM-1
49416: PPUSH
49417: CALL_OW 88
// Say ( Sold , D19-Sol1-1 ) ;
49421: LD_VAR 0 4
49425: PPUSH
49426: LD_STRING D19-Sol1-1
49428: PPUSH
49429: CALL_OW 88
// Say ( JMM , D19-JMM-2 ) ;
49433: LD_EXP 1
49437: PPUSH
49438: LD_STRING D19-JMM-2
49440: PPUSH
49441: CALL_OW 88
// DialogueOFF ;
49445: CALL_OW 7
// ChangeMissionObjectives ( M5 ) ;
49449: LD_STRING M5
49451: PPUSH
49452: CALL_OW 337
// end ;
49456: LD_VAR 0 1
49460: RET
// function LaunchMines ; var mines_pos , mines_pos1 , i , j ; begin
49461: LD_INT 0
49463: PPUSH
49464: PPUSH
49465: PPUSH
49466: PPUSH
49467: PPUSH
// mines_pos = [ [ 168 , 18 ] , [ 169 , 20 ] , [ 167 , 20 ] , [ 164 , 18 ] , [ 164 , 19 ] , [ 163 , 19 ] , [ 164 , 21 ] , [ 165 , 21 ] , [ 163 , 20 ] , [ 164 , 22 ] , [ 162 , 20 ] ] ;
49468: LD_ADDR_VAR 0 2
49472: PUSH
49473: LD_INT 168
49475: PUSH
49476: LD_INT 18
49478: PUSH
49479: EMPTY
49480: LIST
49481: LIST
49482: PUSH
49483: LD_INT 169
49485: PUSH
49486: LD_INT 20
49488: PUSH
49489: EMPTY
49490: LIST
49491: LIST
49492: PUSH
49493: LD_INT 167
49495: PUSH
49496: LD_INT 20
49498: PUSH
49499: EMPTY
49500: LIST
49501: LIST
49502: PUSH
49503: LD_INT 164
49505: PUSH
49506: LD_INT 18
49508: PUSH
49509: EMPTY
49510: LIST
49511: LIST
49512: PUSH
49513: LD_INT 164
49515: PUSH
49516: LD_INT 19
49518: PUSH
49519: EMPTY
49520: LIST
49521: LIST
49522: PUSH
49523: LD_INT 163
49525: PUSH
49526: LD_INT 19
49528: PUSH
49529: EMPTY
49530: LIST
49531: LIST
49532: PUSH
49533: LD_INT 164
49535: PUSH
49536: LD_INT 21
49538: PUSH
49539: EMPTY
49540: LIST
49541: LIST
49542: PUSH
49543: LD_INT 165
49545: PUSH
49546: LD_INT 21
49548: PUSH
49549: EMPTY
49550: LIST
49551: LIST
49552: PUSH
49553: LD_INT 163
49555: PUSH
49556: LD_INT 20
49558: PUSH
49559: EMPTY
49560: LIST
49561: LIST
49562: PUSH
49563: LD_INT 164
49565: PUSH
49566: LD_INT 22
49568: PUSH
49569: EMPTY
49570: LIST
49571: LIST
49572: PUSH
49573: LD_INT 162
49575: PUSH
49576: LD_INT 20
49578: PUSH
49579: EMPTY
49580: LIST
49581: LIST
49582: PUSH
49583: EMPTY
49584: LIST
49585: LIST
49586: LIST
49587: LIST
49588: LIST
49589: LIST
49590: LIST
49591: LIST
49592: LIST
49593: LIST
49594: LIST
49595: ST_TO_ADDR
// mines_pos1 = [ [ 169 , 34 ] , [ 169 , 35 ] , [ 167 , 32 ] , [ 170 , 31 ] , [ 173 , 35 ] , [ 174 , 39 ] ] ;
49596: LD_ADDR_VAR 0 3
49600: PUSH
49601: LD_INT 169
49603: PUSH
49604: LD_INT 34
49606: PUSH
49607: EMPTY
49608: LIST
49609: LIST
49610: PUSH
49611: LD_INT 169
49613: PUSH
49614: LD_INT 35
49616: PUSH
49617: EMPTY
49618: LIST
49619: LIST
49620: PUSH
49621: LD_INT 167
49623: PUSH
49624: LD_INT 32
49626: PUSH
49627: EMPTY
49628: LIST
49629: LIST
49630: PUSH
49631: LD_INT 170
49633: PUSH
49634: LD_INT 31
49636: PUSH
49637: EMPTY
49638: LIST
49639: LIST
49640: PUSH
49641: LD_INT 173
49643: PUSH
49644: LD_INT 35
49646: PUSH
49647: EMPTY
49648: LIST
49649: LIST
49650: PUSH
49651: LD_INT 174
49653: PUSH
49654: LD_INT 39
49656: PUSH
49657: EMPTY
49658: LIST
49659: LIST
49660: PUSH
49661: EMPTY
49662: LIST
49663: LIST
49664: LIST
49665: LIST
49666: LIST
49667: LIST
49668: ST_TO_ADDR
// for i = 1 to mines_pos do
49669: LD_ADDR_VAR 0 4
49673: PUSH
49674: DOUBLE
49675: LD_INT 1
49677: DEC
49678: ST_TO_ADDR
49679: LD_VAR 0 2
49683: PUSH
49684: FOR_TO
49685: IFFALSE 49897
// begin MineExplosion ( mines_pos [ i ] [ 1 ] , mines_pos [ i ] [ 2 ] , 1 ) ;
49687: LD_VAR 0 2
49691: PUSH
49692: LD_VAR 0 4
49696: ARRAY
49697: PUSH
49698: LD_INT 1
49700: ARRAY
49701: PPUSH
49702: LD_VAR 0 2
49706: PUSH
49707: LD_VAR 0 4
49711: ARRAY
49712: PUSH
49713: LD_INT 2
49715: ARRAY
49716: PPUSH
49717: LD_INT 1
49719: PPUSH
49720: CALL_OW 453
// Wait ( Rand ( 1 , 3 ) ) ;
49724: LD_INT 1
49726: PPUSH
49727: LD_INT 3
49729: PPUSH
49730: CALL_OW 12
49734: PPUSH
49735: CALL_OW 67
// if i < mines_pos then
49739: LD_VAR 0 4
49743: PUSH
49744: LD_VAR 0 2
49748: LESS
49749: IFFALSE 49787
// RemoveEnvironmentWithoutRebuild ( mines_pos [ i ] [ 1 ] , mines_pos [ i ] [ 2 ] ) else
49751: LD_VAR 0 2
49755: PUSH
49756: LD_VAR 0 4
49760: ARRAY
49761: PUSH
49762: LD_INT 1
49764: ARRAY
49765: PPUSH
49766: LD_VAR 0 2
49770: PUSH
49771: LD_VAR 0 4
49775: ARRAY
49776: PUSH
49777: LD_INT 2
49779: ARRAY
49780: PPUSH
49781: CALL_OW 348
49785: GO 49895
// begin for j = 1 to mines_pos1 do
49787: LD_ADDR_VAR 0 5
49791: PUSH
49792: DOUBLE
49793: LD_INT 1
49795: DEC
49796: ST_TO_ADDR
49797: LD_VAR 0 3
49801: PUSH
49802: FOR_TO
49803: IFFALSE 49859
// begin MineExplosion ( mines_pos1 [ j ] [ 1 ] , mines_pos1 [ j ] [ 2 ] , 1 ) ;
49805: LD_VAR 0 3
49809: PUSH
49810: LD_VAR 0 5
49814: ARRAY
49815: PUSH
49816: LD_INT 1
49818: ARRAY
49819: PPUSH
49820: LD_VAR 0 3
49824: PUSH
49825: LD_VAR 0 5
49829: ARRAY
49830: PUSH
49831: LD_INT 2
49833: ARRAY
49834: PPUSH
49835: LD_INT 1
49837: PPUSH
49838: CALL_OW 453
// Wait ( Rand ( 1 , 3 ) ) ;
49842: LD_INT 1
49844: PPUSH
49845: LD_INT 3
49847: PPUSH
49848: CALL_OW 12
49852: PPUSH
49853: CALL_OW 67
// end ;
49857: GO 49802
49859: POP
49860: POP
// RemoveEnvironment ( mines_pos [ i ] [ 1 ] , mines_pos [ i ] [ 2 ] ) ;
49861: LD_VAR 0 2
49865: PUSH
49866: LD_VAR 0 4
49870: ARRAY
49871: PUSH
49872: LD_INT 1
49874: ARRAY
49875: PPUSH
49876: LD_VAR 0 2
49880: PUSH
49881: LD_VAR 0 4
49885: ARRAY
49886: PUSH
49887: LD_INT 2
49889: ARRAY
49890: PPUSH
49891: CALL_OW 347
// end ; end ;
49895: GO 49684
49897: POP
49898: POP
// end ;
49899: LD_VAR 0 1
49903: RET
// function StartTheAttack ; begin
49904: LD_INT 0
49906: PPUSH
// ComMoveXY ( Omar_vehicles ^ Masto , 184 , 82 ) ;
49907: LD_EXP 74
49911: PUSH
49912: LD_INT 147
49914: ADD
49915: PPUSH
49916: LD_INT 184
49918: PPUSH
49919: LD_INT 82
49921: PPUSH
49922: CALL_OW 111
// Wait ( 0 0$3 ) ;
49926: LD_INT 105
49928: PPUSH
49929: CALL_OW 67
// McMove ( 100 , Heike ^ Omar_Soldiers , [ [ 184 , 82 ] ] , mc_no_stop ) ;
49933: LD_INT 100
49935: PPUSH
49936: LD_EXP 29
49940: PUSH
49941: LD_EXP 72
49945: ADD
49946: PPUSH
49947: LD_INT 184
49949: PUSH
49950: LD_INT 82
49952: PUSH
49953: EMPTY
49954: LIST
49955: LIST
49956: PUSH
49957: EMPTY
49958: LIST
49959: PPUSH
49960: LD_INT 10
49962: PPUSH
49963: CALL_OW 398
// Wait ( 0 0$5 ) ;
49967: LD_INT 175
49969: PPUSH
49970: CALL_OW 67
// ComContaminate ( Omar_Scientists , 177 , 69 ) ;
49974: LD_EXP 73
49978: PPUSH
49979: LD_INT 177
49981: PPUSH
49982: LD_INT 69
49984: PPUSH
49985: CALL_OW 158
// end ;
49989: LD_VAR 0 1
49993: RET
// export function HeikeLastWords ; begin
49994: LD_INT 0
49996: PPUSH
// if IsDead ( Omar ) and ( Heike_Last_Words = false ) then
49997: LD_EXP 28
50001: PPUSH
50002: CALL_OW 301
50006: PUSH
50007: LD_EXP 232
50011: PUSH
50012: LD_INT 0
50014: EQUAL
50015: AND
50016: IFFALSE 50061
// begin Heike_Last_Words = true ;
50018: LD_ADDR_EXP 232
50022: PUSH
50023: LD_INT 1
50025: ST_TO_ADDR
// Say ( JMM , D19a-JMM-1 ) ;
50026: LD_EXP 1
50030: PPUSH
50031: LD_STRING D19a-JMM-1
50033: PPUSH
50034: CALL_OW 88
// if IsOk ( Heike ) then
50038: LD_EXP 29
50042: PPUSH
50043: CALL_OW 302
50047: IFFALSE 50061
// Say ( Heike , D19a-Hke-1 ) ;
50049: LD_EXP 29
50053: PPUSH
50054: LD_STRING D19a-Hke-1
50056: PPUSH
50057: CALL_OW 88
// end end ;
50061: LD_VAR 0 1
50065: RET
// export function TestForEndOfMission ; var Last_enemies ; begin
50066: LD_INT 0
50068: PPUSH
50069: PPUSH
// Last_enemies = FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , arabians1 ] ] ) ;
50070: LD_ADDR_VAR 0 2
50074: PUSH
50075: LD_INT 21
50077: PUSH
50078: LD_INT 1
50080: PUSH
50081: EMPTY
50082: LIST
50083: LIST
50084: PUSH
50085: LD_INT 22
50087: PUSH
50088: LD_EXP 181
50092: PUSH
50093: EMPTY
50094: LIST
50095: LIST
50096: PUSH
50097: EMPTY
50098: LIST
50099: LIST
50100: PPUSH
50101: CALL_OW 69
50105: ST_TO_ADDR
// if Last_enemies = 0 then
50106: LD_VAR 0 2
50110: PUSH
50111: LD_INT 0
50113: EQUAL
50114: IFFALSE 50121
// enable ( End_of_m ) ;
50116: LD_EXP 158
50120: ENABLE_MARKED
// end ;
50121: LD_VAR 0 1
50125: RET
// export function TheLastArabianAttack ; begin
50126: LD_INT 0
50128: PPUSH
// Wait ( 0 0$10 ) ;
50129: LD_INT 350
50131: PPUSH
50132: CALL_OW 67
// PlaceAttackingUnits ;
50136: CALL 48887 0 0
// JMM_warns ;
50140: CALL 49020 0 0
// LaunchMines ;
50144: CALL 49461 0 0
// StartTheAttack ;
50148: CALL 49904 0 0
// end ; end_of_file
50152: LD_VAR 0 1
50156: RET
// export function StartAllianceBase ; var i , Bunkers , Turrets , units_to_protect ; begin
50157: LD_INT 0
50159: PPUSH
50160: PPUSH
50161: PPUSH
50162: PPUSH
50163: PPUSH
// SetResourceType ( GetBase ( AllDep ) , mat_siberit , 200 ) ;
50164: LD_INT 45
50166: PPUSH
50167: CALL_OW 274
50171: PPUSH
50172: LD_INT 3
50174: PPUSH
50175: LD_INT 200
50177: PPUSH
50178: CALL_OW 277
// SetResourceType ( GetBase ( AllDep ) , mat_cans , 400 ) ;
50182: LD_INT 45
50184: PPUSH
50185: CALL_OW 274
50189: PPUSH
50190: LD_INT 1
50192: PPUSH
50193: LD_INT 400
50195: PPUSH
50196: CALL_OW 277
// Alliance_Doctors = Alliance_am_scientists [ 1 ] ;
50200: LD_ADDR_EXP 102
50204: PUSH
50205: LD_EXP 97
50209: PUSH
50210: LD_INT 1
50212: ARRAY
50213: ST_TO_ADDR
// Alliance_am_scientists = Alliance_am_scientists diff Alliance_am_scientists [ 1 ] ;
50214: LD_ADDR_EXP 97
50218: PUSH
50219: LD_EXP 97
50223: PUSH
50224: LD_EXP 97
50228: PUSH
50229: LD_INT 1
50231: ARRAY
50232: DIFF
50233: ST_TO_ADDR
// ComEnterUnit ( Alliance_am_scientists , AllLabA ) ;
50234: LD_EXP 97
50238: PPUSH
50239: LD_INT 46
50241: PPUSH
50242: CALL_OW 120
// Alliance_Doctors = Alliance_rus_scientists [ 1 ] ;
50246: LD_ADDR_EXP 102
50250: PUSH
50251: LD_EXP 96
50255: PUSH
50256: LD_INT 1
50258: ARRAY
50259: ST_TO_ADDR
// Alliance_rus_scientists = Alliance_rus_scientists diff Alliance_rus_scientists [ 1 ] ;
50260: LD_ADDR_EXP 96
50264: PUSH
50265: LD_EXP 96
50269: PUSH
50270: LD_EXP 96
50274: PUSH
50275: LD_INT 1
50277: ARRAY
50278: DIFF
50279: ST_TO_ADDR
// ComEnterUnit ( Alliance_rus_scientists , AllLabR1 ) ;
50280: LD_EXP 96
50284: PPUSH
50285: LD_INT 39
50287: PPUSH
50288: CALL_OW 120
// ComResearch ( AllLabA , tech_Comp1 ) ;
50292: LD_INT 46
50294: PPUSH
50295: LD_INT 57
50297: PPUSH
50298: CALL_OW 124
// AddComResearch ( AllLabA , tech_Opto1 ) ;
50302: LD_INT 46
50304: PPUSH
50305: LD_INT 60
50307: PPUSH
50308: CALL_OW 184
// AddComResearch ( AllLabA , tech_Sib1 ) ;
50312: LD_INT 46
50314: PPUSH
50315: LD_INT 54
50317: PPUSH
50318: CALL_OW 184
// AddComResearch ( AllLabA , tech_Opto2 ) ;
50322: LD_INT 46
50324: PPUSH
50325: LD_INT 61
50327: PPUSH
50328: CALL_OW 184
// AddComResearch ( AllLabA , tech_Sib2 ) ;
50332: LD_INT 46
50334: PPUSH
50335: LD_INT 55
50337: PPUSH
50338: CALL_OW 184
// AddComResearch ( AllLabA , tech_Opto3 ) ;
50342: LD_INT 46
50344: PPUSH
50345: LD_INT 62
50347: PPUSH
50348: CALL_OW 184
// AddComResearch ( AllLabA , tech_Sib3 ) ;
50352: LD_INT 46
50354: PPUSH
50355: LD_INT 56
50357: PPUSH
50358: CALL_OW 184
// ComResearch ( AllLabR1 , tech_ST1 ) ;
50362: LD_INT 39
50364: PPUSH
50365: LD_INT 63
50367: PPUSH
50368: CALL_OW 124
// AddComResearch ( AllLabR1 , tech_ST2 ) ;
50372: LD_INT 39
50374: PPUSH
50375: LD_INT 64
50377: PPUSH
50378: CALL_OW 184
// AddComResearch ( AllLabR1 , tech_ST3 ) ;
50382: LD_INT 39
50384: PPUSH
50385: LD_INT 65
50387: PPUSH
50388: CALL_OW 184
// ComResearch ( AllLabR2 , tech_Comp1 ) ;
50392: LD_INT 133
50394: PPUSH
50395: LD_INT 57
50397: PPUSH
50398: CALL_OW 124
// AddComResearch ( AllLabR2 , tech_Weap1 ) ;
50402: LD_INT 133
50404: PPUSH
50405: LD_INT 51
50407: PPUSH
50408: CALL_OW 184
// AddComResearch ( AllLabR2 , tech_Comp2 ) ;
50412: LD_INT 133
50414: PPUSH
50415: LD_INT 58
50417: PPUSH
50418: CALL_OW 184
// AddComResearch ( AllLabR2 , tech_Weap2 ) ;
50422: LD_INT 133
50424: PPUSH
50425: LD_INT 52
50427: PPUSH
50428: CALL_OW 184
// AddComResearch ( AllLabR2 , tech_Comp3 ) ;
50432: LD_INT 133
50434: PPUSH
50435: LD_INT 59
50437: PPUSH
50438: CALL_OW 184
// AddComResearch ( AllLabR2 , tech_Weap3 ) ;
50442: LD_INT 133
50444: PPUSH
50445: LD_INT 53
50447: PPUSH
50448: CALL_OW 184
// ComEnterUnit ( Alliance_am_soldiers , AllBarrA ) ;
50452: LD_EXP 95
50456: PPUSH
50457: LD_INT 41
50459: PPUSH
50460: CALL_OW 120
// ComEnterUnit ( Alliance_rus_soldiers , AllBarrR ) ;
50464: LD_EXP 94
50468: PPUSH
50469: LD_INT 48
50471: PPUSH
50472: CALL_OW 120
// Bunkers = FilterAllUnits ( [ [ f_side , alliance ] , [ f_type , unit_building ] , [ f_btype , b_bunker ] ] ) ;
50476: LD_ADDR_VAR 0 3
50480: PUSH
50481: LD_INT 22
50483: PUSH
50484: LD_EXP 182
50488: PUSH
50489: EMPTY
50490: LIST
50491: LIST
50492: PUSH
50493: LD_INT 21
50495: PUSH
50496: LD_INT 3
50498: PUSH
50499: EMPTY
50500: LIST
50501: LIST
50502: PUSH
50503: LD_INT 30
50505: PUSH
50506: LD_INT 32
50508: PUSH
50509: EMPTY
50510: LIST
50511: LIST
50512: PUSH
50513: EMPTY
50514: LIST
50515: LIST
50516: LIST
50517: PPUSH
50518: CALL_OW 69
50522: ST_TO_ADDR
// Turrets = FilterAllUnits ( [ [ f_side , alliance ] , [ f_type , unit_building ] , [ f_btype , b_turret ] ] ) ;
50523: LD_ADDR_VAR 0 4
50527: PUSH
50528: LD_INT 22
50530: PUSH
50531: LD_EXP 182
50535: PUSH
50536: EMPTY
50537: LIST
50538: LIST
50539: PUSH
50540: LD_INT 21
50542: PUSH
50543: LD_INT 3
50545: PUSH
50546: EMPTY
50547: LIST
50548: LIST
50549: PUSH
50550: LD_INT 30
50552: PUSH
50553: LD_INT 33
50555: PUSH
50556: EMPTY
50557: LIST
50558: LIST
50559: PUSH
50560: EMPTY
50561: LIST
50562: LIST
50563: LIST
50564: PPUSH
50565: CALL_OW 69
50569: ST_TO_ADDR
// units_to_protect = Bunkers ^ Turrets ^ AllBarrA ^ AllBarrR ;
50570: LD_ADDR_VAR 0 5
50574: PUSH
50575: LD_VAR 0 3
50579: PUSH
50580: LD_VAR 0 4
50584: ADD
50585: PUSH
50586: LD_INT 41
50588: ADD
50589: PUSH
50590: LD_INT 48
50592: ADD
50593: ST_TO_ADDR
// Alliance_reg_id = McRegistry ( alliance , [ [ mc_reg_area_to_guard , Al_Base ] , [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_protect , Al_Base ] , [ mc_reg_units_to_protect , units_to_protect ] , - mc_reg_only_important , - mc_reg_ignore_fog ] ) ;
50594: LD_ADDR_EXP 247
50598: PUSH
50599: LD_EXP 182
50603: PPUSH
50604: LD_INT 2
50606: PUSH
50607: LD_INT 18
50609: PUSH
50610: EMPTY
50611: LIST
50612: LIST
50613: PUSH
50614: LD_INT 1
50616: PUSH
50617: LD_INT 70
50619: PUSH
50620: EMPTY
50621: LIST
50622: LIST
50623: PUSH
50624: LD_INT 3
50626: PUSH
50627: LD_INT 18
50629: PUSH
50630: EMPTY
50631: LIST
50632: LIST
50633: PUSH
50634: LD_INT 4
50636: PUSH
50637: LD_VAR 0 5
50641: PUSH
50642: EMPTY
50643: LIST
50644: LIST
50645: PUSH
50646: LD_INT 8
50648: NEG
50649: PUSH
50650: LD_INT 7
50652: NEG
50653: PUSH
50654: EMPTY
50655: LIST
50656: LIST
50657: LIST
50658: LIST
50659: LIST
50660: LIST
50661: PPUSH
50662: CALL_OW 399
50666: ST_TO_ADDR
// Alliance_wood_reg_id = McRegistry ( alliance , [ [ mc_reg_area_to_guard , Ali_wood ] , [ mc_reg_refresh_time , 0 0$5 ] , - mc_reg_only_important , - mc_reg_ignore_fog ] ) ;
50667: LD_ADDR_EXP 249
50671: PUSH
50672: LD_EXP 182
50676: PPUSH
50677: LD_INT 2
50679: PUSH
50680: LD_INT 9
50682: PUSH
50683: EMPTY
50684: LIST
50685: LIST
50686: PUSH
50687: LD_INT 1
50689: PUSH
50690: LD_INT 175
50692: PUSH
50693: EMPTY
50694: LIST
50695: LIST
50696: PUSH
50697: LD_INT 8
50699: NEG
50700: PUSH
50701: LD_INT 7
50703: NEG
50704: PUSH
50705: EMPTY
50706: LIST
50707: LIST
50708: LIST
50709: LIST
50710: PPUSH
50711: CALL_OW 399
50715: ST_TO_ADDR
// McDefend ( 100 , Alliance_reg_id , Alliance_am_soldiers ^ Alliance_rus_soldiers ^ units_to_protect , [ [ mc_area_dont_leave , Al_Base ] , [ mc_retreat_area_people , Al_Heal ] , [ mc_retreat_lives_people , 550 ] ] ) ;
50716: LD_INT 100
50718: PPUSH
50719: LD_EXP 247
50723: PPUSH
50724: LD_EXP 95
50728: PUSH
50729: LD_EXP 94
50733: ADD
50734: PUSH
50735: LD_VAR 0 5
50739: ADD
50740: PPUSH
50741: LD_INT 2
50743: PUSH
50744: LD_INT 18
50746: PUSH
50747: EMPTY
50748: LIST
50749: LIST
50750: PUSH
50751: LD_INT 7
50753: PUSH
50754: LD_INT 28
50756: PUSH
50757: EMPTY
50758: LIST
50759: LIST
50760: PUSH
50761: LD_INT 5
50763: PUSH
50764: LD_INT 550
50766: PUSH
50767: EMPTY
50768: LIST
50769: LIST
50770: PUSH
50771: EMPTY
50772: LIST
50773: LIST
50774: LIST
50775: PPUSH
50776: CALL_OW 401
// end ;
50780: LD_VAR 0 1
50784: RET
// export function AlliancePersonIsDead ; begin
50785: LD_INT 0
50787: PPUSH
// if FilterAllUnits ( [ [ f_side , alliance ] , [ f_alive ] , [ f_type , unit_human ] ] ) = 0 then
50788: LD_INT 22
50790: PUSH
50791: LD_EXP 182
50795: PUSH
50796: EMPTY
50797: LIST
50798: LIST
50799: PUSH
50800: LD_INT 51
50802: PUSH
50803: EMPTY
50804: LIST
50805: PUSH
50806: LD_INT 21
50808: PUSH
50809: LD_INT 1
50811: PUSH
50812: EMPTY
50813: LIST
50814: LIST
50815: PUSH
50816: EMPTY
50817: LIST
50818: LIST
50819: LIST
50820: PPUSH
50821: CALL_OW 69
50825: PUSH
50826: LD_INT 0
50828: EQUAL
50829: IFFALSE 50863
// begin KillMc ( Alliance_reg_id ) ;
50831: LD_EXP 247
50835: PPUSH
50836: CALL_OW 387
// KillMc ( Alliance_def_id ) ;
50840: LD_EXP 248
50844: PPUSH
50845: CALL_OW 387
// KillMc ( Alliance_wood_reg_id ) ;
50849: LD_EXP 249
50853: PPUSH
50854: CALL_OW 387
// disable ( Not_end_of_alliance ) ;
50858: LD_EXP 154
50862: DISABLE_MARKED
// end ; end ;
50863: LD_VAR 0 1
50867: RET
// export function AllianceBuildingInRed ; var All_Alliance_Units , Un ; begin
50868: LD_INT 0
50870: PPUSH
50871: PPUSH
50872: PPUSH
// if not ( IsOk ( AllDep ) ) or GetSide ( AllDep ) <> alliance or not ( IsOk ( AllLabA ) ) or GetSide ( AllLabA ) <> alliance then
50873: LD_INT 45
50875: PPUSH
50876: CALL_OW 302
50880: NOT
50881: PUSH
50882: LD_INT 45
50884: PPUSH
50885: CALL_OW 255
50889: PUSH
50890: LD_EXP 182
50894: NONEQUAL
50895: OR
50896: PUSH
50897: LD_INT 46
50899: PPUSH
50900: CALL_OW 302
50904: NOT
50905: OR
50906: PUSH
50907: LD_INT 46
50909: PPUSH
50910: CALL_OW 255
50914: PUSH
50915: LD_EXP 182
50919: NONEQUAL
50920: OR
50921: IFFALSE 50957
// begin ComStop ( [ Explorer1 , Explorer2 ] ) ;
50923: LD_EXP 100
50927: PUSH
50928: LD_EXP 101
50932: PUSH
50933: EMPTY
50934: LIST
50935: LIST
50936: PPUSH
50937: CALL_OW 141
// Explorer1 = 0 ;
50941: LD_ADDR_EXP 100
50945: PUSH
50946: LD_INT 0
50948: ST_TO_ADDR
// Explorer2 = 0 ;
50949: LD_ADDR_EXP 101
50953: PUSH
50954: LD_INT 0
50956: ST_TO_ADDR
// end ; if ( ( UnitFilter ( Alliance_def_buildings , [ [ f_ok ] , [ f_side , alliance ] ] ) = 0 ) or not ( IsOk ( AllDep ) ) or GetSide ( AllDep ) <> alliance ) then
50957: LD_EXP 207
50961: PPUSH
50962: LD_INT 50
50964: PUSH
50965: EMPTY
50966: LIST
50967: PUSH
50968: LD_INT 22
50970: PUSH
50971: LD_EXP 182
50975: PUSH
50976: EMPTY
50977: LIST
50978: LIST
50979: PUSH
50980: EMPTY
50981: LIST
50982: LIST
50983: PPUSH
50984: CALL_OW 72
50988: PUSH
50989: LD_INT 0
50991: EQUAL
50992: PUSH
50993: LD_INT 45
50995: PPUSH
50996: CALL_OW 302
51000: NOT
51001: OR
51002: PUSH
51003: LD_INT 45
51005: PPUSH
51006: CALL_OW 255
51010: PUSH
51011: LD_EXP 182
51015: NONEQUAL
51016: OR
51017: IFFALSE 51656
// begin if IsOk ( Roth ) and GetAttitude ( alliance , americans ) <> att_friend then
51019: LD_EXP 20
51023: PPUSH
51024: CALL_OW 302
51028: PUSH
51029: LD_EXP 182
51033: PPUSH
51034: LD_EXP 176
51038: PPUSH
51039: CALL_OW 81
51043: PUSH
51044: LD_INT 1
51046: NONEQUAL
51047: AND
51048: IFFALSE 51656
// begin disable ( Explorers_Can_Go ) ;
51050: LD_EXP 153
51054: DISABLE_MARKED
// disable ( Not_End_of_Alliance ) ;
51055: LD_EXP 154
51059: DISABLE_MARKED
// SetSide ( FilterAllUnits ( [ f_side , Explorers_Side ] ) , alliance ) ;
51060: LD_INT 22
51062: PUSH
51063: LD_EXP 183
51067: PUSH
51068: EMPTY
51069: LIST
51070: LIST
51071: PPUSH
51072: CALL_OW 69
51076: PPUSH
51077: LD_EXP 182
51081: PPUSH
51082: CALL_OW 235
// KillMc ( Alliance_reg_id ) ;
51086: LD_EXP 247
51090: PPUSH
51091: CALL_OW 387
// KillMc ( Alliance_def_id ) ;
51095: LD_EXP 248
51099: PPUSH
51100: CALL_OW 387
// KillMc ( Alliance_wood_reg_id ) ;
51104: LD_EXP 249
51108: PPUSH
51109: CALL_OW 387
// Roth_Captured = true ;
51113: LD_ADDR_EXP 54
51117: PUSH
51118: LD_INT 1
51120: ST_TO_ADDR
// SetAttitude ( Alliance , Americans , att_friend , true ) ;
51121: LD_EXP 182
51125: PPUSH
51126: LD_EXP 176
51130: PPUSH
51131: LD_INT 1
51133: PPUSH
51134: LD_INT 1
51136: PPUSH
51137: CALL_OW 80
// All_Alliance_Units = FilterAllUnits ( [ f_side , Alliance ] ) ;
51141: LD_ADDR_VAR 0 2
51145: PUSH
51146: LD_INT 22
51148: PUSH
51149: LD_EXP 182
51153: PUSH
51154: EMPTY
51155: LIST
51156: LIST
51157: PPUSH
51158: CALL_OW 69
51162: ST_TO_ADDR
// ComExitBuilding ( All_Alliance_Units ) ;
51163: LD_VAR 0 2
51167: PPUSH
51168: CALL_OW 122
// ComStop ( All_Alliance_Units ) ;
51172: LD_VAR 0 2
51176: PPUSH
51177: CALL_OW 141
// ComStop ( FilterUnitsInArea ( Al_Base , [ f_side , americans ] ) ) ;
51181: LD_INT 18
51183: PPUSH
51184: LD_INT 22
51186: PUSH
51187: LD_EXP 176
51191: PUSH
51192: EMPTY
51193: LIST
51194: LIST
51195: PPUSH
51196: CALL_OW 70
51200: PPUSH
51201: CALL_OW 141
// Wait ( 0 0$1 ) ;
51205: LD_INT 35
51207: PPUSH
51208: CALL_OW 67
// CenterNowOnXY ( 233 , 181 ) ;
51212: LD_INT 233
51214: PPUSH
51215: LD_INT 181
51217: PPUSH
51218: CALL_OW 86
// DialogueON ;
51222: CALL_OW 6
// Say ( JMM , DAb-JMM-1 ) ;
51226: LD_EXP 1
51230: PPUSH
51231: LD_STRING DAb-JMM-1
51233: PPUSH
51234: CALL_OW 88
// if ( True_Americans ^ [ ] ) = 1 then
51238: LD_EXP 70
51242: PUSH
51243: EMPTY
51244: ADD
51245: PUSH
51246: LD_INT 1
51248: EQUAL
51249: IFFALSE 51265
// Say ( JMM , DAb-JMM-1a ) else
51251: LD_EXP 1
51255: PPUSH
51256: LD_STRING DAb-JMM-1a
51258: PPUSH
51259: CALL_OW 88
51263: GO 51287
// if True_Americans > 1 then
51265: LD_EXP 70
51269: PUSH
51270: LD_INT 1
51272: GREATER
51273: IFFALSE 51287
// Say ( JMM , DAb-JMM-1b ) ;
51275: LD_EXP 1
51279: PPUSH
51280: LD_STRING DAb-JMM-1b
51282: PPUSH
51283: CALL_OW 88
// DialogueOFF ;
51287: CALL_OW 7
// ChangeMissionObjectives ( M3a ) ;
51291: LD_STRING M3a
51293: PPUSH
51294: CALL_OW 337
// Captured_Units_of_Alliance = FilterAllUnits ( [ [ f_side , alliance ] , [ f_type , unit_human ] , [ f_alive ] ] ) ;
51298: LD_ADDR_EXP 99
51302: PUSH
51303: LD_INT 22
51305: PUSH
51306: LD_EXP 182
51310: PUSH
51311: EMPTY
51312: LIST
51313: LIST
51314: PUSH
51315: LD_INT 21
51317: PUSH
51318: LD_INT 1
51320: PUSH
51321: EMPTY
51322: LIST
51323: LIST
51324: PUSH
51325: LD_INT 51
51327: PUSH
51328: EMPTY
51329: LIST
51330: PUSH
51331: EMPTY
51332: LIST
51333: LIST
51334: LIST
51335: PPUSH
51336: CALL_OW 69
51340: ST_TO_ADDR
// ComMoveXY ( Captured_Units_of_Alliance , 226 , 197 ) ;
51341: LD_EXP 99
51345: PPUSH
51346: LD_INT 226
51348: PPUSH
51349: LD_INT 197
51351: PPUSH
51352: CALL_OW 111
// enable ( Alliance_Captured ) ;
51356: LD_EXP 152
51360: ENABLE_MARKED
// if IsOk ( AllDep ) then
51361: LD_INT 45
51363: PPUSH
51364: CALL_OW 302
51368: IFFALSE 51431
// begin for Un in True_Americans do
51370: LD_ADDR_VAR 0 3
51374: PUSH
51375: LD_EXP 70
51379: PUSH
51380: FOR_IN
51381: IFFALSE 51427
// begin SetSide ( Un , americans ) ;
51383: LD_VAR 0 3
51387: PPUSH
51388: LD_EXP 176
51392: PPUSH
51393: CALL_OW 235
// PlaceHumanInUnit ( Un , AllDep ) ;
51397: LD_VAR 0 3
51401: PPUSH
51402: LD_INT 45
51404: PPUSH
51405: CALL_OW 52
// ComExitBuilding ( Un ) ;
51409: LD_VAR 0 3
51413: PPUSH
51414: CALL_OW 122
// Wait ( 1 ) ;
51418: LD_INT 1
51420: PPUSH
51421: CALL_OW 67
// end ;
51425: GO 51380
51427: POP
51428: POP
// end else
51429: GO 51656
// if IsOk ( AllLabR2 ) then
51431: LD_INT 133
51433: PPUSH
51434: CALL_OW 302
51438: IFFALSE 51501
// begin for Un in True_Americans do
51440: LD_ADDR_VAR 0 3
51444: PUSH
51445: LD_EXP 70
51449: PUSH
51450: FOR_IN
51451: IFFALSE 51497
// begin SetSide ( Un , americans ) ;
51453: LD_VAR 0 3
51457: PPUSH
51458: LD_EXP 176
51462: PPUSH
51463: CALL_OW 235
// PlaceHumanInUnit ( Un , AllLabR2 ) ;
51467: LD_VAR 0 3
51471: PPUSH
51472: LD_INT 133
51474: PPUSH
51475: CALL_OW 52
// ComExitBuilding ( Un ) ;
51479: LD_VAR 0 3
51483: PPUSH
51484: CALL_OW 122
// Wait ( 1 ) ;
51488: LD_INT 1
51490: PPUSH
51491: CALL_OW 67
// end ;
51495: GO 51450
51497: POP
51498: POP
// end else
51499: GO 51656
// if IsOk ( AllLabR1 ) then
51501: LD_INT 39
51503: PPUSH
51504: CALL_OW 302
51508: IFFALSE 51571
// begin for Un in True_Americans do
51510: LD_ADDR_VAR 0 3
51514: PUSH
51515: LD_EXP 70
51519: PUSH
51520: FOR_IN
51521: IFFALSE 51567
// begin SetSide ( Un , americans ) ;
51523: LD_VAR 0 3
51527: PPUSH
51528: LD_EXP 176
51532: PPUSH
51533: CALL_OW 235
// PlaceHumanInUnit ( Un , AllLabR1 ) ;
51537: LD_VAR 0 3
51541: PPUSH
51542: LD_INT 39
51544: PPUSH
51545: CALL_OW 52
// ComExitBuilding ( Un ) ;
51549: LD_VAR 0 3
51553: PPUSH
51554: CALL_OW 122
// Wait ( 1 ) ;
51558: LD_INT 1
51560: PPUSH
51561: CALL_OW 67
// end ;
51565: GO 51520
51567: POP
51568: POP
// end else
51569: GO 51656
// begin for Un in True_Americans do
51571: LD_ADDR_VAR 0 3
51575: PUSH
51576: LD_EXP 70
51580: PUSH
51581: FOR_IN
51582: IFFALSE 51637
// begin SetSide ( Un , americans ) ;
51584: LD_VAR 0 3
51588: PPUSH
51589: LD_EXP 176
51593: PPUSH
51594: CALL_OW 235
// All_americans = All_americans ^ Un ;
51598: LD_ADDR_EXP 61
51602: PUSH
51603: LD_EXP 61
51607: PUSH
51608: LD_VAR 0 3
51612: ADD
51613: ST_TO_ADDR
// PlaceUnitXYR ( Un , 250 , 195 , 3 , false ) ;
51614: LD_VAR 0 3
51618: PPUSH
51619: LD_INT 250
51621: PPUSH
51622: LD_INT 195
51624: PPUSH
51625: LD_INT 3
51627: PPUSH
51628: LD_INT 0
51630: PPUSH
51631: CALL_OW 50
// end ;
51635: GO 51581
51637: POP
51638: POP
// All_americans = All_americans diff [ 0 ] ;
51639: LD_ADDR_EXP 61
51643: PUSH
51644: LD_EXP 61
51648: PUSH
51649: LD_INT 0
51651: PUSH
51652: EMPTY
51653: LIST
51654: DIFF
51655: ST_TO_ADDR
// end ; end ; end ; end ;
51656: LD_VAR 0 1
51660: RET
// function SelectExplorer ; var R , Un ; begin
51661: LD_INT 0
51663: PPUSH
51664: PPUSH
51665: PPUSH
// R = 0 ;
51666: LD_ADDR_VAR 0 2
51670: PUSH
51671: LD_INT 0
51673: ST_TO_ADDR
// for Un in Alliance_am_soldiers ^ Alliance_am_scientists do
51674: LD_ADDR_VAR 0 3
51678: PUSH
51679: LD_EXP 95
51683: PUSH
51684: LD_EXP 97
51688: ADD
51689: PUSH
51690: FOR_IN
51691: IFFALSE 51839
// if IsOk ( Un ) then
51693: LD_VAR 0 3
51697: PPUSH
51698: CALL_OW 302
51702: IFFALSE 51837
// begin if Un in Alliance_am_soldiers then
51704: LD_VAR 0 3
51708: PUSH
51709: LD_EXP 95
51713: IN
51714: IFFALSE 51734
// Alliance_am_soldiers = Alliance_am_soldiers diff Un else
51716: LD_ADDR_EXP 95
51720: PUSH
51721: LD_EXP 95
51725: PUSH
51726: LD_VAR 0 3
51730: DIFF
51731: ST_TO_ADDR
51732: GO 51750
// Alliance_am_scientists = Alliance_am_scientists diff Un ;
51734: LD_ADDR_EXP 97
51738: PUSH
51739: LD_EXP 97
51743: PUSH
51744: LD_VAR 0 3
51748: DIFF
51749: ST_TO_ADDR
// if GetClass ( Un ) <> class_soldier then
51750: LD_VAR 0 3
51754: PPUSH
51755: CALL_OW 257
51759: PUSH
51760: LD_INT 1
51762: NONEQUAL
51763: IFFALSE 51811
// begin ComEnterUnit ( Un , AllBarrA ) ;
51765: LD_VAR 0 3
51769: PPUSH
51770: LD_INT 41
51772: PPUSH
51773: CALL_OW 120
// AddComChangeProfession ( Un , class_soldier ) ;
51777: LD_VAR 0 3
51781: PPUSH
51782: LD_INT 1
51784: PPUSH
51785: CALL_OW 183
// AddComExitBuilding ( Un ) ;
51789: LD_VAR 0 3
51793: PPUSH
51794: CALL_OW 182
// WaitTask ( Un , 0.5 ) ;
51798: LD_VAR 0 3
51802: PPUSH
51803: LD_REAL  5.00000000000000E-0001
51806: PPUSH
51807: CALL 17892 0 2
// end ; SetSide ( Un , Explorers_Side ) ;
51811: LD_VAR 0 3
51815: PPUSH
51816: LD_EXP 183
51820: PPUSH
51821: CALL_OW 235
// R = Un ;
51825: LD_ADDR_VAR 0 2
51829: PUSH
51830: LD_VAR 0 3
51834: ST_TO_ADDR
// break ;
51835: GO 51839
// end ;
51837: GO 51690
51839: POP
51840: POP
// Result = R ;
51841: LD_ADDR_VAR 0 1
51845: PUSH
51846: LD_VAR 0 2
51850: ST_TO_ADDR
// end ;
51851: LD_VAR 0 1
51855: RET
// function SelectExplorers ; begin
51856: LD_INT 0
51858: PPUSH
// if not ( IsLive ( Explorer1 ) ) then
51859: LD_EXP 100
51863: PPUSH
51864: CALL_OW 300
51868: NOT
51869: IFFALSE 51881
// Explorer1 = SelectExplorer ;
51871: LD_ADDR_EXP 100
51875: PUSH
51876: CALL 51661 0 0
51880: ST_TO_ADDR
// if not ( IsLive ( Explorer2 ) ) then
51881: LD_EXP 101
51885: PPUSH
51886: CALL_OW 300
51890: NOT
51891: IFFALSE 51903
// Explorer2 = SelectExplorer ;
51893: LD_ADDR_EXP 101
51897: PUSH
51898: CALL 51661 0 0
51902: ST_TO_ADDR
// end ;
51903: LD_VAR 0 1
51907: RET
// function CaptureDialogue ( Captured_american ) ; var Join ; begin
51908: LD_INT 0
51910: PPUSH
51911: PPUSH
// Join = 0 ;
51912: LD_ADDR_VAR 0 3
51916: PUSH
51917: LD_INT 0
51919: ST_TO_ADDR
// DialogueON ;
51920: CALL_OW 6
// case Captured_american of JMM :
51924: LD_VAR 0 1
51928: PUSH
51929: LD_EXP 1
51933: DOUBLE
51934: EQUAL
51935: IFTRUE 51939
51937: GO 51954
51939: POP
// ForceSay ( JMM , DA1-JMM-1 ) ; Joan :
51940: LD_EXP 1
51944: PPUSH
51945: LD_STRING DA1-JMM-1
51947: PPUSH
51948: CALL_OW 91
51952: GO 52371
51954: LD_EXP 12
51958: DOUBLE
51959: EQUAL
51960: IFTRUE 51964
51962: GO 51979
51964: POP
// ForceSay ( Joan , DA1-Joan-1 ) ; Lisa :
51965: LD_EXP 12
51969: PPUSH
51970: LD_STRING DA1-Joan-1
51972: PPUSH
51973: CALL_OW 91
51977: GO 52371
51979: LD_EXP 5
51983: DOUBLE
51984: EQUAL
51985: IFTRUE 51989
51987: GO 52004
51989: POP
// ForceSay ( Lisa , DA1-Lisa-1 ) ; Donaldson :
51990: LD_EXP 5
51994: PPUSH
51995: LD_STRING DA1-Lisa-1
51997: PPUSH
51998: CALL_OW 91
52002: GO 52371
52004: LD_EXP 8
52008: DOUBLE
52009: EQUAL
52010: IFTRUE 52014
52012: GO 52029
52014: POP
// ForceSay ( Donaldson , DA1-Don-1 ) ; Cornell :
52015: LD_EXP 8
52019: PPUSH
52020: LD_STRING DA1-Don-1
52022: PPUSH
52023: CALL_OW 91
52027: GO 52371
52029: LD_EXP 10
52033: DOUBLE
52034: EQUAL
52035: IFTRUE 52039
52037: GO 52054
52039: POP
// ForceSay ( Cornell , DA1-Corn-1 ) ; Denis :
52040: LD_EXP 10
52044: PPUSH
52045: LD_STRING DA1-Corn-1
52047: PPUSH
52048: CALL_OW 91
52052: GO 52371
52054: LD_EXP 11
52058: DOUBLE
52059: EQUAL
52060: IFTRUE 52064
52062: GO 52079
52064: POP
// ForceSay ( Denis , DA1-Den-1 ) ; Bobby :
52065: LD_EXP 11
52069: PPUSH
52070: LD_STRING DA1-Den-1
52072: PPUSH
52073: CALL_OW 91
52077: GO 52371
52079: LD_EXP 3
52083: DOUBLE
52084: EQUAL
52085: IFTRUE 52089
52087: GO 52104
52089: POP
// ForceSay ( Bobby , DA1-Bobby-1 ) ; Gladstone :
52090: LD_EXP 3
52094: PPUSH
52095: LD_STRING DA1-Bobby-1
52097: PPUSH
52098: CALL_OW 91
52102: GO 52371
52104: LD_EXP 9
52108: DOUBLE
52109: EQUAL
52110: IFTRUE 52114
52112: GO 52129
52114: POP
// ForceSay ( Gladstone , DA1-Glad-1 ) ; Cyrus :
52115: LD_EXP 9
52119: PPUSH
52120: LD_STRING DA1-Glad-1
52122: PPUSH
52123: CALL_OW 91
52127: GO 52371
52129: LD_EXP 4
52133: DOUBLE
52134: EQUAL
52135: IFTRUE 52139
52137: GO 52154
52139: POP
// ForceSay ( Cyrus , DA1-Cyrus-1 ) ; Stevens :
52140: LD_EXP 4
52144: PPUSH
52145: LD_STRING DA1-Cyrus-1
52147: PPUSH
52148: CALL_OW 91
52152: GO 52371
52154: LD_EXP 17
52158: DOUBLE
52159: EQUAL
52160: IFTRUE 52164
52162: GO 52179
52164: POP
// ForceSay ( Stevens , DA1-Huck-1 ) ; Brown :
52165: LD_EXP 17
52169: PPUSH
52170: LD_STRING DA1-Huck-1
52172: PPUSH
52173: CALL_OW 91
52177: GO 52371
52179: LD_EXP 7
52183: DOUBLE
52184: EQUAL
52185: IFTRUE 52189
52187: GO 52204
52189: POP
// ForceSay ( Brown , DA1-Brown-1 ) ; Gary :
52190: LD_EXP 7
52194: PPUSH
52195: LD_STRING DA1-Brown-1
52197: PPUSH
52198: CALL_OW 91
52202: GO 52371
52204: LD_EXP 15
52208: DOUBLE
52209: EQUAL
52210: IFTRUE 52214
52212: GO 52229
52214: POP
// ForceSay ( Gary , DA1-Gary-1 ) ; Coonie :
52215: LD_EXP 15
52219: PPUSH
52220: LD_STRING DA1-Gary-1
52222: PPUSH
52223: CALL_OW 91
52227: GO 52371
52229: LD_EXP 18
52233: DOUBLE
52234: EQUAL
52235: IFTRUE 52239
52237: GO 52254
52239: POP
// ForceSay ( Coonie , DA1-Con-1 ) ; Kurt :
52240: LD_EXP 18
52244: PPUSH
52245: LD_STRING DA1-Con-1
52247: PPUSH
52248: CALL_OW 91
52252: GO 52371
52254: LD_EXP 13
52258: DOUBLE
52259: EQUAL
52260: IFTRUE 52264
52262: GO 52279
52264: POP
// ForceSay ( Kurt , DA1-Kurt-1 ) ; Yamoko :
52265: LD_EXP 13
52269: PPUSH
52270: LD_STRING DA1-Kurt-1
52272: PPUSH
52273: CALL_OW 91
52277: GO 52371
52279: LD_EXP 14
52283: DOUBLE
52284: EQUAL
52285: IFTRUE 52289
52287: GO 52304
52289: POP
// ForceSay ( Yamoko , DA1-Yam-1 ) ; Frank :
52290: LD_EXP 14
52294: PPUSH
52295: LD_STRING DA1-Yam-1
52297: PPUSH
52298: CALL_OW 91
52302: GO 52371
52304: LD_EXP 6
52308: DOUBLE
52309: EQUAL
52310: IFTRUE 52314
52312: GO 52329
52314: POP
// ForceSay ( Frank , DA1-Frank-1 ) ; else
52315: LD_EXP 6
52319: PPUSH
52320: LD_STRING DA1-Frank-1
52322: PPUSH
52323: CALL_OW 91
52327: GO 52371
52329: POP
// begin if GetSex ( Captured_american ) = sex_male then
52330: LD_VAR 0 1
52334: PPUSH
52335: CALL_OW 258
52339: PUSH
52340: LD_INT 1
52342: EQUAL
52343: IFFALSE 52359
// ForceSay ( Captured_american , DA1-Sol1-1 ) else
52345: LD_VAR 0 1
52349: PPUSH
52350: LD_STRING DA1-Sol1-1
52352: PPUSH
52353: CALL_OW 91
52357: GO 52371
// ForceSay ( Captured_american , DA1-FSol1-1 ) ;
52359: LD_VAR 0 1
52363: PPUSH
52364: LD_STRING DA1-FSol1-1
52366: PPUSH
52367: CALL_OW 91
// end ; end ; Say ( Roth , DA-Roth-1 ) ;
52371: LD_EXP 20
52375: PPUSH
52376: LD_STRING DA-Roth-1
52378: PPUSH
52379: CALL_OW 88
// if Number_of_captured_americans = 1 then
52383: LD_EXP 211
52387: PUSH
52388: LD_INT 1
52390: EQUAL
52391: IFFALSE 52419
// begin Say ( Simms , DA-Sim-1 ) ;
52393: LD_EXP 16
52397: PPUSH
52398: LD_STRING DA-Sim-1
52400: PPUSH
52401: CALL_OW 88
// Say ( Roth , DA-Roth-2 ) ;
52405: LD_EXP 20
52409: PPUSH
52410: LD_STRING DA-Roth-2
52412: PPUSH
52413: CALL_OW 88
// end else
52417: GO 52431
// Say ( Simms , DA-Sim-2 ) ;
52419: LD_EXP 16
52423: PPUSH
52424: LD_STRING DA-Sim-2
52426: PPUSH
52427: CALL_OW 88
// case Captured_american of JMM :
52431: LD_VAR 0 1
52435: PUSH
52436: LD_EXP 1
52440: DOUBLE
52441: EQUAL
52442: IFTRUE 52446
52444: GO 52461
52446: POP
// ForceSay ( JMM , DA1-JMM-1a ) ; Joan :
52447: LD_EXP 1
52451: PPUSH
52452: LD_STRING DA1-JMM-1a
52454: PPUSH
52455: CALL_OW 91
52459: GO 52943
52461: LD_EXP 12
52465: DOUBLE
52466: EQUAL
52467: IFTRUE 52471
52469: GO 52486
52471: POP
// ForceSay ( Joan , DA1-Joan-1a ) ; Lisa :
52472: LD_EXP 12
52476: PPUSH
52477: LD_STRING DA1-Joan-1a
52479: PPUSH
52480: CALL_OW 91
52484: GO 52943
52486: LD_EXP 5
52490: DOUBLE
52491: EQUAL
52492: IFTRUE 52496
52494: GO 52511
52496: POP
// ForceSay ( Lisa , DA1-Lisa-1a ) ; Donaldson :
52497: LD_EXP 5
52501: PPUSH
52502: LD_STRING DA1-Lisa-1a
52504: PPUSH
52505: CALL_OW 91
52509: GO 52943
52511: LD_EXP 8
52515: DOUBLE
52516: EQUAL
52517: IFTRUE 52521
52519: GO 52536
52521: POP
// ForceSay ( Donaldson , DA1-Don-1a ) ; Cornell :
52522: LD_EXP 8
52526: PPUSH
52527: LD_STRING DA1-Don-1a
52529: PPUSH
52530: CALL_OW 91
52534: GO 52943
52536: LD_EXP 10
52540: DOUBLE
52541: EQUAL
52542: IFTRUE 52546
52544: GO 52561
52546: POP
// ForceSay ( Cornell , DA1-Corn-1a ) ; Denis :
52547: LD_EXP 10
52551: PPUSH
52552: LD_STRING DA1-Corn-1a
52554: PPUSH
52555: CALL_OW 91
52559: GO 52943
52561: LD_EXP 11
52565: DOUBLE
52566: EQUAL
52567: IFTRUE 52571
52569: GO 52586
52571: POP
// ForceSay ( Denis , DA1-Den-1a ) ; Bobby :
52572: LD_EXP 11
52576: PPUSH
52577: LD_STRING DA1-Den-1a
52579: PPUSH
52580: CALL_OW 91
52584: GO 52943
52586: LD_EXP 3
52590: DOUBLE
52591: EQUAL
52592: IFTRUE 52596
52594: GO 52611
52596: POP
// ForceSay ( Bobby , DA1-Bobby-1a ) ; Gladstone :
52597: LD_EXP 3
52601: PPUSH
52602: LD_STRING DA1-Bobby-1a
52604: PPUSH
52605: CALL_OW 91
52609: GO 52943
52611: LD_EXP 9
52615: DOUBLE
52616: EQUAL
52617: IFTRUE 52621
52619: GO 52636
52621: POP
// ForceSay ( Gladstone , DA1-Glad-1a ) ; Cyrus :
52622: LD_EXP 9
52626: PPUSH
52627: LD_STRING DA1-Glad-1a
52629: PPUSH
52630: CALL_OW 91
52634: GO 52943
52636: LD_EXP 4
52640: DOUBLE
52641: EQUAL
52642: IFTRUE 52646
52644: GO 52661
52646: POP
// ForceSay ( Cyrus , DA1-Cyrus-1a ) ; Stevens :
52647: LD_EXP 4
52651: PPUSH
52652: LD_STRING DA1-Cyrus-1a
52654: PPUSH
52655: CALL_OW 91
52659: GO 52943
52661: LD_EXP 17
52665: DOUBLE
52666: EQUAL
52667: IFTRUE 52671
52669: GO 52686
52671: POP
// ForceSay ( Stevens , DA1-Huck-1a ) ; Brown :
52672: LD_EXP 17
52676: PPUSH
52677: LD_STRING DA1-Huck-1a
52679: PPUSH
52680: CALL_OW 91
52684: GO 52943
52686: LD_EXP 7
52690: DOUBLE
52691: EQUAL
52692: IFTRUE 52696
52694: GO 52711
52696: POP
// ForceSay ( Brown , DA1-Brown-1a ) ; Gary :
52697: LD_EXP 7
52701: PPUSH
52702: LD_STRING DA1-Brown-1a
52704: PPUSH
52705: CALL_OW 91
52709: GO 52943
52711: LD_EXP 15
52715: DOUBLE
52716: EQUAL
52717: IFTRUE 52721
52719: GO 52736
52721: POP
// ForceSay ( Gary , DA1-Gary-1a ) ; Coonie :
52722: LD_EXP 15
52726: PPUSH
52727: LD_STRING DA1-Gary-1a
52729: PPUSH
52730: CALL_OW 91
52734: GO 52943
52736: LD_EXP 18
52740: DOUBLE
52741: EQUAL
52742: IFTRUE 52746
52744: GO 52761
52746: POP
// ForceSay ( Coonie , DA1-Con-1a ) ; Kurt :
52747: LD_EXP 18
52751: PPUSH
52752: LD_STRING DA1-Con-1a
52754: PPUSH
52755: CALL_OW 91
52759: GO 52943
52761: LD_EXP 13
52765: DOUBLE
52766: EQUAL
52767: IFTRUE 52771
52769: GO 52786
52771: POP
// ForceSay ( Kurt , DA1-Kurt-1a ) ; Yamoko :
52772: LD_EXP 13
52776: PPUSH
52777: LD_STRING DA1-Kurt-1a
52779: PPUSH
52780: CALL_OW 91
52784: GO 52943
52786: LD_EXP 14
52790: DOUBLE
52791: EQUAL
52792: IFTRUE 52796
52794: GO 52811
52796: POP
// ForceSay ( Yamoko , DA1-Yam-1a ) ; Frank :
52797: LD_EXP 14
52801: PPUSH
52802: LD_STRING DA1-Yam-1a
52804: PPUSH
52805: CALL_OW 91
52809: GO 52943
52811: LD_EXP 6
52815: DOUBLE
52816: EQUAL
52817: IFTRUE 52821
52819: GO 52836
52821: POP
// ForceSay ( Frank , DA1-Frank-1a ) ; else
52822: LD_EXP 6
52826: PPUSH
52827: LD_STRING DA1-Frank-1a
52829: PPUSH
52830: CALL_OW 91
52834: GO 52943
52836: POP
// begin Join = Rand ( 0 , 1 ) ;
52837: LD_ADDR_VAR 0 3
52841: PUSH
52842: LD_INT 0
52844: PPUSH
52845: LD_INT 1
52847: PPUSH
52848: CALL_OW 12
52852: ST_TO_ADDR
// if Join then
52853: LD_VAR 0 3
52857: IFFALSE 52902
// begin if GetSex ( Captured_american ) = sex_male then
52859: LD_VAR 0 1
52863: PPUSH
52864: CALL_OW 258
52868: PUSH
52869: LD_INT 1
52871: EQUAL
52872: IFFALSE 52888
// ForceSay ( Captured_american , DA1-Sol1-1b ) else
52874: LD_VAR 0 1
52878: PPUSH
52879: LD_STRING DA1-Sol1-1b
52881: PPUSH
52882: CALL_OW 91
52886: GO 52900
// ForceSay ( Captured_american , DA1-FSol1-1b ) ;
52888: LD_VAR 0 1
52892: PPUSH
52893: LD_STRING DA1-FSol1-1b
52895: PPUSH
52896: CALL_OW 91
// end else
52900: GO 52943
// begin if GetSex ( Captured_american ) = sex_male then
52902: LD_VAR 0 1
52906: PPUSH
52907: CALL_OW 258
52911: PUSH
52912: LD_INT 1
52914: EQUAL
52915: IFFALSE 52931
// ForceSay ( Captured_american , DA1-Sol1-1a ) else
52917: LD_VAR 0 1
52921: PPUSH
52922: LD_STRING DA1-Sol1-1a
52924: PPUSH
52925: CALL_OW 91
52929: GO 52943
// ForceSay ( Captured_american , DA1-FSol1-1a ) ;
52931: LD_VAR 0 1
52935: PPUSH
52936: LD_STRING DA1-FSol1-1a
52938: PPUSH
52939: CALL_OW 91
// end ; end ; end ; if ( Captured_american in [ Donaldson , Denis , Bobby , Stevens , Brown , Yamoko ] ) or Join then
52943: LD_VAR 0 1
52947: PUSH
52948: LD_EXP 8
52952: PUSH
52953: LD_EXP 11
52957: PUSH
52958: LD_EXP 3
52962: PUSH
52963: LD_EXP 17
52967: PUSH
52968: LD_EXP 7
52972: PUSH
52973: LD_EXP 14
52977: PUSH
52978: EMPTY
52979: LIST
52980: LIST
52981: LIST
52982: LIST
52983: LIST
52984: LIST
52985: IN
52986: PUSH
52987: LD_VAR 0 3
52991: OR
52992: IFFALSE 53054
// begin Say ( Roth , DA-Roth-3 ) ;
52994: LD_EXP 20
52998: PPUSH
52999: LD_STRING DA-Roth-3
53001: PPUSH
53002: CALL_OW 88
// SetSide ( Captured_american , alliance ) ;
53006: LD_VAR 0 1
53010: PPUSH
53011: LD_EXP 182
53015: PPUSH
53016: CALL_OW 235
// Alliance_am_soldiers = Alliance_am_soldiers ^ Captured_american ;
53020: LD_ADDR_EXP 95
53024: PUSH
53025: LD_EXP 95
53029: PUSH
53030: LD_VAR 0 1
53034: ADD
53035: ST_TO_ADDR
// All_americans = All_americans diff Captured_american ;
53036: LD_ADDR_EXP 61
53040: PUSH
53041: LD_EXP 61
53045: PUSH
53046: LD_VAR 0 1
53050: DIFF
53051: ST_TO_ADDR
// end else
53052: GO 53091
// begin Say ( Roth , DA-Roth-3a ) ;
53054: LD_EXP 20
53058: PPUSH
53059: LD_STRING DA-Roth-3a
53061: PPUSH
53062: CALL_OW 88
// RemoveUnit ( Captured_american ) ;
53066: LD_VAR 0 1
53070: PPUSH
53071: CALL_OW 64
// True_americans = True_americans ^ Captured_american ;
53075: LD_ADDR_EXP 70
53079: PUSH
53080: LD_EXP 70
53084: PUSH
53085: LD_VAR 0 1
53089: ADD
53090: ST_TO_ADDR
// end ; SetLives ( Captured_american , 1000 ) ;
53091: LD_VAR 0 1
53095: PPUSH
53096: LD_INT 1000
53098: PPUSH
53099: CALL_OW 234
// if ( Captured_american = JMM ) then
53103: LD_VAR 0 1
53107: PUSH
53108: LD_EXP 1
53112: EQUAL
53113: IFFALSE 53120
// enable ( JMM_Captured ) ;
53115: LD_EXP 160
53119: ENABLE_MARKED
// DialogueOFF ;
53120: CALL_OW 7
// end ;
53124: LD_VAR 0 2
53128: RET
// function HealExplorers ; begin
53129: LD_INT 0
53131: PPUSH
// if ( IsLive ( Explorer1 ) and not ( See ( americans , Explorer1 ) ) ) then
53132: LD_EXP 100
53136: PPUSH
53137: CALL_OW 300
53141: PUSH
53142: LD_EXP 176
53146: PPUSH
53147: LD_EXP 100
53151: PPUSH
53152: CALL_OW 292
53156: NOT
53157: AND
53158: IFFALSE 53172
// SetLives ( Explorer1 , 1000 ) ;
53160: LD_EXP 100
53164: PPUSH
53165: LD_INT 1000
53167: PPUSH
53168: CALL_OW 234
// if ( IsLive ( Explorer2 ) and not ( See ( americans , Explorer2 ) ) ) then
53172: LD_EXP 101
53176: PPUSH
53177: CALL_OW 300
53181: PUSH
53182: LD_EXP 176
53186: PPUSH
53187: LD_EXP 101
53191: PPUSH
53192: CALL_OW 292
53196: NOT
53197: AND
53198: IFFALSE 53212
// SetLives ( Explorer2 , 1000 ) ;
53200: LD_EXP 101
53204: PPUSH
53205: LD_INT 1000
53207: PPUSH
53208: CALL_OW 234
// end ;
53212: LD_VAR 0 1
53216: RET
// function SohwCaptureToPlayer ( Captured_american , Explorer1 , Explorer2 ) ; var AmToAr , ArToAm , Un , Units_to_stop ; begin
53217: LD_INT 0
53219: PPUSH
53220: PPUSH
53221: PPUSH
53222: PPUSH
53223: PPUSH
// AmToAr = GetAttitude ( americans , arabians ) ;
53224: LD_ADDR_VAR 0 5
53228: PUSH
53229: LD_EXP 176
53233: PPUSH
53234: LD_EXP 180
53238: PPUSH
53239: CALL_OW 81
53243: ST_TO_ADDR
// ArToAm = GetAttitude ( arabians , americans ) ;
53244: LD_ADDR_VAR 0 6
53248: PUSH
53249: LD_EXP 180
53253: PPUSH
53254: LD_EXP 176
53258: PPUSH
53259: CALL_OW 81
53263: ST_TO_ADDR
// SetAttitude ( americans , russians , att_friend , true ) ;
53264: LD_EXP 176
53268: PPUSH
53269: LD_EXP 178
53273: PPUSH
53274: LD_INT 1
53276: PPUSH
53277: LD_INT 1
53279: PPUSH
53280: CALL_OW 80
// SetAttitude ( americans , russians1 , att_friend , true ) ;
53284: LD_EXP 176
53288: PPUSH
53289: LD_EXP 179
53293: PPUSH
53294: LD_INT 1
53296: PPUSH
53297: LD_INT 1
53299: PPUSH
53300: CALL_OW 80
// SetAttitude ( americans , arabians , att_friend , true ) ;
53304: LD_EXP 176
53308: PPUSH
53309: LD_EXP 180
53313: PPUSH
53314: LD_INT 1
53316: PPUSH
53317: LD_INT 1
53319: PPUSH
53320: CALL_OW 80
// Units_to_stop = FilterAllUnits ( [ [ f_or , [ f_side , russians ] , [ f_side , russians1 ] , [ f_side , arabians ] , [ f_side , americans ] ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) ;
53324: LD_ADDR_VAR 0 8
53328: PUSH
53329: LD_INT 2
53331: PUSH
53332: LD_INT 22
53334: PUSH
53335: LD_EXP 178
53339: PUSH
53340: EMPTY
53341: LIST
53342: LIST
53343: PUSH
53344: LD_INT 22
53346: PUSH
53347: LD_EXP 179
53351: PUSH
53352: EMPTY
53353: LIST
53354: LIST
53355: PUSH
53356: LD_INT 22
53358: PUSH
53359: LD_EXP 180
53363: PUSH
53364: EMPTY
53365: LIST
53366: LIST
53367: PUSH
53368: LD_INT 22
53370: PUSH
53371: LD_EXP 176
53375: PUSH
53376: EMPTY
53377: LIST
53378: LIST
53379: PUSH
53380: EMPTY
53381: LIST
53382: LIST
53383: LIST
53384: LIST
53385: LIST
53386: PUSH
53387: LD_INT 2
53389: PUSH
53390: LD_INT 21
53392: PUSH
53393: LD_INT 1
53395: PUSH
53396: EMPTY
53397: LIST
53398: LIST
53399: PUSH
53400: LD_INT 21
53402: PUSH
53403: LD_INT 2
53405: PUSH
53406: EMPTY
53407: LIST
53408: LIST
53409: PUSH
53410: EMPTY
53411: LIST
53412: LIST
53413: LIST
53414: PUSH
53415: EMPTY
53416: LIST
53417: LIST
53418: PPUSH
53419: CALL_OW 69
53423: ST_TO_ADDR
// for Un in Units_to_stop do
53424: LD_ADDR_VAR 0 7
53428: PUSH
53429: LD_VAR 0 8
53433: PUSH
53434: FOR_IN
53435: IFFALSE 53463
// begin if Attacks ( Un ) <> 0 then
53437: LD_VAR 0 7
53441: PPUSH
53442: CALL_OW 320
53446: PUSH
53447: LD_INT 0
53449: NONEQUAL
53450: IFFALSE 53461
// ComStop ( Un ) ;
53452: LD_VAR 0 7
53456: PPUSH
53457: CALL_OW 141
// end ;
53461: GO 53434
53463: POP
53464: POP
// while IsInUnit ( Captured_american ) <> 0 do
53465: LD_VAR 0 1
53469: PPUSH
53470: CALL_OW 310
53474: PUSH
53475: LD_INT 0
53477: NONEQUAL
53478: IFFALSE 53503
// begin ComExitVehicle ( IsInUnit ( Captured_american ) ) ;
53480: LD_VAR 0 1
53484: PPUSH
53485: CALL_OW 310
53489: PPUSH
53490: CALL_OW 121
// Wait ( 1 ) ;
53494: LD_INT 1
53496: PPUSH
53497: CALL_OW 67
// end ;
53501: GO 53465
// SetSide ( Captured_american , americans1 ) ;
53503: LD_VAR 0 1
53507: PPUSH
53508: LD_EXP 177
53512: PPUSH
53513: CALL_OW 235
// ComStop ( Captured_american ) ;
53517: LD_VAR 0 1
53521: PPUSH
53522: CALL_OW 141
// DoNotAttack ( alliance , Captured_american ) ;
53526: LD_EXP 182
53530: PPUSH
53531: LD_VAR 0 1
53535: PPUSH
53536: CALL_OW 471
// DoNotAttack ( Explorers_side , Captured_american ) ;
53540: LD_EXP 183
53544: PPUSH
53545: LD_VAR 0 1
53549: PPUSH
53550: CALL_OW 471
// if ( Explorer1 <> 0 ) and ( Explorer2 <> 0 ) then
53554: LD_VAR 0 2
53558: PUSH
53559: LD_INT 0
53561: NONEQUAL
53562: PUSH
53563: LD_VAR 0 3
53567: PUSH
53568: LD_INT 0
53570: NONEQUAL
53571: AND
53572: IFFALSE 53600
// CenterNowOnUnits ( [ Explorer1 , Explorer2 , Captured_american ] ) else
53574: LD_VAR 0 2
53578: PUSH
53579: LD_VAR 0 3
53583: PUSH
53584: LD_VAR 0 1
53588: PUSH
53589: EMPTY
53590: LIST
53591: LIST
53592: LIST
53593: PPUSH
53594: CALL_OW 87
53598: GO 53609
// CenterNowOnUnits ( Captured_american ) ;
53600: LD_VAR 0 1
53604: PPUSH
53605: CALL_OW 87
// ingame_video = true ;
53609: LD_ADDR_OWVAR 52
53613: PUSH
53614: LD_INT 1
53616: ST_TO_ADDR
// if Explorer1 <> 0 then
53617: LD_VAR 0 2
53621: PUSH
53622: LD_INT 0
53624: NONEQUAL
53625: IFFALSE 53648
// TeleportUnit ( Explorer1 , 245 , 186 , 3 , true ) ;
53627: LD_VAR 0 2
53631: PPUSH
53632: LD_INT 245
53634: PPUSH
53635: LD_INT 186
53637: PPUSH
53638: LD_INT 3
53640: PPUSH
53641: LD_INT 1
53643: PPUSH
53644: CALL_OW 483
// if Explorer2 <> 0 then
53648: LD_VAR 0 3
53652: PUSH
53653: LD_INT 0
53655: NONEQUAL
53656: IFFALSE 53679
// TeleportUnit ( Explorer2 , 245 , 186 , 3 , true ) ;
53658: LD_VAR 0 3
53662: PPUSH
53663: LD_INT 245
53665: PPUSH
53666: LD_INT 186
53668: PPUSH
53669: LD_INT 3
53671: PPUSH
53672: LD_INT 1
53674: PPUSH
53675: CALL_OW 483
// TeleportUnit ( Captured_american , 245 , 186 , 3 , true ) ;
53679: LD_VAR 0 1
53683: PPUSH
53684: LD_INT 245
53686: PPUSH
53687: LD_INT 186
53689: PPUSH
53690: LD_INT 3
53692: PPUSH
53693: LD_INT 1
53695: PPUSH
53696: CALL_OW 483
// Wait ( 0 0$3 ) ;
53700: LD_INT 105
53702: PPUSH
53703: CALL_OW 67
// CenterNowOnUnits ( Captured_american ) ;
53707: LD_VAR 0 1
53711: PPUSH
53712: CALL_OW 87
// Wait ( 0 0$1 ) ;
53716: LD_INT 35
53718: PPUSH
53719: CALL_OW 67
// ingame_video = false ;
53723: LD_ADDR_OWVAR 52
53727: PUSH
53728: LD_INT 0
53730: ST_TO_ADDR
// CaptureDialogue ( Captured_american ) ;
53731: LD_VAR 0 1
53735: PPUSH
53736: CALL 51908 0 1
// HealExplorers ;
53740: CALL 53129 0 0
// SetAttitude ( americans , russians , att_enemy , true ) ;
53744: LD_EXP 176
53748: PPUSH
53749: LD_EXP 178
53753: PPUSH
53754: LD_INT 2
53756: PPUSH
53757: LD_INT 1
53759: PPUSH
53760: CALL_OW 80
// SetAttitude ( americans , russians1 , att_enemy , true ) ;
53764: LD_EXP 176
53768: PPUSH
53769: LD_EXP 179
53773: PPUSH
53774: LD_INT 2
53776: PPUSH
53777: LD_INT 1
53779: PPUSH
53780: CALL_OW 80
// SetAttitude ( americans , arabians , AmToAr , false ) ;
53784: LD_EXP 176
53788: PPUSH
53789: LD_EXP 180
53793: PPUSH
53794: LD_VAR 0 5
53798: PPUSH
53799: LD_INT 0
53801: PPUSH
53802: CALL_OW 80
// SetAttitude ( arabians , americans , ArToAm , false ) ;
53806: LD_EXP 180
53810: PPUSH
53811: LD_EXP 176
53815: PPUSH
53816: LD_VAR 0 6
53820: PPUSH
53821: LD_INT 0
53823: PPUSH
53824: CALL_OW 80
// NormalAttack ( alliance , Captured_american ) ;
53828: LD_EXP 182
53832: PPUSH
53833: LD_VAR 0 1
53837: PPUSH
53838: CALL_OW 472
// NormalAttack ( Explorers_side , Captured_american ) ;
53842: LD_EXP 183
53846: PPUSH
53847: LD_VAR 0 1
53851: PPUSH
53852: CALL_OW 472
// if Captured_american <> JMM then
53856: LD_VAR 0 1
53860: PUSH
53861: LD_EXP 1
53865: NONEQUAL
53866: IFFALSE 53931
// begin DialogueOn ;
53868: CALL_OW 6
// Wait ( 0 0$2 ) ;
53872: LD_INT 70
53874: PPUSH
53875: CALL_OW 67
// Say ( JMM , DAa-JMM-1 ) ;
53879: LD_EXP 1
53883: PPUSH
53884: LD_STRING DAa-JMM-1
53886: PPUSH
53887: CALL_OW 88
// if tick > Alliance_broadcast then
53891: LD_OWVAR 1
53895: PUSH
53896: LD_EXP 202
53900: GREATER
53901: IFFALSE 53915
// Say ( JMM , DAa-JMM-1a ) ;
53903: LD_EXP 1
53907: PPUSH
53908: LD_STRING DAa-JMM-1a
53910: PPUSH
53911: CALL_OW 88
// Say ( JMM , DAa-JMM-1b ) ;
53915: LD_EXP 1
53919: PPUSH
53920: LD_STRING DAa-JMM-1b
53922: PPUSH
53923: CALL_OW 88
// DialogueOff ;
53927: CALL_OW 7
// end ; end ;
53931: LD_VAR 0 4
53935: RET
// function CapturewWithoutShow ( Captured_american , Explorer1 , Explorer2 ) ; begin
53936: LD_INT 0
53938: PPUSH
// while IsInUnit ( Captured_american ) <> 0 do
53939: LD_VAR 0 1
53943: PPUSH
53944: CALL_OW 310
53948: PUSH
53949: LD_INT 0
53951: NONEQUAL
53952: IFFALSE 53977
// begin ComExitVehicle ( IsInUnit ( Captured_american ) ) ;
53954: LD_VAR 0 1
53958: PPUSH
53959: CALL_OW 310
53963: PPUSH
53964: CALL_OW 121
// Wait ( 1 ) ;
53968: LD_INT 1
53970: PPUSH
53971: CALL_OW 67
// end ;
53975: GO 53939
// SetSide ( Captured_american , americans1 ) ;
53977: LD_VAR 0 1
53981: PPUSH
53982: LD_EXP 177
53986: PPUSH
53987: CALL_OW 235
// ComStop ( Captured_american ) ;
53991: LD_VAR 0 1
53995: PPUSH
53996: CALL_OW 141
// DoNotAttack ( alliance , Captured_american ) ;
54000: LD_EXP 182
54004: PPUSH
54005: LD_VAR 0 1
54009: PPUSH
54010: CALL_OW 471
// DoNotAttack ( Explorers_side , Captured_american ) ;
54014: LD_EXP 183
54018: PPUSH
54019: LD_VAR 0 1
54023: PPUSH
54024: CALL_OW 471
// if Explorer1 <> 0 then
54028: LD_VAR 0 2
54032: PUSH
54033: LD_INT 0
54035: NONEQUAL
54036: IFFALSE 54059
// TeleportUnit ( Explorer1 , 245 , 186 , 3 , true ) ;
54038: LD_VAR 0 2
54042: PPUSH
54043: LD_INT 245
54045: PPUSH
54046: LD_INT 186
54048: PPUSH
54049: LD_INT 3
54051: PPUSH
54052: LD_INT 1
54054: PPUSH
54055: CALL_OW 483
// if Explorer2 <> 0 then
54059: LD_VAR 0 3
54063: PUSH
54064: LD_INT 0
54066: NONEQUAL
54067: IFFALSE 54090
// TeleportUnit ( Explorer2 , 245 , 186 , 3 , true ) ;
54069: LD_VAR 0 3
54073: PPUSH
54074: LD_INT 245
54076: PPUSH
54077: LD_INT 186
54079: PPUSH
54080: LD_INT 3
54082: PPUSH
54083: LD_INT 1
54085: PPUSH
54086: CALL_OW 483
// TeleportUnit ( Captured_american , 245 , 186 , 3 , true ) ;
54090: LD_VAR 0 1
54094: PPUSH
54095: LD_INT 245
54097: PPUSH
54098: LD_INT 186
54100: PPUSH
54101: LD_INT 3
54103: PPUSH
54104: LD_INT 1
54106: PPUSH
54107: CALL_OW 483
// Wait ( 0 0$3 ) ;
54111: LD_INT 105
54113: PPUSH
54114: CALL_OW 67
// CaptureDialogue ( Captured_american ) ;
54118: LD_VAR 0 1
54122: PPUSH
54123: CALL 51908 0 1
// NormalAttack ( alliance , Captured_american ) ;
54127: LD_EXP 182
54131: PPUSH
54132: LD_VAR 0 1
54136: PPUSH
54137: CALL_OW 472
// NormalAttack ( Explorers_side , Captured_american ) ;
54141: LD_EXP 183
54145: PPUSH
54146: LD_VAR 0 1
54150: PPUSH
54151: CALL_OW 472
// HealExplorers ;
54155: CALL 53129 0 0
// end ;
54159: LD_VAR 0 4
54163: RET
// function SetExplorerWayNumber ; var WayNumber ; begin
54164: LD_INT 0
54166: PPUSH
54167: PPUSH
// if GetAttitude ( russians , Explorers_Side ) = att_enemy then
54168: LD_EXP 178
54172: PPUSH
54173: LD_EXP 183
54177: PPUSH
54178: CALL_OW 81
54182: PUSH
54183: LD_INT 2
54185: EQUAL
54186: IFFALSE 54224
// begin Explorer_Way_Number = Rand ( 1 , 4 ) ;
54188: LD_ADDR_EXP 210
54192: PUSH
54193: LD_INT 1
54195: PPUSH
54196: LD_INT 4
54198: PPUSH
54199: CALL_OW 12
54203: ST_TO_ADDR
// if Explorer_Way_Number > 1 then
54204: LD_EXP 210
54208: PUSH
54209: LD_INT 1
54211: GREATER
54212: IFFALSE 54222
// Explorer_Way_Number = 2 ;
54214: LD_ADDR_EXP 210
54218: PUSH
54219: LD_INT 2
54221: ST_TO_ADDR
// end else
54222: GO 54240
// Explorer_Way_Number = Rand ( 1 , 2 ) ;
54224: LD_ADDR_EXP 210
54228: PUSH
54229: LD_INT 1
54231: PPUSH
54232: LD_INT 2
54234: PPUSH
54235: CALL_OW 12
54239: ST_TO_ADDR
// end ;
54240: LD_VAR 0 1
54244: RET
// every 0 0$0.5 marked 17 do var Americans_to_capture , Captured_american , AmToAr , ArToAm , Units_to_stop , Un , Uns ;
54245: GO 54247
54247: DISABLE
54248: LD_INT 0
54250: PPUSH
54251: PPUSH
54252: PPUSH
54253: PPUSH
54254: PPUSH
54255: PPUSH
54256: PPUSH
// begin if not ( Wood_registry ) then
54257: LD_EXP 229
54261: NOT
54262: IFFALSE 55258
// begin Wood_registry = true ;
54264: LD_ADDR_EXP 229
54268: PUSH
54269: LD_INT 1
54271: ST_TO_ADDR
// Americans_to_capture = [ ] ;
54272: LD_ADDR_VAR 0 1
54276: PUSH
54277: EMPTY
54278: ST_TO_ADDR
// Captured_american = 0 ;
54279: LD_ADDR_VAR 0 2
54283: PUSH
54284: LD_INT 0
54286: ST_TO_ADDR
// if IsOk ( AllDep ) then
54287: LD_INT 45
54289: PPUSH
54290: CALL_OW 302
54294: IFFALSE 55247
// begin disable ;
54296: DISABLE
// if IsLive ( Explorer1 ) and IsLive ( Explorer2 ) then
54297: LD_EXP 100
54301: PPUSH
54302: CALL_OW 300
54306: PUSH
54307: LD_EXP 101
54311: PPUSH
54312: CALL_OW 300
54316: AND
54317: IFFALSE 55130
// begin if ( ( GetLives ( Explorer1 ) < 700 ) or ( GetLives ( Explorer2 ) < 700 ) ) then
54319: LD_EXP 100
54323: PPUSH
54324: CALL_OW 256
54328: PUSH
54329: LD_INT 700
54331: LESS
54332: PUSH
54333: LD_EXP 101
54337: PPUSH
54338: CALL_OW 256
54342: PUSH
54343: LD_INT 700
54345: LESS
54346: OR
54347: IFFALSE 54498
// begin if not ( IsInArea ( Explorer1 , Al_Base ) ) then
54349: LD_EXP 100
54353: PPUSH
54354: LD_INT 18
54356: PPUSH
54357: CALL_OW 308
54361: NOT
54362: IFFALSE 54385
// TeleportUnit ( Explorer1 , 245 , 186 , 3 , true ) ;
54364: LD_EXP 100
54368: PPUSH
54369: LD_INT 245
54371: PPUSH
54372: LD_INT 186
54374: PPUSH
54375: LD_INT 3
54377: PPUSH
54378: LD_INT 1
54380: PPUSH
54381: CALL_OW 483
// if not ( IsInArea ( Explorer2 , Al_Base ) ) then
54385: LD_EXP 101
54389: PPUSH
54390: LD_INT 18
54392: PPUSH
54393: CALL_OW 308
54397: NOT
54398: IFFALSE 54421
// TeleportUnit ( Explorer2 , 245 , 186 , 3 , true ) ;
54400: LD_EXP 101
54404: PPUSH
54405: LD_INT 245
54407: PPUSH
54408: LD_INT 186
54410: PPUSH
54411: LD_INT 3
54413: PPUSH
54414: LD_INT 1
54416: PPUSH
54417: CALL_OW 483
// HealExplorers ;
54421: CALL 53129 0 0
// Step_On_The_Way = 1 ;
54425: LD_ADDR_EXP 209
54429: PUSH
54430: LD_INT 1
54432: ST_TO_ADDR
// SetExplorerWayNumber ;
54433: CALL 54164 0 0
// Wait ( 0 0$3 ) ;
54437: LD_INT 105
54439: PPUSH
54440: CALL_OW 67
// for Un in All_americans do
54444: LD_ADDR_VAR 0 6
54448: PUSH
54449: LD_EXP 61
54453: PUSH
54454: FOR_IN
54455: IFFALSE 54494
// if ( Attacks ( Un ) in [ Explorer1 , Explorer2 ] ) then
54457: LD_VAR 0 6
54461: PPUSH
54462: CALL_OW 320
54466: PUSH
54467: LD_EXP 100
54471: PUSH
54472: LD_EXP 101
54476: PUSH
54477: EMPTY
54478: LIST
54479: LIST
54480: IN
54481: IFFALSE 54492
// ComStop ( Un ) ;
54483: LD_VAR 0 6
54487: PPUSH
54488: CALL_OW 141
54492: GO 54454
54494: POP
54495: POP
// end else
54496: GO 55128
// begin Uns = UnitFilter ( All_americans , [ f_or , [ f_dist , Explorer1 , 15 ] , [ f_dist , Explorer2 , 15 ] ] ) ;
54498: LD_ADDR_VAR 0 7
54502: PUSH
54503: LD_EXP 61
54507: PPUSH
54508: LD_INT 2
54510: PUSH
54511: LD_INT 91
54513: PUSH
54514: LD_EXP 100
54518: PUSH
54519: LD_INT 15
54521: PUSH
54522: EMPTY
54523: LIST
54524: LIST
54525: LIST
54526: PUSH
54527: LD_INT 91
54529: PUSH
54530: LD_EXP 101
54534: PUSH
54535: LD_INT 15
54537: PUSH
54538: EMPTY
54539: LIST
54540: LIST
54541: LIST
54542: PUSH
54543: EMPTY
54544: LIST
54545: LIST
54546: LIST
54547: PPUSH
54548: CALL_OW 72
54552: ST_TO_ADDR
// for Un in Uns do
54553: LD_ADDR_VAR 0 6
54557: PUSH
54558: LD_VAR 0 7
54562: PUSH
54563: FOR_IN
54564: IFFALSE 54584
// Americans_to_capture = Americans_to_capture ^ Un ;
54566: LD_ADDR_VAR 0 1
54570: PUSH
54571: LD_VAR 0 1
54575: PUSH
54576: LD_VAR 0 6
54580: ADD
54581: ST_TO_ADDR
54582: GO 54563
54584: POP
54585: POP
// if Americans_to_capture > 0 then
54586: LD_VAR 0 1
54590: PUSH
54591: LD_INT 0
54593: GREATER
54594: IFFALSE 54857
// begin if ( Americans_to_capture [ 1 ] <> JMM ) or ( Americans_to_capture ^ [ ] = 1 ) then
54596: LD_VAR 0 1
54600: PUSH
54601: LD_INT 1
54603: ARRAY
54604: PUSH
54605: LD_EXP 1
54609: NONEQUAL
54610: PUSH
54611: LD_VAR 0 1
54615: PUSH
54616: EMPTY
54617: ADD
54618: PUSH
54619: LD_INT 1
54621: EQUAL
54622: OR
54623: IFFALSE 54641
// Captured_american = Americans_to_capture [ 1 ] else
54625: LD_ADDR_VAR 0 2
54629: PUSH
54630: LD_VAR 0 1
54634: PUSH
54635: LD_INT 1
54637: ARRAY
54638: ST_TO_ADDR
54639: GO 54668
// if ( Americans_to_capture ^ [ ] ) > 1 then
54641: LD_VAR 0 1
54645: PUSH
54646: EMPTY
54647: ADD
54648: PUSH
54649: LD_INT 1
54651: GREATER
54652: IFFALSE 54668
// Captured_american = Americans_to_capture [ 2 ] ;
54654: LD_ADDR_VAR 0 2
54658: PUSH
54659: LD_VAR 0 1
54663: PUSH
54664: LD_INT 2
54666: ARRAY
54667: ST_TO_ADDR
// if ( Captured_american <> JMM ) or ( Number_of_captured_americans <> 0 ) then
54668: LD_VAR 0 2
54672: PUSH
54673: LD_EXP 1
54677: NONEQUAL
54678: PUSH
54679: LD_EXP 211
54683: PUSH
54684: LD_INT 0
54686: NONEQUAL
54687: OR
54688: IFFALSE 54847
// begin Number_of_captured_americans = Number_of_captured_americans + 1 ;
54690: LD_ADDR_EXP 211
54694: PUSH
54695: LD_EXP 211
54699: PUSH
54700: LD_INT 1
54702: PLUS
54703: ST_TO_ADDR
// if ( Number_of_captured_americans = 1 ) or ( Captured_american = JMM ) then
54704: LD_EXP 211
54708: PUSH
54709: LD_INT 1
54711: EQUAL
54712: PUSH
54713: LD_VAR 0 2
54717: PUSH
54718: LD_EXP 1
54722: EQUAL
54723: OR
54724: IFFALSE 54747
// begin SohwCaptureToPlayer ( Captured_american , Explorer1 , Explorer2 ) ;
54726: LD_VAR 0 2
54730: PPUSH
54731: LD_EXP 100
54735: PPUSH
54736: LD_EXP 101
54740: PPUSH
54741: CALL 53217 0 3
// end else
54745: GO 54766
// begin CapturewWithoutShow ( Captured_american , Explorer1 , Explorer2 ) ;
54747: LD_VAR 0 2
54751: PPUSH
54752: LD_EXP 100
54756: PPUSH
54757: LD_EXP 101
54761: PPUSH
54762: CALL 53936 0 3
// end ; SetExplorerWayNumber ;
54766: CALL 54164 0 0
// Step_On_The_Way = 1 ;
54770: LD_ADDR_EXP 209
54774: PUSH
54775: LD_INT 1
54777: ST_TO_ADDR
// repeat Wait ( 0 0$1 ) ;
54778: LD_INT 35
54780: PPUSH
54781: CALL_OW 67
// until ( not ( IsLive ( Explorer1 ) ) or not ( IsLive ( Explorer2 ) ) or ( GetLives ( Explorer1 ) = 1000 and GetLives ( Explorer2 ) = 1000 ) or Roth_Captured ) ;
54785: LD_EXP 100
54789: PPUSH
54790: CALL_OW 300
54794: NOT
54795: PUSH
54796: LD_EXP 101
54800: PPUSH
54801: CALL_OW 300
54805: NOT
54806: OR
54807: PUSH
54808: LD_EXP 100
54812: PPUSH
54813: CALL_OW 256
54817: PUSH
54818: LD_INT 1000
54820: EQUAL
54821: PUSH
54822: LD_EXP 101
54826: PPUSH
54827: CALL_OW 256
54831: PUSH
54832: LD_INT 1000
54834: EQUAL
54835: AND
54836: OR
54837: PUSH
54838: LD_EXP 54
54842: OR
54843: IFFALSE 54778
// end else
54845: GO 54855
// Captured_american = 0 ;
54847: LD_ADDR_VAR 0 2
54851: PUSH
54852: LD_INT 0
54854: ST_TO_ADDR
// end else
54855: GO 55128
// if not ( HasTask ( Explorer1 ) ) and not ( HasTask ( Explorer2 ) ) and ( Step_On_The_Way < Way_of_Explorers [ Explorer_Way_Number ] ) then
54857: LD_EXP 100
54861: PPUSH
54862: CALL_OW 314
54866: NOT
54867: PUSH
54868: LD_EXP 101
54872: PPUSH
54873: CALL_OW 314
54877: NOT
54878: AND
54879: PUSH
54880: LD_EXP 209
54884: PUSH
54885: LD_EXP 208
54889: PUSH
54890: LD_EXP 210
54894: ARRAY
54895: LESS
54896: AND
54897: IFFALSE 55128
// begin Wait ( 0 0$2 ) ;
54899: LD_INT 70
54901: PPUSH
54902: CALL_OW 67
// if not ( SeeXY ( americans , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 1 ] , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 2 ] ) ) or ( Rand ( 1 , 20 ) = 1 ) then
54906: LD_EXP 176
54910: PPUSH
54911: LD_EXP 208
54915: PUSH
54916: LD_EXP 210
54920: ARRAY
54921: PUSH
54922: LD_EXP 209
54926: ARRAY
54927: PUSH
54928: LD_INT 1
54930: ARRAY
54931: PPUSH
54932: LD_EXP 208
54936: PUSH
54937: LD_EXP 210
54941: ARRAY
54942: PUSH
54943: LD_EXP 209
54947: ARRAY
54948: PUSH
54949: LD_INT 2
54951: ARRAY
54952: PPUSH
54953: CALL_OW 293
54957: NOT
54958: PUSH
54959: LD_INT 1
54961: PPUSH
54962: LD_INT 20
54964: PPUSH
54965: CALL_OW 12
54969: PUSH
54970: LD_INT 1
54972: EQUAL
54973: OR
54974: IFFALSE 55128
// begin ComMoveXY ( Explorer1 , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 1 ] , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 2 ] ) ;
54976: LD_EXP 100
54980: PPUSH
54981: LD_EXP 208
54985: PUSH
54986: LD_EXP 210
54990: ARRAY
54991: PUSH
54992: LD_EXP 209
54996: ARRAY
54997: PUSH
54998: LD_INT 1
55000: ARRAY
55001: PPUSH
55002: LD_EXP 208
55006: PUSH
55007: LD_EXP 210
55011: ARRAY
55012: PUSH
55013: LD_EXP 209
55017: ARRAY
55018: PUSH
55019: LD_INT 2
55021: ARRAY
55022: PPUSH
55023: CALL_OW 111
// AddComHold ( Explorer1 ) ;
55027: LD_EXP 100
55031: PPUSH
55032: CALL_OW 200
// AddComForceInvisible ( Explorer1 ) ;
55036: LD_EXP 100
55040: PPUSH
55041: CALL_OW 497
// ComMoveXY ( Explorer2 , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 1 ] , Way_of_Explorers [ Explorer_Way_Number ] [ Step_On_The_Way ] [ 2 ] ) ;
55045: LD_EXP 101
55049: PPUSH
55050: LD_EXP 208
55054: PUSH
55055: LD_EXP 210
55059: ARRAY
55060: PUSH
55061: LD_EXP 209
55065: ARRAY
55066: PUSH
55067: LD_INT 1
55069: ARRAY
55070: PPUSH
55071: LD_EXP 208
55075: PUSH
55076: LD_EXP 210
55080: ARRAY
55081: PUSH
55082: LD_EXP 209
55086: ARRAY
55087: PUSH
55088: LD_INT 2
55090: ARRAY
55091: PPUSH
55092: CALL_OW 111
// AddComHold ( Explorer2 ) ;
55096: LD_EXP 101
55100: PPUSH
55101: CALL_OW 200
// AddComForceInvisible ( Explorer2 ) ;
55105: LD_EXP 101
55109: PPUSH
55110: CALL_OW 497
// Step_On_The_Way = Step_On_The_Way + 1 ;
55114: LD_ADDR_EXP 209
55118: PUSH
55119: LD_EXP 209
55123: PUSH
55124: LD_INT 1
55126: PLUS
55127: ST_TO_ADDR
// end ; end ; end ; end else
55128: GO 55244
// begin if IsLive ( Explorer1 ) and not ( IsInArea ( Explorer1 , Al_Base ) ) then
55130: LD_EXP 100
55134: PPUSH
55135: CALL_OW 300
55139: PUSH
55140: LD_EXP 100
55144: PPUSH
55145: LD_INT 18
55147: PPUSH
55148: CALL_OW 308
55152: NOT
55153: AND
55154: IFFALSE 55177
// TeleportUnit ( Explorer1 , 245 , 186 , 3 , true ) ;
55156: LD_EXP 100
55160: PPUSH
55161: LD_INT 245
55163: PPUSH
55164: LD_INT 186
55166: PPUSH
55167: LD_INT 3
55169: PPUSH
55170: LD_INT 1
55172: PPUSH
55173: CALL_OW 483
// if IsLive ( Explorer2 ) and not ( IsInArea ( Explorer2 , Al_Base ) ) then
55177: LD_EXP 101
55181: PPUSH
55182: CALL_OW 300
55186: PUSH
55187: LD_EXP 101
55191: PPUSH
55192: LD_INT 18
55194: PPUSH
55195: CALL_OW 308
55199: NOT
55200: AND
55201: IFFALSE 55224
// TeleportUnit ( Explorer2 , 245 , 186 , 3 , true ) ;
55203: LD_EXP 101
55207: PPUSH
55208: LD_INT 245
55210: PPUSH
55211: LD_INT 186
55213: PPUSH
55214: LD_INT 3
55216: PPUSH
55217: LD_INT 1
55219: PPUSH
55220: CALL_OW 483
// HealExplorers ;
55224: CALL 53129 0 0
// SelectExplorers ;
55228: CALL 51856 0 0
// Step_On_The_Way = 1 ;
55232: LD_ADDR_EXP 209
55236: PUSH
55237: LD_INT 1
55239: ST_TO_ADDR
// SetExplorerWayNumber ;
55240: CALL 54164 0 0
// end ; enable ;
55244: ENABLE
// end else
55245: GO 55248
// disable ;
55247: DISABLE
// Wood_registry = false ;
55248: LD_ADDR_EXP 229
55252: PUSH
55253: LD_INT 0
55255: ST_TO_ADDR
// end else
55256: GO 55259
// enable ;
55258: ENABLE
// end ;
55259: PPOPN 7
55261: END
// export function GuardAllianceWood ; var Uns , Un , Americans_to_capture , Captured_american ; begin
55262: LD_INT 0
55264: PPUSH
55265: PPUSH
55266: PPUSH
55267: PPUSH
55268: PPUSH
// if not ( Wood_registry ) then
55269: LD_EXP 229
55273: NOT
55274: IFFALSE 55499
// begin Wood_registry = true ;
55276: LD_ADDR_EXP 229
55280: PUSH
55281: LD_INT 1
55283: ST_TO_ADDR
// Americans_to_capture = [ ] ;
55284: LD_ADDR_VAR 0 4
55288: PUSH
55289: EMPTY
55290: ST_TO_ADDR
// for Un in All_americans do
55291: LD_ADDR_VAR 0 3
55295: PUSH
55296: LD_EXP 61
55300: PUSH
55301: FOR_IN
55302: IFFALSE 55404
// if IsInArea ( Un , Ali_wood ) then
55304: LD_VAR 0 3
55308: PPUSH
55309: LD_INT 9
55311: PPUSH
55312: CALL_OW 308
55316: IFFALSE 55402
// begin if ( GetType ( Un ) = unit_human ) then
55318: LD_VAR 0 3
55322: PPUSH
55323: CALL_OW 247
55327: PUSH
55328: LD_INT 1
55330: EQUAL
55331: IFFALSE 55351
// Americans_to_capture = Americans_to_capture ^ Un else
55333: LD_ADDR_VAR 0 4
55337: PUSH
55338: LD_VAR 0 4
55342: PUSH
55343: LD_VAR 0 3
55347: ADD
55348: ST_TO_ADDR
55349: GO 55402
// if ( GetType ( Un ) = unit_vehicle ) and ( UnitsInside ( Un ) <> 0 ) then
55351: LD_VAR 0 3
55355: PPUSH
55356: CALL_OW 247
55360: PUSH
55361: LD_INT 2
55363: EQUAL
55364: PUSH
55365: LD_VAR 0 3
55369: PPUSH
55370: CALL_OW 313
55374: PUSH
55375: LD_INT 0
55377: NONEQUAL
55378: AND
55379: IFFALSE 55402
// Americans_to_capture = Americans_to_capture ^ UnitsInside ( Un ) ;
55381: LD_ADDR_VAR 0 4
55385: PUSH
55386: LD_VAR 0 4
55390: PUSH
55391: LD_VAR 0 3
55395: PPUSH
55396: CALL_OW 313
55400: ADD
55401: ST_TO_ADDR
// end ;
55402: GO 55301
55404: POP
55405: POP
// for Captured_american in Americans_to_capture do
55406: LD_ADDR_VAR 0 5
55410: PUSH
55411: LD_VAR 0 4
55415: PUSH
55416: FOR_IN
55417: IFFALSE 55489
// begin Number_of_captured_americans = Number_of_captured_americans + 1 ;
55419: LD_ADDR_EXP 211
55423: PUSH
55424: LD_EXP 211
55428: PUSH
55429: LD_INT 1
55431: PLUS
55432: ST_TO_ADDR
// if ( Number_of_captured_americans = 1 ) or ( Captured_american = JMM ) then
55433: LD_EXP 211
55437: PUSH
55438: LD_INT 1
55440: EQUAL
55441: PUSH
55442: LD_VAR 0 5
55446: PUSH
55447: LD_EXP 1
55451: EQUAL
55452: OR
55453: IFFALSE 55472
// begin SohwCaptureToPlayer ( Captured_american , 0 , 0 ) ;
55455: LD_VAR 0 5
55459: PPUSH
55460: LD_INT 0
55462: PPUSH
55463: LD_INT 0
55465: PPUSH
55466: CALL 53217 0 3
// end else
55470: GO 55487
// begin CapturewWithoutShow ( Captured_american , 0 , 0 ) ;
55472: LD_VAR 0 5
55476: PPUSH
55477: LD_INT 0
55479: PPUSH
55480: LD_INT 0
55482: PPUSH
55483: CALL 53936 0 3
// end ; end ;
55487: GO 55416
55489: POP
55490: POP
// Wood_registry = false ;
55491: LD_ADDR_EXP 229
55495: PUSH
55496: LD_INT 0
55498: ST_TO_ADDR
// end ; end ;
55499: LD_VAR 0 1
55503: RET
// every 0 0$1 marked 16 do var Un ;
55504: GO 55506
55506: DISABLE
55507: LD_INT 0
55509: PPUSH
// begin for Un in Captured_Units_of_Alliance do
55510: LD_ADDR_VAR 0 1
55514: PUSH
55515: LD_EXP 99
55519: PUSH
55520: FOR_IN
55521: IFFALSE 55571
// if GetDistUnitXY ( Un , 226 , 197 ) < 2 then
55523: LD_VAR 0 1
55527: PPUSH
55528: LD_INT 226
55530: PPUSH
55531: LD_INT 197
55533: PPUSH
55534: CALL_OW 297
55538: PUSH
55539: LD_INT 2
55541: LESS
55542: IFFALSE 55569
// begin RemoveUnit ( Un ) ;
55544: LD_VAR 0 1
55548: PPUSH
55549: CALL_OW 64
// Captured_Units_of_Alliance = Captured_Units_of_Alliance diff Un ;
55553: LD_ADDR_EXP 99
55557: PUSH
55558: LD_EXP 99
55562: PUSH
55563: LD_VAR 0 1
55567: DIFF
55568: ST_TO_ADDR
// end ;
55569: GO 55520
55571: POP
55572: POP
// if Captured_Units_of_Alliance > 0 then
55573: LD_EXP 99
55577: PUSH
55578: LD_INT 0
55580: GREATER
55581: IFFALSE 55616
// begin enable ;
55583: ENABLE
// for Un in Captured_Units_of_Alliance do
55584: LD_ADDR_VAR 0 1
55588: PUSH
55589: LD_EXP 99
55593: PUSH
55594: FOR_IN
55595: IFFALSE 55614
// ComMoveXY ( Un , 226 , 197 ) ;
55597: LD_VAR 0 1
55601: PPUSH
55602: LD_INT 226
55604: PPUSH
55605: LD_INT 197
55607: PPUSH
55608: CALL_OW 111
55612: GO 55594
55614: POP
55615: POP
// end ; end ;
55616: PPOPN 1
55618: END
// every 0 0$1 trigger ( Tick > Time_of_first_capture ) marked 10 do
55619: LD_OWVAR 1
55623: PUSH
55624: LD_EXP 204
55628: GREATER
55629: IFFALSE 55639
55631: GO 55633
55633: DISABLE
// begin enable ( Explorers_Can_Go ) ;
55634: LD_EXP 153
55638: ENABLE_MARKED
// end ; end_of_file
55639: END
// function CratesInArea ( area ) ; begin
55640: LD_INT 0
55642: PPUSH
// result = GetResourceArea ( area , mat_cans ) ;
55643: LD_ADDR_VAR 0 2
55647: PUSH
55648: LD_VAR 0 1
55652: PPUSH
55653: LD_INT 1
55655: PPUSH
55656: CALL_OW 287
55660: ST_TO_ADDR
// end ;
55661: LD_VAR 0 2
55665: RET
// function ln ( numb ) ; var i ; begin
55666: LD_INT 0
55668: PPUSH
55669: PPUSH
// i = 0 ;
55670: LD_ADDR_VAR 0 3
55674: PUSH
55675: LD_INT 0
55677: ST_TO_ADDR
// while ( i < 10 ) and ( numb > 1 ) do
55678: LD_VAR 0 3
55682: PUSH
55683: LD_INT 10
55685: LESS
55686: PUSH
55687: LD_VAR 0 1
55691: PUSH
55692: LD_INT 1
55694: GREATER
55695: AND
55696: IFFALSE 55728
// begin numb = numb div 2 ;
55698: LD_ADDR_VAR 0 1
55702: PUSH
55703: LD_VAR 0 1
55707: PUSH
55708: LD_INT 2
55710: DIV
55711: ST_TO_ADDR
// i = i + 1 ;
55712: LD_ADDR_VAR 0 3
55716: PUSH
55717: LD_VAR 0 3
55721: PUSH
55722: LD_INT 1
55724: PLUS
55725: ST_TO_ADDR
// end ;
55726: GO 55678
// result = i ;
55728: LD_ADDR_VAR 0 2
55732: PUSH
55733: LD_VAR 0 3
55737: ST_TO_ADDR
// end ;
55738: LD_VAR 0 2
55742: RET
// function TimeStep ; var r , hlp ; begin
55743: LD_INT 0
55745: PPUSH
55746: PPUSH
55747: PPUSH
// r = tick div 400 ;
55748: LD_ADDR_VAR 0 2
55752: PUSH
55753: LD_OWVAR 1
55757: PUSH
55758: LD_INT 400
55760: DIV
55761: ST_TO_ADDR
// hlp = ln ( r ) + 1 ;
55762: LD_ADDR_VAR 0 3
55766: PUSH
55767: LD_VAR 0 2
55771: PPUSH
55772: CALL 55666 0 1
55776: PUSH
55777: LD_INT 1
55779: PLUS
55780: ST_TO_ADDR
// if r > 8 then
55781: LD_VAR 0 2
55785: PUSH
55786: LD_INT 8
55788: GREATER
55789: IFFALSE 55801
// hlp = 8 else
55791: LD_ADDR_VAR 0 3
55795: PUSH
55796: LD_INT 8
55798: ST_TO_ADDR
55799: GO 55811
// hlp = r ;
55801: LD_ADDR_VAR 0 3
55805: PUSH
55806: LD_VAR 0 2
55810: ST_TO_ADDR
// result = hlp ;
55811: LD_ADDR_VAR 0 1
55815: PUSH
55816: LD_VAR 0 3
55820: ST_TO_ADDR
// end ;
55821: LD_VAR 0 1
55825: RET
// function CreateNewCrates ( Number ) ; var Old_Crates , area ; begin
55826: LD_INT 0
55828: PPUSH
55829: PPUSH
55830: PPUSH
// area = Plan3 ;
55831: LD_ADDR_VAR 0 4
55835: PUSH
55836: LD_INT 31
55838: ST_TO_ADDR
// Old_Crates = ln ( CratesInArea ( area ) ) ;
55839: LD_ADDR_VAR 0 3
55843: PUSH
55844: LD_VAR 0 4
55848: PPUSH
55849: CALL 55640 0 1
55853: PPUSH
55854: CALL 55666 0 1
55858: ST_TO_ADDR
// if Old_Crates < 10 then
55859: LD_VAR 0 3
55863: PUSH
55864: LD_INT 10
55866: LESS
55867: IFFALSE 55920
// if rand ( 1 , 100 ) < 25 + ( 15 * ( 10 - Old_Crates ) ) / 2 then
55869: LD_INT 1
55871: PPUSH
55872: LD_INT 100
55874: PPUSH
55875: CALL_OW 12
55879: PUSH
55880: LD_INT 25
55882: PUSH
55883: LD_INT 15
55885: PUSH
55886: LD_INT 10
55888: PUSH
55889: LD_VAR 0 3
55893: MINUS
55894: MUL
55895: PUSH
55896: LD_INT 2
55898: DIVREAL
55899: PLUS
55900: LESS
55901: IFFALSE 55920
// CreateCratesArea ( Number , area , true ) ;
55903: LD_VAR 0 1
55907: PPUSH
55908: LD_VAR 0 4
55912: PPUSH
55913: LD_INT 1
55915: PPUSH
55916: CALL_OW 55
// end ;
55920: LD_VAR 0 2
55924: RET
// every 0 0$5 trigger tick > Time_Of_Crates do var Step ;
55925: LD_OWVAR 1
55929: PUSH
55930: LD_EXP 222
55934: GREATER
55935: IFFALSE 56011
55937: GO 55939
55939: DISABLE
55940: LD_INT 0
55942: PPUSH
// begin Step = TimeStep ;
55943: LD_ADDR_VAR 0 1
55947: PUSH
55948: CALL 55743 0 0
55952: ST_TO_ADDR
// Time_Of_Crates = Time_Of_Crates + 0 0$10 + Rand ( 0 0$6 * Step , 0 0$05 + 0 0$12 * Step ) ;
55953: LD_ADDR_EXP 222
55957: PUSH
55958: LD_EXP 222
55962: PUSH
55963: LD_INT 350
55965: PLUS
55966: PUSH
55967: LD_INT 210
55969: PUSH
55970: LD_VAR 0 1
55974: MUL
55975: PPUSH
55976: LD_INT 175
55978: PUSH
55979: LD_INT 420
55981: PUSH
55982: LD_VAR 0 1
55986: MUL
55987: PLUS
55988: PPUSH
55989: CALL_OW 12
55993: PLUS
55994: ST_TO_ADDR
// CreateNewCrates ( Rand ( 3 , 5 ) ) ;
55995: LD_INT 3
55997: PPUSH
55998: LD_INT 5
56000: PPUSH
56001: CALL_OW 12
56005: PPUSH
56006: CALL 55826 0 1
// enable ;
56010: ENABLE
// end ; end_of_file
56011: PPOPN 1
56013: END
// every 0 0$2 + 0 0$0.1 do
56014: GO 56016
56016: DISABLE
// begin if FilterAllUnits ( [ [ f_side , 1 ] , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ) > FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_not , [ f_or , [ f_class , class_apeman ] , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] , [ f_class , class_apeman_kamikaze ] ] ] ] ) then
56017: LD_INT 22
56019: PUSH
56020: LD_INT 1
56022: PUSH
56023: EMPTY
56024: LIST
56025: LIST
56026: PUSH
56027: LD_INT 2
56029: PUSH
56030: LD_INT 25
56032: PUSH
56033: LD_INT 12
56035: PUSH
56036: EMPTY
56037: LIST
56038: LIST
56039: PUSH
56040: LD_INT 25
56042: PUSH
56043: LD_INT 16
56045: PUSH
56046: EMPTY
56047: LIST
56048: LIST
56049: PUSH
56050: LD_INT 25
56052: PUSH
56053: LD_INT 15
56055: PUSH
56056: EMPTY
56057: LIST
56058: LIST
56059: PUSH
56060: LD_INT 25
56062: PUSH
56063: LD_INT 17
56065: PUSH
56066: EMPTY
56067: LIST
56068: LIST
56069: PUSH
56070: EMPTY
56071: LIST
56072: LIST
56073: LIST
56074: LIST
56075: LIST
56076: PUSH
56077: EMPTY
56078: LIST
56079: LIST
56080: PPUSH
56081: CALL_OW 69
56085: PUSH
56086: LD_INT 22
56088: PUSH
56089: LD_INT 1
56091: PUSH
56092: EMPTY
56093: LIST
56094: LIST
56095: PUSH
56096: LD_INT 21
56098: PUSH
56099: LD_INT 1
56101: PUSH
56102: EMPTY
56103: LIST
56104: LIST
56105: PUSH
56106: LD_INT 3
56108: PUSH
56109: LD_INT 2
56111: PUSH
56112: LD_INT 25
56114: PUSH
56115: LD_INT 12
56117: PUSH
56118: EMPTY
56119: LIST
56120: LIST
56121: PUSH
56122: LD_INT 25
56124: PUSH
56125: LD_INT 16
56127: PUSH
56128: EMPTY
56129: LIST
56130: LIST
56131: PUSH
56132: LD_INT 25
56134: PUSH
56135: LD_INT 15
56137: PUSH
56138: EMPTY
56139: LIST
56140: LIST
56141: PUSH
56142: LD_INT 25
56144: PUSH
56145: LD_INT 17
56147: PUSH
56148: EMPTY
56149: LIST
56150: LIST
56151: PUSH
56152: EMPTY
56153: LIST
56154: LIST
56155: LIST
56156: LIST
56157: LIST
56158: PUSH
56159: EMPTY
56160: LIST
56161: LIST
56162: PUSH
56163: EMPTY
56164: LIST
56165: LIST
56166: LIST
56167: PPUSH
56168: CALL_OW 69
56172: GREATER
56173: IFFALSE 56184
// begin SetAchievement ( ACH_POTA ) ;
56175: LD_STRING ACH_POTA
56177: PPUSH
56178: CALL_OW 543
// exit ;
56182: GO 56185
// end ; enable ;
56184: ENABLE
// end ;
56185: END
// export function SA_OnSiberiteRocketExploded ( siberite_rocket_vehicle ) ; begin
56186: LD_INT 0
56188: PPUSH
// if GetSide ( siberite_rocket_vehicle ) = 1 then
56189: LD_VAR 0 1
56193: PPUSH
56194: CALL_OW 255
56198: PUSH
56199: LD_INT 1
56201: EQUAL
56202: IFFALSE 56211
// SetAchievement ( ACH_RAD ) ;
56204: LD_STRING ACH_RAD
56206: PPUSH
56207: CALL_OW 543
// end ;
56211: LD_VAR 0 2
56215: RET
// export function SA_OnLegionJoin ; begin
56216: LD_INT 0
56218: PPUSH
// SetAchievement ( ACH_LS ) ;
56219: LD_STRING ACH_LS
56221: PPUSH
56222: CALL_OW 543
// end ;
56226: LD_VAR 0 1
56230: RET
// export function SA_OnMissionComplete ; begin
56231: LD_INT 0
56233: PPUSH
// SetAchievement ( ACH_GBA ) ;
56234: LD_STRING ACH_GBA
56236: PPUSH
56237: CALL_OW 543
// end ;
56241: LD_VAR 0 1
56245: RET
// export function SA_OnVsevolodAppear ; begin
56246: LD_INT 0
56248: PPUSH
// SetAchievement ( ACH_MMB ) ;
56249: LD_STRING ACH_MMB
56251: PPUSH
56252: CALL_OW 543
// end ; end_of_file
56256: LD_VAR 0 1
56260: RET
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
56261: LD_INT 0
56263: PPUSH
56264: PPUSH
// if not missionNumber then
56265: LD_VAR 0 2
56269: NOT
56270: IFFALSE 56274
// exit ;
56272: GO 56404
// achiv := false ;
56274: LD_ADDR_VAR 0 7
56278: PUSH
56279: LD_INT 0
56281: ST_TO_ADDR
// case campaignNumber of 1 :
56282: LD_VAR 0 1
56286: PUSH
56287: LD_INT 1
56289: DOUBLE
56290: EQUAL
56291: IFTRUE 56295
56293: GO 56306
56295: POP
// achiv := ACH_GOTA ; 2 :
56296: LD_ADDR_VAR 0 7
56300: PUSH
56301: LD_STRING ACH_GOTA
56303: ST_TO_ADDR
56304: GO 56356
56306: LD_INT 2
56308: DOUBLE
56309: EQUAL
56310: IFTRUE 56314
56312: GO 56317
56314: POP
// ; 3 :
56315: GO 56356
56317: LD_INT 3
56319: DOUBLE
56320: EQUAL
56321: IFTRUE 56325
56323: GO 56336
56325: POP
// achiv := ACH_MOTSU ; 4 :
56326: LD_ADDR_VAR 0 7
56330: PUSH
56331: LD_STRING ACH_MOTSU
56333: ST_TO_ADDR
56334: GO 56356
56336: LD_INT 4
56338: DOUBLE
56339: EQUAL
56340: IFTRUE 56344
56342: GO 56355
56344: POP
// achiv := ACH_LOP ; end ;
56345: LD_ADDR_VAR 0 7
56349: PUSH
56350: LD_STRING ACH_LOP
56352: ST_TO_ADDR
56353: GO 56356
56355: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
56356: LD_OWVAR 67
56360: PUSH
56361: LD_INT 3
56363: EQUAL
56364: PUSH
56365: LD_VAR 0 7
56369: AND
56370: PUSH
56371: LD_VAR 0 3
56375: AND
56376: PUSH
56377: LD_VAR 0 4
56381: AND
56382: PUSH
56383: LD_VAR 0 5
56387: AND
56388: IFFALSE 56404
// SetAchievementEX ( achiv , missionNumber ) ;
56390: LD_VAR 0 7
56394: PPUSH
56395: LD_VAR 0 2
56399: PPUSH
56400: CALL_OW 564
// end ;
56404: LD_VAR 0 6
56408: RET
// export function SA_BehemothConstructed ; begin
56409: LD_INT 0
56411: PPUSH
// SetAchievement ( ACH_SMC ) ;
56412: LD_STRING ACH_SMC
56414: PPUSH
56415: CALL_OW 543
// end ;
56419: LD_VAR 0 1
56423: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
56424: LD_VAR 0 2
56428: PUSH
56429: LD_INT 1
56431: DOUBLE
56432: EQUAL
56433: IFTRUE 56437
56435: GO 56444
56437: POP
// HackUnlimitedResources ; 2 :
56438: CALL 56628 0 0
56442: GO 56625
56444: LD_INT 2
56446: DOUBLE
56447: EQUAL
56448: IFTRUE 56452
56450: GO 56459
56452: POP
// HackSetLevel10 ; 3 :
56453: CALL 56761 0 0
56457: GO 56625
56459: LD_INT 3
56461: DOUBLE
56462: EQUAL
56463: IFTRUE 56467
56465: GO 56474
56467: POP
// HackSetLevel10YourUnits ; 4 :
56468: CALL 56846 0 0
56472: GO 56625
56474: LD_INT 4
56476: DOUBLE
56477: EQUAL
56478: IFTRUE 56482
56480: GO 56504
56482: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
56483: LD_VAR 0 3
56487: PPUSH
56488: LD_VAR 0 4
56492: PPUSH
56493: LD_VAR 0 5
56497: PPUSH
56498: CALL 56936 0 3
56502: GO 56625
56504: LD_INT 5
56506: DOUBLE
56507: EQUAL
56508: IFTRUE 56512
56510: GO 56519
56512: POP
// HackSpawnVehicle ; 6 :
56513: CALL 56997 0 0
56517: GO 56625
56519: LD_INT 6
56521: DOUBLE
56522: EQUAL
56523: IFTRUE 56527
56525: GO 56534
56527: POP
// HackInvincible ; 7 :
56528: CALL 57543 0 0
56532: GO 56625
56534: LD_INT 7
56536: DOUBLE
56537: EQUAL
56538: IFTRUE 56542
56540: GO 56549
56542: POP
// HackInvisible ; 8 :
56543: CALL 57654 0 0
56547: GO 56625
56549: LD_INT 8
56551: DOUBLE
56552: EQUAL
56553: IFTRUE 56557
56555: GO 56564
56557: POP
// HackChangeYourSide ; 9 :
56558: CALL 57711 0 0
56562: GO 56625
56564: LD_INT 9
56566: DOUBLE
56567: EQUAL
56568: IFTRUE 56572
56570: GO 56579
56572: POP
// HackChangeUnitSide ; 10 :
56573: CALL 57753 0 0
56577: GO 56625
56579: LD_INT 10
56581: DOUBLE
56582: EQUAL
56583: IFTRUE 56587
56585: GO 56594
56587: POP
// HackFog ; 11 :
56588: CALL 57854 0 0
56592: GO 56625
56594: LD_INT 11
56596: DOUBLE
56597: EQUAL
56598: IFTRUE 56602
56600: GO 56609
56602: POP
// HackApeman ; 12 :
56603: CALL 57869 0 0
56607: GO 56625
56609: LD_INT 12
56611: DOUBLE
56612: EQUAL
56613: IFTRUE 56617
56615: GO 56624
56617: POP
// HackBoom ; end ;
56618: CALL 57954 0 0
56622: GO 56625
56624: POP
// end ;
56625: PPOPN 6
56627: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
56628: LD_INT 0
56630: PPUSH
56631: PPUSH
56632: PPUSH
56633: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
56634: LD_ADDR_VAR 0 4
56638: PUSH
56639: LD_INT 22
56641: PUSH
56642: LD_OWVAR 2
56646: PUSH
56647: EMPTY
56648: LIST
56649: LIST
56650: PUSH
56651: LD_INT 2
56653: PUSH
56654: LD_INT 30
56656: PUSH
56657: LD_INT 0
56659: PUSH
56660: EMPTY
56661: LIST
56662: LIST
56663: PUSH
56664: LD_INT 30
56666: PUSH
56667: LD_INT 1
56669: PUSH
56670: EMPTY
56671: LIST
56672: LIST
56673: PUSH
56674: EMPTY
56675: LIST
56676: LIST
56677: LIST
56678: PUSH
56679: EMPTY
56680: LIST
56681: LIST
56682: PPUSH
56683: CALL_OW 69
56687: ST_TO_ADDR
// if not tmp then
56688: LD_VAR 0 4
56692: NOT
56693: IFFALSE 56697
// exit ;
56695: GO 56756
// for i in tmp do
56697: LD_ADDR_VAR 0 2
56701: PUSH
56702: LD_VAR 0 4
56706: PUSH
56707: FOR_IN
56708: IFFALSE 56754
// for j = 1 to 3 do
56710: LD_ADDR_VAR 0 3
56714: PUSH
56715: DOUBLE
56716: LD_INT 1
56718: DEC
56719: ST_TO_ADDR
56720: LD_INT 3
56722: PUSH
56723: FOR_TO
56724: IFFALSE 56750
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
56726: LD_VAR 0 2
56730: PPUSH
56731: CALL_OW 274
56735: PPUSH
56736: LD_VAR 0 3
56740: PPUSH
56741: LD_INT 99999
56743: PPUSH
56744: CALL_OW 277
56748: GO 56723
56750: POP
56751: POP
56752: GO 56707
56754: POP
56755: POP
// end ;
56756: LD_VAR 0 1
56760: RET
// export function HackSetLevel10 ; var i , j ; begin
56761: LD_INT 0
56763: PPUSH
56764: PPUSH
56765: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
56766: LD_ADDR_VAR 0 2
56770: PUSH
56771: LD_INT 21
56773: PUSH
56774: LD_INT 1
56776: PUSH
56777: EMPTY
56778: LIST
56779: LIST
56780: PPUSH
56781: CALL_OW 69
56785: PUSH
56786: FOR_IN
56787: IFFALSE 56839
// if IsSelected ( i ) then
56789: LD_VAR 0 2
56793: PPUSH
56794: CALL_OW 306
56798: IFFALSE 56837
// begin for j := 1 to 4 do
56800: LD_ADDR_VAR 0 3
56804: PUSH
56805: DOUBLE
56806: LD_INT 1
56808: DEC
56809: ST_TO_ADDR
56810: LD_INT 4
56812: PUSH
56813: FOR_TO
56814: IFFALSE 56835
// SetSkill ( i , j , 10 ) ;
56816: LD_VAR 0 2
56820: PPUSH
56821: LD_VAR 0 3
56825: PPUSH
56826: LD_INT 10
56828: PPUSH
56829: CALL_OW 237
56833: GO 56813
56835: POP
56836: POP
// end ;
56837: GO 56786
56839: POP
56840: POP
// end ;
56841: LD_VAR 0 1
56845: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
56846: LD_INT 0
56848: PPUSH
56849: PPUSH
56850: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
56851: LD_ADDR_VAR 0 2
56855: PUSH
56856: LD_INT 22
56858: PUSH
56859: LD_OWVAR 2
56863: PUSH
56864: EMPTY
56865: LIST
56866: LIST
56867: PUSH
56868: LD_INT 21
56870: PUSH
56871: LD_INT 1
56873: PUSH
56874: EMPTY
56875: LIST
56876: LIST
56877: PUSH
56878: EMPTY
56879: LIST
56880: LIST
56881: PPUSH
56882: CALL_OW 69
56886: PUSH
56887: FOR_IN
56888: IFFALSE 56929
// begin for j := 1 to 4 do
56890: LD_ADDR_VAR 0 3
56894: PUSH
56895: DOUBLE
56896: LD_INT 1
56898: DEC
56899: ST_TO_ADDR
56900: LD_INT 4
56902: PUSH
56903: FOR_TO
56904: IFFALSE 56925
// SetSkill ( i , j , 10 ) ;
56906: LD_VAR 0 2
56910: PPUSH
56911: LD_VAR 0 3
56915: PPUSH
56916: LD_INT 10
56918: PPUSH
56919: CALL_OW 237
56923: GO 56903
56925: POP
56926: POP
// end ;
56927: GO 56887
56929: POP
56930: POP
// end ;
56931: LD_VAR 0 1
56935: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
56936: LD_INT 0
56938: PPUSH
// uc_side := your_side ;
56939: LD_ADDR_OWVAR 20
56943: PUSH
56944: LD_OWVAR 2
56948: ST_TO_ADDR
// uc_nation := nation ;
56949: LD_ADDR_OWVAR 21
56953: PUSH
56954: LD_VAR 0 1
56958: ST_TO_ADDR
// InitHc ;
56959: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
56963: LD_INT 0
56965: PPUSH
56966: LD_VAR 0 2
56970: PPUSH
56971: LD_VAR 0 3
56975: PPUSH
56976: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
56980: CALL_OW 44
56984: PPUSH
56985: LD_INT 1
56987: PPUSH
56988: CALL_OW 51
// end ;
56992: LD_VAR 0 4
56996: RET
// export function HackSpawnVehicle ; begin
56997: LD_INT 0
56999: PPUSH
// uc_side := your_side ;
57000: LD_ADDR_OWVAR 20
57004: PUSH
57005: LD_OWVAR 2
57009: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
57010: LD_ADDR_OWVAR 21
57014: PUSH
57015: LD_INT 1
57017: PPUSH
57018: LD_INT 3
57020: PPUSH
57021: CALL_OW 12
57025: ST_TO_ADDR
// InitVc ;
57026: CALL_OW 20
// case uc_nation of 1 :
57030: LD_OWVAR 21
57034: PUSH
57035: LD_INT 1
57037: DOUBLE
57038: EQUAL
57039: IFTRUE 57043
57041: GO 57187
57043: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
57044: LD_ADDR_OWVAR 37
57048: PUSH
57049: LD_INT 1
57051: PUSH
57052: LD_INT 2
57054: PUSH
57055: LD_INT 3
57057: PUSH
57058: LD_INT 4
57060: PUSH
57061: LD_INT 5
57063: PUSH
57064: EMPTY
57065: LIST
57066: LIST
57067: LIST
57068: LIST
57069: LIST
57070: PUSH
57071: LD_INT 1
57073: PPUSH
57074: LD_INT 5
57076: PPUSH
57077: CALL_OW 12
57081: ARRAY
57082: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
57083: LD_ADDR_OWVAR 39
57087: PUSH
57088: LD_INT 1
57090: PPUSH
57091: LD_INT 3
57093: PPUSH
57094: CALL_OW 12
57098: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
57099: LD_ADDR_OWVAR 38
57103: PUSH
57104: LD_INT 1
57106: PUSH
57107: LD_INT 2
57109: PUSH
57110: LD_INT 3
57112: PUSH
57113: EMPTY
57114: LIST
57115: LIST
57116: LIST
57117: PUSH
57118: LD_INT 1
57120: PPUSH
57121: LD_INT 3
57123: PPUSH
57124: CALL_OW 12
57128: ARRAY
57129: ST_TO_ADDR
// vc_weapon := [ us_machine_gun , us_gatling_gun , us_double_gun , us_light_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , us_heavy_gun ] [ rand ( 1 , 9 ) ] ;
57130: LD_ADDR_OWVAR 40
57134: PUSH
57135: LD_INT 2
57137: PUSH
57138: LD_INT 4
57140: PUSH
57141: LD_INT 5
57143: PUSH
57144: LD_INT 3
57146: PUSH
57147: LD_INT 7
57149: PUSH
57150: LD_INT 8
57152: PUSH
57153: LD_INT 9
57155: PUSH
57156: LD_INT 10
57158: PUSH
57159: LD_INT 6
57161: PUSH
57162: EMPTY
57163: LIST
57164: LIST
57165: LIST
57166: LIST
57167: LIST
57168: LIST
57169: LIST
57170: LIST
57171: LIST
57172: PUSH
57173: LD_INT 1
57175: PPUSH
57176: LD_INT 9
57178: PPUSH
57179: CALL_OW 12
57183: ARRAY
57184: ST_TO_ADDR
// end ; 2 :
57185: GO 57452
57187: LD_INT 2
57189: DOUBLE
57190: EQUAL
57191: IFTRUE 57195
57193: GO 57319
57195: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
57196: LD_ADDR_OWVAR 37
57200: PUSH
57201: LD_INT 11
57203: PUSH
57204: LD_INT 12
57206: PUSH
57207: LD_INT 13
57209: PUSH
57210: LD_INT 14
57212: PUSH
57213: EMPTY
57214: LIST
57215: LIST
57216: LIST
57217: LIST
57218: PUSH
57219: LD_INT 1
57221: PPUSH
57222: LD_INT 4
57224: PPUSH
57225: CALL_OW 12
57229: ARRAY
57230: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
57231: LD_ADDR_OWVAR 39
57235: PUSH
57236: LD_INT 1
57238: PPUSH
57239: LD_INT 3
57241: PPUSH
57242: CALL_OW 12
57246: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
57247: LD_ADDR_OWVAR 38
57251: PUSH
57252: LD_INT 1
57254: PUSH
57255: LD_INT 2
57257: PUSH
57258: LD_INT 5
57260: PUSH
57261: EMPTY
57262: LIST
57263: LIST
57264: LIST
57265: PUSH
57266: LD_INT 1
57268: PPUSH
57269: LD_INT 3
57271: PPUSH
57272: CALL_OW 12
57276: ARRAY
57277: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
57278: LD_ADDR_OWVAR 40
57282: PUSH
57283: LD_INT 24
57285: PUSH
57286: LD_INT 26
57288: PUSH
57289: LD_INT 27
57291: PUSH
57292: LD_INT 28
57294: PUSH
57295: LD_INT 29
57297: PUSH
57298: EMPTY
57299: LIST
57300: LIST
57301: LIST
57302: LIST
57303: LIST
57304: PUSH
57305: LD_INT 1
57307: PPUSH
57308: LD_INT 5
57310: PPUSH
57311: CALL_OW 12
57315: ARRAY
57316: ST_TO_ADDR
// end ; 3 :
57317: GO 57452
57319: LD_INT 3
57321: DOUBLE
57322: EQUAL
57323: IFTRUE 57327
57325: GO 57451
57327: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
57328: LD_ADDR_OWVAR 37
57332: PUSH
57333: LD_INT 21
57335: PUSH
57336: LD_INT 23
57338: PUSH
57339: LD_INT 22
57341: PUSH
57342: LD_INT 24
57344: PUSH
57345: EMPTY
57346: LIST
57347: LIST
57348: LIST
57349: LIST
57350: PUSH
57351: LD_INT 1
57353: PPUSH
57354: LD_INT 4
57356: PPUSH
57357: CALL_OW 12
57361: ARRAY
57362: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
57363: LD_ADDR_OWVAR 39
57367: PUSH
57368: LD_INT 1
57370: PPUSH
57371: LD_INT 3
57373: PPUSH
57374: CALL_OW 12
57378: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
57379: LD_ADDR_OWVAR 38
57383: PUSH
57384: LD_INT 1
57386: PUSH
57387: LD_INT 3
57389: PUSH
57390: EMPTY
57391: LIST
57392: LIST
57393: PUSH
57394: LD_INT 1
57396: PPUSH
57397: LD_INT 2
57399: PPUSH
57400: CALL_OW 12
57404: ARRAY
57405: ST_TO_ADDR
// vc_weapon := [ ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_heavy_gun , ru_siberium_rocket , ru_rocket ] [ rand ( 1 , 6 ) ] ;
57406: LD_ADDR_OWVAR 40
57410: PUSH
57411: LD_INT 42
57413: PUSH
57414: LD_INT 43
57416: PUSH
57417: LD_INT 44
57419: PUSH
57420: LD_INT 46
57422: PUSH
57423: LD_INT 48
57425: PUSH
57426: LD_INT 47
57428: PUSH
57429: EMPTY
57430: LIST
57431: LIST
57432: LIST
57433: LIST
57434: LIST
57435: LIST
57436: PUSH
57437: LD_INT 1
57439: PPUSH
57440: LD_INT 6
57442: PPUSH
57443: CALL_OW 12
57447: ARRAY
57448: ST_TO_ADDR
// end ; end ;
57449: GO 57452
57451: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
57452: CALL_OW 45
57456: PPUSH
57457: LD_INT 1
57459: PPUSH
57460: CALL_OW 51
// end ;
57464: LD_VAR 0 1
57468: RET
// export invincible ; every 1 do
57469: GO 57471
57471: DISABLE
// invincible := [ ] ;
57472: LD_ADDR_EXP 252
57476: PUSH
57477: EMPTY
57478: ST_TO_ADDR
57479: END
// every 10 do var i ;
57480: GO 57482
57482: DISABLE
57483: LD_INT 0
57485: PPUSH
// begin enable ;
57486: ENABLE
// if not invincible then
57487: LD_EXP 252
57491: NOT
57492: IFFALSE 57496
// exit ;
57494: GO 57540
// for i in invincible do
57496: LD_ADDR_VAR 0 1
57500: PUSH
57501: LD_EXP 252
57505: PUSH
57506: FOR_IN
57507: IFFALSE 57538
// if GetLives ( i ) < 1000 then
57509: LD_VAR 0 1
57513: PPUSH
57514: CALL_OW 256
57518: PUSH
57519: LD_INT 1000
57521: LESS
57522: IFFALSE 57536
// SetLives ( i , 1000 ) ;
57524: LD_VAR 0 1
57528: PPUSH
57529: LD_INT 1000
57531: PPUSH
57532: CALL_OW 234
57536: GO 57506
57538: POP
57539: POP
// end ;
57540: PPOPN 1
57542: END
// export function HackInvincible ; var i ; begin
57543: LD_INT 0
57545: PPUSH
57546: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
57547: LD_ADDR_VAR 0 2
57551: PUSH
57552: LD_INT 2
57554: PUSH
57555: LD_INT 21
57557: PUSH
57558: LD_INT 1
57560: PUSH
57561: EMPTY
57562: LIST
57563: LIST
57564: PUSH
57565: LD_INT 21
57567: PUSH
57568: LD_INT 2
57570: PUSH
57571: EMPTY
57572: LIST
57573: LIST
57574: PUSH
57575: EMPTY
57576: LIST
57577: LIST
57578: LIST
57579: PPUSH
57580: CALL_OW 69
57584: PUSH
57585: FOR_IN
57586: IFFALSE 57647
// if IsSelected ( i ) then
57588: LD_VAR 0 2
57592: PPUSH
57593: CALL_OW 306
57597: IFFALSE 57645
// begin if i in invincible then
57599: LD_VAR 0 2
57603: PUSH
57604: LD_EXP 252
57608: IN
57609: IFFALSE 57629
// invincible := invincible diff i else
57611: LD_ADDR_EXP 252
57615: PUSH
57616: LD_EXP 252
57620: PUSH
57621: LD_VAR 0 2
57625: DIFF
57626: ST_TO_ADDR
57627: GO 57645
// invincible := invincible union i ;
57629: LD_ADDR_EXP 252
57633: PUSH
57634: LD_EXP 252
57638: PUSH
57639: LD_VAR 0 2
57643: UNION
57644: ST_TO_ADDR
// end ;
57645: GO 57585
57647: POP
57648: POP
// end ;
57649: LD_VAR 0 1
57653: RET
// export function HackInvisible ; var i , j ; begin
57654: LD_INT 0
57656: PPUSH
57657: PPUSH
57658: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
57659: LD_ADDR_VAR 0 2
57663: PUSH
57664: LD_INT 21
57666: PUSH
57667: LD_INT 1
57669: PUSH
57670: EMPTY
57671: LIST
57672: LIST
57673: PPUSH
57674: CALL_OW 69
57678: PUSH
57679: FOR_IN
57680: IFFALSE 57704
// if IsSelected ( i ) then
57682: LD_VAR 0 2
57686: PPUSH
57687: CALL_OW 306
57691: IFFALSE 57702
// begin ComForceInvisible ( i ) ;
57693: LD_VAR 0 2
57697: PPUSH
57698: CALL_OW 496
// end ;
57702: GO 57679
57704: POP
57705: POP
// end ;
57706: LD_VAR 0 1
57710: RET
// export function HackChangeYourSide ; begin
57711: LD_INT 0
57713: PPUSH
// if your_side = 8 then
57714: LD_OWVAR 2
57718: PUSH
57719: LD_INT 8
57721: EQUAL
57722: IFFALSE 57734
// your_side := 0 else
57724: LD_ADDR_OWVAR 2
57728: PUSH
57729: LD_INT 0
57731: ST_TO_ADDR
57732: GO 57748
// your_side := your_side + 1 ;
57734: LD_ADDR_OWVAR 2
57738: PUSH
57739: LD_OWVAR 2
57743: PUSH
57744: LD_INT 1
57746: PLUS
57747: ST_TO_ADDR
// end ;
57748: LD_VAR 0 1
57752: RET
// export function HackChangeUnitSide ; var i , j ; begin
57753: LD_INT 0
57755: PPUSH
57756: PPUSH
57757: PPUSH
// for i in all_units do
57758: LD_ADDR_VAR 0 2
57762: PUSH
57763: LD_OWVAR 3
57767: PUSH
57768: FOR_IN
57769: IFFALSE 57847
// if IsSelected ( i ) then
57771: LD_VAR 0 2
57775: PPUSH
57776: CALL_OW 306
57780: IFFALSE 57845
// begin j := GetSide ( i ) ;
57782: LD_ADDR_VAR 0 3
57786: PUSH
57787: LD_VAR 0 2
57791: PPUSH
57792: CALL_OW 255
57796: ST_TO_ADDR
// if j = 8 then
57797: LD_VAR 0 3
57801: PUSH
57802: LD_INT 8
57804: EQUAL
57805: IFFALSE 57817
// j := 0 else
57807: LD_ADDR_VAR 0 3
57811: PUSH
57812: LD_INT 0
57814: ST_TO_ADDR
57815: GO 57831
// j := j + 1 ;
57817: LD_ADDR_VAR 0 3
57821: PUSH
57822: LD_VAR 0 3
57826: PUSH
57827: LD_INT 1
57829: PLUS
57830: ST_TO_ADDR
// SetSide ( i , j ) ;
57831: LD_VAR 0 2
57835: PPUSH
57836: LD_VAR 0 3
57840: PPUSH
57841: CALL_OW 235
// end ;
57845: GO 57768
57847: POP
57848: POP
// end ;
57849: LD_VAR 0 1
57853: RET
// export function HackFog ; begin
57854: LD_INT 0
57856: PPUSH
// FogOff ( true ) ;
57857: LD_INT 1
57859: PPUSH
57860: CALL_OW 344
// end ;
57864: LD_VAR 0 1
57868: RET
// export function HackApeman ; begin
57869: LD_INT 0
57871: PPUSH
// uc_side := your_side ;
57872: LD_ADDR_OWVAR 20
57876: PUSH
57877: LD_OWVAR 2
57881: ST_TO_ADDR
// uc_nation := 0 ;
57882: LD_ADDR_OWVAR 21
57886: PUSH
57887: LD_INT 0
57889: ST_TO_ADDR
// hc_name :=  ;
57890: LD_ADDR_OWVAR 26
57894: PUSH
57895: LD_STRING 
57897: ST_TO_ADDR
// hc_gallery :=  ;
57898: LD_ADDR_OWVAR 33
57902: PUSH
57903: LD_STRING 
57905: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
57906: LD_ADDR_OWVAR 31
57910: PUSH
57911: LD_INT 0
57913: PUSH
57914: LD_INT 0
57916: PUSH
57917: LD_INT 0
57919: PUSH
57920: LD_INT 0
57922: PUSH
57923: EMPTY
57924: LIST
57925: LIST
57926: LIST
57927: LIST
57928: ST_TO_ADDR
// hc_class := class_apeman ;
57929: LD_ADDR_OWVAR 28
57933: PUSH
57934: LD_INT 12
57936: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
57937: CALL_OW 44
57941: PPUSH
57942: LD_INT 1
57944: PPUSH
57945: CALL_OW 51
// end ;
57949: LD_VAR 0 1
57953: RET
// export function HackBoom ; begin
57954: LD_INT 0
57956: PPUSH
// uc_side := your_side ;
57957: LD_ADDR_OWVAR 20
57961: PUSH
57962: LD_OWVAR 2
57966: ST_TO_ADDR
// uc_nation := 1 ;
57967: LD_ADDR_OWVAR 21
57971: PUSH
57972: LD_INT 1
57974: ST_TO_ADDR
// vc_chassis := us_morphling ;
57975: LD_ADDR_OWVAR 37
57979: PUSH
57980: LD_INT 5
57982: ST_TO_ADDR
// vc_engine := engine_siberite ;
57983: LD_ADDR_OWVAR 39
57987: PUSH
57988: LD_INT 3
57990: ST_TO_ADDR
// vc_control := control_computer ;
57991: LD_ADDR_OWVAR 38
57995: PUSH
57996: LD_INT 3
57998: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
57999: LD_ADDR_OWVAR 40
58003: PUSH
58004: LD_INT 8
58006: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
58007: CALL_OW 45
58011: PPUSH
58012: LD_INT 1
58014: PPUSH
58015: CALL_OW 51
// end ;
58019: LD_VAR 0 1
58023: RET
