// export t_kill , t_intimidate , t_persuade , t_pay , t_beat , t_killbeat ; export you , americans , arabians , nature ; export mcdef1_difficulty , mcdef2_difficulty , mcdef3_difficulty , mcdef4_difficulty , mcdef5_difficulty ; export gossudarov_mech_skill ; export cap_bases ; export your_bases ; export aiH , aiN , aiZ ; export ai_nation ; export ai_s ; export ai ; export plat_i ; export apemans ; export Diplomacy , Goss ; export BehemothSeen ; export vedci_zacali_zdrhat ; export run_sci ; export utek , utek_e ; export art_cargo1 ; export your_cars ; export your_builds ; export your_humans ; export function inicializace_main ; begin
   0: LD_INT 0
   2: PPUSH
// you := 3 ;
   3: LD_ADDR_EXP 7
   7: PUSH
   8: LD_INT 3
  10: ST_TO_ADDR
// americans := 1 ;
  11: LD_ADDR_EXP 8
  15: PUSH
  16: LD_INT 1
  18: ST_TO_ADDR
// arabians := 2 ;
  19: LD_ADDR_EXP 9
  23: PUSH
  24: LD_INT 2
  26: ST_TO_ADDR
// nature := 0 ;
  27: LD_ADDR_EXP 10
  31: PUSH
  32: LD_INT 0
  34: ST_TO_ADDR
// utek := [ [ 55 , 21 ] , [ 83 , 36 ] , [ 103 , 70 ] , [ 142 , 88 ] ] ;
  35: LD_ADDR_EXP 32
  39: PUSH
  40: LD_INT 55
  42: PUSH
  43: LD_INT 21
  45: PUSH
  46: EMPTY
  47: LIST
  48: LIST
  49: PUSH
  50: LD_INT 83
  52: PUSH
  53: LD_INT 36
  55: PUSH
  56: EMPTY
  57: LIST
  58: LIST
  59: PUSH
  60: LD_INT 103
  62: PUSH
  63: LD_INT 70
  65: PUSH
  66: EMPTY
  67: LIST
  68: LIST
  69: PUSH
  70: LD_INT 142
  72: PUSH
  73: LD_INT 88
  75: PUSH
  76: EMPTY
  77: LIST
  78: LIST
  79: PUSH
  80: EMPTY
  81: LIST
  82: LIST
  83: LIST
  84: LIST
  85: ST_TO_ADDR
// utek_e := [ 186 , 55 ] ;
  86: LD_ADDR_EXP 33
  90: PUSH
  91: LD_INT 186
  93: PUSH
  94: LD_INT 55
  96: PUSH
  97: EMPTY
  98: LIST
  99: LIST
 100: ST_TO_ADDR
// cap_bases := 0 ;
 101: LD_ADDR_EXP 17
 105: PUSH
 106: LD_INT 0
 108: ST_TO_ADDR
// t_kill := 1 ;
 109: LD_ADDR_EXP 1
 113: PUSH
 114: LD_INT 1
 116: ST_TO_ADDR
// t_intimidate := 2 ;
 117: LD_ADDR_EXP 2
 121: PUSH
 122: LD_INT 2
 124: ST_TO_ADDR
// t_persuade := 3 ;
 125: LD_ADDR_EXP 3
 129: PUSH
 130: LD_INT 3
 132: ST_TO_ADDR
// t_pay := 4 ;
 133: LD_ADDR_EXP 4
 137: PUSH
 138: LD_INT 4
 140: ST_TO_ADDR
// t_beat := 5 ;
 141: LD_ADDR_EXP 5
 145: PUSH
 146: LD_INT 5
 148: ST_TO_ADDR
// t_killbeat := 10 ;
 149: LD_ADDR_EXP 6
 153: PUSH
 154: LD_INT 10
 156: ST_TO_ADDR
// Diplomacy := true ;
 157: LD_ADDR_EXP 27
 161: PUSH
 162: LD_INT 1
 164: ST_TO_ADDR
// Goss := true ;
 165: LD_ADDR_EXP 28
 169: PUSH
 170: LD_INT 1
 172: ST_TO_ADDR
// ai_s := [ 6 , 5 , 2 , 8 , 7 ] ;
 173: LD_ADDR_EXP 23
 177: PUSH
 178: LD_INT 6
 180: PUSH
 181: LD_INT 5
 183: PUSH
 184: LD_INT 2
 186: PUSH
 187: LD_INT 8
 189: PUSH
 190: LD_INT 7
 192: PUSH
 193: EMPTY
 194: LIST
 195: LIST
 196: LIST
 197: LIST
 198: LIST
 199: ST_TO_ADDR
// ai := [ 6 , 5 , 2 , 8 , 7 ] ;
 200: LD_ADDR_EXP 24
 204: PUSH
 205: LD_INT 6
 207: PUSH
 208: LD_INT 5
 210: PUSH
 211: LD_INT 2
 213: PUSH
 214: LD_INT 8
 216: PUSH
 217: LD_INT 7
 219: PUSH
 220: EMPTY
 221: LIST
 222: LIST
 223: LIST
 224: LIST
 225: LIST
 226: ST_TO_ADDR
// plat_i := 1 ;
 227: LD_ADDR_EXP 25
 231: PUSH
 232: LD_INT 1
 234: ST_TO_ADDR
// aiH := [ ] ;
 235: LD_ADDR_EXP 19
 239: PUSH
 240: EMPTY
 241: ST_TO_ADDR
// aiN := [ ai_s [ 2 ] , ai_s [ 3 ] , ai_s [ 4 ] , ai_s [ 5 ] ] ;
 242: LD_ADDR_EXP 20
 246: PUSH
 247: LD_EXP 23
 251: PUSH
 252: LD_INT 2
 254: ARRAY
 255: PUSH
 256: LD_EXP 23
 260: PUSH
 261: LD_INT 3
 263: ARRAY
 264: PUSH
 265: LD_EXP 23
 269: PUSH
 270: LD_INT 4
 272: ARRAY
 273: PUSH
 274: LD_EXP 23
 278: PUSH
 279: LD_INT 5
 281: ARRAY
 282: PUSH
 283: EMPTY
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: ST_TO_ADDR
// aiZ := [ ai_s [ 1 ] ] ;
 289: LD_ADDR_EXP 21
 293: PUSH
 294: LD_EXP 23
 298: PUSH
 299: LD_INT 1
 301: ARRAY
 302: PUSH
 303: EMPTY
 304: LIST
 305: ST_TO_ADDR
// your_bases := [ ] ;
 306: LD_ADDR_EXP 18
 310: PUSH
 311: EMPTY
 312: ST_TO_ADDR
// cap_bases := 0 ;
 313: LD_ADDR_EXP 17
 317: PUSH
 318: LD_INT 0
 320: ST_TO_ADDR
// art_cargo1 := art_cargo ;
 321: LD_ADDR_EXP 34
 325: PUSH
 326: LD_INT 121
 328: ST_TO_ADDR
// ai_nation := nation_russian ;
 329: LD_ADDR_EXP 22
 333: PUSH
 334: LD_INT 3
 336: ST_TO_ADDR
// debug_strings := [ [ ] , [ ] , [ ] ] ;
 337: LD_ADDR_OWVAR 48
 341: PUSH
 342: EMPTY
 343: PUSH
 344: EMPTY
 345: PUSH
 346: EMPTY
 347: PUSH
 348: EMPTY
 349: LIST
 350: LIST
 351: LIST
 352: ST_TO_ADDR
// end ;
 353: LD_VAR 0 1
 357: RET
// export vyhrano ; export function VyhraPlaton ; begin
 358: LD_INT 0
 360: PPUSH
// if not vyhrano then
 361: LD_EXP 38
 365: NOT
 366: IFFALSE 497
// begin vyhrano := true ;
 368: LD_ADDR_EXP 38
 372: PUSH
 373: LD_INT 1
 375: ST_TO_ADDR
// cap_bases := 5 ;
 376: LD_ADDR_EXP 17
 380: PUSH
 381: LD_INT 5
 383: ST_TO_ADDR
// Query ( QEndInfo ) ;
 384: LD_STRING QEndInfo
 386: PPUSH
 387: CALL_OW 97
// ExclusiveOn ;
 391: CALL_OW 4
// wait ( 1 ) ;
 395: LD_INT 1
 397: PPUSH
 398: CALL_OW 67
// DEnd ;
 402: CALL 8114 0 0
// ExclusiveOff ;
 406: CALL_OW 5
// SetMedals ;
 410: CALL 502 0 0
// GiveMedals ( Platon ) ;
 414: LD_STRING Platon
 416: PPUSH
 417: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) ) ;
 421: LD_INT 22
 423: PUSH
 424: LD_EXP 7
 428: PUSH
 429: EMPTY
 430: LIST
 431: LIST
 432: PUSH
 433: LD_INT 21
 435: PUSH
 436: LD_INT 1
 438: PUSH
 439: EMPTY
 440: LIST
 441: LIST
 442: PUSH
 443: LD_INT 3
 445: PUSH
 446: LD_INT 23
 448: PUSH
 449: LD_INT 0
 451: PUSH
 452: EMPTY
 453: LIST
 454: LIST
 455: PUSH
 456: EMPTY
 457: LIST
 458: LIST
 459: PUSH
 460: EMPTY
 461: LIST
 462: LIST
 463: LIST
 464: PPUSH
 465: CALL_OW 69
 469: PPUSH
 470: CALL_OW 43
// Save ;
 474: CALL 9109 0 0
// YouWin ;
 478: CALL_OW 103
// ExclusiveOn ;
 482: CALL_OW 4
// wait ( 1 ) ;
 486: LD_INT 1
 488: PPUSH
 489: CALL_OW 67
// ExclusiveOff ;
 493: CALL_OW 5
// end ; end ;
 497: LD_VAR 0 1
 501: RET
// export function SetMedals ; begin
 502: LD_INT 0
 504: PPUSH
// AddMedal ( All , cap_bases = 5 ) ;
 505: LD_STRING All
 507: PPUSH
 508: LD_EXP 17
 512: PUSH
 513: LD_INT 5
 515: EQUAL
 516: PPUSH
 517: CALL_OW 101
// AddMedal ( Diplomacy , Diplomacy ) ;
 521: LD_STRING Diplomacy
 523: PPUSH
 524: LD_EXP 27
 528: PPUSH
 529: CALL_OW 101
// AddMedal ( Goss , Goss ) ;
 533: LD_STRING Goss
 535: PPUSH
 536: LD_EXP 28
 540: PPUSH
 541: CALL_OW 101
// end ;
 545: LD_VAR 0 1
 549: RET
// export function LostBurlak ; begin
 550: LD_INT 0
 552: PPUSH
// YouLost ( Burlak ) ;
 553: LD_STRING Burlak
 555: PPUSH
 556: CALL_OW 104
// end ;
 560: LD_VAR 0 1
 564: RET
// export function LostArte ; begin
 565: LD_INT 0
 567: PPUSH
// YouLost ( Arte ) ;
 568: LD_STRING Arte
 570: PPUSH
 571: CALL_OW 104
// end ;
 575: LD_VAR 0 1
 579: RET
// export function set_difficulty ; begin
 580: LD_INT 0
 582: PPUSH
// mcdef1_difficulty := [ 200 , 230 , 260 ] [ difficulty ] ;
 583: LD_ADDR_EXP 11
 587: PUSH
 588: LD_INT 200
 590: PUSH
 591: LD_INT 230
 593: PUSH
 594: LD_INT 260
 596: PUSH
 597: EMPTY
 598: LIST
 599: LIST
 600: LIST
 601: PUSH
 602: LD_OWVAR 67
 606: ARRAY
 607: ST_TO_ADDR
// mcdef2_difficulty := [ 150 , 180 , 200 ] [ difficulty ] ;
 608: LD_ADDR_EXP 12
 612: PUSH
 613: LD_INT 150
 615: PUSH
 616: LD_INT 180
 618: PUSH
 619: LD_INT 200
 621: PUSH
 622: EMPTY
 623: LIST
 624: LIST
 625: LIST
 626: PUSH
 627: LD_OWVAR 67
 631: ARRAY
 632: ST_TO_ADDR
// mcdef3_difficulty := [ 170 , 200 , 230 ] [ difficulty ] ;
 633: LD_ADDR_EXP 13
 637: PUSH
 638: LD_INT 170
 640: PUSH
 641: LD_INT 200
 643: PUSH
 644: LD_INT 230
 646: PUSH
 647: EMPTY
 648: LIST
 649: LIST
 650: LIST
 651: PUSH
 652: LD_OWVAR 67
 656: ARRAY
 657: ST_TO_ADDR
// mcdef4_difficulty := [ 170 , 200 , 230 ] [ difficulty ] ;
 658: LD_ADDR_EXP 14
 662: PUSH
 663: LD_INT 170
 665: PUSH
 666: LD_INT 200
 668: PUSH
 669: LD_INT 230
 671: PUSH
 672: EMPTY
 673: LIST
 674: LIST
 675: LIST
 676: PUSH
 677: LD_OWVAR 67
 681: ARRAY
 682: ST_TO_ADDR
// mcdef5_difficulty := [ 170 , 200 , 230 ] [ difficulty ] ;
 683: LD_ADDR_EXP 15
 687: PUSH
 688: LD_INT 170
 690: PUSH
 691: LD_INT 200
 693: PUSH
 694: LD_INT 230
 696: PUSH
 697: EMPTY
 698: LIST
 699: LIST
 700: LIST
 701: PUSH
 702: LD_OWVAR 67
 706: ARRAY
 707: ST_TO_ADDR
// gossudarov_mech_skill := [ 0 , 2 , 4 ] [ difficulty ] ;
 708: LD_ADDR_EXP 16
 712: PUSH
 713: LD_INT 0
 715: PUSH
 716: LD_INT 2
 718: PUSH
 719: LD_INT 4
 721: PUSH
 722: EMPTY
 723: LIST
 724: LIST
 725: LIST
 726: PUSH
 727: LD_OWVAR 67
 731: ARRAY
 732: ST_TO_ADDR
// end ;
 733: LD_VAR 0 1
 737: RET
// export function get_your_units ; var a ; begin
 738: LD_INT 0
 740: PPUSH
 741: PPUSH
// a := FilterAllUnits ( [ [ f_side , you ] ] ) ;
 742: LD_ADDR_VAR 0 2
 746: PUSH
 747: LD_INT 22
 749: PUSH
 750: LD_EXP 7
 754: PUSH
 755: EMPTY
 756: LIST
 757: LIST
 758: PUSH
 759: EMPTY
 760: LIST
 761: PPUSH
 762: CALL_OW 69
 766: ST_TO_ADDR
// your_humans := UnitFilter ( a , [ [ f_type , unit_human ] ] ) ;
 767: LD_ADDR_EXP 37
 771: PUSH
 772: LD_VAR 0 2
 776: PPUSH
 777: LD_INT 21
 779: PUSH
 780: LD_INT 1
 782: PUSH
 783: EMPTY
 784: LIST
 785: LIST
 786: PUSH
 787: EMPTY
 788: LIST
 789: PPUSH
 790: CALL_OW 72
 794: ST_TO_ADDR
// your_cars := UnitFilter ( a , [ [ f_type , unit_vehicle ] ] ) ;
 795: LD_ADDR_EXP 35
 799: PUSH
 800: LD_VAR 0 2
 804: PPUSH
 805: LD_INT 21
 807: PUSH
 808: LD_INT 2
 810: PUSH
 811: EMPTY
 812: LIST
 813: LIST
 814: PUSH
 815: EMPTY
 816: LIST
 817: PPUSH
 818: CALL_OW 72
 822: ST_TO_ADDR
// your_builds := UnitFilter ( a , [ [ f_type , unit_building ] ] ) ;
 823: LD_ADDR_EXP 36
 827: PUSH
 828: LD_VAR 0 2
 832: PPUSH
 833: LD_INT 21
 835: PUSH
 836: LD_INT 3
 838: PUSH
 839: EMPTY
 840: LIST
 841: LIST
 842: PUSH
 843: EMPTY
 844: LIST
 845: PPUSH
 846: CALL_OW 72
 850: ST_TO_ADDR
// end ;
 851: LD_VAR 0 1
 855: RET
// every 0 0$1 do var i ;
 856: GO 858
 858: DISABLE
 859: LD_INT 0
 861: PPUSH
// begin for i in ai do
 862: LD_ADDR_VAR 0 1
 866: PUSH
 867: LD_EXP 24
 871: PUSH
 872: FOR_IN
 873: IFFALSE 1070
// case GetAttitude ( i , you ) of att_friend :
 875: LD_VAR 0 1
 879: PPUSH
 880: LD_EXP 7
 884: PPUSH
 885: CALL_OW 81
 889: PUSH
 890: LD_INT 1
 892: DOUBLE
 893: EQUAL
 894: IFTRUE 898
 896: GO 949
 898: POP
// begin aiH := aiH union i ;
 899: LD_ADDR_EXP 19
 903: PUSH
 904: LD_EXP 19
 908: PUSH
 909: LD_VAR 0 1
 913: UNION
 914: ST_TO_ADDR
// aiZ := aiZ diff i ;
 915: LD_ADDR_EXP 21
 919: PUSH
 920: LD_EXP 21
 924: PUSH
 925: LD_VAR 0 1
 929: DIFF
 930: ST_TO_ADDR
// aiN := aiN diff i ;
 931: LD_ADDR_EXP 20
 935: PUSH
 936: LD_EXP 20
 940: PUSH
 941: LD_VAR 0 1
 945: DIFF
 946: ST_TO_ADDR
// end ; att_neutral :
 947: GO 1068
 949: LD_INT 0
 951: DOUBLE
 952: EQUAL
 953: IFTRUE 957
 955: GO 1008
 957: POP
// begin aiN := aiN union i ;
 958: LD_ADDR_EXP 20
 962: PUSH
 963: LD_EXP 20
 967: PUSH
 968: LD_VAR 0 1
 972: UNION
 973: ST_TO_ADDR
// aiZ := aiZ diff i ;
 974: LD_ADDR_EXP 21
 978: PUSH
 979: LD_EXP 21
 983: PUSH
 984: LD_VAR 0 1
 988: DIFF
 989: ST_TO_ADDR
// aiH := aiH diff i ;
 990: LD_ADDR_EXP 19
 994: PUSH
 995: LD_EXP 19
 999: PUSH
1000: LD_VAR 0 1
1004: DIFF
1005: ST_TO_ADDR
// end ; att_enemy :
1006: GO 1068
1008: LD_INT 2
1010: DOUBLE
1011: EQUAL
1012: IFTRUE 1016
1014: GO 1067
1016: POP
// begin aiZ := aiZ union i ;
1017: LD_ADDR_EXP 21
1021: PUSH
1022: LD_EXP 21
1026: PUSH
1027: LD_VAR 0 1
1031: UNION
1032: ST_TO_ADDR
// aiH := aiH diff i ;
1033: LD_ADDR_EXP 19
1037: PUSH
1038: LD_EXP 19
1042: PUSH
1043: LD_VAR 0 1
1047: DIFF
1048: ST_TO_ADDR
// aiN := aiN diff i ;
1049: LD_ADDR_EXP 20
1053: PUSH
1054: LD_EXP 20
1058: PUSH
1059: LD_VAR 0 1
1063: DIFF
1064: ST_TO_ADDR
// end ; end ;
1065: GO 1068
1067: POP
1068: GO 872
1070: POP
1071: POP
// enable ;
1072: ENABLE
// end ;
1073: PPOPN 1
1075: END
// every 0 0$1 do
1076: GO 1078
1078: DISABLE
// begin debug_strings := [ [ ( tick div 0 0$1 ) div 60 , ( tick div 0 0$1 ) mod 60 ] , debug_strings [ 2 ] , debug_strings [ 3 ] ] ;
1079: LD_ADDR_OWVAR 48
1083: PUSH
1084: LD_OWVAR 1
1088: PUSH
1089: LD_INT 35
1091: DIV
1092: PUSH
1093: LD_INT 60
1095: DIV
1096: PUSH
1097: LD_OWVAR 1
1101: PUSH
1102: LD_INT 35
1104: DIV
1105: PUSH
1106: LD_INT 60
1108: MOD
1109: PUSH
1110: EMPTY
1111: LIST
1112: LIST
1113: PUSH
1114: LD_OWVAR 48
1118: PUSH
1119: LD_INT 2
1121: ARRAY
1122: PUSH
1123: LD_OWVAR 48
1127: PUSH
1128: LD_INT 3
1130: ARRAY
1131: PUSH
1132: EMPTY
1133: LIST
1134: LIST
1135: LIST
1136: ST_TO_ADDR
// enable ;
1137: ENABLE
// end ;
1138: END
// starting begin inicializace_main ;
1139: CALL 0 0 0
// inicializace_ai ;
1143: CALL 22563 0 0
// inicializace_functions ;
1147: CALL 9729 0 0
// inicializace_ai_b_repair ;
1151: CALL 22137 0 0
// inicializace_ai_b_build ;
1155: CALL 16067 0 0
// inicializace_ai_defend ;
1159: CALL 11545 0 0
// inicializace_ai_c_make ;
1163: CALL 13944 0 0
// inicializace_ai_c_repair ;
1167: CALL 12476 0 0
// disable ( 10 ) ;
1171: LD_INT 10
1173: DISABLE_MARKED
// disable ( 11 ) ;
1174: LD_INT 11
1176: DISABLE_MARKED
// disable ( 12 ) ;
1177: LD_INT 12
1179: DISABLE_MARKED
// disable ( 115 ) ;
1180: LD_INT 115
1182: DISABLE_MARKED
// apemans := FilterAllUnits ( [ [ f_nation , nation_nature ] , [ f_type , unit_human ] , [ f_class , class_apeman ] ] ) ;
1183: LD_ADDR_EXP 26
1187: PUSH
1188: LD_INT 23
1190: PUSH
1191: LD_INT 0
1193: PUSH
1194: EMPTY
1195: LIST
1196: LIST
1197: PUSH
1198: LD_INT 21
1200: PUSH
1201: LD_INT 1
1203: PUSH
1204: EMPTY
1205: LIST
1206: LIST
1207: PUSH
1208: LD_INT 25
1210: PUSH
1211: LD_INT 12
1213: PUSH
1214: EMPTY
1215: LIST
1216: LIST
1217: PUSH
1218: EMPTY
1219: LIST
1220: LIST
1221: LIST
1222: PPUSH
1223: CALL_OW 69
1227: ST_TO_ADDR
// set_difficulty ;
1228: CALL 580 0 0
// SetCargo ( art_cargo1 , mat_artifact , 4 * 10 ) ;
1232: LD_EXP 34
1236: PPUSH
1237: LD_INT 4
1239: PPUSH
1240: LD_INT 4
1242: PUSH
1243: LD_INT 10
1245: MUL
1246: PPUSH
1247: CALL_OW 290
// load ;
1251: CALL 8262 0 0
// inicializace_dialogues ;
1255: CALL 1280 0 0
// place_ru ;
1259: CALL 8803 0 0
// build_map ;
1263: CALL 20412 0 0
// get_groups ;
1267: CALL 22705 0 0
// get_your_units ;
1271: CALL 738 0 0
// DStart ;
1275: CALL 1455 0 0
// end ; end_of_file
1279: END
// var Gla , Bur , Pla , Gos , Fad , Bor , Tsr , Dav , Eis , Glb ; var talking ; export function inicializace_dialogues ; begin
1280: LD_INT 0
1282: PPUSH
// Bur := Burlak ;
1283: LD_ADDR_LOC 2
1287: PUSH
1288: LD_EXP 41
1292: ST_TO_ADDR
// Gla := Gladkov ;
1293: LD_ADDR_LOC 1
1297: PUSH
1298: LD_EXP 44
1302: ST_TO_ADDR
// Glb := Gleb ;
1303: LD_ADDR_LOC 10
1307: PUSH
1308: LD_EXP 50
1312: ST_TO_ADDR
// Pla := Platonov ;
1313: LD_ADDR_LOC 3
1317: PUSH
1318: LD_EXP 42
1322: ST_TO_ADDR
// Gos := Gossudarov ;
1323: LD_ADDR_LOC 4
1327: PUSH
1328: LD_EXP 43
1332: ST_TO_ADDR
// Fad := Fadeev ;
1333: LD_ADDR_LOC 5
1337: PUSH
1338: LD_EXP 45
1342: ST_TO_ADDR
// Bor := Borodin ;
1343: LD_ADDR_LOC 6
1347: PUSH
1348: LD_EXP 46
1352: ST_TO_ADDR
// Tsr := Tsaritsyn ;
1353: LD_ADDR_LOC 7
1357: PUSH
1358: LD_EXP 47
1362: ST_TO_ADDR
// Dav := Davidov ;
1363: LD_ADDR_LOC 8
1367: PUSH
1368: LD_EXP 48
1372: ST_TO_ADDR
// Eis := Eisenstein ;
1373: LD_ADDR_LOC 9
1377: PUSH
1378: LD_EXP 49
1382: ST_TO_ADDR
// talking := [ Bur , Gla , Pla , Gos , Fad , Bor , Tsr , Dav , Eis , Glb ] ;
1383: LD_ADDR_LOC 11
1387: PUSH
1388: LD_LOC 2
1392: PUSH
1393: LD_LOC 1
1397: PUSH
1398: LD_LOC 3
1402: PUSH
1403: LD_LOC 4
1407: PUSH
1408: LD_LOC 5
1412: PUSH
1413: LD_LOC 6
1417: PUSH
1418: LD_LOC 7
1422: PUSH
1423: LD_LOC 8
1427: PUSH
1428: LD_LOC 9
1432: PUSH
1433: LD_LOC 10
1437: PUSH
1438: EMPTY
1439: LIST
1440: LIST
1441: LIST
1442: LIST
1443: LIST
1444: LIST
1445: LIST
1446: LIST
1447: LIST
1448: LIST
1449: ST_TO_ADDR
// end ;
1450: LD_VAR 0 1
1454: RET
// export function DStart ; begin
1455: LD_INT 0
1457: PPUSH
// hide_interface_automaticaly := true ;
1458: LD_ADDR_OWVAR 53
1462: PUSH
1463: LD_INT 1
1465: ST_TO_ADDR
// InGameOn ;
1466: CALL_OW 8
// CenterNowOnUnits ( IsInUnit ( Bur ) ) ;
1470: LD_LOC 2
1474: PPUSH
1475: CALL_OW 310
1479: PPUSH
1480: CALL_OW 87
// CenterNowOnUnits ( Bur ) ;
1484: LD_LOC 2
1488: PPUSH
1489: CALL_OW 87
// while IsInUnit ( bur ) do
1493: LD_LOC 2
1497: PPUSH
1498: CALL_OW 310
1502: IFFALSE 1522
// begin ComExitVehicle ( Bur ) ;
1504: LD_LOC 2
1508: PPUSH
1509: CALL_OW 121
// wait ( 0 0$0.3 ) ;
1513: LD_INT 10
1515: PPUSH
1516: CALL_OW 67
// end ;
1520: GO 1493
// Say ( Bur , DStart-Bur-1 ) ;
1522: LD_LOC 2
1526: PPUSH
1527: LD_STRING DStart-Bur-1
1529: PPUSH
1530: CALL_OW 88
// Say ( Gla , DStart-Gla-1 ) ;
1534: LD_LOC 1
1538: PPUSH
1539: LD_STRING DStart-Gla-1
1541: PPUSH
1542: CALL_OW 88
// Say ( Bur , DStart-Bur-2 ) ;
1546: LD_LOC 2
1550: PPUSH
1551: LD_STRING DStart-Bur-2
1553: PPUSH
1554: CALL_OW 88
// Say ( Gla , DStart-Gla-2 ) ;
1558: LD_LOC 1
1562: PPUSH
1563: LD_STRING DStart-Gla-2
1565: PPUSH
1566: CALL_OW 88
// Say ( Bur , DStart-Bur-3 ) ;
1570: LD_LOC 2
1574: PPUSH
1575: LD_STRING DStart-Bur-3
1577: PPUSH
1578: CALL_OW 88
// Say ( Gla , DStart-Gla-3 ) ;
1582: LD_LOC 1
1586: PPUSH
1587: LD_STRING DStart-Gla-3
1589: PPUSH
1590: CALL_OW 88
// Say ( Bur , DStart-Bur-4 ) ;
1594: LD_LOC 2
1598: PPUSH
1599: LD_STRING DStart-Bur-4
1601: PPUSH
1602: CALL_OW 88
// SetBName ( da , bluekher ) ;
1606: LD_INT 1
1608: PPUSH
1609: LD_STRING bluekher
1611: PPUSH
1612: CALL_OW 500
// SetBName ( dc , yegorov ) ;
1616: LD_INT 80
1618: PPUSH
1619: LD_STRING yegorov
1621: PPUSH
1622: CALL_OW 500
// SetBName ( dd , ryutin ) ;
1626: LD_INT 28
1628: PPUSH
1629: LD_STRING ryutin
1631: PPUSH
1632: CALL_OW 500
// SetBName ( db , budonny ) ;
1636: LD_INT 51
1638: PPUSH
1639: LD_STRING budonny
1641: PPUSH
1642: CALL_OW 500
// SetBName ( de , yakir ) ;
1646: LD_INT 37
1648: PPUSH
1649: LD_STRING yakir
1651: PPUSH
1652: CALL_OW 500
// RevealFogArea ( you , near_base ) ;
1656: LD_EXP 7
1660: PPUSH
1661: LD_INT 7
1663: PPUSH
1664: CALL_OW 332
// CenterOnUnits ( dc ) ;
1668: LD_INT 80
1670: PPUSH
1671: CALL_OW 85
// DWait ( 0 0$2 ) ;
1675: LD_INT 70
1677: PPUSH
1678: CALL_OW 68
// Say ( Gla , DStart-Gla-4 ) ;
1682: LD_LOC 1
1686: PPUSH
1687: LD_STRING DStart-Gla-4
1689: PPUSH
1690: CALL_OW 88
// CenterOnUnits ( dd ) ;
1694: LD_INT 28
1696: PPUSH
1697: CALL_OW 85
// DWait ( 0 0$2 ) ;
1701: LD_INT 70
1703: PPUSH
1704: CALL_OW 68
// Say ( Gla , DStart-Gla-4a ) ;
1708: LD_LOC 1
1712: PPUSH
1713: LD_STRING DStart-Gla-4a
1715: PPUSH
1716: CALL_OW 88
// CenterOnUnits ( de ) ;
1720: LD_INT 37
1722: PPUSH
1723: CALL_OW 85
// DWait ( 0 0$2 ) ;
1727: LD_INT 70
1729: PPUSH
1730: CALL_OW 68
// Say ( Gla , DStart-Gla-4b ) ;
1734: LD_LOC 1
1738: PPUSH
1739: LD_STRING DStart-Gla-4b
1741: PPUSH
1742: CALL_OW 88
// CenterOnUnits ( db ) ;
1746: LD_INT 51
1748: PPUSH
1749: CALL_OW 85
// DWait ( 0 0$2 ) ;
1753: LD_INT 70
1755: PPUSH
1756: CALL_OW 68
// Say ( Gla , DStart-Gla-4c ) ;
1760: LD_LOC 1
1764: PPUSH
1765: LD_STRING DStart-Gla-4c
1767: PPUSH
1768: CALL_OW 88
// CenterOnUnits ( da ) ;
1772: LD_INT 1
1774: PPUSH
1775: CALL_OW 85
// DWait ( 0 0$2 ) ;
1779: LD_INT 70
1781: PPUSH
1782: CALL_OW 68
// Say ( Gla , DStart-Gla-4d ) ;
1786: LD_LOC 1
1790: PPUSH
1791: LD_STRING DStart-Gla-4d
1793: PPUSH
1794: CALL_OW 88
// Say ( Gla , DStart-Gla-4e ) ;
1798: LD_LOC 1
1802: PPUSH
1803: LD_STRING DStart-Gla-4e
1805: PPUSH
1806: CALL_OW 88
// SaveForQuickRestart ;
1810: CALL_OW 22
// CenterNowOnUnits ( Bur ) ;
1814: LD_LOC 2
1818: PPUSH
1819: CALL_OW 87
// ChangeMissionObjectives ( MStart ) ;
1823: LD_STRING MStart
1825: PPUSH
1826: CALL_OW 337
// InGameOff ;
1830: CALL_OW 9
// end ;
1834: LD_VAR 0 1
1838: RET
// every 29 29$0 marked 111 do
1839: GO 1841
1841: DISABLE
// begin disable ( 112 ) ;
1842: LD_INT 112
1844: DISABLE_MARKED
// zdrhaji ;
1845: CALL 1874 0 0
// end ;
1849: END
// every 0 0$30 trigger kecali_o_artefaktu marked 112 do
1850: LD_EXP 40
1854: IFFALSE 1873
1856: GO 1858
1858: DISABLE
// begin disable ( 111 ) ;
1859: LD_INT 111
1861: DISABLE_MARKED
// wait ( 2 2$15 ) ;
1862: LD_INT 4725
1864: PPUSH
1865: CALL_OW 67
// zdrhaji ;
1869: CALL 1874 0 0
// end ;
1873: END
// function zdrhaji ; var ai1sci , i , mytick ; begin
1874: LD_INT 0
1876: PPUSH
1877: PPUSH
1878: PPUSH
1879: PPUSH
// vedci_zacali_zdrhat := true ;
1880: LD_ADDR_EXP 30
1884: PUSH
1885: LD_INT 1
1887: ST_TO_ADDR
// TeleportExit ( telp1 , 136 , 88 ) ;
1888: LD_INT 15
1890: PPUSH
1891: LD_INT 136
1893: PPUSH
1894: LD_INT 88
1896: PPUSH
1897: CALL_OW 243
// ai1sci := UnitFilter ( humans [ 1 ] , [ mf_sci ] ) ;
1901: LD_ADDR_VAR 0 2
1905: PUSH
1906: LD_EXP 76
1910: PUSH
1911: LD_INT 1
1913: ARRAY
1914: PPUSH
1915: LD_EXP 54
1919: PUSH
1920: EMPTY
1921: LIST
1922: PPUSH
1923: CALL_OW 72
1927: ST_TO_ADDR
// if ai1sci then
1928: LD_VAR 0 2
1932: IFFALSE 1944
// run_sci := ai1sci ;
1934: LD_ADDR_EXP 31
1938: PUSH
1939: LD_VAR 0 2
1943: ST_TO_ADDR
// humans := replace ( humans , 1 , humans [ 1 ] diff run_sci ) ;
1944: LD_ADDR_EXP 76
1948: PUSH
1949: LD_EXP 76
1953: PPUSH
1954: LD_INT 1
1956: PPUSH
1957: LD_EXP 76
1961: PUSH
1962: LD_INT 1
1964: ARRAY
1965: PUSH
1966: LD_EXP 31
1970: DIFF
1971: PPUSH
1972: CALL_OW 1
1976: ST_TO_ADDR
// sci := sci diff run_sci ;
1977: LD_ADDR_EXP 88
1981: PUSH
1982: LD_EXP 88
1986: PUSH
1987: LD_EXP 31
1991: DIFF
1992: ST_TO_ADDR
// for i in utek do
1993: LD_ADDR_VAR 0 3
1997: PUSH
1998: LD_EXP 32
2002: PUSH
2003: FOR_IN
2004: IFFALSE 2035
// AddComMoveXY ( run_sci , i [ 1 ] , i [ 2 ] ) ;
2006: LD_EXP 31
2010: PPUSH
2011: LD_VAR 0 3
2015: PUSH
2016: LD_INT 1
2018: ARRAY
2019: PPUSH
2020: LD_VAR 0 3
2024: PUSH
2025: LD_INT 2
2027: ARRAY
2028: PPUSH
2029: CALL_OW 171
2033: GO 2003
2035: POP
2036: POP
// wait ( 0 0$10 ) ;
2037: LD_INT 350
2039: PPUSH
2040: CALL_OW 67
// DGossudarov ;
2044: CALL 2695 0 0
// mytick := tick + 1 1$30 ;
2048: LD_ADDR_VAR 0 4
2052: PUSH
2053: LD_OWVAR 1
2057: PUSH
2058: LD_INT 3150
2060: PLUS
2061: ST_TO_ADDR
// while mytick > tick and not UnitFilter ( run_sci , [ f_or , [ f_not , [ f_alive ] ] , [ f_distxy , 142 , 88 , 10 ] ] ) do
2062: LD_VAR 0 4
2066: PUSH
2067: LD_OWVAR 1
2071: GREATER
2072: PUSH
2073: LD_EXP 31
2077: PPUSH
2078: LD_INT 2
2080: PUSH
2081: LD_INT 3
2083: PUSH
2084: LD_INT 51
2086: PUSH
2087: EMPTY
2088: LIST
2089: PUSH
2090: EMPTY
2091: LIST
2092: LIST
2093: PUSH
2094: LD_INT 92
2096: PUSH
2097: LD_INT 142
2099: PUSH
2100: LD_INT 88
2102: PUSH
2103: LD_INT 10
2105: PUSH
2106: EMPTY
2107: LIST
2108: LIST
2109: LIST
2110: LIST
2111: PUSH
2112: EMPTY
2113: LIST
2114: LIST
2115: LIST
2116: PPUSH
2117: CALL_OW 72
2121: NOT
2122: AND
2123: IFFALSE 2134
// wait ( 0 0$1 ) ;
2125: LD_INT 35
2127: PPUSH
2128: CALL_OW 67
2132: GO 2062
// ComExitVehicle ( Gossudarov ) ;
2134: LD_EXP 43
2138: PPUSH
2139: CALL_OW 121
// while not UnitsInside ( art_cargo ) do
2143: LD_INT 121
2145: PPUSH
2146: CALL_OW 313
2150: NOT
2151: IFFALSE 2174
// begin ComEnterUnit ( Gossudarov , art_cargo ) ;
2153: LD_EXP 43
2157: PPUSH
2158: LD_INT 121
2160: PPUSH
2161: CALL_OW 120
// wait ( 0 0$1 ) ;
2165: LD_INT 35
2167: PPUSH
2168: CALL_OW 67
// end ;
2172: GO 2143
// if UnitFilter ( run_sci , [ [ f_distxy , 142 , 88 , 12 ] ] ) then
2174: LD_EXP 31
2178: PPUSH
2179: LD_INT 92
2181: PUSH
2182: LD_INT 142
2184: PUSH
2185: LD_INT 88
2187: PUSH
2188: LD_INT 12
2190: PUSH
2191: EMPTY
2192: LIST
2193: LIST
2194: LIST
2195: LIST
2196: PUSH
2197: EMPTY
2198: LIST
2199: PPUSH
2200: CALL_OW 72
2204: IFFALSE 2256
// while not UnitFilter ( art_cargo , [ [ f_distxy , 136 , 88 , 15 ] ] ) do
2206: LD_INT 121
2208: PPUSH
2209: LD_INT 92
2211: PUSH
2212: LD_INT 136
2214: PUSH
2215: LD_INT 88
2217: PUSH
2218: LD_INT 15
2220: PUSH
2221: EMPTY
2222: LIST
2223: LIST
2224: LIST
2225: LIST
2226: PUSH
2227: EMPTY
2228: LIST
2229: PPUSH
2230: CALL_OW 72
2234: NOT
2235: IFFALSE 2256
// begin ComMoveUnit ( art_cargo , telp1 ) ;
2237: LD_INT 121
2239: PPUSH
2240: LD_INT 15
2242: PPUSH
2243: CALL_OW 112
// wait ( 0 0$1 ) ;
2247: LD_INT 35
2249: PPUSH
2250: CALL_OW 67
// end ;
2254: GO 2206
// while UnitFilter ( run_sci ^ art_cargo , [ [ f_placed ] ] ) do
2256: LD_EXP 31
2260: PUSH
2261: LD_INT 121
2263: ADD
2264: PPUSH
2265: LD_INT 52
2267: PUSH
2268: EMPTY
2269: LIST
2270: PUSH
2271: EMPTY
2272: LIST
2273: PPUSH
2274: CALL_OW 72
2278: IFFALSE 2412
// begin ComMoveXY ( ( run_sci ) ^ art_cargo , utek_e [ 1 ] , utek_e [ 2 ] ) ;
2280: LD_EXP 31
2284: PUSH
2285: LD_INT 121
2287: ADD
2288: PPUSH
2289: LD_EXP 33
2293: PUSH
2294: LD_INT 1
2296: ARRAY
2297: PPUSH
2298: LD_EXP 33
2302: PUSH
2303: LD_INT 2
2305: ARRAY
2306: PPUSH
2307: CALL_OW 111
// for i in UnitFilter ( ( run_sci ) ^ art_cargo , [ [ f_distxy , utek_e [ 1 ] , utek_e [ 2 ] , 5 ] ] ) do
2311: LD_ADDR_VAR 0 3
2315: PUSH
2316: LD_EXP 31
2320: PUSH
2321: LD_INT 121
2323: ADD
2324: PPUSH
2325: LD_INT 92
2327: PUSH
2328: LD_EXP 33
2332: PUSH
2333: LD_INT 1
2335: ARRAY
2336: PUSH
2337: LD_EXP 33
2341: PUSH
2342: LD_INT 2
2344: ARRAY
2345: PUSH
2346: LD_INT 5
2348: PUSH
2349: EMPTY
2350: LIST
2351: LIST
2352: LIST
2353: LIST
2354: PUSH
2355: EMPTY
2356: LIST
2357: PPUSH
2358: CALL_OW 72
2362: PUSH
2363: FOR_IN
2364: IFFALSE 2401
// if i = art_cargo then
2366: LD_VAR 0 3
2370: PUSH
2371: LD_INT 121
2373: EQUAL
2374: IFFALSE 2382
// LostArte else
2376: CALL 565 0 0
2380: GO 2399
// begin RemoveUnit ( i ) ;
2382: LD_VAR 0 3
2386: PPUSH
2387: CALL_OW 64
// Goss := false ;
2391: LD_ADDR_EXP 28
2395: PUSH
2396: LD_INT 0
2398: ST_TO_ADDR
// end ;
2399: GO 2363
2401: POP
2402: POP
// wait ( 0 0$1 ) ;
2403: LD_INT 35
2405: PPUSH
2406: CALL_OW 67
// end ;
2410: GO 2256
// end ;
2412: LD_VAR 0 1
2416: RET
// every 0 0$1 trigger vedci_zacali_zdrhat and UnitFilter ( run_sci ^ Gossudarov , [ [ f_alive ] , [ f_placed ] ] ) = 0 do
2417: LD_EXP 30
2421: PUSH
2422: LD_EXP 31
2426: PUSH
2427: LD_EXP 43
2431: ADD
2432: PPUSH
2433: LD_INT 51
2435: PUSH
2436: EMPTY
2437: LIST
2438: PUSH
2439: LD_INT 52
2441: PUSH
2442: EMPTY
2443: LIST
2444: PUSH
2445: EMPTY
2446: LIST
2447: LIST
2448: PPUSH
2449: CALL_OW 72
2453: PUSH
2454: LD_INT 0
2456: EQUAL
2457: AND
2458: IFFALSE 2470
2460: GO 2462
2462: DISABLE
// begin ChangeMissionObjectives ( MGossSciOut ) ;
2463: LD_STRING MGossSciOut
2465: PPUSH
2466: CALL_OW 337
// end ;
2470: END
// every 0 0$1 do var h , hinfo , i ;
2471: GO 2473
2473: DISABLE
2474: LD_INT 0
2476: PPUSH
2477: PPUSH
2478: PPUSH
// begin h := FindArtifact ( 4 ) ;
2479: LD_ADDR_VAR 0 1
2483: PUSH
2484: LD_INT 4
2486: PPUSH
2487: CALL_OW 469
2491: ST_TO_ADDR
// if h then
2492: LD_VAR 0 1
2496: IFFALSE 2691
// begin hinfo := HexInfo ( h [ 1 ] , h [ 2 ] ) ;
2498: LD_ADDR_VAR 0 2
2502: PUSH
2503: LD_VAR 0 1
2507: PUSH
2508: LD_INT 1
2510: ARRAY
2511: PPUSH
2512: LD_VAR 0 1
2516: PUSH
2517: LD_INT 2
2519: ARRAY
2520: PPUSH
2521: CALL_OW 428
2525: ST_TO_ADDR
// if hinfo > 0 then
2526: LD_VAR 0 2
2530: PUSH
2531: LD_INT 0
2533: GREATER
2534: IFFALSE 2573
// begin if GetSide ( hinfo ) = you then
2536: LD_VAR 0 2
2540: PPUSH
2541: CALL_OW 255
2545: PUSH
2546: LD_EXP 7
2550: EQUAL
2551: IFFALSE 2563
// maji_artifact := true else
2553: LD_ADDR_EXP 39
2557: PUSH
2558: LD_INT 1
2560: ST_TO_ADDR
2561: GO 2571
// maji_artifact := false ;
2563: LD_ADDR_EXP 39
2567: PUSH
2568: LD_INT 0
2570: ST_TO_ADDR
// end else
2571: GO 2691
// begin maji_artifact := false ;
2573: LD_ADDR_EXP 39
2577: PUSH
2578: LD_INT 0
2580: ST_TO_ADDR
// for i := 1 to 5 do
2581: LD_ADDR_VAR 0 3
2585: PUSH
2586: DOUBLE
2587: LD_INT 1
2589: DEC
2590: ST_TO_ADDR
2591: LD_INT 5
2593: PUSH
2594: FOR_TO
2595: IFFALSE 2689
// if ( ai_s [ i ] in your_bases ) and ( InArea ( h [ 1 ] , h [ 2 ] , near_base_area [ i ] ) or InArea ( h [ 1 ] , h [ 2 ] , nearD ) ) then
2597: LD_EXP 23
2601: PUSH
2602: LD_VAR 0 3
2606: ARRAY
2607: PUSH
2608: LD_EXP 18
2612: IN
2613: PUSH
2614: LD_VAR 0 1
2618: PUSH
2619: LD_INT 1
2621: ARRAY
2622: PPUSH
2623: LD_VAR 0 1
2627: PUSH
2628: LD_INT 2
2630: ARRAY
2631: PPUSH
2632: LD_EXP 63
2636: PUSH
2637: LD_VAR 0 3
2641: ARRAY
2642: PPUSH
2643: CALL_OW 309
2647: PUSH
2648: LD_VAR 0 1
2652: PUSH
2653: LD_INT 1
2655: ARRAY
2656: PPUSH
2657: LD_VAR 0 1
2661: PUSH
2662: LD_INT 2
2664: ARRAY
2665: PPUSH
2666: LD_INT 27
2668: PPUSH
2669: CALL_OW 309
2673: OR
2674: AND
2675: IFFALSE 2687
// begin maji_artifact := true ;
2677: LD_ADDR_EXP 39
2681: PUSH
2682: LD_INT 1
2684: ST_TO_ADDR
// break ;
2685: GO 2689
// end ;
2687: GO 2594
2689: POP
2690: POP
// end ; end ; enable ;
2691: ENABLE
// end ;
2692: PPOPN 3
2694: END
// export function DGossudarov ; var x , y ; begin
2695: LD_INT 0
2697: PPUSH
2698: PPUSH
2699: PPUSH
// x := GetX ( run_sci [ 1 ] ) ;
2700: LD_ADDR_VAR 0 2
2704: PUSH
2705: LD_EXP 31
2709: PUSH
2710: LD_INT 1
2712: ARRAY
2713: PPUSH
2714: CALL_OW 250
2718: ST_TO_ADDR
// y := GetY ( run_sci [ 1 ] ) ;
2719: LD_ADDR_VAR 0 3
2723: PUSH
2724: LD_EXP 31
2728: PUSH
2729: LD_INT 1
2731: ARRAY
2732: PPUSH
2733: CALL_OW 251
2737: ST_TO_ADDR
// PlaceSeeing ( x , y , You , 10 ) ;
2738: LD_VAR 0 2
2742: PPUSH
2743: LD_VAR 0 3
2747: PPUSH
2748: LD_EXP 7
2752: PPUSH
2753: LD_INT 10
2755: PPUSH
2756: CALL_OW 330
// CenterNowOnXY ( x , y ) ;
2760: LD_VAR 0 2
2764: PPUSH
2765: LD_VAR 0 3
2769: PPUSH
2770: CALL_OW 86
// wait ( 0 0$1 ) ;
2774: LD_INT 35
2776: PPUSH
2777: CALL_OW 67
// DialogueOn ;
2781: CALL_OW 6
// Say ( Fad , DGossudarov-Fad-1 ) ;
2785: LD_LOC 5
2789: PPUSH
2790: LD_STRING DGossudarov-Fad-1
2792: PPUSH
2793: CALL_OW 88
// Say ( Bur , DGossudarov-Bur-1 ) ;
2797: LD_LOC 2
2801: PPUSH
2802: LD_STRING DGossudarov-Bur-1
2804: PPUSH
2805: CALL_OW 88
// Say ( Gos , DGossudarov-Gos-1 ) ;
2809: LD_LOC 4
2813: PPUSH
2814: LD_STRING DGossudarov-Gos-1
2816: PPUSH
2817: CALL_OW 88
// Say ( Bur , DGossudarov-Bur-2 ) ;
2821: LD_LOC 2
2825: PPUSH
2826: LD_STRING DGossudarov-Bur-2
2828: PPUSH
2829: CALL_OW 88
// Say ( Gos , DGossudarov-Gos-2 ) ;
2833: LD_LOC 4
2837: PPUSH
2838: LD_STRING DGossudarov-Gos-2
2840: PPUSH
2841: CALL_OW 88
// Say ( Bur , DGossudarov-Bur-3 ) ;
2845: LD_LOC 2
2849: PPUSH
2850: LD_STRING DGossudarov-Bur-3
2852: PPUSH
2853: CALL_OW 88
// Say ( Gos , DGossudarov-Gos-3 ) ;
2857: LD_LOC 4
2861: PPUSH
2862: LD_STRING DGossudarov-Gos-3
2864: PPUSH
2865: CALL_OW 88
// ChangeMissionObjectives ( MGoss ) ;
2869: LD_STRING MGoss
2871: PPUSH
2872: CALL_OW 337
// DialogueOff ;
2876: CALL_OW 7
// wait ( 0 0$5 ) ;
2880: LD_INT 175
2882: PPUSH
2883: CALL_OW 67
// RemoveSeeing ( x , y , You ) ;
2887: LD_VAR 0 2
2891: PPUSH
2892: LD_VAR 0 3
2896: PPUSH
2897: LD_EXP 7
2901: PPUSH
2902: CALL_OW 331
// end ;
2906: LD_VAR 0 1
2910: RET
// every 0 0$2 trigger see_any ( ai_s [ plat_i ] , your_humans ^ your_cars ) and UnitFilter ( your_humans ^ your_cars , [ [ f_inarea , near_base_area [ plat_i ] ] ] ) do
2911: LD_EXP 23
2915: PUSH
2916: LD_EXP 25
2920: ARRAY
2921: PPUSH
2922: LD_EXP 37
2926: PUSH
2927: LD_EXP 35
2931: ADD
2932: PPUSH
2933: CALL 10494 0 2
2937: PUSH
2938: LD_EXP 37
2942: PUSH
2943: LD_EXP 35
2947: ADD
2948: PPUSH
2949: LD_INT 95
2951: PUSH
2952: LD_EXP 63
2956: PUSH
2957: LD_EXP 25
2961: ARRAY
2962: PUSH
2963: EMPTY
2964: LIST
2965: LIST
2966: PUSH
2967: EMPTY
2968: LIST
2969: PPUSH
2970: CALL_OW 72
2974: AND
2975: IFFALSE 2984
2977: GO 2979
2979: DISABLE
// begin DA_BaseContact ;
2980: CALL 2985 0 0
// end ;
2984: END
// export function DA_BaseContact ; begin
2985: LD_INT 0
2987: PPUSH
// DialogueOn ;
2988: CALL_OW 6
// Say ( Pla , DA-BaseContact-Pla-1 ) ;
2992: LD_LOC 3
2996: PPUSH
2997: LD_STRING DA-BaseContact-Pla-1
2999: PPUSH
3000: CALL_OW 88
// Say ( Bur , DA-BaseContact-Bur-1 ) ;
3004: LD_LOC 2
3008: PPUSH
3009: LD_STRING DA-BaseContact-Bur-1
3011: PPUSH
3012: CALL_OW 88
// DialogueOff ;
3016: CALL_OW 7
// end ;
3020: LD_VAR 0 1
3024: RET
// every 0 0$20 trigger see_any ( ai_s [ plat_i ] , your_humans ^ your_cars ) and UnitFilter ( your_humans ^ your_cars , [ [ f_inarea , near_base_area [ plat_i ] ] ] ) do
3025: LD_EXP 23
3029: PUSH
3030: LD_EXP 25
3034: ARRAY
3035: PPUSH
3036: LD_EXP 37
3040: PUSH
3041: LD_EXP 35
3045: ADD
3046: PPUSH
3047: CALL 10494 0 2
3051: PUSH
3052: LD_EXP 37
3056: PUSH
3057: LD_EXP 35
3061: ADD
3062: PPUSH
3063: LD_INT 95
3065: PUSH
3066: LD_EXP 63
3070: PUSH
3071: LD_EXP 25
3075: ARRAY
3076: PUSH
3077: EMPTY
3078: LIST
3079: LIST
3080: PUSH
3081: EMPTY
3082: LIST
3083: PPUSH
3084: CALL_OW 72
3088: AND
3089: IFFALSE 3172
3091: GO 3093
3093: DISABLE
// begin wait ( 0 0$20 ) ;
3094: LD_INT 700
3096: PPUSH
3097: CALL_OW 67
// if see_any ( ai_s [ plat_i ] , your_humans ^ your_cars ) and UnitFilter ( your_humans ^ your_cars , [ [ f_inarea , near_base_area [ plat_i ] ] ] ) then
3101: LD_EXP 23
3105: PUSH
3106: LD_EXP 25
3110: ARRAY
3111: PPUSH
3112: LD_EXP 37
3116: PUSH
3117: LD_EXP 35
3121: ADD
3122: PPUSH
3123: CALL 10494 0 2
3127: PUSH
3128: LD_EXP 37
3132: PUSH
3133: LD_EXP 35
3137: ADD
3138: PPUSH
3139: LD_INT 95
3141: PUSH
3142: LD_EXP 63
3146: PUSH
3147: LD_EXP 25
3151: ARRAY
3152: PUSH
3153: EMPTY
3154: LIST
3155: LIST
3156: PUSH
3157: EMPTY
3158: LIST
3159: PPUSH
3160: CALL_OW 72
3164: AND
3165: IFFALSE 3171
// DA_BaseRefuse ;
3167: CALL 3952 0 0
// enable ;
3171: ENABLE
// end ;
3172: END
// every 0 0$2 trigger UnitFilter ( humans [ plat_i ] , [ f_not , mf_sci ] ) < 12 do
3173: LD_EXP 76
3177: PUSH
3178: LD_EXP 25
3182: ARRAY
3183: PPUSH
3184: LD_INT 3
3186: PUSH
3187: LD_EXP 54
3191: PUSH
3192: EMPTY
3193: LIST
3194: LIST
3195: PPUSH
3196: CALL_OW 72
3200: PUSH
3201: LD_INT 12
3203: LESS
3204: IFFALSE 3217
3206: GO 3208
3208: DISABLE
// begin DA_BaseRefuse ;
3209: CALL 3952 0 0
// ZoufalUtok ;
3213: CALL 11781 0 0
// end ;
3217: END
// every 0 0$2 trigger UnitFilter ( humans [ plat_i ] , [ f_not , mf_sci ] ) < 10 do
3218: LD_EXP 76
3222: PUSH
3223: LD_EXP 25
3227: ARRAY
3228: PPUSH
3229: LD_INT 3
3231: PUSH
3232: LD_EXP 54
3236: PUSH
3237: EMPTY
3238: LIST
3239: LIST
3240: PPUSH
3241: CALL_OW 72
3245: PUSH
3246: LD_INT 10
3248: LESS
3249: IFFALSE 3262
3251: GO 3253
3253: DISABLE
// begin DA_BaseRefuse ;
3254: CALL 3952 0 0
// BehemothUtok ;
3258: CALL 11607 0 0
// end ;
3262: END
// every 25 25$0 do
3263: GO 3265
3265: DISABLE
// begin BehemothUtok ;
3266: CALL 11607 0 0
// end ;
3270: END
// every 10 10$0 + 0 0$5 do
3271: GO 3273
3273: DISABLE
// begin NormalUtok ;
3274: CALL 11978 0 0
// end ;
3278: END
// every 0 0$2 trigger UnitFilter ( humans [ plat_i ] , [ f_not , mf_sci ] ) <= 7 and UnitFilter ( buildings [ plat_i ] , [ f_or , [ f_btype , b_turret ] , [ [ f_occupied ] , mf_fort ] ] ) <= 2 do var kam_zdrha , k_dispozici , mt , kam_telp , h , i , kam_zdrha_i ;
3279: LD_EXP 76
3283: PUSH
3284: LD_EXP 25
3288: ARRAY
3289: PPUSH
3290: LD_INT 3
3292: PUSH
3293: LD_EXP 54
3297: PUSH
3298: EMPTY
3299: LIST
3300: LIST
3301: PPUSH
3302: CALL_OW 72
3306: PUSH
3307: LD_INT 7
3309: LESSEQUAL
3310: PUSH
3311: LD_EXP 75
3315: PUSH
3316: LD_EXP 25
3320: ARRAY
3321: PPUSH
3322: LD_INT 2
3324: PUSH
3325: LD_INT 30
3327: PUSH
3328: LD_INT 33
3330: PUSH
3331: EMPTY
3332: LIST
3333: LIST
3334: PUSH
3335: LD_INT 59
3337: PUSH
3338: EMPTY
3339: LIST
3340: PUSH
3341: LD_EXP 56
3345: PUSH
3346: EMPTY
3347: LIST
3348: LIST
3349: PUSH
3350: EMPTY
3351: LIST
3352: LIST
3353: LIST
3354: PPUSH
3355: CALL_OW 72
3359: PUSH
3360: LD_INT 2
3362: LESSEQUAL
3363: AND
3364: IFFALSE 3949
3366: GO 3368
3368: DISABLE
3369: LD_INT 0
3371: PPUSH
3372: PPUSH
3373: PPUSH
3374: PPUSH
3375: PPUSH
3376: PPUSH
3377: PPUSH
// begin k_dispozici := ( ai diff ( ai [ 1 ] ^ your_bases ) ) ;
3378: LD_ADDR_VAR 0 2
3382: PUSH
3383: LD_EXP 24
3387: PUSH
3388: LD_EXP 24
3392: PUSH
3393: LD_INT 1
3395: ARRAY
3396: PUSH
3397: LD_EXP 18
3401: ADD
3402: DIFF
3403: ST_TO_ADDR
// if k_dispozici then
3404: LD_VAR 0 2
3408: IFFALSE 3904
// begin kam_zdrha := ( k_dispozici ) [ Rand ( 1 , k_dispozici ) ] ;
3410: LD_ADDR_VAR 0 1
3414: PUSH
3415: LD_VAR 0 2
3419: PUSH
3420: LD_INT 1
3422: PPUSH
3423: LD_VAR 0 2
3427: PPUSH
3428: CALL_OW 12
3432: ARRAY
3433: ST_TO_ADDR
// case kam_zdrha of ai_s [ 2 ] :
3434: LD_VAR 0 1
3438: PUSH
3439: LD_EXP 23
3443: PUSH
3444: LD_INT 2
3446: ARRAY
3447: DOUBLE
3448: EQUAL
3449: IFTRUE 3453
3451: GO 3464
3453: POP
// kam_telp := b_base ; ai_s [ 3 ] :
3454: LD_ADDR_VAR 0 4
3458: PUSH
3459: LD_INT 20
3461: ST_TO_ADDR
3462: GO 3540
3464: LD_EXP 23
3468: PUSH
3469: LD_INT 3
3471: ARRAY
3472: DOUBLE
3473: EQUAL
3474: IFTRUE 3478
3476: GO 3489
3478: POP
// kam_telp := c_base ; ai_s [ 4 ] :
3479: LD_ADDR_VAR 0 4
3483: PUSH
3484: LD_INT 23
3486: ST_TO_ADDR
3487: GO 3540
3489: LD_EXP 23
3493: PUSH
3494: LD_INT 4
3496: ARRAY
3497: DOUBLE
3498: EQUAL
3499: IFTRUE 3503
3501: GO 3514
3503: POP
// kam_telp := d_base ; ai_s [ 5 ] :
3504: LD_ADDR_VAR 0 4
3508: PUSH
3509: LD_INT 22
3511: ST_TO_ADDR
3512: GO 3540
3514: LD_EXP 23
3518: PUSH
3519: LD_INT 5
3521: ARRAY
3522: DOUBLE
3523: EQUAL
3524: IFTRUE 3528
3526: GO 3539
3528: POP
// kam_telp := e_base ; end ;
3529: LD_ADDR_VAR 0 4
3533: PUSH
3534: LD_INT 21
3536: ST_TO_ADDR
3537: GO 3540
3539: POP
// repeat h := RandHexArea ( kam_telp , false ) ;
3540: LD_ADDR_VAR 0 5
3544: PUSH
3545: LD_VAR 0 4
3549: PPUSH
3550: LD_INT 0
3552: PPUSH
3553: CALL_OW 16
3557: ST_TO_ADDR
// until HexInfo ( h [ 1 ] , h [ 2 ] ) = 0 ;
3558: LD_VAR 0 5
3562: PUSH
3563: LD_INT 1
3565: ARRAY
3566: PPUSH
3567: LD_VAR 0 5
3571: PUSH
3572: LD_INT 2
3574: ARRAY
3575: PPUSH
3576: CALL_OW 428
3580: PUSH
3581: LD_INT 0
3583: EQUAL
3584: IFFALSE 3540
// TeleportExit ( telp1 , h [ 1 ] , h [ 2 ] ) ;
3586: LD_INT 15
3588: PPUSH
3589: LD_VAR 0 5
3593: PUSH
3594: LD_INT 1
3596: ARRAY
3597: PPUSH
3598: LD_VAR 0 5
3602: PUSH
3603: LD_INT 2
3605: ARRAY
3606: PPUSH
3607: CALL_OW 243
// ComExitVehicle ( Platonov ) ;
3611: LD_EXP 42
3615: PPUSH
3616: CALL_OW 121
// AddComExitBuilding ( Platonov ) ;
3620: LD_EXP 42
3624: PPUSH
3625: CALL_OW 182
// AddComEnterUnit ( Platonov , telp1 ) ;
3629: LD_EXP 42
3633: PPUSH
3634: LD_INT 15
3636: PPUSH
3637: CALL_OW 180
// for i := 1 to 5 do
3641: LD_ADDR_VAR 0 6
3645: PUSH
3646: DOUBLE
3647: LD_INT 1
3649: DEC
3650: ST_TO_ADDR
3651: LD_INT 5
3653: PUSH
3654: FOR_TO
3655: IFFALSE 3687
// if ai_s [ i ] = kam_zdrha then
3657: LD_EXP 23
3661: PUSH
3662: LD_VAR 0 6
3666: ARRAY
3667: PUSH
3668: LD_VAR 0 1
3672: EQUAL
3673: IFFALSE 3685
// kam_zdrha_i := i ;
3675: LD_ADDR_VAR 0 7
3679: PUSH
3680: LD_VAR 0 6
3684: ST_TO_ADDR
3685: GO 3654
3687: POP
3688: POP
// plat_i := kam_zdrha_i ;
3689: LD_ADDR_EXP 25
3693: PUSH
3694: LD_VAR 0 7
3698: ST_TO_ADDR
// ai_s := replace ( ai_s , kam_zdrha_i , ai_s [ 1 ] ) ;
3699: LD_ADDR_EXP 23
3703: PUSH
3704: LD_EXP 23
3708: PPUSH
3709: LD_VAR 0 7
3713: PPUSH
3714: LD_EXP 23
3718: PUSH
3719: LD_INT 1
3721: ARRAY
3722: PPUSH
3723: CALL_OW 1
3727: ST_TO_ADDR
// wait ( 0 0$5 ) ;
3728: LD_INT 175
3730: PPUSH
3731: CALL_OW 67
// AddComEnterUnit ( Platonov , depots [ kam_zdrha_i ] ) ;
3735: LD_EXP 42
3739: PPUSH
3740: LD_EXP 74
3744: PUSH
3745: LD_VAR 0 7
3749: ARRAY
3750: PPUSH
3751: CALL_OW 180
// DA_BaseAccept ;
3755: CALL 4002 0 0
// SurrenderBase ( t_killbeat , ai_s [ plat_i ] ) ;
3759: LD_EXP 6
3763: PPUSH
3764: LD_EXP 23
3768: PUSH
3769: LD_EXP 25
3773: ARRAY
3774: PPUSH
3775: CALL 30255 0 2
// SetAttitude ( ai_s [ plat_i ] , you , att_enemy , true ) ;
3779: LD_EXP 23
3783: PUSH
3784: LD_EXP 25
3788: ARRAY
3789: PPUSH
3790: LD_EXP 7
3794: PPUSH
3795: LD_INT 2
3797: PPUSH
3798: LD_INT 1
3800: PPUSH
3801: CALL_OW 80
// SetSideBase ( GetBase ( depots [ plat_i ] ) , ai_s [ plat_i ] ) ;
3805: LD_EXP 74
3809: PUSH
3810: LD_EXP 25
3814: ARRAY
3815: PPUSH
3816: CALL_OW 274
3820: PPUSH
3821: LD_EXP 23
3825: PUSH
3826: LD_EXP 25
3830: ARRAY
3831: PPUSH
3832: CALL_OW 236
// SetSide ( FilterAllUnits ( [ [ f_side , kam_zdrha ] ] ) , ai_s [ plat_i ] ) ;
3836: LD_INT 22
3838: PUSH
3839: LD_VAR 0 1
3843: PUSH
3844: EMPTY
3845: LIST
3846: LIST
3847: PUSH
3848: EMPTY
3849: LIST
3850: PPUSH
3851: CALL_OW 69
3855: PPUSH
3856: LD_EXP 23
3860: PUSH
3861: LD_EXP 25
3865: ARRAY
3866: PPUSH
3867: CALL_OW 235
// wait ( 1 1$0 ) ;
3871: LD_INT 2100
3873: PPUSH
3874: CALL_OW 67
// AddComEnterUnit ( Platonov , depots [ kam_zdrha_i ] ) ;
3878: LD_EXP 42
3882: PPUSH
3883: LD_EXP 74
3887: PUSH
3888: LD_VAR 0 7
3892: ARRAY
3893: PPUSH
3894: CALL_OW 180
// ZoufalUtok ;
3898: CALL 11781 0 0
// end else
3902: GO 3949
// begin while not IsDead ( Platonov ) do
3904: LD_EXP 42
3908: PPUSH
3909: CALL_OW 301
3913: NOT
3914: IFFALSE 3949
// begin ComAttackUnit ( Platonov , NearestUnitToUnit ( your_humans , Platonov ) ) ;
3916: LD_EXP 42
3920: PPUSH
3921: LD_EXP 37
3925: PPUSH
3926: LD_EXP 42
3930: PPUSH
3931: CALL_OW 74
3935: PPUSH
3936: CALL_OW 115
// wait ( 0 0$5 ) ;
3940: LD_INT 175
3942: PPUSH
3943: CALL_OW 67
// end ;
3947: GO 3904
// end ; end ;
3949: PPOPN 7
3951: END
// export function DA_BaseRefuse ; begin
3952: LD_INT 0
3954: PPUSH
// DialogueOn ;
3955: CALL_OW 6
// if not IsDead ( Pla ) then
3959: LD_LOC 3
3963: PPUSH
3964: CALL_OW 301
3968: NOT
3969: IFFALSE 3993
// if not Say ( Pla , DA-BaseReguse-Pla-1 ) then
3971: LD_LOC 3
3975: PPUSH
3976: LD_STRING DA-BaseReguse-Pla-1
3978: PPUSH
3979: CALL_OW 88
3983: NOT
3984: IFFALSE 3993
// msg ( bad ident: DA-BaseReguse-Pla-1 ) ;
3986: LD_STRING bad ident: DA-BaseReguse-Pla-1
3988: PPUSH
3989: CALL_OW 100
// DialogueOff ;
3993: CALL_OW 7
// end ;
3997: LD_VAR 0 1
4001: RET
// export function DA_BaseAccept ; begin
4002: LD_INT 0
4004: PPUSH
// DialogueOn ;
4005: CALL_OW 6
// Say ( Pla , DA-BaseAccept-Pla-1 ) ;
4009: LD_LOC 3
4013: PPUSH
4014: LD_STRING DA-BaseAccept-Pla-1
4016: PPUSH
4017: CALL_OW 88
// DialogueOff ;
4021: CALL_OW 7
// end ;
4025: LD_VAR 0 1
4029: RET
// every 0 0$2 trigger See ( you , behemoth ) do
4030: LD_EXP 7
4034: PPUSH
4035: LD_INT 125
4037: PPUSH
4038: CALL_OW 292
4042: IFFALSE 4075
4044: GO 4046
4046: DISABLE
// begin if See ( you , behemoth ) then
4047: LD_EXP 7
4051: PPUSH
4052: LD_INT 125
4054: PPUSH
4055: CALL_OW 292
4059: IFFALSE 4074
// begin CenterNowOnUnits ( behemoth ) ;
4061: LD_INT 125
4063: PPUSH
4064: CALL_OW 87
// DBehemoth end else
4068: CALL 4076 0 0
4072: GO 4075
// enable ;
4074: ENABLE
// end ;
4075: END
// export function DBehemoth ; var who ; begin
4076: LD_INT 0
4078: PPUSH
4079: PPUSH
// who := WhoSayAny ( your_humans diff talking , you , sex_male , 0 , 0 ) ;
4080: LD_ADDR_VAR 0 2
4084: PUSH
4085: LD_EXP 37
4089: PUSH
4090: LD_LOC 11
4094: DIFF
4095: PPUSH
4096: LD_EXP 7
4100: PPUSH
4101: LD_INT 1
4103: PPUSH
4104: LD_INT 0
4106: PPUSH
4107: LD_INT 0
4109: PPUSH
4110: CALL 10300 0 5
4114: ST_TO_ADDR
// BehemothSeen := true ;
4115: LD_ADDR_EXP 29
4119: PUSH
4120: LD_INT 1
4122: ST_TO_ADDR
// DialogueOn ;
4123: CALL_OW 6
// Say ( who , DBehemoth-Rsol1-1 ) ;
4127: LD_VAR 0 2
4131: PPUSH
4132: LD_STRING DBehemoth-Rsol1-1
4134: PPUSH
4135: CALL_OW 88
// Say ( Pla , DBehemoth-Pla-1 ) ;
4139: LD_LOC 3
4143: PPUSH
4144: LD_STRING DBehemoth-Pla-1
4146: PPUSH
4147: CALL_OW 88
// Say ( Bur , DBehemoth-Bur-1 ) ;
4151: LD_LOC 2
4155: PPUSH
4156: LD_STRING DBehemoth-Bur-1
4158: PPUSH
4159: CALL_OW 88
// DialogueOff ;
4163: CALL_OW 7
// end ;
4167: LD_VAR 0 1
4171: RET
// every 0 0$2 trigger IsInArea ( Bur , b_base ) and ai_s [ 1 ] <> ai_s [ 2 ] do
4172: LD_LOC 2
4176: PPUSH
4177: LD_INT 20
4179: PPUSH
4180: CALL_OW 308
4184: PUSH
4185: LD_EXP 23
4189: PUSH
4190: LD_INT 1
4192: ARRAY
4193: PUSH
4194: LD_EXP 23
4198: PUSH
4199: LD_INT 2
4201: ARRAY
4202: NONEQUAL
4203: AND
4204: IFFALSE 4284
4206: GO 4208
4208: DISABLE
// begin if your_humans < 12 and your_cars < 20 then
4209: LD_EXP 37
4213: PUSH
4214: LD_INT 12
4216: LESS
4217: PUSH
4218: LD_EXP 35
4222: PUSH
4223: LD_INT 20
4225: LESS
4226: AND
4227: IFFALSE 4249
// begin DB_BaseContact ;
4229: CALL 4488 0 0
// DB_BaseRefuse1st ;
4233: CALL 4516 0 0
// wait ( 0 0$30 ) ;
4237: LD_INT 1050
4239: PPUSH
4240: CALL_OW 67
// enable ( 10 ) ;
4244: LD_INT 10
4246: ENABLE_MARKED
// end else
4247: GO 4284
// begin if not ai_s [ 2 ] in your_bases then
4249: LD_EXP 23
4253: PUSH
4254: LD_INT 2
4256: ARRAY
4257: PUSH
4258: LD_EXP 18
4262: IN
4263: NOT
4264: IFFALSE 4284
// begin SurrenderBase ( t_intimidate , ai_s [ 2 ] ) ;
4266: LD_EXP 2
4270: PPUSH
4271: LD_EXP 23
4275: PUSH
4276: LD_INT 2
4278: ARRAY
4279: PPUSH
4280: CALL 30255 0 2
// end ; end ; end ;
4284: END
// every 0 0$2 trigger IsInArea ( Bur , b_base ) and ai_s [ 1 ] <> ai_s [ 2 ] marked 10 do
4285: LD_LOC 2
4289: PPUSH
4290: LD_INT 20
4292: PPUSH
4293: CALL_OW 308
4297: PUSH
4298: LD_EXP 23
4302: PUSH
4303: LD_INT 1
4305: ARRAY
4306: PUSH
4307: LD_EXP 23
4311: PUSH
4312: LD_INT 2
4314: ARRAY
4315: NONEQUAL
4316: AND
4317: IFFALSE 4414
4319: GO 4321
4321: DISABLE
// begin if your_humans < 12 and your_cars < 20 then
4322: LD_EXP 37
4326: PUSH
4327: LD_INT 12
4329: LESS
4330: PUSH
4331: LD_EXP 35
4335: PUSH
4336: LD_INT 20
4338: LESS
4339: AND
4340: IFFALSE 4379
// begin DB_BaseRefuse ;
4342: CALL 4544 0 0
// while IsInArea ( Bur , b_base ) do
4346: LD_LOC 2
4350: PPUSH
4351: LD_INT 20
4353: PPUSH
4354: CALL_OW 308
4358: IFFALSE 4369
// wait ( 0 0$1 ) ;
4360: LD_INT 35
4362: PPUSH
4363: CALL_OW 67
4367: GO 4346
// wait ( 0 0$20 ) ;
4369: LD_INT 700
4371: PPUSH
4372: CALL_OW 67
// enable ;
4376: ENABLE
// end else
4377: GO 4414
// begin if not ai_s [ 2 ] in your_bases then
4379: LD_EXP 23
4383: PUSH
4384: LD_INT 2
4386: ARRAY
4387: PUSH
4388: LD_EXP 18
4392: IN
4393: NOT
4394: IFFALSE 4414
// begin SurrenderBase ( t_intimidate , ai_s [ 2 ] ) ;
4396: LD_EXP 2
4400: PPUSH
4401: LD_EXP 23
4405: PUSH
4406: LD_INT 2
4408: ARRAY
4409: PPUSH
4410: CALL 30255 0 2
// end ; end ; end ;
4414: END
// every 0 0$2 trigger humans [ 2 ] <= 6 and ai_s [ 1 ] <> ai_s [ 2 ] do
4415: LD_EXP 76
4419: PUSH
4420: LD_INT 2
4422: ARRAY
4423: PUSH
4424: LD_INT 6
4426: LESSEQUAL
4427: PUSH
4428: LD_EXP 23
4432: PUSH
4433: LD_INT 1
4435: ARRAY
4436: PUSH
4437: LD_EXP 23
4441: PUSH
4442: LD_INT 2
4444: ARRAY
4445: NONEQUAL
4446: AND
4447: IFFALSE 4487
4449: GO 4451
4451: DISABLE
// begin if not ai_s [ 2 ] in your_bases then
4452: LD_EXP 23
4456: PUSH
4457: LD_INT 2
4459: ARRAY
4460: PUSH
4461: LD_EXP 18
4465: IN
4466: NOT
4467: IFFALSE 4487
// SurrenderBase ( t_killbeat , ai_s [ 2 ] ) ;
4469: LD_EXP 6
4473: PPUSH
4474: LD_EXP 23
4478: PUSH
4479: LD_INT 2
4481: ARRAY
4482: PPUSH
4483: CALL 30255 0 2
// end ;
4487: END
// export function DB_BaseContact ; begin
4488: LD_INT 0
4490: PPUSH
// DialogueOn ;
4491: CALL_OW 6
// Say ( Bor , DB-BaseContact-Bor-1 ) ;
4495: LD_LOC 6
4499: PPUSH
4500: LD_STRING DB-BaseContact-Bor-1
4502: PPUSH
4503: CALL_OW 88
// DialogueOff ;
4507: CALL_OW 7
// end ;
4511: LD_VAR 0 1
4515: RET
// export function DB_BaseRefuse1st ; begin
4516: LD_INT 0
4518: PPUSH
// DialogueOn ;
4519: CALL_OW 6
// Say ( Bor , DB-BaseRefuse-Bor-1 ) ;
4523: LD_LOC 6
4527: PPUSH
4528: LD_STRING DB-BaseRefuse-Bor-1
4530: PPUSH
4531: CALL_OW 88
// DialogueOff ;
4535: CALL_OW 7
// end ;
4539: LD_VAR 0 1
4543: RET
// export function DB_BaseRefuse ; begin
4544: LD_INT 0
4546: PPUSH
// Say ( Bor , DB-BaseRefuse-Bor-1 ) ;
4547: LD_LOC 6
4551: PPUSH
4552: LD_STRING DB-BaseRefuse-Bor-1
4554: PPUSH
4555: CALL_OW 88
// end ;
4559: LD_VAR 0 1
4563: RET
// export function DB_BaseAccept ( first ) ; begin
4564: LD_INT 0
4566: PPUSH
// DialogueOn ;
4567: CALL_OW 6
// Say ( Bor , DB-BaseAccept-Bor-1 ) ;
4571: LD_LOC 6
4575: PPUSH
4576: LD_STRING DB-BaseAccept-Bor-1
4578: PPUSH
4579: CALL_OW 88
// if first then
4583: LD_VAR 0 1
4587: IFFALSE 4603
// Say ( Bor , DB-BaseAccept-Bor-1a ) else
4589: LD_LOC 6
4593: PPUSH
4594: LD_STRING DB-BaseAccept-Bor-1a
4596: PPUSH
4597: CALL_OW 88
4601: GO 4615
// Say ( Bor , DB-BaseAccept-Bor-1b ) ;
4603: LD_LOC 6
4607: PPUSH
4608: LD_STRING DB-BaseAccept-Bor-1b
4610: PPUSH
4611: CALL_OW 88
// DialogueOff ;
4615: CALL_OW 7
// end ;
4619: LD_VAR 0 2
4623: RET
// var jeste_nebylo ; every 0 0$2 trigger IsInArea ( Bur , c_base ) and ai_s [ 1 ] <> ai_s [ 4 ] do
4624: LD_LOC 2
4628: PPUSH
4629: LD_INT 23
4631: PPUSH
4632: CALL_OW 308
4636: PUSH
4637: LD_EXP 23
4641: PUSH
4642: LD_INT 1
4644: ARRAY
4645: PUSH
4646: LD_EXP 23
4650: PUSH
4651: LD_INT 4
4653: ARRAY
4654: NONEQUAL
4655: AND
4656: IFFALSE 4753
4658: GO 4660
4660: DISABLE
// begin jeste_nebylo := [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
4661: LD_ADDR_LOC 12
4665: PUSH
4666: LD_INT 1
4668: PUSH
4669: LD_INT 2
4671: PUSH
4672: LD_INT 3
4674: PUSH
4675: LD_INT 4
4677: PUSH
4678: LD_INT 5
4680: PUSH
4681: LD_INT 6
4683: PUSH
4684: EMPTY
4685: LIST
4686: LIST
4687: LIST
4688: LIST
4689: LIST
4690: LIST
4691: ST_TO_ADDR
// DC_BaseContact ;
4692: CALL 5434 0 0
// if otazky then
4696: CALL 4873 0 0
4700: IFFALSE 4753
// if not ai_s [ 3 ] in your_bases then
4702: LD_EXP 23
4706: PUSH
4707: LD_INT 3
4709: ARRAY
4710: PUSH
4711: LD_EXP 18
4715: IN
4716: NOT
4717: IFFALSE 4739
// SurrenderBase ( t_persuade , ai_s [ 3 ] ) else
4719: LD_EXP 3
4723: PPUSH
4724: LD_EXP 23
4728: PUSH
4729: LD_INT 3
4731: ARRAY
4732: PPUSH
4733: CALL 30255 0 2
4737: GO 4753
// begin DQrML_Wrong ;
4739: CALL 6774 0 0
// wait ( 0 0$30 ) ;
4743: LD_INT 1050
4745: PPUSH
4746: CALL_OW 67
// enable ( 11 ) ;
4750: LD_INT 11
4752: ENABLE_MARKED
// end ; end ;
4753: END
// every 0 0$2 trigger IsInArea ( Bur , c_base ) marked 11 do
4754: LD_LOC 2
4758: PPUSH
4759: LD_INT 23
4761: PPUSH
4762: CALL_OW 308
4766: IFFALSE 4799
4768: GO 4770
4770: DISABLE
// begin if not otazky then
4771: CALL 4873 0 0
4775: NOT
4776: IFFALSE 4781
// enable else
4778: ENABLE
4779: GO 4799
// SurrenderBase ( t_intimidate , ai_s [ 2 ] ) ;
4781: LD_EXP 2
4785: PPUSH
4786: LD_EXP 23
4790: PUSH
4791: LD_INT 2
4793: ARRAY
4794: PPUSH
4795: CALL 30255 0 2
// end ;
4799: END
// every 0 0$2 trigger humans [ 3 ] <= 2 and ai_s [ 1 ] <> ai_s [ 4 ] do
4800: LD_EXP 76
4804: PUSH
4805: LD_INT 3
4807: ARRAY
4808: PUSH
4809: LD_INT 2
4811: LESSEQUAL
4812: PUSH
4813: LD_EXP 23
4817: PUSH
4818: LD_INT 1
4820: ARRAY
4821: PUSH
4822: LD_EXP 23
4826: PUSH
4827: LD_INT 4
4829: ARRAY
4830: NONEQUAL
4831: AND
4832: IFFALSE 4872
4834: GO 4836
4836: DISABLE
// begin if not ai_s [ 3 ] in your_bases then
4837: LD_EXP 23
4841: PUSH
4842: LD_INT 3
4844: ARRAY
4845: PUSH
4846: LD_EXP 18
4850: IN
4851: NOT
4852: IFFALSE 4872
// SurrenderBase ( t_killbeat , ai_s [ 3 ] ) ;
4854: LD_EXP 6
4858: PPUSH
4859: LD_EXP 23
4863: PUSH
4864: LD_INT 3
4866: ARRAY
4867: PPUSH
4868: CALL 30255 0 2
// end ;
4872: END
// function otazky ; var qb , qg , q ; begin
4873: LD_INT 0
4875: PPUSH
4876: PPUSH
4877: PPUSH
4878: PPUSH
// DC_BaseQuestion ;
4879: CALL 5462 0 0
// qb := 0 ;
4883: LD_ADDR_VAR 0 2
4887: PUSH
4888: LD_INT 0
4890: ST_TO_ADDR
// qg := 0 ;
4891: LD_ADDR_VAR 0 3
4895: PUSH
4896: LD_INT 0
4898: ST_TO_ADDR
// q := 0 ;
4899: LD_ADDR_VAR 0 4
4903: PUSH
4904: LD_INT 0
4906: ST_TO_ADDR
// while [ ( qb <= 2 ) , ( qb <= 1 ) , ( qb <= 0 ) ] [ difficulty ] and jeste_nebylo do
4907: LD_VAR 0 2
4911: PUSH
4912: LD_INT 2
4914: LESSEQUAL
4915: PUSH
4916: LD_VAR 0 2
4920: PUSH
4921: LD_INT 1
4923: LESSEQUAL
4924: PUSH
4925: LD_VAR 0 2
4929: PUSH
4930: LD_INT 0
4932: LESSEQUAL
4933: PUSH
4934: EMPTY
4935: LIST
4936: LIST
4937: LIST
4938: PUSH
4939: LD_OWVAR 67
4943: ARRAY
4944: PUSH
4945: LD_LOC 12
4949: AND
4950: IFFALSE 5372
// begin q := q + 1 ;
4952: LD_ADDR_VAR 0 4
4956: PUSH
4957: LD_VAR 0 4
4961: PUSH
4962: LD_INT 1
4964: PLUS
4965: ST_TO_ADDR
// case jeste_nebylo [ Rand ( 1 , jeste_nebylo ) ] of 1 :
4966: LD_LOC 12
4970: PUSH
4971: LD_INT 1
4973: PPUSH
4974: LD_LOC 12
4978: PPUSH
4979: CALL_OW 12
4983: ARRAY
4984: PUSH
4985: LD_INT 1
4987: DOUBLE
4988: EQUAL
4989: IFTRUE 4993
4991: GO 5049
4993: POP
// begin if QML1 then
4994: CALL 5490 0 0
4998: IFFALSE 5016
// qg := qg + 1 else
5000: LD_ADDR_VAR 0 3
5004: PUSH
5005: LD_VAR 0 3
5009: PUSH
5010: LD_INT 1
5012: PLUS
5013: ST_TO_ADDR
5014: GO 5030
// qb := qb + 1 ;
5016: LD_ADDR_VAR 0 2
5020: PUSH
5021: LD_VAR 0 2
5025: PUSH
5026: LD_INT 1
5028: PLUS
5029: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 1 ] ;
5030: LD_ADDR_LOC 12
5034: PUSH
5035: LD_LOC 12
5039: PUSH
5040: LD_INT 1
5042: PUSH
5043: EMPTY
5044: LIST
5045: DIFF
5046: ST_TO_ADDR
// end ; 2 :
5047: GO 5370
5049: LD_INT 2
5051: DOUBLE
5052: EQUAL
5053: IFTRUE 5057
5055: GO 5113
5057: POP
// begin if QML2 then
5058: CALL 5694 0 0
5062: IFFALSE 5080
// qg := qg + 1 else
5064: LD_ADDR_VAR 0 3
5068: PUSH
5069: LD_VAR 0 3
5073: PUSH
5074: LD_INT 1
5076: PLUS
5077: ST_TO_ADDR
5078: GO 5094
// qb := qb + 1 ;
5080: LD_ADDR_VAR 0 2
5084: PUSH
5085: LD_VAR 0 2
5089: PUSH
5090: LD_INT 1
5092: PLUS
5093: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 2 ] ;
5094: LD_ADDR_LOC 12
5098: PUSH
5099: LD_LOC 12
5103: PUSH
5104: LD_INT 2
5106: PUSH
5107: EMPTY
5108: LIST
5109: DIFF
5110: ST_TO_ADDR
// end ; 3 :
5111: GO 5370
5113: LD_INT 3
5115: DOUBLE
5116: EQUAL
5117: IFTRUE 5121
5119: GO 5177
5121: POP
// begin if QML3 then
5122: CALL 5898 0 0
5126: IFFALSE 5144
// qg := qg + 1 else
5128: LD_ADDR_VAR 0 3
5132: PUSH
5133: LD_VAR 0 3
5137: PUSH
5138: LD_INT 1
5140: PLUS
5141: ST_TO_ADDR
5142: GO 5158
// qb := qb + 1 ;
5144: LD_ADDR_VAR 0 2
5148: PUSH
5149: LD_VAR 0 2
5153: PUSH
5154: LD_INT 1
5156: PLUS
5157: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 3 ] ;
5158: LD_ADDR_LOC 12
5162: PUSH
5163: LD_LOC 12
5167: PUSH
5168: LD_INT 3
5170: PUSH
5171: EMPTY
5172: LIST
5173: DIFF
5174: ST_TO_ADDR
// end ; 4 :
5175: GO 5370
5177: LD_INT 4
5179: DOUBLE
5180: EQUAL
5181: IFTRUE 5185
5183: GO 5241
5185: POP
// begin if QML4 then
5186: CALL 6102 0 0
5190: IFFALSE 5208
// qg := qg + 1 else
5192: LD_ADDR_VAR 0 3
5196: PUSH
5197: LD_VAR 0 3
5201: PUSH
5202: LD_INT 1
5204: PLUS
5205: ST_TO_ADDR
5206: GO 5222
// qb := qb + 1 ;
5208: LD_ADDR_VAR 0 2
5212: PUSH
5213: LD_VAR 0 2
5217: PUSH
5218: LD_INT 1
5220: PLUS
5221: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 4 ] ;
5222: LD_ADDR_LOC 12
5226: PUSH
5227: LD_LOC 12
5231: PUSH
5232: LD_INT 4
5234: PUSH
5235: EMPTY
5236: LIST
5237: DIFF
5238: ST_TO_ADDR
// end ; 5 :
5239: GO 5370
5241: LD_INT 5
5243: DOUBLE
5244: EQUAL
5245: IFTRUE 5249
5247: GO 5305
5249: POP
// begin if QML5 then
5250: CALL 6306 0 0
5254: IFFALSE 5272
// qg := qg + 1 else
5256: LD_ADDR_VAR 0 3
5260: PUSH
5261: LD_VAR 0 3
5265: PUSH
5266: LD_INT 1
5268: PLUS
5269: ST_TO_ADDR
5270: GO 5286
// qb := qb + 1 ;
5272: LD_ADDR_VAR 0 2
5276: PUSH
5277: LD_VAR 0 2
5281: PUSH
5282: LD_INT 1
5284: PLUS
5285: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 5 ] ;
5286: LD_ADDR_LOC 12
5290: PUSH
5291: LD_LOC 12
5295: PUSH
5296: LD_INT 5
5298: PUSH
5299: EMPTY
5300: LIST
5301: DIFF
5302: ST_TO_ADDR
// end ; 6 :
5303: GO 5370
5305: LD_INT 6
5307: DOUBLE
5308: EQUAL
5309: IFTRUE 5313
5311: GO 5369
5313: POP
// begin if QML6 then
5314: CALL 6510 0 0
5318: IFFALSE 5336
// qg := qg + 1 else
5320: LD_ADDR_VAR 0 3
5324: PUSH
5325: LD_VAR 0 3
5329: PUSH
5330: LD_INT 1
5332: PLUS
5333: ST_TO_ADDR
5334: GO 5350
// qb := qb + 1 ;
5336: LD_ADDR_VAR 0 2
5340: PUSH
5341: LD_VAR 0 2
5345: PUSH
5346: LD_INT 1
5348: PLUS
5349: ST_TO_ADDR
// jeste_nebylo := jeste_nebylo diff [ 6 ] ;
5350: LD_ADDR_LOC 12
5354: PUSH
5355: LD_LOC 12
5359: PUSH
5360: LD_INT 6
5362: PUSH
5363: EMPTY
5364: LIST
5365: DIFF
5366: ST_TO_ADDR
// end ; end ;
5367: GO 5370
5369: POP
// end ;
5370: GO 4907
// if [ ( qb <= 2 ) , ( qb <= 1 ) , ( qb <= 0 ) ] [ difficulty ] then
5372: LD_VAR 0 2
5376: PUSH
5377: LD_INT 2
5379: LESSEQUAL
5380: PUSH
5381: LD_VAR 0 2
5385: PUSH
5386: LD_INT 1
5388: LESSEQUAL
5389: PUSH
5390: LD_VAR 0 2
5394: PUSH
5395: LD_INT 0
5397: LESSEQUAL
5398: PUSH
5399: EMPTY
5400: LIST
5401: LIST
5402: LIST
5403: PUSH
5404: LD_OWVAR 67
5408: ARRAY
5409: IFFALSE 5421
// result := true else
5411: LD_ADDR_VAR 0 1
5415: PUSH
5416: LD_INT 1
5418: ST_TO_ADDR
5419: GO 5429
// result := false ;
5421: LD_ADDR_VAR 0 1
5425: PUSH
5426: LD_INT 0
5428: ST_TO_ADDR
// end ;
5429: LD_VAR 0 1
5433: RET
// export function DC_BaseContact ; begin
5434: LD_INT 0
5436: PPUSH
// DialogueOn ;
5437: CALL_OW 6
// Say ( Tsr , DC-BaseContact-Tsr-1 ) ;
5441: LD_LOC 7
5445: PPUSH
5446: LD_STRING DC-BaseContact-Tsr-1
5448: PPUSH
5449: CALL_OW 88
// DialogueOff ;
5453: CALL_OW 7
// end ;
5457: LD_VAR 0 1
5461: RET
// export function DC_BaseQuestion ; begin
5462: LD_INT 0
5464: PPUSH
// DialogueOn ;
5465: CALL_OW 6
// Say ( Tsr , DC-BaseQuestion-Tsr-1 ) ;
5469: LD_LOC 7
5473: PPUSH
5474: LD_STRING DC-BaseQuestion-Tsr-1
5476: PPUSH
5477: CALL_OW 88
// DialogueOff ;
5481: CALL_OW 7
// end ;
5485: LD_VAR 0 1
5489: RET
// function QML1 ; var mozn , qr , a , bad ; begin
5490: LD_INT 0
5492: PPUSH
5493: PPUSH
5494: PPUSH
5495: PPUSH
5496: PPUSH
// bad := [ 1 , 3 ] ;
5497: LD_ADDR_VAR 0 5
5501: PUSH
5502: LD_INT 1
5504: PUSH
5505: LD_INT 3
5507: PUSH
5508: EMPTY
5509: LIST
5510: LIST
5511: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
5512: LD_ADDR_VAR 0 2
5516: PUSH
5517: LD_INT 1
5519: PUSH
5520: LD_INT 2
5522: PUSH
5523: LD_INT 3
5525: PUSH
5526: EMPTY
5527: LIST
5528: LIST
5529: LIST
5530: ST_TO_ADDR
// if IsOk ( Gleb ) then
5531: LD_EXP 50
5535: PPUSH
5536: CALL_OW 302
5540: IFFALSE 5559
// mozn := mozn ^ [ 4 ] ;
5542: LD_ADDR_VAR 0 2
5546: PUSH
5547: LD_VAR 0 2
5551: PUSH
5552: LD_INT 4
5554: PUSH
5555: EMPTY
5556: LIST
5557: ADD
5558: ST_TO_ADDR
// qr := SelectiveQuery ( QML1 , mozn ) ;
5559: LD_ADDR_VAR 0 3
5563: PUSH
5564: LD_STRING QML1
5566: PPUSH
5567: LD_VAR 0 2
5571: PPUSH
5572: CALL_OW 98
5576: ST_TO_ADDR
// if qr = 4 then
5577: LD_VAR 0 3
5581: PUSH
5582: LD_INT 4
5584: EQUAL
5585: IFFALSE 5659
// begin a := bad [ Rand ( 1 , 2 ) ] ;
5587: LD_ADDR_VAR 0 4
5591: PUSH
5592: LD_VAR 0 5
5596: PUSH
5597: LD_INT 1
5599: PPUSH
5600: LD_INT 2
5602: PPUSH
5603: CALL_OW 12
5607: ARRAY
5608: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
5609: LD_VAR 0 4
5613: PPUSH
5614: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
5618: LD_ADDR_VAR 0 2
5622: PUSH
5623: LD_VAR 0 2
5627: PUSH
5628: LD_VAR 0 4
5632: PUSH
5633: LD_INT 4
5635: PUSH
5636: EMPTY
5637: LIST
5638: LIST
5639: DIFF
5640: ST_TO_ADDR
// qr := SelectiveQuery ( QML1 , mozn ) ;
5641: LD_ADDR_VAR 0 3
5645: PUSH
5646: LD_STRING QML1
5648: PPUSH
5649: LD_VAR 0 2
5653: PPUSH
5654: CALL_OW 98
5658: ST_TO_ADDR
// end ; if qr in bad then
5659: LD_VAR 0 3
5663: PUSH
5664: LD_VAR 0 5
5668: IN
5669: IFFALSE 5681
// result := false else
5671: LD_ADDR_VAR 0 1
5675: PUSH
5676: LD_INT 0
5678: ST_TO_ADDR
5679: GO 5689
// result := true ;
5681: LD_ADDR_VAR 0 1
5685: PUSH
5686: LD_INT 1
5688: ST_TO_ADDR
// end ;
5689: LD_VAR 0 1
5693: RET
// function QML2 ; var mozn , qr , a , bad ; begin
5694: LD_INT 0
5696: PPUSH
5697: PPUSH
5698: PPUSH
5699: PPUSH
5700: PPUSH
// bad := [ 2 , 3 ] ;
5701: LD_ADDR_VAR 0 5
5705: PUSH
5706: LD_INT 2
5708: PUSH
5709: LD_INT 3
5711: PUSH
5712: EMPTY
5713: LIST
5714: LIST
5715: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
5716: LD_ADDR_VAR 0 2
5720: PUSH
5721: LD_INT 1
5723: PUSH
5724: LD_INT 2
5726: PUSH
5727: LD_INT 3
5729: PUSH
5730: EMPTY
5731: LIST
5732: LIST
5733: LIST
5734: ST_TO_ADDR
// if IsOk ( Gleb ) then
5735: LD_EXP 50
5739: PPUSH
5740: CALL_OW 302
5744: IFFALSE 5763
// mozn := mozn ^ [ 4 ] ;
5746: LD_ADDR_VAR 0 2
5750: PUSH
5751: LD_VAR 0 2
5755: PUSH
5756: LD_INT 4
5758: PUSH
5759: EMPTY
5760: LIST
5761: ADD
5762: ST_TO_ADDR
// qr := SelectiveQuery ( QML2 , mozn ) ;
5763: LD_ADDR_VAR 0 3
5767: PUSH
5768: LD_STRING QML2
5770: PPUSH
5771: LD_VAR 0 2
5775: PPUSH
5776: CALL_OW 98
5780: ST_TO_ADDR
// if qr = 4 then
5781: LD_VAR 0 3
5785: PUSH
5786: LD_INT 4
5788: EQUAL
5789: IFFALSE 5863
// begin a := bad [ Rand ( 1 , 2 ) ] ;
5791: LD_ADDR_VAR 0 4
5795: PUSH
5796: LD_VAR 0 5
5800: PUSH
5801: LD_INT 1
5803: PPUSH
5804: LD_INT 2
5806: PPUSH
5807: CALL_OW 12
5811: ARRAY
5812: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
5813: LD_VAR 0 4
5817: PPUSH
5818: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
5822: LD_ADDR_VAR 0 2
5826: PUSH
5827: LD_VAR 0 2
5831: PUSH
5832: LD_VAR 0 4
5836: PUSH
5837: LD_INT 4
5839: PUSH
5840: EMPTY
5841: LIST
5842: LIST
5843: DIFF
5844: ST_TO_ADDR
// qr := SelectiveQuery ( QML2 , mozn ) ;
5845: LD_ADDR_VAR 0 3
5849: PUSH
5850: LD_STRING QML2
5852: PPUSH
5853: LD_VAR 0 2
5857: PPUSH
5858: CALL_OW 98
5862: ST_TO_ADDR
// end ; if qr in bad then
5863: LD_VAR 0 3
5867: PUSH
5868: LD_VAR 0 5
5872: IN
5873: IFFALSE 5885
// result := false else
5875: LD_ADDR_VAR 0 1
5879: PUSH
5880: LD_INT 0
5882: ST_TO_ADDR
5883: GO 5893
// result := true ;
5885: LD_ADDR_VAR 0 1
5889: PUSH
5890: LD_INT 1
5892: ST_TO_ADDR
// end ;
5893: LD_VAR 0 1
5897: RET
// function QML3 ; var mozn , qr , a , bad ; begin
5898: LD_INT 0
5900: PPUSH
5901: PPUSH
5902: PPUSH
5903: PPUSH
5904: PPUSH
// bad := [ 1 , 3 ] ;
5905: LD_ADDR_VAR 0 5
5909: PUSH
5910: LD_INT 1
5912: PUSH
5913: LD_INT 3
5915: PUSH
5916: EMPTY
5917: LIST
5918: LIST
5919: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
5920: LD_ADDR_VAR 0 2
5924: PUSH
5925: LD_INT 1
5927: PUSH
5928: LD_INT 2
5930: PUSH
5931: LD_INT 3
5933: PUSH
5934: EMPTY
5935: LIST
5936: LIST
5937: LIST
5938: ST_TO_ADDR
// if IsOk ( Gleb ) then
5939: LD_EXP 50
5943: PPUSH
5944: CALL_OW 302
5948: IFFALSE 5967
// mozn := mozn ^ [ 4 ] ;
5950: LD_ADDR_VAR 0 2
5954: PUSH
5955: LD_VAR 0 2
5959: PUSH
5960: LD_INT 4
5962: PUSH
5963: EMPTY
5964: LIST
5965: ADD
5966: ST_TO_ADDR
// qr := SelectiveQuery ( QML3 , mozn ) ;
5967: LD_ADDR_VAR 0 3
5971: PUSH
5972: LD_STRING QML3
5974: PPUSH
5975: LD_VAR 0 2
5979: PPUSH
5980: CALL_OW 98
5984: ST_TO_ADDR
// if qr = 4 then
5985: LD_VAR 0 3
5989: PUSH
5990: LD_INT 4
5992: EQUAL
5993: IFFALSE 6067
// begin a := bad [ Rand ( 1 , 2 ) ] ;
5995: LD_ADDR_VAR 0 4
5999: PUSH
6000: LD_VAR 0 5
6004: PUSH
6005: LD_INT 1
6007: PPUSH
6008: LD_INT 2
6010: PPUSH
6011: CALL_OW 12
6015: ARRAY
6016: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
6017: LD_VAR 0 4
6021: PPUSH
6022: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
6026: LD_ADDR_VAR 0 2
6030: PUSH
6031: LD_VAR 0 2
6035: PUSH
6036: LD_VAR 0 4
6040: PUSH
6041: LD_INT 4
6043: PUSH
6044: EMPTY
6045: LIST
6046: LIST
6047: DIFF
6048: ST_TO_ADDR
// qr := SelectiveQuery ( QML3 , mozn ) ;
6049: LD_ADDR_VAR 0 3
6053: PUSH
6054: LD_STRING QML3
6056: PPUSH
6057: LD_VAR 0 2
6061: PPUSH
6062: CALL_OW 98
6066: ST_TO_ADDR
// end ; if qr in bad then
6067: LD_VAR 0 3
6071: PUSH
6072: LD_VAR 0 5
6076: IN
6077: IFFALSE 6089
// result := false else
6079: LD_ADDR_VAR 0 1
6083: PUSH
6084: LD_INT 0
6086: ST_TO_ADDR
6087: GO 6097
// result := true ;
6089: LD_ADDR_VAR 0 1
6093: PUSH
6094: LD_INT 1
6096: ST_TO_ADDR
// end ;
6097: LD_VAR 0 1
6101: RET
// function QML4 ; var mozn , qr , a , bad ; begin
6102: LD_INT 0
6104: PPUSH
6105: PPUSH
6106: PPUSH
6107: PPUSH
6108: PPUSH
// bad := [ 1 , 2 ] ;
6109: LD_ADDR_VAR 0 5
6113: PUSH
6114: LD_INT 1
6116: PUSH
6117: LD_INT 2
6119: PUSH
6120: EMPTY
6121: LIST
6122: LIST
6123: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
6124: LD_ADDR_VAR 0 2
6128: PUSH
6129: LD_INT 1
6131: PUSH
6132: LD_INT 2
6134: PUSH
6135: LD_INT 3
6137: PUSH
6138: EMPTY
6139: LIST
6140: LIST
6141: LIST
6142: ST_TO_ADDR
// if IsOk ( Gleb ) then
6143: LD_EXP 50
6147: PPUSH
6148: CALL_OW 302
6152: IFFALSE 6171
// mozn := mozn ^ [ 4 ] ;
6154: LD_ADDR_VAR 0 2
6158: PUSH
6159: LD_VAR 0 2
6163: PUSH
6164: LD_INT 4
6166: PUSH
6167: EMPTY
6168: LIST
6169: ADD
6170: ST_TO_ADDR
// qr := SelectiveQuery ( QML4 , mozn ) ;
6171: LD_ADDR_VAR 0 3
6175: PUSH
6176: LD_STRING QML4
6178: PPUSH
6179: LD_VAR 0 2
6183: PPUSH
6184: CALL_OW 98
6188: ST_TO_ADDR
// if qr = 4 then
6189: LD_VAR 0 3
6193: PUSH
6194: LD_INT 4
6196: EQUAL
6197: IFFALSE 6271
// begin a := bad [ Rand ( 1 , 2 ) ] ;
6199: LD_ADDR_VAR 0 4
6203: PUSH
6204: LD_VAR 0 5
6208: PUSH
6209: LD_INT 1
6211: PPUSH
6212: LD_INT 2
6214: PPUSH
6215: CALL_OW 12
6219: ARRAY
6220: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
6221: LD_VAR 0 4
6225: PPUSH
6226: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
6230: LD_ADDR_VAR 0 2
6234: PUSH
6235: LD_VAR 0 2
6239: PUSH
6240: LD_VAR 0 4
6244: PUSH
6245: LD_INT 4
6247: PUSH
6248: EMPTY
6249: LIST
6250: LIST
6251: DIFF
6252: ST_TO_ADDR
// qr := SelectiveQuery ( QML4 , mozn ) ;
6253: LD_ADDR_VAR 0 3
6257: PUSH
6258: LD_STRING QML4
6260: PPUSH
6261: LD_VAR 0 2
6265: PPUSH
6266: CALL_OW 98
6270: ST_TO_ADDR
// end ; if qr in bad then
6271: LD_VAR 0 3
6275: PUSH
6276: LD_VAR 0 5
6280: IN
6281: IFFALSE 6293
// result := false else
6283: LD_ADDR_VAR 0 1
6287: PUSH
6288: LD_INT 0
6290: ST_TO_ADDR
6291: GO 6301
// result := true ;
6293: LD_ADDR_VAR 0 1
6297: PUSH
6298: LD_INT 1
6300: ST_TO_ADDR
// end ;
6301: LD_VAR 0 1
6305: RET
// function QML5 ; var mozn , qr , a , bad ; begin
6306: LD_INT 0
6308: PPUSH
6309: PPUSH
6310: PPUSH
6311: PPUSH
6312: PPUSH
// bad := [ 1 , 3 ] ;
6313: LD_ADDR_VAR 0 5
6317: PUSH
6318: LD_INT 1
6320: PUSH
6321: LD_INT 3
6323: PUSH
6324: EMPTY
6325: LIST
6326: LIST
6327: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
6328: LD_ADDR_VAR 0 2
6332: PUSH
6333: LD_INT 1
6335: PUSH
6336: LD_INT 2
6338: PUSH
6339: LD_INT 3
6341: PUSH
6342: EMPTY
6343: LIST
6344: LIST
6345: LIST
6346: ST_TO_ADDR
// if IsOk ( Gleb ) then
6347: LD_EXP 50
6351: PPUSH
6352: CALL_OW 302
6356: IFFALSE 6375
// mozn := mozn ^ [ 4 ] ;
6358: LD_ADDR_VAR 0 2
6362: PUSH
6363: LD_VAR 0 2
6367: PUSH
6368: LD_INT 4
6370: PUSH
6371: EMPTY
6372: LIST
6373: ADD
6374: ST_TO_ADDR
// qr := SelectiveQuery ( QML5 , mozn ) ;
6375: LD_ADDR_VAR 0 3
6379: PUSH
6380: LD_STRING QML5
6382: PPUSH
6383: LD_VAR 0 2
6387: PPUSH
6388: CALL_OW 98
6392: ST_TO_ADDR
// if qr = 4 then
6393: LD_VAR 0 3
6397: PUSH
6398: LD_INT 4
6400: EQUAL
6401: IFFALSE 6475
// begin a := bad [ Rand ( 1 , 2 ) ] ;
6403: LD_ADDR_VAR 0 4
6407: PUSH
6408: LD_VAR 0 5
6412: PUSH
6413: LD_INT 1
6415: PPUSH
6416: LD_INT 2
6418: PPUSH
6419: CALL_OW 12
6423: ARRAY
6424: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
6425: LD_VAR 0 4
6429: PPUSH
6430: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
6434: LD_ADDR_VAR 0 2
6438: PUSH
6439: LD_VAR 0 2
6443: PUSH
6444: LD_VAR 0 4
6448: PUSH
6449: LD_INT 4
6451: PUSH
6452: EMPTY
6453: LIST
6454: LIST
6455: DIFF
6456: ST_TO_ADDR
// qr := SelectiveQuery ( QML5 , mozn ) ;
6457: LD_ADDR_VAR 0 3
6461: PUSH
6462: LD_STRING QML5
6464: PPUSH
6465: LD_VAR 0 2
6469: PPUSH
6470: CALL_OW 98
6474: ST_TO_ADDR
// end ; if qr in bad then
6475: LD_VAR 0 3
6479: PUSH
6480: LD_VAR 0 5
6484: IN
6485: IFFALSE 6497
// result := false else
6487: LD_ADDR_VAR 0 1
6491: PUSH
6492: LD_INT 0
6494: ST_TO_ADDR
6495: GO 6505
// result := true ;
6497: LD_ADDR_VAR 0 1
6501: PUSH
6502: LD_INT 1
6504: ST_TO_ADDR
// end ;
6505: LD_VAR 0 1
6509: RET
// function QML6 ; var mozn , qr , a , bad ; begin
6510: LD_INT 0
6512: PPUSH
6513: PPUSH
6514: PPUSH
6515: PPUSH
6516: PPUSH
// bad := [ 2 , 3 ] ;
6517: LD_ADDR_VAR 0 5
6521: PUSH
6522: LD_INT 2
6524: PUSH
6525: LD_INT 3
6527: PUSH
6528: EMPTY
6529: LIST
6530: LIST
6531: ST_TO_ADDR
// mozn := [ 1 , 2 , 3 ] ;
6532: LD_ADDR_VAR 0 2
6536: PUSH
6537: LD_INT 1
6539: PUSH
6540: LD_INT 2
6542: PUSH
6543: LD_INT 3
6545: PUSH
6546: EMPTY
6547: LIST
6548: LIST
6549: LIST
6550: ST_TO_ADDR
// if IsOk ( Gleb ) then
6551: LD_EXP 50
6555: PPUSH
6556: CALL_OW 302
6560: IFFALSE 6579
// mozn := mozn ^ [ 4 ] ;
6562: LD_ADDR_VAR 0 2
6566: PUSH
6567: LD_VAR 0 2
6571: PUSH
6572: LD_INT 4
6574: PUSH
6575: EMPTY
6576: LIST
6577: ADD
6578: ST_TO_ADDR
// qr := SelectiveQuery ( QML6 , mozn ) ;
6579: LD_ADDR_VAR 0 3
6583: PUSH
6584: LD_STRING QML6
6586: PPUSH
6587: LD_VAR 0 2
6591: PPUSH
6592: CALL_OW 98
6596: ST_TO_ADDR
// if qr = 4 then
6597: LD_VAR 0 3
6601: PUSH
6602: LD_INT 4
6604: EQUAL
6605: IFFALSE 6679
// begin a := bad [ Rand ( 1 , 2 ) ] ;
6607: LD_ADDR_VAR 0 4
6611: PUSH
6612: LD_VAR 0 5
6616: PUSH
6617: LD_INT 1
6619: PPUSH
6620: LD_INT 2
6622: PPUSH
6623: CALL_OW 12
6627: ARRAY
6628: ST_TO_ADDR
// DQrML_Gleb ( a ) ;
6629: LD_VAR 0 4
6633: PPUSH
6634: CALL 6802 0 1
// mozn := mozn diff [ a , 4 ] ;
6638: LD_ADDR_VAR 0 2
6642: PUSH
6643: LD_VAR 0 2
6647: PUSH
6648: LD_VAR 0 4
6652: PUSH
6653: LD_INT 4
6655: PUSH
6656: EMPTY
6657: LIST
6658: LIST
6659: DIFF
6660: ST_TO_ADDR
// qr := SelectiveQuery ( QML6 , mozn ) ;
6661: LD_ADDR_VAR 0 3
6665: PUSH
6666: LD_STRING QML6
6668: PPUSH
6669: LD_VAR 0 2
6673: PPUSH
6674: CALL_OW 98
6678: ST_TO_ADDR
// end ; if qr in bad then
6679: LD_VAR 0 3
6683: PUSH
6684: LD_VAR 0 5
6688: IN
6689: IFFALSE 6701
// result := false else
6691: LD_ADDR_VAR 0 1
6695: PUSH
6696: LD_INT 0
6698: ST_TO_ADDR
6699: GO 6709
// result := true ;
6701: LD_ADDR_VAR 0 1
6705: PUSH
6706: LD_INT 1
6708: ST_TO_ADDR
// end ;
6709: LD_VAR 0 1
6713: RET
// export function DQrML_Right ( first ) ; begin
6714: LD_INT 0
6716: PPUSH
// DialogueOn ;
6717: CALL_OW 6
// Say ( Tsr , DQrML#Right-Tsr-1 ) ;
6721: LD_LOC 7
6725: PPUSH
6726: LD_STRING DQrML#Right-Tsr-1
6728: PPUSH
6729: CALL_OW 88
// if first then
6733: LD_VAR 0 1
6737: IFFALSE 6753
// Say ( Tsr , DQrML#Right-Tsr-1a ) else
6739: LD_LOC 7
6743: PPUSH
6744: LD_STRING DQrML#Right-Tsr-1a
6746: PPUSH
6747: CALL_OW 88
6751: GO 6765
// Say ( Tsr , DQrML#Right-Tsr-1b ) ;
6753: LD_LOC 7
6757: PPUSH
6758: LD_STRING DQrML#Right-Tsr-1b
6760: PPUSH
6761: CALL_OW 88
// DialogueOff ;
6765: CALL_OW 7
// end ;
6769: LD_VAR 0 2
6773: RET
// export function DQrML_Wrong ; begin
6774: LD_INT 0
6776: PPUSH
// DialogueOn ;
6777: CALL_OW 6
// Say ( Tsr , DQrML#Wrong-Tsr-1 ) ;
6781: LD_LOC 7
6785: PPUSH
6786: LD_STRING DQrML#Wrong-Tsr-1
6788: PPUSH
6789: CALL_OW 88
// DialogueOff ;
6793: CALL_OW 7
// end ;
6797: LD_VAR 0 1
6801: RET
// function DQrML_Gleb ( num ) ; begin
6802: LD_INT 0
6804: PPUSH
// DialogueOn ;
6805: CALL_OW 6
// case num of 1 :
6809: LD_VAR 0 1
6813: PUSH
6814: LD_INT 1
6816: DOUBLE
6817: EQUAL
6818: IFTRUE 6822
6820: GO 6837
6822: POP
// Say ( Glb , DQrML#Gleb-Glb-1 ) ; 2 :
6823: LD_LOC 10
6827: PPUSH
6828: LD_STRING DQrML#Gleb-Glb-1
6830: PPUSH
6831: CALL_OW 88
6835: GO 6884
6837: LD_INT 2
6839: DOUBLE
6840: EQUAL
6841: IFTRUE 6845
6843: GO 6860
6845: POP
// Say ( Glb , DQrML#Gleb-Glb-1a ) ; 3 :
6846: LD_LOC 10
6850: PPUSH
6851: LD_STRING DQrML#Gleb-Glb-1a
6853: PPUSH
6854: CALL_OW 88
6858: GO 6884
6860: LD_INT 3
6862: DOUBLE
6863: EQUAL
6864: IFTRUE 6868
6866: GO 6883
6868: POP
// Say ( Glb , DQrML#Gleb-Glb-1b ) ; end ;
6869: LD_LOC 10
6873: PPUSH
6874: LD_STRING DQrML#Gleb-Glb-1b
6876: PPUSH
6877: CALL_OW 88
6881: GO 6884
6883: POP
// DialogueOff ;
6884: CALL_OW 7
// end ;
6888: LD_VAR 0 2
6892: RET
// export maji_artifact ; every 0 0$2 trigger IsInArea ( Bur , d_base ) and ai_s [ 1 ] <> ai_s [ 4 ] do
6893: LD_LOC 2
6897: PPUSH
6898: LD_INT 22
6900: PPUSH
6901: CALL_OW 308
6905: PUSH
6906: LD_EXP 23
6910: PUSH
6911: LD_INT 1
6913: ARRAY
6914: PUSH
6915: LD_EXP 23
6919: PUSH
6920: LD_INT 4
6922: ARRAY
6923: NONEQUAL
6924: AND
6925: IFFALSE 7015
6927: GO 6929
6929: DISABLE
// begin DD_BaseContact ;
6930: CALL 7182 0 0
// if maji_artifact then
6934: LD_EXP 39
6938: IFFALSE 6977
// begin if not ai_s [ 4 ] in your_bases then
6940: LD_EXP 23
6944: PUSH
6945: LD_INT 4
6947: ARRAY
6948: PUSH
6949: LD_EXP 18
6953: IN
6954: NOT
6955: IFFALSE 6975
// begin SurrenderBase ( t_pay , ai_s [ 4 ] ) end ;
6957: LD_EXP 4
6961: PPUSH
6962: LD_EXP 23
6966: PUSH
6967: LD_INT 4
6969: ARRAY
6970: PPUSH
6971: CALL 30255 0 2
// end else
6975: GO 7012
// begin DD_BaseRefuse1st ;
6977: CALL 7230 0 0
// while IsInArea ( Bur , d_base ) do
6981: LD_LOC 2
6985: PPUSH
6986: LD_INT 22
6988: PPUSH
6989: CALL_OW 308
6993: IFFALSE 7004
// wait ( 0 0$1 ) ;
6995: LD_INT 35
6997: PPUSH
6998: CALL_OW 67
7002: GO 6981
// wait ( 0 0$20 ) ;
7004: LD_INT 700
7006: PPUSH
7007: CALL_OW 67
// enable ;
7011: ENABLE
// end ; enable ( 12 ) ;
7012: LD_INT 12
7014: ENABLE_MARKED
// end ;
7015: END
// every 0 0$2 trigger IsInArea ( Bur , d_base ) and ai_s [ 1 ] <> ai_s [ 4 ] marked 12 do
7016: LD_LOC 2
7020: PPUSH
7021: LD_INT 22
7023: PPUSH
7024: CALL_OW 308
7028: PUSH
7029: LD_EXP 23
7033: PUSH
7034: LD_INT 1
7036: ARRAY
7037: PUSH
7038: LD_EXP 23
7042: PUSH
7043: LD_INT 4
7045: ARRAY
7046: NONEQUAL
7047: AND
7048: IFFALSE 7108
7050: GO 7052
7052: DISABLE
// begin if maji_artifact then
7053: LD_EXP 39
7057: IFFALSE 7096
// begin if not ai_s [ 4 ] in your_bases then
7059: LD_EXP 23
7063: PUSH
7064: LD_INT 4
7066: ARRAY
7067: PUSH
7068: LD_EXP 18
7072: IN
7073: NOT
7074: IFFALSE 7094
// begin SurrenderBase ( t_pay , ai_s [ 4 ] ) end ;
7076: LD_EXP 4
7080: PPUSH
7081: LD_EXP 23
7085: PUSH
7086: LD_INT 4
7088: ARRAY
7089: PPUSH
7090: CALL 30255 0 2
// end else
7094: GO 7108
// begin DD_BaseRefuse ;
7096: CALL 7258 0 0
// wait ( 0 0$20 ) ;
7100: LD_INT 700
7102: PPUSH
7103: CALL_OW 67
// enable ;
7107: ENABLE
// end ; end ;
7108: END
// every 0 0$2 trigger humans [ 4 ] <= 4 and ai_s [ 1 ] <> ai_s [ 4 ] do
7109: LD_EXP 76
7113: PUSH
7114: LD_INT 4
7116: ARRAY
7117: PUSH
7118: LD_INT 4
7120: LESSEQUAL
7121: PUSH
7122: LD_EXP 23
7126: PUSH
7127: LD_INT 1
7129: ARRAY
7130: PUSH
7131: LD_EXP 23
7135: PUSH
7136: LD_INT 4
7138: ARRAY
7139: NONEQUAL
7140: AND
7141: IFFALSE 7181
7143: GO 7145
7145: DISABLE
// begin if not ai_s [ 4 ] in your_bases then
7146: LD_EXP 23
7150: PUSH
7151: LD_INT 4
7153: ARRAY
7154: PUSH
7155: LD_EXP 18
7159: IN
7160: NOT
7161: IFFALSE 7181
// SurrenderBase ( t_killbeat , ai_s [ 4 ] ) ;
7163: LD_EXP 6
7167: PPUSH
7168: LD_EXP 23
7172: PUSH
7173: LD_INT 4
7175: ARRAY
7176: PPUSH
7177: CALL 30255 0 2
// end ;
7181: END
// export kecali_o_artefaktu ; export function DD_BaseContact ; begin
7182: LD_INT 0
7184: PPUSH
// DialogueOn ;
7185: CALL_OW 6
// Say ( Dav , DD-BaseContact-Dav-1 ) ;
7189: LD_LOC 8
7193: PPUSH
7194: LD_STRING DD-BaseContact-Dav-1
7196: PPUSH
7197: CALL_OW 88
// Say ( Bur , DD-BaseContact-Bur-1 ) ;
7201: LD_LOC 2
7205: PPUSH
7206: LD_STRING DD-BaseContact-Bur-1
7208: PPUSH
7209: CALL_OW 88
// kecali_o_artefaktu := true ;
7213: LD_ADDR_EXP 40
7217: PUSH
7218: LD_INT 1
7220: ST_TO_ADDR
// DialogueOff ;
7221: CALL_OW 7
// end ;
7225: LD_VAR 0 1
7229: RET
// export function DD_BaseRefuse1st ; begin
7230: LD_INT 0
7232: PPUSH
// DialogueOn ;
7233: CALL_OW 6
// Say ( Dav , DD-BaseRefuse-Dav-1 ) ;
7237: LD_LOC 8
7241: PPUSH
7242: LD_STRING DD-BaseRefuse-Dav-1
7244: PPUSH
7245: CALL_OW 88
// DialogueOff ;
7249: CALL_OW 7
// end ;
7253: LD_VAR 0 1
7257: RET
// export function DD_BaseRefuse ; begin
7258: LD_INT 0
7260: PPUSH
// Say ( Dav , DD-BaseRefuse-Dav-1 ) ;
7261: LD_LOC 8
7265: PPUSH
7266: LD_STRING DD-BaseRefuse-Dav-1
7268: PPUSH
7269: CALL_OW 88
// end ;
7273: LD_VAR 0 1
7277: RET
// export function DD_BaseAccept ( first ) ; begin
7278: LD_INT 0
7280: PPUSH
// DialogueOn ;
7281: CALL_OW 6
// Say ( Dav , DD-BaseAccept-Dav-1 ) ;
7285: LD_LOC 8
7289: PPUSH
7290: LD_STRING DD-BaseAccept-Dav-1
7292: PPUSH
7293: CALL_OW 88
// if first then
7297: LD_VAR 0 1
7301: IFFALSE 7317
// Say ( Dav , DD-BaseAccept-Dav-1a ) else
7303: LD_LOC 8
7307: PPUSH
7308: LD_STRING DD-BaseAccept-Dav-1a
7310: PPUSH
7311: CALL_OW 88
7315: GO 7329
// Say ( Dav , DD-BaseAccept-Dav-1b ) ;
7317: LD_LOC 8
7321: PPUSH
7322: LD_STRING DD-BaseAccept-Dav-1b
7324: PPUSH
7325: CALL_OW 88
// DialogueOff ;
7329: CALL_OW 7
// end ;
7333: LD_VAR 0 2
7337: RET
// every 0 0$2 trigger IsInArea ( Bur , e_base ) and ai_s [ 1 ] <> ai_s [ 5 ] do
7338: LD_LOC 2
7342: PPUSH
7343: LD_INT 21
7345: PPUSH
7346: CALL_OW 308
7350: PUSH
7351: LD_EXP 23
7355: PUSH
7356: LD_INT 1
7358: ARRAY
7359: PUSH
7360: LD_EXP 23
7364: PUSH
7365: LD_INT 5
7367: ARRAY
7368: NONEQUAL
7369: AND
7370: IFFALSE 7481
7372: GO 7374
7374: DISABLE
// begin DE_BaseContact ;
7375: CALL 7743 0 0
// if UnitFilter ( humans [ 5 ] , [ [ f_ok ] ] ) > 6 then
7379: LD_EXP 76
7383: PUSH
7384: LD_INT 5
7386: ARRAY
7387: PPUSH
7388: LD_INT 50
7390: PUSH
7391: EMPTY
7392: LIST
7393: PUSH
7394: EMPTY
7395: LIST
7396: PPUSH
7397: CALL_OW 72
7401: PUSH
7402: LD_INT 6
7404: GREATER
7405: IFFALSE 7446
// begin DE_BaseRefuse1st ;
7407: CALL 7783 0 0
// while IsInArea ( Bur , e_base ) do
7411: LD_LOC 2
7415: PPUSH
7416: LD_INT 21
7418: PPUSH
7419: CALL_OW 308
7423: IFFALSE 7434
// wait ( 0 0$1 ) ;
7425: LD_INT 35
7427: PPUSH
7428: CALL_OW 67
7432: GO 7411
// wait ( 0 0$20 ) ;
7434: LD_INT 700
7436: PPUSH
7437: CALL_OW 67
// enable ( 115 ) ;
7441: LD_INT 115
7443: ENABLE_MARKED
// end else
7444: GO 7481
// if not ai_s [ 5 ] in your_bases then
7446: LD_EXP 23
7450: PUSH
7451: LD_INT 5
7453: ARRAY
7454: PUSH
7455: LD_EXP 18
7459: IN
7460: NOT
7461: IFFALSE 7481
// SurrenderBase ( t_beat , ai_s [ 5 ] ) ;
7463: LD_EXP 5
7467: PPUSH
7468: LD_EXP 23
7472: PUSH
7473: LD_INT 5
7475: ARRAY
7476: PPUSH
7477: CALL 30255 0 2
// end ;
7481: END
// every 0 0$2 trigger IsInArea ( Bur , e_base ) and ai_s [ 1 ] <> ai_s [ 5 ] marked 115 do
7482: LD_LOC 2
7486: PPUSH
7487: LD_INT 21
7489: PPUSH
7490: CALL_OW 308
7494: PUSH
7495: LD_EXP 23
7499: PUSH
7500: LD_INT 1
7502: ARRAY
7503: PUSH
7504: LD_EXP 23
7508: PUSH
7509: LD_INT 5
7511: ARRAY
7512: NONEQUAL
7513: AND
7514: IFFALSE 7582
7516: GO 7518
7518: DISABLE
// begin if UnitFilter ( humans [ 5 ] , [ [ f_ok ] ] ) > 6 then
7519: LD_EXP 76
7523: PUSH
7524: LD_INT 5
7526: ARRAY
7527: PPUSH
7528: LD_INT 50
7530: PUSH
7531: EMPTY
7532: LIST
7533: PUSH
7534: EMPTY
7535: LIST
7536: PPUSH
7537: CALL_OW 72
7541: PUSH
7542: LD_INT 6
7544: GREATER
7545: IFFALSE 7581
// begin DE_BaseRefuse ;
7547: CALL 7811 0 0
// while IsInArea ( Bur , e_base ) do
7551: LD_LOC 2
7555: PPUSH
7556: LD_INT 21
7558: PPUSH
7559: CALL_OW 308
7563: IFFALSE 7574
// wait ( 0 0$1 ) ;
7565: LD_INT 35
7567: PPUSH
7568: CALL_OW 67
7572: GO 7551
// wait ( 0 0$20 ) ;
7574: LD_INT 700
7576: PPUSH
7577: CALL_OW 67
// end ; enable ;
7581: ENABLE
// end ;
7582: END
// every 0 0$2 trigger UnitFilter ( humans [ 5 ] , [ [ f_ok ] ] ) <= 6 and ai_s [ 1 ] <> ai_s [ 5 ] do
7583: LD_EXP 76
7587: PUSH
7588: LD_INT 5
7590: ARRAY
7591: PPUSH
7592: LD_INT 50
7594: PUSH
7595: EMPTY
7596: LIST
7597: PUSH
7598: EMPTY
7599: LIST
7600: PPUSH
7601: CALL_OW 72
7605: PUSH
7606: LD_INT 6
7608: LESSEQUAL
7609: PUSH
7610: LD_EXP 23
7614: PUSH
7615: LD_INT 1
7617: ARRAY
7618: PUSH
7619: LD_EXP 23
7623: PUSH
7624: LD_INT 5
7626: ARRAY
7627: NONEQUAL
7628: AND
7629: IFFALSE 7669
7631: GO 7633
7633: DISABLE
// begin if not ai_s [ 5 ] in your_bases then
7634: LD_EXP 23
7638: PUSH
7639: LD_INT 5
7641: ARRAY
7642: PUSH
7643: LD_EXP 18
7647: IN
7648: NOT
7649: IFFALSE 7669
// SurrenderBase ( t_beat , ai_s [ 5 ] ) ;
7651: LD_EXP 5
7655: PPUSH
7656: LD_EXP 23
7660: PUSH
7661: LD_INT 5
7663: ARRAY
7664: PPUSH
7665: CALL 30255 0 2
// end ;
7669: END
// every 0 0$2 trigger humans [ 5 ] <= 4 and ai_s [ 1 ] <> ai_s [ 5 ] do
7670: LD_EXP 76
7674: PUSH
7675: LD_INT 5
7677: ARRAY
7678: PUSH
7679: LD_INT 4
7681: LESSEQUAL
7682: PUSH
7683: LD_EXP 23
7687: PUSH
7688: LD_INT 1
7690: ARRAY
7691: PUSH
7692: LD_EXP 23
7696: PUSH
7697: LD_INT 5
7699: ARRAY
7700: NONEQUAL
7701: AND
7702: IFFALSE 7742
7704: GO 7706
7706: DISABLE
// begin if not ai_s [ 5 ] in your_bases then
7707: LD_EXP 23
7711: PUSH
7712: LD_INT 5
7714: ARRAY
7715: PUSH
7716: LD_EXP 18
7720: IN
7721: NOT
7722: IFFALSE 7742
// SurrenderBase ( t_killbeat , ai_s [ 5 ] ) ;
7724: LD_EXP 6
7728: PPUSH
7729: LD_EXP 23
7733: PUSH
7734: LD_INT 5
7736: ARRAY
7737: PPUSH
7738: CALL 30255 0 2
// end ;
7742: END
// export function DE_BaseContact ; begin
7743: LD_INT 0
7745: PPUSH
// DialogueOn ;
7746: CALL_OW 6
// Say ( Eis , DE-BaseContact-Eis-1 ) ;
7750: LD_LOC 9
7754: PPUSH
7755: LD_STRING DE-BaseContact-Eis-1
7757: PPUSH
7758: CALL_OW 88
// Say ( Bur , DE-BaseContact-Bur-1 ) ;
7762: LD_LOC 2
7766: PPUSH
7767: LD_STRING DE-BaseContact-Bur-1
7769: PPUSH
7770: CALL_OW 88
// DialogueOff ;
7774: CALL_OW 7
// end ;
7778: LD_VAR 0 1
7782: RET
// export function DE_BaseRefuse1st ; begin
7783: LD_INT 0
7785: PPUSH
// DialogueOn ;
7786: CALL_OW 6
// Say ( Eis , DE-BaseRefuse-Eis-1 ) ;
7790: LD_LOC 9
7794: PPUSH
7795: LD_STRING DE-BaseRefuse-Eis-1
7797: PPUSH
7798: CALL_OW 88
// DialogueOff ;
7802: CALL_OW 7
// end ;
7806: LD_VAR 0 1
7810: RET
// export function DE_BaseRefuse ; begin
7811: LD_INT 0
7813: PPUSH
// Say ( Eis , DE-BaseRefuse-Eis-1 ) ;
7814: LD_LOC 9
7818: PPUSH
7819: LD_STRING DE-BaseRefuse-Eis-1
7821: PPUSH
7822: CALL_OW 88
// end ;
7826: LD_VAR 0 1
7830: RET
// export function DE_BaseAccept ( first ) ; begin
7831: LD_INT 0
7833: PPUSH
// DialogueOn ;
7834: CALL_OW 6
// Say ( Eis , DE-BaseAccept-Eis-1 ) ;
7838: LD_LOC 9
7842: PPUSH
7843: LD_STRING DE-BaseAccept-Eis-1
7845: PPUSH
7846: CALL_OW 88
// if first then
7850: LD_VAR 0 1
7854: IFFALSE 7870
// Say ( Eis , DE-BaseAccept-Eis-1a ) else
7856: LD_LOC 9
7860: PPUSH
7861: LD_STRING DE-BaseAccept-Eis-1a
7863: PPUSH
7864: CALL_OW 88
7868: GO 7882
// Say ( Eis , DE-BaseAccept-Eis-1b ) ;
7870: LD_LOC 9
7874: PPUSH
7875: LD_STRING DE-BaseAccept-Eis-1b
7877: PPUSH
7878: CALL_OW 88
// DialogueOff ;
7882: CALL_OW 7
// end ;
7886: LD_VAR 0 2
7890: RET
// export function DXbaseSurrender ( side ) ; var who ; begin
7891: LD_INT 0
7893: PPUSH
7894: PPUSH
// who := WhoSayAny ( FilterAllUnits ( [ [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) diff talking , side , sex_male , 0 , 0 ) ;
7895: LD_ADDR_VAR 0 3
7899: PUSH
7900: LD_INT 21
7902: PUSH
7903: LD_INT 1
7905: PUSH
7906: EMPTY
7907: LIST
7908: LIST
7909: PUSH
7910: LD_INT 23
7912: PUSH
7913: LD_INT 3
7915: PUSH
7916: EMPTY
7917: LIST
7918: LIST
7919: PUSH
7920: EMPTY
7921: LIST
7922: LIST
7923: PPUSH
7924: CALL_OW 69
7928: PUSH
7929: LD_LOC 11
7933: DIFF
7934: PPUSH
7935: LD_VAR 0 1
7939: PPUSH
7940: LD_INT 1
7942: PPUSH
7943: LD_INT 0
7945: PPUSH
7946: LD_INT 0
7948: PPUSH
7949: CALL 10300 0 5
7953: ST_TO_ADDR
// DialogueOn ;
7954: CALL_OW 6
// Say ( who , DXbaseSurrender-Rsol1-1 ) ;
7958: LD_VAR 0 3
7962: PPUSH
7963: LD_STRING DXbaseSurrender-Rsol1-1
7965: PPUSH
7966: CALL_OW 88
// DialogueOff ;
7970: CALL_OW 7
// end ;
7974: LD_VAR 0 2
7978: RET
// export function DRocket ; var who ; begin
7979: LD_INT 0
7981: PPUSH
7982: PPUSH
// who := WhoSayAny ( FilterAllUnits ( [ [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) diff talking , you , sex_male , class_scientistic , 0 ) ;
7983: LD_ADDR_VAR 0 2
7987: PUSH
7988: LD_INT 21
7990: PUSH
7991: LD_INT 1
7993: PUSH
7994: EMPTY
7995: LIST
7996: LIST
7997: PUSH
7998: LD_INT 23
8000: PUSH
8001: LD_INT 3
8003: PUSH
8004: EMPTY
8005: LIST
8006: LIST
8007: PUSH
8008: EMPTY
8009: LIST
8010: LIST
8011: PPUSH
8012: CALL_OW 69
8016: PUSH
8017: LD_LOC 11
8021: DIFF
8022: PPUSH
8023: LD_EXP 7
8027: PPUSH
8028: LD_INT 1
8030: PPUSH
8031: LD_INT 4
8033: PPUSH
8034: LD_INT 0
8036: PPUSH
8037: CALL 10300 0 5
8041: ST_TO_ADDR
// TalkOn ;
8042: CALL 10559 0 0
// Say ( who , DRocket-RSci1-1 ) ;
8046: LD_VAR 0 2
8050: PPUSH
8051: LD_STRING DRocket-RSci1-1
8053: PPUSH
8054: CALL_OW 88
// TalkOff ;
8058: CALL 10575 0 0
// end ;
8062: LD_VAR 0 1
8066: RET
// every 0 0$1 trigger cap_bases >= 4 do
8067: LD_EXP 17
8071: PUSH
8072: LD_INT 4
8074: GREATEREQUAL
8075: IFFALSE 8091
8077: GO 8079
8079: DISABLE
// begin QEnd ;
8080: CALL 8092 0 0
// ChangeMissionObjectives ( MDestroy ) ;
8084: LD_STRING MDestroy
8086: PPUSH
8087: CALL_OW 337
// end ;
8091: END
// export function QEnd ; var qr ; begin
8092: LD_INT 0
8094: PPUSH
8095: PPUSH
// qr := Query ( QKill ) ;
8096: LD_ADDR_VAR 0 2
8100: PUSH
8101: LD_STRING QKill
8103: PPUSH
8104: CALL_OW 97
8108: ST_TO_ADDR
// end ;
8109: LD_VAR 0 1
8113: RET
// export function DEnd ; var who ; begin
8114: LD_INT 0
8116: PPUSH
8117: PPUSH
// who := Gla ;
8118: LD_ADDR_VAR 0 2
8122: PUSH
8123: LD_LOC 1
8127: ST_TO_ADDR
// if not IsOk ( Gla ) then
8128: LD_LOC 1
8132: PPUSH
8133: CALL_OW 302
8137: NOT
8138: IFFALSE 8199
// who := WhoSayAny ( FilterAllUnits ( [ [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) diff talking , you , sex_male , 0 , 0 ) ;
8140: LD_ADDR_VAR 0 2
8144: PUSH
8145: LD_INT 21
8147: PUSH
8148: LD_INT 1
8150: PUSH
8151: EMPTY
8152: LIST
8153: LIST
8154: PUSH
8155: LD_INT 23
8157: PUSH
8158: LD_INT 3
8160: PUSH
8161: EMPTY
8162: LIST
8163: LIST
8164: PUSH
8165: EMPTY
8166: LIST
8167: LIST
8168: PPUSH
8169: CALL_OW 69
8173: PUSH
8174: LD_LOC 11
8178: DIFF
8179: PPUSH
8180: LD_EXP 7
8184: PPUSH
8185: LD_INT 1
8187: PPUSH
8188: LD_INT 0
8190: PPUSH
8191: LD_INT 0
8193: PPUSH
8194: CALL 10300 0 5
8198: ST_TO_ADDR
// DialogueOn ;
8199: CALL_OW 6
// Say ( Bur , DEnd-Bur-1 ) ;
8203: LD_LOC 2
8207: PPUSH
8208: LD_STRING DEnd-Bur-1
8210: PPUSH
8211: CALL_OW 88
// if Say ( who , DEnd-Gla-1 ) then
8215: LD_VAR 0 2
8219: PPUSH
8220: LD_STRING DEnd-Gla-1
8222: PPUSH
8223: CALL_OW 88
8227: IFFALSE 8241
// Say ( Bur , DEnd-Bur-2 ) ;
8229: LD_LOC 2
8233: PPUSH
8234: LD_STRING DEnd-Bur-2
8236: PPUSH
8237: CALL_OW 88
// Say ( Bur , DEnd-Bur-2a ) ;
8241: LD_LOC 2
8245: PPUSH
8246: LD_STRING DEnd-Bur-2a
8248: PPUSH
8249: CALL_OW 88
// DialogueOff ;
8253: CALL_OW 7
// end ; end_of_file
8257: LD_VAR 0 1
8261: RET
// export Burlak , Platonov , Gossudarov , Gladkov , Fadeev , Borodin , Tsaritsyn , Davidov , Eisenstein , Gleb ; var masha_def , masha ; var used ; export function Load ; var i ; begin
8262: LD_INT 0
8264: PPUSH
8265: PPUSH
// Masha := LoadVariable ( Masha , [ ] ) ;
8266: LD_ADDR_LOC 14
8270: PUSH
8271: LD_STRING Masha
8273: PPUSH
8274: EMPTY
8275: PPUSH
8276: CALL_OW 30
8280: ST_TO_ADDR
// InitUc ;
8281: CALL_OW 18
// InitHc ;
8285: CALL_OW 19
// uc_nation := nation_russian ;
8289: LD_ADDR_OWVAR 21
8293: PUSH
8294: LD_INT 3
8296: ST_TO_ADDR
// uc_side := ai_s [ 1 ] ;
8297: LD_ADDR_OWVAR 20
8301: PUSH
8302: LD_EXP 23
8306: PUSH
8307: LD_INT 1
8309: ARRAY
8310: ST_TO_ADDR
// Platonov := MyCreateCharacter ( Platonov , class_soldier , true ) ;
8311: LD_ADDR_EXP 42
8315: PUSH
8316: LD_STRING Platonov
8318: PPUSH
8319: LD_INT 1
8321: PPUSH
8322: LD_INT 1
8324: PPUSH
8325: CALL 8926 0 3
8329: ST_TO_ADDR
// Gossudarov := MyCreateCharacter ( Gossudarov , class_scientistic , false ) ;
8330: LD_ADDR_EXP 43
8334: PUSH
8335: LD_STRING Gossudarov
8337: PPUSH
8338: LD_INT 4
8340: PPUSH
8341: LD_INT 0
8343: PPUSH
8344: CALL 8926 0 3
8348: ST_TO_ADDR
// SetSkill ( Gossudarov , skill_mechanical , gossudarov_mech_skill ) ;
8349: LD_EXP 43
8353: PPUSH
8354: LD_INT 3
8356: PPUSH
8357: LD_EXP 16
8361: PPUSH
8362: CALL_OW 237
// uc_side := ai_s [ 2 ] ;
8366: LD_ADDR_OWVAR 20
8370: PUSH
8371: LD_EXP 23
8375: PUSH
8376: LD_INT 2
8378: ARRAY
8379: ST_TO_ADDR
// Borodin := MyCreateCharacter ( Borodin , 0 , true ) ;
8380: LD_ADDR_EXP 46
8384: PUSH
8385: LD_STRING Borodin
8387: PPUSH
8388: LD_INT 0
8390: PPUSH
8391: LD_INT 1
8393: PPUSH
8394: CALL 8926 0 3
8398: ST_TO_ADDR
// uc_side := ai_s [ 3 ] ;
8399: LD_ADDR_OWVAR 20
8403: PUSH
8404: LD_EXP 23
8408: PUSH
8409: LD_INT 3
8411: ARRAY
8412: ST_TO_ADDR
// Tsaritsyn := MyCreateCharacter ( Tsaritsyn , 0 , true ) ;
8413: LD_ADDR_EXP 47
8417: PUSH
8418: LD_STRING Tsaritsyn
8420: PPUSH
8421: LD_INT 0
8423: PPUSH
8424: LD_INT 1
8426: PPUSH
8427: CALL 8926 0 3
8431: ST_TO_ADDR
// uc_side := ai_s [ 4 ] ;
8432: LD_ADDR_OWVAR 20
8436: PUSH
8437: LD_EXP 23
8441: PUSH
8442: LD_INT 4
8444: ARRAY
8445: ST_TO_ADDR
// Davidov := MyCreateCharacter ( Davidov , class_scientistic , true ) ;
8446: LD_ADDR_EXP 48
8450: PUSH
8451: LD_STRING Davidov
8453: PPUSH
8454: LD_INT 4
8456: PPUSH
8457: LD_INT 1
8459: PPUSH
8460: CALL 8926 0 3
8464: ST_TO_ADDR
// uc_side := ai_s [ 5 ] ;
8465: LD_ADDR_OWVAR 20
8469: PUSH
8470: LD_EXP 23
8474: PUSH
8475: LD_INT 5
8477: ARRAY
8478: ST_TO_ADDR
// Eisenstein := MyCreateCharacter ( Eisenstein , 0 , true ) ;
8479: LD_ADDR_EXP 49
8483: PUSH
8484: LD_STRING Eisenstein
8486: PPUSH
8487: LD_INT 0
8489: PPUSH
8490: LD_INT 1
8492: PPUSH
8493: CALL 8926 0 3
8497: ST_TO_ADDR
// uc_side := you ;
8498: LD_ADDR_OWVAR 20
8502: PUSH
8503: LD_EXP 7
8507: ST_TO_ADDR
// Burlak := MyCreateCharacter ( Burlak , class_mechanic , false ) ;
8508: LD_ADDR_EXP 41
8512: PUSH
8513: LD_STRING Burlak
8515: PPUSH
8516: LD_INT 3
8518: PPUSH
8519: LD_INT 0
8521: PPUSH
8522: CALL 8926 0 3
8526: ST_TO_ADDR
// Gladkov := MyCreateCharacter ( Gladkov , 0 , true ) ;
8527: LD_ADDR_EXP 44
8531: PUSH
8532: LD_STRING Gladkov
8534: PPUSH
8535: LD_INT 0
8537: PPUSH
8538: LD_INT 1
8540: PPUSH
8541: CALL 8926 0 3
8545: ST_TO_ADDR
// Fadeev := MyCreateCharacter ( Fadeev , 0 , true ) ;
8546: LD_ADDR_EXP 45
8550: PUSH
8551: LD_STRING Fadeev
8553: PPUSH
8554: LD_INT 0
8556: PPUSH
8557: LD_INT 1
8559: PPUSH
8560: CALL 8926 0 3
8564: ST_TO_ADDR
// Gleb := MyCreateCharacter ( Gleb , class_soldier , false ) ;
8565: LD_ADDR_EXP 50
8569: PUSH
8570: LD_STRING Gleb
8572: PPUSH
8573: LD_INT 1
8575: PPUSH
8576: LD_INT 0
8578: PPUSH
8579: CALL 8926 0 3
8583: ST_TO_ADDR
// masha_def := LoadVariable ( Masha , [ ] ) ;
8584: LD_ADDR_LOC 13
8588: PUSH
8589: LD_STRING Masha
8591: PPUSH
8592: EMPTY
8593: PPUSH
8594: CALL_OW 30
8598: ST_TO_ADDR
// if masha_def then
8599: LD_LOC 13
8603: IFFALSE 8675
// begin InitVc ;
8605: CALL_OW 20
// vc_chassis := masha_def [ 1 ] ;
8609: LD_ADDR_OWVAR 37
8613: PUSH
8614: LD_LOC 13
8618: PUSH
8619: LD_INT 1
8621: ARRAY
8622: ST_TO_ADDR
// vc_engine := masha_def [ 2 ] ;
8623: LD_ADDR_OWVAR 39
8627: PUSH
8628: LD_LOC 13
8632: PUSH
8633: LD_INT 2
8635: ARRAY
8636: ST_TO_ADDR
// vc_control := masha_def [ 3 ] ;
8637: LD_ADDR_OWVAR 38
8641: PUSH
8642: LD_LOC 13
8646: PUSH
8647: LD_INT 3
8649: ARRAY
8650: ST_TO_ADDR
// vc_weapon := masha_def [ 4 ] ;
8651: LD_ADDR_OWVAR 40
8655: PUSH
8656: LD_LOC 13
8660: PUSH
8661: LD_INT 4
8663: ARRAY
8664: ST_TO_ADDR
// masha := CreateVehicle ;
8665: LD_ADDR_LOC 14
8669: PUSH
8670: CALL_OW 45
8674: ST_TO_ADDR
// end ; used := [ ] ;
8675: LD_ADDR_LOC 15
8679: PUSH
8680: EMPTY
8681: ST_TO_ADDR
// used := [ Gleb ] diff 0 ;
8682: LD_ADDR_LOC 15
8686: PUSH
8687: LD_EXP 50
8691: PUSH
8692: EMPTY
8693: LIST
8694: PUSH
8695: LD_INT 0
8697: DIFF
8698: ST_TO_ADDR
// used := used ^ [ Fadeev , Gladkov ] ;
8699: LD_ADDR_LOC 15
8703: PUSH
8704: LD_LOC 15
8708: PUSH
8709: LD_EXP 45
8713: PUSH
8714: LD_EXP 44
8718: PUSH
8719: EMPTY
8720: LIST
8721: LIST
8722: ADD
8723: ST_TO_ADDR
// for i := used + 1 to 3 do
8724: LD_ADDR_VAR 0 2
8728: PUSH
8729: DOUBLE
8730: LD_LOC 15
8734: PUSH
8735: LD_INT 1
8737: PLUS
8738: DEC
8739: ST_TO_ADDR
8740: LD_INT 3
8742: PUSH
8743: FOR_TO
8744: IFFALSE 8777
// begin PrepareSoldier ( sex_male , 6 ) ;
8746: LD_INT 1
8748: PPUSH
8749: LD_INT 6
8751: PPUSH
8752: CALL_OW 381
// used := used ^ [ CreateHuman ] ;
8756: LD_ADDR_LOC 15
8760: PUSH
8761: LD_LOC 15
8765: PUSH
8766: CALL_OW 44
8770: PUSH
8771: EMPTY
8772: LIST
8773: ADD
8774: ST_TO_ADDR
// end ;
8775: GO 8743
8777: POP
8778: POP
// used := used ^ [ Burlak ] ;
8779: LD_ADDR_LOC 15
8783: PUSH
8784: LD_LOC 15
8788: PUSH
8789: LD_EXP 41
8793: PUSH
8794: EMPTY
8795: LIST
8796: ADD
8797: ST_TO_ADDR
// end ;
8798: LD_VAR 0 1
8802: RET
// export function place_ru ; var i ; begin
8803: LD_INT 0
8805: PPUSH
8806: PPUSH
// for i in used diff burlak do
8807: LD_ADDR_VAR 0 2
8811: PUSH
8812: LD_LOC 15
8816: PUSH
8817: LD_EXP 41
8821: DIFF
8822: PUSH
8823: FOR_IN
8824: IFFALSE 8843
// PlaceUnitArea ( i , ru_place , false ) ;
8826: LD_VAR 0 2
8830: PPUSH
8831: LD_INT 6
8833: PPUSH
8834: LD_INT 0
8836: PPUSH
8837: CALL_OW 49
8841: GO 8823
8843: POP
8844: POP
// if masha then
8845: LD_LOC 14
8849: IFFALSE 8906
// begin SetMark ( masha , 1 ) ;
8851: LD_LOC 14
8855: PPUSH
8856: LD_INT 1
8858: PPUSH
8859: CALL_OW 242
// PlaceHumanInUnit ( Burlak , masha ) ;
8863: LD_EXP 41
8867: PPUSH
8868: LD_LOC 14
8872: PPUSH
8873: CALL_OW 52
// PlaceUnitArea ( masha , ru_place , false ) ;
8877: LD_LOC 14
8881: PPUSH
8882: LD_INT 6
8884: PPUSH
8885: LD_INT 0
8887: PPUSH
8888: CALL_OW 49
// SetMark ( masha , 1 ) ;
8892: LD_LOC 14
8896: PPUSH
8897: LD_INT 1
8899: PPUSH
8900: CALL_OW 242
// end else
8904: GO 8921
// PlaceUnitArea ( Burlak , ru_place , false ) ;
8906: LD_EXP 41
8910: PPUSH
8911: LD_INT 6
8913: PPUSH
8914: LD_INT 0
8916: PPUSH
8917: CALL_OW 49
// end ;
8921: LD_VAR 0 1
8925: RET
// function MyCreateCharacter ( name , unclass , new ) ; begin
8926: LD_INT 0
8928: PPUSH
// if ( new and NewCharacter ( name ) ) or TestCharacters ( name ) then
8929: LD_VAR 0 3
8933: PUSH
8934: LD_VAR 0 1
8938: PPUSH
8939: CALL_OW 25
8943: AND
8944: PUSH
8945: LD_VAR 0 1
8949: PPUSH
8950: CALL_OW 28
8954: OR
8955: IFFALSE 9038
// begin if new then
8957: LD_VAR 0 3
8961: IFFALSE 8980
// result := NewCharacter ( name ) else
8963: LD_ADDR_VAR 0 4
8967: PUSH
8968: LD_VAR 0 1
8972: PPUSH
8973: CALL_OW 25
8977: ST_TO_ADDR
8978: GO 9016
// begin if CheckCharacterSet ( name ) then
8980: LD_VAR 0 1
8984: PPUSH
8985: CALL_OW 29
8989: IFFALSE 9008
// result := CreateCharacter ( name ) else
8991: LD_ADDR_VAR 0 4
8995: PUSH
8996: LD_VAR 0 1
9000: PPUSH
9001: CALL_OW 34
9005: ST_TO_ADDR
9006: GO 9016
// result := 0 ;
9008: LD_ADDR_VAR 0 4
9012: PUSH
9013: LD_INT 0
9015: ST_TO_ADDR
// end ; if unclass then
9016: LD_VAR 0 2
9020: IFFALSE 9036
// SetClass ( result , unclass ) ;
9022: LD_VAR 0 4
9026: PPUSH
9027: LD_VAR 0 2
9031: PPUSH
9032: CALL_OW 336
// end else
9036: GO 9104
// begin Msg ( Chybi  & name & ! ) ;
9038: LD_STRING Chybi 
9040: PUSH
9041: LD_VAR 0 1
9045: STR
9046: PUSH
9047: LD_STRING !
9049: STR
9050: PPUSH
9051: CALL_OW 100
// hc_name := name ;
9055: LD_ADDR_OWVAR 26
9059: PUSH
9060: LD_VAR 0 1
9064: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 3 ) ;
9065: LD_INT 1
9067: PPUSH
9068: LD_INT 0
9070: PPUSH
9071: LD_INT 3
9073: PPUSH
9074: CALL_OW 380
// if unclass then
9078: LD_VAR 0 2
9082: IFFALSE 9094
// hc_class := unclass ;
9084: LD_ADDR_OWVAR 28
9088: PUSH
9089: LD_VAR 0 2
9093: ST_TO_ADDR
// result := CreateHuman ;
9094: LD_ADDR_VAR 0 4
9098: PUSH
9099: CALL_OW 44
9103: ST_TO_ADDR
// end ; end ;
9104: LD_VAR 0 4
9108: RET
// export function Save ; var tmp , Bluekher , t ; begin
9109: LD_INT 0
9111: PPUSH
9112: PPUSH
9113: PPUSH
9114: PPUSH
// SaveCharacters ( Burlak , Burlak ) ;
9115: LD_EXP 41
9119: PPUSH
9120: LD_STRING Burlak
9122: PPUSH
9123: CALL_OW 38
// SaveCharacters ( Gladkov , Gladkov ) ;
9127: LD_EXP 44
9131: PPUSH
9132: LD_STRING Gladkov
9134: PPUSH
9135: CALL_OW 38
// SaveCharacters ( Fadeev , Fadeev ) ;
9139: LD_EXP 45
9143: PPUSH
9144: LD_STRING Fadeev
9146: PPUSH
9147: CALL_OW 38
// DeleteCharacters ( Platonov ) ;
9151: LD_STRING Platonov
9153: PPUSH
9154: CALL_OW 40
// SaveVariable ( not IsLive ( Platonov ) , PlatonovKilled ) ;
9158: LD_EXP 42
9162: PPUSH
9163: CALL_OW 300
9167: NOT
9168: PPUSH
9169: LD_STRING PlatonovKilled
9171: PPUSH
9172: CALL_OW 39
// SaveVariable ( BehemothSeen , BehemothSeen ) ;
9176: LD_EXP 29
9180: PPUSH
9181: LD_STRING BehemothSeen
9183: PPUSH
9184: CALL_OW 39
// if IsDead ( masha ) then
9188: LD_LOC 14
9192: PPUSH
9193: CALL_OW 301
9197: IFFALSE 9206
// DeleteVariable ( Masha ) ;
9199: LD_STRING Masha
9201: PPUSH
9202: CALL_OW 41
// SaveCharacters ( Borodin , Borodin ) ;
9206: LD_EXP 46
9210: PPUSH
9211: LD_STRING Borodin
9213: PPUSH
9214: CALL_OW 38
// SaveCharacters ( Tsaritsyn , Tsaritsyn ) ;
9218: LD_EXP 47
9222: PPUSH
9223: LD_STRING Tsaritsyn
9225: PPUSH
9226: CALL_OW 38
// SaveCharacters ( Davidov , Davidov ) ;
9230: LD_EXP 48
9234: PPUSH
9235: LD_STRING Davidov
9237: PPUSH
9238: CALL_OW 38
// SaveCharacters ( Eisenstein , Eisenstein ) ;
9242: LD_EXP 49
9246: PPUSH
9247: LD_STRING Eisenstein
9249: PPUSH
9250: CALL_OW 38
// if Gleb then
9254: LD_EXP 50
9258: IFFALSE 9272
// SaveCharacters ( Gleb , Gleb ) ;
9260: LD_EXP 50
9264: PPUSH
9265: LD_STRING Gleb
9267: PPUSH
9268: CALL_OW 38
// DeleteCharacters ( Gossudarov ) ;
9272: LD_STRING Gossudarov
9274: PPUSH
9275: CALL_OW 40
// tmp := FilterUnitsInArea ( Bluekher_area , [ [ f_type , unit_building ] ] ) ;
9279: LD_ADDR_VAR 0 2
9283: PUSH
9284: LD_INT 18
9286: PPUSH
9287: LD_INT 21
9289: PUSH
9290: LD_INT 3
9292: PUSH
9293: EMPTY
9294: LIST
9295: LIST
9296: PUSH
9297: EMPTY
9298: LIST
9299: PPUSH
9300: CALL_OW 70
9304: ST_TO_ADDR
// Bluekher := [ ] ;
9305: LD_ADDR_VAR 0 3
9309: PUSH
9310: EMPTY
9311: ST_TO_ADDR
// for t in tmp do
9312: LD_ADDR_VAR 0 4
9316: PUSH
9317: LD_VAR 0 2
9321: PUSH
9322: FOR_IN
9323: IFFALSE 9710
// begin case getbtype ( t ) of b_lab_basic , b_lab_weapon , b_lab_biological , b_lab_computer , b_lab_opto , b_lab_siberium , b_lab_spacetime :
9325: LD_VAR 0 4
9329: PPUSH
9330: CALL_OW 266
9334: PUSH
9335: LD_INT 9
9337: DOUBLE
9338: EQUAL
9339: IFTRUE 9379
9341: LD_INT 10
9343: DOUBLE
9344: EQUAL
9345: IFTRUE 9379
9347: LD_INT 13
9349: DOUBLE
9350: EQUAL
9351: IFTRUE 9379
9353: LD_INT 12
9355: DOUBLE
9356: EQUAL
9357: IFTRUE 9379
9359: LD_INT 15
9361: DOUBLE
9362: EQUAL
9363: IFTRUE 9379
9365: LD_INT 11
9367: DOUBLE
9368: EQUAL
9369: IFTRUE 9379
9371: LD_INT 14
9373: DOUBLE
9374: EQUAL
9375: IFTRUE 9379
9377: GO 9382
9379: POP
// begin end ; b_lab , b_lab_half , b_lab_full :
9380: GO 9708
9382: LD_INT 6
9384: DOUBLE
9385: EQUAL
9386: IFTRUE 9402
9388: LD_INT 7
9390: DOUBLE
9391: EQUAL
9392: IFTRUE 9402
9394: LD_INT 8
9396: DOUBLE
9397: EQUAL
9398: IFTRUE 9402
9400: GO 9515
9402: POP
// Bluekher := Bluekher ^ [ [ getx ( t ) , gety ( t ) , getdir ( t ) , getbtype ( t ) , getblevel ( t ) , GetNation ( t ) , getlabkind ( t , 1 ) , getlabkind ( t , 2 ) ] ] ; b_bunker , b_turret :
9403: LD_ADDR_VAR 0 3
9407: PUSH
9408: LD_VAR 0 3
9412: PUSH
9413: LD_VAR 0 4
9417: PPUSH
9418: CALL_OW 250
9422: PUSH
9423: LD_VAR 0 4
9427: PPUSH
9428: CALL_OW 251
9432: PUSH
9433: LD_VAR 0 4
9437: PPUSH
9438: CALL_OW 254
9442: PUSH
9443: LD_VAR 0 4
9447: PPUSH
9448: CALL_OW 266
9452: PUSH
9453: LD_VAR 0 4
9457: PPUSH
9458: CALL_OW 267
9462: PUSH
9463: LD_VAR 0 4
9467: PPUSH
9468: CALL_OW 248
9472: PUSH
9473: LD_VAR 0 4
9477: PPUSH
9478: LD_INT 1
9480: PPUSH
9481: CALL_OW 268
9485: PUSH
9486: LD_VAR 0 4
9490: PPUSH
9491: LD_INT 2
9493: PPUSH
9494: CALL_OW 268
9498: PUSH
9499: EMPTY
9500: LIST
9501: LIST
9502: LIST
9503: LIST
9504: LIST
9505: LIST
9506: LIST
9507: LIST
9508: PUSH
9509: EMPTY
9510: LIST
9511: ADD
9512: ST_TO_ADDR
9513: GO 9708
9515: LD_INT 32
9517: DOUBLE
9518: EQUAL
9519: IFTRUE 9529
9521: LD_INT 33
9523: DOUBLE
9524: EQUAL
9525: IFTRUE 9529
9527: GO 9625
9529: POP
// Bluekher := Bluekher ^ [ [ getx ( t ) , gety ( t ) , getdir ( t ) , getbtype ( t ) , getblevel ( t ) , GetNation ( t ) , GetWeapon ( t ) ] ] ; else
9530: LD_ADDR_VAR 0 3
9534: PUSH
9535: LD_VAR 0 3
9539: PUSH
9540: LD_VAR 0 4
9544: PPUSH
9545: CALL_OW 250
9549: PUSH
9550: LD_VAR 0 4
9554: PPUSH
9555: CALL_OW 251
9559: PUSH
9560: LD_VAR 0 4
9564: PPUSH
9565: CALL_OW 254
9569: PUSH
9570: LD_VAR 0 4
9574: PPUSH
9575: CALL_OW 266
9579: PUSH
9580: LD_VAR 0 4
9584: PPUSH
9585: CALL_OW 267
9589: PUSH
9590: LD_VAR 0 4
9594: PPUSH
9595: CALL_OW 248
9599: PUSH
9600: LD_VAR 0 4
9604: PPUSH
9605: CALL_OW 264
9609: PUSH
9610: EMPTY
9611: LIST
9612: LIST
9613: LIST
9614: LIST
9615: LIST
9616: LIST
9617: LIST
9618: PUSH
9619: EMPTY
9620: LIST
9621: ADD
9622: ST_TO_ADDR
9623: GO 9708
9625: POP
// Bluekher := Bluekher ^ [ [ getx ( t ) , gety ( t ) , getdir ( t ) , getbtype ( t ) , getblevel ( t ) , GetNation ( t ) ] ] ; end ;
9626: LD_ADDR_VAR 0 3
9630: PUSH
9631: LD_VAR 0 3
9635: PUSH
9636: LD_VAR 0 4
9640: PPUSH
9641: CALL_OW 250
9645: PUSH
9646: LD_VAR 0 4
9650: PPUSH
9651: CALL_OW 251
9655: PUSH
9656: LD_VAR 0 4
9660: PPUSH
9661: CALL_OW 254
9665: PUSH
9666: LD_VAR 0 4
9670: PPUSH
9671: CALL_OW 266
9675: PUSH
9676: LD_VAR 0 4
9680: PPUSH
9681: CALL_OW 267
9685: PUSH
9686: LD_VAR 0 4
9690: PPUSH
9691: CALL_OW 248
9695: PUSH
9696: EMPTY
9697: LIST
9698: LIST
9699: LIST
9700: LIST
9701: LIST
9702: LIST
9703: PUSH
9704: EMPTY
9705: LIST
9706: ADD
9707: ST_TO_ADDR
// end ;
9708: GO 9322
9710: POP
9711: POP
// SaveVariable ( Bluekher , Bluekher ) ;
9712: LD_VAR 0 3
9716: PPUSH
9717: LD_STRING Bluekher
9719: PPUSH
9720: CALL_OW 39
// end ; end_of_file
9724: LD_VAR 0 1
9728: RET
// export mf_sol ; export mf_eng ; export mf_mec ; export mf_sci ; export mf_lab ; export mf_fort ; export mf_bunk ; export mf_dep ; export mf_fact ; export mf_comp ; export mf_manu ; export function inicializace_functions ; begin
9729: LD_INT 0
9731: PPUSH
// mf_sol := [ f_class , class_soldier ] ;
9732: LD_ADDR_EXP 51
9736: PUSH
9737: LD_INT 25
9739: PUSH
9740: LD_INT 1
9742: PUSH
9743: EMPTY
9744: LIST
9745: LIST
9746: ST_TO_ADDR
// mf_eng := [ f_class , class_engineer ] ;
9747: LD_ADDR_EXP 52
9751: PUSH
9752: LD_INT 25
9754: PUSH
9755: LD_INT 2
9757: PUSH
9758: EMPTY
9759: LIST
9760: LIST
9761: ST_TO_ADDR
// mf_mec := [ f_class , class_mechanic ] ;
9762: LD_ADDR_EXP 53
9766: PUSH
9767: LD_INT 25
9769: PUSH
9770: LD_INT 3
9772: PUSH
9773: EMPTY
9774: LIST
9775: LIST
9776: ST_TO_ADDR
// mf_sci := [ f_class , class_scientistic ] ;
9777: LD_ADDR_EXP 54
9781: PUSH
9782: LD_INT 25
9784: PUSH
9785: LD_INT 4
9787: PUSH
9788: EMPTY
9789: LIST
9790: LIST
9791: ST_TO_ADDR
// mf_lab := [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ;
9792: LD_ADDR_EXP 55
9796: PUSH
9797: LD_INT 2
9799: PUSH
9800: LD_INT 30
9802: PUSH
9803: LD_INT 6
9805: PUSH
9806: EMPTY
9807: LIST
9808: LIST
9809: PUSH
9810: LD_INT 30
9812: PUSH
9813: LD_INT 7
9815: PUSH
9816: EMPTY
9817: LIST
9818: LIST
9819: PUSH
9820: LD_INT 30
9822: PUSH
9823: LD_INT 8
9825: PUSH
9826: EMPTY
9827: LIST
9828: LIST
9829: PUSH
9830: EMPTY
9831: LIST
9832: LIST
9833: LIST
9834: LIST
9835: ST_TO_ADDR
// mf_fort := [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ;
9836: LD_ADDR_EXP 56
9840: PUSH
9841: LD_INT 2
9843: PUSH
9844: LD_INT 30
9846: PUSH
9847: LD_INT 32
9849: PUSH
9850: EMPTY
9851: LIST
9852: LIST
9853: PUSH
9854: LD_INT 30
9856: PUSH
9857: LD_INT 31
9859: PUSH
9860: EMPTY
9861: LIST
9862: LIST
9863: PUSH
9864: LD_INT 30
9866: PUSH
9867: LD_INT 4
9869: PUSH
9870: EMPTY
9871: LIST
9872: LIST
9873: PUSH
9874: LD_INT 30
9876: PUSH
9877: LD_INT 5
9879: PUSH
9880: EMPTY
9881: LIST
9882: LIST
9883: PUSH
9884: EMPTY
9885: LIST
9886: LIST
9887: LIST
9888: LIST
9889: LIST
9890: ST_TO_ADDR
// mf_bunk := [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ;
9891: LD_ADDR_EXP 57
9895: PUSH
9896: LD_INT 2
9898: PUSH
9899: LD_INT 30
9901: PUSH
9902: LD_INT 32
9904: PUSH
9905: EMPTY
9906: LIST
9907: LIST
9908: PUSH
9909: LD_INT 30
9911: PUSH
9912: LD_INT 31
9914: PUSH
9915: EMPTY
9916: LIST
9917: LIST
9918: PUSH
9919: EMPTY
9920: LIST
9921: LIST
9922: LIST
9923: ST_TO_ADDR
// mf_dep := [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ;
9924: LD_ADDR_EXP 58
9928: PUSH
9929: LD_INT 2
9931: PUSH
9932: LD_INT 30
9934: PUSH
9935: LD_INT 0
9937: PUSH
9938: EMPTY
9939: LIST
9940: LIST
9941: PUSH
9942: LD_INT 30
9944: PUSH
9945: LD_INT 1
9947: PUSH
9948: EMPTY
9949: LIST
9950: LIST
9951: PUSH
9952: EMPTY
9953: LIST
9954: LIST
9955: LIST
9956: ST_TO_ADDR
// mf_fact := [ f_or , [ f_btype , b_factory ] , [ f_btype , b_workshop ] ] ;
9957: LD_ADDR_EXP 59
9961: PUSH
9962: LD_INT 2
9964: PUSH
9965: LD_INT 30
9967: PUSH
9968: LD_INT 3
9970: PUSH
9971: EMPTY
9972: LIST
9973: LIST
9974: PUSH
9975: LD_INT 30
9977: PUSH
9978: LD_INT 2
9980: PUSH
9981: EMPTY
9982: LIST
9983: LIST
9984: PUSH
9985: EMPTY
9986: LIST
9987: LIST
9988: LIST
9989: ST_TO_ADDR
// mf_comp := [ f_control , control_computer ] ;
9990: LD_ADDR_EXP 60
9994: PUSH
9995: LD_INT 33
9997: PUSH
9998: LD_INT 3
10000: PUSH
10001: EMPTY
10002: LIST
10003: LIST
10004: ST_TO_ADDR
// mf_manu := [ f_control , control_manual ] ;
10005: LD_ADDR_EXP 61
10009: PUSH
10010: LD_INT 33
10012: PUSH
10013: LD_INT 1
10015: PUSH
10016: EMPTY
10017: LIST
10018: LIST
10019: ST_TO_ADDR
// end ;
10020: LD_VAR 0 1
10024: RET
// export function get_x_best ( lidi , num , skill , mclass , idle ) ; var i , skills ; begin
10025: LD_INT 0
10027: PPUSH
10028: PPUSH
10029: PPUSH
// if mclass then
10030: LD_VAR 0 4
10034: IFFALSE 10066
// lidi := UnitFilter ( lidi , [ [ f_class , mclass ] ] ) ;
10036: LD_ADDR_VAR 0 1
10040: PUSH
10041: LD_VAR 0 1
10045: PPUSH
10046: LD_INT 25
10048: PUSH
10049: LD_VAR 0 4
10053: PUSH
10054: EMPTY
10055: LIST
10056: LIST
10057: PUSH
10058: EMPTY
10059: LIST
10060: PPUSH
10061: CALL_OW 72
10065: ST_TO_ADDR
// skills := [ ] ;
10066: LD_ADDR_VAR 0 8
10070: PUSH
10071: EMPTY
10072: ST_TO_ADDR
// for i in lidi do
10073: LD_ADDR_VAR 0 7
10077: PUSH
10078: LD_VAR 0 1
10082: PUSH
10083: FOR_IN
10084: IFFALSE 10117
// skills := skills ^ [ GetSkill ( i , skill ) ] ;
10086: LD_ADDR_VAR 0 8
10090: PUSH
10091: LD_VAR 0 8
10095: PUSH
10096: LD_VAR 0 7
10100: PPUSH
10101: LD_VAR 0 3
10105: PPUSH
10106: CALL_OW 259
10110: PUSH
10111: EMPTY
10112: LIST
10113: ADD
10114: ST_TO_ADDR
10115: GO 10083
10117: POP
10118: POP
// lidi := SortListByListDesc ( lidi , skills ) ;
10119: LD_ADDR_VAR 0 1
10123: PUSH
10124: LD_VAR 0 1
10128: PPUSH
10129: LD_VAR 0 8
10133: PPUSH
10134: CALL_OW 77
10138: ST_TO_ADDR
// if num > lidi then
10139: LD_VAR 0 2
10143: PUSH
10144: LD_VAR 0 1
10148: GREATER
10149: IFFALSE 10165
// num := lidi + 0 ;
10151: LD_ADDR_VAR 0 2
10155: PUSH
10156: LD_VAR 0 1
10160: PUSH
10161: LD_INT 0
10163: PLUS
10164: ST_TO_ADDR
// i := 1 ;
10165: LD_ADDR_VAR 0 7
10169: PUSH
10170: LD_INT 1
10172: ST_TO_ADDR
// result := [ ] ;
10173: LD_ADDR_VAR 0 6
10177: PUSH
10178: EMPTY
10179: ST_TO_ADDR
// while i <= lidi and result < num do
10180: LD_VAR 0 7
10184: PUSH
10185: LD_VAR 0 1
10189: LESSEQUAL
10190: PUSH
10191: LD_VAR 0 6
10195: PUSH
10196: LD_VAR 0 2
10200: LESS
10201: AND
10202: IFFALSE 10295
// begin if idle then
10204: LD_VAR 0 5
10208: IFFALSE 10254
// begin if IsIdle ( lidi [ i ] ) then
10210: LD_VAR 0 1
10214: PUSH
10215: LD_VAR 0 7
10219: ARRAY
10220: PPUSH
10221: CALL_OW 316
10225: IFFALSE 10252
// result := result ^ [ lidi [ i ] ] ;
10227: LD_ADDR_VAR 0 6
10231: PUSH
10232: LD_VAR 0 6
10236: PUSH
10237: LD_VAR 0 1
10241: PUSH
10242: LD_VAR 0 7
10246: ARRAY
10247: PUSH
10248: EMPTY
10249: LIST
10250: ADD
10251: ST_TO_ADDR
// end else
10252: GO 10279
// result := result ^ [ lidi [ i ] ] ;
10254: LD_ADDR_VAR 0 6
10258: PUSH
10259: LD_VAR 0 6
10263: PUSH
10264: LD_VAR 0 1
10268: PUSH
10269: LD_VAR 0 7
10273: ARRAY
10274: PUSH
10275: EMPTY
10276: LIST
10277: ADD
10278: ST_TO_ADDR
// i := i + 1 ;
10279: LD_ADDR_VAR 0 7
10283: PUSH
10284: LD_VAR 0 7
10288: PUSH
10289: LD_INT 1
10291: PLUS
10292: ST_TO_ADDR
// end ;
10293: GO 10180
// end ;
10295: LD_VAR 0 6
10299: RET
// export function WhoSayAny ( lidi , side , sex , Hclass , index ) ; begin
10300: LD_INT 0
10302: PPUSH
// lidi := UnitFilter ( lidi , [ [ f_type , unit_human ] , [ f_side , side ] , f_not , [ f_nation , nation_nature ] ] ) ;
10303: LD_ADDR_VAR 0 1
10307: PUSH
10308: LD_VAR 0 1
10312: PPUSH
10313: LD_INT 21
10315: PUSH
10316: LD_INT 1
10318: PUSH
10319: EMPTY
10320: LIST
10321: LIST
10322: PUSH
10323: LD_INT 22
10325: PUSH
10326: LD_VAR 0 2
10330: PUSH
10331: EMPTY
10332: LIST
10333: LIST
10334: PUSH
10335: LD_INT 3
10337: PUSH
10338: LD_INT 23
10340: PUSH
10341: LD_INT 0
10343: PUSH
10344: EMPTY
10345: LIST
10346: LIST
10347: PUSH
10348: EMPTY
10349: LIST
10350: LIST
10351: LIST
10352: LIST
10353: PPUSH
10354: CALL_OW 72
10358: ST_TO_ADDR
// if sex <> 0 then
10359: LD_VAR 0 3
10363: PUSH
10364: LD_INT 0
10366: NONEQUAL
10367: IFFALSE 10396
// lidi := UnitFilter ( lidi , [ f_sex , sex ] ) ;
10369: LD_ADDR_VAR 0 1
10373: PUSH
10374: LD_VAR 0 1
10378: PPUSH
10379: LD_INT 26
10381: PUSH
10382: LD_VAR 0 3
10386: PUSH
10387: EMPTY
10388: LIST
10389: LIST
10390: PPUSH
10391: CALL_OW 72
10395: ST_TO_ADDR
// if Hclass <> 0 then
10396: LD_VAR 0 4
10400: PUSH
10401: LD_INT 0
10403: NONEQUAL
10404: IFFALSE 10433
// lidi := UnitFilter ( lidi , [ f_class , Hclass ] ) ;
10406: LD_ADDR_VAR 0 1
10410: PUSH
10411: LD_VAR 0 1
10415: PPUSH
10416: LD_INT 25
10418: PUSH
10419: LD_VAR 0 4
10423: PUSH
10424: EMPTY
10425: LIST
10426: LIST
10427: PPUSH
10428: CALL_OW 72
10432: ST_TO_ADDR
// if index <= 0 then
10433: LD_VAR 0 5
10437: PUSH
10438: LD_INT 0
10440: LESSEQUAL
10441: IFFALSE 10451
// index := 1 ;
10443: LD_ADDR_VAR 0 5
10447: PUSH
10448: LD_INT 1
10450: ST_TO_ADDR
// if lidi >= index then
10451: LD_VAR 0 1
10455: PUSH
10456: LD_VAR 0 5
10460: GREATEREQUAL
10461: IFFALSE 10481
// result := lidi [ index ] else
10463: LD_ADDR_VAR 0 6
10467: PUSH
10468: LD_VAR 0 1
10472: PUSH
10473: LD_VAR 0 5
10477: ARRAY
10478: ST_TO_ADDR
10479: GO 10489
// result := 0 ;
10481: LD_ADDR_VAR 0 6
10485: PUSH
10486: LD_INT 0
10488: ST_TO_ADDR
// end ;
10489: LD_VAR 0 6
10493: RET
// export function see_any ( strana , sez ) ; var i ; begin
10494: LD_INT 0
10496: PPUSH
10497: PPUSH
// result := [ ] ;
10498: LD_ADDR_VAR 0 3
10502: PUSH
10503: EMPTY
10504: ST_TO_ADDR
// for i in sez do
10505: LD_ADDR_VAR 0 4
10509: PUSH
10510: LD_VAR 0 2
10514: PUSH
10515: FOR_IN
10516: IFFALSE 10552
// if See ( strana , i ) then
10518: LD_VAR 0 1
10522: PPUSH
10523: LD_VAR 0 4
10527: PPUSH
10528: CALL_OW 292
10532: IFFALSE 10550
// begin result := result ^ i ;
10534: LD_ADDR_VAR 0 3
10538: PUSH
10539: LD_VAR 0 3
10543: PUSH
10544: LD_VAR 0 4
10548: ADD
10549: ST_TO_ADDR
// end ;
10550: GO 10515
10552: POP
10553: POP
// ; end ;
10554: LD_VAR 0 3
10558: RET
// export function TalkOn ; begin
10559: LD_INT 0
10561: PPUSH
// stop_talking := true ;
10562: LD_ADDR_OWVAR 56
10566: PUSH
10567: LD_INT 1
10569: ST_TO_ADDR
// end ;
10570: LD_VAR 0 1
10574: RET
// export function TalkOff ; begin
10575: LD_INT 0
10577: PPUSH
// stop_talking := false ;
10578: LD_ADDR_OWVAR 56
10582: PUSH
10583: LD_INT 0
10585: ST_TO_ADDR
// end ;
10586: LD_VAR 0 1
10590: RET
// export function FilterHumansInArea ( area , filter ) ; var inbase , i ; begin
10591: LD_INT 0
10593: PPUSH
10594: PPUSH
10595: PPUSH
// result := [ ] ;
10596: LD_ADDR_VAR 0 3
10600: PUSH
10601: EMPTY
10602: ST_TO_ADDR
// inbase := FilterUnitsInArea ( area , [ f_side , you ] ) ;
10603: LD_ADDR_VAR 0 4
10607: PUSH
10608: LD_VAR 0 1
10612: PPUSH
10613: LD_INT 22
10615: PUSH
10616: LD_EXP 7
10620: PUSH
10621: EMPTY
10622: LIST
10623: LIST
10624: PPUSH
10625: CALL_OW 70
10629: ST_TO_ADDR
// for i in inbase do
10630: LD_ADDR_VAR 0 5
10634: PUSH
10635: LD_VAR 0 4
10639: PUSH
10640: FOR_IN
10641: IFFALSE 10714
// begin if GetType ( i ) = unit_building or GetType ( i ) = unit_vehicle then
10643: LD_VAR 0 5
10647: PPUSH
10648: CALL_OW 247
10652: PUSH
10653: LD_INT 3
10655: EQUAL
10656: PUSH
10657: LD_VAR 0 5
10661: PPUSH
10662: CALL_OW 247
10666: PUSH
10667: LD_INT 2
10669: EQUAL
10670: OR
10671: IFFALSE 10696
// begin result := result ^ UnitsInside ( i ) ;
10673: LD_ADDR_VAR 0 3
10677: PUSH
10678: LD_VAR 0 3
10682: PUSH
10683: LD_VAR 0 5
10687: PPUSH
10688: CALL_OW 313
10692: ADD
10693: ST_TO_ADDR
// end else
10694: GO 10712
// begin result := result ^ i ;
10696: LD_ADDR_VAR 0 3
10700: PUSH
10701: LD_VAR 0 3
10705: PUSH
10706: LD_VAR 0 5
10710: ADD
10711: ST_TO_ADDR
// end ; end ;
10712: GO 10640
10714: POP
10715: POP
// result := UnitFilter ( result , filter ) ;
10716: LD_ADDR_VAR 0 3
10720: PUSH
10721: LD_VAR 0 3
10725: PPUSH
10726: LD_VAR 0 2
10730: PPUSH
10731: CALL_OW 72
10735: ST_TO_ADDR
// end ;
10736: LD_VAR 0 3
10740: RET
// export function inside_units ( uns ) ; var i ; begin
10741: LD_INT 0
10743: PPUSH
10744: PPUSH
// result := [ ] ;
10745: LD_ADDR_VAR 0 2
10749: PUSH
10750: EMPTY
10751: ST_TO_ADDR
// for i in uns do
10752: LD_ADDR_VAR 0 3
10756: PUSH
10757: LD_VAR 0 1
10761: PUSH
10762: FOR_IN
10763: IFFALSE 10788
// result := result ^ UnitsInside ( i ) ;
10765: LD_ADDR_VAR 0 2
10769: PUSH
10770: LD_VAR 0 2
10774: PUSH
10775: LD_VAR 0 3
10779: PPUSH
10780: CALL_OW 313
10784: ADD
10785: ST_TO_ADDR
10786: GO 10762
10788: POP
10789: POP
// end ;
10790: LD_VAR 0 2
10794: RET
// export function find_drivers ( cars , drivers , take_out ) ; var empty , free , i , konec ; begin
10795: LD_INT 0
10797: PPUSH
10798: PPUSH
10799: PPUSH
10800: PPUSH
10801: PPUSH
// cars := UnitFilter ( cars , [ f_alive ] ) union [ ] ;
10802: LD_ADDR_VAR 0 1
10806: PUSH
10807: LD_VAR 0 1
10811: PPUSH
10812: LD_INT 51
10814: PUSH
10815: EMPTY
10816: LIST
10817: PPUSH
10818: CALL_OW 72
10822: PUSH
10823: EMPTY
10824: UNION
10825: ST_TO_ADDR
// drivers := UnitFilter ( drivers , [ f_alive ] ) union [ ] ;
10826: LD_ADDR_VAR 0 2
10830: PUSH
10831: LD_VAR 0 2
10835: PPUSH
10836: LD_INT 51
10838: PUSH
10839: EMPTY
10840: LIST
10841: PPUSH
10842: CALL_OW 72
10846: PUSH
10847: EMPTY
10848: UNION
10849: ST_TO_ADDR
// for i in cars do
10850: LD_ADDR_VAR 0 7
10854: PUSH
10855: LD_VAR 0 1
10859: PUSH
10860: FOR_IN
10861: IFFALSE 10896
// if not IsDrivenBy ( i ) then
10863: LD_VAR 0 7
10867: PPUSH
10868: CALL_OW 311
10872: NOT
10873: IFFALSE 10894
// empty := empty ^ [ i ] ;
10875: LD_ADDR_VAR 0 5
10879: PUSH
10880: LD_VAR 0 5
10884: PUSH
10885: LD_VAR 0 7
10889: PUSH
10890: EMPTY
10891: LIST
10892: ADD
10893: ST_TO_ADDR
10894: GO 10860
10896: POP
10897: POP
// if take_out then
10898: LD_VAR 0 3
10902: IFFALSE 10960
// begin for i in drivers do
10904: LD_ADDR_VAR 0 7
10908: PUSH
10909: LD_VAR 0 2
10913: PUSH
10914: FOR_IN
10915: IFFALSE 10956
// if not ( IsInUnit ( i ) in cars ) then
10917: LD_VAR 0 7
10921: PPUSH
10922: CALL_OW 310
10926: PUSH
10927: LD_VAR 0 1
10931: IN
10932: NOT
10933: IFFALSE 10954
// free := free ^ [ i ] ;
10935: LD_ADDR_VAR 0 6
10939: PUSH
10940: LD_VAR 0 6
10944: PUSH
10945: LD_VAR 0 7
10949: PUSH
10950: EMPTY
10951: LIST
10952: ADD
10953: ST_TO_ADDR
10954: GO 10914
10956: POP
10957: POP
// end else
10958: GO 11008
// begin for i in drivers do
10960: LD_ADDR_VAR 0 7
10964: PUSH
10965: LD_VAR 0 2
10969: PUSH
10970: FOR_IN
10971: IFFALSE 11006
// if not IsInUnit ( i ) then
10973: LD_VAR 0 7
10977: PPUSH
10978: CALL_OW 310
10982: NOT
10983: IFFALSE 11004
// free := free ^ [ i ] ;
10985: LD_ADDR_VAR 0 6
10989: PUSH
10990: LD_VAR 0 6
10994: PUSH
10995: LD_VAR 0 7
10999: PUSH
11000: EMPTY
11001: LIST
11002: ADD
11003: ST_TO_ADDR
11004: GO 10970
11006: POP
11007: POP
// end ; result := cars diff empty ;
11008: LD_ADDR_VAR 0 4
11012: PUSH
11013: LD_VAR 0 1
11017: PUSH
11018: LD_VAR 0 5
11022: DIFF
11023: ST_TO_ADDR
// if empty <= free then
11024: LD_VAR 0 5
11028: PUSH
11029: LD_VAR 0 6
11033: LESSEQUAL
11034: IFFALSE 11048
// konec := empty else
11036: LD_ADDR_VAR 0 8
11040: PUSH
11041: LD_VAR 0 5
11045: ST_TO_ADDR
11046: GO 11058
// konec := free ;
11048: LD_ADDR_VAR 0 8
11052: PUSH
11053: LD_VAR 0 6
11057: ST_TO_ADDR
// for i := 1 to konec do
11058: LD_ADDR_VAR 0 7
11062: PUSH
11063: DOUBLE
11064: LD_INT 1
11066: DEC
11067: ST_TO_ADDR
11068: LD_VAR 0 8
11072: PUSH
11073: FOR_TO
11074: IFFALSE 11129
// begin ComEnterUnit ( free [ i ] , empty [ i ] ) ;
11076: LD_VAR 0 6
11080: PUSH
11081: LD_VAR 0 7
11085: ARRAY
11086: PPUSH
11087: LD_VAR 0 5
11091: PUSH
11092: LD_VAR 0 7
11096: ARRAY
11097: PPUSH
11098: CALL_OW 120
// result := result ^ [ empty [ i ] ] ;
11102: LD_ADDR_VAR 0 4
11106: PUSH
11107: LD_VAR 0 4
11111: PUSH
11112: LD_VAR 0 5
11116: PUSH
11117: LD_VAR 0 7
11121: ARRAY
11122: PUSH
11123: EMPTY
11124: LIST
11125: ADD
11126: ST_TO_ADDR
// end ;
11127: GO 11073
11129: POP
11130: POP
// end ;
11131: LD_VAR 0 4
11135: RET
// export function find_remotes ( cars , mechs , remotes ) ; var cas , i ; begin
11136: LD_INT 0
11138: PPUSH
11139: PPUSH
11140: PPUSH
// while remotes > mechs do
11141: LD_VAR 0 3
11145: PUSH
11146: LD_VAR 0 2
11150: GREATER
11151: IFFALSE 11167
// delete ( remotes , 1 ) ;
11153: LD_VAR 0 3
11157: PPUSH
11158: LD_INT 1
11160: PPUSH
11161: CALL_OW 3
11165: GO 11141
// for i := 1 to remotes do
11167: LD_ADDR_VAR 0 6
11171: PUSH
11172: DOUBLE
11173: LD_INT 1
11175: DEC
11176: ST_TO_ADDR
11177: LD_VAR 0 3
11181: PUSH
11182: FOR_TO
11183: IFFALSE 11213
// ComEnterUnit ( mechs [ i ] , remotes [ i ] ) ;
11185: LD_VAR 0 2
11189: PUSH
11190: LD_VAR 0 6
11194: ARRAY
11195: PPUSH
11196: LD_VAR 0 3
11200: PUSH
11201: LD_VAR 0 6
11205: ARRAY
11206: PPUSH
11207: CALL_OW 120
11211: GO 11182
11213: POP
11214: POP
// end ;
11215: LD_VAR 0 4
11219: RET
// export function wait_for_remotes ( cars , remotes , cas ) ; var c , unlinked , i ; begin
11220: LD_INT 0
11222: PPUSH
11223: PPUSH
11224: PPUSH
11225: PPUSH
// c := tick + cas ;
11226: LD_ADDR_VAR 0 5
11230: PUSH
11231: LD_OWVAR 1
11235: PUSH
11236: LD_VAR 0 3
11240: PLUS
11241: ST_TO_ADDR
// while tick < c and ( not ( inside_units ( remotes ) + 0 ) = remotes ) do
11242: LD_OWVAR 1
11246: PUSH
11247: LD_VAR 0 5
11251: LESS
11252: PUSH
11253: LD_VAR 0 2
11257: PPUSH
11258: CALL 10741 0 1
11262: PUSH
11263: LD_INT 0
11265: PLUS
11266: PUSH
11267: LD_VAR 0 2
11271: EQUAL
11272: NOT
11273: AND
11274: IFFALSE 11285
// wait ( 0 0$1 ) ;
11276: LD_INT 35
11278: PPUSH
11279: CALL_OW 67
11283: GO 11242
// unlinked := cars ;
11285: LD_ADDR_VAR 0 6
11289: PUSH
11290: LD_VAR 0 1
11294: ST_TO_ADDR
// for i in remotes do
11295: LD_ADDR_VAR 0 7
11299: PUSH
11300: LD_VAR 0 2
11304: PUSH
11305: FOR_IN
11306: IFFALSE 11355
// begin ComLinkTo ( unlinked , UnitsInside ( i ) ) ;
11308: LD_VAR 0 6
11312: PPUSH
11313: LD_VAR 0 7
11317: PPUSH
11318: CALL_OW 313
11322: PPUSH
11323: CALL_OW 135
// unlinked := unlinked diff UnitsLinked ( UnitsInside ( i ) ) ;
11327: LD_ADDR_VAR 0 6
11331: PUSH
11332: LD_VAR 0 6
11336: PUSH
11337: LD_VAR 0 7
11341: PPUSH
11342: CALL_OW 313
11346: PPUSH
11347: CALL_OW 432
11351: DIFF
11352: ST_TO_ADDR
// end ;
11353: GO 11305
11355: POP
11356: POP
// end ;
11357: LD_VAR 0 4
11361: RET
// export function wait_for_drivers ( cars , cas ) ; var i , vsichni_ready , k , pockat ; begin
11362: LD_INT 0
11364: PPUSH
11365: PPUSH
11366: PPUSH
11367: PPUSH
11368: PPUSH
// k := 0 ;
11369: LD_ADDR_VAR 0 6
11373: PUSH
11374: LD_INT 0
11376: ST_TO_ADDR
// pockat := tick + cas ;
11377: LD_ADDR_VAR 0 7
11381: PUSH
11382: LD_OWVAR 1
11386: PUSH
11387: LD_VAR 0 2
11391: PLUS
11392: ST_TO_ADDR
// while not vsichni_ready and tick < pockat do
11393: LD_VAR 0 5
11397: NOT
11398: PUSH
11399: LD_OWVAR 1
11403: PUSH
11404: LD_VAR 0 7
11408: LESS
11409: AND
11410: IFFALSE 11480
// begin vsichni_ready := true ;
11412: LD_ADDR_VAR 0 5
11416: PUSH
11417: LD_INT 1
11419: ST_TO_ADDR
// k := k + 1 ;
11420: LD_ADDR_VAR 0 6
11424: PUSH
11425: LD_VAR 0 6
11429: PUSH
11430: LD_INT 1
11432: PLUS
11433: ST_TO_ADDR
// for i in cars do
11434: LD_ADDR_VAR 0 4
11438: PUSH
11439: LD_VAR 0 1
11443: PUSH
11444: FOR_IN
11445: IFFALSE 11469
// if not IsDrivenBy ( i ) then
11447: LD_VAR 0 4
11451: PPUSH
11452: CALL_OW 311
11456: NOT
11457: IFFALSE 11467
// vsichni_ready := false ;
11459: LD_ADDR_VAR 0 5
11463: PUSH
11464: LD_INT 0
11466: ST_TO_ADDR
11467: GO 11444
11469: POP
11470: POP
// wait ( 0 0$1.0 ) ;
11471: LD_INT 35
11473: PPUSH
11474: CALL_OW 67
// end ;
11478: GO 11393
// end ;
11480: LD_VAR 0 3
11484: RET
// export function rev ( list ) ; var i ; begin
11485: LD_INT 0
11487: PPUSH
11488: PPUSH
// for i := list + 0 to 1 do
11489: LD_ADDR_VAR 0 3
11493: PUSH
11494: DOUBLE
11495: LD_VAR 0 1
11499: PUSH
11500: LD_INT 0
11502: PLUS
11503: DEC
11504: ST_TO_ADDR
11505: LD_INT 1
11507: PUSH
11508: FOR_TO
11509: IFFALSE 11538
// result := result ^ [ list [ i ] ] ;
11511: LD_ADDR_VAR 0 2
11515: PUSH
11516: LD_VAR 0 2
11520: PUSH
11521: LD_VAR 0 1
11525: PUSH
11526: LD_VAR 0 3
11530: ARRAY
11531: PUSH
11532: EMPTY
11533: LIST
11534: ADD
11535: ST_TO_ADDR
11536: GO 11508
11538: POP
11539: POP
// end ; end_of_file
11540: LD_VAR 0 2
11544: RET
// export under_attack ; export near_base_area ; export function inicializace_ai_defend ; begin
11545: LD_INT 0
11547: PPUSH
// under_attack := [ false , false , false , false , false ] ;
11548: LD_ADDR_EXP 62
11552: PUSH
11553: LD_INT 0
11555: PUSH
11556: LD_INT 0
11558: PUSH
11559: LD_INT 0
11561: PUSH
11562: LD_INT 0
11564: PUSH
11565: LD_INT 0
11567: PUSH
11568: EMPTY
11569: LIST
11570: LIST
11571: LIST
11572: LIST
11573: LIST
11574: ST_TO_ADDR
// near_base_area := [ nearA , nearB , nearC , nearD , nearE ] ;
11575: LD_ADDR_EXP 63
11579: PUSH
11580: LD_INT 24
11582: PUSH
11583: LD_INT 25
11585: PUSH
11586: LD_INT 26
11588: PUSH
11589: LD_INT 27
11591: PUSH
11592: LD_INT 28
11594: PUSH
11595: EMPTY
11596: LIST
11597: LIST
11598: LIST
11599: LIST
11600: LIST
11601: ST_TO_ADDR
// end ;
11602: LD_VAR 0 1
11606: RET
// export BehMcRegId , BehMcAttId ; export function BehemothUtok ; begin
11607: LD_INT 0
11609: PPUSH
// BehMcRegId := McRegistry ( ai_s [ 1 ] , [ [ mc_reg_refresh_time , 0 0$4 ] , [ mc_reg_units_to_protect , [ Platonov ] ] , [ mc_reg_units_to_guard , [ Burlak ] ] , [ mc_reg_area_to_protect , near_base_area [ plat_i ] ] , mc_reg_ignore_fog , - mc_reg_only_important ] ) ;
11610: LD_ADDR_EXP 64
11614: PUSH
11615: LD_EXP 23
11619: PUSH
11620: LD_INT 1
11622: ARRAY
11623: PPUSH
11624: LD_INT 1
11626: PUSH
11627: LD_INT 140
11629: PUSH
11630: EMPTY
11631: LIST
11632: LIST
11633: PUSH
11634: LD_INT 4
11636: PUSH
11637: LD_EXP 42
11641: PUSH
11642: EMPTY
11643: LIST
11644: PUSH
11645: EMPTY
11646: LIST
11647: LIST
11648: PUSH
11649: LD_INT 10
11651: PUSH
11652: LD_EXP 41
11656: PUSH
11657: EMPTY
11658: LIST
11659: PUSH
11660: EMPTY
11661: LIST
11662: LIST
11663: PUSH
11664: LD_INT 3
11666: PUSH
11667: LD_EXP 63
11671: PUSH
11672: LD_EXP 25
11676: ARRAY
11677: PUSH
11678: EMPTY
11679: LIST
11680: LIST
11681: PUSH
11682: LD_INT 7
11684: PUSH
11685: LD_INT 8
11687: NEG
11688: PUSH
11689: EMPTY
11690: LIST
11691: LIST
11692: LIST
11693: LIST
11694: LIST
11695: LIST
11696: PPUSH
11697: CALL_OW 399
11701: ST_TO_ADDR
// BehMcAttId := McAttack ( 12 , BehMcRegId , [ behemoth ] , [ [ mc_retreat_area_vehicles , nearA ] , [ mc_retreat_area_people , nearA ] , [ mc_retreat_lives_vehicles , 600 ] , [ mc_retreat_lives_people , 800 ] , mc_no_stop ] ) ;
11702: LD_ADDR_EXP 65
11706: PUSH
11707: LD_INT 12
11709: PPUSH
11710: LD_EXP 64
11714: PPUSH
11715: LD_INT 125
11717: PUSH
11718: EMPTY
11719: LIST
11720: PPUSH
11721: LD_INT 8
11723: PUSH
11724: LD_INT 24
11726: PUSH
11727: EMPTY
11728: LIST
11729: LIST
11730: PUSH
11731: LD_INT 7
11733: PUSH
11734: LD_INT 24
11736: PUSH
11737: EMPTY
11738: LIST
11739: LIST
11740: PUSH
11741: LD_INT 6
11743: PUSH
11744: LD_INT 600
11746: PUSH
11747: EMPTY
11748: LIST
11749: LIST
11750: PUSH
11751: LD_INT 5
11753: PUSH
11754: LD_INT 800
11756: PUSH
11757: EMPTY
11758: LIST
11759: LIST
11760: PUSH
11761: LD_INT 10
11763: PUSH
11764: EMPTY
11765: LIST
11766: LIST
11767: LIST
11768: LIST
11769: LIST
11770: PPUSH
11771: CALL_OW 402
11775: ST_TO_ADDR
// end ;
11776: LD_VAR 0 1
11780: RET
// export ZouMcRegId , ZouMcAttId ; export function ZoufalUtok ; begin
11781: LD_INT 0
11783: PPUSH
// ZouMcRegId := McRegistry ( ai_s [ plat_i ] , [ [ mc_reg_refresh_time , 0 0$4 ] , [ mc_reg_units_to_protect , [ Platonov ] ] , [ mc_reg_units_to_guard , [ Burlak ] ] , [ mc_reg_area_to_protect , near_base_area [ plat_i ] ] , mc_reg_ignore_fog , - mc_reg_only_important ] ) ;
11784: LD_ADDR_EXP 66
11788: PUSH
11789: LD_EXP 23
11793: PUSH
11794: LD_EXP 25
11798: ARRAY
11799: PPUSH
11800: LD_INT 1
11802: PUSH
11803: LD_INT 140
11805: PUSH
11806: EMPTY
11807: LIST
11808: LIST
11809: PUSH
11810: LD_INT 4
11812: PUSH
11813: LD_EXP 42
11817: PUSH
11818: EMPTY
11819: LIST
11820: PUSH
11821: EMPTY
11822: LIST
11823: LIST
11824: PUSH
11825: LD_INT 10
11827: PUSH
11828: LD_EXP 41
11832: PUSH
11833: EMPTY
11834: LIST
11835: PUSH
11836: EMPTY
11837: LIST
11838: LIST
11839: PUSH
11840: LD_INT 3
11842: PUSH
11843: LD_EXP 63
11847: PUSH
11848: LD_EXP 25
11852: ARRAY
11853: PUSH
11854: EMPTY
11855: LIST
11856: LIST
11857: PUSH
11858: LD_INT 7
11860: PUSH
11861: LD_INT 8
11863: NEG
11864: PUSH
11865: EMPTY
11866: LIST
11867: LIST
11868: LIST
11869: LIST
11870: LIST
11871: LIST
11872: PPUSH
11873: CALL_OW 399
11877: ST_TO_ADDR
// ZouMcAttId := McAttack ( 12 , ZouMcRegId , vehicles [ plat_i ] , [ [ mc_retreat_area_vehicles , near_base_area [ plat_i ] ] , [ mc_retreat_area_people , near_base_area [ plat_i ] ] , [ mc_retreat_lives_vehicles , 100 ] , [ mc_retreat_lives_people , 800 ] , mc_no_stop ] ) ;
11878: LD_ADDR_EXP 67
11882: PUSH
11883: LD_INT 12
11885: PPUSH
11886: LD_EXP 66
11890: PPUSH
11891: LD_EXP 77
11895: PUSH
11896: LD_EXP 25
11900: ARRAY
11901: PPUSH
11902: LD_INT 8
11904: PUSH
11905: LD_EXP 63
11909: PUSH
11910: LD_EXP 25
11914: ARRAY
11915: PUSH
11916: EMPTY
11917: LIST
11918: LIST
11919: PUSH
11920: LD_INT 7
11922: PUSH
11923: LD_EXP 63
11927: PUSH
11928: LD_EXP 25
11932: ARRAY
11933: PUSH
11934: EMPTY
11935: LIST
11936: LIST
11937: PUSH
11938: LD_INT 6
11940: PUSH
11941: LD_INT 100
11943: PUSH
11944: EMPTY
11945: LIST
11946: LIST
11947: PUSH
11948: LD_INT 5
11950: PUSH
11951: LD_INT 800
11953: PUSH
11954: EMPTY
11955: LIST
11956: LIST
11957: PUSH
11958: LD_INT 10
11960: PUSH
11961: EMPTY
11962: LIST
11963: LIST
11964: LIST
11965: LIST
11966: LIST
11967: PPUSH
11968: CALL_OW 402
11972: ST_TO_ADDR
// end ;
11973: LD_VAR 0 1
11977: RET
// export NorMcRegId , NorMcAttId ; export function NormalUtok ; begin
11978: LD_INT 0
11980: PPUSH
// NorMcRegId := McRegistry ( ai_s [ plat_i ] , [ [ mc_reg_refresh_time , 0 0$4 ] , [ mc_reg_units_to_protect , [ Platonov ] ] , [ mc_reg_units_to_guard , [ your_humans ] ] , [ mc_reg_area_to_protect , near_base_area [ plat_i ] ] , mc_reg_ignore_fog , - mc_reg_only_important ] ) ;
11981: LD_ADDR_EXP 68
11985: PUSH
11986: LD_EXP 23
11990: PUSH
11991: LD_EXP 25
11995: ARRAY
11996: PPUSH
11997: LD_INT 1
11999: PUSH
12000: LD_INT 140
12002: PUSH
12003: EMPTY
12004: LIST
12005: LIST
12006: PUSH
12007: LD_INT 4
12009: PUSH
12010: LD_EXP 42
12014: PUSH
12015: EMPTY
12016: LIST
12017: PUSH
12018: EMPTY
12019: LIST
12020: LIST
12021: PUSH
12022: LD_INT 10
12024: PUSH
12025: LD_EXP 37
12029: PUSH
12030: EMPTY
12031: LIST
12032: PUSH
12033: EMPTY
12034: LIST
12035: LIST
12036: PUSH
12037: LD_INT 3
12039: PUSH
12040: LD_EXP 63
12044: PUSH
12045: LD_EXP 25
12049: ARRAY
12050: PUSH
12051: EMPTY
12052: LIST
12053: LIST
12054: PUSH
12055: LD_INT 7
12057: PUSH
12058: LD_INT 8
12060: NEG
12061: PUSH
12062: EMPTY
12063: LIST
12064: LIST
12065: LIST
12066: LIST
12067: LIST
12068: LIST
12069: PPUSH
12070: CALL_OW 399
12074: ST_TO_ADDR
// NorMcAttId := McAttack ( 12 , NorMcRegId , vehicles [ plat_i ] , [ [ mc_retreat_area_vehicles , near_base_area [ plat_i ] ] , [ mc_retreat_area_people , near_base_area [ plat_i ] ] , [ mc_retreat_lives_vehicles , 100 ] , [ mc_retreat_lives_people , 800 ] , mc_no_stop ] ) ;
12075: LD_ADDR_EXP 69
12079: PUSH
12080: LD_INT 12
12082: PPUSH
12083: LD_EXP 68
12087: PPUSH
12088: LD_EXP 77
12092: PUSH
12093: LD_EXP 25
12097: ARRAY
12098: PPUSH
12099: LD_INT 8
12101: PUSH
12102: LD_EXP 63
12106: PUSH
12107: LD_EXP 25
12111: ARRAY
12112: PUSH
12113: EMPTY
12114: LIST
12115: LIST
12116: PUSH
12117: LD_INT 7
12119: PUSH
12120: LD_EXP 63
12124: PUSH
12125: LD_EXP 25
12129: ARRAY
12130: PUSH
12131: EMPTY
12132: LIST
12133: LIST
12134: PUSH
12135: LD_INT 6
12137: PUSH
12138: LD_INT 100
12140: PUSH
12141: EMPTY
12142: LIST
12143: LIST
12144: PUSH
12145: LD_INT 5
12147: PUSH
12148: LD_INT 800
12150: PUSH
12151: EMPTY
12152: LIST
12153: LIST
12154: PUSH
12155: LD_INT 10
12157: PUSH
12158: EMPTY
12159: LIST
12160: LIST
12161: LIST
12162: LIST
12163: LIST
12164: PPUSH
12165: CALL_OW 402
12169: ST_TO_ADDR
// end ;
12170: LD_VAR 0 1
12174: RET
// function utok_na_vetrelce ( vetrelci , index_strany ) ; var nearest , units ; begin
12175: LD_INT 0
12177: PPUSH
12178: PPUSH
12179: PPUSH
// if vetrelci and ( ai_s [ index_strany ] in aiZ ) then
12180: LD_VAR 0 1
12184: PUSH
12185: LD_EXP 23
12189: PUSH
12190: LD_VAR 0 2
12194: ARRAY
12195: PUSH
12196: LD_EXP 21
12200: IN
12201: AND
12202: IFFALSE 12305
// begin nearest := NearestUnitToUnit ( vetrelci , depots [ index_strany ] ) ;
12204: LD_ADDR_VAR 0 4
12208: PUSH
12209: LD_VAR 0 1
12213: PPUSH
12214: LD_EXP 74
12218: PUSH
12219: LD_VAR 0 2
12223: ARRAY
12224: PPUSH
12225: CALL_OW 74
12229: ST_TO_ADDR
// if nearest then
12230: LD_VAR 0 4
12234: IFFALSE 12305
// begin units := attack_units isect vehicles [ index_strany ] ;
12236: LD_ADDR_VAR 0 5
12240: PUSH
12241: LD_EXP 78
12245: PUSH
12246: LD_EXP 77
12250: PUSH
12251: LD_VAR 0 2
12255: ARRAY
12256: ISECT
12257: ST_TO_ADDR
// ComRemember ( units ) ;
12258: LD_VAR 0 5
12262: PPUSH
12263: CALL_OW 143
// AddComAgressiveMove ( units , GetX ( nearest ) , GetY ( nearest ) ) ;
12267: LD_VAR 0 5
12271: PPUSH
12272: LD_VAR 0 4
12276: PPUSH
12277: CALL_OW 250
12281: PPUSH
12282: LD_VAR 0 4
12286: PPUSH
12287: CALL_OW 251
12291: PPUSH
12292: CALL_OW 174
// AddComReturn ( units ) ;
12296: LD_VAR 0 5
12300: PPUSH
12301: CALL_OW 204
// end ; end ; end ;
12305: LD_VAR 0 3
12309: RET
// every 0 0$10 do var i , a ;
12310: GO 12312
12312: DISABLE
12313: LD_INT 0
12315: PPUSH
12316: PPUSH
// begin for i := 1 to 5 do
12317: LD_ADDR_VAR 0 1
12321: PUSH
12322: DOUBLE
12323: LD_INT 1
12325: DEC
12326: ST_TO_ADDR
12327: LD_INT 5
12329: PUSH
12330: FOR_TO
12331: IFFALSE 12470
// begin a := UnitFilter ( your_humans ^ your_cars , [ [ f_inarea , near_base_area [ i ] ] ] ) ;
12333: LD_ADDR_VAR 0 2
12337: PUSH
12338: LD_EXP 37
12342: PUSH
12343: LD_EXP 35
12347: ADD
12348: PPUSH
12349: LD_INT 95
12351: PUSH
12352: LD_EXP 63
12356: PUSH
12357: LD_VAR 0 1
12361: ARRAY
12362: PUSH
12363: EMPTY
12364: LIST
12365: LIST
12366: PUSH
12367: EMPTY
12368: LIST
12369: PPUSH
12370: CALL_OW 72
12374: ST_TO_ADDR
// if a and ai_s [ i ] in aiZ then
12375: LD_VAR 0 2
12379: PUSH
12380: LD_EXP 23
12384: PUSH
12385: LD_VAR 0 1
12389: ARRAY
12390: PUSH
12391: LD_EXP 21
12395: IN
12396: AND
12397: IFFALSE 12438
// begin under_attack := replace ( under_attack , i , true ) ;
12399: LD_ADDR_EXP 62
12403: PUSH
12404: LD_EXP 62
12408: PPUSH
12409: LD_VAR 0 1
12413: PPUSH
12414: LD_INT 1
12416: PPUSH
12417: CALL_OW 1
12421: ST_TO_ADDR
// utok_na_vetrelce ( a , i ) ;
12422: LD_VAR 0 2
12426: PPUSH
12427: LD_VAR 0 1
12431: PPUSH
12432: CALL 12175 0 2
// end else
12436: GO 12461
// under_attack := replace ( under_attack , i , false ) ;
12438: LD_ADDR_EXP 62
12442: PUSH
12443: LD_EXP 62
12447: PPUSH
12448: LD_VAR 0 1
12452: PPUSH
12453: LD_INT 0
12455: PPUSH
12456: CALL_OW 1
12460: ST_TO_ADDR
// wait ( 0 0$2 ) ;
12461: LD_INT 70
12463: PPUSH
12464: CALL_OW 67
// end ;
12468: GO 12330
12470: POP
12471: POP
// enable ;
12472: ENABLE
// end ; end_of_file
12473: PPOPN 2
12475: END
// var repair_site ; export rc ; export bc ; export function inicializace_ai_c_repair ; begin
12476: LD_INT 0
12478: PPUSH
// repair_site := [ [ 30 , 29 ] , [ 89 , 17 ] , [ 72 , 125 ] , [ 215 , 140 ] , [ 184 , 85 ] ] ;
12479: LD_ADDR_LOC 16
12483: PUSH
12484: LD_INT 30
12486: PUSH
12487: LD_INT 29
12489: PUSH
12490: EMPTY
12491: LIST
12492: LIST
12493: PUSH
12494: LD_INT 89
12496: PUSH
12497: LD_INT 17
12499: PUSH
12500: EMPTY
12501: LIST
12502: LIST
12503: PUSH
12504: LD_INT 72
12506: PUSH
12507: LD_INT 125
12509: PUSH
12510: EMPTY
12511: LIST
12512: LIST
12513: PUSH
12514: LD_INT 215
12516: PUSH
12517: LD_INT 140
12519: PUSH
12520: EMPTY
12521: LIST
12522: LIST
12523: PUSH
12524: LD_INT 184
12526: PUSH
12527: LD_INT 85
12529: PUSH
12530: EMPTY
12531: LIST
12532: LIST
12533: PUSH
12534: EMPTY
12535: LIST
12536: LIST
12537: LIST
12538: LIST
12539: LIST
12540: ST_TO_ADDR
// bc := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
12541: LD_ADDR_EXP 71
12545: PUSH
12546: EMPTY
12547: PUSH
12548: EMPTY
12549: PUSH
12550: EMPTY
12551: PUSH
12552: EMPTY
12553: PUSH
12554: EMPTY
12555: PUSH
12556: EMPTY
12557: LIST
12558: LIST
12559: LIST
12560: LIST
12561: LIST
12562: ST_TO_ADDR
// rc := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
12563: LD_ADDR_EXP 70
12567: PUSH
12568: EMPTY
12569: PUSH
12570: EMPTY
12571: PUSH
12572: EMPTY
12573: PUSH
12574: EMPTY
12575: PUSH
12576: EMPTY
12577: PUSH
12578: EMPTY
12579: LIST
12580: LIST
12581: LIST
12582: LIST
12583: LIST
12584: ST_TO_ADDR
// end ;
12585: LD_VAR 0 1
12589: RET
// every 0 0$5.0 + 0 0$0.5 do var i ;
12590: GO 12592
12592: DISABLE
12593: LD_INT 0
12595: PPUSH
// begin for i := 1 to 5 do
12596: LD_ADDR_VAR 0 1
12600: PUSH
12601: DOUBLE
12602: LD_INT 1
12604: DEC
12605: ST_TO_ADDR
12606: LD_INT 5
12608: PUSH
12609: FOR_TO
12610: IFFALSE 12665
// if ai_s [ i ] in ai then
12612: LD_EXP 23
12616: PUSH
12617: LD_VAR 0 1
12621: ARRAY
12622: PUSH
12623: LD_EXP 24
12627: IN
12628: IFFALSE 12663
// begin dop_pal ( vehicles [ i ] , depots [ i ] ) ;
12630: LD_EXP 77
12634: PUSH
12635: LD_VAR 0 1
12639: ARRAY
12640: PPUSH
12641: LD_EXP 74
12645: PUSH
12646: LD_VAR 0 1
12650: ARRAY
12651: PPUSH
12652: CALL 12671 0 2
// wait ( 0 0$1 ) ;
12656: LD_INT 35
12658: PPUSH
12659: CALL_OW 67
// end ;
12663: GO 12609
12665: POP
12666: POP
// enable ;
12667: ENABLE
// end ;
12668: PPOPN 1
12670: END
// function dop_pal ( tc , tdep ) ; var set_fuel , fuel ; begin
12671: LD_INT 0
12673: PPUSH
12674: PPUSH
12675: PPUSH
// for set_fuel in UnitFilter ( tc , [ [ f_dist , tdep , 40 ] ] ) do
12676: LD_ADDR_VAR 0 4
12680: PUSH
12681: LD_VAR 0 1
12685: PPUSH
12686: LD_INT 91
12688: PUSH
12689: LD_VAR 0 2
12693: PUSH
12694: LD_INT 40
12696: PUSH
12697: EMPTY
12698: LIST
12699: LIST
12700: LIST
12701: PUSH
12702: EMPTY
12703: LIST
12704: PPUSH
12705: CALL_OW 72
12709: PUSH
12710: FOR_IN
12711: IFFALSE 12758
// begin fuel := GetFuel ( set_fuel ) ;
12713: LD_ADDR_VAR 0 5
12717: PUSH
12718: LD_VAR 0 4
12722: PPUSH
12723: CALL_OW 261
12727: ST_TO_ADDR
// if fuel <= 80 then
12728: LD_VAR 0 5
12732: PUSH
12733: LD_INT 80
12735: LESSEQUAL
12736: IFFALSE 12756
// SetFuel ( set_fuel , fuel + 20 ) ;
12738: LD_VAR 0 4
12742: PPUSH
12743: LD_VAR 0 5
12747: PUSH
12748: LD_INT 20
12750: PLUS
12751: PPUSH
12752: CALL_OW 240
// end ;
12756: GO 12710
12758: POP
12759: POP
// end ;
12760: LD_VAR 0 3
12764: RET
// every 0 0$5 + 0 0$0.3 do var zivoty , i , rem_t , add_t , k ;
12765: GO 12767
12767: DISABLE
12768: LD_INT 0
12770: PPUSH
12771: PPUSH
12772: PPUSH
12773: PPUSH
12774: PPUSH
// begin for k := 1 to 5 do
12775: LD_ADDR_VAR 0 5
12779: PUSH
12780: DOUBLE
12781: LD_INT 1
12783: DEC
12784: ST_TO_ADDR
12785: LD_INT 5
12787: PUSH
12788: FOR_TO
12789: IFFALSE 13107
// if ai_s [ k ] in ai then
12791: LD_EXP 23
12795: PUSH
12796: LD_VAR 0 5
12800: ARRAY
12801: PUSH
12802: LD_EXP 24
12806: IN
12807: IFFALSE 13083
// begin rem_t := [ ] ;
12809: LD_ADDR_VAR 0 3
12813: PUSH
12814: EMPTY
12815: ST_TO_ADDR
// add_t := [ ] ;
12816: LD_ADDR_VAR 0 4
12820: PUSH
12821: EMPTY
12822: ST_TO_ADDR
// for i in UnitFilter ( vehicles [ k ] , [ [ f_not , [ f_side , you ] ] ] ) do
12823: LD_ADDR_VAR 0 2
12827: PUSH
12828: LD_EXP 77
12832: PUSH
12833: LD_VAR 0 5
12837: ARRAY
12838: PPUSH
12839: LD_INT 3
12841: PUSH
12842: LD_INT 22
12844: PUSH
12845: LD_EXP 7
12849: PUSH
12850: EMPTY
12851: LIST
12852: LIST
12853: PUSH
12854: EMPTY
12855: LIST
12856: LIST
12857: PUSH
12858: EMPTY
12859: LIST
12860: PPUSH
12861: CALL_OW 72
12865: PUSH
12866: FOR_IN
12867: IFFALSE 12935
// begin if GetLives ( i ) < 500 then
12869: LD_VAR 0 2
12873: PPUSH
12874: CALL_OW 256
12878: PUSH
12879: LD_INT 500
12881: LESS
12882: IFFALSE 12902
// begin rem_t := rem_t ^ i ;
12884: LD_ADDR_VAR 0 3
12888: PUSH
12889: LD_VAR 0 3
12893: PUSH
12894: LD_VAR 0 2
12898: ADD
12899: ST_TO_ADDR
// end else
12900: GO 12933
// if GetLives ( i ) >= 950 then
12902: LD_VAR 0 2
12906: PPUSH
12907: CALL_OW 256
12911: PUSH
12912: LD_INT 950
12914: GREATEREQUAL
12915: IFFALSE 12933
// begin add_t := add_t ^ i ;
12917: LD_ADDR_VAR 0 4
12921: PUSH
12922: LD_VAR 0 4
12926: PUSH
12927: LD_VAR 0 2
12931: ADD
12932: ST_TO_ADDR
// end ; end ;
12933: GO 12866
12935: POP
12936: POP
// bc := replace ( bc , k , bc [ k ] union rem_t ) ;
12937: LD_ADDR_EXP 71
12941: PUSH
12942: LD_EXP 71
12946: PPUSH
12947: LD_VAR 0 5
12951: PPUSH
12952: LD_EXP 71
12956: PUSH
12957: LD_VAR 0 5
12961: ARRAY
12962: PUSH
12963: LD_VAR 0 3
12967: UNION
12968: PPUSH
12969: CALL_OW 1
12973: ST_TO_ADDR
// bc := replace ( bc , k , bc [ k ] diff add_t ) ;
12974: LD_ADDR_EXP 71
12978: PUSH
12979: LD_EXP 71
12983: PPUSH
12984: LD_VAR 0 5
12988: PPUSH
12989: LD_EXP 71
12993: PUSH
12994: LD_VAR 0 5
12998: ARRAY
12999: PUSH
13000: LD_VAR 0 4
13004: DIFF
13005: PPUSH
13006: CALL_OW 1
13010: ST_TO_ADDR
// remove_from_vehicles ( rem_t ) ;
13011: LD_VAR 0 3
13015: PPUSH
13016: CALL 28161 0 1
// add_to_vehicles ( add_t ) ;
13020: LD_VAR 0 4
13024: PPUSH
13025: CALL 26830 0 1
// ComMoveXY ( bc [ k ] , repair_site [ k ] [ 1 ] , repair_site [ k ] [ 2 ] ) ;
13029: LD_EXP 71
13033: PUSH
13034: LD_VAR 0 5
13038: ARRAY
13039: PPUSH
13040: LD_LOC 16
13044: PUSH
13045: LD_VAR 0 5
13049: ARRAY
13050: PUSH
13051: LD_INT 1
13053: ARRAY
13054: PPUSH
13055: LD_LOC 16
13059: PUSH
13060: LD_VAR 0 5
13064: ARRAY
13065: PUSH
13066: LD_INT 2
13068: ARRAY
13069: PPUSH
13070: CALL_OW 111
// wait ( 0 0$0.9 ) ;
13074: LD_INT 32
13076: PPUSH
13077: CALL_OW 67
// end else
13081: GO 13105
// bc := replace ( bc , k , [ ] ) ;
13083: LD_ADDR_EXP 71
13087: PUSH
13088: LD_EXP 71
13092: PPUSH
13093: LD_VAR 0 5
13097: PPUSH
13098: EMPTY
13099: PPUSH
13100: CALL_OW 1
13104: ST_TO_ADDR
13105: GO 12788
13107: POP
13108: POP
// enable ;
13109: ENABLE
// end ;
13110: PPOPN 5
13112: END
// every 0 0$5 + 0 0$0.1 do var zivoty , i , rc_t , k ;
13113: GO 13115
13115: DISABLE
13116: LD_INT 0
13118: PPUSH
13119: PPUSH
13120: PPUSH
13121: PPUSH
// begin for k := 1 to 5 do
13122: LD_ADDR_VAR 0 4
13126: PUSH
13127: DOUBLE
13128: LD_INT 1
13130: DEC
13131: ST_TO_ADDR
13132: LD_INT 5
13134: PUSH
13135: FOR_TO
13136: IFFALSE 13303
// if ai_s [ k ] in ai then
13138: LD_EXP 23
13142: PUSH
13143: LD_VAR 0 4
13147: ARRAY
13148: PUSH
13149: LD_EXP 24
13153: IN
13154: IFFALSE 13279
// begin rc_t := [ ] ;
13156: LD_ADDR_VAR 0 3
13160: PUSH
13161: EMPTY
13162: ST_TO_ADDR
// for i in bc [ k ] do
13163: LD_ADDR_VAR 0 2
13167: PUSH
13168: LD_EXP 71
13172: PUSH
13173: LD_VAR 0 4
13177: ARRAY
13178: PUSH
13179: FOR_IN
13180: IFFALSE 13236
// begin if GetLives ( i ) < 950 then
13182: LD_VAR 0 2
13186: PPUSH
13187: CALL_OW 256
13191: PUSH
13192: LD_INT 950
13194: LESS
13195: IFFALSE 13234
// begin rc_t := rc_t ^ i ;
13197: LD_ADDR_VAR 0 3
13201: PUSH
13202: LD_VAR 0 3
13206: PUSH
13207: LD_VAR 0 2
13211: ADD
13212: ST_TO_ADDR
// zivoty := zivoty ^ GetLives ( i ) ;
13213: LD_ADDR_VAR 0 1
13217: PUSH
13218: LD_VAR 0 1
13222: PUSH
13223: LD_VAR 0 2
13227: PPUSH
13228: CALL_OW 256
13232: ADD
13233: ST_TO_ADDR
// end ; end ;
13234: GO 13179
13236: POP
13237: POP
// SortListByListAsc ( rc_t , zivoty ) ;
13238: LD_VAR 0 3
13242: PPUSH
13243: LD_VAR 0 1
13247: PPUSH
13248: CALL_OW 76
// rc := replace ( rc , k , rc_t ) ;
13252: LD_ADDR_EXP 70
13256: PUSH
13257: LD_EXP 70
13261: PPUSH
13262: LD_VAR 0 4
13266: PPUSH
13267: LD_VAR 0 3
13271: PPUSH
13272: CALL_OW 1
13276: ST_TO_ADDR
// end else
13277: GO 13301
// rc := replace ( rc , k , [ ] ) ;
13279: LD_ADDR_EXP 70
13283: PUSH
13284: LD_EXP 70
13288: PPUSH
13289: LD_VAR 0 4
13293: PPUSH
13294: EMPTY
13295: PPUSH
13296: CALL_OW 1
13300: ST_TO_ADDR
13301: GO 13135
13303: POP
13304: POP
// enable ;
13305: ENABLE
// end ;
13306: PPOPN 4
13308: END
// every 0 0$5 + 0 0$0.9 do var i ;
13309: GO 13311
13311: DISABLE
13312: LD_INT 0
13314: PPUSH
// begin for i := 1 to 5 do
13315: LD_ADDR_VAR 0 1
13319: PUSH
13320: DOUBLE
13321: LD_INT 1
13323: DEC
13324: ST_TO_ADDR
13325: LD_INT 5
13327: PUSH
13328: FOR_TO
13329: IFFALSE 13384
// if ai_s [ i ] in ai then
13331: LD_EXP 23
13335: PUSH
13336: LD_VAR 0 1
13340: ARRAY
13341: PUSH
13342: LD_EXP 24
13346: IN
13347: IFFALSE 13382
// begin rep ( ai_s [ i ] , rc [ i ] ) ;
13349: LD_EXP 23
13353: PUSH
13354: LD_VAR 0 1
13358: ARRAY
13359: PPUSH
13360: LD_EXP 70
13364: PUSH
13365: LD_VAR 0 1
13369: ARRAY
13370: PPUSH
13371: CALL 13390 0 2
// wait ( 0 0$0.8 ) ;
13375: LD_INT 28
13377: PPUSH
13378: CALL_OW 67
// end ;
13382: GO 13328
13384: POP
13385: POP
// enable ;
13386: ENABLE
// end ;
13387: PPOPN 1
13389: END
// function rep ( side , rep_cars ) ; var a ; begin
13390: LD_INT 0
13392: PPUSH
13393: PPUSH
// if ( side in ai ) and rep_cars then
13394: LD_VAR 0 1
13398: PUSH
13399: LD_EXP 24
13403: IN
13404: PUSH
13405: LD_VAR 0 2
13409: AND
13410: IFFALSE 13939
// begin if rep_cars [ 1 ] < 400 then
13412: LD_VAR 0 2
13416: PUSH
13417: LD_INT 1
13419: ARRAY
13420: PUSH
13421: LD_INT 400
13423: LESS
13424: IFFALSE 13523
// begin a := get_x_best ( UnitFilter ( mec , [ [ f_side , side ] , [ f_dist , rep_cars [ 1 ] , 20 ] ] ) , 2 , skill_mechanical , 0 , false ) ;
13426: LD_ADDR_VAR 0 4
13430: PUSH
13431: LD_EXP 86
13435: PPUSH
13436: LD_INT 22
13438: PUSH
13439: LD_VAR 0 1
13443: PUSH
13444: EMPTY
13445: LIST
13446: LIST
13447: PUSH
13448: LD_INT 91
13450: PUSH
13451: LD_VAR 0 2
13455: PUSH
13456: LD_INT 1
13458: ARRAY
13459: PUSH
13460: LD_INT 20
13462: PUSH
13463: EMPTY
13464: LIST
13465: LIST
13466: LIST
13467: PUSH
13468: EMPTY
13469: LIST
13470: LIST
13471: PPUSH
13472: CALL_OW 72
13476: PPUSH
13477: LD_INT 2
13479: PPUSH
13480: LD_INT 3
13482: PPUSH
13483: LD_INT 0
13485: PPUSH
13486: LD_INT 0
13488: PPUSH
13489: CALL 10025 0 5
13493: ST_TO_ADDR
// ComExitBuilding ( a ) ;
13494: LD_VAR 0 4
13498: PPUSH
13499: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 1 ] ) ;
13503: LD_VAR 0 4
13507: PPUSH
13508: LD_VAR 0 2
13512: PUSH
13513: LD_INT 1
13515: ARRAY
13516: PPUSH
13517: CALL_OW 189
// end else
13521: GO 13939
// if rep_cars [ 1 ] < 700 or rep_cars >= 2 then
13523: LD_VAR 0 2
13527: PUSH
13528: LD_INT 1
13530: ARRAY
13531: PUSH
13532: LD_INT 700
13534: LESS
13535: PUSH
13536: LD_VAR 0 2
13540: PUSH
13541: LD_INT 2
13543: GREATEREQUAL
13544: OR
13545: IFFALSE 13739
// begin a := get_x_best ( UnitFilter ( mec , [ [ f_side , side ] , [ f_dist , rep_cars [ 1 ] , 20 ] ] ) , 1 , skill_mechanical , 0 , false ) ;
13547: LD_ADDR_VAR 0 4
13551: PUSH
13552: LD_EXP 86
13556: PPUSH
13557: LD_INT 22
13559: PUSH
13560: LD_VAR 0 1
13564: PUSH
13565: EMPTY
13566: LIST
13567: LIST
13568: PUSH
13569: LD_INT 91
13571: PUSH
13572: LD_VAR 0 2
13576: PUSH
13577: LD_INT 1
13579: ARRAY
13580: PUSH
13581: LD_INT 20
13583: PUSH
13584: EMPTY
13585: LIST
13586: LIST
13587: LIST
13588: PUSH
13589: EMPTY
13590: LIST
13591: LIST
13592: PPUSH
13593: CALL_OW 72
13597: PPUSH
13598: LD_INT 1
13600: PPUSH
13601: LD_INT 3
13603: PPUSH
13604: LD_INT 0
13606: PPUSH
13607: LD_INT 0
13609: PPUSH
13610: CALL 10025 0 5
13614: ST_TO_ADDR
// ComExitBuilding ( a ) ;
13615: LD_VAR 0 4
13619: PPUSH
13620: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 1 ] ) ;
13624: LD_VAR 0 4
13628: PPUSH
13629: LD_VAR 0 2
13633: PUSH
13634: LD_INT 1
13636: ARRAY
13637: PPUSH
13638: CALL_OW 189
// a := get_x_best ( UnitFilter ( mec , [ [ f_side , side ] , [ f_dist , rep_cars [ 2 ] , 20 ] ] ) , 1 , skill_mechanical , 0 , true ) ;
13642: LD_ADDR_VAR 0 4
13646: PUSH
13647: LD_EXP 86
13651: PPUSH
13652: LD_INT 22
13654: PUSH
13655: LD_VAR 0 1
13659: PUSH
13660: EMPTY
13661: LIST
13662: LIST
13663: PUSH
13664: LD_INT 91
13666: PUSH
13667: LD_VAR 0 2
13671: PUSH
13672: LD_INT 2
13674: ARRAY
13675: PUSH
13676: LD_INT 20
13678: PUSH
13679: EMPTY
13680: LIST
13681: LIST
13682: LIST
13683: PUSH
13684: EMPTY
13685: LIST
13686: LIST
13687: PPUSH
13688: CALL_OW 72
13692: PPUSH
13693: LD_INT 1
13695: PPUSH
13696: LD_INT 3
13698: PPUSH
13699: LD_INT 0
13701: PPUSH
13702: LD_INT 1
13704: PPUSH
13705: CALL 10025 0 5
13709: ST_TO_ADDR
// ComExitBuilding ( a ) ;
13710: LD_VAR 0 4
13714: PPUSH
13715: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 2 ] ) ;
13719: LD_VAR 0 4
13723: PPUSH
13724: LD_VAR 0 2
13728: PUSH
13729: LD_INT 2
13731: ARRAY
13732: PPUSH
13733: CALL_OW 189
// end else
13737: GO 13939
// if rep_cars >= 3 then
13739: LD_VAR 0 2
13743: PUSH
13744: LD_INT 3
13746: GREATEREQUAL
13747: IFFALSE 13939
// begin a := get_x_best ( UnitFilter ( mec , [ [ f_side , side ] , [ f_dist , rep_cars [ 1 ] , 20 ] ] ) , 2 , skill_mechanical , 0 , false ) ;
13749: LD_ADDR_VAR 0 4
13753: PUSH
13754: LD_EXP 86
13758: PPUSH
13759: LD_INT 22
13761: PUSH
13762: LD_VAR 0 1
13766: PUSH
13767: EMPTY
13768: LIST
13769: LIST
13770: PUSH
13771: LD_INT 91
13773: PUSH
13774: LD_VAR 0 2
13778: PUSH
13779: LD_INT 1
13781: ARRAY
13782: PUSH
13783: LD_INT 20
13785: PUSH
13786: EMPTY
13787: LIST
13788: LIST
13789: LIST
13790: PUSH
13791: EMPTY
13792: LIST
13793: LIST
13794: PPUSH
13795: CALL_OW 72
13799: PPUSH
13800: LD_INT 2
13802: PPUSH
13803: LD_INT 3
13805: PPUSH
13806: LD_INT 0
13808: PPUSH
13809: LD_INT 0
13811: PPUSH
13812: CALL 10025 0 5
13816: ST_TO_ADDR
// ComExitBuilding ( a ) ;
13817: LD_VAR 0 4
13821: PPUSH
13822: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 1 ] ) ;
13826: LD_VAR 0 4
13830: PPUSH
13831: LD_VAR 0 2
13835: PUSH
13836: LD_INT 1
13838: ARRAY
13839: PPUSH
13840: CALL_OW 189
// a := get_x_best ( UnitFilter ( mec , [ [ f_side , side ] , [ f_dist , rep_cars [ 2 ] , 20 ] ] ) , 2 , skill_mechanical , 0 , true ) ;
13844: LD_ADDR_VAR 0 4
13848: PUSH
13849: LD_EXP 86
13853: PPUSH
13854: LD_INT 22
13856: PUSH
13857: LD_VAR 0 1
13861: PUSH
13862: EMPTY
13863: LIST
13864: LIST
13865: PUSH
13866: LD_INT 91
13868: PUSH
13869: LD_VAR 0 2
13873: PUSH
13874: LD_INT 2
13876: ARRAY
13877: PUSH
13878: LD_INT 20
13880: PUSH
13881: EMPTY
13882: LIST
13883: LIST
13884: LIST
13885: PUSH
13886: EMPTY
13887: LIST
13888: LIST
13889: PPUSH
13890: CALL_OW 72
13894: PPUSH
13895: LD_INT 2
13897: PPUSH
13898: LD_INT 3
13900: PPUSH
13901: LD_INT 0
13903: PPUSH
13904: LD_INT 1
13906: PPUSH
13907: CALL 10025 0 5
13911: ST_TO_ADDR
// ComExitBuilding ( a ) ;
13912: LD_VAR 0 4
13916: PPUSH
13917: CALL_OW 122
// AddComRepairVehicle ( a , rep_cars [ 2 ] ) ;
13921: LD_VAR 0 4
13925: PPUSH
13926: LD_VAR 0 2
13930: PUSH
13931: LD_INT 2
13933: ARRAY
13934: PPUSH
13935: CALL_OW 189
// end ; end ; end ; end_of_file
13939: LD_VAR 0 3
13943: RET
// var d1 , d2 , d3 , d5 , d6 , d7 ; export function inicializace_ai_c_make ; begin
13944: LD_INT 0
13946: PPUSH
// d1 := [ ru_heavy_wheeled , engine_combustion , control_manual , ru_gatling_gun ] ;
13947: LD_ADDR_LOC 17
13951: PUSH
13952: LD_INT 23
13954: PUSH
13955: LD_INT 1
13957: PUSH
13958: LD_INT 1
13960: PUSH
13961: LD_INT 43
13963: PUSH
13964: EMPTY
13965: LIST
13966: LIST
13967: LIST
13968: LIST
13969: ST_TO_ADDR
// d2 := [ ru_heavy_wheeled , engine_combustion , control_manual , ru_rocket_launcher ] ;
13970: LD_ADDR_LOC 18
13974: PUSH
13975: LD_INT 23
13977: PUSH
13978: LD_INT 1
13980: PUSH
13981: LD_INT 1
13983: PUSH
13984: LD_INT 45
13986: PUSH
13987: EMPTY
13988: LIST
13989: LIST
13990: LIST
13991: LIST
13992: ST_TO_ADDR
// d3 := [ ru_heavy_wheeled , engine_combustion , control_manual , ru_heavy_gun ] ;
13993: LD_ADDR_LOC 19
13997: PUSH
13998: LD_INT 23
14000: PUSH
14001: LD_INT 1
14003: PUSH
14004: LD_INT 1
14006: PUSH
14007: LD_INT 46
14009: PUSH
14010: EMPTY
14011: LIST
14012: LIST
14013: LIST
14014: LIST
14015: ST_TO_ADDR
// d5 := [ ru_heavy_wheeled , engine_siberite , control_computer , ru_gatling_gun ] ;
14016: LD_ADDR_LOC 20
14020: PUSH
14021: LD_INT 23
14023: PUSH
14024: LD_INT 3
14026: PUSH
14027: LD_INT 3
14029: PUSH
14030: LD_INT 43
14032: PUSH
14033: EMPTY
14034: LIST
14035: LIST
14036: LIST
14037: LIST
14038: ST_TO_ADDR
// d6 := [ ru_heavy_wheeled , engine_siberite , control_computer , ru_rocket_launcher ] ;
14039: LD_ADDR_LOC 21
14043: PUSH
14044: LD_INT 23
14046: PUSH
14047: LD_INT 3
14049: PUSH
14050: LD_INT 3
14052: PUSH
14053: LD_INT 45
14055: PUSH
14056: EMPTY
14057: LIST
14058: LIST
14059: LIST
14060: LIST
14061: ST_TO_ADDR
// d7 := [ ru_heavy_wheeled , engine_siberite , control_computer , ru_heavy_gun ] ;
14062: LD_ADDR_LOC 22
14066: PUSH
14067: LD_INT 23
14069: PUSH
14070: LD_INT 3
14072: PUSH
14073: LD_INT 3
14075: PUSH
14076: LD_INT 46
14078: PUSH
14079: EMPTY
14080: LIST
14081: LIST
14082: LIST
14083: LIST
14084: ST_TO_ADDR
// end ;
14085: LD_VAR 0 1
14089: RET
// every 0 0$3 do var i , a ;
14090: GO 14092
14092: DISABLE
14093: LD_INT 0
14095: PPUSH
14096: PPUSH
// begin for i := 1 to 5 do
14097: LD_ADDR_VAR 0 1
14101: PUSH
14102: DOUBLE
14103: LD_INT 1
14105: DEC
14106: ST_TO_ADDR
14107: LD_INT 5
14109: PUSH
14110: FOR_TO
14111: IFFALSE 14335
// begin if ai_s [ i ] in ai then
14113: LD_EXP 23
14117: PUSH
14118: LD_VAR 0 1
14122: ARRAY
14123: PUSH
14124: LD_EXP 24
14128: IN
14129: IFFALSE 14333
// begin if depots [ i ] then
14131: LD_EXP 74
14135: PUSH
14136: LD_VAR 0 1
14140: ARRAY
14141: IFFALSE 14333
// begin if GetResourceType ( GetBase ( depots [ i ] [ 1 ] ) , mat_cans ) < 150 then
14143: LD_EXP 74
14147: PUSH
14148: LD_VAR 0 1
14152: ARRAY
14153: PUSH
14154: LD_INT 1
14156: ARRAY
14157: PPUSH
14158: CALL_OW 274
14162: PPUSH
14163: LD_INT 1
14165: PPUSH
14166: CALL_OW 275
14170: PUSH
14171: LD_INT 150
14173: LESS
14174: IFFALSE 14218
// SetResourceType ( GetBase ( depots [ i ] [ 1 ] ) , mat_cans , 150 + Rand ( 50 , 100 ) ) ;
14176: LD_EXP 74
14180: PUSH
14181: LD_VAR 0 1
14185: ARRAY
14186: PUSH
14187: LD_INT 1
14189: ARRAY
14190: PPUSH
14191: CALL_OW 274
14195: PPUSH
14196: LD_INT 1
14198: PPUSH
14199: LD_INT 150
14201: PUSH
14202: LD_INT 50
14204: PPUSH
14205: LD_INT 100
14207: PPUSH
14208: CALL_OW 12
14212: PLUS
14213: PPUSH
14214: CALL_OW 277
// a := GetListOfCratesInArea ( near_base_area [ i ] ) ;
14218: LD_ADDR_VAR 0 2
14222: PUSH
14223: LD_EXP 63
14227: PUSH
14228: LD_VAR 0 1
14232: ARRAY
14233: PPUSH
14234: CALL_OW 435
14238: ST_TO_ADDR
// if a > 6 then
14239: LD_VAR 0 2
14243: PUSH
14244: LD_INT 6
14246: GREATER
14247: IFFALSE 14333
// for i in a do
14249: LD_ADDR_VAR 0 1
14253: PUSH
14254: LD_VAR 0 2
14258: PUSH
14259: FOR_IN
14260: IFFALSE 14331
// if not SeeXY ( you , i [ 1 ] , i [ 2 ] ) then
14262: LD_EXP 7
14266: PPUSH
14267: LD_VAR 0 1
14271: PUSH
14272: LD_INT 1
14274: ARRAY
14275: PPUSH
14276: LD_VAR 0 1
14280: PUSH
14281: LD_INT 2
14283: ARRAY
14284: PPUSH
14285: CALL_OW 293
14289: NOT
14290: IFFALSE 14329
// begin MoveAreaXY ( hexik , i [ 1 ] , i [ 2 ] ) ;
14292: LD_INT 32
14294: PPUSH
14295: LD_VAR 0 1
14299: PUSH
14300: LD_INT 1
14302: ARRAY
14303: PPUSH
14304: LD_VAR 0 1
14308: PUSH
14309: LD_INT 2
14311: ARRAY
14312: PPUSH
14313: CALL_OW 425
// EraseResourceArea ( hexik , mat_cans ) ;
14317: LD_INT 32
14319: PPUSH
14320: LD_INT 1
14322: PPUSH
14323: CALL_OW 286
// break ;
14327: GO 14331
// end ;
14329: GO 14259
14331: POP
14332: POP
// end ; end ; end ;
14333: GO 14110
14335: POP
14336: POP
// end ;
14337: PPOPN 2
14339: END
// function MyCanBeConstructed ( tfact , d ) ; begin
14340: LD_INT 0
14342: PPUSH
// result := CanBeConstructed ( tfact , d [ 1 ] , d [ 2 ] , d [ 3 ] , d [ 4 ] ) ;
14343: LD_ADDR_VAR 0 3
14347: PUSH
14348: LD_VAR 0 1
14352: PPUSH
14353: LD_VAR 0 2
14357: PUSH
14358: LD_INT 1
14360: ARRAY
14361: PPUSH
14362: LD_VAR 0 2
14366: PUSH
14367: LD_INT 2
14369: ARRAY
14370: PPUSH
14371: LD_VAR 0 2
14375: PUSH
14376: LD_INT 3
14378: ARRAY
14379: PPUSH
14380: LD_VAR 0 2
14384: PUSH
14385: LD_INT 4
14387: ARRAY
14388: PPUSH
14389: CALL_OW 448
14393: ST_TO_ADDR
// end ;
14394: LD_VAR 0 3
14398: RET
// function MyComConstruct ( tfact , d ) ; begin
14399: LD_INT 0
14401: PPUSH
// result := ComConstruct ( tfact , d [ 1 ] , d [ 2 ] , d [ 3 ] , d [ 4 ] ) ;
14402: LD_ADDR_VAR 0 3
14406: PUSH
14407: LD_VAR 0 1
14411: PPUSH
14412: LD_VAR 0 2
14416: PUSH
14417: LD_INT 1
14419: ARRAY
14420: PPUSH
14421: LD_VAR 0 2
14425: PUSH
14426: LD_INT 2
14428: ARRAY
14429: PPUSH
14430: LD_VAR 0 2
14434: PUSH
14435: LD_INT 3
14437: ARRAY
14438: PPUSH
14439: LD_VAR 0 2
14443: PUSH
14444: LD_INT 4
14446: ARRAY
14447: PPUSH
14448: CALL_OW 125
14452: ST_TO_ADDR
// end ;
14453: LD_VAR 0 3
14457: RET
// every 0 0$10 + 0 0$1.1 trigger IsOk ( factories [ 1 ] ) and IsIdle ( factories [ 1 ] ) do var a , tfact , def , att ;
14458: LD_EXP 73
14462: PUSH
14463: LD_INT 1
14465: ARRAY
14466: PPUSH
14467: CALL_OW 302
14471: PUSH
14472: LD_EXP 73
14476: PUSH
14477: LD_INT 1
14479: ARRAY
14480: PPUSH
14481: CALL_OW 316
14485: AND
14486: IFFALSE 14805
14488: GO 14490
14490: DISABLE
14491: LD_INT 0
14493: PPUSH
14494: PPUSH
14495: PPUSH
14496: PPUSH
// begin tfact := factories [ 1 ] ;
14497: LD_ADDR_VAR 0 2
14501: PUSH
14502: LD_EXP 73
14506: PUSH
14507: LD_INT 1
14509: ARRAY
14510: ST_TO_ADDR
// def := UnitFilter ( vehicles [ 1 ] , [ mf_manu ] ) ;
14511: LD_ADDR_VAR 0 3
14515: PUSH
14516: LD_EXP 77
14520: PUSH
14521: LD_INT 1
14523: ARRAY
14524: PPUSH
14525: LD_EXP 61
14529: PUSH
14530: EMPTY
14531: LIST
14532: PPUSH
14533: CALL_OW 72
14537: ST_TO_ADDR
// att := UnitFilter ( vehicles [ 1 ] , [ mf_comp ] ) ;
14538: LD_ADDR_VAR 0 4
14542: PUSH
14543: LD_EXP 77
14547: PUSH
14548: LD_INT 1
14550: ARRAY
14551: PPUSH
14552: LD_EXP 60
14556: PUSH
14557: EMPTY
14558: LIST
14559: PPUSH
14560: CALL_OW 72
14564: ST_TO_ADDR
// case true of def < 2 and MyCanBeConstructed ( tfact , d2 ) :
14565: LD_INT 1
14567: PUSH
14568: LD_VAR 0 3
14572: PUSH
14573: LD_INT 2
14575: LESS
14576: PUSH
14577: LD_VAR 0 2
14581: PPUSH
14582: LD_LOC 18
14586: PPUSH
14587: CALL 14340 0 2
14591: AND
14592: DOUBLE
14593: EQUAL
14594: IFTRUE 14598
14596: GO 14615
14598: POP
// begin MyComConstruct ( tfact , d2 ) ;
14599: LD_VAR 0 2
14603: PPUSH
14604: LD_LOC 18
14608: PPUSH
14609: CALL 14399 0 2
// end ; def < 3 and MyCanBeConstructed ( tfact , d3 ) :
14613: GO 14804
14615: LD_VAR 0 3
14619: PUSH
14620: LD_INT 3
14622: LESS
14623: PUSH
14624: LD_VAR 0 2
14628: PPUSH
14629: LD_LOC 19
14633: PPUSH
14634: CALL 14340 0 2
14638: AND
14639: DOUBLE
14640: EQUAL
14641: IFTRUE 14645
14643: GO 14662
14645: POP
// begin MyComConstruct ( tfact , d3 ) ;
14646: LD_VAR 0 2
14650: PPUSH
14651: LD_LOC 19
14655: PPUSH
14656: CALL 14399 0 2
// end ; att < 2 and MyCanBeConstructed ( tfact , d6 ) :
14660: GO 14804
14662: LD_VAR 0 4
14666: PUSH
14667: LD_INT 2
14669: LESS
14670: PUSH
14671: LD_VAR 0 2
14675: PPUSH
14676: LD_LOC 21
14680: PPUSH
14681: CALL 14340 0 2
14685: AND
14686: DOUBLE
14687: EQUAL
14688: IFTRUE 14692
14690: GO 14709
14692: POP
// begin MyComConstruct ( tfact , d6 ) ;
14693: LD_VAR 0 2
14697: PPUSH
14698: LD_LOC 21
14702: PPUSH
14703: CALL 14399 0 2
// end ; att < 3 and MyCanBeConstructed ( tfact , d5 ) :
14707: GO 14804
14709: LD_VAR 0 4
14713: PUSH
14714: LD_INT 3
14716: LESS
14717: PUSH
14718: LD_VAR 0 2
14722: PPUSH
14723: LD_LOC 20
14727: PPUSH
14728: CALL 14340 0 2
14732: AND
14733: DOUBLE
14734: EQUAL
14735: IFTRUE 14739
14737: GO 14756
14739: POP
// begin MyComConstruct ( tfact , d5 ) ;
14740: LD_VAR 0 2
14744: PPUSH
14745: LD_LOC 20
14749: PPUSH
14750: CALL 14399 0 2
// end ; att < 5 and MyCanBeConstructed ( tfact , d7 ) :
14754: GO 14804
14756: LD_VAR 0 4
14760: PUSH
14761: LD_INT 5
14763: LESS
14764: PUSH
14765: LD_VAR 0 2
14769: PPUSH
14770: LD_LOC 22
14774: PPUSH
14775: CALL 14340 0 2
14779: AND
14780: DOUBLE
14781: EQUAL
14782: IFTRUE 14786
14784: GO 14803
14786: POP
// begin MyComConstruct ( tfact , d7 ) ;
14787: LD_VAR 0 2
14791: PPUSH
14792: LD_LOC 22
14796: PPUSH
14797: CALL 14399 0 2
// end ; end ;
14801: GO 14804
14803: POP
// enable ;
14804: ENABLE
// end ;
14805: PPOPN 4
14807: END
// every 0 0$10 + 0 0$2.3 trigger IsOk ( factories [ 2 ] ) and IsIdle ( factories [ 2 ] ) do var a , tfact , def , att ;
14808: LD_EXP 73
14812: PUSH
14813: LD_INT 2
14815: ARRAY
14816: PPUSH
14817: CALL_OW 302
14821: PUSH
14822: LD_EXP 73
14826: PUSH
14827: LD_INT 2
14829: ARRAY
14830: PPUSH
14831: CALL_OW 316
14835: AND
14836: IFFALSE 15155
14838: GO 14840
14840: DISABLE
14841: LD_INT 0
14843: PPUSH
14844: PPUSH
14845: PPUSH
14846: PPUSH
// begin tfact := factories [ 2 ] ;
14847: LD_ADDR_VAR 0 2
14851: PUSH
14852: LD_EXP 73
14856: PUSH
14857: LD_INT 2
14859: ARRAY
14860: ST_TO_ADDR
// def := UnitFilter ( vehicles [ 2 ] , [ mf_manu ] ) ;
14861: LD_ADDR_VAR 0 3
14865: PUSH
14866: LD_EXP 77
14870: PUSH
14871: LD_INT 2
14873: ARRAY
14874: PPUSH
14875: LD_EXP 61
14879: PUSH
14880: EMPTY
14881: LIST
14882: PPUSH
14883: CALL_OW 72
14887: ST_TO_ADDR
// att := UnitFilter ( vehicles [ 2 ] , [ mf_comp ] ) ;
14888: LD_ADDR_VAR 0 4
14892: PUSH
14893: LD_EXP 77
14897: PUSH
14898: LD_INT 2
14900: ARRAY
14901: PPUSH
14902: LD_EXP 60
14906: PUSH
14907: EMPTY
14908: LIST
14909: PPUSH
14910: CALL_OW 72
14914: ST_TO_ADDR
// case true of def < 2 and MyCanBeConstructed ( tfact , d2 ) :
14915: LD_INT 1
14917: PUSH
14918: LD_VAR 0 3
14922: PUSH
14923: LD_INT 2
14925: LESS
14926: PUSH
14927: LD_VAR 0 2
14931: PPUSH
14932: LD_LOC 18
14936: PPUSH
14937: CALL 14340 0 2
14941: AND
14942: DOUBLE
14943: EQUAL
14944: IFTRUE 14948
14946: GO 14965
14948: POP
// begin MyComConstruct ( tfact , d2 ) ;
14949: LD_VAR 0 2
14953: PPUSH
14954: LD_LOC 18
14958: PPUSH
14959: CALL 14399 0 2
// end ; def < 3 and MyCanBeConstructed ( tfact , d3 ) :
14963: GO 15154
14965: LD_VAR 0 3
14969: PUSH
14970: LD_INT 3
14972: LESS
14973: PUSH
14974: LD_VAR 0 2
14978: PPUSH
14979: LD_LOC 19
14983: PPUSH
14984: CALL 14340 0 2
14988: AND
14989: DOUBLE
14990: EQUAL
14991: IFTRUE 14995
14993: GO 15012
14995: POP
// begin MyComConstruct ( tfact , d3 ) ;
14996: LD_VAR 0 2
15000: PPUSH
15001: LD_LOC 19
15005: PPUSH
15006: CALL 14399 0 2
// end ; att < 2 and MyCanBeConstructed ( tfact , d6 ) :
15010: GO 15154
15012: LD_VAR 0 4
15016: PUSH
15017: LD_INT 2
15019: LESS
15020: PUSH
15021: LD_VAR 0 2
15025: PPUSH
15026: LD_LOC 21
15030: PPUSH
15031: CALL 14340 0 2
15035: AND
15036: DOUBLE
15037: EQUAL
15038: IFTRUE 15042
15040: GO 15059
15042: POP
// begin MyComConstruct ( tfact , d6 ) ;
15043: LD_VAR 0 2
15047: PPUSH
15048: LD_LOC 21
15052: PPUSH
15053: CALL 14399 0 2
// end ; att < 3 and MyCanBeConstructed ( tfact , d5 ) :
15057: GO 15154
15059: LD_VAR 0 4
15063: PUSH
15064: LD_INT 3
15066: LESS
15067: PUSH
15068: LD_VAR 0 2
15072: PPUSH
15073: LD_LOC 20
15077: PPUSH
15078: CALL 14340 0 2
15082: AND
15083: DOUBLE
15084: EQUAL
15085: IFTRUE 15089
15087: GO 15106
15089: POP
// begin MyComConstruct ( tfact , d5 ) ;
15090: LD_VAR 0 2
15094: PPUSH
15095: LD_LOC 20
15099: PPUSH
15100: CALL 14399 0 2
// end ; att < 5 and MyCanBeConstructed ( tfact , d7 ) :
15104: GO 15154
15106: LD_VAR 0 4
15110: PUSH
15111: LD_INT 5
15113: LESS
15114: PUSH
15115: LD_VAR 0 2
15119: PPUSH
15120: LD_LOC 22
15124: PPUSH
15125: CALL 14340 0 2
15129: AND
15130: DOUBLE
15131: EQUAL
15132: IFTRUE 15136
15134: GO 15153
15136: POP
// begin MyComConstruct ( tfact , d7 ) ;
15137: LD_VAR 0 2
15141: PPUSH
15142: LD_LOC 22
15146: PPUSH
15147: CALL 14399 0 2
// end ; end ;
15151: GO 15154
15153: POP
// enable ;
15154: ENABLE
// end ;
15155: PPOPN 4
15157: END
// every 0 0$10 + 0 0$3.4 trigger IsOk ( factories [ 3 ] ) and IsIdle ( factories [ 3 ] ) do var a , tfact , def , att ;
15158: LD_EXP 73
15162: PUSH
15163: LD_INT 3
15165: ARRAY
15166: PPUSH
15167: CALL_OW 302
15171: PUSH
15172: LD_EXP 73
15176: PUSH
15177: LD_INT 3
15179: ARRAY
15180: PPUSH
15181: CALL_OW 316
15185: AND
15186: IFFALSE 15411
15188: GO 15190
15190: DISABLE
15191: LD_INT 0
15193: PPUSH
15194: PPUSH
15195: PPUSH
15196: PPUSH
// begin tfact := factories [ 3 ] ;
15197: LD_ADDR_VAR 0 2
15201: PUSH
15202: LD_EXP 73
15206: PUSH
15207: LD_INT 3
15209: ARRAY
15210: ST_TO_ADDR
// def := UnitFilter ( vehicles [ 3 ] , [ mf_manu ] ) ;
15211: LD_ADDR_VAR 0 3
15215: PUSH
15216: LD_EXP 77
15220: PUSH
15221: LD_INT 3
15223: ARRAY
15224: PPUSH
15225: LD_EXP 61
15229: PUSH
15230: EMPTY
15231: LIST
15232: PPUSH
15233: CALL_OW 72
15237: ST_TO_ADDR
// att := UnitFilter ( vehicles [ 3 ] , [ mf_comp ] ) ;
15238: LD_ADDR_VAR 0 4
15242: PUSH
15243: LD_EXP 77
15247: PUSH
15248: LD_INT 3
15250: ARRAY
15251: PPUSH
15252: LD_EXP 60
15256: PUSH
15257: EMPTY
15258: LIST
15259: PPUSH
15260: CALL_OW 72
15264: ST_TO_ADDR
// case true of def < 1 and MyCanBeConstructed ( tfact , d2 ) :
15265: LD_INT 1
15267: PUSH
15268: LD_VAR 0 3
15272: PUSH
15273: LD_INT 1
15275: LESS
15276: PUSH
15277: LD_VAR 0 2
15281: PPUSH
15282: LD_LOC 18
15286: PPUSH
15287: CALL 14340 0 2
15291: AND
15292: DOUBLE
15293: EQUAL
15294: IFTRUE 15298
15296: GO 15315
15298: POP
// begin MyComConstruct ( tfact , d2 ) ;
15299: LD_VAR 0 2
15303: PPUSH
15304: LD_LOC 18
15308: PPUSH
15309: CALL 14399 0 2
// end ; att < 2 and MyCanBeConstructed ( tfact , d6 ) :
15313: GO 15410
15315: LD_VAR 0 4
15319: PUSH
15320: LD_INT 2
15322: LESS
15323: PUSH
15324: LD_VAR 0 2
15328: PPUSH
15329: LD_LOC 21
15333: PPUSH
15334: CALL 14340 0 2
15338: AND
15339: DOUBLE
15340: EQUAL
15341: IFTRUE 15345
15343: GO 15362
15345: POP
// begin MyComConstruct ( tfact , d6 ) ;
15346: LD_VAR 0 2
15350: PPUSH
15351: LD_LOC 21
15355: PPUSH
15356: CALL 14399 0 2
// end ; att < 4 and MyCanBeConstructed ( tfact , d7 ) :
15360: GO 15410
15362: LD_VAR 0 4
15366: PUSH
15367: LD_INT 4
15369: LESS
15370: PUSH
15371: LD_VAR 0 2
15375: PPUSH
15376: LD_LOC 22
15380: PPUSH
15381: CALL 14340 0 2
15385: AND
15386: DOUBLE
15387: EQUAL
15388: IFTRUE 15392
15390: GO 15409
15392: POP
// begin MyComConstruct ( tfact , d7 ) ;
15393: LD_VAR 0 2
15397: PPUSH
15398: LD_LOC 22
15402: PPUSH
15403: CALL 14399 0 2
// end ; end ;
15407: GO 15410
15409: POP
// enable ;
15410: ENABLE
// end ;
15411: PPOPN 4
15413: END
// every 0 0$10 + 0 0$4.5 trigger IsOk ( factories [ 4 ] ) and IsIdle ( factories [ 4 ] ) do var a , tfact , def , att ;
15414: LD_EXP 73
15418: PUSH
15419: LD_INT 4
15421: ARRAY
15422: PPUSH
15423: CALL_OW 302
15427: PUSH
15428: LD_EXP 73
15432: PUSH
15433: LD_INT 4
15435: ARRAY
15436: PPUSH
15437: CALL_OW 316
15441: AND
15442: IFFALSE 15714
15444: GO 15446
15446: DISABLE
15447: LD_INT 0
15449: PPUSH
15450: PPUSH
15451: PPUSH
15452: PPUSH
// begin tfact := factories [ 4 ] ;
15453: LD_ADDR_VAR 0 2
15457: PUSH
15458: LD_EXP 73
15462: PUSH
15463: LD_INT 4
15465: ARRAY
15466: ST_TO_ADDR
// def := UnitFilter ( vehicles [ 4 ] , [ mf_manu ] ) ;
15467: LD_ADDR_VAR 0 3
15471: PUSH
15472: LD_EXP 77
15476: PUSH
15477: LD_INT 4
15479: ARRAY
15480: PPUSH
15481: LD_EXP 61
15485: PUSH
15486: EMPTY
15487: LIST
15488: PPUSH
15489: CALL_OW 72
15493: ST_TO_ADDR
// att := UnitFilter ( vehicles [ 4 ] , [ mf_comp ] ) ;
15494: LD_ADDR_VAR 0 4
15498: PUSH
15499: LD_EXP 77
15503: PUSH
15504: LD_INT 4
15506: ARRAY
15507: PPUSH
15508: LD_EXP 60
15512: PUSH
15513: EMPTY
15514: LIST
15515: PPUSH
15516: CALL_OW 72
15520: ST_TO_ADDR
// case true of def < 2 and MyCanBeConstructed ( tfact , d2 ) :
15521: LD_INT 1
15523: PUSH
15524: LD_VAR 0 3
15528: PUSH
15529: LD_INT 2
15531: LESS
15532: PUSH
15533: LD_VAR 0 2
15537: PPUSH
15538: LD_LOC 18
15542: PPUSH
15543: CALL 14340 0 2
15547: AND
15548: DOUBLE
15549: EQUAL
15550: IFTRUE 15554
15552: GO 15571
15554: POP
// begin MyComConstruct ( tfact , d2 ) ;
15555: LD_VAR 0 2
15559: PPUSH
15560: LD_LOC 18
15564: PPUSH
15565: CALL 14399 0 2
// end ; def < 3 and MyCanBeConstructed ( tfact , d3 ) :
15569: GO 15713
15571: LD_VAR 0 3
15575: PUSH
15576: LD_INT 3
15578: LESS
15579: PUSH
15580: LD_VAR 0 2
15584: PPUSH
15585: LD_LOC 19
15589: PPUSH
15590: CALL 14340 0 2
15594: AND
15595: DOUBLE
15596: EQUAL
15597: IFTRUE 15601
15599: GO 15618
15601: POP
// begin MyComConstruct ( tfact , d3 ) ;
15602: LD_VAR 0 2
15606: PPUSH
15607: LD_LOC 19
15611: PPUSH
15612: CALL 14399 0 2
// end ; att < 2 and MyCanBeConstructed ( tfact , d6 ) :
15616: GO 15713
15618: LD_VAR 0 4
15622: PUSH
15623: LD_INT 2
15625: LESS
15626: PUSH
15627: LD_VAR 0 2
15631: PPUSH
15632: LD_LOC 21
15636: PPUSH
15637: CALL 14340 0 2
15641: AND
15642: DOUBLE
15643: EQUAL
15644: IFTRUE 15648
15646: GO 15665
15648: POP
// begin MyComConstruct ( tfact , d6 ) ;
15649: LD_VAR 0 2
15653: PPUSH
15654: LD_LOC 21
15658: PPUSH
15659: CALL 14399 0 2
// end ; att < 5 and MyCanBeConstructed ( tfact , d7 ) :
15663: GO 15713
15665: LD_VAR 0 4
15669: PUSH
15670: LD_INT 5
15672: LESS
15673: PUSH
15674: LD_VAR 0 2
15678: PPUSH
15679: LD_LOC 22
15683: PPUSH
15684: CALL 14340 0 2
15688: AND
15689: DOUBLE
15690: EQUAL
15691: IFTRUE 15695
15693: GO 15712
15695: POP
// begin MyComConstruct ( tfact , d7 ) ;
15696: LD_VAR 0 2
15700: PPUSH
15701: LD_LOC 22
15705: PPUSH
15706: CALL 14399 0 2
// end ; end ;
15710: GO 15713
15712: POP
// enable ;
15713: ENABLE
// end ;
15714: PPOPN 4
15716: END
// every 0 0$10 + 0 0$5.6 trigger IsOk ( factories [ 5 ] ) and IsIdle ( factories [ 5 ] ) do var a , tfact , def , att ;
15717: LD_EXP 73
15721: PUSH
15722: LD_INT 5
15724: ARRAY
15725: PPUSH
15726: CALL_OW 302
15730: PUSH
15731: LD_EXP 73
15735: PUSH
15736: LD_INT 5
15738: ARRAY
15739: PPUSH
15740: CALL_OW 316
15744: AND
15745: IFFALSE 16064
15747: GO 15749
15749: DISABLE
15750: LD_INT 0
15752: PPUSH
15753: PPUSH
15754: PPUSH
15755: PPUSH
// begin tfact := factories [ 5 ] ;
15756: LD_ADDR_VAR 0 2
15760: PUSH
15761: LD_EXP 73
15765: PUSH
15766: LD_INT 5
15768: ARRAY
15769: ST_TO_ADDR
// def := UnitFilter ( vehicles [ 5 ] , [ mf_manu ] ) ;
15770: LD_ADDR_VAR 0 3
15774: PUSH
15775: LD_EXP 77
15779: PUSH
15780: LD_INT 5
15782: ARRAY
15783: PPUSH
15784: LD_EXP 61
15788: PUSH
15789: EMPTY
15790: LIST
15791: PPUSH
15792: CALL_OW 72
15796: ST_TO_ADDR
// att := UnitFilter ( vehicles [ 5 ] , [ mf_comp ] ) ;
15797: LD_ADDR_VAR 0 4
15801: PUSH
15802: LD_EXP 77
15806: PUSH
15807: LD_INT 5
15809: ARRAY
15810: PPUSH
15811: LD_EXP 60
15815: PUSH
15816: EMPTY
15817: LIST
15818: PPUSH
15819: CALL_OW 72
15823: ST_TO_ADDR
// case true of def < 2 and MyCanBeConstructed ( tfact , d2 ) :
15824: LD_INT 1
15826: PUSH
15827: LD_VAR 0 3
15831: PUSH
15832: LD_INT 2
15834: LESS
15835: PUSH
15836: LD_VAR 0 2
15840: PPUSH
15841: LD_LOC 18
15845: PPUSH
15846: CALL 14340 0 2
15850: AND
15851: DOUBLE
15852: EQUAL
15853: IFTRUE 15857
15855: GO 15874
15857: POP
// begin MyComConstruct ( tfact , d2 ) ;
15858: LD_VAR 0 2
15862: PPUSH
15863: LD_LOC 18
15867: PPUSH
15868: CALL 14399 0 2
// end ; def < 3 and MyCanBeConstructed ( tfact , d3 ) :
15872: GO 16063
15874: LD_VAR 0 3
15878: PUSH
15879: LD_INT 3
15881: LESS
15882: PUSH
15883: LD_VAR 0 2
15887: PPUSH
15888: LD_LOC 19
15892: PPUSH
15893: CALL 14340 0 2
15897: AND
15898: DOUBLE
15899: EQUAL
15900: IFTRUE 15904
15902: GO 15921
15904: POP
// begin MyComConstruct ( tfact , d3 ) ;
15905: LD_VAR 0 2
15909: PPUSH
15910: LD_LOC 19
15914: PPUSH
15915: CALL 14399 0 2
// end ; att < 2 and MyCanBeConstructed ( tfact , d6 ) :
15919: GO 16063
15921: LD_VAR 0 4
15925: PUSH
15926: LD_INT 2
15928: LESS
15929: PUSH
15930: LD_VAR 0 2
15934: PPUSH
15935: LD_LOC 21
15939: PPUSH
15940: CALL 14340 0 2
15944: AND
15945: DOUBLE
15946: EQUAL
15947: IFTRUE 15951
15949: GO 15968
15951: POP
// begin MyComConstruct ( tfact , d6 ) ;
15952: LD_VAR 0 2
15956: PPUSH
15957: LD_LOC 21
15961: PPUSH
15962: CALL 14399 0 2
// end ; att < 3 and MyCanBeConstructed ( tfact , d5 ) :
15966: GO 16063
15968: LD_VAR 0 4
15972: PUSH
15973: LD_INT 3
15975: LESS
15976: PUSH
15977: LD_VAR 0 2
15981: PPUSH
15982: LD_LOC 20
15986: PPUSH
15987: CALL 14340 0 2
15991: AND
15992: DOUBLE
15993: EQUAL
15994: IFTRUE 15998
15996: GO 16015
15998: POP
// begin MyComConstruct ( tfact , d5 ) ;
15999: LD_VAR 0 2
16003: PPUSH
16004: LD_LOC 20
16008: PPUSH
16009: CALL 14399 0 2
// end ; att < 5 and MyCanBeConstructed ( tfact , d7 ) :
16013: GO 16063
16015: LD_VAR 0 4
16019: PUSH
16020: LD_INT 5
16022: LESS
16023: PUSH
16024: LD_VAR 0 2
16028: PPUSH
16029: LD_LOC 22
16033: PPUSH
16034: CALL 14340 0 2
16038: AND
16039: DOUBLE
16040: EQUAL
16041: IFTRUE 16045
16043: GO 16062
16045: POP
// begin MyComConstruct ( tfact , d7 ) ;
16046: LD_VAR 0 2
16050: PPUSH
16051: LD_LOC 22
16055: PPUSH
16056: CALL 14399 0 2
// end ; end ;
16060: GO 16063
16062: POP
// enable ;
16063: ENABLE
// end ; end_of_file
16064: PPOPN 4
16066: END
// var builds ; var aici ; var in_depots ; var abase ; export hlavouni ; var upgradeable ; var trough_upgrade ; export function inicializace_ai_b_build ; begin
16067: LD_INT 0
16069: PPUSH
// upgradeable := [ b_depot , b_workshop , b_armoury , b_lab , b_lab_half , b_lab ] ;
16070: LD_ADDR_LOC 27
16074: PUSH
16075: LD_INT 0
16077: PUSH
16078: LD_INT 2
16080: PUSH
16081: LD_INT 4
16083: PUSH
16084: LD_INT 6
16086: PUSH
16087: LD_INT 7
16089: PUSH
16090: LD_INT 6
16092: PUSH
16093: EMPTY
16094: LIST
16095: LIST
16096: LIST
16097: LIST
16098: LIST
16099: LIST
16100: ST_TO_ADDR
// trough_upgrade := [ b_warehouse , b_factory , b_barracks , b_lab_half , b_lab_full , b_lab_full ] ;
16101: LD_ADDR_LOC 28
16105: PUSH
16106: LD_INT 1
16108: PUSH
16109: LD_INT 3
16111: PUSH
16112: LD_INT 5
16114: PUSH
16115: LD_INT 7
16117: PUSH
16118: LD_INT 8
16120: PUSH
16121: LD_INT 8
16123: PUSH
16124: EMPTY
16125: LIST
16126: LIST
16127: LIST
16128: LIST
16129: LIST
16130: LIST
16131: ST_TO_ADDR
// abase := [ abase1 , abase2 , abase3 , abase4 , abase5 ] ;
16132: LD_ADDR_LOC 26
16136: PUSH
16137: LD_INT 5
16139: PUSH
16140: LD_INT 4
16142: PUSH
16143: LD_INT 3
16145: PUSH
16146: LD_INT 2
16148: PUSH
16149: LD_INT 1
16151: PUSH
16152: EMPTY
16153: LIST
16154: LIST
16155: LIST
16156: LIST
16157: LIST
16158: ST_TO_ADDR
// aici := [ [ [ [ 1 , class_engineer , 4 ] , [ 3 , class_scientistic , 4 ] , [ 8 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 6 ] , [ 3 , class_scientistic , 6 ] , [ 8 , class_soldier , 6 ] , [ 3 , class_mechanic , 6 ] ] , [ [ 1 , class_engineer , 8 ] , [ 3 , class_scientistic , 8 ] , [ 8 , class_soldier , 8 ] , [ 3 , class_mechanic , 8 ] ] ] [ difficulty ] , [ [ [ 1 , class_engineer , 4 ] , [ 3 , class_scientistic , 4 ] , [ 5 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 4 ] , [ 3 , class_scientistic , 4 ] , [ 5 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 5 ] , [ 3 , class_scientistic , 5 ] , [ 5 , class_soldier , 5 ] , [ 3 , class_mechanic , 5 ] ] ] [ difficulty ] , [ [ [ 1 , class_engineer , 4 ] , [ 0 , class_scientistic , 4 ] , [ 2 , class_soldier , 4 ] , [ 1 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 5 ] , [ 0 , class_scientistic , 5 ] , [ 2 , class_soldier , 5 ] , [ 1 , class_mechanic , 5 ] ] , [ [ 1 , class_engineer , 5 ] , [ 0 , class_scientistic , 5 ] , [ 2 , class_soldier , 5 ] , [ 1 , class_mechanic , 5 ] ] ] [ difficulty ] , [ [ [ 1 , class_engineer , 4 ] , [ 4 , class_scientistic , 4 ] , [ 3 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 5 ] , [ 4 , class_scientistic , 5 ] , [ 3 , class_soldier , 5 ] , [ 3 , class_mechanic , 5 ] ] , [ [ 1 , class_engineer , 6 ] , [ 4 , class_scientistic , 6 ] , [ 3 , class_soldier , 6 ] , [ 3 , class_mechanic , 6 ] ] ] [ difficulty ] , [ [ [ 1 , class_engineer , 4 ] , [ 1 , class_scientistic , 4 ] , [ 3 , class_soldier , 4 ] , [ 3 , class_mechanic , 4 ] ] , [ [ 1 , class_engineer , 5 ] , [ 1 , class_scientistic , 5 ] , [ 3 , class_soldier , 5 ] , [ 3 , class_mechanic , 5 ] ] , [ [ 1 , class_engineer , 6 ] , [ 1 , class_scientistic , 6 ] , [ 3 , class_soldier , 6 ] , [ 3 , class_mechanic , 6 ] ] ] [ difficulty ] ] ;
16159: LD_ADDR_LOC 24
16163: PUSH
16164: LD_INT 1
16166: PUSH
16167: LD_INT 2
16169: PUSH
16170: LD_INT 4
16172: PUSH
16173: EMPTY
16174: LIST
16175: LIST
16176: LIST
16177: PUSH
16178: LD_INT 3
16180: PUSH
16181: LD_INT 4
16183: PUSH
16184: LD_INT 4
16186: PUSH
16187: EMPTY
16188: LIST
16189: LIST
16190: LIST
16191: PUSH
16192: LD_INT 8
16194: PUSH
16195: LD_INT 1
16197: PUSH
16198: LD_INT 4
16200: PUSH
16201: EMPTY
16202: LIST
16203: LIST
16204: LIST
16205: PUSH
16206: LD_INT 3
16208: PUSH
16209: LD_INT 3
16211: PUSH
16212: LD_INT 4
16214: PUSH
16215: EMPTY
16216: LIST
16217: LIST
16218: LIST
16219: PUSH
16220: EMPTY
16221: LIST
16222: LIST
16223: LIST
16224: LIST
16225: PUSH
16226: LD_INT 1
16228: PUSH
16229: LD_INT 2
16231: PUSH
16232: LD_INT 6
16234: PUSH
16235: EMPTY
16236: LIST
16237: LIST
16238: LIST
16239: PUSH
16240: LD_INT 3
16242: PUSH
16243: LD_INT 4
16245: PUSH
16246: LD_INT 6
16248: PUSH
16249: EMPTY
16250: LIST
16251: LIST
16252: LIST
16253: PUSH
16254: LD_INT 8
16256: PUSH
16257: LD_INT 1
16259: PUSH
16260: LD_INT 6
16262: PUSH
16263: EMPTY
16264: LIST
16265: LIST
16266: LIST
16267: PUSH
16268: LD_INT 3
16270: PUSH
16271: LD_INT 3
16273: PUSH
16274: LD_INT 6
16276: PUSH
16277: EMPTY
16278: LIST
16279: LIST
16280: LIST
16281: PUSH
16282: EMPTY
16283: LIST
16284: LIST
16285: LIST
16286: LIST
16287: PUSH
16288: LD_INT 1
16290: PUSH
16291: LD_INT 2
16293: PUSH
16294: LD_INT 8
16296: PUSH
16297: EMPTY
16298: LIST
16299: LIST
16300: LIST
16301: PUSH
16302: LD_INT 3
16304: PUSH
16305: LD_INT 4
16307: PUSH
16308: LD_INT 8
16310: PUSH
16311: EMPTY
16312: LIST
16313: LIST
16314: LIST
16315: PUSH
16316: LD_INT 8
16318: PUSH
16319: LD_INT 1
16321: PUSH
16322: LD_INT 8
16324: PUSH
16325: EMPTY
16326: LIST
16327: LIST
16328: LIST
16329: PUSH
16330: LD_INT 3
16332: PUSH
16333: LD_INT 3
16335: PUSH
16336: LD_INT 8
16338: PUSH
16339: EMPTY
16340: LIST
16341: LIST
16342: LIST
16343: PUSH
16344: EMPTY
16345: LIST
16346: LIST
16347: LIST
16348: LIST
16349: PUSH
16350: EMPTY
16351: LIST
16352: LIST
16353: LIST
16354: PUSH
16355: LD_OWVAR 67
16359: ARRAY
16360: PUSH
16361: LD_INT 1
16363: PUSH
16364: LD_INT 2
16366: PUSH
16367: LD_INT 4
16369: PUSH
16370: EMPTY
16371: LIST
16372: LIST
16373: LIST
16374: PUSH
16375: LD_INT 3
16377: PUSH
16378: LD_INT 4
16380: PUSH
16381: LD_INT 4
16383: PUSH
16384: EMPTY
16385: LIST
16386: LIST
16387: LIST
16388: PUSH
16389: LD_INT 5
16391: PUSH
16392: LD_INT 1
16394: PUSH
16395: LD_INT 4
16397: PUSH
16398: EMPTY
16399: LIST
16400: LIST
16401: LIST
16402: PUSH
16403: LD_INT 3
16405: PUSH
16406: LD_INT 3
16408: PUSH
16409: LD_INT 4
16411: PUSH
16412: EMPTY
16413: LIST
16414: LIST
16415: LIST
16416: PUSH
16417: EMPTY
16418: LIST
16419: LIST
16420: LIST
16421: LIST
16422: PUSH
16423: LD_INT 1
16425: PUSH
16426: LD_INT 2
16428: PUSH
16429: LD_INT 4
16431: PUSH
16432: EMPTY
16433: LIST
16434: LIST
16435: LIST
16436: PUSH
16437: LD_INT 3
16439: PUSH
16440: LD_INT 4
16442: PUSH
16443: LD_INT 4
16445: PUSH
16446: EMPTY
16447: LIST
16448: LIST
16449: LIST
16450: PUSH
16451: LD_INT 5
16453: PUSH
16454: LD_INT 1
16456: PUSH
16457: LD_INT 4
16459: PUSH
16460: EMPTY
16461: LIST
16462: LIST
16463: LIST
16464: PUSH
16465: LD_INT 3
16467: PUSH
16468: LD_INT 3
16470: PUSH
16471: LD_INT 4
16473: PUSH
16474: EMPTY
16475: LIST
16476: LIST
16477: LIST
16478: PUSH
16479: EMPTY
16480: LIST
16481: LIST
16482: LIST
16483: LIST
16484: PUSH
16485: LD_INT 1
16487: PUSH
16488: LD_INT 2
16490: PUSH
16491: LD_INT 5
16493: PUSH
16494: EMPTY
16495: LIST
16496: LIST
16497: LIST
16498: PUSH
16499: LD_INT 3
16501: PUSH
16502: LD_INT 4
16504: PUSH
16505: LD_INT 5
16507: PUSH
16508: EMPTY
16509: LIST
16510: LIST
16511: LIST
16512: PUSH
16513: LD_INT 5
16515: PUSH
16516: LD_INT 1
16518: PUSH
16519: LD_INT 5
16521: PUSH
16522: EMPTY
16523: LIST
16524: LIST
16525: LIST
16526: PUSH
16527: LD_INT 3
16529: PUSH
16530: LD_INT 3
16532: PUSH
16533: LD_INT 5
16535: PUSH
16536: EMPTY
16537: LIST
16538: LIST
16539: LIST
16540: PUSH
16541: EMPTY
16542: LIST
16543: LIST
16544: LIST
16545: LIST
16546: PUSH
16547: EMPTY
16548: LIST
16549: LIST
16550: LIST
16551: PUSH
16552: LD_OWVAR 67
16556: ARRAY
16557: PUSH
16558: LD_INT 1
16560: PUSH
16561: LD_INT 2
16563: PUSH
16564: LD_INT 4
16566: PUSH
16567: EMPTY
16568: LIST
16569: LIST
16570: LIST
16571: PUSH
16572: LD_INT 0
16574: PUSH
16575: LD_INT 4
16577: PUSH
16578: LD_INT 4
16580: PUSH
16581: EMPTY
16582: LIST
16583: LIST
16584: LIST
16585: PUSH
16586: LD_INT 2
16588: PUSH
16589: LD_INT 1
16591: PUSH
16592: LD_INT 4
16594: PUSH
16595: EMPTY
16596: LIST
16597: LIST
16598: LIST
16599: PUSH
16600: LD_INT 1
16602: PUSH
16603: LD_INT 3
16605: PUSH
16606: LD_INT 4
16608: PUSH
16609: EMPTY
16610: LIST
16611: LIST
16612: LIST
16613: PUSH
16614: EMPTY
16615: LIST
16616: LIST
16617: LIST
16618: LIST
16619: PUSH
16620: LD_INT 1
16622: PUSH
16623: LD_INT 2
16625: PUSH
16626: LD_INT 5
16628: PUSH
16629: EMPTY
16630: LIST
16631: LIST
16632: LIST
16633: PUSH
16634: LD_INT 0
16636: PUSH
16637: LD_INT 4
16639: PUSH
16640: LD_INT 5
16642: PUSH
16643: EMPTY
16644: LIST
16645: LIST
16646: LIST
16647: PUSH
16648: LD_INT 2
16650: PUSH
16651: LD_INT 1
16653: PUSH
16654: LD_INT 5
16656: PUSH
16657: EMPTY
16658: LIST
16659: LIST
16660: LIST
16661: PUSH
16662: LD_INT 1
16664: PUSH
16665: LD_INT 3
16667: PUSH
16668: LD_INT 5
16670: PUSH
16671: EMPTY
16672: LIST
16673: LIST
16674: LIST
16675: PUSH
16676: EMPTY
16677: LIST
16678: LIST
16679: LIST
16680: LIST
16681: PUSH
16682: LD_INT 1
16684: PUSH
16685: LD_INT 2
16687: PUSH
16688: LD_INT 5
16690: PUSH
16691: EMPTY
16692: LIST
16693: LIST
16694: LIST
16695: PUSH
16696: LD_INT 0
16698: PUSH
16699: LD_INT 4
16701: PUSH
16702: LD_INT 5
16704: PUSH
16705: EMPTY
16706: LIST
16707: LIST
16708: LIST
16709: PUSH
16710: LD_INT 2
16712: PUSH
16713: LD_INT 1
16715: PUSH
16716: LD_INT 5
16718: PUSH
16719: EMPTY
16720: LIST
16721: LIST
16722: LIST
16723: PUSH
16724: LD_INT 1
16726: PUSH
16727: LD_INT 3
16729: PUSH
16730: LD_INT 5
16732: PUSH
16733: EMPTY
16734: LIST
16735: LIST
16736: LIST
16737: PUSH
16738: EMPTY
16739: LIST
16740: LIST
16741: LIST
16742: LIST
16743: PUSH
16744: EMPTY
16745: LIST
16746: LIST
16747: LIST
16748: PUSH
16749: LD_OWVAR 67
16753: ARRAY
16754: PUSH
16755: LD_INT 1
16757: PUSH
16758: LD_INT 2
16760: PUSH
16761: LD_INT 4
16763: PUSH
16764: EMPTY
16765: LIST
16766: LIST
16767: LIST
16768: PUSH
16769: LD_INT 4
16771: PUSH
16772: LD_INT 4
16774: PUSH
16775: LD_INT 4
16777: PUSH
16778: EMPTY
16779: LIST
16780: LIST
16781: LIST
16782: PUSH
16783: LD_INT 3
16785: PUSH
16786: LD_INT 1
16788: PUSH
16789: LD_INT 4
16791: PUSH
16792: EMPTY
16793: LIST
16794: LIST
16795: LIST
16796: PUSH
16797: LD_INT 3
16799: PUSH
16800: LD_INT 3
16802: PUSH
16803: LD_INT 4
16805: PUSH
16806: EMPTY
16807: LIST
16808: LIST
16809: LIST
16810: PUSH
16811: EMPTY
16812: LIST
16813: LIST
16814: LIST
16815: LIST
16816: PUSH
16817: LD_INT 1
16819: PUSH
16820: LD_INT 2
16822: PUSH
16823: LD_INT 5
16825: PUSH
16826: EMPTY
16827: LIST
16828: LIST
16829: LIST
16830: PUSH
16831: LD_INT 4
16833: PUSH
16834: LD_INT 4
16836: PUSH
16837: LD_INT 5
16839: PUSH
16840: EMPTY
16841: LIST
16842: LIST
16843: LIST
16844: PUSH
16845: LD_INT 3
16847: PUSH
16848: LD_INT 1
16850: PUSH
16851: LD_INT 5
16853: PUSH
16854: EMPTY
16855: LIST
16856: LIST
16857: LIST
16858: PUSH
16859: LD_INT 3
16861: PUSH
16862: LD_INT 3
16864: PUSH
16865: LD_INT 5
16867: PUSH
16868: EMPTY
16869: LIST
16870: LIST
16871: LIST
16872: PUSH
16873: EMPTY
16874: LIST
16875: LIST
16876: LIST
16877: LIST
16878: PUSH
16879: LD_INT 1
16881: PUSH
16882: LD_INT 2
16884: PUSH
16885: LD_INT 6
16887: PUSH
16888: EMPTY
16889: LIST
16890: LIST
16891: LIST
16892: PUSH
16893: LD_INT 4
16895: PUSH
16896: LD_INT 4
16898: PUSH
16899: LD_INT 6
16901: PUSH
16902: EMPTY
16903: LIST
16904: LIST
16905: LIST
16906: PUSH
16907: LD_INT 3
16909: PUSH
16910: LD_INT 1
16912: PUSH
16913: LD_INT 6
16915: PUSH
16916: EMPTY
16917: LIST
16918: LIST
16919: LIST
16920: PUSH
16921: LD_INT 3
16923: PUSH
16924: LD_INT 3
16926: PUSH
16927: LD_INT 6
16929: PUSH
16930: EMPTY
16931: LIST
16932: LIST
16933: LIST
16934: PUSH
16935: EMPTY
16936: LIST
16937: LIST
16938: LIST
16939: LIST
16940: PUSH
16941: EMPTY
16942: LIST
16943: LIST
16944: LIST
16945: PUSH
16946: LD_OWVAR 67
16950: ARRAY
16951: PUSH
16952: LD_INT 1
16954: PUSH
16955: LD_INT 2
16957: PUSH
16958: LD_INT 4
16960: PUSH
16961: EMPTY
16962: LIST
16963: LIST
16964: LIST
16965: PUSH
16966: LD_INT 1
16968: PUSH
16969: LD_INT 4
16971: PUSH
16972: LD_INT 4
16974: PUSH
16975: EMPTY
16976: LIST
16977: LIST
16978: LIST
16979: PUSH
16980: LD_INT 3
16982: PUSH
16983: LD_INT 1
16985: PUSH
16986: LD_INT 4
16988: PUSH
16989: EMPTY
16990: LIST
16991: LIST
16992: LIST
16993: PUSH
16994: LD_INT 3
16996: PUSH
16997: LD_INT 3
16999: PUSH
17000: LD_INT 4
17002: PUSH
17003: EMPTY
17004: LIST
17005: LIST
17006: LIST
17007: PUSH
17008: EMPTY
17009: LIST
17010: LIST
17011: LIST
17012: LIST
17013: PUSH
17014: LD_INT 1
17016: PUSH
17017: LD_INT 2
17019: PUSH
17020: LD_INT 5
17022: PUSH
17023: EMPTY
17024: LIST
17025: LIST
17026: LIST
17027: PUSH
17028: LD_INT 1
17030: PUSH
17031: LD_INT 4
17033: PUSH
17034: LD_INT 5
17036: PUSH
17037: EMPTY
17038: LIST
17039: LIST
17040: LIST
17041: PUSH
17042: LD_INT 3
17044: PUSH
17045: LD_INT 1
17047: PUSH
17048: LD_INT 5
17050: PUSH
17051: EMPTY
17052: LIST
17053: LIST
17054: LIST
17055: PUSH
17056: LD_INT 3
17058: PUSH
17059: LD_INT 3
17061: PUSH
17062: LD_INT 5
17064: PUSH
17065: EMPTY
17066: LIST
17067: LIST
17068: LIST
17069: PUSH
17070: EMPTY
17071: LIST
17072: LIST
17073: LIST
17074: LIST
17075: PUSH
17076: LD_INT 1
17078: PUSH
17079: LD_INT 2
17081: PUSH
17082: LD_INT 6
17084: PUSH
17085: EMPTY
17086: LIST
17087: LIST
17088: LIST
17089: PUSH
17090: LD_INT 1
17092: PUSH
17093: LD_INT 4
17095: PUSH
17096: LD_INT 6
17098: PUSH
17099: EMPTY
17100: LIST
17101: LIST
17102: LIST
17103: PUSH
17104: LD_INT 3
17106: PUSH
17107: LD_INT 1
17109: PUSH
17110: LD_INT 6
17112: PUSH
17113: EMPTY
17114: LIST
17115: LIST
17116: LIST
17117: PUSH
17118: LD_INT 3
17120: PUSH
17121: LD_INT 3
17123: PUSH
17124: LD_INT 6
17126: PUSH
17127: EMPTY
17128: LIST
17129: LIST
17130: LIST
17131: PUSH
17132: EMPTY
17133: LIST
17134: LIST
17135: LIST
17136: LIST
17137: PUSH
17138: EMPTY
17139: LIST
17140: LIST
17141: LIST
17142: PUSH
17143: LD_OWVAR 67
17147: ARRAY
17148: PUSH
17149: EMPTY
17150: LIST
17151: LIST
17152: LIST
17153: LIST
17154: LIST
17155: ST_TO_ADDR
// builds := [ [ [ b_warehouse , 24 , 9 , 3 , [ ] ] , [ b_barracks , 39 , 26 , 5 , [ ] ] , [ b_siberite_power , 9 , 11 , 2 , [ ] ] , [ b_turret , 45 , 20 , 2 , [ ru_rocket_launcher ] ] , [ b_turret , 44 , 25 , 2 , [ ru_heavy_gun ] ] , [ b_turret , 26 , 40 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 37 , 39 , 2 , [ ru_heavy_gun ] ] , [ b_bunker , 42 , 21 , 2 , [ ru_gatling_gun ] ] , [ b_bunker , 38 , 36 , 2 , [ ru_gatling_gun ] ] , [ b_turret , 53 , 15 , 2 , [ ru_rocket_launcher ] ] , [ b_lab_full , 10 , 7 , 2 , [ b_lab_siberium , b_lab_weapon ] ] , [ b_lab_full , 34 , 10 , 3 , [ b_lab_computer , b_lab_spacetime ] ] , [ b_factory , 20 , 21 , 2 , [ ] ] , [ b_ext_gun , 24 , 21 , 4 , [ ] ] , [ b_ext_rocket , 20 , 18 , 3 , [ ] ] , [ b_ext_siberium , 20 , 25 , 0 , [ ] ] , [ b_ext_computer , 17 , 21 , 1 , [ ] ] , [ b_ext_track , 16 , 17 , 2 , [ ] ] , [ b_siberite_mine , 20 , 34 , 0 , [ ] ] , [ b_siberite_power , 15 , 5 , 2 , [ ] ] , [ b_oil_mine , 14 , 23 , 2 , [ ] ] , [ b_teleport , 32 , 20 , 3 , [ ] ] ] , [ [ b_factory , 98 , 26 , 5 , [ ] ] , [ b_barracks , 80 , 13 , 0 , [ ] ] , [ b_siberite_power , 97 , 3 , 1 , [ ] ] , [ b_turret , 105 , 35 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 111 , 22 , 2 , [ ru_gatling_gun ] ] , [ b_turret , 115 , 27 , 2 , [ ru_rocket_launcher ] ] , [ b_turret , 65 , 3 , 3 , [ ru_rocket_launcher ] , 20 20$0 ] , [ b_turret , 68 , 3 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 71 , 4 , 3 , [ ru_heavy_gun ] ] , [ b_siberite_power , 101 , 4 , 5 , [ ] ] , [ b_turret , 108 , 35 , 2 , [ ru_heavy_gun ] ] , [ b_ext_track , 101 , 26 , 4 , [ ] ] , [ b_ext_gun , 98 , 22 , 3 , [ ] ] , [ b_ext_siberium , 94 , 26 , 1 , [ ] ] , [ b_ext_rocket , 98 , 29 , 0 , [ ] ] , [ b_ext_noncombat , 102 , 30 , 5 , [ ] ] , [ b_warehouse , 86 , 6 , 3 , [ ] ] , [ b_siberite_mine , 102 , 9 , 4 , [ ] ] , [ b_oil_mine , 77 , 3 , 4 , [ ] ] , [ b_lab_full , 100 , 17 , 4 , [ b_lab_siberium , b_lab_weapon ] ] , [ b_lab_half , 94 , 6 , 3 , [ b_lab_computer , b_lab_basic ] ] ] , [ [ b_warehouse , 90 , 141 , 0 , [ ] ] , [ b_barracks , 98 , 133 , 4 , [ ] ] , [ b_siberite_power , 72 , 133 , 2 , [ ] ] , [ b_bunker , 95 , 128 , 0 , [ ru_rocket_launcher ] ] , [ b_bunker , 80 , 122 , 2 , [ ru_rocket_launcher ] ] , [ b_turret , 95 , 128 , 0 , [ ru_rocket_launcher ] , 15 15$0 ] , [ b_turret , 80 , 122 , 2 , [ ru_rocket_launcher ] , 17 17$0 ] , [ b_turret , 112 , 154 , 1 , [ ru_rocket_launcher ] , 16 16$0 ] , [ b_turret , 78 , 124 , 2 , [ ru_heavy_gun ] , 20 20$0 ] , [ b_turret , 99 , 130 , 1 , [ ru_heavy_gun ] , 22 22$0 ] , [ b_turret , 112 , 151 , 1 , [ ru_gatling_gun ] , 25 25$0 ] , [ b_factory , 81 , 135 , 5 , [ ] ] , [ b_ext_siberium , 84 , 135 , 4 , [ ] ] , [ b_ext_gun , 85 , 139 , 5 , [ ] ] , [ b_ext_track , 77 , 135 , 1 , [ ] ] , [ b_ext_rocket , 81 , 138 , 0 , [ ] , 14 14$0 ] , [ b_siberite_mine , 71 , 137 , 0 , [ ] ] , [ b_oil_mine , 69 , 133 , 5 , [ ] ] , [ b_lab_half , 102 , 153 , 0 , [ b_lab_computer , b_lab_basic ] , 35 35$0 ] , [ b_lab_full , 97 , 145 , 2 , [ b_lab_weapon , b_lab_siberium ] ] , [ b_siberite_power , 74 , 137 , 2 , [ ] ] , [ b_ext_computer , 81 , 131 , 3 , [ ] ] ] , [ [ b_warehouse , 217 , 129 , 3 , [ ] ] , [ b_siberite_power , 233 , 154 , 4 , [ ] ] , [ b_turret , 205 , 123 , 0 , [ ru_gatling_gun ] , 25 25$0 ] , [ b_turret , 200 , 142 , 4 , [ ru_heavy_gun ] ] , [ b_turret , 199 , 135 , 4 , [ ru_heavy_gun ] , 28 28$0 ] , [ b_turret , 201 , 127 , 5 , [ ru_heavy_gun ] ] , [ b_turret , 199 , 138 , 4 , [ ru_rocket_launcher ] ] , [ b_turret , 202 , 124 , 5 , [ ru_rocket_launcher ] ] , [ b_turret , 209 , 154 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 218 , 123 , 5 , [ ru_rocket_launcher ] ] , [ b_lab_full , 227 , 145 , 2 , [ b_lab_computer , b_lab_spacetime ] ] , [ b_lab_full , 221 , 153 , 4 , [ b_lab_weapon , b_lab_siberium ] ] , [ b_siberite_power , 231 , 155 , 4 , [ ] ] , [ b_oil_mine , 224 , 134 , 4 , [ ] ] , [ b_siberite_mine , 224 , 150 , 2 , [ ] ] , [ b_factory , 207 , 141 , 1 , [ ] ] , [ b_ext_computer , 211 , 145 , 5 , [ ] ] , [ b_ext_siberium , 207 , 144 , 0 , [ ] ] , [ b_ext_rocket , 203 , 141 , 1 , [ ] ] , [ b_ext_track , 204 , 138 , 2 , [ ] ] , [ b_ext_gun , 207 , 137 , 3 , [ ] ] , [ b_armoury , 210 , 128 , 2 , [ ] , 35 35$0 ] , [ b_armoury , 210 , 128 , 2 , [ ] ] ] , [ [ b_warehouse , 184 , 73 , 3 , [ ] ] , [ b_barracks , 188 , 94 , 5 , [ ] ] , [ b_turret , 171 , 92 , 3 , [ ru_rocket_launcher ] ] , [ b_turret , 177 , 98 , 3 , [ ru_heavy_gun ] ] , [ b_turret , 169 , 69 , 5 , [ ru_heavy_gun ] ] , [ b_turret , 170 , 66 , 5 , [ ru_rocket_launcher ] ] , [ b_turret , 184 , 62 , 5 , [ ru_gatling_gun ] ] , [ b_turret , 203 , 102 , 2 , [ ru_rocket_launcher ] , 30 30$0 ] , [ b_turret , 195 , 103 , 2 , [ ru_rocket_launcher ] ] , [ b_turret , 200 , 103 , 2 , [ ru_heavy_gun ] ] , [ b_siberite_power , 198 , 90 , 3 , [ ] ] , [ b_siberite_mine , 179 , 70 , 1 , [ ] ] , [ b_factory , 190 , 84 , 4 , [ ] ] , [ b_ext_gun , 190 , 88 , 0 , [ ] ] , [ b_ext_rocket , 193 , 87 , 5 , [ ] ] , [ b_ext_siberium , 194 , 84 , 4 , [ ] ] , [ b_ext_computer , 190 , 81 , 3 , [ ] ] , [ b_lab_full , 176 , 92 , 0 , [ b_lab_siberium , b_lab_basic ] ] , [ b_lab_full , 176 , 82 , 3 , [ b_lab_computer , b_lab_weapon ] ] , [ b_siberite_power , 196 , 92 , 5 , [ ] ] , [ b_siberite_power , 198 , 86 , 1 , [ ] ] , [ b_siberite_mine , 192 , 93 , 0 , [ ] ] ] ] ;
17156: LD_ADDR_LOC 23
17160: PUSH
17161: LD_INT 1
17163: PUSH
17164: LD_INT 24
17166: PUSH
17167: LD_INT 9
17169: PUSH
17170: LD_INT 3
17172: PUSH
17173: EMPTY
17174: PUSH
17175: EMPTY
17176: LIST
17177: LIST
17178: LIST
17179: LIST
17180: LIST
17181: PUSH
17182: LD_INT 5
17184: PUSH
17185: LD_INT 39
17187: PUSH
17188: LD_INT 26
17190: PUSH
17191: LD_INT 5
17193: PUSH
17194: EMPTY
17195: PUSH
17196: EMPTY
17197: LIST
17198: LIST
17199: LIST
17200: LIST
17201: LIST
17202: PUSH
17203: LD_INT 28
17205: PUSH
17206: LD_INT 9
17208: PUSH
17209: LD_INT 11
17211: PUSH
17212: LD_INT 2
17214: PUSH
17215: EMPTY
17216: PUSH
17217: EMPTY
17218: LIST
17219: LIST
17220: LIST
17221: LIST
17222: LIST
17223: PUSH
17224: LD_INT 33
17226: PUSH
17227: LD_INT 45
17229: PUSH
17230: LD_INT 20
17232: PUSH
17233: LD_INT 2
17235: PUSH
17236: LD_INT 45
17238: PUSH
17239: EMPTY
17240: LIST
17241: PUSH
17242: EMPTY
17243: LIST
17244: LIST
17245: LIST
17246: LIST
17247: LIST
17248: PUSH
17249: LD_INT 33
17251: PUSH
17252: LD_INT 44
17254: PUSH
17255: LD_INT 25
17257: PUSH
17258: LD_INT 2
17260: PUSH
17261: LD_INT 46
17263: PUSH
17264: EMPTY
17265: LIST
17266: PUSH
17267: EMPTY
17268: LIST
17269: LIST
17270: LIST
17271: LIST
17272: LIST
17273: PUSH
17274: LD_INT 33
17276: PUSH
17277: LD_INT 26
17279: PUSH
17280: LD_INT 40
17282: PUSH
17283: LD_INT 3
17285: PUSH
17286: LD_INT 45
17288: PUSH
17289: EMPTY
17290: LIST
17291: PUSH
17292: EMPTY
17293: LIST
17294: LIST
17295: LIST
17296: LIST
17297: LIST
17298: PUSH
17299: LD_INT 33
17301: PUSH
17302: LD_INT 37
17304: PUSH
17305: LD_INT 39
17307: PUSH
17308: LD_INT 2
17310: PUSH
17311: LD_INT 46
17313: PUSH
17314: EMPTY
17315: LIST
17316: PUSH
17317: EMPTY
17318: LIST
17319: LIST
17320: LIST
17321: LIST
17322: LIST
17323: PUSH
17324: LD_INT 32
17326: PUSH
17327: LD_INT 42
17329: PUSH
17330: LD_INT 21
17332: PUSH
17333: LD_INT 2
17335: PUSH
17336: LD_INT 43
17338: PUSH
17339: EMPTY
17340: LIST
17341: PUSH
17342: EMPTY
17343: LIST
17344: LIST
17345: LIST
17346: LIST
17347: LIST
17348: PUSH
17349: LD_INT 32
17351: PUSH
17352: LD_INT 38
17354: PUSH
17355: LD_INT 36
17357: PUSH
17358: LD_INT 2
17360: PUSH
17361: LD_INT 43
17363: PUSH
17364: EMPTY
17365: LIST
17366: PUSH
17367: EMPTY
17368: LIST
17369: LIST
17370: LIST
17371: LIST
17372: LIST
17373: PUSH
17374: LD_INT 33
17376: PUSH
17377: LD_INT 53
17379: PUSH
17380: LD_INT 15
17382: PUSH
17383: LD_INT 2
17385: PUSH
17386: LD_INT 45
17388: PUSH
17389: EMPTY
17390: LIST
17391: PUSH
17392: EMPTY
17393: LIST
17394: LIST
17395: LIST
17396: LIST
17397: LIST
17398: PUSH
17399: LD_INT 8
17401: PUSH
17402: LD_INT 10
17404: PUSH
17405: LD_INT 7
17407: PUSH
17408: LD_INT 2
17410: PUSH
17411: LD_INT 11
17413: PUSH
17414: LD_INT 10
17416: PUSH
17417: EMPTY
17418: LIST
17419: LIST
17420: PUSH
17421: EMPTY
17422: LIST
17423: LIST
17424: LIST
17425: LIST
17426: LIST
17427: PUSH
17428: LD_INT 8
17430: PUSH
17431: LD_INT 34
17433: PUSH
17434: LD_INT 10
17436: PUSH
17437: LD_INT 3
17439: PUSH
17440: LD_INT 12
17442: PUSH
17443: LD_INT 14
17445: PUSH
17446: EMPTY
17447: LIST
17448: LIST
17449: PUSH
17450: EMPTY
17451: LIST
17452: LIST
17453: LIST
17454: LIST
17455: LIST
17456: PUSH
17457: LD_INT 3
17459: PUSH
17460: LD_INT 20
17462: PUSH
17463: LD_INT 21
17465: PUSH
17466: LD_INT 2
17468: PUSH
17469: EMPTY
17470: PUSH
17471: EMPTY
17472: LIST
17473: LIST
17474: LIST
17475: LIST
17476: LIST
17477: PUSH
17478: LD_INT 17
17480: PUSH
17481: LD_INT 24
17483: PUSH
17484: LD_INT 21
17486: PUSH
17487: LD_INT 4
17489: PUSH
17490: EMPTY
17491: PUSH
17492: EMPTY
17493: LIST
17494: LIST
17495: LIST
17496: LIST
17497: LIST
17498: PUSH
17499: LD_INT 18
17501: PUSH
17502: LD_INT 20
17504: PUSH
17505: LD_INT 18
17507: PUSH
17508: LD_INT 3
17510: PUSH
17511: EMPTY
17512: PUSH
17513: EMPTY
17514: LIST
17515: LIST
17516: LIST
17517: LIST
17518: LIST
17519: PUSH
17520: LD_INT 21
17522: PUSH
17523: LD_INT 20
17525: PUSH
17526: LD_INT 25
17528: PUSH
17529: LD_INT 0
17531: PUSH
17532: EMPTY
17533: PUSH
17534: EMPTY
17535: LIST
17536: LIST
17537: LIST
17538: LIST
17539: LIST
17540: PUSH
17541: LD_INT 24
17543: PUSH
17544: LD_INT 17
17546: PUSH
17547: LD_INT 21
17549: PUSH
17550: LD_INT 1
17552: PUSH
17553: EMPTY
17554: PUSH
17555: EMPTY
17556: LIST
17557: LIST
17558: LIST
17559: LIST
17560: LIST
17561: PUSH
17562: LD_INT 16
17564: PUSH
17565: LD_INT 16
17567: PUSH
17568: LD_INT 17
17570: PUSH
17571: LD_INT 2
17573: PUSH
17574: EMPTY
17575: PUSH
17576: EMPTY
17577: LIST
17578: LIST
17579: LIST
17580: LIST
17581: LIST
17582: PUSH
17583: LD_INT 30
17585: PUSH
17586: LD_INT 20
17588: PUSH
17589: LD_INT 34
17591: PUSH
17592: LD_INT 0
17594: PUSH
17595: EMPTY
17596: PUSH
17597: EMPTY
17598: LIST
17599: LIST
17600: LIST
17601: LIST
17602: LIST
17603: PUSH
17604: LD_INT 28
17606: PUSH
17607: LD_INT 15
17609: PUSH
17610: LD_INT 5
17612: PUSH
17613: LD_INT 2
17615: PUSH
17616: EMPTY
17617: PUSH
17618: EMPTY
17619: LIST
17620: LIST
17621: LIST
17622: LIST
17623: LIST
17624: PUSH
17625: LD_INT 29
17627: PUSH
17628: LD_INT 14
17630: PUSH
17631: LD_INT 23
17633: PUSH
17634: LD_INT 2
17636: PUSH
17637: EMPTY
17638: PUSH
17639: EMPTY
17640: LIST
17641: LIST
17642: LIST
17643: LIST
17644: LIST
17645: PUSH
17646: LD_INT 34
17648: PUSH
17649: LD_INT 32
17651: PUSH
17652: LD_INT 20
17654: PUSH
17655: LD_INT 3
17657: PUSH
17658: EMPTY
17659: PUSH
17660: EMPTY
17661: LIST
17662: LIST
17663: LIST
17664: LIST
17665: LIST
17666: PUSH
17667: EMPTY
17668: LIST
17669: LIST
17670: LIST
17671: LIST
17672: LIST
17673: LIST
17674: LIST
17675: LIST
17676: LIST
17677: LIST
17678: LIST
17679: LIST
17680: LIST
17681: LIST
17682: LIST
17683: LIST
17684: LIST
17685: LIST
17686: LIST
17687: LIST
17688: LIST
17689: LIST
17690: PUSH
17691: LD_INT 3
17693: PUSH
17694: LD_INT 98
17696: PUSH
17697: LD_INT 26
17699: PUSH
17700: LD_INT 5
17702: PUSH
17703: EMPTY
17704: PUSH
17705: EMPTY
17706: LIST
17707: LIST
17708: LIST
17709: LIST
17710: LIST
17711: PUSH
17712: LD_INT 5
17714: PUSH
17715: LD_INT 80
17717: PUSH
17718: LD_INT 13
17720: PUSH
17721: LD_INT 0
17723: PUSH
17724: EMPTY
17725: PUSH
17726: EMPTY
17727: LIST
17728: LIST
17729: LIST
17730: LIST
17731: LIST
17732: PUSH
17733: LD_INT 28
17735: PUSH
17736: LD_INT 97
17738: PUSH
17739: LD_INT 3
17741: PUSH
17742: LD_INT 1
17744: PUSH
17745: EMPTY
17746: PUSH
17747: EMPTY
17748: LIST
17749: LIST
17750: LIST
17751: LIST
17752: LIST
17753: PUSH
17754: LD_INT 33
17756: PUSH
17757: LD_INT 105
17759: PUSH
17760: LD_INT 35
17762: PUSH
17763: LD_INT 3
17765: PUSH
17766: LD_INT 45
17768: PUSH
17769: EMPTY
17770: LIST
17771: PUSH
17772: EMPTY
17773: LIST
17774: LIST
17775: LIST
17776: LIST
17777: LIST
17778: PUSH
17779: LD_INT 33
17781: PUSH
17782: LD_INT 111
17784: PUSH
17785: LD_INT 22
17787: PUSH
17788: LD_INT 2
17790: PUSH
17791: LD_INT 43
17793: PUSH
17794: EMPTY
17795: LIST
17796: PUSH
17797: EMPTY
17798: LIST
17799: LIST
17800: LIST
17801: LIST
17802: LIST
17803: PUSH
17804: LD_INT 33
17806: PUSH
17807: LD_INT 115
17809: PUSH
17810: LD_INT 27
17812: PUSH
17813: LD_INT 2
17815: PUSH
17816: LD_INT 45
17818: PUSH
17819: EMPTY
17820: LIST
17821: PUSH
17822: EMPTY
17823: LIST
17824: LIST
17825: LIST
17826: LIST
17827: LIST
17828: PUSH
17829: LD_INT 33
17831: PUSH
17832: LD_INT 65
17834: PUSH
17835: LD_INT 3
17837: PUSH
17838: LD_INT 3
17840: PUSH
17841: LD_INT 45
17843: PUSH
17844: EMPTY
17845: LIST
17846: PUSH
17847: LD_INT 42000
17849: PUSH
17850: EMPTY
17851: LIST
17852: LIST
17853: LIST
17854: LIST
17855: LIST
17856: LIST
17857: PUSH
17858: LD_INT 33
17860: PUSH
17861: LD_INT 68
17863: PUSH
17864: LD_INT 3
17866: PUSH
17867: LD_INT 3
17869: PUSH
17870: LD_INT 45
17872: PUSH
17873: EMPTY
17874: LIST
17875: PUSH
17876: EMPTY
17877: LIST
17878: LIST
17879: LIST
17880: LIST
17881: LIST
17882: PUSH
17883: LD_INT 33
17885: PUSH
17886: LD_INT 71
17888: PUSH
17889: LD_INT 4
17891: PUSH
17892: LD_INT 3
17894: PUSH
17895: LD_INT 46
17897: PUSH
17898: EMPTY
17899: LIST
17900: PUSH
17901: EMPTY
17902: LIST
17903: LIST
17904: LIST
17905: LIST
17906: LIST
17907: PUSH
17908: LD_INT 28
17910: PUSH
17911: LD_INT 101
17913: PUSH
17914: LD_INT 4
17916: PUSH
17917: LD_INT 5
17919: PUSH
17920: EMPTY
17921: PUSH
17922: EMPTY
17923: LIST
17924: LIST
17925: LIST
17926: LIST
17927: LIST
17928: PUSH
17929: LD_INT 33
17931: PUSH
17932: LD_INT 108
17934: PUSH
17935: LD_INT 35
17937: PUSH
17938: LD_INT 2
17940: PUSH
17941: LD_INT 46
17943: PUSH
17944: EMPTY
17945: LIST
17946: PUSH
17947: EMPTY
17948: LIST
17949: LIST
17950: LIST
17951: LIST
17952: LIST
17953: PUSH
17954: LD_INT 16
17956: PUSH
17957: LD_INT 101
17959: PUSH
17960: LD_INT 26
17962: PUSH
17963: LD_INT 4
17965: PUSH
17966: EMPTY
17967: PUSH
17968: EMPTY
17969: LIST
17970: LIST
17971: LIST
17972: LIST
17973: LIST
17974: PUSH
17975: LD_INT 17
17977: PUSH
17978: LD_INT 98
17980: PUSH
17981: LD_INT 22
17983: PUSH
17984: LD_INT 3
17986: PUSH
17987: EMPTY
17988: PUSH
17989: EMPTY
17990: LIST
17991: LIST
17992: LIST
17993: LIST
17994: LIST
17995: PUSH
17996: LD_INT 21
17998: PUSH
17999: LD_INT 94
18001: PUSH
18002: LD_INT 26
18004: PUSH
18005: LD_INT 1
18007: PUSH
18008: EMPTY
18009: PUSH
18010: EMPTY
18011: LIST
18012: LIST
18013: LIST
18014: LIST
18015: LIST
18016: PUSH
18017: LD_INT 18
18019: PUSH
18020: LD_INT 98
18022: PUSH
18023: LD_INT 29
18025: PUSH
18026: LD_INT 0
18028: PUSH
18029: EMPTY
18030: PUSH
18031: EMPTY
18032: LIST
18033: LIST
18034: LIST
18035: LIST
18036: LIST
18037: PUSH
18038: LD_INT 19
18040: PUSH
18041: LD_INT 102
18043: PUSH
18044: LD_INT 30
18046: PUSH
18047: LD_INT 5
18049: PUSH
18050: EMPTY
18051: PUSH
18052: EMPTY
18053: LIST
18054: LIST
18055: LIST
18056: LIST
18057: LIST
18058: PUSH
18059: LD_INT 1
18061: PUSH
18062: LD_INT 86
18064: PUSH
18065: LD_INT 6
18067: PUSH
18068: LD_INT 3
18070: PUSH
18071: EMPTY
18072: PUSH
18073: EMPTY
18074: LIST
18075: LIST
18076: LIST
18077: LIST
18078: LIST
18079: PUSH
18080: LD_INT 30
18082: PUSH
18083: LD_INT 102
18085: PUSH
18086: LD_INT 9
18088: PUSH
18089: LD_INT 4
18091: PUSH
18092: EMPTY
18093: PUSH
18094: EMPTY
18095: LIST
18096: LIST
18097: LIST
18098: LIST
18099: LIST
18100: PUSH
18101: LD_INT 29
18103: PUSH
18104: LD_INT 77
18106: PUSH
18107: LD_INT 3
18109: PUSH
18110: LD_INT 4
18112: PUSH
18113: EMPTY
18114: PUSH
18115: EMPTY
18116: LIST
18117: LIST
18118: LIST
18119: LIST
18120: LIST
18121: PUSH
18122: LD_INT 8
18124: PUSH
18125: LD_INT 100
18127: PUSH
18128: LD_INT 17
18130: PUSH
18131: LD_INT 4
18133: PUSH
18134: LD_INT 11
18136: PUSH
18137: LD_INT 10
18139: PUSH
18140: EMPTY
18141: LIST
18142: LIST
18143: PUSH
18144: EMPTY
18145: LIST
18146: LIST
18147: LIST
18148: LIST
18149: LIST
18150: PUSH
18151: LD_INT 7
18153: PUSH
18154: LD_INT 94
18156: PUSH
18157: LD_INT 6
18159: PUSH
18160: LD_INT 3
18162: PUSH
18163: LD_INT 12
18165: PUSH
18166: LD_INT 9
18168: PUSH
18169: EMPTY
18170: LIST
18171: LIST
18172: PUSH
18173: EMPTY
18174: LIST
18175: LIST
18176: LIST
18177: LIST
18178: LIST
18179: PUSH
18180: EMPTY
18181: LIST
18182: LIST
18183: LIST
18184: LIST
18185: LIST
18186: LIST
18187: LIST
18188: LIST
18189: LIST
18190: LIST
18191: LIST
18192: LIST
18193: LIST
18194: LIST
18195: LIST
18196: LIST
18197: LIST
18198: LIST
18199: LIST
18200: LIST
18201: LIST
18202: PUSH
18203: LD_INT 1
18205: PUSH
18206: LD_INT 90
18208: PUSH
18209: LD_INT 141
18211: PUSH
18212: LD_INT 0
18214: PUSH
18215: EMPTY
18216: PUSH
18217: EMPTY
18218: LIST
18219: LIST
18220: LIST
18221: LIST
18222: LIST
18223: PUSH
18224: LD_INT 5
18226: PUSH
18227: LD_INT 98
18229: PUSH
18230: LD_INT 133
18232: PUSH
18233: LD_INT 4
18235: PUSH
18236: EMPTY
18237: PUSH
18238: EMPTY
18239: LIST
18240: LIST
18241: LIST
18242: LIST
18243: LIST
18244: PUSH
18245: LD_INT 28
18247: PUSH
18248: LD_INT 72
18250: PUSH
18251: LD_INT 133
18253: PUSH
18254: LD_INT 2
18256: PUSH
18257: EMPTY
18258: PUSH
18259: EMPTY
18260: LIST
18261: LIST
18262: LIST
18263: LIST
18264: LIST
18265: PUSH
18266: LD_INT 32
18268: PUSH
18269: LD_INT 95
18271: PUSH
18272: LD_INT 128
18274: PUSH
18275: LD_INT 0
18277: PUSH
18278: LD_INT 45
18280: PUSH
18281: EMPTY
18282: LIST
18283: PUSH
18284: EMPTY
18285: LIST
18286: LIST
18287: LIST
18288: LIST
18289: LIST
18290: PUSH
18291: LD_INT 32
18293: PUSH
18294: LD_INT 80
18296: PUSH
18297: LD_INT 122
18299: PUSH
18300: LD_INT 2
18302: PUSH
18303: LD_INT 45
18305: PUSH
18306: EMPTY
18307: LIST
18308: PUSH
18309: EMPTY
18310: LIST
18311: LIST
18312: LIST
18313: LIST
18314: LIST
18315: PUSH
18316: LD_INT 33
18318: PUSH
18319: LD_INT 95
18321: PUSH
18322: LD_INT 128
18324: PUSH
18325: LD_INT 0
18327: PUSH
18328: LD_INT 45
18330: PUSH
18331: EMPTY
18332: LIST
18333: PUSH
18334: LD_INT 31500
18336: PUSH
18337: EMPTY
18338: LIST
18339: LIST
18340: LIST
18341: LIST
18342: LIST
18343: LIST
18344: PUSH
18345: LD_INT 33
18347: PUSH
18348: LD_INT 80
18350: PUSH
18351: LD_INT 122
18353: PUSH
18354: LD_INT 2
18356: PUSH
18357: LD_INT 45
18359: PUSH
18360: EMPTY
18361: LIST
18362: PUSH
18363: LD_INT 35700
18365: PUSH
18366: EMPTY
18367: LIST
18368: LIST
18369: LIST
18370: LIST
18371: LIST
18372: LIST
18373: PUSH
18374: LD_INT 33
18376: PUSH
18377: LD_INT 112
18379: PUSH
18380: LD_INT 154
18382: PUSH
18383: LD_INT 1
18385: PUSH
18386: LD_INT 45
18388: PUSH
18389: EMPTY
18390: LIST
18391: PUSH
18392: LD_INT 33600
18394: PUSH
18395: EMPTY
18396: LIST
18397: LIST
18398: LIST
18399: LIST
18400: LIST
18401: LIST
18402: PUSH
18403: LD_INT 33
18405: PUSH
18406: LD_INT 78
18408: PUSH
18409: LD_INT 124
18411: PUSH
18412: LD_INT 2
18414: PUSH
18415: LD_INT 46
18417: PUSH
18418: EMPTY
18419: LIST
18420: PUSH
18421: LD_INT 42000
18423: PUSH
18424: EMPTY
18425: LIST
18426: LIST
18427: LIST
18428: LIST
18429: LIST
18430: LIST
18431: PUSH
18432: LD_INT 33
18434: PUSH
18435: LD_INT 99
18437: PUSH
18438: LD_INT 130
18440: PUSH
18441: LD_INT 1
18443: PUSH
18444: LD_INT 46
18446: PUSH
18447: EMPTY
18448: LIST
18449: PUSH
18450: LD_INT 46200
18452: PUSH
18453: EMPTY
18454: LIST
18455: LIST
18456: LIST
18457: LIST
18458: LIST
18459: LIST
18460: PUSH
18461: LD_INT 33
18463: PUSH
18464: LD_INT 112
18466: PUSH
18467: LD_INT 151
18469: PUSH
18470: LD_INT 1
18472: PUSH
18473: LD_INT 43
18475: PUSH
18476: EMPTY
18477: LIST
18478: PUSH
18479: LD_INT 52500
18481: PUSH
18482: EMPTY
18483: LIST
18484: LIST
18485: LIST
18486: LIST
18487: LIST
18488: LIST
18489: PUSH
18490: LD_INT 3
18492: PUSH
18493: LD_INT 81
18495: PUSH
18496: LD_INT 135
18498: PUSH
18499: LD_INT 5
18501: PUSH
18502: EMPTY
18503: PUSH
18504: EMPTY
18505: LIST
18506: LIST
18507: LIST
18508: LIST
18509: LIST
18510: PUSH
18511: LD_INT 21
18513: PUSH
18514: LD_INT 84
18516: PUSH
18517: LD_INT 135
18519: PUSH
18520: LD_INT 4
18522: PUSH
18523: EMPTY
18524: PUSH
18525: EMPTY
18526: LIST
18527: LIST
18528: LIST
18529: LIST
18530: LIST
18531: PUSH
18532: LD_INT 17
18534: PUSH
18535: LD_INT 85
18537: PUSH
18538: LD_INT 139
18540: PUSH
18541: LD_INT 5
18543: PUSH
18544: EMPTY
18545: PUSH
18546: EMPTY
18547: LIST
18548: LIST
18549: LIST
18550: LIST
18551: LIST
18552: PUSH
18553: LD_INT 16
18555: PUSH
18556: LD_INT 77
18558: PUSH
18559: LD_INT 135
18561: PUSH
18562: LD_INT 1
18564: PUSH
18565: EMPTY
18566: PUSH
18567: EMPTY
18568: LIST
18569: LIST
18570: LIST
18571: LIST
18572: LIST
18573: PUSH
18574: LD_INT 18
18576: PUSH
18577: LD_INT 81
18579: PUSH
18580: LD_INT 138
18582: PUSH
18583: LD_INT 0
18585: PUSH
18586: EMPTY
18587: PUSH
18588: LD_INT 29400
18590: PUSH
18591: EMPTY
18592: LIST
18593: LIST
18594: LIST
18595: LIST
18596: LIST
18597: LIST
18598: PUSH
18599: LD_INT 30
18601: PUSH
18602: LD_INT 71
18604: PUSH
18605: LD_INT 137
18607: PUSH
18608: LD_INT 0
18610: PUSH
18611: EMPTY
18612: PUSH
18613: EMPTY
18614: LIST
18615: LIST
18616: LIST
18617: LIST
18618: LIST
18619: PUSH
18620: LD_INT 29
18622: PUSH
18623: LD_INT 69
18625: PUSH
18626: LD_INT 133
18628: PUSH
18629: LD_INT 5
18631: PUSH
18632: EMPTY
18633: PUSH
18634: EMPTY
18635: LIST
18636: LIST
18637: LIST
18638: LIST
18639: LIST
18640: PUSH
18641: LD_INT 7
18643: PUSH
18644: LD_INT 102
18646: PUSH
18647: LD_INT 153
18649: PUSH
18650: LD_INT 0
18652: PUSH
18653: LD_INT 12
18655: PUSH
18656: LD_INT 9
18658: PUSH
18659: EMPTY
18660: LIST
18661: LIST
18662: PUSH
18663: LD_INT 73500
18665: PUSH
18666: EMPTY
18667: LIST
18668: LIST
18669: LIST
18670: LIST
18671: LIST
18672: LIST
18673: PUSH
18674: LD_INT 8
18676: PUSH
18677: LD_INT 97
18679: PUSH
18680: LD_INT 145
18682: PUSH
18683: LD_INT 2
18685: PUSH
18686: LD_INT 10
18688: PUSH
18689: LD_INT 11
18691: PUSH
18692: EMPTY
18693: LIST
18694: LIST
18695: PUSH
18696: EMPTY
18697: LIST
18698: LIST
18699: LIST
18700: LIST
18701: LIST
18702: PUSH
18703: LD_INT 28
18705: PUSH
18706: LD_INT 74
18708: PUSH
18709: LD_INT 137
18711: PUSH
18712: LD_INT 2
18714: PUSH
18715: EMPTY
18716: PUSH
18717: EMPTY
18718: LIST
18719: LIST
18720: LIST
18721: LIST
18722: LIST
18723: PUSH
18724: LD_INT 24
18726: PUSH
18727: LD_INT 81
18729: PUSH
18730: LD_INT 131
18732: PUSH
18733: LD_INT 3
18735: PUSH
18736: EMPTY
18737: PUSH
18738: EMPTY
18739: LIST
18740: LIST
18741: LIST
18742: LIST
18743: LIST
18744: PUSH
18745: EMPTY
18746: LIST
18747: LIST
18748: LIST
18749: LIST
18750: LIST
18751: LIST
18752: LIST
18753: LIST
18754: LIST
18755: LIST
18756: LIST
18757: LIST
18758: LIST
18759: LIST
18760: LIST
18761: LIST
18762: LIST
18763: LIST
18764: LIST
18765: LIST
18766: LIST
18767: LIST
18768: PUSH
18769: LD_INT 1
18771: PUSH
18772: LD_INT 217
18774: PUSH
18775: LD_INT 129
18777: PUSH
18778: LD_INT 3
18780: PUSH
18781: EMPTY
18782: PUSH
18783: EMPTY
18784: LIST
18785: LIST
18786: LIST
18787: LIST
18788: LIST
18789: PUSH
18790: LD_INT 28
18792: PUSH
18793: LD_INT 233
18795: PUSH
18796: LD_INT 154
18798: PUSH
18799: LD_INT 4
18801: PUSH
18802: EMPTY
18803: PUSH
18804: EMPTY
18805: LIST
18806: LIST
18807: LIST
18808: LIST
18809: LIST
18810: PUSH
18811: LD_INT 33
18813: PUSH
18814: LD_INT 205
18816: PUSH
18817: LD_INT 123
18819: PUSH
18820: LD_INT 0
18822: PUSH
18823: LD_INT 43
18825: PUSH
18826: EMPTY
18827: LIST
18828: PUSH
18829: LD_INT 52500
18831: PUSH
18832: EMPTY
18833: LIST
18834: LIST
18835: LIST
18836: LIST
18837: LIST
18838: LIST
18839: PUSH
18840: LD_INT 33
18842: PUSH
18843: LD_INT 200
18845: PUSH
18846: LD_INT 142
18848: PUSH
18849: LD_INT 4
18851: PUSH
18852: LD_INT 46
18854: PUSH
18855: EMPTY
18856: LIST
18857: PUSH
18858: EMPTY
18859: LIST
18860: LIST
18861: LIST
18862: LIST
18863: LIST
18864: PUSH
18865: LD_INT 33
18867: PUSH
18868: LD_INT 199
18870: PUSH
18871: LD_INT 135
18873: PUSH
18874: LD_INT 4
18876: PUSH
18877: LD_INT 46
18879: PUSH
18880: EMPTY
18881: LIST
18882: PUSH
18883: LD_INT 58800
18885: PUSH
18886: EMPTY
18887: LIST
18888: LIST
18889: LIST
18890: LIST
18891: LIST
18892: LIST
18893: PUSH
18894: LD_INT 33
18896: PUSH
18897: LD_INT 201
18899: PUSH
18900: LD_INT 127
18902: PUSH
18903: LD_INT 5
18905: PUSH
18906: LD_INT 46
18908: PUSH
18909: EMPTY
18910: LIST
18911: PUSH
18912: EMPTY
18913: LIST
18914: LIST
18915: LIST
18916: LIST
18917: LIST
18918: PUSH
18919: LD_INT 33
18921: PUSH
18922: LD_INT 199
18924: PUSH
18925: LD_INT 138
18927: PUSH
18928: LD_INT 4
18930: PUSH
18931: LD_INT 45
18933: PUSH
18934: EMPTY
18935: LIST
18936: PUSH
18937: EMPTY
18938: LIST
18939: LIST
18940: LIST
18941: LIST
18942: LIST
18943: PUSH
18944: LD_INT 33
18946: PUSH
18947: LD_INT 202
18949: PUSH
18950: LD_INT 124
18952: PUSH
18953: LD_INT 5
18955: PUSH
18956: LD_INT 45
18958: PUSH
18959: EMPTY
18960: LIST
18961: PUSH
18962: EMPTY
18963: LIST
18964: LIST
18965: LIST
18966: LIST
18967: LIST
18968: PUSH
18969: LD_INT 33
18971: PUSH
18972: LD_INT 209
18974: PUSH
18975: LD_INT 154
18977: PUSH
18978: LD_INT 3
18980: PUSH
18981: LD_INT 45
18983: PUSH
18984: EMPTY
18985: LIST
18986: PUSH
18987: EMPTY
18988: LIST
18989: LIST
18990: LIST
18991: LIST
18992: LIST
18993: PUSH
18994: LD_INT 33
18996: PUSH
18997: LD_INT 218
18999: PUSH
19000: LD_INT 123
19002: PUSH
19003: LD_INT 5
19005: PUSH
19006: LD_INT 45
19008: PUSH
19009: EMPTY
19010: LIST
19011: PUSH
19012: EMPTY
19013: LIST
19014: LIST
19015: LIST
19016: LIST
19017: LIST
19018: PUSH
19019: LD_INT 8
19021: PUSH
19022: LD_INT 227
19024: PUSH
19025: LD_INT 145
19027: PUSH
19028: LD_INT 2
19030: PUSH
19031: LD_INT 12
19033: PUSH
19034: LD_INT 14
19036: PUSH
19037: EMPTY
19038: LIST
19039: LIST
19040: PUSH
19041: EMPTY
19042: LIST
19043: LIST
19044: LIST
19045: LIST
19046: LIST
19047: PUSH
19048: LD_INT 8
19050: PUSH
19051: LD_INT 221
19053: PUSH
19054: LD_INT 153
19056: PUSH
19057: LD_INT 4
19059: PUSH
19060: LD_INT 10
19062: PUSH
19063: LD_INT 11
19065: PUSH
19066: EMPTY
19067: LIST
19068: LIST
19069: PUSH
19070: EMPTY
19071: LIST
19072: LIST
19073: LIST
19074: LIST
19075: LIST
19076: PUSH
19077: LD_INT 28
19079: PUSH
19080: LD_INT 231
19082: PUSH
19083: LD_INT 155
19085: PUSH
19086: LD_INT 4
19088: PUSH
19089: EMPTY
19090: PUSH
19091: EMPTY
19092: LIST
19093: LIST
19094: LIST
19095: LIST
19096: LIST
19097: PUSH
19098: LD_INT 29
19100: PUSH
19101: LD_INT 224
19103: PUSH
19104: LD_INT 134
19106: PUSH
19107: LD_INT 4
19109: PUSH
19110: EMPTY
19111: PUSH
19112: EMPTY
19113: LIST
19114: LIST
19115: LIST
19116: LIST
19117: LIST
19118: PUSH
19119: LD_INT 30
19121: PUSH
19122: LD_INT 224
19124: PUSH
19125: LD_INT 150
19127: PUSH
19128: LD_INT 2
19130: PUSH
19131: EMPTY
19132: PUSH
19133: EMPTY
19134: LIST
19135: LIST
19136: LIST
19137: LIST
19138: LIST
19139: PUSH
19140: LD_INT 3
19142: PUSH
19143: LD_INT 207
19145: PUSH
19146: LD_INT 141
19148: PUSH
19149: LD_INT 1
19151: PUSH
19152: EMPTY
19153: PUSH
19154: EMPTY
19155: LIST
19156: LIST
19157: LIST
19158: LIST
19159: LIST
19160: PUSH
19161: LD_INT 24
19163: PUSH
19164: LD_INT 211
19166: PUSH
19167: LD_INT 145
19169: PUSH
19170: LD_INT 5
19172: PUSH
19173: EMPTY
19174: PUSH
19175: EMPTY
19176: LIST
19177: LIST
19178: LIST
19179: LIST
19180: LIST
19181: PUSH
19182: LD_INT 21
19184: PUSH
19185: LD_INT 207
19187: PUSH
19188: LD_INT 144
19190: PUSH
19191: LD_INT 0
19193: PUSH
19194: EMPTY
19195: PUSH
19196: EMPTY
19197: LIST
19198: LIST
19199: LIST
19200: LIST
19201: LIST
19202: PUSH
19203: LD_INT 18
19205: PUSH
19206: LD_INT 203
19208: PUSH
19209: LD_INT 141
19211: PUSH
19212: LD_INT 1
19214: PUSH
19215: EMPTY
19216: PUSH
19217: EMPTY
19218: LIST
19219: LIST
19220: LIST
19221: LIST
19222: LIST
19223: PUSH
19224: LD_INT 16
19226: PUSH
19227: LD_INT 204
19229: PUSH
19230: LD_INT 138
19232: PUSH
19233: LD_INT 2
19235: PUSH
19236: EMPTY
19237: PUSH
19238: EMPTY
19239: LIST
19240: LIST
19241: LIST
19242: LIST
19243: LIST
19244: PUSH
19245: LD_INT 17
19247: PUSH
19248: LD_INT 207
19250: PUSH
19251: LD_INT 137
19253: PUSH
19254: LD_INT 3
19256: PUSH
19257: EMPTY
19258: PUSH
19259: EMPTY
19260: LIST
19261: LIST
19262: LIST
19263: LIST
19264: LIST
19265: PUSH
19266: LD_INT 4
19268: PUSH
19269: LD_INT 210
19271: PUSH
19272: LD_INT 128
19274: PUSH
19275: LD_INT 2
19277: PUSH
19278: EMPTY
19279: PUSH
19280: LD_INT 73500
19282: PUSH
19283: EMPTY
19284: LIST
19285: LIST
19286: LIST
19287: LIST
19288: LIST
19289: LIST
19290: PUSH
19291: LD_INT 4
19293: PUSH
19294: LD_INT 210
19296: PUSH
19297: LD_INT 128
19299: PUSH
19300: LD_INT 2
19302: PUSH
19303: EMPTY
19304: PUSH
19305: EMPTY
19306: LIST
19307: LIST
19308: LIST
19309: LIST
19310: LIST
19311: PUSH
19312: EMPTY
19313: LIST
19314: LIST
19315: LIST
19316: LIST
19317: LIST
19318: LIST
19319: LIST
19320: LIST
19321: LIST
19322: LIST
19323: LIST
19324: LIST
19325: LIST
19326: LIST
19327: LIST
19328: LIST
19329: LIST
19330: LIST
19331: LIST
19332: LIST
19333: LIST
19334: LIST
19335: LIST
19336: PUSH
19337: LD_INT 1
19339: PUSH
19340: LD_INT 184
19342: PUSH
19343: LD_INT 73
19345: PUSH
19346: LD_INT 3
19348: PUSH
19349: EMPTY
19350: PUSH
19351: EMPTY
19352: LIST
19353: LIST
19354: LIST
19355: LIST
19356: LIST
19357: PUSH
19358: LD_INT 5
19360: PUSH
19361: LD_INT 188
19363: PUSH
19364: LD_INT 94
19366: PUSH
19367: LD_INT 5
19369: PUSH
19370: EMPTY
19371: PUSH
19372: EMPTY
19373: LIST
19374: LIST
19375: LIST
19376: LIST
19377: LIST
19378: PUSH
19379: LD_INT 33
19381: PUSH
19382: LD_INT 171
19384: PUSH
19385: LD_INT 92
19387: PUSH
19388: LD_INT 3
19390: PUSH
19391: LD_INT 45
19393: PUSH
19394: EMPTY
19395: LIST
19396: PUSH
19397: EMPTY
19398: LIST
19399: LIST
19400: LIST
19401: LIST
19402: LIST
19403: PUSH
19404: LD_INT 33
19406: PUSH
19407: LD_INT 177
19409: PUSH
19410: LD_INT 98
19412: PUSH
19413: LD_INT 3
19415: PUSH
19416: LD_INT 46
19418: PUSH
19419: EMPTY
19420: LIST
19421: PUSH
19422: EMPTY
19423: LIST
19424: LIST
19425: LIST
19426: LIST
19427: LIST
19428: PUSH
19429: LD_INT 33
19431: PUSH
19432: LD_INT 169
19434: PUSH
19435: LD_INT 69
19437: PUSH
19438: LD_INT 5
19440: PUSH
19441: LD_INT 46
19443: PUSH
19444: EMPTY
19445: LIST
19446: PUSH
19447: EMPTY
19448: LIST
19449: LIST
19450: LIST
19451: LIST
19452: LIST
19453: PUSH
19454: LD_INT 33
19456: PUSH
19457: LD_INT 170
19459: PUSH
19460: LD_INT 66
19462: PUSH
19463: LD_INT 5
19465: PUSH
19466: LD_INT 45
19468: PUSH
19469: EMPTY
19470: LIST
19471: PUSH
19472: EMPTY
19473: LIST
19474: LIST
19475: LIST
19476: LIST
19477: LIST
19478: PUSH
19479: LD_INT 33
19481: PUSH
19482: LD_INT 184
19484: PUSH
19485: LD_INT 62
19487: PUSH
19488: LD_INT 5
19490: PUSH
19491: LD_INT 43
19493: PUSH
19494: EMPTY
19495: LIST
19496: PUSH
19497: EMPTY
19498: LIST
19499: LIST
19500: LIST
19501: LIST
19502: LIST
19503: PUSH
19504: LD_INT 33
19506: PUSH
19507: LD_INT 203
19509: PUSH
19510: LD_INT 102
19512: PUSH
19513: LD_INT 2
19515: PUSH
19516: LD_INT 45
19518: PUSH
19519: EMPTY
19520: LIST
19521: PUSH
19522: LD_INT 63000
19524: PUSH
19525: EMPTY
19526: LIST
19527: LIST
19528: LIST
19529: LIST
19530: LIST
19531: LIST
19532: PUSH
19533: LD_INT 33
19535: PUSH
19536: LD_INT 195
19538: PUSH
19539: LD_INT 103
19541: PUSH
19542: LD_INT 2
19544: PUSH
19545: LD_INT 45
19547: PUSH
19548: EMPTY
19549: LIST
19550: PUSH
19551: EMPTY
19552: LIST
19553: LIST
19554: LIST
19555: LIST
19556: LIST
19557: PUSH
19558: LD_INT 33
19560: PUSH
19561: LD_INT 200
19563: PUSH
19564: LD_INT 103
19566: PUSH
19567: LD_INT 2
19569: PUSH
19570: LD_INT 46
19572: PUSH
19573: EMPTY
19574: LIST
19575: PUSH
19576: EMPTY
19577: LIST
19578: LIST
19579: LIST
19580: LIST
19581: LIST
19582: PUSH
19583: LD_INT 28
19585: PUSH
19586: LD_INT 198
19588: PUSH
19589: LD_INT 90
19591: PUSH
19592: LD_INT 3
19594: PUSH
19595: EMPTY
19596: PUSH
19597: EMPTY
19598: LIST
19599: LIST
19600: LIST
19601: LIST
19602: LIST
19603: PUSH
19604: LD_INT 30
19606: PUSH
19607: LD_INT 179
19609: PUSH
19610: LD_INT 70
19612: PUSH
19613: LD_INT 1
19615: PUSH
19616: EMPTY
19617: PUSH
19618: EMPTY
19619: LIST
19620: LIST
19621: LIST
19622: LIST
19623: LIST
19624: PUSH
19625: LD_INT 3
19627: PUSH
19628: LD_INT 190
19630: PUSH
19631: LD_INT 84
19633: PUSH
19634: LD_INT 4
19636: PUSH
19637: EMPTY
19638: PUSH
19639: EMPTY
19640: LIST
19641: LIST
19642: LIST
19643: LIST
19644: LIST
19645: PUSH
19646: LD_INT 17
19648: PUSH
19649: LD_INT 190
19651: PUSH
19652: LD_INT 88
19654: PUSH
19655: LD_INT 0
19657: PUSH
19658: EMPTY
19659: PUSH
19660: EMPTY
19661: LIST
19662: LIST
19663: LIST
19664: LIST
19665: LIST
19666: PUSH
19667: LD_INT 18
19669: PUSH
19670: LD_INT 193
19672: PUSH
19673: LD_INT 87
19675: PUSH
19676: LD_INT 5
19678: PUSH
19679: EMPTY
19680: PUSH
19681: EMPTY
19682: LIST
19683: LIST
19684: LIST
19685: LIST
19686: LIST
19687: PUSH
19688: LD_INT 21
19690: PUSH
19691: LD_INT 194
19693: PUSH
19694: LD_INT 84
19696: PUSH
19697: LD_INT 4
19699: PUSH
19700: EMPTY
19701: PUSH
19702: EMPTY
19703: LIST
19704: LIST
19705: LIST
19706: LIST
19707: LIST
19708: PUSH
19709: LD_INT 24
19711: PUSH
19712: LD_INT 190
19714: PUSH
19715: LD_INT 81
19717: PUSH
19718: LD_INT 3
19720: PUSH
19721: EMPTY
19722: PUSH
19723: EMPTY
19724: LIST
19725: LIST
19726: LIST
19727: LIST
19728: LIST
19729: PUSH
19730: LD_INT 8
19732: PUSH
19733: LD_INT 176
19735: PUSH
19736: LD_INT 92
19738: PUSH
19739: LD_INT 0
19741: PUSH
19742: LD_INT 11
19744: PUSH
19745: LD_INT 9
19747: PUSH
19748: EMPTY
19749: LIST
19750: LIST
19751: PUSH
19752: EMPTY
19753: LIST
19754: LIST
19755: LIST
19756: LIST
19757: LIST
19758: PUSH
19759: LD_INT 8
19761: PUSH
19762: LD_INT 176
19764: PUSH
19765: LD_INT 82
19767: PUSH
19768: LD_INT 3
19770: PUSH
19771: LD_INT 12
19773: PUSH
19774: LD_INT 10
19776: PUSH
19777: EMPTY
19778: LIST
19779: LIST
19780: PUSH
19781: EMPTY
19782: LIST
19783: LIST
19784: LIST
19785: LIST
19786: LIST
19787: PUSH
19788: LD_INT 28
19790: PUSH
19791: LD_INT 196
19793: PUSH
19794: LD_INT 92
19796: PUSH
19797: LD_INT 5
19799: PUSH
19800: EMPTY
19801: PUSH
19802: EMPTY
19803: LIST
19804: LIST
19805: LIST
19806: LIST
19807: LIST
19808: PUSH
19809: LD_INT 28
19811: PUSH
19812: LD_INT 198
19814: PUSH
19815: LD_INT 86
19817: PUSH
19818: LD_INT 1
19820: PUSH
19821: EMPTY
19822: PUSH
19823: EMPTY
19824: LIST
19825: LIST
19826: LIST
19827: LIST
19828: LIST
19829: PUSH
19830: LD_INT 30
19832: PUSH
19833: LD_INT 192
19835: PUSH
19836: LD_INT 93
19838: PUSH
19839: LD_INT 0
19841: PUSH
19842: EMPTY
19843: PUSH
19844: EMPTY
19845: LIST
19846: LIST
19847: LIST
19848: LIST
19849: LIST
19850: PUSH
19851: EMPTY
19852: LIST
19853: LIST
19854: LIST
19855: LIST
19856: LIST
19857: LIST
19858: LIST
19859: LIST
19860: LIST
19861: LIST
19862: LIST
19863: LIST
19864: LIST
19865: LIST
19866: LIST
19867: LIST
19868: LIST
19869: LIST
19870: LIST
19871: LIST
19872: LIST
19873: LIST
19874: PUSH
19875: EMPTY
19876: LIST
19877: LIST
19878: LIST
19879: LIST
19880: LIST
19881: ST_TO_ADDR
// in_depots := [ [ 820 , 720 , 421 ] , [ 770 , 620 , 320 ] , [ 680 , 900 , 310 ] , [ 730 , 920 , 240 ] , [ 510 , 810 , 300 ] ] ;
19882: LD_ADDR_LOC 25
19886: PUSH
19887: LD_INT 820
19889: PUSH
19890: LD_INT 720
19892: PUSH
19893: LD_INT 421
19895: PUSH
19896: EMPTY
19897: LIST
19898: LIST
19899: LIST
19900: PUSH
19901: LD_INT 770
19903: PUSH
19904: LD_INT 620
19906: PUSH
19907: LD_INT 320
19909: PUSH
19910: EMPTY
19911: LIST
19912: LIST
19913: LIST
19914: PUSH
19915: LD_INT 680
19917: PUSH
19918: LD_INT 900
19920: PUSH
19921: LD_INT 310
19923: PUSH
19924: EMPTY
19925: LIST
19926: LIST
19927: LIST
19928: PUSH
19929: LD_INT 730
19931: PUSH
19932: LD_INT 920
19934: PUSH
19935: LD_INT 240
19937: PUSH
19938: EMPTY
19939: LIST
19940: LIST
19941: LIST
19942: PUSH
19943: LD_INT 510
19945: PUSH
19946: LD_INT 810
19948: PUSH
19949: LD_INT 300
19951: PUSH
19952: EMPTY
19953: LIST
19954: LIST
19955: LIST
19956: PUSH
19957: EMPTY
19958: LIST
19959: LIST
19960: LIST
19961: LIST
19962: LIST
19963: ST_TO_ADDR
// end ;
19964: LD_VAR 0 1
19968: RET
// function UpgradeableTo ( b , up ) ; var i ; begin
19969: LD_INT 0
19971: PPUSH
19972: PPUSH
// result := 0 ;
19973: LD_ADDR_VAR 0 3
19977: PUSH
19978: LD_INT 0
19980: ST_TO_ADDR
// for i := 1 to upgradeable do
19981: LD_ADDR_VAR 0 4
19985: PUSH
19986: DOUBLE
19987: LD_INT 1
19989: DEC
19990: ST_TO_ADDR
19991: LD_LOC 27
19995: PUSH
19996: FOR_TO
19997: IFFALSE 20049
// if b = upgradeable [ i ] and up = trough_upgrade [ i ] then
19999: LD_VAR 0 1
20003: PUSH
20004: LD_LOC 27
20008: PUSH
20009: LD_VAR 0 4
20013: ARRAY
20014: EQUAL
20015: PUSH
20016: LD_VAR 0 2
20020: PUSH
20021: LD_LOC 28
20025: PUSH
20026: LD_VAR 0 4
20030: ARRAY
20031: EQUAL
20032: AND
20033: IFFALSE 20047
// begin result := up ;
20035: LD_ADDR_VAR 0 3
20039: PUSH
20040: LD_VAR 0 2
20044: ST_TO_ADDR
// break ;
20045: GO 20049
// end ;
20047: GO 19996
20049: POP
20050: POP
// end ;
20051: LD_VAR 0 3
20055: RET
// function IsUpgraded ( b ) ; begin
20056: LD_INT 0
20058: PPUSH
// result := 0 ;
20059: LD_ADDR_VAR 0 2
20063: PUSH
20064: LD_INT 0
20066: ST_TO_ADDR
// case b of trough_upgrade [ 1 ] :
20067: LD_VAR 0 1
20071: PUSH
20072: LD_LOC 28
20076: PUSH
20077: LD_INT 1
20079: ARRAY
20080: DOUBLE
20081: EQUAL
20082: IFTRUE 20086
20084: GO 20103
20086: POP
// result := upgradeable [ 1 ] ; trough_upgrade [ 2 ] :
20087: LD_ADDR_VAR 0 2
20091: PUSH
20092: LD_LOC 27
20096: PUSH
20097: LD_INT 1
20099: ARRAY
20100: ST_TO_ADDR
20101: GO 20228
20103: LD_LOC 28
20107: PUSH
20108: LD_INT 2
20110: ARRAY
20111: DOUBLE
20112: EQUAL
20113: IFTRUE 20117
20115: GO 20134
20117: POP
// result := upgradeable [ 2 ] ; trough_upgrade [ 3 ] :
20118: LD_ADDR_VAR 0 2
20122: PUSH
20123: LD_LOC 27
20127: PUSH
20128: LD_INT 2
20130: ARRAY
20131: ST_TO_ADDR
20132: GO 20228
20134: LD_LOC 28
20138: PUSH
20139: LD_INT 3
20141: ARRAY
20142: DOUBLE
20143: EQUAL
20144: IFTRUE 20148
20146: GO 20165
20148: POP
// result := upgradeable [ 3 ] ; trough_upgrade [ 4 ] :
20149: LD_ADDR_VAR 0 2
20153: PUSH
20154: LD_LOC 27
20158: PUSH
20159: LD_INT 3
20161: ARRAY
20162: ST_TO_ADDR
20163: GO 20228
20165: LD_LOC 28
20169: PUSH
20170: LD_INT 4
20172: ARRAY
20173: DOUBLE
20174: EQUAL
20175: IFTRUE 20179
20177: GO 20196
20179: POP
// result := upgradeable [ 4 ] ; trough_upgrade [ 5 ] :
20180: LD_ADDR_VAR 0 2
20184: PUSH
20185: LD_LOC 27
20189: PUSH
20190: LD_INT 4
20192: ARRAY
20193: ST_TO_ADDR
20194: GO 20228
20196: LD_LOC 28
20200: PUSH
20201: LD_INT 5
20203: ARRAY
20204: DOUBLE
20205: EQUAL
20206: IFTRUE 20210
20208: GO 20227
20210: POP
// result := upgradeable [ 5 ] ; end ;
20211: LD_ADDR_VAR 0 2
20215: PUSH
20216: LD_LOC 27
20220: PUSH
20221: LD_INT 5
20223: ARRAY
20224: ST_TO_ADDR
20225: GO 20228
20227: POP
// end ;
20228: LD_VAR 0 2
20232: RET
// function BasicFrom ( b ) ; begin
20233: LD_INT 0
20235: PPUSH
// result := b ;
20236: LD_ADDR_VAR 0 2
20240: PUSH
20241: LD_VAR 0 1
20245: ST_TO_ADDR
// case b of trough_upgrade [ 1 ] :
20246: LD_VAR 0 1
20250: PUSH
20251: LD_LOC 28
20255: PUSH
20256: LD_INT 1
20258: ARRAY
20259: DOUBLE
20260: EQUAL
20261: IFTRUE 20265
20263: GO 20282
20265: POP
// result := upgradeable [ 1 ] ; trough_upgrade [ 2 ] :
20266: LD_ADDR_VAR 0 2
20270: PUSH
20271: LD_LOC 27
20275: PUSH
20276: LD_INT 1
20278: ARRAY
20279: ST_TO_ADDR
20280: GO 20407
20282: LD_LOC 28
20286: PUSH
20287: LD_INT 2
20289: ARRAY
20290: DOUBLE
20291: EQUAL
20292: IFTRUE 20296
20294: GO 20313
20296: POP
// result := upgradeable [ 2 ] ; trough_upgrade [ 3 ] :
20297: LD_ADDR_VAR 0 2
20301: PUSH
20302: LD_LOC 27
20306: PUSH
20307: LD_INT 2
20309: ARRAY
20310: ST_TO_ADDR
20311: GO 20407
20313: LD_LOC 28
20317: PUSH
20318: LD_INT 3
20320: ARRAY
20321: DOUBLE
20322: EQUAL
20323: IFTRUE 20327
20325: GO 20344
20327: POP
// result := upgradeable [ 3 ] ; trough_upgrade [ 4 ] :
20328: LD_ADDR_VAR 0 2
20332: PUSH
20333: LD_LOC 27
20337: PUSH
20338: LD_INT 3
20340: ARRAY
20341: ST_TO_ADDR
20342: GO 20407
20344: LD_LOC 28
20348: PUSH
20349: LD_INT 4
20351: ARRAY
20352: DOUBLE
20353: EQUAL
20354: IFTRUE 20358
20356: GO 20375
20358: POP
// result := upgradeable [ 4 ] ; trough_upgrade [ 6 ] :
20359: LD_ADDR_VAR 0 2
20363: PUSH
20364: LD_LOC 27
20368: PUSH
20369: LD_INT 4
20371: ARRAY
20372: ST_TO_ADDR
20373: GO 20407
20375: LD_LOC 28
20379: PUSH
20380: LD_INT 6
20382: ARRAY
20383: DOUBLE
20384: EQUAL
20385: IFTRUE 20389
20387: GO 20406
20389: POP
// result := upgradeable [ 6 ] ; end ;
20390: LD_ADDR_VAR 0 2
20394: PUSH
20395: LD_LOC 27
20399: PUSH
20400: LD_INT 6
20402: ARRAY
20403: ST_TO_ADDR
20404: GO 20407
20406: POP
// end ;
20407: LD_VAR 0 2
20411: RET
// export function build_map ; var i , j ; begin
20412: LD_INT 0
20414: PPUSH
20415: PPUSH
20416: PPUSH
// for i := 1 to 5 do
20417: LD_ADDR_VAR 0 2
20421: PUSH
20422: DOUBLE
20423: LD_INT 1
20425: DEC
20426: ST_TO_ADDR
20427: LD_INT 5
20429: PUSH
20430: FOR_TO
20431: IFFALSE 20498
// buildings := replace ( buildings , i , place_base ( builds [ i ] , in_depots [ i ] , ai_s [ i ] , ai_nation ) ) ;
20433: LD_ADDR_EXP 75
20437: PUSH
20438: LD_EXP 75
20442: PPUSH
20443: LD_VAR 0 2
20447: PPUSH
20448: LD_LOC 23
20452: PUSH
20453: LD_VAR 0 2
20457: ARRAY
20458: PPUSH
20459: LD_LOC 25
20463: PUSH
20464: LD_VAR 0 2
20468: ARRAY
20469: PPUSH
20470: LD_EXP 23
20474: PUSH
20475: LD_VAR 0 2
20479: ARRAY
20480: PPUSH
20481: LD_EXP 22
20485: PPUSH
20486: CALL 20738 0 4
20490: PPUSH
20491: CALL_OW 1
20495: ST_TO_ADDR
20496: GO 20430
20498: POP
20499: POP
// hlavouni := [ Platonov , Gossudarov , Borodin , Tsaritsyn , Davidov , Eisenstein ] ;
20500: LD_ADDR_EXP 72
20504: PUSH
20505: LD_EXP 42
20509: PUSH
20510: LD_EXP 43
20514: PUSH
20515: LD_EXP 46
20519: PUSH
20520: LD_EXP 47
20524: PUSH
20525: LD_EXP 48
20529: PUSH
20530: LD_EXP 49
20534: PUSH
20535: EMPTY
20536: LIST
20537: LIST
20538: LIST
20539: LIST
20540: LIST
20541: LIST
20542: ST_TO_ADDR
// PlaceHumanInUnit ( Platonov , da ) ;
20543: LD_EXP 42
20547: PPUSH
20548: LD_INT 1
20550: PPUSH
20551: CALL_OW 52
// PlaceHumanInUnit ( Gossudarov , art_cargo ) ;
20555: LD_EXP 43
20559: PPUSH
20560: LD_INT 121
20562: PPUSH
20563: CALL_OW 52
// PlaceHumanInUnit ( Borodin , db ) ;
20567: LD_EXP 46
20571: PPUSH
20572: LD_INT 51
20574: PPUSH
20575: CALL_OW 52
// PlaceHumanInUnit ( Tsaritsyn , dc ) ;
20579: LD_EXP 47
20583: PPUSH
20584: LD_INT 80
20586: PPUSH
20587: CALL_OW 52
// PlaceHumanInUnit ( Davidov , dd ) ;
20591: LD_EXP 48
20595: PPUSH
20596: LD_INT 28
20598: PPUSH
20599: CALL_OW 52
// PlaceHumanInUnit ( Eisenstein , de ) ;
20603: LD_EXP 49
20607: PPUSH
20608: LD_INT 37
20610: PPUSH
20611: CALL_OW 52
// for i := 1 to 5 do
20615: LD_ADDR_VAR 0 2
20619: PUSH
20620: DOUBLE
20621: LD_INT 1
20623: DEC
20624: ST_TO_ADDR
20625: LD_INT 5
20627: PUSH
20628: FOR_TO
20629: IFFALSE 20731
// begin humans := replace ( humans , i , place_aici ( aici [ i ] , abase [ i ] , ai_s [ i ] , ai_nation ) ) ;
20631: LD_ADDR_EXP 76
20635: PUSH
20636: LD_EXP 76
20640: PPUSH
20641: LD_VAR 0 2
20645: PPUSH
20646: LD_LOC 24
20650: PUSH
20651: LD_VAR 0 2
20655: ARRAY
20656: PPUSH
20657: LD_LOC 26
20661: PUSH
20662: LD_VAR 0 2
20666: ARRAY
20667: PPUSH
20668: LD_EXP 23
20672: PUSH
20673: LD_VAR 0 2
20677: ARRAY
20678: PPUSH
20679: LD_EXP 22
20683: PPUSH
20684: CALL 21190 0 4
20688: PPUSH
20689: CALL_OW 1
20693: ST_TO_ADDR
// for j in humans [ i ] do
20694: LD_ADDR_VAR 0 3
20698: PUSH
20699: LD_EXP 76
20703: PUSH
20704: LD_VAR 0 2
20708: ARRAY
20709: PUSH
20710: FOR_IN
20711: IFFALSE 20727
// SetTag ( j , 1 ) ;
20713: LD_VAR 0 3
20717: PPUSH
20718: LD_INT 1
20720: PPUSH
20721: CALL_OW 109
20725: GO 20710
20727: POP
20728: POP
// end ;
20729: GO 20628
20731: POP
20732: POP
// end ;
20733: LD_VAR 0 1
20737: RET
// function place_base ( builds , in_depot , side , nat ) ; var i , base , b , tb , bb , cans , oil , sib ; begin
20738: LD_INT 0
20740: PPUSH
20741: PPUSH
20742: PPUSH
20743: PPUSH
20744: PPUSH
20745: PPUSH
20746: PPUSH
20747: PPUSH
20748: PPUSH
// cans := in_depot [ 1 ] ;
20749: LD_ADDR_VAR 0 11
20753: PUSH
20754: LD_VAR 0 2
20758: PUSH
20759: LD_INT 1
20761: ARRAY
20762: ST_TO_ADDR
// oil := in_depot [ 2 ] ;
20763: LD_ADDR_VAR 0 12
20767: PUSH
20768: LD_VAR 0 2
20772: PUSH
20773: LD_INT 2
20775: ARRAY
20776: ST_TO_ADDR
// sib := in_depot [ 3 ] ;
20777: LD_ADDR_VAR 0 13
20781: PUSH
20782: LD_VAR 0 2
20786: PUSH
20787: LD_INT 3
20789: ARRAY
20790: ST_TO_ADDR
// InitUc ;
20791: CALL_OW 18
// InitBc ;
20795: CALL_OW 21
// uc_side := side ;
20799: LD_ADDR_OWVAR 20
20803: PUSH
20804: LD_VAR 0 3
20808: ST_TO_ADDR
// uc_nation := nat ;
20809: LD_ADDR_OWVAR 21
20813: PUSH
20814: LD_VAR 0 4
20818: ST_TO_ADDR
// b := [ ] ;
20819: LD_ADDR_VAR 0 8
20823: PUSH
20824: EMPTY
20825: ST_TO_ADDR
// for i in builds do
20826: LD_ADDR_VAR 0 6
20830: PUSH
20831: LD_VAR 0 1
20835: PUSH
20836: FOR_IN
20837: IFFALSE 21067
// begin if i = 5 then
20839: LD_VAR 0 6
20843: PUSH
20844: LD_INT 5
20846: EQUAL
20847: IFFALSE 21065
// begin tb := get_build ( i [ 2 ] , i [ 3 ] , 0 ) ;
20849: LD_ADDR_VAR 0 9
20853: PUSH
20854: LD_VAR 0 6
20858: PUSH
20859: LD_INT 2
20861: ARRAY
20862: PPUSH
20863: LD_VAR 0 6
20867: PUSH
20868: LD_INT 3
20870: ARRAY
20871: PPUSH
20872: LD_INT 0
20874: PPUSH
20875: CALL 22035 0 3
20879: ST_TO_ADDR
// if not tb then
20880: LD_VAR 0 9
20884: NOT
20885: IFFALSE 21046
// begin bc_type := i [ 1 ] ;
20887: LD_ADDR_OWVAR 42
20891: PUSH
20892: LD_VAR 0 6
20896: PUSH
20897: LD_INT 1
20899: ARRAY
20900: ST_TO_ADDR
// if bc_type = b_lab or bc_type = b_lab_half or bc_type = b_lab_full then
20901: LD_OWVAR 42
20905: PUSH
20906: LD_INT 6
20908: EQUAL
20909: PUSH
20910: LD_OWVAR 42
20914: PUSH
20915: LD_INT 7
20917: EQUAL
20918: OR
20919: PUSH
20920: LD_OWVAR 42
20924: PUSH
20925: LD_INT 8
20927: EQUAL
20928: OR
20929: IFFALSE 20967
// begin bc_kind1 := i [ 5 ] [ 1 ] ;
20931: LD_ADDR_OWVAR 44
20935: PUSH
20936: LD_VAR 0 6
20940: PUSH
20941: LD_INT 5
20943: ARRAY
20944: PUSH
20945: LD_INT 1
20947: ARRAY
20948: ST_TO_ADDR
// bc_kind2 := i [ 5 ] [ 2 ] ;
20949: LD_ADDR_OWVAR 45
20953: PUSH
20954: LD_VAR 0 6
20958: PUSH
20959: LD_INT 5
20961: ARRAY
20962: PUSH
20963: LD_INT 2
20965: ARRAY
20966: ST_TO_ADDR
// end ; tb := CreateAndPlaceBuildingXYD ( i [ 2 ] , i [ 3 ] , i [ 4 ] ) ;
20967: LD_ADDR_VAR 0 9
20971: PUSH
20972: LD_VAR 0 6
20976: PUSH
20977: LD_INT 2
20979: ARRAY
20980: PPUSH
20981: LD_VAR 0 6
20985: PUSH
20986: LD_INT 3
20988: ARRAY
20989: PPUSH
20990: LD_VAR 0 6
20994: PUSH
20995: LD_INT 4
20997: ARRAY
20998: PPUSH
20999: CALL_OW 47
21003: ST_TO_ADDR
// if bc_type = b_bunker or bc_type = b_turret then
21004: LD_OWVAR 42
21008: PUSH
21009: LD_INT 32
21011: EQUAL
21012: PUSH
21013: LD_OWVAR 42
21017: PUSH
21018: LD_INT 33
21020: EQUAL
21021: OR
21022: IFFALSE 21046
// PlaceWeaponTurret ( tb , i [ 5 ] [ 1 ] ) ;
21024: LD_VAR 0 9
21028: PPUSH
21029: LD_VAR 0 6
21033: PUSH
21034: LD_INT 5
21036: ARRAY
21037: PUSH
21038: LD_INT 1
21040: ARRAY
21041: PPUSH
21042: CALL_OW 431
// end ; b := b ^ [ tb ] ;
21046: LD_ADDR_VAR 0 8
21050: PUSH
21051: LD_VAR 0 8
21055: PUSH
21056: LD_VAR 0 9
21060: PUSH
21061: EMPTY
21062: LIST
21063: ADD
21064: ST_TO_ADDR
// end ; end ;
21065: GO 20836
21067: POP
21068: POP
// bb := UnitFilter ( b , [ mf_dep ] ) ;
21069: LD_ADDR_VAR 0 10
21073: PUSH
21074: LD_VAR 0 8
21078: PPUSH
21079: LD_EXP 58
21083: PUSH
21084: EMPTY
21085: LIST
21086: PPUSH
21087: CALL_OW 72
21091: ST_TO_ADDR
// for i in bb do
21092: LD_ADDR_VAR 0 6
21096: PUSH
21097: LD_VAR 0 10
21101: PUSH
21102: FOR_IN
21103: IFFALSE 21173
// begin base := GetBase ( i ) ;
21105: LD_ADDR_VAR 0 7
21109: PUSH
21110: LD_VAR 0 6
21114: PPUSH
21115: CALL_OW 274
21119: ST_TO_ADDR
// SetResourceType ( base , mat_cans , cans ) ;
21120: LD_VAR 0 7
21124: PPUSH
21125: LD_INT 1
21127: PPUSH
21128: LD_VAR 0 11
21132: PPUSH
21133: CALL_OW 277
// SetResourceType ( base , mat_oil , oil ) ;
21137: LD_VAR 0 7
21141: PPUSH
21142: LD_INT 2
21144: PPUSH
21145: LD_VAR 0 12
21149: PPUSH
21150: CALL_OW 277
// SetResourceType ( base , mat_siberit , sib ) ;
21154: LD_VAR 0 7
21158: PPUSH
21159: LD_INT 3
21161: PPUSH
21162: LD_VAR 0 13
21166: PPUSH
21167: CALL_OW 277
// end ;
21171: GO 21102
21173: POP
21174: POP
// result := b ;
21175: LD_ADDR_VAR 0 5
21179: PUSH
21180: LD_VAR 0 8
21184: ST_TO_ADDR
// end ;
21185: LD_VAR 0 5
21189: RET
// function place_aici ( aici , area , side , nat ) ; var i , j , a ; begin
21190: LD_INT 0
21192: PPUSH
21193: PPUSH
21194: PPUSH
21195: PPUSH
// InitUc ;
21196: CALL_OW 18
// InitHc ;
21200: CALL_OW 19
// uc_side := side ;
21204: LD_ADDR_OWVAR 20
21208: PUSH
21209: LD_VAR 0 3
21213: ST_TO_ADDR
// uc_nation := nat ;
21214: LD_ADDR_OWVAR 21
21218: PUSH
21219: LD_VAR 0 4
21223: ST_TO_ADDR
// a := [ ] ;
21224: LD_ADDR_VAR 0 8
21228: PUSH
21229: EMPTY
21230: ST_TO_ADDR
// for i in aici do
21231: LD_ADDR_VAR 0 6
21235: PUSH
21236: LD_VAR 0 1
21240: PUSH
21241: FOR_IN
21242: IFFALSE 21316
// begin for j := 1 to i [ 1 ] do
21244: LD_ADDR_VAR 0 7
21248: PUSH
21249: DOUBLE
21250: LD_INT 1
21252: DEC
21253: ST_TO_ADDR
21254: LD_VAR 0 6
21258: PUSH
21259: LD_INT 1
21261: ARRAY
21262: PUSH
21263: FOR_TO
21264: IFFALSE 21312
// begin PrepareHuman ( 0 , i [ 2 ] , i [ 3 ] ) ;
21266: LD_INT 0
21268: PPUSH
21269: LD_VAR 0 6
21273: PUSH
21274: LD_INT 2
21276: ARRAY
21277: PPUSH
21278: LD_VAR 0 6
21282: PUSH
21283: LD_INT 3
21285: ARRAY
21286: PPUSH
21287: CALL_OW 380
// a := a ^ [ CreateHuman ] ;
21291: LD_ADDR_VAR 0 8
21295: PUSH
21296: LD_VAR 0 8
21300: PUSH
21301: CALL_OW 44
21305: PUSH
21306: EMPTY
21307: LIST
21308: ADD
21309: ST_TO_ADDR
// end ;
21310: GO 21263
21312: POP
21313: POP
// end ;
21314: GO 21241
21316: POP
21317: POP
// for i in a do
21318: LD_ADDR_VAR 0 6
21322: PUSH
21323: LD_VAR 0 8
21327: PUSH
21328: FOR_IN
21329: IFFALSE 21350
// PlaceUnitArea ( i , area , false ) ;
21331: LD_VAR 0 6
21335: PPUSH
21336: LD_VAR 0 2
21340: PPUSH
21341: LD_INT 0
21343: PPUSH
21344: CALL_OW 49
21348: GO 21328
21350: POP
21351: POP
// result := a ;
21352: LD_ADDR_VAR 0 5
21356: PUSH
21357: LD_VAR 0 8
21361: ST_TO_ADDR
// end ;
21362: LD_VAR 0 5
21366: RET
// every 0 0$10 + 0 0$0.0 do var i , j , weap , k ;
21367: GO 21369
21369: DISABLE
21370: LD_INT 0
21372: PPUSH
21373: PPUSH
21374: PPUSH
21375: PPUSH
// begin for i in UnitFilter ( fort , [ mf_bunk ] ) do
21376: LD_ADDR_VAR 0 1
21380: PUSH
21381: LD_EXP 81
21385: PPUSH
21386: LD_EXP 57
21390: PUSH
21391: EMPTY
21392: LIST
21393: PPUSH
21394: CALL_OW 72
21398: PUSH
21399: FOR_IN
21400: IFFALSE 21570
// if not GetBWeapon ( i ) then
21402: LD_VAR 0 1
21406: PPUSH
21407: CALL_OW 269
21411: NOT
21412: IFFALSE 21568
// begin weap := 0 ;
21414: LD_ADDR_VAR 0 3
21418: PUSH
21419: LD_INT 0
21421: ST_TO_ADDR
// for k := 1 to 5 do
21422: LD_ADDR_VAR 0 4
21426: PUSH
21427: DOUBLE
21428: LD_INT 1
21430: DEC
21431: ST_TO_ADDR
21432: LD_INT 5
21434: PUSH
21435: FOR_TO
21436: IFFALSE 21546
// for j in builds [ k ] do
21438: LD_ADDR_VAR 0 2
21442: PUSH
21443: LD_LOC 23
21447: PUSH
21448: LD_VAR 0 4
21452: ARRAY
21453: PUSH
21454: FOR_IN
21455: IFFALSE 21542
// if GetX ( i ) = j [ 2 ] and GetY ( i ) = j [ 3 ] and GetBType ( i ) = j [ 1 ] then
21457: LD_VAR 0 1
21461: PPUSH
21462: CALL_OW 250
21466: PUSH
21467: LD_VAR 0 2
21471: PUSH
21472: LD_INT 2
21474: ARRAY
21475: EQUAL
21476: PUSH
21477: LD_VAR 0 1
21481: PPUSH
21482: CALL_OW 251
21486: PUSH
21487: LD_VAR 0 2
21491: PUSH
21492: LD_INT 3
21494: ARRAY
21495: EQUAL
21496: AND
21497: PUSH
21498: LD_VAR 0 1
21502: PPUSH
21503: CALL_OW 266
21507: PUSH
21508: LD_VAR 0 2
21512: PUSH
21513: LD_INT 1
21515: ARRAY
21516: EQUAL
21517: AND
21518: IFFALSE 21540
// begin weap := j [ 5 ] [ 1 ] ;
21520: LD_ADDR_VAR 0 3
21524: PUSH
21525: LD_VAR 0 2
21529: PUSH
21530: LD_INT 5
21532: ARRAY
21533: PUSH
21534: LD_INT 1
21536: ARRAY
21537: ST_TO_ADDR
// break ;
21538: GO 21542
// end ;
21540: GO 21454
21542: POP
21543: POP
21544: GO 21435
21546: POP
21547: POP
// if weap then
21548: LD_VAR 0 3
21552: IFFALSE 21568
// ComPlaceWeapon ( j , weap ) ;
21554: LD_VAR 0 2
21558: PPUSH
21559: LD_VAR 0 3
21563: PPUSH
21564: CALL_OW 148
// end ;
21568: GO 21399
21570: POP
21571: POP
// enable ;
21572: ENABLE
// end ;
21573: PPOPN 4
21575: END
// every 0 0$10 + 0 0$2.0 do var i , to_up , to_b , co_tam_stoji , k , je_cas_stavet ;
21576: GO 21578
21578: DISABLE
21579: LD_INT 0
21581: PPUSH
21582: PPUSH
21583: PPUSH
21584: PPUSH
21585: PPUSH
21586: PPUSH
// begin for k := 1 to 5 do
21587: LD_ADDR_VAR 0 5
21591: PUSH
21592: DOUBLE
21593: LD_INT 1
21595: DEC
21596: ST_TO_ADDR
21597: LD_INT 5
21599: PUSH
21600: FOR_TO
21601: IFFALSE 22029
// begin if not under_attack [ k ] then
21603: LD_EXP 62
21607: PUSH
21608: LD_VAR 0 5
21612: ARRAY
21613: NOT
21614: IFFALSE 22027
// begin to_b := [ ] ;
21616: LD_ADDR_VAR 0 3
21620: PUSH
21621: EMPTY
21622: ST_TO_ADDR
// to_up := [ ] ;
21623: LD_ADDR_VAR 0 2
21627: PUSH
21628: EMPTY
21629: ST_TO_ADDR
// je_cas_stavet := false ;
21630: LD_ADDR_VAR 0 6
21634: PUSH
21635: LD_INT 0
21637: ST_TO_ADDR
// for i in builds [ k ] do
21638: LD_ADDR_VAR 0 1
21642: PUSH
21643: LD_LOC 23
21647: PUSH
21648: LD_VAR 0 5
21652: ARRAY
21653: PUSH
21654: FOR_IN
21655: IFFALSE 21856
// begin je_cas_stavet := true ;
21657: LD_ADDR_VAR 0 6
21661: PUSH
21662: LD_INT 1
21664: ST_TO_ADDR
// if i = 6 then
21665: LD_VAR 0 1
21669: PUSH
21670: LD_INT 6
21672: EQUAL
21673: IFFALSE 21699
// if i [ 6 ] < tick then
21675: LD_VAR 0 1
21679: PUSH
21680: LD_INT 6
21682: ARRAY
21683: PUSH
21684: LD_OWVAR 1
21688: LESS
21689: IFFALSE 21699
// je_cas_stavet := false ;
21691: LD_ADDR_VAR 0 6
21695: PUSH
21696: LD_INT 0
21698: ST_TO_ADDR
// if je_cas_stavet then
21699: LD_VAR 0 6
21703: IFFALSE 21854
// begin co_tam_stoji := GetBType ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
21705: LD_ADDR_VAR 0 4
21709: PUSH
21710: LD_VAR 0 1
21714: PUSH
21715: LD_INT 2
21717: ARRAY
21718: PPUSH
21719: LD_VAR 0 1
21723: PUSH
21724: LD_INT 3
21726: ARRAY
21727: PPUSH
21728: LD_INT 0
21730: PPUSH
21731: CALL 22035 0 3
21735: PPUSH
21736: CALL_OW 266
21740: ST_TO_ADDR
// if co_tam_stoji = - 1 then
21741: LD_VAR 0 4
21745: PUSH
21746: LD_INT 1
21748: NEG
21749: EQUAL
21750: IFFALSE 21816
// begin to_b := [ BasicFrom ( i [ 1 ] ) , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] ] ;
21752: LD_ADDR_VAR 0 3
21756: PUSH
21757: LD_VAR 0 1
21761: PUSH
21762: LD_INT 1
21764: ARRAY
21765: PPUSH
21766: CALL 20233 0 1
21770: PUSH
21771: LD_VAR 0 1
21775: PUSH
21776: LD_INT 2
21778: ARRAY
21779: PUSH
21780: LD_VAR 0 1
21784: PUSH
21785: LD_INT 3
21787: ARRAY
21788: PUSH
21789: LD_VAR 0 1
21793: PUSH
21794: LD_INT 4
21796: ARRAY
21797: PUSH
21798: LD_VAR 0 1
21802: PUSH
21803: LD_INT 5
21805: ARRAY
21806: PUSH
21807: EMPTY
21808: LIST
21809: LIST
21810: LIST
21811: LIST
21812: LIST
21813: ST_TO_ADDR
// end else
21814: GO 21846
// if UpgradeableTo ( co_tam_stoji , i [ 1 ] ) then
21816: LD_VAR 0 4
21820: PPUSH
21821: LD_VAR 0 1
21825: PUSH
21826: LD_INT 1
21828: ARRAY
21829: PPUSH
21830: CALL 19969 0 2
21834: IFFALSE 21846
// begin to_up := i ;
21836: LD_ADDR_VAR 0 2
21840: PUSH
21841: LD_VAR 0 1
21845: ST_TO_ADDR
// end ; if to_b then
21846: LD_VAR 0 3
21850: IFFALSE 21854
// break ;
21852: GO 21856
// end ; end ;
21854: GO 21654
21856: POP
21857: POP
// if to_b then
21858: LD_VAR 0 3
21862: IFFALSE 21984
// ComBuild ( NearestUnitToXY ( UnitFilter ( eng isect humans [ k ] , [ [ f_distxy , to_b [ 2 ] , to_b [ 3 ] , 40 ] ] ) , to_b [ 2 ] , to_b [ 3 ] ) , to_b [ 1 ] , to_b [ 2 ] , to_b [ 3 ] , to_b [ 4 ] ) else
21864: LD_EXP 84
21868: PUSH
21869: LD_EXP 76
21873: PUSH
21874: LD_VAR 0 5
21878: ARRAY
21879: ISECT
21880: PPUSH
21881: LD_INT 92
21883: PUSH
21884: LD_VAR 0 3
21888: PUSH
21889: LD_INT 2
21891: ARRAY
21892: PUSH
21893: LD_VAR 0 3
21897: PUSH
21898: LD_INT 3
21900: ARRAY
21901: PUSH
21902: LD_INT 40
21904: PUSH
21905: EMPTY
21906: LIST
21907: LIST
21908: LIST
21909: LIST
21910: PUSH
21911: EMPTY
21912: LIST
21913: PPUSH
21914: CALL_OW 72
21918: PPUSH
21919: LD_VAR 0 3
21923: PUSH
21924: LD_INT 2
21926: ARRAY
21927: PPUSH
21928: LD_VAR 0 3
21932: PUSH
21933: LD_INT 3
21935: ARRAY
21936: PPUSH
21937: CALL_OW 73
21941: PPUSH
21942: LD_VAR 0 3
21946: PUSH
21947: LD_INT 1
21949: ARRAY
21950: PPUSH
21951: LD_VAR 0 3
21955: PUSH
21956: LD_INT 2
21958: ARRAY
21959: PPUSH
21960: LD_VAR 0 3
21964: PUSH
21965: LD_INT 3
21967: ARRAY
21968: PPUSH
21969: LD_VAR 0 3
21973: PUSH
21974: LD_INT 4
21976: ARRAY
21977: PPUSH
21978: CALL_OW 145
21982: GO 22020
// if to_up then
21984: LD_VAR 0 2
21988: IFFALSE 22020
// ComUpgrade ( get_build ( i [ 2 ] , i [ 3 ] , 0 ) ) ;
21990: LD_VAR 0 1
21994: PUSH
21995: LD_INT 2
21997: ARRAY
21998: PPUSH
21999: LD_VAR 0 1
22003: PUSH
22004: LD_INT 3
22006: ARRAY
22007: PPUSH
22008: LD_INT 0
22010: PPUSH
22011: CALL 22035 0 3
22015: PPUSH
22016: CALL_OW 146
// wait ( 0 0$1.1 ) ;
22020: LD_INT 38
22022: PPUSH
22023: CALL_OW 67
// end ; end ;
22027: GO 21600
22029: POP
22030: POP
// enable ;
22031: ENABLE
// end ;
22032: PPOPN 6
22034: END
// function get_build ( x , y , btype ) ; begin
22035: LD_INT 0
22037: PPUSH
// result := HexInfo ( x , y ) ;
22038: LD_ADDR_VAR 0 4
22042: PUSH
22043: LD_VAR 0 1
22047: PPUSH
22048: LD_VAR 0 2
22052: PPUSH
22053: CALL_OW 428
22057: ST_TO_ADDR
// if result < 1 then
22058: LD_VAR 0 4
22062: PUSH
22063: LD_INT 1
22065: LESS
22066: IFFALSE 22076
// result := 0 ;
22068: LD_ADDR_VAR 0 4
22072: PUSH
22073: LD_INT 0
22075: ST_TO_ADDR
// if btype then
22076: LD_VAR 0 3
22080: IFFALSE 22132
// if btype <> GetBType ( result ) then
22082: LD_VAR 0 3
22086: PUSH
22087: LD_VAR 0 4
22091: PPUSH
22092: CALL_OW 266
22096: NONEQUAL
22097: IFFALSE 22109
// result := 0 else
22099: LD_ADDR_VAR 0 4
22103: PUSH
22104: LD_INT 0
22106: ST_TO_ADDR
22107: GO 22132
// if unit_building <> GetType ( result ) then
22109: LD_INT 3
22111: PUSH
22112: LD_VAR 0 4
22116: PPUSH
22117: CALL_OW 247
22121: NONEQUAL
22122: IFFALSE 22132
// result := 0 ;
22124: LD_ADDR_VAR 0 4
22128: PUSH
22129: LD_INT 0
22131: ST_TO_ADDR
// end ; end_of_file
22132: LD_VAR 0 4
22136: RET
// var opravit ; export function inicializace_ai_b_repair ; begin
22137: LD_INT 0
22139: PPUSH
// opravit := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
22140: LD_ADDR_LOC 29
22144: PUSH
22145: EMPTY
22146: PUSH
22147: EMPTY
22148: PUSH
22149: EMPTY
22150: PUSH
22151: EMPTY
22152: PUSH
22153: EMPTY
22154: PUSH
22155: EMPTY
22156: LIST
22157: LIST
22158: LIST
22159: LIST
22160: LIST
22161: ST_TO_ADDR
// end ;
22162: LD_VAR 0 1
22166: RET
// function HledejBudovyNaOpravy ( opravit_index , budovy ) ; var zivoty , i , opravit_tmp ; begin
22167: LD_INT 0
22169: PPUSH
22170: PPUSH
22171: PPUSH
22172: PPUSH
// opravit_tmp := [ ] ;
22173: LD_ADDR_VAR 0 6
22177: PUSH
22178: EMPTY
22179: ST_TO_ADDR
// zivoty := [ ] ;
22180: LD_ADDR_VAR 0 4
22184: PUSH
22185: EMPTY
22186: ST_TO_ADDR
// for i in budovy do
22187: LD_ADDR_VAR 0 5
22191: PUSH
22192: LD_VAR 0 2
22196: PUSH
22197: FOR_IN
22198: IFFALSE 22260
// begin if GetLives ( i ) < 1000 then
22200: LD_VAR 0 5
22204: PPUSH
22205: CALL_OW 256
22209: PUSH
22210: LD_INT 1000
22212: LESS
22213: IFFALSE 22258
// begin opravit_tmp := opravit_tmp ^ [ i ] ;
22215: LD_ADDR_VAR 0 6
22219: PUSH
22220: LD_VAR 0 6
22224: PUSH
22225: LD_VAR 0 5
22229: PUSH
22230: EMPTY
22231: LIST
22232: ADD
22233: ST_TO_ADDR
// zivoty := zivoty ^ [ GetLives ( i ) ] ;
22234: LD_ADDR_VAR 0 4
22238: PUSH
22239: LD_VAR 0 4
22243: PUSH
22244: LD_VAR 0 5
22248: PPUSH
22249: CALL_OW 256
22253: PUSH
22254: EMPTY
22255: LIST
22256: ADD
22257: ST_TO_ADDR
// end ; end ;
22258: GO 22197
22260: POP
22261: POP
// if opravit_tmp then
22262: LD_VAR 0 6
22266: IFFALSE 22288
// opravit_tmp := SortListByListAsc ( opravit_tmp , zivoty ) ;
22268: LD_ADDR_VAR 0 6
22272: PUSH
22273: LD_VAR 0 6
22277: PPUSH
22278: LD_VAR 0 4
22282: PPUSH
22283: CALL_OW 76
22287: ST_TO_ADDR
// opravit := Replace ( opravit , opravit_index , opravit_tmp ) ;
22288: LD_ADDR_LOC 29
22292: PUSH
22293: LD_LOC 29
22297: PPUSH
22298: LD_VAR 0 1
22302: PPUSH
22303: LD_VAR 0 6
22307: PPUSH
22308: CALL_OW 1
22312: ST_TO_ADDR
// end ;
22313: LD_VAR 0 3
22317: RET
// every 0 0$5 do var i ;
22318: GO 22320
22320: DISABLE
22321: LD_INT 0
22323: PPUSH
// begin for i := 1 to 5 do
22324: LD_ADDR_VAR 0 1
22328: PUSH
22329: DOUBLE
22330: LD_INT 1
22332: DEC
22333: ST_TO_ADDR
22334: LD_INT 5
22336: PUSH
22337: FOR_TO
22338: IFFALSE 22382
// begin if not under_attack [ i ] then
22340: LD_EXP 62
22344: PUSH
22345: LD_VAR 0 1
22349: ARRAY
22350: NOT
22351: IFFALSE 22380
// begin HledejBudovyNaOpravy ( i , buildings [ i ] ) ;
22353: LD_VAR 0 1
22357: PPUSH
22358: LD_EXP 75
22362: PUSH
22363: LD_VAR 0 1
22367: ARRAY
22368: PPUSH
22369: CALL 22167 0 2
// wait ( 0 0$0.6 ) ;
22373: LD_INT 21
22375: PPUSH
22376: CALL_OW 67
// end ; end ;
22380: GO 22337
22382: POP
22383: POP
// enable ;
22384: ENABLE
// end ;
22385: PPOPN 1
22387: END
// every 0 0$5 do var i ;
22388: GO 22390
22390: DISABLE
22391: LD_INT 0
22393: PPUSH
// begin for i := 1 to 5 do
22394: LD_ADDR_VAR 0 1
22398: PUSH
22399: DOUBLE
22400: LD_INT 1
22402: DEC
22403: ST_TO_ADDR
22404: LD_INT 5
22406: PUSH
22407: FOR_TO
22408: IFFALSE 22557
// begin if opravit [ i ] then
22410: LD_LOC 29
22414: PUSH
22415: LD_VAR 0 1
22419: ARRAY
22420: IFFALSE 22555
// begin ComRepairBuilding ( UnitFilter ( eng , [ [ f_not , [ f_hastask ] ] , [ f_side , GetSide ( opravit [ i ] [ 1 ] ) ] , [ f_dist , opravit [ i ] [ 1 ] , ( ( ( 1000 div 30 ) + 5 ) - GetLives ( opravit [ i ] [ 1 ] ) div 30 ) ] ] ) , opravit [ i ] [ 1 ] ) ;
22422: LD_EXP 84
22426: PPUSH
22427: LD_INT 3
22429: PUSH
22430: LD_INT 60
22432: PUSH
22433: EMPTY
22434: LIST
22435: PUSH
22436: EMPTY
22437: LIST
22438: LIST
22439: PUSH
22440: LD_INT 22
22442: PUSH
22443: LD_LOC 29
22447: PUSH
22448: LD_VAR 0 1
22452: ARRAY
22453: PUSH
22454: LD_INT 1
22456: ARRAY
22457: PPUSH
22458: CALL_OW 255
22462: PUSH
22463: EMPTY
22464: LIST
22465: LIST
22466: PUSH
22467: LD_INT 91
22469: PUSH
22470: LD_LOC 29
22474: PUSH
22475: LD_VAR 0 1
22479: ARRAY
22480: PUSH
22481: LD_INT 1
22483: ARRAY
22484: PUSH
22485: LD_INT 1000
22487: PUSH
22488: LD_INT 30
22490: DIV
22491: PUSH
22492: LD_INT 5
22494: PLUS
22495: PUSH
22496: LD_LOC 29
22500: PUSH
22501: LD_VAR 0 1
22505: ARRAY
22506: PUSH
22507: LD_INT 1
22509: ARRAY
22510: PPUSH
22511: CALL_OW 256
22515: PUSH
22516: LD_INT 30
22518: DIV
22519: MINUS
22520: PUSH
22521: EMPTY
22522: LIST
22523: LIST
22524: LIST
22525: PUSH
22526: EMPTY
22527: LIST
22528: LIST
22529: LIST
22530: PPUSH
22531: CALL_OW 72
22535: PPUSH
22536: LD_LOC 29
22540: PUSH
22541: LD_VAR 0 1
22545: ARRAY
22546: PUSH
22547: LD_INT 1
22549: ARRAY
22550: PPUSH
22551: CALL_OW 130
// end ; end ;
22555: GO 22407
22557: POP
22558: POP
// enable ;
22559: ENABLE
// end ; end_of_file
22560: PPOPN 1
22562: END
// export factories ; export depots ; export buildings ; export humans ; export vehicles ; export attack_units ; export defence_units ; export mcdef_units ; export fort , sol , dep , eng , fact , mec , lab , sci ; export function inicializace_ai ; begin
22563: LD_INT 0
22565: PPUSH
// factories := [ 0 , 0 , 0 , 0 , 0 ] ;
22566: LD_ADDR_EXP 73
22570: PUSH
22571: LD_INT 0
22573: PUSH
22574: LD_INT 0
22576: PUSH
22577: LD_INT 0
22579: PUSH
22580: LD_INT 0
22582: PUSH
22583: LD_INT 0
22585: PUSH
22586: EMPTY
22587: LIST
22588: LIST
22589: LIST
22590: LIST
22591: LIST
22592: ST_TO_ADDR
// depots := [ 0 , 0 , 0 , 0 , 0 ] ;
22593: LD_ADDR_EXP 74
22597: PUSH
22598: LD_INT 0
22600: PUSH
22601: LD_INT 0
22603: PUSH
22604: LD_INT 0
22606: PUSH
22607: LD_INT 0
22609: PUSH
22610: LD_INT 0
22612: PUSH
22613: EMPTY
22614: LIST
22615: LIST
22616: LIST
22617: LIST
22618: LIST
22619: ST_TO_ADDR
// buildings := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
22620: LD_ADDR_EXP 75
22624: PUSH
22625: EMPTY
22626: PUSH
22627: EMPTY
22628: PUSH
22629: EMPTY
22630: PUSH
22631: EMPTY
22632: PUSH
22633: EMPTY
22634: PUSH
22635: EMPTY
22636: LIST
22637: LIST
22638: LIST
22639: LIST
22640: LIST
22641: ST_TO_ADDR
// humans := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
22642: LD_ADDR_EXP 76
22646: PUSH
22647: EMPTY
22648: PUSH
22649: EMPTY
22650: PUSH
22651: EMPTY
22652: PUSH
22653: EMPTY
22654: PUSH
22655: EMPTY
22656: PUSH
22657: EMPTY
22658: LIST
22659: LIST
22660: LIST
22661: LIST
22662: LIST
22663: ST_TO_ADDR
// vehicles := [ [ ] , [ ] , [ ] , [ ] , [ ] ] ;
22664: LD_ADDR_EXP 77
22668: PUSH
22669: EMPTY
22670: PUSH
22671: EMPTY
22672: PUSH
22673: EMPTY
22674: PUSH
22675: EMPTY
22676: PUSH
22677: EMPTY
22678: PUSH
22679: EMPTY
22680: LIST
22681: LIST
22682: LIST
22683: LIST
22684: LIST
22685: ST_TO_ADDR
// attack_units := [ ] ;
22686: LD_ADDR_EXP 78
22690: PUSH
22691: EMPTY
22692: ST_TO_ADDR
// defence_units := [ ] ;
22693: LD_ADDR_EXP 79
22697: PUSH
22698: EMPTY
22699: ST_TO_ADDR
// end ;
22700: LD_VAR 0 1
22704: RET
// export function get_groups ; var i ; begin
22705: LD_INT 0
22707: PPUSH
22708: PPUSH
// fort := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_fort ] ) ;
22709: LD_ADDR_EXP 81
22713: PUSH
22714: LD_INT 3
22716: PUSH
22717: LD_INT 22
22719: PUSH
22720: LD_EXP 7
22724: PUSH
22725: EMPTY
22726: LIST
22727: LIST
22728: PUSH
22729: EMPTY
22730: LIST
22731: LIST
22732: PUSH
22733: LD_EXP 56
22737: PUSH
22738: EMPTY
22739: LIST
22740: LIST
22741: PPUSH
22742: CALL_OW 69
22746: ST_TO_ADDR
// sol := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_sol ] ) diff hlavouni ;
22747: LD_ADDR_EXP 82
22751: PUSH
22752: LD_INT 3
22754: PUSH
22755: LD_INT 22
22757: PUSH
22758: LD_EXP 7
22762: PUSH
22763: EMPTY
22764: LIST
22765: LIST
22766: PUSH
22767: EMPTY
22768: LIST
22769: LIST
22770: PUSH
22771: LD_EXP 51
22775: PUSH
22776: EMPTY
22777: LIST
22778: LIST
22779: PPUSH
22780: CALL_OW 69
22784: PUSH
22785: LD_EXP 72
22789: DIFF
22790: ST_TO_ADDR
// dep := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_dep ] ) ;
22791: LD_ADDR_EXP 83
22795: PUSH
22796: LD_INT 3
22798: PUSH
22799: LD_INT 22
22801: PUSH
22802: LD_EXP 7
22806: PUSH
22807: EMPTY
22808: LIST
22809: LIST
22810: PUSH
22811: EMPTY
22812: LIST
22813: LIST
22814: PUSH
22815: LD_EXP 58
22819: PUSH
22820: EMPTY
22821: LIST
22822: LIST
22823: PPUSH
22824: CALL_OW 69
22828: ST_TO_ADDR
// eng := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_eng ] ) diff hlavouni ;
22829: LD_ADDR_EXP 84
22833: PUSH
22834: LD_INT 3
22836: PUSH
22837: LD_INT 22
22839: PUSH
22840: LD_EXP 7
22844: PUSH
22845: EMPTY
22846: LIST
22847: LIST
22848: PUSH
22849: EMPTY
22850: LIST
22851: LIST
22852: PUSH
22853: LD_EXP 52
22857: PUSH
22858: EMPTY
22859: LIST
22860: LIST
22861: PPUSH
22862: CALL_OW 69
22866: PUSH
22867: LD_EXP 72
22871: DIFF
22872: ST_TO_ADDR
// fact := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_fact ] ) ;
22873: LD_ADDR_EXP 85
22877: PUSH
22878: LD_INT 3
22880: PUSH
22881: LD_INT 22
22883: PUSH
22884: LD_EXP 7
22888: PUSH
22889: EMPTY
22890: LIST
22891: LIST
22892: PUSH
22893: EMPTY
22894: LIST
22895: LIST
22896: PUSH
22897: LD_EXP 59
22901: PUSH
22902: EMPTY
22903: LIST
22904: LIST
22905: PPUSH
22906: CALL_OW 69
22910: ST_TO_ADDR
// mec := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_mec ] ) diff hlavouni ;
22911: LD_ADDR_EXP 86
22915: PUSH
22916: LD_INT 3
22918: PUSH
22919: LD_INT 22
22921: PUSH
22922: LD_EXP 7
22926: PUSH
22927: EMPTY
22928: LIST
22929: LIST
22930: PUSH
22931: EMPTY
22932: LIST
22933: LIST
22934: PUSH
22935: LD_EXP 53
22939: PUSH
22940: EMPTY
22941: LIST
22942: LIST
22943: PPUSH
22944: CALL_OW 69
22948: PUSH
22949: LD_EXP 72
22953: DIFF
22954: ST_TO_ADDR
// lab := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_lab ] ) ;
22955: LD_ADDR_EXP 87
22959: PUSH
22960: LD_INT 3
22962: PUSH
22963: LD_INT 22
22965: PUSH
22966: LD_EXP 7
22970: PUSH
22971: EMPTY
22972: LIST
22973: LIST
22974: PUSH
22975: EMPTY
22976: LIST
22977: LIST
22978: PUSH
22979: LD_EXP 55
22983: PUSH
22984: EMPTY
22985: LIST
22986: LIST
22987: PPUSH
22988: CALL_OW 69
22992: ST_TO_ADDR
// sci := FilterAllUnits ( [ [ f_not , [ f_side , you ] ] , mf_sci ] ) diff hlavouni ;
22993: LD_ADDR_EXP 88
22997: PUSH
22998: LD_INT 3
23000: PUSH
23001: LD_INT 22
23003: PUSH
23004: LD_EXP 7
23008: PUSH
23009: EMPTY
23010: LIST
23011: LIST
23012: PUSH
23013: EMPTY
23014: LIST
23015: LIST
23016: PUSH
23017: LD_EXP 54
23021: PUSH
23022: EMPTY
23023: LIST
23024: LIST
23025: PPUSH
23026: CALL_OW 69
23030: PUSH
23031: LD_EXP 72
23035: DIFF
23036: ST_TO_ADDR
// for i := 1 to 5 do
23037: LD_ADDR_VAR 0 2
23041: PUSH
23042: DOUBLE
23043: LD_INT 1
23045: DEC
23046: ST_TO_ADDR
23047: LD_INT 5
23049: PUSH
23050: FOR_TO
23051: IFFALSE 23236
// begin humans := replace ( humans , i , FilterAllUnits ( [ [ f_side , ai_s [ i ] ] , [ f_type , unit_human ] ] ) diff hlavouni ) ;
23053: LD_ADDR_EXP 76
23057: PUSH
23058: LD_EXP 76
23062: PPUSH
23063: LD_VAR 0 2
23067: PPUSH
23068: LD_INT 22
23070: PUSH
23071: LD_EXP 23
23075: PUSH
23076: LD_VAR 0 2
23080: ARRAY
23081: PUSH
23082: EMPTY
23083: LIST
23084: LIST
23085: PUSH
23086: LD_INT 21
23088: PUSH
23089: LD_INT 1
23091: PUSH
23092: EMPTY
23093: LIST
23094: LIST
23095: PUSH
23096: EMPTY
23097: LIST
23098: LIST
23099: PPUSH
23100: CALL_OW 69
23104: PUSH
23105: LD_EXP 72
23109: DIFF
23110: PPUSH
23111: CALL_OW 1
23115: ST_TO_ADDR
// vehicles := replace ( vehicles , i , FilterAllUnits ( [ [ f_side , ai_s [ i ] ] , [ f_type , unit_vehicle ] ] ) diff art_cargo ) ;
23116: LD_ADDR_EXP 77
23120: PUSH
23121: LD_EXP 77
23125: PPUSH
23126: LD_VAR 0 2
23130: PPUSH
23131: LD_INT 22
23133: PUSH
23134: LD_EXP 23
23138: PUSH
23139: LD_VAR 0 2
23143: ARRAY
23144: PUSH
23145: EMPTY
23146: LIST
23147: LIST
23148: PUSH
23149: LD_INT 21
23151: PUSH
23152: LD_INT 2
23154: PUSH
23155: EMPTY
23156: LIST
23157: LIST
23158: PUSH
23159: EMPTY
23160: LIST
23161: LIST
23162: PPUSH
23163: CALL_OW 69
23167: PUSH
23168: LD_INT 121
23170: DIFF
23171: PPUSH
23172: CALL_OW 1
23176: ST_TO_ADDR
// buildings := replace ( buildings , i , FilterAllUnits ( [ [ f_side , ai_s [ i ] ] , [ f_type , unit_building ] ] ) ) ;
23177: LD_ADDR_EXP 75
23181: PUSH
23182: LD_EXP 75
23186: PPUSH
23187: LD_VAR 0 2
23191: PPUSH
23192: LD_INT 22
23194: PUSH
23195: LD_EXP 23
23199: PUSH
23200: LD_VAR 0 2
23204: ARRAY
23205: PUSH
23206: EMPTY
23207: LIST
23208: LIST
23209: PUSH
23210: LD_INT 21
23212: PUSH
23213: LD_INT 3
23215: PUSH
23216: EMPTY
23217: LIST
23218: LIST
23219: PUSH
23220: EMPTY
23221: LIST
23222: LIST
23223: PPUSH
23224: CALL_OW 69
23228: PPUSH
23229: CALL_OW 1
23233: ST_TO_ADDR
// end ;
23234: GO 23050
23236: POP
23237: POP
// attack_units := FilterAllUnits ( [ [ f_control , control_computer ] ] ) ;
23238: LD_ADDR_EXP 78
23242: PUSH
23243: LD_INT 33
23245: PUSH
23246: LD_INT 3
23248: PUSH
23249: EMPTY
23250: LIST
23251: LIST
23252: PUSH
23253: EMPTY
23254: LIST
23255: PPUSH
23256: CALL_OW 69
23260: ST_TO_ADDR
// defence_units := FilterAllUnits ( [ [ f_control , control_manual ] ] ) diff art_cargo ;
23261: LD_ADDR_EXP 79
23265: PUSH
23266: LD_INT 33
23268: PUSH
23269: LD_INT 1
23271: PUSH
23272: EMPTY
23273: LIST
23274: LIST
23275: PUSH
23276: EMPTY
23277: LIST
23278: PPUSH
23279: CALL_OW 69
23283: PUSH
23284: LD_INT 121
23286: DIFF
23287: ST_TO_ADDR
// write_deps ;
23288: CALL 23301 0 0
// write_facts ;
23292: CALL 23420 0 0
// end ;
23296: LD_VAR 0 1
23300: RET
// export function write_deps ; var i , a ; begin
23301: LD_INT 0
23303: PPUSH
23304: PPUSH
23305: PPUSH
// for i := 1 to 5 do
23306: LD_ADDR_VAR 0 2
23310: PUSH
23311: DOUBLE
23312: LD_INT 1
23314: DEC
23315: ST_TO_ADDR
23316: LD_INT 5
23318: PUSH
23319: FOR_TO
23320: IFFALSE 23413
// begin a := UnitFilter ( buildings [ i ] , [ mf_dep ] ) ;
23322: LD_ADDR_VAR 0 3
23326: PUSH
23327: LD_EXP 75
23331: PUSH
23332: LD_VAR 0 2
23336: ARRAY
23337: PPUSH
23338: LD_EXP 58
23342: PUSH
23343: EMPTY
23344: LIST
23345: PPUSH
23346: CALL_OW 72
23350: ST_TO_ADDR
// if a then
23351: LD_VAR 0 3
23355: IFFALSE 23388
// depots := replace ( depots , i , a [ 1 ] ) else
23357: LD_ADDR_EXP 74
23361: PUSH
23362: LD_EXP 74
23366: PPUSH
23367: LD_VAR 0 2
23371: PPUSH
23372: LD_VAR 0 3
23376: PUSH
23377: LD_INT 1
23379: ARRAY
23380: PPUSH
23381: CALL_OW 1
23385: ST_TO_ADDR
23386: GO 23411
// depots := replace ( depots , i , 0 ) ;
23388: LD_ADDR_EXP 74
23392: PUSH
23393: LD_EXP 74
23397: PPUSH
23398: LD_VAR 0 2
23402: PPUSH
23403: LD_INT 0
23405: PPUSH
23406: CALL_OW 1
23410: ST_TO_ADDR
// end ;
23411: GO 23319
23413: POP
23414: POP
// end ;
23415: LD_VAR 0 1
23419: RET
// export function write_facts ; var i , a ; begin
23420: LD_INT 0
23422: PPUSH
23423: PPUSH
23424: PPUSH
// for i := 1 to 5 do
23425: LD_ADDR_VAR 0 2
23429: PUSH
23430: DOUBLE
23431: LD_INT 1
23433: DEC
23434: ST_TO_ADDR
23435: LD_INT 5
23437: PUSH
23438: FOR_TO
23439: IFFALSE 23532
// begin a := UnitFilter ( buildings [ i ] , [ mf_fact ] ) ;
23441: LD_ADDR_VAR 0 3
23445: PUSH
23446: LD_EXP 75
23450: PUSH
23451: LD_VAR 0 2
23455: ARRAY
23456: PPUSH
23457: LD_EXP 59
23461: PUSH
23462: EMPTY
23463: LIST
23464: PPUSH
23465: CALL_OW 72
23469: ST_TO_ADDR
// if a then
23470: LD_VAR 0 3
23474: IFFALSE 23507
// factories := replace ( factories , i , a [ 1 ] ) else
23476: LD_ADDR_EXP 73
23480: PUSH
23481: LD_EXP 73
23485: PPUSH
23486: LD_VAR 0 2
23490: PPUSH
23491: LD_VAR 0 3
23495: PUSH
23496: LD_INT 1
23498: ARRAY
23499: PPUSH
23500: CALL_OW 1
23504: ST_TO_ADDR
23505: GO 23530
// factories := replace ( factories , i , 0 ) ;
23507: LD_ADDR_EXP 73
23511: PUSH
23512: LD_EXP 73
23516: PPUSH
23517: LD_VAR 0 2
23521: PPUSH
23522: LD_INT 0
23524: PPUSH
23525: CALL_OW 1
23529: ST_TO_ADDR
// end ;
23530: GO 23438
23532: POP
23533: POP
// end ;
23534: LD_VAR 0 1
23538: RET
// every 0 0$6 + 0 0$0.9 do var i , j , blds , hums , cars ;
23539: GO 23541
23541: DISABLE
23542: LD_INT 0
23544: PPUSH
23545: PPUSH
23546: PPUSH
23547: PPUSH
23548: PPUSH
// begin hums := [ ] ;
23549: LD_ADDR_VAR 0 4
23553: PUSH
23554: EMPTY
23555: ST_TO_ADDR
// for i in sol do
23556: LD_ADDR_VAR 0 1
23560: PUSH
23561: LD_EXP 82
23565: PUSH
23566: FOR_IN
23567: IFFALSE 23643
// if ( not HasTask ( i ) and not ( GetBType ( IsInUnit ( i ) ) = b_bunker or GetBType ( IsInUnit ( i ) ) = b_breastwork ) ) then
23569: LD_VAR 0 1
23573: PPUSH
23574: CALL_OW 314
23578: NOT
23579: PUSH
23580: LD_VAR 0 1
23584: PPUSH
23585: CALL_OW 310
23589: PPUSH
23590: CALL_OW 266
23594: PUSH
23595: LD_INT 32
23597: EQUAL
23598: PUSH
23599: LD_VAR 0 1
23603: PPUSH
23604: CALL_OW 310
23608: PPUSH
23609: CALL_OW 266
23613: PUSH
23614: LD_INT 31
23616: EQUAL
23617: OR
23618: NOT
23619: AND
23620: IFFALSE 23641
// hums := hums ^ [ i ] ;
23622: LD_ADDR_VAR 0 4
23626: PUSH
23627: LD_VAR 0 4
23631: PUSH
23632: LD_VAR 0 1
23636: PUSH
23637: EMPTY
23638: LIST
23639: ADD
23640: ST_TO_ADDR
23641: GO 23566
23643: POP
23644: POP
// blds := UnitFilter ( fort , [ [ f_not , [ f_occupied ] ] , [ mf_bunk ] ] ) ;
23645: LD_ADDR_VAR 0 3
23649: PUSH
23650: LD_EXP 81
23654: PPUSH
23655: LD_INT 3
23657: PUSH
23658: LD_INT 59
23660: PUSH
23661: EMPTY
23662: LIST
23663: PUSH
23664: EMPTY
23665: LIST
23666: LIST
23667: PUSH
23668: LD_EXP 57
23672: PUSH
23673: EMPTY
23674: LIST
23675: PUSH
23676: EMPTY
23677: LIST
23678: LIST
23679: PPUSH
23680: CALL_OW 72
23684: ST_TO_ADDR
// for i in blds do
23685: LD_ADDR_VAR 0 1
23689: PUSH
23690: LD_VAR 0 3
23694: PUSH
23695: FOR_IN
23696: IFFALSE 23801
// begin j := NearestUnitToUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 40 ] ] ) , i ) ;
23698: LD_ADDR_VAR 0 2
23702: PUSH
23703: LD_VAR 0 4
23707: PPUSH
23708: LD_INT 22
23710: PUSH
23711: LD_VAR 0 1
23715: PPUSH
23716: CALL_OW 255
23720: PUSH
23721: EMPTY
23722: LIST
23723: LIST
23724: PUSH
23725: LD_INT 91
23727: PUSH
23728: LD_VAR 0 1
23732: PUSH
23733: LD_INT 40
23735: PUSH
23736: EMPTY
23737: LIST
23738: LIST
23739: LIST
23740: PUSH
23741: EMPTY
23742: LIST
23743: LIST
23744: PPUSH
23745: CALL_OW 72
23749: PPUSH
23750: LD_VAR 0 1
23754: PPUSH
23755: CALL_OW 74
23759: ST_TO_ADDR
// ComExitBuilding ( j ) ;
23760: LD_VAR 0 2
23764: PPUSH
23765: CALL_OW 122
// AddComEnterUnit ( j , i ) ;
23769: LD_VAR 0 2
23773: PPUSH
23774: LD_VAR 0 1
23778: PPUSH
23779: CALL_OW 180
// hums := hums diff j ;
23783: LD_ADDR_VAR 0 4
23787: PUSH
23788: LD_VAR 0 4
23792: PUSH
23793: LD_VAR 0 2
23797: DIFF
23798: ST_TO_ADDR
// end ;
23799: GO 23695
23801: POP
23802: POP
// cars := UnitFilter ( defence_units , [ f_not , [ f_occupied ] ] ) ;
23803: LD_ADDR_VAR 0 5
23807: PUSH
23808: LD_EXP 79
23812: PPUSH
23813: LD_INT 3
23815: PUSH
23816: LD_INT 59
23818: PUSH
23819: EMPTY
23820: LIST
23821: PUSH
23822: EMPTY
23823: LIST
23824: LIST
23825: PPUSH
23826: CALL_OW 72
23830: ST_TO_ADDR
// for i in cars do
23831: LD_ADDR_VAR 0 1
23835: PUSH
23836: LD_VAR 0 5
23840: PUSH
23841: FOR_IN
23842: IFFALSE 23947
// begin j := NearestUnitToUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
23844: LD_ADDR_VAR 0 2
23848: PUSH
23849: LD_VAR 0 4
23853: PPUSH
23854: LD_INT 22
23856: PUSH
23857: LD_VAR 0 1
23861: PPUSH
23862: CALL_OW 255
23866: PUSH
23867: EMPTY
23868: LIST
23869: LIST
23870: PUSH
23871: LD_INT 91
23873: PUSH
23874: LD_VAR 0 1
23878: PUSH
23879: LD_INT 30
23881: PUSH
23882: EMPTY
23883: LIST
23884: LIST
23885: LIST
23886: PUSH
23887: EMPTY
23888: LIST
23889: LIST
23890: PPUSH
23891: CALL_OW 72
23895: PPUSH
23896: LD_VAR 0 1
23900: PPUSH
23901: CALL_OW 74
23905: ST_TO_ADDR
// ComExitBuilding ( j ) ;
23906: LD_VAR 0 2
23910: PPUSH
23911: CALL_OW 122
// AddComEnterUnit ( j , i ) ;
23915: LD_VAR 0 2
23919: PPUSH
23920: LD_VAR 0 1
23924: PPUSH
23925: CALL_OW 180
// hums := hums diff j ;
23929: LD_ADDR_VAR 0 4
23933: PUSH
23934: LD_VAR 0 4
23938: PUSH
23939: LD_VAR 0 2
23943: DIFF
23944: ST_TO_ADDR
// end ;
23945: GO 23841
23947: POP
23948: POP
// blds := UnitFilter ( fort , [ [ f_not , [ f_occupied ] ] , [ f_or , [ f_btype , b_barracks ] , [ f_btype , b_armoury ] ] ] ) ;
23949: LD_ADDR_VAR 0 3
23953: PUSH
23954: LD_EXP 81
23958: PPUSH
23959: LD_INT 3
23961: PUSH
23962: LD_INT 59
23964: PUSH
23965: EMPTY
23966: LIST
23967: PUSH
23968: EMPTY
23969: LIST
23970: LIST
23971: PUSH
23972: LD_INT 2
23974: PUSH
23975: LD_INT 30
23977: PUSH
23978: LD_INT 5
23980: PUSH
23981: EMPTY
23982: LIST
23983: LIST
23984: PUSH
23985: LD_INT 30
23987: PUSH
23988: LD_INT 4
23990: PUSH
23991: EMPTY
23992: LIST
23993: LIST
23994: PUSH
23995: EMPTY
23996: LIST
23997: LIST
23998: LIST
23999: PUSH
24000: EMPTY
24001: LIST
24002: LIST
24003: PPUSH
24004: CALL_OW 72
24008: ST_TO_ADDR
// for i in blds do
24009: LD_ADDR_VAR 0 1
24013: PUSH
24014: LD_VAR 0 3
24018: PUSH
24019: FOR_IN
24020: IFFALSE 24080
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
24022: LD_VAR 0 4
24026: PPUSH
24027: LD_INT 22
24029: PUSH
24030: LD_VAR 0 1
24034: PPUSH
24035: CALL_OW 255
24039: PUSH
24040: EMPTY
24041: LIST
24042: LIST
24043: PUSH
24044: LD_INT 91
24046: PUSH
24047: LD_VAR 0 1
24051: PUSH
24052: LD_INT 30
24054: PUSH
24055: EMPTY
24056: LIST
24057: LIST
24058: LIST
24059: PUSH
24060: EMPTY
24061: LIST
24062: LIST
24063: PPUSH
24064: CALL_OW 72
24068: PPUSH
24069: LD_VAR 0 1
24073: PPUSH
24074: CALL_OW 120
24078: GO 24019
24080: POP
24081: POP
// enable ;
24082: ENABLE
// end ;
24083: PPOPN 5
24085: END
// every 0 0$2 + 0 0$0.5 do var i , j , blds , hums ;
24086: GO 24088
24088: DISABLE
24089: LD_INT 0
24091: PPUSH
24092: PPUSH
24093: PPUSH
24094: PPUSH
// begin blds := dep ;
24095: LD_ADDR_VAR 0 3
24099: PUSH
24100: LD_EXP 83
24104: ST_TO_ADDR
// hums := [ ] ;
24105: LD_ADDR_VAR 0 4
24109: PUSH
24110: EMPTY
24111: ST_TO_ADDR
// for i in eng do
24112: LD_ADDR_VAR 0 1
24116: PUSH
24117: LD_EXP 84
24121: PUSH
24122: FOR_IN
24123: IFFALSE 24170
// if not IsBusy ( i ) and not IsInUnit ( i ) then
24125: LD_VAR 0 1
24129: PPUSH
24130: CALL_OW 315
24134: NOT
24135: PUSH
24136: LD_VAR 0 1
24140: PPUSH
24141: CALL_OW 310
24145: NOT
24146: AND
24147: IFFALSE 24168
// hums := hums ^ [ i ] ;
24149: LD_ADDR_VAR 0 4
24153: PUSH
24154: LD_VAR 0 4
24158: PUSH
24159: LD_VAR 0 1
24163: PUSH
24164: EMPTY
24165: LIST
24166: ADD
24167: ST_TO_ADDR
24168: GO 24122
24170: POP
24171: POP
// for i in blds do
24172: LD_ADDR_VAR 0 1
24176: PUSH
24177: LD_VAR 0 3
24181: PUSH
24182: FOR_IN
24183: IFFALSE 24243
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , GetSide ( i ) ] , [ f_dist , i , 25 ] ] ) , i ) ;
24185: LD_VAR 0 4
24189: PPUSH
24190: LD_INT 22
24192: PUSH
24193: LD_VAR 0 1
24197: PPUSH
24198: CALL_OW 255
24202: PUSH
24203: EMPTY
24204: LIST
24205: LIST
24206: PUSH
24207: LD_INT 91
24209: PUSH
24210: LD_VAR 0 1
24214: PUSH
24215: LD_INT 25
24217: PUSH
24218: EMPTY
24219: LIST
24220: LIST
24221: LIST
24222: PUSH
24223: EMPTY
24224: LIST
24225: LIST
24226: PPUSH
24227: CALL_OW 72
24231: PPUSH
24232: LD_VAR 0 1
24236: PPUSH
24237: CALL_OW 120
24241: GO 24182
24243: POP
24244: POP
// enable ;
24245: ENABLE
// end ;
24246: PPOPN 4
24248: END
// every 0 0$2 + 0 0$0.7 do var i , j , blds , hums ;
24249: GO 24251
24251: DISABLE
24252: LD_INT 0
24254: PPUSH
24255: PPUSH
24256: PPUSH
24257: PPUSH
// begin blds := fact ;
24258: LD_ADDR_VAR 0 3
24262: PUSH
24263: LD_EXP 85
24267: ST_TO_ADDR
// hums := [ ] ;
24268: LD_ADDR_VAR 0 4
24272: PUSH
24273: EMPTY
24274: ST_TO_ADDR
// for i in mec do
24275: LD_ADDR_VAR 0 1
24279: PUSH
24280: LD_EXP 86
24284: PUSH
24285: FOR_IN
24286: IFFALSE 24333
// if not IsBusy ( i ) and not IsInUnit ( i ) then
24288: LD_VAR 0 1
24292: PPUSH
24293: CALL_OW 315
24297: NOT
24298: PUSH
24299: LD_VAR 0 1
24303: PPUSH
24304: CALL_OW 310
24308: NOT
24309: AND
24310: IFFALSE 24331
// hums := hums ^ [ i ] ;
24312: LD_ADDR_VAR 0 4
24316: PUSH
24317: LD_VAR 0 4
24321: PUSH
24322: LD_VAR 0 1
24326: PUSH
24327: EMPTY
24328: LIST
24329: ADD
24330: ST_TO_ADDR
24331: GO 24285
24333: POP
24334: POP
// for i in blds do
24335: LD_ADDR_VAR 0 1
24339: PUSH
24340: LD_VAR 0 3
24344: PUSH
24345: FOR_IN
24346: IFFALSE 24406
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
24348: LD_VAR 0 4
24352: PPUSH
24353: LD_INT 22
24355: PUSH
24356: LD_VAR 0 1
24360: PPUSH
24361: CALL_OW 255
24365: PUSH
24366: EMPTY
24367: LIST
24368: LIST
24369: PUSH
24370: LD_INT 91
24372: PUSH
24373: LD_VAR 0 1
24377: PUSH
24378: LD_INT 30
24380: PUSH
24381: EMPTY
24382: LIST
24383: LIST
24384: LIST
24385: PUSH
24386: EMPTY
24387: LIST
24388: LIST
24389: PPUSH
24390: CALL_OW 72
24394: PPUSH
24395: LD_VAR 0 1
24399: PPUSH
24400: CALL_OW 120
24404: GO 24345
24406: POP
24407: POP
// enable ;
24408: ENABLE
// end ;
24409: PPOPN 4
24411: END
// every 0 0$2 + 0 0$0.9 do var i , j , blds , hums ;
24412: GO 24414
24414: DISABLE
24415: LD_INT 0
24417: PPUSH
24418: PPUSH
24419: PPUSH
24420: PPUSH
// begin blds := lab ;
24421: LD_ADDR_VAR 0 3
24425: PUSH
24426: LD_EXP 87
24430: ST_TO_ADDR
// hums := [ ] ;
24431: LD_ADDR_VAR 0 4
24435: PUSH
24436: EMPTY
24437: ST_TO_ADDR
// for i in sci do
24438: LD_ADDR_VAR 0 1
24442: PUSH
24443: LD_EXP 88
24447: PUSH
24448: FOR_IN
24449: IFFALSE 24496
// if not IsBusy ( i ) and not IsInUnit ( i ) then
24451: LD_VAR 0 1
24455: PPUSH
24456: CALL_OW 315
24460: NOT
24461: PUSH
24462: LD_VAR 0 1
24466: PPUSH
24467: CALL_OW 310
24471: NOT
24472: AND
24473: IFFALSE 24494
// hums := hums ^ [ i ] ;
24475: LD_ADDR_VAR 0 4
24479: PUSH
24480: LD_VAR 0 4
24484: PUSH
24485: LD_VAR 0 1
24489: PUSH
24490: EMPTY
24491: LIST
24492: ADD
24493: ST_TO_ADDR
24494: GO 24448
24496: POP
24497: POP
// for i in blds do
24498: LD_ADDR_VAR 0 1
24502: PUSH
24503: LD_VAR 0 3
24507: PUSH
24508: FOR_IN
24509: IFFALSE 24569
// ComEnterUnit ( UnitFilter ( hums , [ [ f_side , Getside ( i ) ] , [ f_dist , i , 30 ] ] ) , i ) ;
24511: LD_VAR 0 4
24515: PPUSH
24516: LD_INT 22
24518: PUSH
24519: LD_VAR 0 1
24523: PPUSH
24524: CALL_OW 255
24528: PUSH
24529: EMPTY
24530: LIST
24531: LIST
24532: PUSH
24533: LD_INT 91
24535: PUSH
24536: LD_VAR 0 1
24540: PUSH
24541: LD_INT 30
24543: PUSH
24544: EMPTY
24545: LIST
24546: LIST
24547: LIST
24548: PUSH
24549: EMPTY
24550: LIST
24551: LIST
24552: PPUSH
24553: CALL_OW 72
24557: PPUSH
24558: LD_VAR 0 1
24562: PPUSH
24563: CALL_OW 120
24567: GO 24508
24569: POP
24570: POP
// enable ;
24571: ENABLE
// end ; end_of_file
24572: PPOPN 4
24574: END
// on UnitDestroyed ( un ) do var h , hinfo , a ;
24575: LD_INT 0
24577: PPUSH
24578: PPUSH
24579: PPUSH
// begin if un = Burlak then
24580: LD_VAR 0 1
24584: PUSH
24585: LD_EXP 41
24589: EQUAL
24590: IFFALSE 24599
// begin YouLost ( Burlak ) ;
24592: LD_STRING Burlak
24594: PPUSH
24595: CALL_OW 104
// end ; if un = Platonov then
24599: LD_VAR 0 1
24603: PUSH
24604: LD_EXP 42
24608: EQUAL
24609: IFFALSE 24634
// begin SurrenderBase ( t_kill , GetSide ( un ) ) ;
24611: LD_EXP 1
24615: PPUSH
24616: LD_VAR 0 1
24620: PPUSH
24621: CALL_OW 255
24625: PPUSH
24626: CALL 30255 0 2
// VyhraPlaton ;
24630: CALL 358 0 0
// end ; if GetSide ( un ) <> you then
24634: LD_VAR 0 1
24638: PPUSH
24639: CALL_OW 255
24643: PUSH
24644: LD_EXP 7
24648: NONEQUAL
24649: IFFALSE 24678
// begin remove_from_vehicles ( un ) ;
24651: LD_VAR 0 1
24655: PPUSH
24656: CALL 28161 0 1
// remove_from_humans ( un ) ;
24660: LD_VAR 0 1
24664: PPUSH
24665: CALL 27923 0 1
// remove_from_builds ( un ) ;
24669: LD_VAR 0 1
24673: PPUSH
24674: CALL 27677 0 1
// end ; if not GetSide ( un ) in your_bases then
24678: LD_VAR 0 1
24682: PPUSH
24683: CALL_OW 255
24687: PUSH
24688: LD_EXP 18
24692: IN
24693: NOT
24694: IFFALSE 24816
// begin if un = Borodin then
24696: LD_VAR 0 1
24700: PUSH
24701: LD_EXP 46
24705: EQUAL
24706: IFFALSE 24726
// begin SurrenderBase ( t_kill , ai_s [ 2 ] ) ;
24708: LD_EXP 1
24712: PPUSH
24713: LD_EXP 23
24717: PUSH
24718: LD_INT 2
24720: ARRAY
24721: PPUSH
24722: CALL 30255 0 2
// end ; if un = Tsaritsyn then
24726: LD_VAR 0 1
24730: PUSH
24731: LD_EXP 47
24735: EQUAL
24736: IFFALSE 24756
// begin SurrenderBase ( t_kill , ai_s [ 3 ] ) ;
24738: LD_EXP 1
24742: PPUSH
24743: LD_EXP 23
24747: PUSH
24748: LD_INT 3
24750: ARRAY
24751: PPUSH
24752: CALL 30255 0 2
// end ; if un = Davidov then
24756: LD_VAR 0 1
24760: PUSH
24761: LD_EXP 48
24765: EQUAL
24766: IFFALSE 24786
// begin SurrenderBase ( t_kill , ai_s [ 4 ] ) ;
24768: LD_EXP 1
24772: PPUSH
24773: LD_EXP 23
24777: PUSH
24778: LD_INT 4
24780: ARRAY
24781: PPUSH
24782: CALL 30255 0 2
// end ; if un = Eisenstein then
24786: LD_VAR 0 1
24790: PUSH
24791: LD_EXP 49
24795: EQUAL
24796: IFFALSE 24816
// begin SurrenderBase ( t_kill , ai_s [ 5 ] ) ;
24798: LD_EXP 1
24802: PPUSH
24803: LD_EXP 23
24807: PUSH
24808: LD_INT 5
24810: ARRAY
24811: PPUSH
24812: CALL 30255 0 2
// end ; end ; if GetSide ( un ) = you then
24816: LD_VAR 0 1
24820: PPUSH
24821: CALL_OW 255
24825: PUSH
24826: LD_EXP 7
24830: EQUAL
24831: IFFALSE 24951
// case true of GetType ( un ) = unit_building :
24833: LD_INT 1
24835: PUSH
24836: LD_VAR 0 1
24840: PPUSH
24841: CALL_OW 247
24845: PUSH
24846: LD_INT 3
24848: EQUAL
24849: DOUBLE
24850: EQUAL
24851: IFTRUE 24855
24853: GO 24874
24855: POP
// your_builds := your_builds diff un ; GetType ( un ) = unit_vehicle :
24856: LD_ADDR_EXP 36
24860: PUSH
24861: LD_EXP 36
24865: PUSH
24866: LD_VAR 0 1
24870: DIFF
24871: ST_TO_ADDR
24872: GO 24951
24874: LD_VAR 0 1
24878: PPUSH
24879: CALL_OW 247
24883: PUSH
24884: LD_INT 2
24886: EQUAL
24887: DOUBLE
24888: EQUAL
24889: IFTRUE 24893
24891: GO 24912
24893: POP
// your_cars := your_cars diff un ; GetType ( un ) = unit_human :
24894: LD_ADDR_EXP 35
24898: PUSH
24899: LD_EXP 35
24903: PUSH
24904: LD_VAR 0 1
24908: DIFF
24909: ST_TO_ADDR
24910: GO 24951
24912: LD_VAR 0 1
24916: PPUSH
24917: CALL_OW 247
24921: PUSH
24922: LD_INT 1
24924: EQUAL
24925: DOUBLE
24926: EQUAL
24927: IFTRUE 24931
24929: GO 24950
24931: POP
// your_humans := your_humans diff un ; end ;
24932: LD_ADDR_EXP 37
24936: PUSH
24937: LD_EXP 37
24941: PUSH
24942: LD_VAR 0 1
24946: DIFF
24947: ST_TO_ADDR
24948: GO 24951
24950: POP
// end ;
24951: PPOPN 4
24953: END
// on UnitGoesToRed ( un ) do var a ;
24954: LD_INT 0
24956: PPUSH
// begin if not GetSide ( un ) in your_bases then
24957: LD_VAR 0 1
24961: PPUSH
24962: CALL_OW 255
24966: PUSH
24967: LD_EXP 18
24971: IN
24972: NOT
24973: IFFALSE 25206
// begin if GetBType ( un ) in [ b_depot , b_warehouse ] then
24975: LD_VAR 0 1
24979: PPUSH
24980: CALL_OW 266
24984: PUSH
24985: LD_INT 0
24987: PUSH
24988: LD_INT 1
24990: PUSH
24991: EMPTY
24992: LIST
24993: LIST
24994: IN
24995: IFFALSE 25206
// begin a := FilterAllUnits ( [ [ f_side , GetSide ( un ) ] ] ) ;
24997: LD_ADDR_VAR 0 2
25001: PUSH
25002: LD_INT 22
25004: PUSH
25005: LD_VAR 0 1
25009: PPUSH
25010: CALL_OW 255
25014: PUSH
25015: EMPTY
25016: LIST
25017: LIST
25018: PUSH
25019: EMPTY
25020: LIST
25021: PPUSH
25022: CALL_OW 69
25026: ST_TO_ADDR
// if GetSide ( un ) = ai_s [ 1 ] and IsDead ( behemoth ) and UnitFilter ( a , [ mf_sol ] ) <= 2 and UnitFilter ( a , [ [ f_type , unit_vehicle ] , [ f_or , [ [ f_control , control_manual ] , [ f_occupied ] ] , [ f_control , control_computer ] ] ] ) <= 1 then
25027: LD_VAR 0 1
25031: PPUSH
25032: CALL_OW 255
25036: PUSH
25037: LD_EXP 23
25041: PUSH
25042: LD_INT 1
25044: ARRAY
25045: EQUAL
25046: PUSH
25047: LD_INT 125
25049: PPUSH
25050: CALL_OW 301
25054: AND
25055: PUSH
25056: LD_VAR 0 2
25060: PPUSH
25061: LD_EXP 51
25065: PUSH
25066: EMPTY
25067: LIST
25068: PPUSH
25069: CALL_OW 72
25073: PUSH
25074: LD_INT 2
25076: LESSEQUAL
25077: AND
25078: PUSH
25079: LD_VAR 0 2
25083: PPUSH
25084: LD_INT 21
25086: PUSH
25087: LD_INT 2
25089: PUSH
25090: EMPTY
25091: LIST
25092: LIST
25093: PUSH
25094: LD_INT 2
25096: PUSH
25097: LD_INT 33
25099: PUSH
25100: LD_INT 1
25102: PUSH
25103: EMPTY
25104: LIST
25105: LIST
25106: PUSH
25107: LD_INT 59
25109: PUSH
25110: EMPTY
25111: LIST
25112: PUSH
25113: EMPTY
25114: LIST
25115: LIST
25116: PUSH
25117: LD_INT 33
25119: PUSH
25120: LD_INT 3
25122: PUSH
25123: EMPTY
25124: LIST
25125: LIST
25126: PUSH
25127: EMPTY
25128: LIST
25129: LIST
25130: LIST
25131: PUSH
25132: EMPTY
25133: LIST
25134: LIST
25135: PPUSH
25136: CALL_OW 72
25140: PUSH
25141: LD_INT 1
25143: LESSEQUAL
25144: AND
25145: IFFALSE 25166
// SurrenderBase ( t_killbeat , GetSide ( un ) ) ;
25147: LD_EXP 6
25151: PPUSH
25152: LD_VAR 0 1
25156: PPUSH
25157: CALL_OW 255
25161: PPUSH
25162: CALL 30255 0 2
// if GetSide ( un ) <> ai_s [ 1 ] then
25166: LD_VAR 0 1
25170: PPUSH
25171: CALL_OW 255
25175: PUSH
25176: LD_EXP 23
25180: PUSH
25181: LD_INT 1
25183: ARRAY
25184: NONEQUAL
25185: IFFALSE 25206
// SurrenderBase ( t_killbeat , GetSide ( un ) ) ;
25187: LD_EXP 6
25191: PPUSH
25192: LD_VAR 0 1
25196: PPUSH
25197: CALL_OW 255
25201: PPUSH
25202: CALL 30255 0 2
// end ; end ; end ;
25206: PPOPN 2
25208: END
// on VehicleCaptured ( vehnew , vehold , origside , hum ) do begin if origside in ai then
25209: LD_VAR 0 3
25213: PUSH
25214: LD_EXP 24
25218: IN
25219: IFFALSE 25282
// begin remove_from_vehicles ( vehold ) ;
25221: LD_VAR 0 2
25225: PPUSH
25226: CALL 28161 0 1
// if GetAttitude ( origside , you ) = att_neutral then
25230: LD_VAR 0 3
25234: PPUSH
25235: LD_EXP 7
25239: PPUSH
25240: CALL_OW 81
25244: PUSH
25245: LD_INT 0
25247: EQUAL
25248: IFFALSE 25282
// begin ComExitVehicle ( vehnew ) ;
25250: LD_VAR 0 1
25254: PPUSH
25255: CALL_OW 121
// SetSide ( vehnew , origside ) ;
25259: LD_VAR 0 1
25263: PPUSH
25264: LD_VAR 0 3
25268: PPUSH
25269: CALL_OW 235
// add_to_vehicles ( vehnew ) ;
25273: LD_VAR 0 1
25277: PPUSH
25278: CALL 26830 0 1
// end ; end ; if Getside ( vehnew ) in ai then
25282: LD_VAR 0 1
25286: PPUSH
25287: CALL_OW 255
25291: PUSH
25292: LD_EXP 24
25296: IN
25297: IFFALSE 25308
// begin add_to_vehicles ( vehnew ) ;
25299: LD_VAR 0 1
25303: PPUSH
25304: CALL 26830 0 1
// end ; if origside = you then
25308: LD_VAR 0 3
25312: PUSH
25313: LD_EXP 7
25317: EQUAL
25318: IFFALSE 25336
// your_cars := your_cars diff vehold ;
25320: LD_ADDR_EXP 35
25324: PUSH
25325: LD_EXP 35
25329: PUSH
25330: LD_VAR 0 2
25334: DIFF
25335: ST_TO_ADDR
// if GetSide ( vehnew ) = you then
25336: LD_VAR 0 1
25340: PPUSH
25341: CALL_OW 255
25345: PUSH
25346: LD_EXP 7
25350: EQUAL
25351: IFFALSE 25369
// your_cars := your_cars union vehnew ;
25353: LD_ADDR_EXP 35
25357: PUSH
25358: LD_EXP 35
25362: PUSH
25363: LD_VAR 0 1
25367: UNION
25368: ST_TO_ADDR
// if getside ( vehnew ) and GetCargo ( vehnew , mat_artefact ) > 0 then
25369: LD_VAR 0 1
25373: PPUSH
25374: CALL_OW 255
25378: PUSH
25379: LD_VAR 0 1
25383: PPUSH
25384: LD_INT 4
25386: PPUSH
25387: CALL_OW 289
25391: PUSH
25392: LD_INT 0
25394: GREATER
25395: AND
25396: IFFALSE 25406
// maji_artifact := true ;
25398: LD_ADDR_EXP 39
25402: PUSH
25403: LD_INT 1
25405: ST_TO_ADDR
// if origside = you and GetCargo ( vehnew , mat_artefact ) > 0 then
25406: LD_VAR 0 3
25410: PUSH
25411: LD_EXP 7
25415: EQUAL
25416: PUSH
25417: LD_VAR 0 1
25421: PPUSH
25422: LD_INT 4
25424: PPUSH
25425: CALL_OW 289
25429: PUSH
25430: LD_INT 0
25432: GREATER
25433: AND
25434: IFFALSE 25444
// maji_artifact := false ;
25436: LD_ADDR_EXP 39
25440: PUSH
25441: LD_INT 0
25443: ST_TO_ADDR
// end ;
25444: PPOPN 4
25446: END
// on BuildingCaptured ( build , origside , eng ) do begin if origside = you then
25447: LD_VAR 0 2
25451: PUSH
25452: LD_EXP 7
25456: EQUAL
25457: IFFALSE 25475
// begin your_builds := your_builds diff build ;
25459: LD_ADDR_EXP 36
25463: PUSH
25464: LD_EXP 36
25468: PUSH
25469: LD_VAR 0 1
25473: DIFF
25474: ST_TO_ADDR
// end ; if GetSide ( build ) = you then
25475: LD_VAR 0 1
25479: PPUSH
25480: CALL_OW 255
25484: PUSH
25485: LD_EXP 7
25489: EQUAL
25490: IFFALSE 25508
// begin your_builds := your_builds union build ;
25492: LD_ADDR_EXP 36
25496: PUSH
25497: LD_EXP 36
25501: PUSH
25502: LD_VAR 0 1
25506: UNION
25507: ST_TO_ADDR
// end ; if origside in ai then
25508: LD_VAR 0 2
25512: PUSH
25513: LD_EXP 24
25517: IN
25518: IFFALSE 25529
// begin remove_from_builds ( build ) ;
25520: LD_VAR 0 1
25524: PPUSH
25525: CALL 27677 0 1
// end ; if GetSide ( build ) in ai then
25529: LD_VAR 0 1
25533: PPUSH
25534: CALL_OW 255
25538: PUSH
25539: LD_EXP 24
25543: IN
25544: IFFALSE 25555
// begin add_to_builds ( build ) ;
25546: LD_VAR 0 1
25550: PPUSH
25551: CALL 27175 0 1
// end ; end ;
25555: PPOPN 3
25557: END
// on BuildingComplete ( build ) do begin if GetSide ( build ) = you then
25558: LD_VAR 0 1
25562: PPUSH
25563: CALL_OW 255
25567: PUSH
25568: LD_EXP 7
25572: EQUAL
25573: IFFALSE 25591
// begin your_builds := your_builds union build ;
25575: LD_ADDR_EXP 36
25579: PUSH
25580: LD_EXP 36
25584: PUSH
25585: LD_VAR 0 1
25589: UNION
25590: ST_TO_ADDR
// end ; if GetSide ( build ) in ai then
25591: LD_VAR 0 1
25595: PPUSH
25596: CALL_OW 255
25600: PUSH
25601: LD_EXP 24
25605: IN
25606: IFFALSE 25617
// begin add_to_builds ( build ) ;
25608: LD_VAR 0 1
25612: PPUSH
25613: CALL 27175 0 1
// end ; end ;
25617: PPOPN 1
25619: END
// on VehicleConstructed ( veh , fact ) do begin if GetSide ( veh ) = you then
25620: LD_VAR 0 1
25624: PPUSH
25625: CALL_OW 255
25629: PUSH
25630: LD_EXP 7
25634: EQUAL
25635: IFFALSE 25653
// begin your_cars := your_cars union veh ;
25637: LD_ADDR_EXP 35
25641: PUSH
25642: LD_EXP 35
25646: PUSH
25647: LD_VAR 0 1
25651: UNION
25652: ST_TO_ADDR
// end ; if GetSide ( veh ) in ai then
25653: LD_VAR 0 1
25657: PPUSH
25658: CALL_OW 255
25662: PUSH
25663: LD_EXP 24
25667: IN
25668: IFFALSE 26017
// begin if GetControl ( veh ) = control_computer then
25670: LD_VAR 0 1
25674: PPUSH
25675: CALL_OW 263
25679: PUSH
25680: LD_INT 3
25682: EQUAL
25683: IFFALSE 25843
// case GetSide ( veh ) of ai_s [ 1 ] :
25685: LD_VAR 0 1
25689: PPUSH
25690: CALL_OW 255
25694: PUSH
25695: LD_EXP 23
25699: PUSH
25700: LD_INT 1
25702: ARRAY
25703: DOUBLE
25704: EQUAL
25705: IFTRUE 25709
25707: GO 25724
25709: POP
// ComMoveToArea ( veh , pro_attA ) ; ai_s [ 2 ] :
25710: LD_VAR 0 1
25714: PPUSH
25715: LD_INT 8
25717: PPUSH
25718: CALL_OW 113
25722: GO 25841
25724: LD_EXP 23
25728: PUSH
25729: LD_INT 2
25731: ARRAY
25732: DOUBLE
25733: EQUAL
25734: IFTRUE 25738
25736: GO 25753
25738: POP
// ComMoveToArea ( veh , pro_attB ) ; ai_s [ 3 ] :
25739: LD_VAR 0 1
25743: PPUSH
25744: LD_INT 10
25746: PPUSH
25747: CALL_OW 113
25751: GO 25841
25753: LD_EXP 23
25757: PUSH
25758: LD_INT 3
25760: ARRAY
25761: DOUBLE
25762: EQUAL
25763: IFTRUE 25767
25765: GO 25782
25767: POP
// ComMoveToArea ( veh , pro_attC ) ; ai_s [ 4 ] :
25768: LD_VAR 0 1
25772: PPUSH
25773: LD_INT 17
25775: PPUSH
25776: CALL_OW 113
25780: GO 25841
25782: LD_EXP 23
25786: PUSH
25787: LD_INT 4
25789: ARRAY
25790: DOUBLE
25791: EQUAL
25792: IFTRUE 25796
25794: GO 25811
25796: POP
// ComMoveToArea ( veh , pro_attD ) ; ai_s [ 5 ] :
25797: LD_VAR 0 1
25801: PPUSH
25802: LD_INT 15
25804: PPUSH
25805: CALL_OW 113
25809: GO 25841
25811: LD_EXP 23
25815: PUSH
25816: LD_INT 5
25818: ARRAY
25819: DOUBLE
25820: EQUAL
25821: IFTRUE 25825
25823: GO 25840
25825: POP
// ComMoveToArea ( veh , pro_attE ) ; end else
25826: LD_VAR 0 1
25830: PPUSH
25831: LD_INT 12
25833: PPUSH
25834: CALL_OW 113
25838: GO 25841
25840: POP
25841: GO 25999
// case GetSide ( veh ) of ai_s [ 1 ] :
25843: LD_VAR 0 1
25847: PPUSH
25848: CALL_OW 255
25852: PUSH
25853: LD_EXP 23
25857: PUSH
25858: LD_INT 1
25860: ARRAY
25861: DOUBLE
25862: EQUAL
25863: IFTRUE 25867
25865: GO 25882
25867: POP
// ComMoveToArea ( veh , pro_defA ) ; ai_s [ 2 ] :
25868: LD_VAR 0 1
25872: PPUSH
25873: LD_INT 9
25875: PPUSH
25876: CALL_OW 113
25880: GO 25999
25882: LD_EXP 23
25886: PUSH
25887: LD_INT 2
25889: ARRAY
25890: DOUBLE
25891: EQUAL
25892: IFTRUE 25896
25894: GO 25911
25896: POP
// ComMoveToArea ( veh , pro_defB ) ; ai_s [ 3 ] :
25897: LD_VAR 0 1
25901: PPUSH
25902: LD_INT 11
25904: PPUSH
25905: CALL_OW 113
25909: GO 25999
25911: LD_EXP 23
25915: PUSH
25916: LD_INT 3
25918: ARRAY
25919: DOUBLE
25920: EQUAL
25921: IFTRUE 25925
25923: GO 25940
25925: POP
// ComMoveToArea ( veh , pro_defC ) ; ai_s [ 4 ] :
25926: LD_VAR 0 1
25930: PPUSH
25931: LD_INT 16
25933: PPUSH
25934: CALL_OW 113
25938: GO 25999
25940: LD_EXP 23
25944: PUSH
25945: LD_INT 4
25947: ARRAY
25948: DOUBLE
25949: EQUAL
25950: IFTRUE 25954
25952: GO 25969
25954: POP
// ComMoveToArea ( veh , pro_defD ) ; ai_s [ 5 ] :
25955: LD_VAR 0 1
25959: PPUSH
25960: LD_INT 14
25962: PPUSH
25963: CALL_OW 113
25967: GO 25999
25969: LD_EXP 23
25973: PUSH
25974: LD_INT 5
25976: ARRAY
25977: DOUBLE
25978: EQUAL
25979: IFTRUE 25983
25981: GO 25998
25983: POP
// ComMoveToArea ( veh , pro_defE ) ; end ;
25984: LD_VAR 0 1
25988: PPUSH
25989: LD_INT 13
25991: PPUSH
25992: CALL_OW 113
25996: GO 25999
25998: POP
// AddComExitVehicle ( veh ) ;
25999: LD_VAR 0 1
26003: PPUSH
26004: CALL_OW 181
// add_to_vehicles ( veh ) ;
26008: LD_VAR 0 1
26012: PPUSH
26013: CALL 26830 0 1
// end ; end ;
26017: PPOPN 2
26019: END
// on ArtifactLoaded ( un , size ) do begin if GetSide ( un ) = you then
26020: LD_VAR 0 1
26024: PPUSH
26025: CALL_OW 255
26029: PUSH
26030: LD_EXP 7
26034: EQUAL
26035: IFFALSE 26045
// maji_artifact := true ;
26037: LD_ADDR_EXP 39
26041: PUSH
26042: LD_INT 1
26044: ST_TO_ADDR
// art_cargo1 := un ;
26045: LD_ADDR_EXP 34
26049: PUSH
26050: LD_VAR 0 1
26054: ST_TO_ADDR
// end ;
26055: PPOPN 2
26057: END
// on ArtifactUnloaded ( un , size ) do begin if GetSide ( un ) = you then
26058: LD_VAR 0 1
26062: PPUSH
26063: CALL_OW 255
26067: PUSH
26068: LD_EXP 7
26072: EQUAL
26073: IFFALSE 26083
// maji_artifact := false ;
26075: LD_ADDR_EXP 39
26079: PUSH
26080: LD_INT 0
26082: ST_TO_ADDR
// art_cargo1 := 0 ;
26083: LD_ADDR_EXP 34
26087: PUSH
26088: LD_INT 0
26090: ST_TO_ADDR
// end ;
26091: PPOPN 2
26093: END
// on Command ( comm ) do begin if not Getside ( Eisenstein ) = you and IsInUnit ( Eisenstein ) then
26094: LD_EXP 49
26098: PPUSH
26099: CALL_OW 255
26103: PUSH
26104: LD_EXP 7
26108: EQUAL
26109: NOT
26110: PUSH
26111: LD_EXP 49
26115: PPUSH
26116: CALL_OW 310
26120: AND
26121: IFFALSE 26132
// RemoveTasks ( Eisenstein ) ;
26123: LD_EXP 49
26127: PPUSH
26128: CALL_OW 493
// if not Getside ( Davidov ) = you and IsInUnit ( Davidov ) then
26132: LD_EXP 48
26136: PPUSH
26137: CALL_OW 255
26141: PUSH
26142: LD_EXP 7
26146: EQUAL
26147: NOT
26148: PUSH
26149: LD_EXP 48
26153: PPUSH
26154: CALL_OW 310
26158: AND
26159: IFFALSE 26170
// RemoveTasks ( Davidov ) ;
26161: LD_EXP 48
26165: PPUSH
26166: CALL_OW 493
// if not Getside ( Tsaritsyn ) = you and IsInUnit ( Tsaritsyn ) then
26170: LD_EXP 47
26174: PPUSH
26175: CALL_OW 255
26179: PUSH
26180: LD_EXP 7
26184: EQUAL
26185: NOT
26186: PUSH
26187: LD_EXP 47
26191: PPUSH
26192: CALL_OW 310
26196: AND
26197: IFFALSE 26208
// RemoveTasks ( Tsaritsyn ) ;
26199: LD_EXP 47
26203: PPUSH
26204: CALL_OW 493
// if not Getside ( Borodin ) = you and IsInUnit ( Borodin ) then
26208: LD_EXP 46
26212: PPUSH
26213: CALL_OW 255
26217: PUSH
26218: LD_EXP 7
26222: EQUAL
26223: NOT
26224: PUSH
26225: LD_EXP 46
26229: PPUSH
26230: CALL_OW 310
26234: AND
26235: IFFALSE 26246
// RemoveTasks ( Borodin ) ;
26237: LD_EXP 46
26241: PPUSH
26242: CALL_OW 493
// end ;
26246: PPOPN 1
26248: END
// on McAttackDone ( mcid , surv ) do begin msg ( [ mcid , McAttackDone , surv ] ) ;
26249: LD_VAR 0 1
26253: PUSH
26254: LD_STRING McAttackDone
26256: PUSH
26257: LD_VAR 0 2
26261: PUSH
26262: EMPTY
26263: LIST
26264: LIST
26265: LIST
26266: PPUSH
26267: CALL_OW 100
// end ;
26271: PPOPN 2
26273: END
// on McRegistryResultChanges ( mcid , count , strength ) do begin if mcid = BehMcRegId then
26274: LD_VAR 0 1
26278: PUSH
26279: LD_EXP 64
26283: EQUAL
26284: IFFALSE 26335
// debug_strings := replace ( debug_strings , 2 , [ mcid , count , strength , GetMcUnits ( BehMcAttId ) ] ) ;
26286: LD_ADDR_OWVAR 48
26290: PUSH
26291: LD_OWVAR 48
26295: PPUSH
26296: LD_INT 2
26298: PPUSH
26299: LD_VAR 0 1
26303: PUSH
26304: LD_VAR 0 2
26308: PUSH
26309: LD_VAR 0 3
26313: PUSH
26314: LD_EXP 65
26318: PPUSH
26319: CALL_OW 389
26323: PUSH
26324: EMPTY
26325: LIST
26326: LIST
26327: LIST
26328: LIST
26329: PPUSH
26330: CALL_OW 1
26334: ST_TO_ADDR
// end ;
26335: PPOPN 3
26337: END
// export function add_to ( un ) ; begin
26338: LD_INT 0
26340: PPUSH
// add_to_humans ( UnitFilter ( un , [ [ f_type , unit_human ] ] ) ) ;
26341: LD_VAR 0 1
26345: PPUSH
26346: LD_INT 21
26348: PUSH
26349: LD_INT 1
26351: PUSH
26352: EMPTY
26353: LIST
26354: LIST
26355: PUSH
26356: EMPTY
26357: LIST
26358: PPUSH
26359: CALL_OW 72
26363: PPUSH
26364: CALL 26427 0 1
// add_to_builds ( UnitFilter ( un , [ [ f_type , unit_building ] ] ) ) ;
26368: LD_VAR 0 1
26372: PPUSH
26373: LD_INT 21
26375: PUSH
26376: LD_INT 3
26378: PUSH
26379: EMPTY
26380: LIST
26381: LIST
26382: PUSH
26383: EMPTY
26384: LIST
26385: PPUSH
26386: CALL_OW 72
26390: PPUSH
26391: CALL 27175 0 1
// add_to_vehicles ( UnitFilter ( un , [ [ f_type , unit_vehicle ] ] ) ) ;
26395: LD_VAR 0 1
26399: PPUSH
26400: LD_INT 21
26402: PUSH
26403: LD_INT 2
26405: PUSH
26406: EMPTY
26407: LIST
26408: LIST
26409: PUSH
26410: EMPTY
26411: LIST
26412: PPUSH
26413: CALL_OW 72
26417: PPUSH
26418: CALL 26830 0 1
// end ;
26422: LD_VAR 0 2
26426: RET
// export function add_to_humans ( un ) ; var i ; begin
26427: LD_INT 0
26429: PPUSH
26430: PPUSH
// sol := sol union UnitFilter ( un , [ mf_sol ] ) ;
26431: LD_ADDR_EXP 82
26435: PUSH
26436: LD_EXP 82
26440: PUSH
26441: LD_VAR 0 1
26445: PPUSH
26446: LD_EXP 51
26450: PUSH
26451: EMPTY
26452: LIST
26453: PPUSH
26454: CALL_OW 72
26458: UNION
26459: ST_TO_ADDR
// eng := eng union UnitFilter ( un , [ mf_eng ] ) ;
26460: LD_ADDR_EXP 84
26464: PUSH
26465: LD_EXP 84
26469: PUSH
26470: LD_VAR 0 1
26474: PPUSH
26475: LD_EXP 52
26479: PUSH
26480: EMPTY
26481: LIST
26482: PPUSH
26483: CALL_OW 72
26487: UNION
26488: ST_TO_ADDR
// mec := mec union UnitFilter ( un , [ mf_mec ] ) ;
26489: LD_ADDR_EXP 86
26493: PUSH
26494: LD_EXP 86
26498: PUSH
26499: LD_VAR 0 1
26503: PPUSH
26504: LD_EXP 53
26508: PUSH
26509: EMPTY
26510: LIST
26511: PPUSH
26512: CALL_OW 72
26516: UNION
26517: ST_TO_ADDR
// sci := sci union UnitFilter ( un , [ mf_sci ] ) ;
26518: LD_ADDR_EXP 88
26522: PUSH
26523: LD_EXP 88
26527: PUSH
26528: LD_VAR 0 1
26532: PPUSH
26533: LD_EXP 54
26537: PUSH
26538: EMPTY
26539: LIST
26540: PPUSH
26541: CALL_OW 72
26545: UNION
26546: ST_TO_ADDR
// for i in un do
26547: LD_ADDR_VAR 0 3
26551: PUSH
26552: LD_VAR 0 1
26556: PUSH
26557: FOR_IN
26558: IFFALSE 26823
// begin case GetSide ( i ) of ai_s [ 1 ] :
26560: LD_VAR 0 3
26564: PPUSH
26565: CALL_OW 255
26569: PUSH
26570: LD_EXP 23
26574: PUSH
26575: LD_INT 1
26577: ARRAY
26578: DOUBLE
26579: EQUAL
26580: IFTRUE 26584
26582: GO 26620
26584: POP
// humans := replace ( humans , 1 , humans [ 1 ] union i ) ; ai_s [ 2 ] :
26585: LD_ADDR_EXP 76
26589: PUSH
26590: LD_EXP 76
26594: PPUSH
26595: LD_INT 1
26597: PPUSH
26598: LD_EXP 76
26602: PUSH
26603: LD_INT 1
26605: ARRAY
26606: PUSH
26607: LD_VAR 0 3
26611: UNION
26612: PPUSH
26613: CALL_OW 1
26617: ST_TO_ADDR
26618: GO 26821
26620: LD_EXP 23
26624: PUSH
26625: LD_INT 2
26627: ARRAY
26628: DOUBLE
26629: EQUAL
26630: IFTRUE 26634
26632: GO 26670
26634: POP
// humans := replace ( humans , 2 , humans [ 2 ] union i ) ; ai_s [ 3 ] :
26635: LD_ADDR_EXP 76
26639: PUSH
26640: LD_EXP 76
26644: PPUSH
26645: LD_INT 2
26647: PPUSH
26648: LD_EXP 76
26652: PUSH
26653: LD_INT 2
26655: ARRAY
26656: PUSH
26657: LD_VAR 0 3
26661: UNION
26662: PPUSH
26663: CALL_OW 1
26667: ST_TO_ADDR
26668: GO 26821
26670: LD_EXP 23
26674: PUSH
26675: LD_INT 3
26677: ARRAY
26678: DOUBLE
26679: EQUAL
26680: IFTRUE 26684
26682: GO 26720
26684: POP
// humans := replace ( humans , 3 , humans [ 3 ] union i ) ; ai_s [ 4 ] :
26685: LD_ADDR_EXP 76
26689: PUSH
26690: LD_EXP 76
26694: PPUSH
26695: LD_INT 3
26697: PPUSH
26698: LD_EXP 76
26702: PUSH
26703: LD_INT 3
26705: ARRAY
26706: PUSH
26707: LD_VAR 0 3
26711: UNION
26712: PPUSH
26713: CALL_OW 1
26717: ST_TO_ADDR
26718: GO 26821
26720: LD_EXP 23
26724: PUSH
26725: LD_INT 4
26727: ARRAY
26728: DOUBLE
26729: EQUAL
26730: IFTRUE 26734
26732: GO 26770
26734: POP
// humans := replace ( humans , 4 , humans [ 4 ] union i ) ; ai_s [ 5 ] :
26735: LD_ADDR_EXP 76
26739: PUSH
26740: LD_EXP 76
26744: PPUSH
26745: LD_INT 4
26747: PPUSH
26748: LD_EXP 76
26752: PUSH
26753: LD_INT 4
26755: ARRAY
26756: PUSH
26757: LD_VAR 0 3
26761: UNION
26762: PPUSH
26763: CALL_OW 1
26767: ST_TO_ADDR
26768: GO 26821
26770: LD_EXP 23
26774: PUSH
26775: LD_INT 5
26777: ARRAY
26778: DOUBLE
26779: EQUAL
26780: IFTRUE 26784
26782: GO 26820
26784: POP
// humans := replace ( humans , 5 , humans [ 5 ] union i ) ; end ;
26785: LD_ADDR_EXP 76
26789: PUSH
26790: LD_EXP 76
26794: PPUSH
26795: LD_INT 5
26797: PPUSH
26798: LD_EXP 76
26802: PUSH
26803: LD_INT 5
26805: ARRAY
26806: PUSH
26807: LD_VAR 0 3
26811: UNION
26812: PPUSH
26813: CALL_OW 1
26817: ST_TO_ADDR
26818: GO 26821
26820: POP
// end ;
26821: GO 26557
26823: POP
26824: POP
// end ;
26825: LD_VAR 0 2
26829: RET
// export function add_to_vehicles ( un ) ; var i ; begin
26830: LD_INT 0
26832: PPUSH
26833: PPUSH
// attack_units := attack_units union UnitFilter ( un , [ mf_comp ] ) ;
26834: LD_ADDR_EXP 78
26838: PUSH
26839: LD_EXP 78
26843: PUSH
26844: LD_VAR 0 1
26848: PPUSH
26849: LD_EXP 60
26853: PUSH
26854: EMPTY
26855: LIST
26856: PPUSH
26857: CALL_OW 72
26861: UNION
26862: ST_TO_ADDR
// defence_units := defence_units union UnitFilter ( un , [ mf_manu ] ) ;
26863: LD_ADDR_EXP 79
26867: PUSH
26868: LD_EXP 79
26872: PUSH
26873: LD_VAR 0 1
26877: PPUSH
26878: LD_EXP 61
26882: PUSH
26883: EMPTY
26884: LIST
26885: PPUSH
26886: CALL_OW 72
26890: UNION
26891: ST_TO_ADDR
// for i in un do
26892: LD_ADDR_VAR 0 3
26896: PUSH
26897: LD_VAR 0 1
26901: PUSH
26902: FOR_IN
26903: IFFALSE 27168
// begin case getside ( i ) of ai_s [ 1 ] :
26905: LD_VAR 0 3
26909: PPUSH
26910: CALL_OW 255
26914: PUSH
26915: LD_EXP 23
26919: PUSH
26920: LD_INT 1
26922: ARRAY
26923: DOUBLE
26924: EQUAL
26925: IFTRUE 26929
26927: GO 26965
26929: POP
// vehicles := replace ( vehicles , 1 , vehicles [ 1 ] union i ) ; ai_s [ 2 ] :
26930: LD_ADDR_EXP 77
26934: PUSH
26935: LD_EXP 77
26939: PPUSH
26940: LD_INT 1
26942: PPUSH
26943: LD_EXP 77
26947: PUSH
26948: LD_INT 1
26950: ARRAY
26951: PUSH
26952: LD_VAR 0 3
26956: UNION
26957: PPUSH
26958: CALL_OW 1
26962: ST_TO_ADDR
26963: GO 27166
26965: LD_EXP 23
26969: PUSH
26970: LD_INT 2
26972: ARRAY
26973: DOUBLE
26974: EQUAL
26975: IFTRUE 26979
26977: GO 27015
26979: POP
// vehicles := replace ( vehicles , 2 , vehicles [ 2 ] union i ) ; ai_s [ 3 ] :
26980: LD_ADDR_EXP 77
26984: PUSH
26985: LD_EXP 77
26989: PPUSH
26990: LD_INT 2
26992: PPUSH
26993: LD_EXP 77
26997: PUSH
26998: LD_INT 2
27000: ARRAY
27001: PUSH
27002: LD_VAR 0 3
27006: UNION
27007: PPUSH
27008: CALL_OW 1
27012: ST_TO_ADDR
27013: GO 27166
27015: LD_EXP 23
27019: PUSH
27020: LD_INT 3
27022: ARRAY
27023: DOUBLE
27024: EQUAL
27025: IFTRUE 27029
27027: GO 27065
27029: POP
// vehicles := replace ( vehicles , 3 , vehicles [ 3 ] union i ) ; ai_s [ 4 ] :
27030: LD_ADDR_EXP 77
27034: PUSH
27035: LD_EXP 77
27039: PPUSH
27040: LD_INT 3
27042: PPUSH
27043: LD_EXP 77
27047: PUSH
27048: LD_INT 3
27050: ARRAY
27051: PUSH
27052: LD_VAR 0 3
27056: UNION
27057: PPUSH
27058: CALL_OW 1
27062: ST_TO_ADDR
27063: GO 27166
27065: LD_EXP 23
27069: PUSH
27070: LD_INT 4
27072: ARRAY
27073: DOUBLE
27074: EQUAL
27075: IFTRUE 27079
27077: GO 27115
27079: POP
// vehicles := replace ( vehicles , 4 , vehicles [ 4 ] union i ) ; ai_s [ 5 ] :
27080: LD_ADDR_EXP 77
27084: PUSH
27085: LD_EXP 77
27089: PPUSH
27090: LD_INT 4
27092: PPUSH
27093: LD_EXP 77
27097: PUSH
27098: LD_INT 4
27100: ARRAY
27101: PUSH
27102: LD_VAR 0 3
27106: UNION
27107: PPUSH
27108: CALL_OW 1
27112: ST_TO_ADDR
27113: GO 27166
27115: LD_EXP 23
27119: PUSH
27120: LD_INT 5
27122: ARRAY
27123: DOUBLE
27124: EQUAL
27125: IFTRUE 27129
27127: GO 27165
27129: POP
// vehicles := replace ( vehicles , 5 , vehicles [ 5 ] union i ) ; end ;
27130: LD_ADDR_EXP 77
27134: PUSH
27135: LD_EXP 77
27139: PPUSH
27140: LD_INT 5
27142: PPUSH
27143: LD_EXP 77
27147: PUSH
27148: LD_INT 5
27150: ARRAY
27151: PUSH
27152: LD_VAR 0 3
27156: UNION
27157: PPUSH
27158: CALL_OW 1
27162: ST_TO_ADDR
27163: GO 27166
27165: POP
// end ;
27166: GO 26902
27168: POP
27169: POP
// end ;
27170: LD_VAR 0 2
27174: RET
// export function add_to_builds ( un ) ; var i , j , bt ; begin
27175: LD_INT 0
27177: PPUSH
27178: PPUSH
27179: PPUSH
27180: PPUSH
// fort := fort union UnitFilter ( un , [ mf_fort ] ) ;
27181: LD_ADDR_EXP 81
27185: PUSH
27186: LD_EXP 81
27190: PUSH
27191: LD_VAR 0 1
27195: PPUSH
27196: LD_EXP 56
27200: PUSH
27201: EMPTY
27202: LIST
27203: PPUSH
27204: CALL_OW 72
27208: UNION
27209: ST_TO_ADDR
// dep := dep union UnitFilter ( un , [ mf_dep ] ) ;
27210: LD_ADDR_EXP 83
27214: PUSH
27215: LD_EXP 83
27219: PUSH
27220: LD_VAR 0 1
27224: PPUSH
27225: LD_EXP 58
27229: PUSH
27230: EMPTY
27231: LIST
27232: PPUSH
27233: CALL_OW 72
27237: UNION
27238: ST_TO_ADDR
// fact := fact union UnitFilter ( un , [ mf_fact ] ) ;
27239: LD_ADDR_EXP 85
27243: PUSH
27244: LD_EXP 85
27248: PUSH
27249: LD_VAR 0 1
27253: PPUSH
27254: LD_EXP 59
27258: PUSH
27259: EMPTY
27260: LIST
27261: PPUSH
27262: CALL_OW 72
27266: UNION
27267: ST_TO_ADDR
// lab := lab union UnitFilter ( un , [ mf_lab ] ) ;
27268: LD_ADDR_EXP 87
27272: PUSH
27273: LD_EXP 87
27277: PUSH
27278: LD_VAR 0 1
27282: PPUSH
27283: LD_EXP 55
27287: PUSH
27288: EMPTY
27289: LIST
27290: PPUSH
27291: CALL_OW 72
27295: UNION
27296: ST_TO_ADDR
// for i in un do
27297: LD_ADDR_VAR 0 3
27301: PUSH
27302: LD_VAR 0 1
27306: PUSH
27307: FOR_IN
27308: IFFALSE 27573
// begin case GetSide ( i ) of ai_s [ 1 ] :
27310: LD_VAR 0 3
27314: PPUSH
27315: CALL_OW 255
27319: PUSH
27320: LD_EXP 23
27324: PUSH
27325: LD_INT 1
27327: ARRAY
27328: DOUBLE
27329: EQUAL
27330: IFTRUE 27334
27332: GO 27370
27334: POP
// buildings := replace ( buildings , 1 , buildings [ 1 ] union i ) ; ai_s [ 2 ] :
27335: LD_ADDR_EXP 75
27339: PUSH
27340: LD_EXP 75
27344: PPUSH
27345: LD_INT 1
27347: PPUSH
27348: LD_EXP 75
27352: PUSH
27353: LD_INT 1
27355: ARRAY
27356: PUSH
27357: LD_VAR 0 3
27361: UNION
27362: PPUSH
27363: CALL_OW 1
27367: ST_TO_ADDR
27368: GO 27571
27370: LD_EXP 23
27374: PUSH
27375: LD_INT 2
27377: ARRAY
27378: DOUBLE
27379: EQUAL
27380: IFTRUE 27384
27382: GO 27420
27384: POP
// buildings := replace ( buildings , 2 , buildings [ 2 ] union i ) ; ai_s [ 3 ] :
27385: LD_ADDR_EXP 75
27389: PUSH
27390: LD_EXP 75
27394: PPUSH
27395: LD_INT 2
27397: PPUSH
27398: LD_EXP 75
27402: PUSH
27403: LD_INT 2
27405: ARRAY
27406: PUSH
27407: LD_VAR 0 3
27411: UNION
27412: PPUSH
27413: CALL_OW 1
27417: ST_TO_ADDR
27418: GO 27571
27420: LD_EXP 23
27424: PUSH
27425: LD_INT 3
27427: ARRAY
27428: DOUBLE
27429: EQUAL
27430: IFTRUE 27434
27432: GO 27470
27434: POP
// buildings := replace ( buildings , 3 , buildings [ 3 ] union i ) ; ai_s [ 4 ] :
27435: LD_ADDR_EXP 75
27439: PUSH
27440: LD_EXP 75
27444: PPUSH
27445: LD_INT 3
27447: PPUSH
27448: LD_EXP 75
27452: PUSH
27453: LD_INT 3
27455: ARRAY
27456: PUSH
27457: LD_VAR 0 3
27461: UNION
27462: PPUSH
27463: CALL_OW 1
27467: ST_TO_ADDR
27468: GO 27571
27470: LD_EXP 23
27474: PUSH
27475: LD_INT 4
27477: ARRAY
27478: DOUBLE
27479: EQUAL
27480: IFTRUE 27484
27482: GO 27520
27484: POP
// buildings := replace ( buildings , 4 , buildings [ 4 ] union i ) ; ai_s [ 5 ] :
27485: LD_ADDR_EXP 75
27489: PUSH
27490: LD_EXP 75
27494: PPUSH
27495: LD_INT 4
27497: PPUSH
27498: LD_EXP 75
27502: PUSH
27503: LD_INT 4
27505: ARRAY
27506: PUSH
27507: LD_VAR 0 3
27511: UNION
27512: PPUSH
27513: CALL_OW 1
27517: ST_TO_ADDR
27518: GO 27571
27520: LD_EXP 23
27524: PUSH
27525: LD_INT 5
27527: ARRAY
27528: DOUBLE
27529: EQUAL
27530: IFTRUE 27534
27532: GO 27570
27534: POP
// buildings := replace ( buildings , 5 , buildings [ 5 ] union i ) ; end ;
27535: LD_ADDR_EXP 75
27539: PUSH
27540: LD_EXP 75
27544: PPUSH
27545: LD_INT 5
27547: PPUSH
27548: LD_EXP 75
27552: PUSH
27553: LD_INT 5
27555: ARRAY
27556: PUSH
27557: LD_VAR 0 3
27561: UNION
27562: PPUSH
27563: CALL_OW 1
27567: ST_TO_ADDR
27568: GO 27571
27570: POP
// end ;
27571: GO 27307
27573: POP
27574: POP
// write_deps ;
27575: CALL 23301 0 0
// write_facts ;
27579: CALL 23420 0 0
// end ;
27583: LD_VAR 0 2
27587: RET
// export function remove_from ( un ) ; begin
27588: LD_INT 0
27590: PPUSH
// remove_from_humans ( UnitFilter ( un , [ [ f_type , unit_human ] ] ) ) ;
27591: LD_VAR 0 1
27595: PPUSH
27596: LD_INT 21
27598: PUSH
27599: LD_INT 1
27601: PUSH
27602: EMPTY
27603: LIST
27604: LIST
27605: PUSH
27606: EMPTY
27607: LIST
27608: PPUSH
27609: CALL_OW 72
27613: PPUSH
27614: CALL 27923 0 1
// remove_from_builds ( UnitFilter ( un , [ [ f_type , unit_building ] ] ) ) ;
27618: LD_VAR 0 1
27622: PPUSH
27623: LD_INT 21
27625: PUSH
27626: LD_INT 3
27628: PUSH
27629: EMPTY
27630: LIST
27631: LIST
27632: PUSH
27633: EMPTY
27634: LIST
27635: PPUSH
27636: CALL_OW 72
27640: PPUSH
27641: CALL 27677 0 1
// remove_from_vehicles ( UnitFilter ( un , [ [ f_type , unit_vehicle ] ] ) ) ;
27645: LD_VAR 0 1
27649: PPUSH
27650: LD_INT 21
27652: PUSH
27653: LD_INT 2
27655: PUSH
27656: EMPTY
27657: LIST
27658: LIST
27659: PUSH
27660: EMPTY
27661: LIST
27662: PPUSH
27663: CALL_OW 72
27667: PPUSH
27668: CALL 28161 0 1
// end ;
27672: LD_VAR 0 2
27676: RET
// export function remove_from_builds ( un ) ; var i ; begin
27677: LD_INT 0
27679: PPUSH
27680: PPUSH
// fact := fact diff un ;
27681: LD_ADDR_EXP 85
27685: PUSH
27686: LD_EXP 85
27690: PUSH
27691: LD_VAR 0 1
27695: DIFF
27696: ST_TO_ADDR
// fort := fort diff un ;
27697: LD_ADDR_EXP 81
27701: PUSH
27702: LD_EXP 81
27706: PUSH
27707: LD_VAR 0 1
27711: DIFF
27712: ST_TO_ADDR
// lab := lab diff un ;
27713: LD_ADDR_EXP 87
27717: PUSH
27718: LD_EXP 87
27722: PUSH
27723: LD_VAR 0 1
27727: DIFF
27728: ST_TO_ADDR
// dep := dep diff un ;
27729: LD_ADDR_EXP 83
27733: PUSH
27734: LD_EXP 83
27738: PUSH
27739: LD_VAR 0 1
27743: DIFF
27744: ST_TO_ADDR
// buildings := replace ( buildings , 1 , buildings [ 1 ] diff un ) ;
27745: LD_ADDR_EXP 75
27749: PUSH
27750: LD_EXP 75
27754: PPUSH
27755: LD_INT 1
27757: PPUSH
27758: LD_EXP 75
27762: PUSH
27763: LD_INT 1
27765: ARRAY
27766: PUSH
27767: LD_VAR 0 1
27771: DIFF
27772: PPUSH
27773: CALL_OW 1
27777: ST_TO_ADDR
// buildings := replace ( buildings , 2 , buildings [ 2 ] diff un ) ;
27778: LD_ADDR_EXP 75
27782: PUSH
27783: LD_EXP 75
27787: PPUSH
27788: LD_INT 2
27790: PPUSH
27791: LD_EXP 75
27795: PUSH
27796: LD_INT 2
27798: ARRAY
27799: PUSH
27800: LD_VAR 0 1
27804: DIFF
27805: PPUSH
27806: CALL_OW 1
27810: ST_TO_ADDR
// buildings := replace ( buildings , 3 , buildings [ 3 ] diff un ) ;
27811: LD_ADDR_EXP 75
27815: PUSH
27816: LD_EXP 75
27820: PPUSH
27821: LD_INT 3
27823: PPUSH
27824: LD_EXP 75
27828: PUSH
27829: LD_INT 3
27831: ARRAY
27832: PUSH
27833: LD_VAR 0 1
27837: DIFF
27838: PPUSH
27839: CALL_OW 1
27843: ST_TO_ADDR
// buildings := replace ( buildings , 4 , buildings [ 4 ] diff un ) ;
27844: LD_ADDR_EXP 75
27848: PUSH
27849: LD_EXP 75
27853: PPUSH
27854: LD_INT 4
27856: PPUSH
27857: LD_EXP 75
27861: PUSH
27862: LD_INT 4
27864: ARRAY
27865: PUSH
27866: LD_VAR 0 1
27870: DIFF
27871: PPUSH
27872: CALL_OW 1
27876: ST_TO_ADDR
// buildings := replace ( buildings , 5 , buildings [ 5 ] diff un ) ;
27877: LD_ADDR_EXP 75
27881: PUSH
27882: LD_EXP 75
27886: PPUSH
27887: LD_INT 5
27889: PPUSH
27890: LD_EXP 75
27894: PUSH
27895: LD_INT 5
27897: ARRAY
27898: PUSH
27899: LD_VAR 0 1
27903: DIFF
27904: PPUSH
27905: CALL_OW 1
27909: ST_TO_ADDR
// write_deps ;
27910: CALL 23301 0 0
// write_facts ;
27914: CALL 23420 0 0
// end ;
27918: LD_VAR 0 2
27922: RET
// export function remove_from_humans ( un ) ; var i ; begin
27923: LD_INT 0
27925: PPUSH
27926: PPUSH
// sol := sol diff un ;
27927: LD_ADDR_EXP 82
27931: PUSH
27932: LD_EXP 82
27936: PUSH
27937: LD_VAR 0 1
27941: DIFF
27942: ST_TO_ADDR
// eng := eng diff un ;
27943: LD_ADDR_EXP 84
27947: PUSH
27948: LD_EXP 84
27952: PUSH
27953: LD_VAR 0 1
27957: DIFF
27958: ST_TO_ADDR
// mec := mec diff un ;
27959: LD_ADDR_EXP 86
27963: PUSH
27964: LD_EXP 86
27968: PUSH
27969: LD_VAR 0 1
27973: DIFF
27974: ST_TO_ADDR
// sci := sci diff un ;
27975: LD_ADDR_EXP 88
27979: PUSH
27980: LD_EXP 88
27984: PUSH
27985: LD_VAR 0 1
27989: DIFF
27990: ST_TO_ADDR
// humans := replace ( humans , 1 , humans [ 1 ] diff un ) ;
27991: LD_ADDR_EXP 76
27995: PUSH
27996: LD_EXP 76
28000: PPUSH
28001: LD_INT 1
28003: PPUSH
28004: LD_EXP 76
28008: PUSH
28009: LD_INT 1
28011: ARRAY
28012: PUSH
28013: LD_VAR 0 1
28017: DIFF
28018: PPUSH
28019: CALL_OW 1
28023: ST_TO_ADDR
// humans := replace ( humans , 2 , humans [ 2 ] diff un ) ;
28024: LD_ADDR_EXP 76
28028: PUSH
28029: LD_EXP 76
28033: PPUSH
28034: LD_INT 2
28036: PPUSH
28037: LD_EXP 76
28041: PUSH
28042: LD_INT 2
28044: ARRAY
28045: PUSH
28046: LD_VAR 0 1
28050: DIFF
28051: PPUSH
28052: CALL_OW 1
28056: ST_TO_ADDR
// humans := replace ( humans , 3 , humans [ 3 ] diff un ) ;
28057: LD_ADDR_EXP 76
28061: PUSH
28062: LD_EXP 76
28066: PPUSH
28067: LD_INT 3
28069: PPUSH
28070: LD_EXP 76
28074: PUSH
28075: LD_INT 3
28077: ARRAY
28078: PUSH
28079: LD_VAR 0 1
28083: DIFF
28084: PPUSH
28085: CALL_OW 1
28089: ST_TO_ADDR
// humans := replace ( humans , 4 , humans [ 4 ] diff un ) ;
28090: LD_ADDR_EXP 76
28094: PUSH
28095: LD_EXP 76
28099: PPUSH
28100: LD_INT 4
28102: PPUSH
28103: LD_EXP 76
28107: PUSH
28108: LD_INT 4
28110: ARRAY
28111: PUSH
28112: LD_VAR 0 1
28116: DIFF
28117: PPUSH
28118: CALL_OW 1
28122: ST_TO_ADDR
// humans := replace ( humans , 5 , humans [ 5 ] diff un ) ;
28123: LD_ADDR_EXP 76
28127: PUSH
28128: LD_EXP 76
28132: PPUSH
28133: LD_INT 5
28135: PPUSH
28136: LD_EXP 76
28140: PUSH
28141: LD_INT 5
28143: ARRAY
28144: PUSH
28145: LD_VAR 0 1
28149: DIFF
28150: PPUSH
28151: CALL_OW 1
28155: ST_TO_ADDR
// end ;
28156: LD_VAR 0 2
28160: RET
// export function remove_from_vehicles ( un ) ; var i ; begin
28161: LD_INT 0
28163: PPUSH
28164: PPUSH
// attack_units := attack_units diff un ;
28165: LD_ADDR_EXP 78
28169: PUSH
28170: LD_EXP 78
28174: PUSH
28175: LD_VAR 0 1
28179: DIFF
28180: ST_TO_ADDR
// defence_units := defence_units diff un ;
28181: LD_ADDR_EXP 79
28185: PUSH
28186: LD_EXP 79
28190: PUSH
28191: LD_VAR 0 1
28195: DIFF
28196: ST_TO_ADDR
// vehicles := replace ( vehicles , 1 , vehicles [ 1 ] diff un ) ;
28197: LD_ADDR_EXP 77
28201: PUSH
28202: LD_EXP 77
28206: PPUSH
28207: LD_INT 1
28209: PPUSH
28210: LD_EXP 77
28214: PUSH
28215: LD_INT 1
28217: ARRAY
28218: PUSH
28219: LD_VAR 0 1
28223: DIFF
28224: PPUSH
28225: CALL_OW 1
28229: ST_TO_ADDR
// vehicles := replace ( vehicles , 2 , vehicles [ 2 ] diff un ) ;
28230: LD_ADDR_EXP 77
28234: PUSH
28235: LD_EXP 77
28239: PPUSH
28240: LD_INT 2
28242: PPUSH
28243: LD_EXP 77
28247: PUSH
28248: LD_INT 2
28250: ARRAY
28251: PUSH
28252: LD_VAR 0 1
28256: DIFF
28257: PPUSH
28258: CALL_OW 1
28262: ST_TO_ADDR
// vehicles := replace ( vehicles , 3 , vehicles [ 3 ] diff un ) ;
28263: LD_ADDR_EXP 77
28267: PUSH
28268: LD_EXP 77
28272: PPUSH
28273: LD_INT 3
28275: PPUSH
28276: LD_EXP 77
28280: PUSH
28281: LD_INT 3
28283: ARRAY
28284: PUSH
28285: LD_VAR 0 1
28289: DIFF
28290: PPUSH
28291: CALL_OW 1
28295: ST_TO_ADDR
// vehicles := replace ( vehicles , 4 , vehicles [ 4 ] diff un ) ;
28296: LD_ADDR_EXP 77
28300: PUSH
28301: LD_EXP 77
28305: PPUSH
28306: LD_INT 4
28308: PPUSH
28309: LD_EXP 77
28313: PUSH
28314: LD_INT 4
28316: ARRAY
28317: PUSH
28318: LD_VAR 0 1
28322: DIFF
28323: PPUSH
28324: CALL_OW 1
28328: ST_TO_ADDR
// vehicles := replace ( vehicles , 5 , vehicles [ 5 ] diff un ) ;
28329: LD_ADDR_EXP 77
28333: PUSH
28334: LD_EXP 77
28338: PPUSH
28339: LD_INT 5
28341: PPUSH
28342: LD_EXP 77
28346: PUSH
28347: LD_INT 5
28349: ARRAY
28350: PUSH
28351: LD_VAR 0 1
28355: DIFF
28356: PPUSH
28357: CALL_OW 1
28361: ST_TO_ADDR
// bc := replace ( bc , 1 , bc [ 1 ] diff un ) ;
28362: LD_ADDR_EXP 71
28366: PUSH
28367: LD_EXP 71
28371: PPUSH
28372: LD_INT 1
28374: PPUSH
28375: LD_EXP 71
28379: PUSH
28380: LD_INT 1
28382: ARRAY
28383: PUSH
28384: LD_VAR 0 1
28388: DIFF
28389: PPUSH
28390: CALL_OW 1
28394: ST_TO_ADDR
// bc := replace ( bc , 2 , bc [ 2 ] diff un ) ;
28395: LD_ADDR_EXP 71
28399: PUSH
28400: LD_EXP 71
28404: PPUSH
28405: LD_INT 2
28407: PPUSH
28408: LD_EXP 71
28412: PUSH
28413: LD_INT 2
28415: ARRAY
28416: PUSH
28417: LD_VAR 0 1
28421: DIFF
28422: PPUSH
28423: CALL_OW 1
28427: ST_TO_ADDR
// bc := replace ( bc , 3 , bc [ 3 ] diff un ) ;
28428: LD_ADDR_EXP 71
28432: PUSH
28433: LD_EXP 71
28437: PPUSH
28438: LD_INT 3
28440: PPUSH
28441: LD_EXP 71
28445: PUSH
28446: LD_INT 3
28448: ARRAY
28449: PUSH
28450: LD_VAR 0 1
28454: DIFF
28455: PPUSH
28456: CALL_OW 1
28460: ST_TO_ADDR
// bc := replace ( bc , 4 , bc [ 4 ] diff un ) ;
28461: LD_ADDR_EXP 71
28465: PUSH
28466: LD_EXP 71
28470: PPUSH
28471: LD_INT 4
28473: PPUSH
28474: LD_EXP 71
28478: PUSH
28479: LD_INT 4
28481: ARRAY
28482: PUSH
28483: LD_VAR 0 1
28487: DIFF
28488: PPUSH
28489: CALL_OW 1
28493: ST_TO_ADDR
// bc := replace ( bc , 5 , bc [ 5 ] diff un ) ;
28494: LD_ADDR_EXP 71
28498: PUSH
28499: LD_EXP 71
28503: PPUSH
28504: LD_INT 5
28506: PPUSH
28507: LD_EXP 71
28511: PUSH
28512: LD_INT 5
28514: ARRAY
28515: PUSH
28516: LD_VAR 0 1
28520: DIFF
28521: PPUSH
28522: CALL_OW 1
28526: ST_TO_ADDR
// rc := replace ( rc , 1 , rc [ 1 ] diff un ) ;
28527: LD_ADDR_EXP 70
28531: PUSH
28532: LD_EXP 70
28536: PPUSH
28537: LD_INT 1
28539: PPUSH
28540: LD_EXP 70
28544: PUSH
28545: LD_INT 1
28547: ARRAY
28548: PUSH
28549: LD_VAR 0 1
28553: DIFF
28554: PPUSH
28555: CALL_OW 1
28559: ST_TO_ADDR
// rc := replace ( rc , 2 , rc [ 2 ] diff un ) ;
28560: LD_ADDR_EXP 70
28564: PUSH
28565: LD_EXP 70
28569: PPUSH
28570: LD_INT 2
28572: PPUSH
28573: LD_EXP 70
28577: PUSH
28578: LD_INT 2
28580: ARRAY
28581: PUSH
28582: LD_VAR 0 1
28586: DIFF
28587: PPUSH
28588: CALL_OW 1
28592: ST_TO_ADDR
// rc := replace ( rc , 3 , rc [ 3 ] diff un ) ;
28593: LD_ADDR_EXP 70
28597: PUSH
28598: LD_EXP 70
28602: PPUSH
28603: LD_INT 3
28605: PPUSH
28606: LD_EXP 70
28610: PUSH
28611: LD_INT 3
28613: ARRAY
28614: PUSH
28615: LD_VAR 0 1
28619: DIFF
28620: PPUSH
28621: CALL_OW 1
28625: ST_TO_ADDR
// rc := replace ( rc , 4 , rc [ 4 ] diff un ) ;
28626: LD_ADDR_EXP 70
28630: PUSH
28631: LD_EXP 70
28635: PPUSH
28636: LD_INT 4
28638: PPUSH
28639: LD_EXP 70
28643: PUSH
28644: LD_INT 4
28646: ARRAY
28647: PUSH
28648: LD_VAR 0 1
28652: DIFF
28653: PPUSH
28654: CALL_OW 1
28658: ST_TO_ADDR
// rc := replace ( rc , 5 , rc [ 5 ] diff un ) ;
28659: LD_ADDR_EXP 70
28663: PUSH
28664: LD_EXP 70
28668: PPUSH
28669: LD_INT 5
28671: PPUSH
28672: LD_EXP 70
28676: PUSH
28677: LD_INT 5
28679: ARRAY
28680: PUSH
28681: LD_VAR 0 1
28685: DIFF
28686: PPUSH
28687: CALL_OW 1
28691: ST_TO_ADDR
// end ; end_of_file
28692: LD_VAR 0 2
28696: RET
// var objevovani_zasilek ; every 1 do
28697: GO 28699
28699: DISABLE
// begin objevovani_zasilek := [ 2 , 3 , 1 , 5 , 1 , 1 , 4 , 1 , 0 , 3 , 3 , 1 , 5 , 1 , 1 , 4 , 1 , 0 , 3 , 3 , 1 , 5 , 1 , 1 , 4 , 1 , 0 , 3 ] ;
28700: LD_ADDR_LOC 30
28704: PUSH
28705: LD_INT 2
28707: PUSH
28708: LD_INT 3
28710: PUSH
28711: LD_INT 1
28713: PUSH
28714: LD_INT 5
28716: PUSH
28717: LD_INT 1
28719: PUSH
28720: LD_INT 1
28722: PUSH
28723: LD_INT 4
28725: PUSH
28726: LD_INT 1
28728: PUSH
28729: LD_INT 0
28731: PUSH
28732: LD_INT 3
28734: PUSH
28735: LD_INT 3
28737: PUSH
28738: LD_INT 1
28740: PUSH
28741: LD_INT 5
28743: PUSH
28744: LD_INT 1
28746: PUSH
28747: LD_INT 1
28749: PUSH
28750: LD_INT 4
28752: PUSH
28753: LD_INT 1
28755: PUSH
28756: LD_INT 0
28758: PUSH
28759: LD_INT 3
28761: PUSH
28762: LD_INT 3
28764: PUSH
28765: LD_INT 1
28767: PUSH
28768: LD_INT 5
28770: PUSH
28771: LD_INT 1
28773: PUSH
28774: LD_INT 1
28776: PUSH
28777: LD_INT 4
28779: PUSH
28780: LD_INT 1
28782: PUSH
28783: LD_INT 0
28785: PUSH
28786: LD_INT 3
28788: PUSH
28789: EMPTY
28790: LIST
28791: LIST
28792: LIST
28793: LIST
28794: LIST
28795: LIST
28796: LIST
28797: LIST
28798: LIST
28799: LIST
28800: LIST
28801: LIST
28802: LIST
28803: LIST
28804: LIST
28805: LIST
28806: LIST
28807: LIST
28808: LIST
28809: LIST
28810: LIST
28811: LIST
28812: LIST
28813: LIST
28814: LIST
28815: LIST
28816: LIST
28817: LIST
28818: ST_TO_ADDR
// Randomize ;
28819: CALL_OW 10
// end ;
28823: END
// every 5 5$0 do
28824: GO 28826
28826: DISABLE
// begin Randomize ;
28827: CALL_OW 10
// enable ;
28831: ENABLE
// end ;
28832: END
// every 0 0$15 do
28833: GO 28835
28835: DISABLE
// begin padaji_bedny ;
28836: CALL 28850 0 0
// end ;
28840: END
// every 5 5$0 + 0 0$15 do
28841: GO 28843
28843: DISABLE
// begin padaji_bedny ;
28844: CALL 28850 0 0
// enable ;
28848: ENABLE
// end ;
28849: END
// function padaji_bedny ; var x , i , cek , cek2 , last , min5 ; begin
28850: LD_INT 0
28852: PPUSH
28853: PPUSH
28854: PPUSH
28855: PPUSH
28856: PPUSH
28857: PPUSH
28858: PPUSH
// min5 := ( ( tick div 5 5$0 ) + 1 ) mod objevovani_zasilek ;
28859: LD_ADDR_VAR 0 7
28863: PUSH
28864: LD_OWVAR 1
28868: PUSH
28869: LD_INT 10500
28871: DIV
28872: PUSH
28873: LD_INT 1
28875: PLUS
28876: PUSH
28877: LD_LOC 30
28881: MOD
28882: ST_TO_ADDR
// cek := [ ] ;
28883: LD_ADDR_VAR 0 4
28887: PUSH
28888: EMPTY
28889: ST_TO_ADDR
// cek2 := [ ] ;
28890: LD_ADDR_VAR 0 5
28894: PUSH
28895: EMPTY
28896: ST_TO_ADDR
// last := 0 ;
28897: LD_ADDR_VAR 0 6
28901: PUSH
28902: LD_INT 0
28904: ST_TO_ADDR
// x := objevovani_zasilek [ min5 ] ;
28905: LD_ADDR_VAR 0 2
28909: PUSH
28910: LD_LOC 30
28914: PUSH
28915: LD_VAR 0 7
28919: ARRAY
28920: ST_TO_ADDR
// for i := 1 to x do
28921: LD_ADDR_VAR 0 3
28925: PUSH
28926: DOUBLE
28927: LD_INT 1
28929: DEC
28930: ST_TO_ADDR
28931: LD_VAR 0 2
28935: PUSH
28936: FOR_TO
28937: IFFALSE 28963
// cek := cek ^ Rand ( 0 0$15 , 5 5$0 ) ;
28939: LD_ADDR_VAR 0 4
28943: PUSH
28944: LD_VAR 0 4
28948: PUSH
28949: LD_INT 525
28951: PPUSH
28952: LD_INT 10500
28954: PPUSH
28955: CALL_OW 12
28959: ADD
28960: ST_TO_ADDR
28961: GO 28936
28963: POP
28964: POP
// cek := SortListByListAsc ( cek , cek ) ;
28965: LD_ADDR_VAR 0 4
28969: PUSH
28970: LD_VAR 0 4
28974: PPUSH
28975: LD_VAR 0 4
28979: PPUSH
28980: CALL_OW 76
28984: ST_TO_ADDR
// for i in cek do
28985: LD_ADDR_VAR 0 3
28989: PUSH
28990: LD_VAR 0 4
28994: PUSH
28995: FOR_IN
28996: IFFALSE 29032
// begin cek2 := cek2 ^ i - last ;
28998: LD_ADDR_VAR 0 5
29002: PUSH
29003: LD_VAR 0 5
29007: PUSH
29008: LD_VAR 0 3
29012: PUSH
29013: LD_VAR 0 6
29017: MINUS
29018: ADD
29019: ST_TO_ADDR
// last := i ;
29020: LD_ADDR_VAR 0 6
29024: PUSH
29025: LD_VAR 0 3
29029: ST_TO_ADDR
// end ;
29030: GO 28995
29032: POP
29033: POP
// for i := 1 to x do
29034: LD_ADDR_VAR 0 3
29038: PUSH
29039: DOUBLE
29040: LD_INT 1
29042: DEC
29043: ST_TO_ADDR
29044: LD_VAR 0 2
29048: PUSH
29049: FOR_TO
29050: IFFALSE 29079
// begin CreateCratesAnywhere ( 5 , true ) ;
29052: LD_INT 5
29054: PPUSH
29055: LD_INT 1
29057: PPUSH
29058: CALL_OW 57
// Wait ( cek2 [ i ] ) ;
29062: LD_VAR 0 5
29066: PUSH
29067: LD_VAR 0 3
29071: ARRAY
29072: PPUSH
29073: CALL_OW 67
// end ;
29077: GO 29049
29079: POP
29080: POP
// end ; end_of_file
29081: LD_VAR 0 1
29085: RET
// var rDef1 , rDef2 , rDef3 , rDef4 , rDef5 ; var idDef1 , idDef2 , idDef3 , idDef4 , idDef5 ; export toDef1 , toDef2 , toDef3 , toDef4 , toDef5 ; every 0 0$1 do
29086: GO 29088
29088: DISABLE
// begin todef1 := UnitFilter ( humans [ 1 ] , [ mf_sol ] ) ^ vehicles [ 1 ] ^ UnitFilter ( buildings [ 1 ] , [ mf_fort ] ) ;
29089: LD_ADDR_EXP 89
29093: PUSH
29094: LD_EXP 76
29098: PUSH
29099: LD_INT 1
29101: ARRAY
29102: PPUSH
29103: LD_EXP 51
29107: PUSH
29108: EMPTY
29109: LIST
29110: PPUSH
29111: CALL_OW 72
29115: PUSH
29116: LD_EXP 77
29120: PUSH
29121: LD_INT 1
29123: ARRAY
29124: ADD
29125: PUSH
29126: LD_EXP 75
29130: PUSH
29131: LD_INT 1
29133: ARRAY
29134: PPUSH
29135: LD_EXP 56
29139: PUSH
29140: EMPTY
29141: LIST
29142: PPUSH
29143: CALL_OW 72
29147: ADD
29148: ST_TO_ADDR
// todef2 := UnitFilter ( humans [ 2 ] , [ mf_sol ] ) ^ vehicles [ 2 ] ^ UnitFilter ( buildings [ 2 ] , [ mf_fort ] ) ;
29149: LD_ADDR_EXP 90
29153: PUSH
29154: LD_EXP 76
29158: PUSH
29159: LD_INT 2
29161: ARRAY
29162: PPUSH
29163: LD_EXP 51
29167: PUSH
29168: EMPTY
29169: LIST
29170: PPUSH
29171: CALL_OW 72
29175: PUSH
29176: LD_EXP 77
29180: PUSH
29181: LD_INT 2
29183: ARRAY
29184: ADD
29185: PUSH
29186: LD_EXP 75
29190: PUSH
29191: LD_INT 2
29193: ARRAY
29194: PPUSH
29195: LD_EXP 56
29199: PUSH
29200: EMPTY
29201: LIST
29202: PPUSH
29203: CALL_OW 72
29207: ADD
29208: ST_TO_ADDR
// todef3 := UnitFilter ( humans [ 3 ] , [ mf_sol ] ) ^ vehicles [ 3 ] ^ UnitFilter ( buildings [ 3 ] , [ mf_fort ] ) ;
29209: LD_ADDR_EXP 91
29213: PUSH
29214: LD_EXP 76
29218: PUSH
29219: LD_INT 3
29221: ARRAY
29222: PPUSH
29223: LD_EXP 51
29227: PUSH
29228: EMPTY
29229: LIST
29230: PPUSH
29231: CALL_OW 72
29235: PUSH
29236: LD_EXP 77
29240: PUSH
29241: LD_INT 3
29243: ARRAY
29244: ADD
29245: PUSH
29246: LD_EXP 75
29250: PUSH
29251: LD_INT 3
29253: ARRAY
29254: PPUSH
29255: LD_EXP 56
29259: PUSH
29260: EMPTY
29261: LIST
29262: PPUSH
29263: CALL_OW 72
29267: ADD
29268: ST_TO_ADDR
// todef4 := UnitFilter ( humans [ 4 ] , [ mf_sol ] ) ^ vehicles [ 4 ] ^ UnitFilter ( buildings [ 4 ] , [ mf_fort ] ) ;
29269: LD_ADDR_EXP 92
29273: PUSH
29274: LD_EXP 76
29278: PUSH
29279: LD_INT 4
29281: ARRAY
29282: PPUSH
29283: LD_EXP 51
29287: PUSH
29288: EMPTY
29289: LIST
29290: PPUSH
29291: CALL_OW 72
29295: PUSH
29296: LD_EXP 77
29300: PUSH
29301: LD_INT 4
29303: ARRAY
29304: ADD
29305: PUSH
29306: LD_EXP 75
29310: PUSH
29311: LD_INT 4
29313: ARRAY
29314: PPUSH
29315: LD_EXP 56
29319: PUSH
29320: EMPTY
29321: LIST
29322: PPUSH
29323: CALL_OW 72
29327: ADD
29328: ST_TO_ADDR
// todef5 := UnitFilter ( humans [ 5 ] , [ mf_sol ] ) ^ vehicles [ 5 ] ^ UnitFilter ( buildings [ 5 ] , [ mf_fort ] ) ;
29329: LD_ADDR_EXP 93
29333: PUSH
29334: LD_EXP 76
29338: PUSH
29339: LD_INT 5
29341: ARRAY
29342: PPUSH
29343: LD_EXP 51
29347: PUSH
29348: EMPTY
29349: LIST
29350: PPUSH
29351: CALL_OW 72
29355: PUSH
29356: LD_EXP 77
29360: PUSH
29361: LD_INT 5
29363: ARRAY
29364: ADD
29365: PUSH
29366: LD_EXP 75
29370: PUSH
29371: LD_INT 5
29373: ARRAY
29374: PPUSH
29375: LD_EXP 56
29379: PUSH
29380: EMPTY
29381: LIST
29382: PPUSH
29383: CALL_OW 72
29387: ADD
29388: ST_TO_ADDR
// rDef1 := McRegistry ( ai_s [ 1 ] , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , nearA ] , [ mc_reg_area_to_protect , nearA ] ] ) ;
29389: LD_ADDR_LOC 31
29393: PUSH
29394: LD_EXP 23
29398: PUSH
29399: LD_INT 1
29401: ARRAY
29402: PPUSH
29403: LD_INT 1
29405: PUSH
29406: LD_INT 70
29408: PUSH
29409: EMPTY
29410: LIST
29411: LIST
29412: PUSH
29413: LD_INT 2
29415: PUSH
29416: LD_INT 24
29418: PUSH
29419: EMPTY
29420: LIST
29421: LIST
29422: PUSH
29423: LD_INT 3
29425: PUSH
29426: LD_INT 24
29428: PUSH
29429: EMPTY
29430: LIST
29431: LIST
29432: PUSH
29433: EMPTY
29434: LIST
29435: LIST
29436: LIST
29437: PPUSH
29438: CALL_OW 399
29442: ST_TO_ADDR
// rDef2 := McRegistry ( ai_s [ 2 ] , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , nearB ] , [ mc_reg_area_to_protect , nearB ] ] ) ;
29443: LD_ADDR_LOC 32
29447: PUSH
29448: LD_EXP 23
29452: PUSH
29453: LD_INT 2
29455: ARRAY
29456: PPUSH
29457: LD_INT 1
29459: PUSH
29460: LD_INT 70
29462: PUSH
29463: EMPTY
29464: LIST
29465: LIST
29466: PUSH
29467: LD_INT 2
29469: PUSH
29470: LD_INT 25
29472: PUSH
29473: EMPTY
29474: LIST
29475: LIST
29476: PUSH
29477: LD_INT 3
29479: PUSH
29480: LD_INT 25
29482: PUSH
29483: EMPTY
29484: LIST
29485: LIST
29486: PUSH
29487: EMPTY
29488: LIST
29489: LIST
29490: LIST
29491: PPUSH
29492: CALL_OW 399
29496: ST_TO_ADDR
// rDef3 := McRegistry ( ai_s [ 3 ] , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , nearC ] , [ mc_reg_area_to_protect , nearC ] ] ) ;
29497: LD_ADDR_LOC 33
29501: PUSH
29502: LD_EXP 23
29506: PUSH
29507: LD_INT 3
29509: ARRAY
29510: PPUSH
29511: LD_INT 1
29513: PUSH
29514: LD_INT 70
29516: PUSH
29517: EMPTY
29518: LIST
29519: LIST
29520: PUSH
29521: LD_INT 2
29523: PUSH
29524: LD_INT 26
29526: PUSH
29527: EMPTY
29528: LIST
29529: LIST
29530: PUSH
29531: LD_INT 3
29533: PUSH
29534: LD_INT 26
29536: PUSH
29537: EMPTY
29538: LIST
29539: LIST
29540: PUSH
29541: EMPTY
29542: LIST
29543: LIST
29544: LIST
29545: PPUSH
29546: CALL_OW 399
29550: ST_TO_ADDR
// rDef4 := McRegistry ( ai_s [ 4 ] , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , nearD ] , [ mc_reg_area_to_protect , nearD ] ] ) ;
29551: LD_ADDR_LOC 34
29555: PUSH
29556: LD_EXP 23
29560: PUSH
29561: LD_INT 4
29563: ARRAY
29564: PPUSH
29565: LD_INT 1
29567: PUSH
29568: LD_INT 70
29570: PUSH
29571: EMPTY
29572: LIST
29573: LIST
29574: PUSH
29575: LD_INT 2
29577: PUSH
29578: LD_INT 27
29580: PUSH
29581: EMPTY
29582: LIST
29583: LIST
29584: PUSH
29585: LD_INT 3
29587: PUSH
29588: LD_INT 27
29590: PUSH
29591: EMPTY
29592: LIST
29593: LIST
29594: PUSH
29595: EMPTY
29596: LIST
29597: LIST
29598: LIST
29599: PPUSH
29600: CALL_OW 399
29604: ST_TO_ADDR
// rDef5 := McRegistry ( ai_s [ 5 ] , [ [ mc_reg_refresh_time , 0 0$2 ] , [ mc_reg_area_to_guard , nearE ] , [ mc_reg_area_to_protect , nearE ] ] ) ;
29605: LD_ADDR_LOC 35
29609: PUSH
29610: LD_EXP 23
29614: PUSH
29615: LD_INT 5
29617: ARRAY
29618: PPUSH
29619: LD_INT 1
29621: PUSH
29622: LD_INT 70
29624: PUSH
29625: EMPTY
29626: LIST
29627: LIST
29628: PUSH
29629: LD_INT 2
29631: PUSH
29632: LD_INT 28
29634: PUSH
29635: EMPTY
29636: LIST
29637: LIST
29638: PUSH
29639: LD_INT 3
29641: PUSH
29642: LD_INT 28
29644: PUSH
29645: EMPTY
29646: LIST
29647: LIST
29648: PUSH
29649: EMPTY
29650: LIST
29651: LIST
29652: LIST
29653: PPUSH
29654: CALL_OW 399
29658: ST_TO_ADDR
// idDef1 := McDefend ( 10 , rDef1 , toDef1 , [ mc_def_advantage , mcdef1_difficulty ] ) ;
29659: LD_ADDR_LOC 36
29663: PUSH
29664: LD_INT 10
29666: PPUSH
29667: LD_LOC 31
29671: PPUSH
29672: LD_EXP 89
29676: PPUSH
29677: LD_INT 1
29679: PUSH
29680: LD_EXP 11
29684: PUSH
29685: EMPTY
29686: LIST
29687: LIST
29688: PPUSH
29689: CALL_OW 401
29693: ST_TO_ADDR
// idDef2 := McDefend ( 10 , rDef2 , toDef2 , [ mc_def_advantage , mcdef2_difficulty ] ) ;
29694: LD_ADDR_LOC 37
29698: PUSH
29699: LD_INT 10
29701: PPUSH
29702: LD_LOC 32
29706: PPUSH
29707: LD_EXP 90
29711: PPUSH
29712: LD_INT 1
29714: PUSH
29715: LD_EXP 12
29719: PUSH
29720: EMPTY
29721: LIST
29722: LIST
29723: PPUSH
29724: CALL_OW 401
29728: ST_TO_ADDR
// idDef3 := McDefend ( 10 , rDef3 , toDef3 , [ mc_def_advantage , mcdef3_difficulty ] ) ;
29729: LD_ADDR_LOC 38
29733: PUSH
29734: LD_INT 10
29736: PPUSH
29737: LD_LOC 33
29741: PPUSH
29742: LD_EXP 91
29746: PPUSH
29747: LD_INT 1
29749: PUSH
29750: LD_EXP 13
29754: PUSH
29755: EMPTY
29756: LIST
29757: LIST
29758: PPUSH
29759: CALL_OW 401
29763: ST_TO_ADDR
// idDef4 := McDefend ( 10 , rDef4 , toDef4 , [ mc_def_advantage , mcdef4_difficulty ] ) ;
29764: LD_ADDR_LOC 39
29768: PUSH
29769: LD_INT 10
29771: PPUSH
29772: LD_LOC 34
29776: PPUSH
29777: LD_EXP 92
29781: PPUSH
29782: LD_INT 1
29784: PUSH
29785: LD_EXP 14
29789: PUSH
29790: EMPTY
29791: LIST
29792: LIST
29793: PPUSH
29794: CALL_OW 401
29798: ST_TO_ADDR
// idDef5 := McDefend ( 10 , rDef5 , toDef5 , [ mc_def_advantage , mcdef5_difficulty ] ) ;
29799: LD_ADDR_LOC 40
29803: PUSH
29804: LD_INT 10
29806: PPUSH
29807: LD_LOC 35
29811: PPUSH
29812: LD_EXP 93
29816: PPUSH
29817: LD_INT 1
29819: PUSH
29820: LD_EXP 15
29824: PUSH
29825: EMPTY
29826: LIST
29827: LIST
29828: PPUSH
29829: CALL_OW 401
29833: ST_TO_ADDR
// end ;
29834: END
// every 0 0$10 do
29835: GO 29837
29837: DISABLE
// begin todef1 := UnitFilter ( humans [ 1 ] , [ mf_sol ] ) ^ vehicles [ 1 ] ^ UnitFilter ( buildings [ 1 ] , [ mf_fort ] ) ;
29838: LD_ADDR_EXP 89
29842: PUSH
29843: LD_EXP 76
29847: PUSH
29848: LD_INT 1
29850: ARRAY
29851: PPUSH
29852: LD_EXP 51
29856: PUSH
29857: EMPTY
29858: LIST
29859: PPUSH
29860: CALL_OW 72
29864: PUSH
29865: LD_EXP 77
29869: PUSH
29870: LD_INT 1
29872: ARRAY
29873: ADD
29874: PUSH
29875: LD_EXP 75
29879: PUSH
29880: LD_INT 1
29882: ARRAY
29883: PPUSH
29884: LD_EXP 56
29888: PUSH
29889: EMPTY
29890: LIST
29891: PPUSH
29892: CALL_OW 72
29896: ADD
29897: ST_TO_ADDR
// todef2 := UnitFilter ( humans [ 2 ] , [ mf_sol ] ) ^ vehicles [ 2 ] ^ UnitFilter ( buildings [ 2 ] , [ mf_fort ] ) ;
29898: LD_ADDR_EXP 90
29902: PUSH
29903: LD_EXP 76
29907: PUSH
29908: LD_INT 2
29910: ARRAY
29911: PPUSH
29912: LD_EXP 51
29916: PUSH
29917: EMPTY
29918: LIST
29919: PPUSH
29920: CALL_OW 72
29924: PUSH
29925: LD_EXP 77
29929: PUSH
29930: LD_INT 2
29932: ARRAY
29933: ADD
29934: PUSH
29935: LD_EXP 75
29939: PUSH
29940: LD_INT 2
29942: ARRAY
29943: PPUSH
29944: LD_EXP 56
29948: PUSH
29949: EMPTY
29950: LIST
29951: PPUSH
29952: CALL_OW 72
29956: ADD
29957: ST_TO_ADDR
// todef3 := UnitFilter ( humans [ 3 ] , [ mf_sol ] ) ^ vehicles [ 3 ] ^ UnitFilter ( buildings [ 3 ] , [ mf_fort ] ) ;
29958: LD_ADDR_EXP 91
29962: PUSH
29963: LD_EXP 76
29967: PUSH
29968: LD_INT 3
29970: ARRAY
29971: PPUSH
29972: LD_EXP 51
29976: PUSH
29977: EMPTY
29978: LIST
29979: PPUSH
29980: CALL_OW 72
29984: PUSH
29985: LD_EXP 77
29989: PUSH
29990: LD_INT 3
29992: ARRAY
29993: ADD
29994: PUSH
29995: LD_EXP 75
29999: PUSH
30000: LD_INT 3
30002: ARRAY
30003: PPUSH
30004: LD_EXP 56
30008: PUSH
30009: EMPTY
30010: LIST
30011: PPUSH
30012: CALL_OW 72
30016: ADD
30017: ST_TO_ADDR
// todef4 := UnitFilter ( humans [ 4 ] , [ mf_sol ] ) ^ vehicles [ 4 ] ^ UnitFilter ( buildings [ 4 ] , [ mf_fort ] ) ;
30018: LD_ADDR_EXP 92
30022: PUSH
30023: LD_EXP 76
30027: PUSH
30028: LD_INT 4
30030: ARRAY
30031: PPUSH
30032: LD_EXP 51
30036: PUSH
30037: EMPTY
30038: LIST
30039: PPUSH
30040: CALL_OW 72
30044: PUSH
30045: LD_EXP 77
30049: PUSH
30050: LD_INT 4
30052: ARRAY
30053: ADD
30054: PUSH
30055: LD_EXP 75
30059: PUSH
30060: LD_INT 4
30062: ARRAY
30063: PPUSH
30064: LD_EXP 56
30068: PUSH
30069: EMPTY
30070: LIST
30071: PPUSH
30072: CALL_OW 72
30076: ADD
30077: ST_TO_ADDR
// todef5 := UnitFilter ( humans [ 5 ] , [ mf_sol ] ) ^ vehicles [ 5 ] ^ UnitFilter ( buildings [ 5 ] , [ mf_fort ] ) ;
30078: LD_ADDR_EXP 93
30082: PUSH
30083: LD_EXP 76
30087: PUSH
30088: LD_INT 5
30090: ARRAY
30091: PPUSH
30092: LD_EXP 51
30096: PUSH
30097: EMPTY
30098: LIST
30099: PPUSH
30100: CALL_OW 72
30104: PUSH
30105: LD_EXP 77
30109: PUSH
30110: LD_INT 5
30112: ARRAY
30113: ADD
30114: PUSH
30115: LD_EXP 75
30119: PUSH
30120: LD_INT 5
30122: ARRAY
30123: PPUSH
30124: LD_EXP 56
30128: PUSH
30129: EMPTY
30130: LIST
30131: PPUSH
30132: CALL_OW 72
30136: ADD
30137: ST_TO_ADDR
// ClearMcUnits ( idDef1 ) ;
30138: LD_LOC 36
30142: PPUSH
30143: CALL_OW 392
// AddMcUnits ( idDef1 , todef1 ) ;
30147: LD_LOC 36
30151: PPUSH
30152: LD_EXP 89
30156: PPUSH
30157: CALL_OW 390
// ClearMcUnits ( idDef2 ) ;
30161: LD_LOC 37
30165: PPUSH
30166: CALL_OW 392
// AddMcUnits ( idDef2 , todef2 ) ;
30170: LD_LOC 37
30174: PPUSH
30175: LD_EXP 90
30179: PPUSH
30180: CALL_OW 390
// ClearMcUnits ( idDef3 ) ;
30184: LD_LOC 38
30188: PPUSH
30189: CALL_OW 392
// AddMcUnits ( idDef3 , todef3 ) ;
30193: LD_LOC 38
30197: PPUSH
30198: LD_EXP 91
30202: PPUSH
30203: CALL_OW 390
// ClearMcUnits ( idDef4 ) ;
30207: LD_LOC 39
30211: PPUSH
30212: CALL_OW 392
// AddMcUnits ( idDef4 , todef4 ) ;
30216: LD_LOC 39
30220: PPUSH
30221: LD_EXP 92
30225: PPUSH
30226: CALL_OW 390
// ClearMcUnits ( idDef5 ) ;
30230: LD_LOC 40
30234: PPUSH
30235: CALL_OW 392
// AddMcUnits ( idDef5 , todef5 ) ;
30239: LD_LOC 40
30243: PPUSH
30244: LD_EXP 93
30248: PPUSH
30249: CALL_OW 390
// enable ;
30253: ENABLE
// end ; end_of_file
30254: END
// export function SurrenderBase ( type , side ) ; var a , cars ; begin
30255: LD_INT 0
30257: PPUSH
30258: PPUSH
30259: PPUSH
// if not ( side in your_bases ) then
30260: LD_VAR 0 2
30264: PUSH
30265: LD_EXP 18
30269: IN
30270: NOT
30271: IFFALSE 30885
// begin SetAttitude ( you , side , att_friend , true ) ;
30273: LD_EXP 7
30277: PPUSH
30278: LD_VAR 0 2
30282: PPUSH
30283: LD_INT 1
30285: PPUSH
30286: LD_INT 1
30288: PPUSH
30289: CALL_OW 80
// case type of t_kill :
30293: LD_VAR 0 1
30297: PUSH
30298: LD_EXP 1
30302: DOUBLE
30303: EQUAL
30304: IFTRUE 30308
30306: GO 30379
30308: POP
// begin if side = ai_s [ 1 ] then
30309: LD_VAR 0 2
30313: PUSH
30314: LD_EXP 23
30318: PUSH
30319: LD_INT 1
30321: ARRAY
30322: EQUAL
30323: IFFALSE 30348
// begin DXbaseSurrender ( side ) ;
30325: LD_VAR 0 2
30329: PPUSH
30330: CALL 7891 0 1
// SurrenderNormal ( true , side ) ;
30334: LD_INT 1
30336: PPUSH
30337: LD_VAR 0 2
30341: PPUSH
30342: CALL 30890 0 2
// end else
30346: GO 30377
// begin diplomacy := false ;
30348: LD_ADDR_EXP 27
30352: PUSH
30353: LD_INT 0
30355: ST_TO_ADDR
// DXbaseSurrender ( side ) ;
30356: LD_VAR 0 2
30360: PPUSH
30361: CALL 7891 0 1
// SurrenderNormal ( true , side ) ;
30365: LD_INT 1
30367: PPUSH
30368: LD_VAR 0 2
30372: PPUSH
30373: CALL 30890 0 2
// end ; end ; t_killbeat :
30377: GO 30717
30379: LD_EXP 6
30383: DOUBLE
30384: EQUAL
30385: IFTRUE 30389
30387: GO 30460
30389: POP
// begin if side = ai_s [ 1 ] then
30390: LD_VAR 0 2
30394: PUSH
30395: LD_EXP 23
30399: PUSH
30400: LD_INT 1
30402: ARRAY
30403: EQUAL
30404: IFFALSE 30429
// begin DXbaseSurrender ( side ) ;
30406: LD_VAR 0 2
30410: PPUSH
30411: CALL 7891 0 1
// SurrenderNormal ( true , side ) ;
30415: LD_INT 1
30417: PPUSH
30418: LD_VAR 0 2
30422: PPUSH
30423: CALL 30890 0 2
// end else
30427: GO 30458
// begin diplomacy := false ;
30429: LD_ADDR_EXP 27
30433: PUSH
30434: LD_INT 0
30436: ST_TO_ADDR
// DXbaseSurrender ( side ) ;
30437: LD_VAR 0 2
30441: PPUSH
30442: CALL 7891 0 1
// SurrenderNormal ( true , side ) ;
30446: LD_INT 1
30448: PPUSH
30449: LD_VAR 0 2
30453: PPUSH
30454: CALL 30890 0 2
// end ; end ; t_intimidate :
30458: GO 30717
30460: LD_EXP 2
30464: DOUBLE
30465: EQUAL
30466: IFTRUE 30470
30468: GO 30524
30470: POP
// begin if side = ai_s [ 2 ] then
30471: LD_VAR 0 2
30475: PUSH
30476: LD_EXP 23
30480: PUSH
30481: LD_INT 2
30483: ARRAY
30484: EQUAL
30485: IFFALSE 30522
// begin DB_BaseAccept ( cap_bases = 0 ) ;
30487: LD_EXP 17
30491: PUSH
30492: LD_INT 0
30494: EQUAL
30495: PPUSH
30496: CALL 4564 0 1
// SurrenderNormal ( cap_bases = 0 , ai_s [ 2 ] ) ;
30500: LD_EXP 17
30504: PUSH
30505: LD_INT 0
30507: EQUAL
30508: PPUSH
30509: LD_EXP 23
30513: PUSH
30514: LD_INT 2
30516: ARRAY
30517: PPUSH
30518: CALL 30890 0 2
// end ; end ; t_persuade :
30522: GO 30717
30524: LD_EXP 3
30528: DOUBLE
30529: EQUAL
30530: IFTRUE 30534
30532: GO 30588
30534: POP
// begin if side = ai_s [ 3 ] then
30535: LD_VAR 0 2
30539: PUSH
30540: LD_EXP 23
30544: PUSH
30545: LD_INT 3
30547: ARRAY
30548: EQUAL
30549: IFFALSE 30586
// begin DQrML_Right ( cap_bases = 0 ) ;
30551: LD_EXP 17
30555: PUSH
30556: LD_INT 0
30558: EQUAL
30559: PPUSH
30560: CALL 6714 0 1
// SurrenderNormal ( cap_bases = 0 , ai_s [ 3 ] ) ;
30564: LD_EXP 17
30568: PUSH
30569: LD_INT 0
30571: EQUAL
30572: PPUSH
30573: LD_EXP 23
30577: PUSH
30578: LD_INT 3
30580: ARRAY
30581: PPUSH
30582: CALL 30890 0 2
// end ; end ; t_pay :
30586: GO 30717
30588: LD_EXP 4
30592: DOUBLE
30593: EQUAL
30594: IFTRUE 30598
30596: GO 30652
30598: POP
// begin if side = ai_s [ 4 ] then
30599: LD_VAR 0 2
30603: PUSH
30604: LD_EXP 23
30608: PUSH
30609: LD_INT 4
30611: ARRAY
30612: EQUAL
30613: IFFALSE 30650
// begin DD_BaseAccept ( cap_bases = 0 ) ;
30615: LD_EXP 17
30619: PUSH
30620: LD_INT 0
30622: EQUAL
30623: PPUSH
30624: CALL 7278 0 1
// SurrenderNormal ( cap_bases = 0 , ai_s [ 4 ] ) ;
30628: LD_EXP 17
30632: PUSH
30633: LD_INT 0
30635: EQUAL
30636: PPUSH
30637: LD_EXP 23
30641: PUSH
30642: LD_INT 4
30644: ARRAY
30645: PPUSH
30646: CALL 30890 0 2
// end ; end ; t_beat :
30650: GO 30717
30652: LD_EXP 5
30656: DOUBLE
30657: EQUAL
30658: IFTRUE 30662
30660: GO 30716
30662: POP
// begin if side = ai_s [ 5 ] then
30663: LD_VAR 0 2
30667: PUSH
30668: LD_EXP 23
30672: PUSH
30673: LD_INT 5
30675: ARRAY
30676: EQUAL
30677: IFFALSE 30714
// begin DE_BaseAccept ( cap_bases = 0 ) ;
30679: LD_EXP 17
30683: PUSH
30684: LD_INT 0
30686: EQUAL
30687: PPUSH
30688: CALL 7831 0 1
// SurrenderNormal ( cap_bases = 0 , ai_s [ 5 ] ) ;
30692: LD_EXP 17
30696: PUSH
30697: LD_INT 0
30699: EQUAL
30700: PPUSH
30701: LD_EXP 23
30705: PUSH
30706: LD_INT 5
30708: ARRAY
30709: PPUSH
30710: CALL 30890 0 2
// end ; end ; end ;
30714: GO 30717
30716: POP
// your_humans := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] ] ) ;
30717: LD_ADDR_EXP 37
30721: PUSH
30722: LD_INT 22
30724: PUSH
30725: LD_EXP 7
30729: PUSH
30730: EMPTY
30731: LIST
30732: LIST
30733: PUSH
30734: LD_INT 21
30736: PUSH
30737: LD_INT 1
30739: PUSH
30740: EMPTY
30741: LIST
30742: LIST
30743: PUSH
30744: EMPTY
30745: LIST
30746: LIST
30747: PPUSH
30748: CALL_OW 69
30752: ST_TO_ADDR
// your_builds := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
30753: LD_ADDR_EXP 36
30757: PUSH
30758: LD_INT 22
30760: PUSH
30761: LD_EXP 7
30765: PUSH
30766: EMPTY
30767: LIST
30768: LIST
30769: PUSH
30770: LD_INT 21
30772: PUSH
30773: LD_INT 3
30775: PUSH
30776: EMPTY
30777: LIST
30778: LIST
30779: PUSH
30780: EMPTY
30781: LIST
30782: LIST
30783: PPUSH
30784: CALL_OW 69
30788: ST_TO_ADDR
// your_cars := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ;
30789: LD_ADDR_EXP 35
30793: PUSH
30794: LD_INT 22
30796: PUSH
30797: LD_EXP 7
30801: PUSH
30802: EMPTY
30803: LIST
30804: LIST
30805: PUSH
30806: LD_INT 21
30808: PUSH
30809: LD_INT 2
30811: PUSH
30812: EMPTY
30813: LIST
30814: LIST
30815: PUSH
30816: EMPTY
30817: LIST
30818: LIST
30819: PPUSH
30820: CALL_OW 69
30824: ST_TO_ADDR
// remove_from_humans ( your_humans ) ;
30825: LD_EXP 37
30829: PPUSH
30830: CALL 27923 0 1
// remove_from_builds ( your_builds ) ;
30834: LD_EXP 36
30838: PPUSH
30839: CALL 27677 0 1
// remove_from_vehicles ( your_cars ) ;
30843: LD_EXP 35
30847: PPUSH
30848: CALL 28161 0 1
// cap_bases := cap_bases + 1 ;
30852: LD_ADDR_EXP 17
30856: PUSH
30857: LD_EXP 17
30861: PUSH
30862: LD_INT 1
30864: PLUS
30865: ST_TO_ADDR
// your_bases := your_bases ^ [ side ] ;
30866: LD_ADDR_EXP 18
30870: PUSH
30871: LD_EXP 18
30875: PUSH
30876: LD_VAR 0 2
30880: PUSH
30881: EMPTY
30882: LIST
30883: ADD
30884: ST_TO_ADDR
// end ; end ;
30885: LD_VAR 0 3
30889: RET
// function SurrenderNormal ( first , side ) ; var yours , take , theirs , i , max , t_sci , t_lab ; begin
30890: LD_INT 0
30892: PPUSH
30893: PPUSH
30894: PPUSH
30895: PPUSH
30896: PPUSH
30897: PPUSH
30898: PPUSH
30899: PPUSH
// yours := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) ;
30900: LD_ADDR_VAR 0 4
30904: PUSH
30905: LD_INT 22
30907: PUSH
30908: LD_EXP 7
30912: PUSH
30913: EMPTY
30914: LIST
30915: LIST
30916: PUSH
30917: LD_INT 21
30919: PUSH
30920: LD_INT 1
30922: PUSH
30923: EMPTY
30924: LIST
30925: LIST
30926: PUSH
30927: LD_INT 23
30929: PUSH
30930: LD_INT 3
30932: PUSH
30933: EMPTY
30934: LIST
30935: LIST
30936: PUSH
30937: EMPTY
30938: LIST
30939: LIST
30940: LIST
30941: PPUSH
30942: CALL_OW 69
30946: ST_TO_ADDR
// theirs := FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] ] ) ;
30947: LD_ADDR_VAR 0 6
30951: PUSH
30952: LD_INT 22
30954: PUSH
30955: LD_VAR 0 2
30959: PUSH
30960: EMPTY
30961: LIST
30962: LIST
30963: PUSH
30964: LD_INT 21
30966: PUSH
30967: LD_INT 1
30969: PUSH
30970: EMPTY
30971: LIST
30972: LIST
30973: PUSH
30974: LD_INT 23
30976: PUSH
30977: LD_INT 3
30979: PUSH
30980: EMPTY
30981: LIST
30982: LIST
30983: PUSH
30984: EMPTY
30985: LIST
30986: LIST
30987: LIST
30988: PPUSH
30989: CALL_OW 69
30993: ST_TO_ADDR
// for i in theirs do
30994: LD_ADDR_VAR 0 7
30998: PUSH
30999: LD_VAR 0 6
31003: PUSH
31004: FOR_IN
31005: IFFALSE 31040
// if GetLives ( i ) < hranice_umirani then
31007: LD_VAR 0 7
31011: PPUSH
31012: CALL_OW 256
31016: PUSH
31017: LD_INT 250
31019: LESS
31020: IFFALSE 31038
// SetLives ( i , hranice_umirani + 50 ) ;
31022: LD_VAR 0 7
31026: PPUSH
31027: LD_INT 250
31029: PUSH
31030: LD_INT 50
31032: PLUS
31033: PPUSH
31034: CALL_OW 234
31038: GO 31004
31040: POP
31041: POP
// InGameOn ;
31042: CALL_OW 8
// while UnitFilter ( theirs , [ [ f_inside ] ] ) diff hlavouni do
31046: LD_VAR 0 6
31050: PPUSH
31051: LD_INT 54
31053: PUSH
31054: EMPTY
31055: LIST
31056: PUSH
31057: EMPTY
31058: LIST
31059: PPUSH
31060: CALL_OW 72
31064: PUSH
31065: LD_EXP 72
31069: DIFF
31070: IFFALSE 31099
// begin ComExitBuilding ( theirs ) ;
31072: LD_VAR 0 6
31076: PPUSH
31077: CALL_OW 122
// AddComExitVehicle ( theirs ) ;
31081: LD_VAR 0 6
31085: PPUSH
31086: CALL_OW 181
// wait ( 0 0$2 ) ;
31090: LD_INT 70
31092: PPUSH
31093: CALL_OW 67
// end ;
31097: GO 31046
// InGameOff ;
31099: CALL_OW 9
// if first then
31103: LD_VAR 0 1
31107: IFFALSE 31773
// begin SetTech ( tech_SibLoc , you , state_researched ) ;
31109: LD_INT 19
31111: PPUSH
31112: LD_EXP 7
31116: PPUSH
31117: LD_INT 2
31119: PPUSH
31120: CALL_OW 322
// ai := ai diff side ;
31124: LD_ADDR_EXP 24
31128: PUSH
31129: LD_EXP 24
31133: PUSH
31134: LD_VAR 0 2
31138: DIFF
31139: ST_TO_ADDR
// case side of ai_s [ 1 ] :
31140: LD_VAR 0 2
31144: PUSH
31145: LD_EXP 23
31149: PUSH
31150: LD_INT 1
31152: ARRAY
31153: DOUBLE
31154: EQUAL
31155: IFTRUE 31159
31157: GO 31221
31159: POP
// begin SetSideBase ( GetBase ( depots [ 1 ] ) , you ) ;
31160: LD_EXP 74
31164: PUSH
31165: LD_INT 1
31167: ARRAY
31168: PPUSH
31169: CALL_OW 274
31173: PPUSH
31174: LD_EXP 7
31178: PPUSH
31179: CALL_OW 236
// SetSide ( humans [ 1 ] , you ) ;
31183: LD_EXP 76
31187: PUSH
31188: LD_INT 1
31190: ARRAY
31191: PPUSH
31192: LD_EXP 7
31196: PPUSH
31197: CALL_OW 235
// SetSide ( vehicles [ 1 ] , you ) ;
31201: LD_EXP 77
31205: PUSH
31206: LD_INT 1
31208: ARRAY
31209: PPUSH
31210: LD_EXP 7
31214: PPUSH
31215: CALL_OW 235
// end ; ai_s [ 2 ] :
31219: GO 31771
31221: LD_EXP 23
31225: PUSH
31226: LD_INT 2
31228: ARRAY
31229: DOUBLE
31230: EQUAL
31231: IFTRUE 31235
31233: GO 31311
31235: POP
// begin SetSideBase ( GetBase ( depots [ 2 ] ) , you ) ;
31236: LD_EXP 74
31240: PUSH
31241: LD_INT 2
31243: ARRAY
31244: PPUSH
31245: CALL_OW 274
31249: PPUSH
31250: LD_EXP 7
31254: PPUSH
31255: CALL_OW 236
// SetSide ( humans [ 2 ] , you ) ;
31259: LD_EXP 76
31263: PUSH
31264: LD_INT 2
31266: ARRAY
31267: PPUSH
31268: LD_EXP 7
31272: PPUSH
31273: CALL_OW 235
// SetSide ( vehicles [ 2 ] , you ) ;
31277: LD_EXP 77
31281: PUSH
31282: LD_INT 2
31284: ARRAY
31285: PPUSH
31286: LD_EXP 7
31290: PPUSH
31291: CALL_OW 235
// SetSide ( Borodin , you ) ;
31295: LD_EXP 46
31299: PPUSH
31300: LD_EXP 7
31304: PPUSH
31305: CALL_OW 235
// end ; ai_s [ 3 ] :
31309: GO 31771
31311: LD_EXP 23
31315: PUSH
31316: LD_INT 3
31318: ARRAY
31319: DOUBLE
31320: EQUAL
31321: IFTRUE 31325
31323: GO 31401
31325: POP
// begin SetSideBase ( GetBase ( depots [ 3 ] ) , you ) ;
31326: LD_EXP 74
31330: PUSH
31331: LD_INT 3
31333: ARRAY
31334: PPUSH
31335: CALL_OW 274
31339: PPUSH
31340: LD_EXP 7
31344: PPUSH
31345: CALL_OW 236
// SetSide ( humans [ 3 ] , you ) ;
31349: LD_EXP 76
31353: PUSH
31354: LD_INT 3
31356: ARRAY
31357: PPUSH
31358: LD_EXP 7
31362: PPUSH
31363: CALL_OW 235
// SetSide ( vehicles [ 3 ] , you ) ;
31367: LD_EXP 77
31371: PUSH
31372: LD_INT 3
31374: ARRAY
31375: PPUSH
31376: LD_EXP 7
31380: PPUSH
31381: CALL_OW 235
// SetSide ( Tsaritsyn , you ) ;
31385: LD_EXP 47
31389: PPUSH
31390: LD_EXP 7
31394: PPUSH
31395: CALL_OW 235
// end ; ai_s [ 4 ] :
31399: GO 31771
31401: LD_EXP 23
31405: PUSH
31406: LD_INT 4
31408: ARRAY
31409: DOUBLE
31410: EQUAL
31411: IFTRUE 31415
31413: GO 31680
31415: POP
// begin t_sci := sci isect humans [ 4 ] ;
31416: LD_ADDR_VAR 0 9
31420: PUSH
31421: LD_EXP 88
31425: PUSH
31426: LD_EXP 76
31430: PUSH
31431: LD_INT 4
31433: ARRAY
31434: ISECT
31435: ST_TO_ADDR
// if t_sci > 3 then
31436: LD_VAR 0 9
31440: PUSH
31441: LD_INT 3
31443: GREATER
31444: IFFALSE 31480
// t_sci := t_sci [ 1 ] ^ t_sci [ 2 ] ^ t_sci [ 3 ] ;
31446: LD_ADDR_VAR 0 9
31450: PUSH
31451: LD_VAR 0 9
31455: PUSH
31456: LD_INT 1
31458: ARRAY
31459: PUSH
31460: LD_VAR 0 9
31464: PUSH
31465: LD_INT 2
31467: ARRAY
31468: ADD
31469: PUSH
31470: LD_VAR 0 9
31474: PUSH
31475: LD_INT 3
31477: ARRAY
31478: ADD
31479: ST_TO_ADDR
// t_lab := UnitFilter ( buildings [ 4 ] , [ mf_lab ] ) ;
31480: LD_ADDR_VAR 0 10
31484: PUSH
31485: LD_EXP 75
31489: PUSH
31490: LD_INT 4
31492: ARRAY
31493: PPUSH
31494: LD_EXP 55
31498: PUSH
31499: EMPTY
31500: LIST
31501: PPUSH
31502: CALL_OW 72
31506: ST_TO_ADDR
// for i in t_lab do
31507: LD_ADDR_VAR 0 7
31511: PUSH
31512: LD_VAR 0 10
31516: PUSH
31517: FOR_IN
31518: IFFALSE 31570
// if GetLabKind ( i , 1 ) = b_lab_spacetime or GetLabKind ( i , 2 ) = b_lab_spacetime then
31520: LD_VAR 0 7
31524: PPUSH
31525: LD_INT 1
31527: PPUSH
31528: CALL_OW 268
31532: PUSH
31533: LD_INT 14
31535: EQUAL
31536: PUSH
31537: LD_VAR 0 7
31541: PPUSH
31542: LD_INT 2
31544: PPUSH
31545: CALL_OW 268
31549: PUSH
31550: LD_INT 14
31552: EQUAL
31553: OR
31554: IFFALSE 31568
// begin t_lab := i ;
31556: LD_ADDR_VAR 0 10
31560: PUSH
31561: LD_VAR 0 7
31565: ST_TO_ADDR
// break ;
31566: GO 31570
// end ;
31568: GO 31517
31570: POP
31571: POP
// SetSideBase ( GetBase ( depots [ 4 ] ) , you ) ;
31572: LD_EXP 74
31576: PUSH
31577: LD_INT 4
31579: ARRAY
31580: PPUSH
31581: CALL_OW 274
31585: PPUSH
31586: LD_EXP 7
31590: PPUSH
31591: CALL_OW 236
// SetSide ( humans [ 4 ] diff t_sci , you ) ;
31595: LD_EXP 76
31599: PUSH
31600: LD_INT 4
31602: ARRAY
31603: PUSH
31604: LD_VAR 0 9
31608: DIFF
31609: PPUSH
31610: LD_EXP 7
31614: PPUSH
31615: CALL_OW 235
// SetSide ( vehicles [ 4 ] , you ) ;
31619: LD_EXP 77
31623: PUSH
31624: LD_INT 4
31626: ARRAY
31627: PPUSH
31628: LD_EXP 7
31632: PPUSH
31633: CALL_OW 235
// SetSide ( t_lab , ai_s [ 4 ] ) ;
31637: LD_VAR 0 10
31641: PPUSH
31642: LD_EXP 23
31646: PUSH
31647: LD_INT 4
31649: ARRAY
31650: PPUSH
31651: CALL_OW 235
// ComEnterUnit ( t_sci ^ [ Davidov ] , t_lab ) ;
31655: LD_VAR 0 9
31659: PUSH
31660: LD_EXP 48
31664: PUSH
31665: EMPTY
31666: LIST
31667: ADD
31668: PPUSH
31669: LD_VAR 0 10
31673: PPUSH
31674: CALL_OW 120
// end ; ai_s [ 5 ] :
31678: GO 31771
31680: LD_EXP 23
31684: PUSH
31685: LD_INT 5
31687: ARRAY
31688: DOUBLE
31689: EQUAL
31690: IFTRUE 31694
31692: GO 31770
31694: POP
// begin SetSideBase ( GetBase ( depots [ 5 ] ) , you ) ;
31695: LD_EXP 74
31699: PUSH
31700: LD_INT 5
31702: ARRAY
31703: PPUSH
31704: CALL_OW 274
31708: PPUSH
31709: LD_EXP 7
31713: PPUSH
31714: CALL_OW 236
// SetSide ( humans [ 5 ] , you ) ;
31718: LD_EXP 76
31722: PUSH
31723: LD_INT 5
31725: ARRAY
31726: PPUSH
31727: LD_EXP 7
31731: PPUSH
31732: CALL_OW 235
// SetSide ( vehicles [ 5 ] , you ) ;
31736: LD_EXP 77
31740: PUSH
31741: LD_INT 5
31743: ARRAY
31744: PPUSH
31745: LD_EXP 7
31749: PPUSH
31750: CALL_OW 235
// SetSide ( Eisenstein , you ) ;
31754: LD_EXP 49
31758: PPUSH
31759: LD_EXP 7
31763: PPUSH
31764: CALL_OW 235
// end ; end ;
31768: GO 31771
31770: POP
// end else
31771: GO 32570
// begin case side of ai_s [ 1 ] :
31773: LD_VAR 0 2
31777: PUSH
31778: LD_EXP 23
31782: PUSH
31783: LD_INT 1
31785: ARRAY
31786: DOUBLE
31787: EQUAL
31788: IFTRUE 31792
31790: GO 31829
31792: POP
// take := humans [ 1 ] ^ buildings [ 1 ] ^ vehicles [ 1 ] ; ai_s [ 2 ] :
31793: LD_ADDR_VAR 0 5
31797: PUSH
31798: LD_EXP 76
31802: PUSH
31803: LD_INT 1
31805: ARRAY
31806: PUSH
31807: LD_EXP 75
31811: PUSH
31812: LD_INT 1
31814: ARRAY
31815: ADD
31816: PUSH
31817: LD_EXP 77
31821: PUSH
31822: LD_INT 1
31824: ARRAY
31825: ADD
31826: ST_TO_ADDR
31827: GO 32570
31829: LD_EXP 23
31833: PUSH
31834: LD_INT 2
31836: ARRAY
31837: DOUBLE
31838: EQUAL
31839: IFTRUE 31843
31841: GO 31995
31843: POP
// begin if humans [ 2 ] < 3 then
31844: LD_EXP 76
31848: PUSH
31849: LD_INT 2
31851: ARRAY
31852: PUSH
31853: LD_INT 3
31855: LESS
31856: IFFALSE 31868
// max := 1 else
31858: LD_ADDR_VAR 0 8
31862: PUSH
31863: LD_INT 1
31865: ST_TO_ADDR
31866: GO 31886
// max := humans [ 2 ] - 2 ;
31868: LD_ADDR_VAR 0 8
31872: PUSH
31873: LD_EXP 76
31877: PUSH
31878: LD_INT 2
31880: ARRAY
31881: PUSH
31882: LD_INT 2
31884: MINUS
31885: ST_TO_ADDR
// if max > 5 then
31886: LD_VAR 0 8
31890: PUSH
31891: LD_INT 5
31893: GREATER
31894: IFFALSE 31904
// max := 5 ;
31896: LD_ADDR_VAR 0 8
31900: PUSH
31901: LD_INT 5
31903: ST_TO_ADDR
// take := CharacterSelection ( B-Base , 1 , max , yours ^ [ sel_not_hired , sel_changeable , sel_dont_change_class ] ^ humans [ 2 ] ^ [ sel_not_changeable ] ^ [ Borodin ] , [ class_soldier , class_mechanic , class_engineer , class_scientistic , class_bazooker ] ) ;
31904: LD_ADDR_VAR 0 5
31908: PUSH
31909: LD_STRING B-Base
31911: PPUSH
31912: LD_INT 1
31914: PPUSH
31915: LD_VAR 0 8
31919: PPUSH
31920: LD_VAR 0 4
31924: PUSH
31925: LD_INT -2
31927: PUSH
31928: LD_INT -3
31930: PUSH
31931: LD_INT -6
31933: PUSH
31934: EMPTY
31935: LIST
31936: LIST
31937: LIST
31938: ADD
31939: PUSH
31940: LD_EXP 76
31944: PUSH
31945: LD_INT 2
31947: ARRAY
31948: ADD
31949: PUSH
31950: LD_INT -4
31952: PUSH
31953: EMPTY
31954: LIST
31955: ADD
31956: PUSH
31957: LD_EXP 46
31961: PUSH
31962: EMPTY
31963: LIST
31964: ADD
31965: PPUSH
31966: LD_INT 1
31968: PUSH
31969: LD_INT 3
31971: PUSH
31972: LD_INT 2
31974: PUSH
31975: LD_INT 4
31977: PUSH
31978: LD_INT 9
31980: PUSH
31981: EMPTY
31982: LIST
31983: LIST
31984: LIST
31985: LIST
31986: LIST
31987: PPUSH
31988: CALL_OW 42
31992: ST_TO_ADDR
// end ; ai_s [ 3 ] :
31993: GO 32570
31995: LD_EXP 23
31999: PUSH
32000: LD_INT 3
32002: ARRAY
32003: DOUBLE
32004: EQUAL
32005: IFTRUE 32009
32007: GO 32161
32009: POP
// begin if humans [ 3 ] < 3 then
32010: LD_EXP 76
32014: PUSH
32015: LD_INT 3
32017: ARRAY
32018: PUSH
32019: LD_INT 3
32021: LESS
32022: IFFALSE 32034
// max := 1 else
32024: LD_ADDR_VAR 0 8
32028: PUSH
32029: LD_INT 1
32031: ST_TO_ADDR
32032: GO 32052
// max := humans [ 3 ] - 2 ;
32034: LD_ADDR_VAR 0 8
32038: PUSH
32039: LD_EXP 76
32043: PUSH
32044: LD_INT 3
32046: ARRAY
32047: PUSH
32048: LD_INT 2
32050: MINUS
32051: ST_TO_ADDR
// if max > 3 then
32052: LD_VAR 0 8
32056: PUSH
32057: LD_INT 3
32059: GREATER
32060: IFFALSE 32070
// max := 3 ;
32062: LD_ADDR_VAR 0 8
32066: PUSH
32067: LD_INT 3
32069: ST_TO_ADDR
// take := CharacterSelection ( C-Base , 1 , max , yours ^ [ sel_not_hired , sel_changeable , sel_dont_change_class ] ^ humans [ 3 ] ^ [ sel_not_changeable ] ^ [ Tsaritsyn ] , [ class_soldier , class_mechanic , class_engineer , class_scientistic , class_bazooker ] ) ;
32070: LD_ADDR_VAR 0 5
32074: PUSH
32075: LD_STRING C-Base
32077: PPUSH
32078: LD_INT 1
32080: PPUSH
32081: LD_VAR 0 8
32085: PPUSH
32086: LD_VAR 0 4
32090: PUSH
32091: LD_INT -2
32093: PUSH
32094: LD_INT -3
32096: PUSH
32097: LD_INT -6
32099: PUSH
32100: EMPTY
32101: LIST
32102: LIST
32103: LIST
32104: ADD
32105: PUSH
32106: LD_EXP 76
32110: PUSH
32111: LD_INT 3
32113: ARRAY
32114: ADD
32115: PUSH
32116: LD_INT -4
32118: PUSH
32119: EMPTY
32120: LIST
32121: ADD
32122: PUSH
32123: LD_EXP 47
32127: PUSH
32128: EMPTY
32129: LIST
32130: ADD
32131: PPUSH
32132: LD_INT 1
32134: PUSH
32135: LD_INT 3
32137: PUSH
32138: LD_INT 2
32140: PUSH
32141: LD_INT 4
32143: PUSH
32144: LD_INT 9
32146: PUSH
32147: EMPTY
32148: LIST
32149: LIST
32150: LIST
32151: LIST
32152: LIST
32153: PPUSH
32154: CALL_OW 42
32158: ST_TO_ADDR
// end ; ai_s [ 4 ] :
32159: GO 32570
32161: LD_EXP 23
32165: PUSH
32166: LD_INT 4
32168: ARRAY
32169: DOUBLE
32170: EQUAL
32171: IFTRUE 32175
32173: GO 32403
32175: POP
// begin if humans [ 4 ] < 3 then
32176: LD_EXP 76
32180: PUSH
32181: LD_INT 4
32183: ARRAY
32184: PUSH
32185: LD_INT 3
32187: LESS
32188: IFFALSE 32200
// max := 1 else
32190: LD_ADDR_VAR 0 8
32194: PUSH
32195: LD_INT 1
32197: ST_TO_ADDR
32198: GO 32218
// max := humans [ 4 ] - 2 ;
32200: LD_ADDR_VAR 0 8
32204: PUSH
32205: LD_EXP 76
32209: PUSH
32210: LD_INT 4
32212: ARRAY
32213: PUSH
32214: LD_INT 2
32216: MINUS
32217: ST_TO_ADDR
// if max > 2 then
32218: LD_VAR 0 8
32222: PUSH
32223: LD_INT 2
32225: GREATER
32226: IFFALSE 32236
// max := 2 ;
32228: LD_ADDR_VAR 0 8
32232: PUSH
32233: LD_INT 2
32235: ST_TO_ADDR
// t_sci := sci isect humans [ 4 ] ;
32236: LD_ADDR_VAR 0 9
32240: PUSH
32241: LD_EXP 88
32245: PUSH
32246: LD_EXP 76
32250: PUSH
32251: LD_INT 4
32253: ARRAY
32254: ISECT
32255: ST_TO_ADDR
// if t_sci > 3 then
32256: LD_VAR 0 9
32260: PUSH
32261: LD_INT 3
32263: GREATER
32264: IFFALSE 32300
// t_sci := t_sci [ 1 ] ^ t_sci [ 2 ] ^ t_sci [ 3 ] ;
32266: LD_ADDR_VAR 0 9
32270: PUSH
32271: LD_VAR 0 9
32275: PUSH
32276: LD_INT 1
32278: ARRAY
32279: PUSH
32280: LD_VAR 0 9
32284: PUSH
32285: LD_INT 2
32287: ARRAY
32288: ADD
32289: PUSH
32290: LD_VAR 0 9
32294: PUSH
32295: LD_INT 3
32297: ARRAY
32298: ADD
32299: ST_TO_ADDR
// take := CharacterSelection ( D-Base , 1 , max , yours ^ [ sel_not_hired , sel_changeable , sel_dont_change_class ] ^ ( humans [ 4 ] diff t_sci ) ^ [ sel_not_changeable ] ^ t_sci ^ [ Davidov ] , [ class_soldier , class_mechanic , class_engineer , class_scientistic , class_bazooker ] ) ;
32300: LD_ADDR_VAR 0 5
32304: PUSH
32305: LD_STRING D-Base
32307: PPUSH
32308: LD_INT 1
32310: PPUSH
32311: LD_VAR 0 8
32315: PPUSH
32316: LD_VAR 0 4
32320: PUSH
32321: LD_INT -2
32323: PUSH
32324: LD_INT -3
32326: PUSH
32327: LD_INT -6
32329: PUSH
32330: EMPTY
32331: LIST
32332: LIST
32333: LIST
32334: ADD
32335: PUSH
32336: LD_EXP 76
32340: PUSH
32341: LD_INT 4
32343: ARRAY
32344: PUSH
32345: LD_VAR 0 9
32349: DIFF
32350: ADD
32351: PUSH
32352: LD_INT -4
32354: PUSH
32355: EMPTY
32356: LIST
32357: ADD
32358: PUSH
32359: LD_VAR 0 9
32363: ADD
32364: PUSH
32365: LD_EXP 48
32369: PUSH
32370: EMPTY
32371: LIST
32372: ADD
32373: PPUSH
32374: LD_INT 1
32376: PUSH
32377: LD_INT 3
32379: PUSH
32380: LD_INT 2
32382: PUSH
32383: LD_INT 4
32385: PUSH
32386: LD_INT 9
32388: PUSH
32389: EMPTY
32390: LIST
32391: LIST
32392: LIST
32393: LIST
32394: LIST
32395: PPUSH
32396: CALL_OW 42
32400: ST_TO_ADDR
// end ; ai_s [ 5 ] :
32401: GO 32570
32403: LD_EXP 23
32407: PUSH
32408: LD_INT 5
32410: ARRAY
32411: DOUBLE
32412: EQUAL
32413: IFTRUE 32417
32415: GO 32569
32417: POP
// begin if humans [ 5 ] < 3 then
32418: LD_EXP 76
32422: PUSH
32423: LD_INT 5
32425: ARRAY
32426: PUSH
32427: LD_INT 3
32429: LESS
32430: IFFALSE 32442
// max := 1 else
32432: LD_ADDR_VAR 0 8
32436: PUSH
32437: LD_INT 1
32439: ST_TO_ADDR
32440: GO 32460
// max := humans [ 5 ] - 2 ;
32442: LD_ADDR_VAR 0 8
32446: PUSH
32447: LD_EXP 76
32451: PUSH
32452: LD_INT 5
32454: ARRAY
32455: PUSH
32456: LD_INT 2
32458: MINUS
32459: ST_TO_ADDR
// if max > 5 then
32460: LD_VAR 0 8
32464: PUSH
32465: LD_INT 5
32467: GREATER
32468: IFFALSE 32478
// max := 5 ;
32470: LD_ADDR_VAR 0 8
32474: PUSH
32475: LD_INT 5
32477: ST_TO_ADDR
// take := CharacterSelection ( E-Base , 1 , max , yours ^ [ sel_not_hired , sel_changeable , sel_dont_change_class ] ^ humans [ 5 ] ^ [ sel_not_changeable ] ^ [ Eisenstein ] , [ class_soldier , class_mechanic , class_engineer , class_scientistic , class_bazooker ] ) ;
32478: LD_ADDR_VAR 0 5
32482: PUSH
32483: LD_STRING E-Base
32485: PPUSH
32486: LD_INT 1
32488: PPUSH
32489: LD_VAR 0 8
32493: PPUSH
32494: LD_VAR 0 4
32498: PUSH
32499: LD_INT -2
32501: PUSH
32502: LD_INT -3
32504: PUSH
32505: LD_INT -6
32507: PUSH
32508: EMPTY
32509: LIST
32510: LIST
32511: LIST
32512: ADD
32513: PUSH
32514: LD_EXP 76
32518: PUSH
32519: LD_INT 5
32521: ARRAY
32522: ADD
32523: PUSH
32524: LD_INT -4
32526: PUSH
32527: EMPTY
32528: LIST
32529: ADD
32530: PUSH
32531: LD_EXP 49
32535: PUSH
32536: EMPTY
32537: LIST
32538: ADD
32539: PPUSH
32540: LD_INT 1
32542: PUSH
32543: LD_INT 3
32545: PUSH
32546: LD_INT 2
32548: PUSH
32549: LD_INT 4
32551: PUSH
32552: LD_INT 9
32554: PUSH
32555: EMPTY
32556: LIST
32557: LIST
32558: LIST
32559: LIST
32560: LIST
32561: PPUSH
32562: CALL_OW 42
32566: ST_TO_ADDR
// end ; end ;
32567: GO 32570
32569: POP
// end ; ComExitVehicle ( take ) ;
32570: LD_VAR 0 5
32574: PPUSH
32575: CALL_OW 121
// AddComExitBuilding ( take ) ;
32579: LD_VAR 0 5
32583: PPUSH
32584: CALL_OW 182
// take := take union FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_control , control_manual ] ] ) ;
32588: LD_ADDR_VAR 0 5
32592: PUSH
32593: LD_VAR 0 5
32597: PUSH
32598: LD_INT 22
32600: PUSH
32601: LD_VAR 0 2
32605: PUSH
32606: EMPTY
32607: LIST
32608: LIST
32609: PUSH
32610: LD_INT 21
32612: PUSH
32613: LD_INT 2
32615: PUSH
32616: EMPTY
32617: LIST
32618: LIST
32619: PUSH
32620: LD_INT 33
32622: PUSH
32623: LD_INT 1
32625: PUSH
32626: EMPTY
32627: LIST
32628: LIST
32629: PUSH
32630: EMPTY
32631: LIST
32632: LIST
32633: LIST
32634: PPUSH
32635: CALL_OW 69
32639: UNION
32640: ST_TO_ADDR
// SetSide ( take , you ) ;
32641: LD_VAR 0 5
32645: PPUSH
32646: LD_EXP 7
32650: PPUSH
32651: CALL_OW 235
// end ;
32655: LD_VAR 0 3
32659: RET
