// export vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , richard , alice , talin , kvantovy , platonov , Mikhail ; export zachranenaArabka , maAuto , hackingPerformed , buildtalk2 , stopBlueAI , arStartUnitCount ; export you , purple , arab , amik , cyan , editor , hrajeme ; export arab_attack_list , purple_attack_list , amik_attack_list , wasRichardDialog , wasDialogOMiste , startAttackCountdown , videlNepritele , potrebovalMaterial , arabiPlatonovKontaktovan , nasralAraba ; export ar_bocni_baza_captured ; starting begin if not IsEditor then
   0: LD_OWVAR 84
   4: NOT
   5: IFFALSE 15
// editor = 0 ;
   7: LD_ADDR_EXP 26
  11: PUSH
  12: LD_INT 0
  14: ST_TO_ADDR
// ResetFog ;
  15: CALL_OW 335
// RandomizeAll ;
  19: CALL_OW 11
// InGameOff ;
  23: CALL_OW 9
// RemoveCargo ;
  27: CALL 31147 0 0
// Interface_hidden = true ;
  31: LD_ADDR_OWVAR 54
  35: PUSH
  36: LD_INT 1
  38: ST_TO_ADDR
// enable_death_losts = false ;
  39: LD_ADDR_EXP 39
  43: PUSH
  44: LD_INT 0
  46: ST_TO_ADDR
// OstatniInity ( ) ;
  47: CALL 1903 0 0
// LoadSave ( ) ;
  51: CALL 3125 0 0
// SetCargoInit ;
  55: CALL 2163 0 0
// CenterNowOnXY ( 32 , 44 ) ;
  59: LD_INT 32
  61: PPUSH
  62: LD_INT 44
  64: PPUSH
  65: CALL_OW 86
// end ;
  69: END
// every 0 0$0.5 do
  70: GO 72
  72: DISABLE
// begin Priroda ;
  73: CALL 13528 0 0
// Obtiznost ;
  77: CALL 13941 0 0
// NaplnVsechnyBudovyLidma ;
  81: CALL 4072 0 0
// BLevely ;
  85: CALL 3809 0 0
// ArrayInity ( ) ;
  89: CALL 2351 0 0
// VyberLidi ;
  93: CALL 98 0 0
// end ;
  97: END
// function VyberLidi ; var i , un , tmp , units , lidi ; var na_vyber , selekce , dalsi_lidi ; begin
  98: LD_INT 0
 100: PPUSH
 101: PPUSH
 102: PPUSH
 103: PPUSH
 104: PPUSH
 105: PPUSH
 106: PPUSH
 107: PPUSH
 108: PPUSH
// if not editor then
 109: LD_EXP 26
 113: NOT
 114: IFFALSE 592
// begin selekce := [ ] ;
 116: LD_ADDR_VAR 0 8
 120: PUSH
 121: EMPTY
 122: ST_TO_ADDR
// dalsi_lidi = [ ] ;
 123: LD_ADDR_VAR 0 9
 127: PUSH
 128: EMPTY
 129: ST_TO_ADDR
// na_vyber = 18 ;
 130: LD_ADDR_VAR 0 7
 134: PUSH
 135: LD_INT 18
 137: ST_TO_ADDR
// for i in [ gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , Mikhail ] do
 138: LD_ADDR_VAR 0 2
 142: PUSH
 143: LD_EXP 2
 147: PUSH
 148: LD_EXP 3
 152: PUSH
 153: LD_EXP 4
 157: PUSH
 158: LD_EXP 5
 162: PUSH
 163: LD_EXP 6
 167: PUSH
 168: LD_EXP 7
 172: PUSH
 173: LD_EXP 8
 177: PUSH
 178: LD_EXP 12
 182: PUSH
 183: LD_EXP 14
 187: PUSH
 188: EMPTY
 189: LIST
 190: LIST
 191: LIST
 192: LIST
 193: LIST
 194: LIST
 195: LIST
 196: LIST
 197: LIST
 198: PUSH
 199: FOR_IN
 200: IFFALSE 220
// selekce := selekce ^ i ;
 202: LD_ADDR_VAR 0 8
 206: PUSH
 207: LD_VAR 0 8
 211: PUSH
 212: LD_VAR 0 2
 216: ADD
 217: ST_TO_ADDR
 218: GO 199
 220: POP
 221: POP
// tmp = 4 ;
 222: LD_ADDR_VAR 0 4
 226: PUSH
 227: LD_INT 4
 229: ST_TO_ADDR
// for i = 1 to na_vyber - selekce + 0 do
 230: LD_ADDR_VAR 0 2
 234: PUSH
 235: DOUBLE
 236: LD_INT 1
 238: DEC
 239: ST_TO_ADDR
 240: LD_VAR 0 7
 244: PUSH
 245: LD_VAR 0 8
 249: MINUS
 250: PUSH
 251: LD_INT 0
 253: PLUS
 254: PUSH
 255: FOR_TO
 256: IFFALSE 337
// begin un = VytvorCloveka ( tmp , 5 , 6 , nation_russian , You ) ;
 258: LD_ADDR_VAR 0 3
 262: PUSH
 263: LD_VAR 0 4
 267: PPUSH
 268: LD_INT 5
 270: PPUSH
 271: LD_INT 6
 273: PPUSH
 274: LD_INT 3
 276: PPUSH
 277: LD_EXP 21
 281: PPUSH
 282: CALL 2566 0 5
 286: ST_TO_ADDR
// dalsi_lidi := dalsi_lidi ^ un ;
 287: LD_ADDR_VAR 0 9
 291: PUSH
 292: LD_VAR 0 9
 296: PUSH
 297: LD_VAR 0 3
 301: ADD
 302: ST_TO_ADDR
// tmp = tmp - 1 ;
 303: LD_ADDR_VAR 0 4
 307: PUSH
 308: LD_VAR 0 4
 312: PUSH
 313: LD_INT 1
 315: MINUS
 316: ST_TO_ADDR
// if tmp = 0 then
 317: LD_VAR 0 4
 321: PUSH
 322: LD_INT 0
 324: EQUAL
 325: IFFALSE 335
// tmp = 4 ;
 327: LD_ADDR_VAR 0 4
 331: PUSH
 332: LD_INT 4
 334: ST_TO_ADDR
// end ;
 335: GO 255
 337: POP
 338: POP
// Wait ( 0 0$0.2 ) ;
 339: LD_INT 7
 341: PPUSH
 342: CALL_OW 67
// units := [ sel_change_class , Vsevolod , sel_changeable , sel_hired ] ^ [ sel_not_hired , sel_not_changeable , sel_dont_change_class , Platonov ] ^ [ sel_not_hired , sel_changeable , sel_change_class ] ^ selekce ^ dalsi_lidi ;
 346: LD_ADDR_VAR 0 5
 350: PUSH
 351: LD_INT -5
 353: PUSH
 354: LD_EXP 1
 358: PUSH
 359: LD_INT -3
 361: PUSH
 362: LD_INT -1
 364: PUSH
 365: EMPTY
 366: LIST
 367: LIST
 368: LIST
 369: LIST
 370: PUSH
 371: LD_INT -2
 373: PUSH
 374: LD_INT -4
 376: PUSH
 377: LD_INT -6
 379: PUSH
 380: LD_EXP 13
 384: PUSH
 385: EMPTY
 386: LIST
 387: LIST
 388: LIST
 389: LIST
 390: ADD
 391: PUSH
 392: LD_INT -2
 394: PUSH
 395: LD_INT -3
 397: PUSH
 398: LD_INT -5
 400: PUSH
 401: EMPTY
 402: LIST
 403: LIST
 404: LIST
 405: ADD
 406: PUSH
 407: LD_VAR 0 8
 411: ADD
 412: PUSH
 413: LD_VAR 0 9
 417: ADD
 418: ST_TO_ADDR
// lidi := CharacterSelection ( 1 , 10 , 10 , units , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , [ class_scientistic , 1 ] ] ) ;
 419: LD_ADDR_VAR 0 6
 423: PUSH
 424: LD_STRING 1
 426: PPUSH
 427: LD_INT 10
 429: PPUSH
 430: LD_INT 10
 432: PPUSH
 433: LD_VAR 0 5
 437: PPUSH
 438: LD_INT 1
 440: PUSH
 441: LD_INT 2
 443: PUSH
 444: LD_INT 1
 446: PUSH
 447: EMPTY
 448: LIST
 449: LIST
 450: PUSH
 451: LD_INT 3
 453: PUSH
 454: LD_INT 4
 456: PUSH
 457: LD_INT 1
 459: PUSH
 460: EMPTY
 461: LIST
 462: LIST
 463: PUSH
 464: EMPTY
 465: LIST
 466: LIST
 467: LIST
 468: LIST
 469: PPUSH
 470: CALL_OW 42
 474: ST_TO_ADDR
// Wait ( 0 0$0.5 ) ;
 475: LD_INT 18
 477: PPUSH
 478: CALL_OW 67
// i = UnitFilter ( lidi , [ [ f_side , You ] , [ f_class , class_mechanic ] ] ) ;
 482: LD_ADDR_VAR 0 2
 486: PUSH
 487: LD_VAR 0 6
 491: PPUSH
 492: LD_INT 22
 494: PUSH
 495: LD_EXP 21
 499: PUSH
 500: EMPTY
 501: LIST
 502: LIST
 503: PUSH
 504: LD_INT 25
 506: PUSH
 507: LD_INT 3
 509: PUSH
 510: EMPTY
 511: LIST
 512: LIST
 513: PUSH
 514: EMPTY
 515: LIST
 516: LIST
 517: PPUSH
 518: CALL_OW 72
 522: ST_TO_ADDR
// if not i then
 523: LD_VAR 0 2
 527: NOT
 528: IFFALSE 542
// i = Vsevolod else
 530: LD_ADDR_VAR 0 2
 534: PUSH
 535: LD_EXP 1
 539: ST_TO_ADDR
 540: GO 556
// i = i [ 1 ] ;
 542: LD_ADDR_VAR 0 2
 546: PUSH
 547: LD_VAR 0 2
 551: PUSH
 552: LD_INT 1
 554: ARRAY
 555: ST_TO_ADDR
// if i <> Vsevolod then
 556: LD_VAR 0 2
 560: PUSH
 561: LD_EXP 1
 565: NONEQUAL
 566: IFFALSE 583
// PlaceUnitArea ( Vsevolod , Start , false ) ;
 568: LD_EXP 1
 572: PPUSH
 573: LD_INT 7
 575: PPUSH
 576: LD_INT 0
 578: PPUSH
 579: CALL_OW 49
// Wait ( 0 0$0.5 ) ;
 583: LD_INT 18
 585: PPUSH
 586: CALL_OW 67
// end else
 590: GO 688
// begin lidi = [ gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail , VytvorCloveka ( 3 , 5 , 6 , nation_russian , You ) ] ;
 592: LD_ADDR_VAR 0 6
 596: PUSH
 597: LD_EXP 2
 601: PUSH
 602: LD_EXP 3
 606: PUSH
 607: LD_EXP 4
 611: PUSH
 612: LD_EXP 5
 616: PUSH
 617: LD_EXP 6
 621: PUSH
 622: LD_EXP 7
 626: PUSH
 627: LD_EXP 8
 631: PUSH
 632: LD_EXP 12
 636: PUSH
 637: LD_EXP 14
 641: PUSH
 642: LD_INT 3
 644: PPUSH
 645: LD_INT 5
 647: PPUSH
 648: LD_INT 6
 650: PPUSH
 651: LD_INT 3
 653: PPUSH
 654: LD_EXP 21
 658: PPUSH
 659: CALL 2566 0 5
 663: PUSH
 664: EMPTY
 665: LIST
 666: LIST
 667: LIST
 668: LIST
 669: LIST
 670: LIST
 671: LIST
 672: LIST
 673: LIST
 674: LIST
 675: ST_TO_ADDR
// PlaceHumanInUnit ( vsevolod , nakladacik ) ;
 676: LD_EXP 1
 680: PPUSH
 681: LD_INT 75
 683: PPUSH
 684: CALL_OW 52
// end ; PlaceUnitArea ( i , Start , false ) ;
 688: LD_VAR 0 2
 692: PPUSH
 693: LD_INT 7
 695: PPUSH
 696: LD_INT 0
 698: PPUSH
 699: CALL_OW 49
// Wait ( 0 0$0.3 ) ;
 703: LD_INT 10
 705: PPUSH
 706: CALL_OW 67
// RemoveUnit ( i ) ;
 710: LD_VAR 0 2
 714: PPUSH
 715: CALL_OW 64
// Wait ( 0 0$0.3 ) ;
 719: LD_INT 10
 721: PPUSH
 722: CALL_OW 67
// PlaceHumanInUnit ( i , nakladacik ) ;
 726: LD_VAR 0 2
 730: PPUSH
 731: LD_INT 75
 733: PPUSH
 734: CALL_OW 52
// lidi = lidi diff i ;
 738: LD_ADDR_VAR 0 6
 742: PUSH
 743: LD_VAR 0 6
 747: PUSH
 748: LD_VAR 0 2
 752: DIFF
 753: ST_TO_ADDR
// Wait ( 0 0$0.2 ) ;
 754: LD_INT 7
 756: PPUSH
 757: CALL_OW 67
// for un in lidi do
 761: LD_ADDR_VAR 0 3
 765: PUSH
 766: LD_VAR 0 6
 770: PUSH
 771: FOR_IN
 772: IFFALSE 803
// begin PlaceUnitArea ( un , Start , false ) ;
 774: LD_VAR 0 3
 778: PPUSH
 779: LD_INT 7
 781: PPUSH
 782: LD_INT 0
 784: PPUSH
 785: CALL_OW 49
// SetDir ( un , 1 ) ;
 789: LD_VAR 0 3
 793: PPUSH
 794: LD_INT 1
 796: PPUSH
 797: CALL_OW 233
// end ;
 801: GO 771
 803: POP
 804: POP
// your_side = You ;
 805: LD_ADDR_OWVAR 2
 809: PUSH
 810: LD_EXP 21
 814: ST_TO_ADDR
// ChangeSideFog ( You , You ) ;
 815: LD_EXP 21
 819: PPUSH
 820: LD_EXP 21
 824: PPUSH
 825: CALL_OW 343
// IngameOff ;
 829: CALL_OW 9
// Hrajeme = 1 ;
 833: LD_ADDR_EXP 27
 837: PUSH
 838: LD_INT 1
 840: ST_TO_ADDR
// tick = 0 ;
 841: LD_ADDR_OWVAR 1
 845: PUSH
 846: LD_INT 0
 848: ST_TO_ADDR
// DialogueOn ;
 849: CALL_OW 6
// SayRadio ( platonov , D2plat-1 ) ;
 853: LD_EXP 13
 857: PPUSH
 858: LD_STRING D2plat-1
 860: PPUSH
 861: CALL_OW 94
// DialogueOff ;
 865: CALL_OW 7
// Wait ( 0 0$0.2 ) ;
 869: LD_INT 7
 871: PPUSH
 872: CALL_OW 67
// ChangeMissionObjectives ( M01 ) ;
 876: LD_STRING M01
 878: PPUSH
 879: CALL_OW 337
// Wait ( 0 0$0.2 ) ;
 883: LD_INT 7
 885: PPUSH
 886: CALL_OW 67
// SaveForQuickRestart ;
 890: CALL_OW 22
// Say ( vsevolod , D2vse-0 ) ;
 894: LD_EXP 1
 898: PPUSH
 899: LD_STRING D2vse-0
 901: PPUSH
 902: CALL_OW 88
// end ;
 906: LD_VAR 0 1
 910: RET
// export enable_death_losts ; every 0 0$5 do
 911: GO 913
 913: DISABLE
// enable_death_losts = true ;
 914: LD_ADDR_EXP 39
 918: PUSH
 919: LD_INT 1
 921: ST_TO_ADDR
 922: END
// every 0 0$1.4 trigger enable_death_losts do
 923: LD_EXP 39
 927: IFFALSE 951
 929: GO 931
 931: DISABLE
// begin if IsDead ( vsevolod ) then
 932: LD_EXP 1
 936: PPUSH
 937: CALL_OW 301
 941: IFFALSE 950
// YouLost ( sevidead ) ;
 943: LD_STRING sevidead
 945: PPUSH
 946: CALL_OW 104
// enable ;
 950: ENABLE
// end ;
 951: END
// every 0 0$2 do
 952: GO 954
 954: DISABLE
// begin if SideDead ( amik ) and SideDead ( purple ) and ( GetAttitude ( you , arab ) = att_friend or SideDead ( arab ) ) then
 955: LD_EXP 24
 959: PPUSH
 960: CALL 2293 0 1
 964: PUSH
 965: LD_EXP 22
 969: PPUSH
 970: CALL 2293 0 1
 974: AND
 975: PUSH
 976: LD_EXP 21
 980: PPUSH
 981: LD_EXP 23
 985: PPUSH
 986: CALL_OW 81
 990: PUSH
 991: LD_INT 1
 993: EQUAL
 994: PUSH
 995: LD_EXP 23
 999: PPUSH
1000: CALL 2293 0 1
1004: OR
1005: AND
1006: IFFALSE 1014
// begin KonecMise ;
1008: CALL 1016 0 0
// end else
1012: GO 1015
// enable ;
1014: ENABLE
// end ;
1015: END
// export function KonecMise ; var i , k , lidi ; begin
1016: LD_INT 0
1018: PPUSH
1019: PPUSH
1020: PPUSH
1021: PPUSH
// ChangeMissionObjectives ( M06 ) ;
1022: LD_STRING M06
1024: PPUSH
1025: CALL_OW 337
// if IsOk ( gnevko ) and IsPlaced ( gnevko ) then
1029: LD_EXP 2
1033: PPUSH
1034: CALL_OW 302
1038: PUSH
1039: LD_EXP 2
1043: PPUSH
1044: CALL_OW 305
1048: AND
1049: IFFALSE 1065
// Say ( gnevko , D2gne-1 ) else
1051: LD_EXP 2
1055: PPUSH
1056: LD_STRING D2gne-1
1058: PPUSH
1059: CALL_OW 88
1063: GO 1077
// Say ( NajdiVojaka , D2gne-1 ) ;
1065: CALL 12452 0 0
1069: PPUSH
1070: LD_STRING D2gne-1
1072: PPUSH
1073: CALL_OW 88
// Say ( vsevolod , D2vse-16 ) ;
1077: LD_EXP 1
1081: PPUSH
1082: LD_STRING D2vse-16
1084: PPUSH
1085: CALL_OW 88
// DisableExclamations ;
1089: CALL_OW 474
// lidi = FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] , [ f_placed ] ] ) + 0 ;
1093: LD_ADDR_VAR 0 4
1097: PUSH
1098: LD_INT 22
1100: PUSH
1101: LD_EXP 21
1105: PUSH
1106: EMPTY
1107: LIST
1108: LIST
1109: PUSH
1110: LD_INT 21
1112: PUSH
1113: LD_INT 1
1115: PUSH
1116: EMPTY
1117: LIST
1118: LIST
1119: PUSH
1120: LD_INT 23
1122: PUSH
1123: LD_INT 3
1125: PUSH
1126: EMPTY
1127: LIST
1128: LIST
1129: PUSH
1130: LD_INT 52
1132: PUSH
1133: EMPTY
1134: LIST
1135: PUSH
1136: EMPTY
1137: LIST
1138: LIST
1139: LIST
1140: LIST
1141: PPUSH
1142: CALL_OW 69
1146: PUSH
1147: LD_INT 0
1149: PLUS
1150: ST_TO_ADDR
// if hackingPerformed then
1151: LD_EXP 17
1155: IFFALSE 1169
// AddMedal ( medal , 1 ) else
1157: LD_STRING medal
1159: PPUSH
1160: LD_INT 1
1162: PPUSH
1163: CALL_OW 101
1167: GO 1199
// if researchtalk then
1169: LD_EXP 82
1173: IFFALSE 1188
// AddMedal ( medal , - 1 ) else
1175: LD_STRING medal
1177: PPUSH
1178: LD_INT 1
1180: NEG
1181: PPUSH
1182: CALL_OW 101
1186: GO 1199
// AddMedal ( medal , - 2 ) ;
1188: LD_STRING medal
1190: PPUSH
1191: LD_INT 2
1193: NEG
1194: PPUSH
1195: CALL_OW 101
// if wasBehemotBuildTalk then
1199: LD_EXP 84
1203: IFFALSE 1217
// AddMedal ( medal2 , 1 ) else
1205: LD_STRING medal2
1207: PPUSH
1208: LD_INT 1
1210: PPUSH
1211: CALL_OW 101
1215: GO 1228
// AddMedal ( medal2 , - 1 ) ;
1217: LD_STRING medal2
1219: PPUSH
1220: LD_INT 1
1222: NEG
1223: PPUSH
1224: CALL_OW 101
// if not potrebovalMaterial then
1228: LD_EXP 35
1232: NOT
1233: IFFALSE 1247
// AddMedal ( medal3 , 1 ) else
1235: LD_STRING medal3
1237: PPUSH
1238: LD_INT 1
1240: PPUSH
1241: CALL_OW 101
1245: GO 1258
// AddMedal ( medal3 , - 1 ) ;
1247: LD_STRING medal3
1249: PPUSH
1250: LD_INT 1
1252: NEG
1253: PPUSH
1254: CALL_OW 101
// GiveMedals ( Main ) ;
1258: LD_STRING Main
1260: PPUSH
1261: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] , [ f_nation , nation_russian ] , [ f_placed ] ] ) ) ;
1265: LD_INT 22
1267: PUSH
1268: LD_EXP 21
1272: PUSH
1273: EMPTY
1274: LIST
1275: LIST
1276: PUSH
1277: LD_INT 21
1279: PUSH
1280: LD_INT 1
1282: PUSH
1283: EMPTY
1284: LIST
1285: LIST
1286: PUSH
1287: LD_INT 23
1289: PUSH
1290: LD_INT 3
1292: PUSH
1293: EMPTY
1294: LIST
1295: LIST
1296: PUSH
1297: LD_INT 52
1299: PUSH
1300: EMPTY
1301: LIST
1302: PUSH
1303: EMPTY
1304: LIST
1305: LIST
1306: LIST
1307: LIST
1308: PPUSH
1309: CALL_OW 69
1313: PPUSH
1314: CALL_OW 43
// SaveCharacters ( vsevolod , Vsevolod ) ;
1318: LD_EXP 1
1322: PPUSH
1323: LD_STRING Vsevolod
1325: PPUSH
1326: CALL_OW 38
// SaveCharacters ( talin , Talin ) ;
1330: LD_EXP 11
1334: PPUSH
1335: LD_STRING Talin
1337: PPUSH
1338: CALL_OW 38
// SaveCharacters ( gnevko , Gnyevko ) ;
1342: LD_EXP 2
1346: PPUSH
1347: LD_STRING Gnyevko
1349: PPUSH
1350: CALL_OW 38
// SaveCharacters ( petrovova , Petrovova ) ;
1354: LD_EXP 3
1358: PPUSH
1359: LD_STRING Petrovova
1361: PPUSH
1362: CALL_OW 38
// SaveCharacters ( dolgov , Dolgov ) ;
1366: LD_EXP 4
1370: PPUSH
1371: LD_STRING Dolgov
1373: PPUSH
1374: CALL_OW 38
// SaveCharacters ( karamazov , Karamazov ) ;
1378: LD_EXP 5
1382: PPUSH
1383: LD_STRING Karamazov
1385: PPUSH
1386: CALL_OW 38
// SaveCharacters ( titov , Titov ) ;
1390: LD_EXP 6
1394: PPUSH
1395: LD_STRING Titov
1397: PPUSH
1398: CALL_OW 38
// SaveCharacters ( kozlov , Kozlov ) ;
1402: LD_EXP 7
1406: PPUSH
1407: LD_STRING Kozlov
1409: PPUSH
1410: CALL_OW 38
// SaveCharacters ( kapitsova , Kapitsova ) ;
1414: LD_EXP 8
1418: PPUSH
1419: LD_STRING Kapitsova
1421: PPUSH
1422: CALL_OW 38
// SaveCharacters ( alice , Alice ) ;
1426: LD_EXP 10
1430: PPUSH
1431: LD_STRING Alice
1433: PPUSH
1434: CALL_OW 38
// SaveCharacters ( richard , Richard ) ;
1438: LD_EXP 9
1442: PPUSH
1443: LD_STRING Richard
1445: PPUSH
1446: CALL_OW 38
// SaveCharacters ( kvantovy , Kvantovy ) ;
1450: LD_EXP 12
1454: PPUSH
1455: LD_STRING Kvantovy
1457: PPUSH
1458: CALL_OW 38
// SaveCharacters ( mikhail , Mikhail ) ;
1462: LD_EXP 14
1466: PPUSH
1467: LD_STRING Mikhail
1469: PPUSH
1470: CALL_OW 38
// if vsevolod then
1474: LD_EXP 1
1478: IFFALSE 1492
// SaveVariable ( 1 , VsevolodZiv ) else
1480: LD_INT 1
1482: PPUSH
1483: LD_STRING VsevolodZiv
1485: PPUSH
1486: CALL_OW 39
1490: GO 1502
// SaveVariable ( 0 , VsevolodZiv ) ;
1492: LD_INT 0
1494: PPUSH
1495: LD_STRING VsevolodZiv
1497: PPUSH
1498: CALL_OW 39
// if talin then
1502: LD_EXP 11
1506: IFFALSE 1520
// SaveVariable ( 1 , TalinZiv ) else
1508: LD_INT 1
1510: PPUSH
1511: LD_STRING TalinZiv
1513: PPUSH
1514: CALL_OW 39
1518: GO 1530
// SaveVariable ( 0 , TalinZiv ) ;
1520: LD_INT 0
1522: PPUSH
1523: LD_STRING TalinZiv
1525: PPUSH
1526: CALL_OW 39
// if gnevko then
1530: LD_EXP 2
1534: IFFALSE 1548
// SaveVariable ( 1 , GnyevkoZiv ) else
1536: LD_INT 1
1538: PPUSH
1539: LD_STRING GnyevkoZiv
1541: PPUSH
1542: CALL_OW 39
1546: GO 1558
// SaveVariable ( 0 , GnyevkoZiv ) ;
1548: LD_INT 0
1550: PPUSH
1551: LD_STRING GnyevkoZiv
1553: PPUSH
1554: CALL_OW 39
// if petrovova then
1558: LD_EXP 3
1562: IFFALSE 1576
// SaveVariable ( 1 , PetrovovaZiv ) else
1564: LD_INT 1
1566: PPUSH
1567: LD_STRING PetrovovaZiv
1569: PPUSH
1570: CALL_OW 39
1574: GO 1586
// SaveVariable ( 0 , PetrovovaZiv ) ;
1576: LD_INT 0
1578: PPUSH
1579: LD_STRING PetrovovaZiv
1581: PPUSH
1582: CALL_OW 39
// if dolgov then
1586: LD_EXP 4
1590: IFFALSE 1604
// SaveVariable ( 1 , DolgovZiv ) else
1592: LD_INT 1
1594: PPUSH
1595: LD_STRING DolgovZiv
1597: PPUSH
1598: CALL_OW 39
1602: GO 1614
// SaveVariable ( 0 , DolgovZiv ) ;
1604: LD_INT 0
1606: PPUSH
1607: LD_STRING DolgovZiv
1609: PPUSH
1610: CALL_OW 39
// if karamazov then
1614: LD_EXP 5
1618: IFFALSE 1632
// SaveVariable ( 1 , KaramazovZiv ) else
1620: LD_INT 1
1622: PPUSH
1623: LD_STRING KaramazovZiv
1625: PPUSH
1626: CALL_OW 39
1630: GO 1642
// SaveVariable ( 0 , KaramazovZiv ) ;
1632: LD_INT 0
1634: PPUSH
1635: LD_STRING KaramazovZiv
1637: PPUSH
1638: CALL_OW 39
// if titov then
1642: LD_EXP 6
1646: IFFALSE 1660
// SaveVariable ( 1 , TitovZiv ) else
1648: LD_INT 1
1650: PPUSH
1651: LD_STRING TitovZiv
1653: PPUSH
1654: CALL_OW 39
1658: GO 1670
// SaveVariable ( 0 , TitovZiv ) ;
1660: LD_INT 0
1662: PPUSH
1663: LD_STRING TitovZiv
1665: PPUSH
1666: CALL_OW 39
// if kozlov then
1670: LD_EXP 7
1674: IFFALSE 1688
// SaveVariable ( 1 , KozlovZiv ) else
1676: LD_INT 1
1678: PPUSH
1679: LD_STRING KozlovZiv
1681: PPUSH
1682: CALL_OW 39
1686: GO 1698
// SaveVariable ( 0 , KozlovZiv ) ;
1688: LD_INT 0
1690: PPUSH
1691: LD_STRING KozlovZiv
1693: PPUSH
1694: CALL_OW 39
// if kapitsova then
1698: LD_EXP 8
1702: IFFALSE 1716
// SaveVariable ( 1 , KapitsovaZiv ) else
1704: LD_INT 1
1706: PPUSH
1707: LD_STRING KapitsovaZiv
1709: PPUSH
1710: CALL_OW 39
1714: GO 1726
// SaveVariable ( 0 , KapitsovaZiv ) ;
1716: LD_INT 0
1718: PPUSH
1719: LD_STRING KapitsovaZiv
1721: PPUSH
1722: CALL_OW 39
// if alice then
1726: LD_EXP 10
1730: IFFALSE 1744
// SaveVariable ( 1 , AliceZiv ) else
1732: LD_INT 1
1734: PPUSH
1735: LD_STRING AliceZiv
1737: PPUSH
1738: CALL_OW 39
1742: GO 1754
// SaveVariable ( 0 , AliceZiv ) ;
1744: LD_INT 0
1746: PPUSH
1747: LD_STRING AliceZiv
1749: PPUSH
1750: CALL_OW 39
// if richard then
1754: LD_EXP 9
1758: IFFALSE 1772
// SaveVariable ( 1 , RichardZiv ) else
1760: LD_INT 1
1762: PPUSH
1763: LD_STRING RichardZiv
1765: PPUSH
1766: CALL_OW 39
1770: GO 1782
// SaveVariable ( 0 , RichardZiv ) ;
1772: LD_INT 0
1774: PPUSH
1775: LD_STRING RichardZiv
1777: PPUSH
1778: CALL_OW 39
// if kvantovy then
1782: LD_EXP 12
1786: IFFALSE 1800
// SaveVariable ( 1 , KvantovyZiv ) else
1788: LD_INT 1
1790: PPUSH
1791: LD_STRING KvantovyZiv
1793: PPUSH
1794: CALL_OW 39
1798: GO 1810
// SaveVariable ( 0 , KvantovyZiv ) ;
1800: LD_INT 0
1802: PPUSH
1803: LD_STRING KvantovyZiv
1805: PPUSH
1806: CALL_OW 39
// if Mikhail then
1810: LD_EXP 14
1814: IFFALSE 1828
// SaveVariable ( 1 , MikhailZiv ) else
1816: LD_INT 1
1818: PPUSH
1819: LD_STRING MikhailZiv
1821: PPUSH
1822: CALL_OW 39
1826: GO 1838
// SaveVariable ( 0 , MikhailZiv ) ;
1828: LD_INT 0
1830: PPUSH
1831: LD_STRING MikhailZiv
1833: PPUSH
1834: CALL_OW 39
// if AlianceSAraby then
1838: CALL 2247 0 0
1842: IFFALSE 1856
// SaveVariable ( 1 , RichardObchodDruhyUzavrenOK ) else
1844: LD_INT 1
1846: PPUSH
1847: LD_STRING RichardObchodDruhyUzavrenOK
1849: PPUSH
1850: CALL_OW 39
1854: GO 1866
// SaveVariable ( 0 , RichardObchodDruhyUzavrenOK ) ;
1856: LD_INT 0
1858: PPUSH
1859: LD_STRING RichardObchodDruhyUzavrenOK
1861: PPUSH
1862: CALL_OW 39
// if potrebovalMaterial then
1866: LD_EXP 35
1870: IFFALSE 1884
// SaveVariable ( 1 , PotrebovalMaterialOdPlatonova ) else
1872: LD_INT 1
1874: PPUSH
1875: LD_STRING PotrebovalMaterialOdPlatonova
1877: PPUSH
1878: CALL_OW 39
1882: GO 1894
// SaveVariable ( 0 , PotrebovalMaterialOdPlatonova ) ;
1884: LD_INT 0
1886: PPUSH
1887: LD_STRING PotrebovalMaterialOdPlatonova
1889: PPUSH
1890: CALL_OW 39
// YouWin ;
1894: CALL_OW 103
// end ; end_of_file
1898: LD_VAR 0 1
1902: RET
// export richard_saved , ar_samohybka_naposled_stavba , RusakBazaDole , RusakBazaHore , nakladVybranSebou ; export function OstatniInity ( ) ; begin
1903: LD_INT 0
1905: PPUSH
// you = 3 ;
1906: LD_ADDR_EXP 21
1910: PUSH
1911: LD_INT 3
1913: ST_TO_ADDR
// purple = 6 ;
1914: LD_ADDR_EXP 22
1918: PUSH
1919: LD_INT 6
1921: ST_TO_ADDR
// arab = 2 ;
1922: LD_ADDR_EXP 23
1926: PUSH
1927: LD_INT 2
1929: ST_TO_ADDR
// amik = 1 ;
1930: LD_ADDR_EXP 24
1934: PUSH
1935: LD_INT 1
1937: ST_TO_ADDR
// cyan = 4 ;
1938: LD_ADDR_EXP 25
1942: PUSH
1943: LD_INT 4
1945: ST_TO_ADDR
// richard_saved = false ;
1946: LD_ADDR_EXP 40
1950: PUSH
1951: LD_INT 0
1953: ST_TO_ADDR
// wasDialogOMiste = false ;
1954: LD_ADDR_EXP 32
1958: PUSH
1959: LD_INT 0
1961: ST_TO_ADDR
// ar_bocni_baza_captured = false ;
1962: LD_ADDR_EXP 38
1966: PUSH
1967: LD_INT 0
1969: ST_TO_ADDR
// hackingPerformed = false ;
1970: LD_ADDR_EXP 17
1974: PUSH
1975: LD_INT 0
1977: ST_TO_ADDR
// startAttackCountdown = false ;
1978: LD_ADDR_EXP 33
1982: PUSH
1983: LD_INT 0
1985: ST_TO_ADDR
// videlNepritele = false ;
1986: LD_ADDR_EXP 34
1990: PUSH
1991: LD_INT 0
1993: ST_TO_ADDR
// potrebovalMaterial = false ;
1994: LD_ADDR_EXP 35
1998: PUSH
1999: LD_INT 0
2001: ST_TO_ADDR
// arabiPlatonovKontaktovan = false ;
2002: LD_ADDR_EXP 36
2006: PUSH
2007: LD_INT 0
2009: ST_TO_ADDR
// buildtalk2 = false ;
2010: LD_ADDR_EXP 18
2014: PUSH
2015: LD_INT 0
2017: ST_TO_ADDR
// nasralAraba = false ;
2018: LD_ADDR_EXP 37
2022: PUSH
2023: LD_INT 0
2025: ST_TO_ADDR
// ar_samohybka_naposled_stavba = 0 ;
2026: LD_ADDR_EXP 41
2030: PUSH
2031: LD_INT 0
2033: ST_TO_ADDR
// bylVAmBazi = false ;
2034: LD_ADDR_EXP 83
2038: PUSH
2039: LD_INT 0
2041: ST_TO_ADDR
// stopBlueAI = false ;
2042: LD_ADDR_EXP 19
2046: PUSH
2047: LD_INT 0
2049: ST_TO_ADDR
// zdrhejte = false ;
2050: LD_ADDR_EXP 89
2054: PUSH
2055: LD_INT 0
2057: ST_TO_ADDR
// wasBehemotBuildTalk = false ;
2058: LD_ADDR_EXP 84
2062: PUSH
2063: LD_INT 0
2065: ST_TO_ADDR
// RusakBazaDole = false ;
2066: LD_ADDR_EXP 42
2070: PUSH
2071: LD_INT 0
2073: ST_TO_ADDR
// RusakBazaHore = false ;
2074: LD_ADDR_EXP 43
2078: PUSH
2079: LD_INT 0
2081: ST_TO_ADDR
// PlaceMine ( 117 , 63 , arab , 0 ) ;
2082: LD_INT 117
2084: PPUSH
2085: LD_INT 63
2087: PPUSH
2088: LD_EXP 23
2092: PPUSH
2093: LD_INT 0
2095: PPUSH
2096: CALL_OW 454
// arab_attack_list = [ ] ;
2100: LD_ADDR_EXP 28
2104: PUSH
2105: EMPTY
2106: ST_TO_ADDR
// amik_attack_list = [ ] ;
2107: LD_ADDR_EXP 30
2111: PUSH
2112: EMPTY
2113: ST_TO_ADDR
// purple_attack_list = [ ] ;
2114: LD_ADDR_EXP 29
2118: PUSH
2119: EMPTY
2120: ST_TO_ADDR
// uc_side = 5 ;
2121: LD_ADDR_OWVAR 20
2125: PUSH
2126: LD_INT 5
2128: ST_TO_ADDR
// uc_nation = nation_russian ;
2129: LD_ADDR_OWVAR 21
2133: PUSH
2134: LD_INT 3
2136: ST_TO_ADDR
// hc_class = class_soldier ;
2137: LD_ADDR_OWVAR 28
2141: PUSH
2142: LD_INT 1
2144: ST_TO_ADDR
// platonov = NewCharacter ( Platonov ) ;
2145: LD_ADDR_EXP 13
2149: PUSH
2150: LD_STRING Platonov
2152: PPUSH
2153: CALL_OW 25
2157: ST_TO_ADDR
// end ;
2158: LD_VAR 0 1
2162: RET
// export function SetCargoInit ; begin
2163: LD_INT 0
2165: PPUSH
// if nakladVybranSebou = 1 then
2166: LD_EXP 44
2170: PUSH
2171: LD_INT 1
2173: EQUAL
2174: IFFALSE 2191
// SetCargo ( nakladacik , mat_cans , 100 ) else
2176: LD_INT 75
2178: PPUSH
2179: LD_INT 1
2181: PPUSH
2182: LD_INT 100
2184: PPUSH
2185: CALL_OW 290
2189: GO 2242
// if nakladVybranSebou = 2 then
2191: LD_EXP 44
2195: PUSH
2196: LD_INT 2
2198: EQUAL
2199: IFFALSE 2229
// begin SetCargo ( nakladacik , mat_cans , 50 ) ;
2201: LD_INT 75
2203: PPUSH
2204: LD_INT 1
2206: PPUSH
2207: LD_INT 50
2209: PPUSH
2210: CALL_OW 290
// AddCargo ( nakladacik , mat_siberit , 50 ) ;
2214: LD_INT 75
2216: PPUSH
2217: LD_INT 3
2219: PPUSH
2220: LD_INT 50
2222: PPUSH
2223: CALL_OW 291
// end else
2227: GO 2242
// SetCargo ( nakladacik , mat_siberit , 100 ) ;
2229: LD_INT 75
2231: PPUSH
2232: LD_INT 3
2234: PPUSH
2235: LD_INT 100
2237: PPUSH
2238: CALL_OW 290
// end ;
2242: LD_VAR 0 1
2246: RET
// export function AlianceSAraby ; begin
2247: LD_INT 0
2249: PPUSH
// if GetAttitude ( you , arab ) = att_friend then
2250: LD_EXP 21
2254: PPUSH
2255: LD_EXP 23
2259: PPUSH
2260: CALL_OW 81
2264: PUSH
2265: LD_INT 1
2267: EQUAL
2268: IFFALSE 2280
// result = true else
2270: LD_ADDR_VAR 0 1
2274: PUSH
2275: LD_INT 1
2277: ST_TO_ADDR
2278: GO 2288
// result = false ;
2280: LD_ADDR_VAR 0 1
2284: PUSH
2285: LD_INT 0
2287: ST_TO_ADDR
// end ;
2288: LD_VAR 0 1
2292: RET
// export function SideDead ( side ) ; begin
2293: LD_INT 0
2295: PPUSH
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] ] ) then
2296: LD_INT 22
2298: PUSH
2299: LD_VAR 0 1
2303: PUSH
2304: EMPTY
2305: LIST
2306: LIST
2307: PUSH
2308: LD_INT 21
2310: PUSH
2311: LD_INT 1
2313: PUSH
2314: EMPTY
2315: LIST
2316: LIST
2317: PUSH
2318: EMPTY
2319: LIST
2320: LIST
2321: PPUSH
2322: CALL_OW 69
2326: IFFALSE 2338
// result = false else
2328: LD_ADDR_VAR 0 2
2332: PUSH
2333: LD_INT 0
2335: ST_TO_ADDR
2336: GO 2346
// result = true ;
2338: LD_ADDR_VAR 0 2
2342: PUSH
2343: LD_INT 1
2345: ST_TO_ADDR
// end ;
2346: LD_VAR 0 2
2350: RET
// export bazy_oblasti , dist_max , hranice_leceni_utek , hranice_budova_repair , hranice_oprava_utek , stredy_heal_oblasti , stredy_repair_oblasti , stredy_baz , stredy_carpark_oblasti , snipy_range ; export radar_distance , hranice_utok_repair_utek ; export function ArrayInity ( ) ; begin
2351: LD_INT 0
2353: PPUSH
// bazy_oblasti = [ ArBaza , PurpleBaza , AmikBaza ] ;
2354: LD_ADDR_EXP 45
2358: PUSH
2359: LD_INT 15
2361: PUSH
2362: LD_INT 16
2364: PUSH
2365: LD_INT 17
2367: PUSH
2368: EMPTY
2369: LIST
2370: LIST
2371: LIST
2372: ST_TO_ADDR
// dist_max = 40 ;
2373: LD_ADDR_EXP 46
2377: PUSH
2378: LD_INT 40
2380: ST_TO_ADDR
// hranice_leceni_utek = 700 ;
2381: LD_ADDR_EXP 47
2385: PUSH
2386: LD_INT 700
2388: ST_TO_ADDR
// hranice_oprava_utek = 740 ;
2389: LD_ADDR_EXP 49
2393: PUSH
2394: LD_INT 740
2396: ST_TO_ADDR
// hranice_budova_repair = 980 ;
2397: LD_ADDR_EXP 48
2401: PUSH
2402: LD_INT 980
2404: ST_TO_ADDR
// stredy_heal_oblasti = [ 168 , 99 , 114 , 11 , 216 , 78 ] ;
2405: LD_ADDR_EXP 50
2409: PUSH
2410: LD_INT 168
2412: PUSH
2413: LD_INT 99
2415: PUSH
2416: LD_INT 114
2418: PUSH
2419: LD_INT 11
2421: PUSH
2422: LD_INT 216
2424: PUSH
2425: LD_INT 78
2427: PUSH
2428: EMPTY
2429: LIST
2430: LIST
2431: LIST
2432: LIST
2433: LIST
2434: LIST
2435: ST_TO_ADDR
// stredy_repair_oblasti = [ 171 , 89 , 127 , 15 , 225 , 85 ] ;
2436: LD_ADDR_EXP 51
2440: PUSH
2441: LD_INT 171
2443: PUSH
2444: LD_INT 89
2446: PUSH
2447: LD_INT 127
2449: PUSH
2450: LD_INT 15
2452: PUSH
2453: LD_INT 225
2455: PUSH
2456: LD_INT 85
2458: PUSH
2459: EMPTY
2460: LIST
2461: LIST
2462: LIST
2463: LIST
2464: LIST
2465: LIST
2466: ST_TO_ADDR
// stredy_carpark_oblasti = [ 167 , 98 , 122 , 15 , 214 , 70 ] ;
2467: LD_ADDR_EXP 53
2471: PUSH
2472: LD_INT 167
2474: PUSH
2475: LD_INT 98
2477: PUSH
2478: LD_INT 122
2480: PUSH
2481: LD_INT 15
2483: PUSH
2484: LD_INT 214
2486: PUSH
2487: LD_INT 70
2489: PUSH
2490: EMPTY
2491: LIST
2492: LIST
2493: LIST
2494: LIST
2495: LIST
2496: LIST
2497: ST_TO_ADDR
// stredy_baz = [ 167 , 97 , 123 , 12 , 214 , 71 ] ;
2498: LD_ADDR_EXP 52
2502: PUSH
2503: LD_INT 167
2505: PUSH
2506: LD_INT 97
2508: PUSH
2509: LD_INT 123
2511: PUSH
2512: LD_INT 12
2514: PUSH
2515: LD_INT 214
2517: PUSH
2518: LD_INT 71
2520: PUSH
2521: EMPTY
2522: LIST
2523: LIST
2524: LIST
2525: LIST
2526: LIST
2527: LIST
2528: ST_TO_ADDR
// snipy_range = 20 ;
2529: LD_ADDR_EXP 54
2533: PUSH
2534: LD_INT 20
2536: ST_TO_ADDR
// radar_distance = 20 ;
2537: LD_ADDR_EXP 55
2541: PUSH
2542: LD_INT 20
2544: ST_TO_ADDR
// hranice_utok_repair_utek = 600 ;
2545: LD_ADDR_EXP 56
2549: PUSH
2550: LD_INT 600
2552: ST_TO_ADDR
// wasRichardDialog = false ;
2553: LD_ADDR_EXP 31
2557: PUSH
2558: LD_INT 0
2560: ST_TO_ADDR
// end ;
2561: LD_VAR 0 1
2565: RET
// export function VytvorCloveka ( povolani , minskill , maxskill , nat , side ) ; var max , min , min_ost ; begin
2566: LD_INT 0
2568: PPUSH
2569: PPUSH
2570: PPUSH
2571: PPUSH
// max = maxskill ;
2572: LD_ADDR_VAR 0 7
2576: PUSH
2577: LD_VAR 0 3
2581: ST_TO_ADDR
// min = minskill ;
2582: LD_ADDR_VAR 0 8
2586: PUSH
2587: LD_VAR 0 2
2591: ST_TO_ADDR
// min_ost = 0 ;
2592: LD_ADDR_VAR 0 9
2596: PUSH
2597: LD_INT 0
2599: ST_TO_ADDR
// InitHc ( ) ;
2600: CALL_OW 19
// uc_nation := nat ;
2604: LD_ADDR_OWVAR 21
2608: PUSH
2609: LD_VAR 0 4
2613: ST_TO_ADDR
// uc_side = side ;
2614: LD_ADDR_OWVAR 20
2618: PUSH
2619: LD_VAR 0 5
2623: ST_TO_ADDR
// hc_importance = 30 ;
2624: LD_ADDR_OWVAR 32
2628: PUSH
2629: LD_INT 30
2631: ST_TO_ADDR
// hc_name :=  ;
2632: LD_ADDR_OWVAR 26
2636: PUSH
2637: LD_STRING 
2639: ST_TO_ADDR
// hc_attr := [ rand ( 9 , 11 ) , rand ( 9 , 11 ) ] ;
2640: LD_ADDR_OWVAR 29
2644: PUSH
2645: LD_INT 9
2647: PPUSH
2648: LD_INT 11
2650: PPUSH
2651: CALL_OW 12
2655: PUSH
2656: LD_INT 9
2658: PPUSH
2659: LD_INT 11
2661: PPUSH
2662: CALL_OW 12
2666: PUSH
2667: EMPTY
2668: LIST
2669: LIST
2670: ST_TO_ADDR
// hc_class = povolani ;
2671: LD_ADDR_OWVAR 28
2675: PUSH
2676: LD_VAR 0 1
2680: ST_TO_ADDR
// if Prob ( 30 ) then
2681: LD_INT 30
2683: PPUSH
2684: CALL_OW 13
2688: IFFALSE 2700
// hc_sex := 2 else
2690: LD_ADDR_OWVAR 27
2694: PUSH
2695: LD_INT 2
2697: ST_TO_ADDR
2698: GO 2708
// hc_sex := 1 ;
2700: LD_ADDR_OWVAR 27
2704: PUSH
2705: LD_INT 1
2707: ST_TO_ADDR
// case povolani of 1 :
2708: LD_VAR 0 1
2712: PUSH
2713: LD_INT 1
2715: DOUBLE
2716: EQUAL
2717: IFTRUE 2721
2719: GO 2815
2721: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
2722: LD_ADDR_OWVAR 31
2726: PUSH
2727: LD_VAR 0 8
2731: PPUSH
2732: LD_VAR 0 7
2736: PPUSH
2737: CALL_OW 12
2741: PUSH
2742: LD_VAR 0 9
2746: PPUSH
2747: LD_VAR 0 7
2751: PUSH
2752: LD_INT 1
2754: MINUS
2755: PPUSH
2756: CALL_OW 12
2760: PUSH
2761: LD_VAR 0 9
2765: PPUSH
2766: LD_VAR 0 7
2770: PUSH
2771: LD_INT 1
2773: MINUS
2774: PPUSH
2775: CALL_OW 12
2779: PUSH
2780: LD_VAR 0 9
2784: PPUSH
2785: LD_VAR 0 7
2789: PUSH
2790: LD_INT 1
2792: MINUS
2793: PPUSH
2794: CALL_OW 12
2798: PUSH
2799: EMPTY
2800: LIST
2801: LIST
2802: LIST
2803: LIST
2804: ST_TO_ADDR
// hc_class = class_soldier ;
2805: LD_ADDR_OWVAR 28
2809: PUSH
2810: LD_INT 1
2812: ST_TO_ADDR
// end ; 2 :
2813: GO 3110
2815: LD_INT 2
2817: DOUBLE
2818: EQUAL
2819: IFTRUE 2823
2821: GO 2913
2823: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) ] ;
2824: LD_ADDR_OWVAR 31
2828: PUSH
2829: LD_VAR 0 8
2833: PPUSH
2834: LD_VAR 0 7
2838: PPUSH
2839: CALL_OW 12
2843: PUSH
2844: LD_VAR 0 8
2848: PPUSH
2849: LD_VAR 0 7
2853: PPUSH
2854: CALL_OW 12
2858: PUSH
2859: LD_VAR 0 9
2863: PPUSH
2864: LD_VAR 0 7
2868: PUSH
2869: LD_INT 1
2871: MINUS
2872: PPUSH
2873: CALL_OW 12
2877: PUSH
2878: LD_VAR 0 9
2882: PPUSH
2883: LD_VAR 0 7
2887: PUSH
2888: LD_INT 1
2890: MINUS
2891: PPUSH
2892: CALL_OW 12
2896: PUSH
2897: EMPTY
2898: LIST
2899: LIST
2900: LIST
2901: LIST
2902: ST_TO_ADDR
// hc_class = class_engineer ;
2903: LD_ADDR_OWVAR 28
2907: PUSH
2908: LD_INT 2
2910: ST_TO_ADDR
// end ; 3 :
2911: GO 3110
2913: LD_INT 3
2915: DOUBLE
2916: EQUAL
2917: IFTRUE 2921
2919: GO 3011
2921: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min , max ) , rand ( min_ost , max - 1 ) ] ;
2922: LD_ADDR_OWVAR 31
2926: PUSH
2927: LD_VAR 0 8
2931: PPUSH
2932: LD_VAR 0 7
2936: PPUSH
2937: CALL_OW 12
2941: PUSH
2942: LD_VAR 0 9
2946: PPUSH
2947: LD_VAR 0 7
2951: PUSH
2952: LD_INT 1
2954: MINUS
2955: PPUSH
2956: CALL_OW 12
2960: PUSH
2961: LD_VAR 0 8
2965: PPUSH
2966: LD_VAR 0 7
2970: PPUSH
2971: CALL_OW 12
2975: PUSH
2976: LD_VAR 0 9
2980: PPUSH
2981: LD_VAR 0 7
2985: PUSH
2986: LD_INT 1
2988: MINUS
2989: PPUSH
2990: CALL_OW 12
2994: PUSH
2995: EMPTY
2996: LIST
2997: LIST
2998: LIST
2999: LIST
3000: ST_TO_ADDR
// hc_class = class_mechanic ;
3001: LD_ADDR_OWVAR 28
3005: PUSH
3006: LD_INT 3
3008: ST_TO_ADDR
// end ; 4 :
3009: GO 3110
3011: LD_INT 4
3013: DOUBLE
3014: EQUAL
3015: IFTRUE 3019
3017: GO 3109
3019: POP
// begin hc_skills := [ rand ( min , max ) , rand ( min_ost , max - 1 ) , rand ( min_ost , max - 1 ) , rand ( min , max ) ] ;
3020: LD_ADDR_OWVAR 31
3024: PUSH
3025: LD_VAR 0 8
3029: PPUSH
3030: LD_VAR 0 7
3034: PPUSH
3035: CALL_OW 12
3039: PUSH
3040: LD_VAR 0 9
3044: PPUSH
3045: LD_VAR 0 7
3049: PUSH
3050: LD_INT 1
3052: MINUS
3053: PPUSH
3054: CALL_OW 12
3058: PUSH
3059: LD_VAR 0 9
3063: PPUSH
3064: LD_VAR 0 7
3068: PUSH
3069: LD_INT 1
3071: MINUS
3072: PPUSH
3073: CALL_OW 12
3077: PUSH
3078: LD_VAR 0 8
3082: PPUSH
3083: LD_VAR 0 7
3087: PPUSH
3088: CALL_OW 12
3092: PUSH
3093: EMPTY
3094: LIST
3095: LIST
3096: LIST
3097: LIST
3098: ST_TO_ADDR
// hc_class = class_scientistic ;
3099: LD_ADDR_OWVAR 28
3103: PUSH
3104: LD_INT 4
3106: ST_TO_ADDR
// end ; end ;
3107: GO 3110
3109: POP
// result := CreateHuman ( ) ;
3110: LD_ADDR_VAR 0 6
3114: PUSH
3115: CALL_OW 44
3119: ST_TO_ADDR
// end ;
3120: LD_VAR 0 6
3124: RET
// export function LoadSave ( ) ; var i ; begin
3125: LD_INT 0
3127: PPUSH
3128: PPUSH
// uc_nation = nation_russian ;
3129: LD_ADDR_OWVAR 21
3133: PUSH
3134: LD_INT 3
3136: ST_TO_ADDR
// uc_side = You ;
3137: LD_ADDR_OWVAR 20
3141: PUSH
3142: LD_EXP 21
3146: ST_TO_ADDR
// zachranenaArabka = LoadVariable ( AliceObchodUzavrenOK , 1 ) ;
3147: LD_ADDR_EXP 15
3151: PUSH
3152: LD_STRING AliceObchodUzavrenOK
3154: PPUSH
3155: LD_INT 1
3157: PPUSH
3158: CALL_OW 30
3162: ST_TO_ADDR
// maAuto = LoadVariable ( jeVAute , 1 ) ;
3163: LD_ADDR_EXP 16
3167: PUSH
3168: LD_STRING jeVAute
3170: PPUSH
3171: LD_INT 1
3173: PPUSH
3174: CALL_OW 30
3178: ST_TO_ADDR
// nakladVybranSebou = LoadVariable ( NakladVybranSebou , 1 ) ;
3179: LD_ADDR_EXP 44
3183: PUSH
3184: LD_STRING NakladVybranSebou
3186: PPUSH
3187: LD_INT 1
3189: PPUSH
3190: CALL_OW 30
3194: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
3195: LD_STRING Vsevolod
3197: PPUSH
3198: CALL_OW 28
3202: NOT
3203: IFFALSE 3410
// begin vsevolod = NewCharacter ( Vsevolod ) ;
3205: LD_ADDR_EXP 1
3209: PUSH
3210: LD_STRING Vsevolod
3212: PPUSH
3213: CALL_OW 25
3217: ST_TO_ADDR
// talin = NewCharacter ( Talin ) ;
3218: LD_ADDR_EXP 11
3222: PUSH
3223: LD_STRING Talin
3225: PPUSH
3226: CALL_OW 25
3230: ST_TO_ADDR
// gnevko = NewCharacter ( Gnyevko ) ;
3231: LD_ADDR_EXP 2
3235: PUSH
3236: LD_STRING Gnyevko
3238: PPUSH
3239: CALL_OW 25
3243: ST_TO_ADDR
// petrovova = NewCharacter ( Petrovova ) ;
3244: LD_ADDR_EXP 3
3248: PUSH
3249: LD_STRING Petrovova
3251: PPUSH
3252: CALL_OW 25
3256: ST_TO_ADDR
// dolgov = NewCharacter ( Dolgov ) ;
3257: LD_ADDR_EXP 4
3261: PUSH
3262: LD_STRING Dolgov
3264: PPUSH
3265: CALL_OW 25
3269: ST_TO_ADDR
// karamazov = NewCharacter ( Karamazov ) ;
3270: LD_ADDR_EXP 5
3274: PUSH
3275: LD_STRING Karamazov
3277: PPUSH
3278: CALL_OW 25
3282: ST_TO_ADDR
// titov = NewCharacter ( Titov ) ;
3283: LD_ADDR_EXP 6
3287: PUSH
3288: LD_STRING Titov
3290: PPUSH
3291: CALL_OW 25
3295: ST_TO_ADDR
// kozlov = NewCharacter ( Kozlov ) ;
3296: LD_ADDR_EXP 7
3300: PUSH
3301: LD_STRING Kozlov
3303: PPUSH
3304: CALL_OW 25
3308: ST_TO_ADDR
// kapitsova = NewCharacter ( Kapitsova ) ;
3309: LD_ADDR_EXP 8
3313: PUSH
3314: LD_STRING Kapitsova
3316: PPUSH
3317: CALL_OW 25
3321: ST_TO_ADDR
// alice = NewCharacter ( Alice ) ;
3322: LD_ADDR_EXP 10
3326: PUSH
3327: LD_STRING Alice
3329: PPUSH
3330: CALL_OW 25
3334: ST_TO_ADDR
// Mikhail = NewCharacter ( Mikhail ) ;
3335: LD_ADDR_EXP 14
3339: PUSH
3340: LD_STRING Mikhail
3342: PPUSH
3343: CALL_OW 25
3347: ST_TO_ADDR
// Kvantovy = NewCharacter ( Kvantovy ) ;
3348: LD_ADDR_EXP 12
3352: PUSH
3353: LD_STRING Kvantovy
3355: PPUSH
3356: CALL_OW 25
3360: ST_TO_ADDR
// uc_side = arab ;
3361: LD_ADDR_OWVAR 20
3365: PUSH
3366: LD_EXP 23
3370: ST_TO_ADDR
// uc_nation = nation_arabian ;
3371: LD_ADDR_OWVAR 21
3375: PUSH
3376: LD_INT 2
3378: ST_TO_ADDR
// hc_class = class_engineer ;
3379: LD_ADDR_OWVAR 28
3383: PUSH
3384: LD_INT 2
3386: ST_TO_ADDR
// richard = NewCharacter ( Richard ) ;
3387: LD_ADDR_EXP 9
3391: PUSH
3392: LD_STRING Richard
3394: PPUSH
3395: CALL_OW 25
3399: ST_TO_ADDR
// richard_saved = true ;
3400: LD_ADDR_EXP 40
3404: PUSH
3405: LD_INT 1
3407: ST_TO_ADDR
// end else
3408: GO 3804
// begin vsevolod = CreateCharacter ( Vsevolod ) ;
3410: LD_ADDR_EXP 1
3414: PUSH
3415: LD_STRING Vsevolod
3417: PPUSH
3418: CALL_OW 34
3422: ST_TO_ADDR
// talin = CreateCharacter ( Talin ) ;
3423: LD_ADDR_EXP 11
3427: PUSH
3428: LD_STRING Talin
3430: PPUSH
3431: CALL_OW 34
3435: ST_TO_ADDR
// if TestVariable ( GnyevkoZiv ) then
3436: LD_STRING GnyevkoZiv
3438: PPUSH
3439: CALL_OW 27
3443: IFFALSE 3458
// gnevko = CreateCharacter ( Gnyevko ) ;
3445: LD_ADDR_EXP 2
3449: PUSH
3450: LD_STRING Gnyevko
3452: PPUSH
3453: CALL_OW 34
3457: ST_TO_ADDR
// if TestVariable ( PetrovovaZiv ) then
3458: LD_STRING PetrovovaZiv
3460: PPUSH
3461: CALL_OW 27
3465: IFFALSE 3480
// petrovova = CreateCharacter ( Petrovova ) ;
3467: LD_ADDR_EXP 3
3471: PUSH
3472: LD_STRING Petrovova
3474: PPUSH
3475: CALL_OW 34
3479: ST_TO_ADDR
// if TestVariable ( DolgovZiv ) then
3480: LD_STRING DolgovZiv
3482: PPUSH
3483: CALL_OW 27
3487: IFFALSE 3502
// dolgov = CreateCharacter ( Dolgov ) ;
3489: LD_ADDR_EXP 4
3493: PUSH
3494: LD_STRING Dolgov
3496: PPUSH
3497: CALL_OW 34
3501: ST_TO_ADDR
// if TestVariable ( KaramazovZiv ) then
3502: LD_STRING KaramazovZiv
3504: PPUSH
3505: CALL_OW 27
3509: IFFALSE 3524
// karamazov = CreateCharacter ( Karamazov ) ;
3511: LD_ADDR_EXP 5
3515: PUSH
3516: LD_STRING Karamazov
3518: PPUSH
3519: CALL_OW 34
3523: ST_TO_ADDR
// if TestVariable ( TitovZiv ) then
3524: LD_STRING TitovZiv
3526: PPUSH
3527: CALL_OW 27
3531: IFFALSE 3546
// titov = CreateCharacter ( Titov ) ;
3533: LD_ADDR_EXP 6
3537: PUSH
3538: LD_STRING Titov
3540: PPUSH
3541: CALL_OW 34
3545: ST_TO_ADDR
// if TestVariable ( KozlovZiv ) then
3546: LD_STRING KozlovZiv
3548: PPUSH
3549: CALL_OW 27
3553: IFFALSE 3568
// kozlov = CreateCharacter ( Kozlov ) ;
3555: LD_ADDR_EXP 7
3559: PUSH
3560: LD_STRING Kozlov
3562: PPUSH
3563: CALL_OW 34
3567: ST_TO_ADDR
// if TestVariable ( KapitsovaZiv ) then
3568: LD_STRING KapitsovaZiv
3570: PPUSH
3571: CALL_OW 27
3575: IFFALSE 3590
// kapitsova = CreateCharacter ( Kapitsova ) ;
3577: LD_ADDR_EXP 8
3581: PUSH
3582: LD_STRING Kapitsova
3584: PPUSH
3585: CALL_OW 34
3589: ST_TO_ADDR
// if TestVariable ( AliceZiv ) then
3590: LD_STRING AliceZiv
3592: PPUSH
3593: CALL_OW 27
3597: IFFALSE 3612
// alice = CreateCharacter ( Alice ) ;
3599: LD_ADDR_EXP 10
3603: PUSH
3604: LD_STRING Alice
3606: PPUSH
3607: CALL_OW 34
3611: ST_TO_ADDR
// if TestVariable ( KvantovyZiv ) then
3612: LD_STRING KvantovyZiv
3614: PPUSH
3615: CALL_OW 27
3619: IFFALSE 3634
// Kvantovy = CreateCharacter ( Kvantovy ) ;
3621: LD_ADDR_EXP 12
3625: PUSH
3626: LD_STRING Kvantovy
3628: PPUSH
3629: CALL_OW 34
3633: ST_TO_ADDR
// if TestVariable ( MikhailZiv ) then
3634: LD_STRING MikhailZiv
3636: PPUSH
3637: CALL_OW 27
3641: IFFALSE 3656
// Mikhail = CreateCharacter ( Mikhail ) ;
3643: LD_ADDR_EXP 14
3647: PUSH
3648: LD_STRING Mikhail
3650: PPUSH
3651: CALL_OW 34
3655: ST_TO_ADDR
// begin uc_side = arab ;
3656: LD_ADDR_OWVAR 20
3660: PUSH
3661: LD_EXP 23
3665: ST_TO_ADDR
// uc_nation = nation_arabian ;
3666: LD_ADDR_OWVAR 21
3670: PUSH
3671: LD_INT 2
3673: ST_TO_ADDR
// hc_class = 1 ;
3674: LD_ADDR_OWVAR 28
3678: PUSH
3679: LD_INT 1
3681: ST_TO_ADDR
// richard = NewCharacter ( Richard ) ;
3682: LD_ADDR_EXP 9
3686: PUSH
3687: LD_STRING Richard
3689: PPUSH
3690: CALL_OW 25
3694: ST_TO_ADDR
// richard_saved = true ;
3695: LD_ADDR_EXP 40
3699: PUSH
3700: LD_INT 1
3702: ST_TO_ADDR
// end ; for i in [ vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail ] do
3703: LD_ADDR_VAR 0 2
3707: PUSH
3708: LD_EXP 1
3712: PUSH
3713: LD_EXP 2
3717: PUSH
3718: LD_EXP 3
3722: PUSH
3723: LD_EXP 4
3727: PUSH
3728: LD_EXP 5
3732: PUSH
3733: LD_EXP 6
3737: PUSH
3738: LD_EXP 7
3742: PUSH
3743: LD_EXP 8
3747: PUSH
3748: LD_EXP 12
3752: PUSH
3753: LD_EXP 14
3757: PUSH
3758: EMPTY
3759: LIST
3760: LIST
3761: LIST
3762: LIST
3763: LIST
3764: LIST
3765: LIST
3766: LIST
3767: LIST
3768: LIST
3769: PUSH
3770: FOR_IN
3771: IFFALSE 3802
// if GetClass ( i ) = class_bazooker then
3773: LD_VAR 0 2
3777: PPUSH
3778: CALL_OW 257
3782: PUSH
3783: LD_INT 9
3785: EQUAL
3786: IFFALSE 3800
// SetClass ( i , 1 ) ;
3788: LD_VAR 0 2
3792: PPUSH
3793: LD_INT 1
3795: PPUSH
3796: CALL_OW 336
3800: GO 3770
3802: POP
3803: POP
// end ; end ;
3804: LD_VAR 0 1
3808: RET
// export function BLevely ; begin
3809: LD_INT 0
3811: PPUSH
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , purple ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3812: LD_INT 21
3814: PUSH
3815: LD_INT 3
3817: PUSH
3818: EMPTY
3819: LIST
3820: LIST
3821: PUSH
3822: LD_INT 22
3824: PUSH
3825: LD_EXP 22
3829: PUSH
3830: EMPTY
3831: LIST
3832: LIST
3833: PUSH
3834: EMPTY
3835: LIST
3836: LIST
3837: PPUSH
3838: CALL_OW 69
3842: PPUSH
3843: LD_INT 52
3845: PUSH
3846: EMPTY
3847: LIST
3848: PUSH
3849: LD_INT 22
3851: PUSH
3852: LD_EXP 22
3856: PUSH
3857: EMPTY
3858: LIST
3859: LIST
3860: PUSH
3861: LD_INT 25
3863: PUSH
3864: LD_INT 2
3866: PUSH
3867: EMPTY
3868: LIST
3869: LIST
3870: PUSH
3871: EMPTY
3872: LIST
3873: LIST
3874: LIST
3875: PPUSH
3876: CALL_OW 69
3880: PUSH
3881: LD_INT 1
3883: ARRAY
3884: PPUSH
3885: LD_INT 2
3887: PPUSH
3888: CALL_OW 259
3892: PPUSH
3893: CALL_OW 241
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , arab ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3897: LD_INT 21
3899: PUSH
3900: LD_INT 3
3902: PUSH
3903: EMPTY
3904: LIST
3905: LIST
3906: PUSH
3907: LD_INT 22
3909: PUSH
3910: LD_EXP 23
3914: PUSH
3915: EMPTY
3916: LIST
3917: LIST
3918: PUSH
3919: EMPTY
3920: LIST
3921: LIST
3922: PPUSH
3923: CALL_OW 69
3927: PPUSH
3928: LD_INT 52
3930: PUSH
3931: EMPTY
3932: LIST
3933: PUSH
3934: LD_INT 22
3936: PUSH
3937: LD_EXP 23
3941: PUSH
3942: EMPTY
3943: LIST
3944: LIST
3945: PUSH
3946: LD_INT 25
3948: PUSH
3949: LD_INT 2
3951: PUSH
3952: EMPTY
3953: LIST
3954: LIST
3955: PUSH
3956: EMPTY
3957: LIST
3958: LIST
3959: LIST
3960: PPUSH
3961: CALL_OW 69
3965: PUSH
3966: LD_INT 1
3968: ARRAY
3969: PPUSH
3970: LD_INT 2
3972: PPUSH
3973: CALL_OW 259
3977: PPUSH
3978: CALL_OW 241
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , amik ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3982: LD_INT 21
3984: PUSH
3985: LD_INT 3
3987: PUSH
3988: EMPTY
3989: LIST
3990: LIST
3991: PUSH
3992: LD_INT 22
3994: PUSH
3995: LD_EXP 24
3999: PUSH
4000: EMPTY
4001: LIST
4002: LIST
4003: PUSH
4004: EMPTY
4005: LIST
4006: LIST
4007: PPUSH
4008: CALL_OW 69
4012: PPUSH
4013: LD_INT 52
4015: PUSH
4016: EMPTY
4017: LIST
4018: PUSH
4019: LD_INT 22
4021: PUSH
4022: LD_EXP 24
4026: PUSH
4027: EMPTY
4028: LIST
4029: LIST
4030: PUSH
4031: LD_INT 25
4033: PUSH
4034: LD_INT 2
4036: PUSH
4037: EMPTY
4038: LIST
4039: LIST
4040: PUSH
4041: EMPTY
4042: LIST
4043: LIST
4044: LIST
4045: PPUSH
4046: CALL_OW 69
4050: PUSH
4051: LD_INT 1
4053: ARRAY
4054: PPUSH
4055: LD_INT 2
4057: PPUSH
4058: CALL_OW 259
4062: PPUSH
4063: CALL_OW 241
// end ;
4067: LD_VAR 0 1
4071: RET
// export function NaplnVsechnyBudovyLidma ; var un ; var b , i , bunkry ; begin
4072: LD_INT 0
4074: PPUSH
4075: PPUSH
4076: PPUSH
4077: PPUSH
4078: PPUSH
// for b in FilterUnitsExceptArea ( ArBazaDruha , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ) do
4079: LD_ADDR_VAR 0 3
4083: PUSH
4084: LD_INT 12
4086: PPUSH
4087: LD_INT 2
4089: PUSH
4090: LD_INT 30
4092: PUSH
4093: LD_INT 32
4095: PUSH
4096: EMPTY
4097: LIST
4098: LIST
4099: PUSH
4100: LD_INT 30
4102: PUSH
4103: LD_INT 31
4105: PUSH
4106: EMPTY
4107: LIST
4108: LIST
4109: PUSH
4110: EMPTY
4111: LIST
4112: LIST
4113: LIST
4114: PPUSH
4115: CALL_OW 71
4119: PUSH
4120: FOR_IN
4121: IFFALSE 4256
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4123: LD_ADDR_VAR 0 2
4127: PUSH
4128: LD_INT 1
4130: PPUSH
4131: LD_EXP 64
4135: PPUSH
4136: LD_EXP 65
4140: PPUSH
4141: LD_VAR 0 3
4145: PPUSH
4146: CALL_OW 248
4150: PPUSH
4151: LD_VAR 0 3
4155: PPUSH
4156: CALL_OW 255
4160: PPUSH
4161: CALL 2566 0 5
4165: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
4166: LD_VAR 0 2
4170: PPUSH
4171: LD_VAR 0 3
4175: PPUSH
4176: CALL_OW 254
4180: PUSH
4181: LD_INT 3
4183: PLUS
4184: PPUSH
4185: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
4189: LD_VAR 0 2
4193: PPUSH
4194: LD_VAR 0 3
4198: PPUSH
4199: CALL_OW 52
// if GetBType ( b ) = b_breastwork and GetNation ( b ) = nation_arabian and Prob ( 50 ) then
4203: LD_VAR 0 3
4207: PPUSH
4208: CALL_OW 266
4212: PUSH
4213: LD_INT 31
4215: EQUAL
4216: PUSH
4217: LD_VAR 0 3
4221: PPUSH
4222: CALL_OW 248
4226: PUSH
4227: LD_INT 2
4229: EQUAL
4230: AND
4231: PUSH
4232: LD_INT 50
4234: PPUSH
4235: CALL_OW 13
4239: AND
4240: IFFALSE 4254
// SetClass ( un , 8 ) ;
4242: LD_VAR 0 2
4246: PPUSH
4247: LD_INT 8
4249: PPUSH
4250: CALL_OW 336
// end ;
4254: GO 4120
4256: POP
4257: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) do
4258: LD_ADDR_VAR 0 3
4262: PUSH
4263: LD_INT 2
4265: PUSH
4266: LD_INT 30
4268: PUSH
4269: LD_INT 4
4271: PUSH
4272: EMPTY
4273: LIST
4274: LIST
4275: PUSH
4276: LD_INT 30
4278: PUSH
4279: LD_INT 5
4281: PUSH
4282: EMPTY
4283: LIST
4284: LIST
4285: PUSH
4286: EMPTY
4287: LIST
4288: LIST
4289: LIST
4290: PPUSH
4291: CALL_OW 69
4295: PUSH
4296: FOR_IN
4297: IFFALSE 4767
// begin if GetSide ( b ) = purple then
4299: LD_VAR 0 3
4303: PPUSH
4304: CALL_OW 255
4308: PUSH
4309: LD_EXP 22
4313: EQUAL
4314: IFFALSE 4427
// begin for i = 1 to dif_enemy_lidi_kasa - 2 do
4316: LD_ADDR_VAR 0 4
4320: PUSH
4321: DOUBLE
4322: LD_INT 1
4324: DEC
4325: ST_TO_ADDR
4326: LD_EXP 61
4330: PUSH
4331: LD_INT 2
4333: MINUS
4334: PUSH
4335: FOR_TO
4336: IFFALSE 4425
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4338: LD_ADDR_VAR 0 2
4342: PUSH
4343: LD_INT 1
4345: PPUSH
4346: LD_EXP 64
4350: PPUSH
4351: LD_EXP 65
4355: PPUSH
4356: LD_VAR 0 3
4360: PPUSH
4361: CALL_OW 248
4365: PPUSH
4366: LD_VAR 0 3
4370: PPUSH
4371: CALL_OW 255
4375: PPUSH
4376: CALL 2566 0 5
4380: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4381: LD_VAR 0 2
4385: PPUSH
4386: LD_VAR 0 3
4390: PPUSH
4391: CALL_OW 52
// if i = dif_enemy_lidi_kasa - 2 then
4395: LD_VAR 0 4
4399: PUSH
4400: LD_EXP 61
4404: PUSH
4405: LD_INT 2
4407: MINUS
4408: EQUAL
4409: IFFALSE 4423
// SetClass ( un , 5 ) ;
4411: LD_VAR 0 2
4415: PPUSH
4416: LD_INT 5
4418: PPUSH
4419: CALL_OW 336
// end ;
4423: GO 4335
4425: POP
4426: POP
// end ; if GetSide ( b ) = amik then
4427: LD_VAR 0 3
4431: PPUSH
4432: CALL_OW 255
4436: PUSH
4437: LD_EXP 24
4441: EQUAL
4442: IFFALSE 4556
// begin for i = 1 to dif_enemy_lidi_kasa do
4444: LD_ADDR_VAR 0 4
4448: PUSH
4449: DOUBLE
4450: LD_INT 1
4452: DEC
4453: ST_TO_ADDR
4454: LD_EXP 61
4458: PUSH
4459: FOR_TO
4460: IFFALSE 4554
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4462: LD_ADDR_VAR 0 2
4466: PUSH
4467: LD_INT 1
4469: PPUSH
4470: LD_EXP 64
4474: PPUSH
4475: LD_EXP 65
4479: PPUSH
4480: LD_VAR 0 3
4484: PPUSH
4485: CALL_OW 248
4489: PPUSH
4490: LD_VAR 0 3
4494: PPUSH
4495: CALL_OW 255
4499: PPUSH
4500: CALL 2566 0 5
4504: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4505: LD_VAR 0 2
4509: PPUSH
4510: LD_VAR 0 3
4514: PPUSH
4515: CALL_OW 52
// if i = dif_enemy_lidi_kasa and Prob ( 50 ) then
4519: LD_VAR 0 4
4523: PUSH
4524: LD_EXP 61
4528: EQUAL
4529: PUSH
4530: LD_INT 50
4532: PPUSH
4533: CALL_OW 13
4537: AND
4538: IFFALSE 4552
// SetClass ( un , 5 ) ;
4540: LD_VAR 0 2
4544: PPUSH
4545: LD_INT 5
4547: PPUSH
4548: CALL_OW 336
// end ;
4552: GO 4459
4554: POP
4555: POP
// end ; if GetSide ( b ) = arab then
4556: LD_VAR 0 3
4560: PPUSH
4561: CALL_OW 255
4565: PUSH
4566: LD_EXP 23
4570: EQUAL
4571: IFFALSE 4765
// begin for i = 1 to dif_enemy_lidi_kasa do
4573: LD_ADDR_VAR 0 4
4577: PUSH
4578: DOUBLE
4579: LD_INT 1
4581: DEC
4582: ST_TO_ADDR
4583: LD_EXP 61
4587: PUSH
4588: FOR_TO
4589: IFFALSE 4763
// begin if GetBType ( b ) = b_armoury and i in [ dif_enemy_lidi_kasa , dif_enemy_lidi_kasa - 1 ] then
4591: LD_VAR 0 3
4595: PPUSH
4596: CALL_OW 266
4600: PUSH
4601: LD_INT 4
4603: EQUAL
4604: PUSH
4605: LD_VAR 0 4
4609: PUSH
4610: LD_EXP 61
4614: PUSH
4615: LD_EXP 61
4619: PUSH
4620: LD_INT 1
4622: MINUS
4623: PUSH
4624: EMPTY
4625: LIST
4626: LIST
4627: IN
4628: AND
4629: IFFALSE 4633
// else
4631: GO 4761
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4633: LD_ADDR_VAR 0 2
4637: PUSH
4638: LD_INT 1
4640: PPUSH
4641: LD_EXP 64
4645: PPUSH
4646: LD_EXP 65
4650: PPUSH
4651: LD_VAR 0 3
4655: PPUSH
4656: CALL_OW 248
4660: PPUSH
4661: LD_VAR 0 3
4665: PPUSH
4666: CALL_OW 255
4670: PPUSH
4671: CALL 2566 0 5
4675: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4676: LD_VAR 0 2
4680: PPUSH
4681: LD_VAR 0 3
4685: PPUSH
4686: CALL_OW 52
// if ( i = dif_enemy_lidi_kasa or i = dif_enemy_lidi_kasa - 1 ) or ( GetBType ( b ) = b_armoury and i = dif_enemy_lidi_kasa - 2 ) then
4690: LD_VAR 0 4
4694: PUSH
4695: LD_EXP 61
4699: EQUAL
4700: PUSH
4701: LD_VAR 0 4
4705: PUSH
4706: LD_EXP 61
4710: PUSH
4711: LD_INT 1
4713: MINUS
4714: EQUAL
4715: OR
4716: PUSH
4717: LD_VAR 0 3
4721: PPUSH
4722: CALL_OW 266
4726: PUSH
4727: LD_INT 4
4729: EQUAL
4730: PUSH
4731: LD_VAR 0 4
4735: PUSH
4736: LD_EXP 61
4740: PUSH
4741: LD_INT 2
4743: MINUS
4744: EQUAL
4745: AND
4746: OR
4747: IFFALSE 4761
// SetClass ( un , 8 ) ;
4749: LD_VAR 0 2
4753: PPUSH
4754: LD_INT 8
4756: PPUSH
4757: CALL_OW 336
// end ; end ;
4761: GO 4588
4763: POP
4764: POP
// end ; end ;
4765: GO 4296
4767: POP
4768: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , 6 ] , [ f_btype , 7 ] , [ f_btype , 8 ] , [ f_btype , 9 ] , [ f_btype , 10 ] , [ f_btype , 11 ] , [ f_btype , 12 ] , [ f_btype , 13 ] , [ f_btype , 14 ] , [ f_btype , 15 ] , [ f_btype , b_factory ] , [ f_btype , b_workshop ] , [ f_btype , b_control_tower ] ] ) do
4769: LD_ADDR_VAR 0 3
4773: PUSH
4774: LD_INT 2
4776: PUSH
4777: LD_INT 30
4779: PUSH
4780: LD_INT 6
4782: PUSH
4783: EMPTY
4784: LIST
4785: LIST
4786: PUSH
4787: LD_INT 30
4789: PUSH
4790: LD_INT 7
4792: PUSH
4793: EMPTY
4794: LIST
4795: LIST
4796: PUSH
4797: LD_INT 30
4799: PUSH
4800: LD_INT 8
4802: PUSH
4803: EMPTY
4804: LIST
4805: LIST
4806: PUSH
4807: LD_INT 30
4809: PUSH
4810: LD_INT 9
4812: PUSH
4813: EMPTY
4814: LIST
4815: LIST
4816: PUSH
4817: LD_INT 30
4819: PUSH
4820: LD_INT 10
4822: PUSH
4823: EMPTY
4824: LIST
4825: LIST
4826: PUSH
4827: LD_INT 30
4829: PUSH
4830: LD_INT 11
4832: PUSH
4833: EMPTY
4834: LIST
4835: LIST
4836: PUSH
4837: LD_INT 30
4839: PUSH
4840: LD_INT 12
4842: PUSH
4843: EMPTY
4844: LIST
4845: LIST
4846: PUSH
4847: LD_INT 30
4849: PUSH
4850: LD_INT 13
4852: PUSH
4853: EMPTY
4854: LIST
4855: LIST
4856: PUSH
4857: LD_INT 30
4859: PUSH
4860: LD_INT 14
4862: PUSH
4863: EMPTY
4864: LIST
4865: LIST
4866: PUSH
4867: LD_INT 30
4869: PUSH
4870: LD_INT 15
4872: PUSH
4873: EMPTY
4874: LIST
4875: LIST
4876: PUSH
4877: LD_INT 30
4879: PUSH
4880: LD_INT 3
4882: PUSH
4883: EMPTY
4884: LIST
4885: LIST
4886: PUSH
4887: LD_INT 30
4889: PUSH
4890: LD_INT 2
4892: PUSH
4893: EMPTY
4894: LIST
4895: LIST
4896: PUSH
4897: LD_INT 30
4899: PUSH
4900: LD_INT 36
4902: PUSH
4903: EMPTY
4904: LIST
4905: LIST
4906: PUSH
4907: EMPTY
4908: LIST
4909: LIST
4910: LIST
4911: LIST
4912: LIST
4913: LIST
4914: LIST
4915: LIST
4916: LIST
4917: LIST
4918: LIST
4919: LIST
4920: LIST
4921: LIST
4922: PPUSH
4923: CALL_OW 69
4927: PUSH
4928: FOR_IN
4929: IFFALSE 5225
// begin if not GetBType ( b ) = b_control_tower then
4931: LD_VAR 0 3
4935: PPUSH
4936: CALL_OW 266
4940: PUSH
4941: LD_INT 36
4943: EQUAL
4944: NOT
4945: IFFALSE 5146
// begin for i = 1 to dif_enemy_lidi_faclab do
4947: LD_ADDR_VAR 0 4
4951: PUSH
4952: DOUBLE
4953: LD_INT 1
4955: DEC
4956: ST_TO_ADDR
4957: LD_EXP 63
4961: PUSH
4962: FOR_TO
4963: IFFALSE 5142
// begin if GetSide ( b ) = purple and i > 4 then
4965: LD_VAR 0 3
4969: PPUSH
4970: CALL_OW 255
4974: PUSH
4975: LD_EXP 22
4979: EQUAL
4980: PUSH
4981: LD_VAR 0 4
4985: PUSH
4986: LD_INT 4
4988: GREATER
4989: AND
4990: IFFALSE 4994
// else
4992: GO 5140
// if GetSide ( b ) = arab and i > 4 then
4994: LD_VAR 0 3
4998: PPUSH
4999: CALL_OW 255
5003: PUSH
5004: LD_EXP 23
5008: EQUAL
5009: PUSH
5010: LD_VAR 0 4
5014: PUSH
5015: LD_INT 4
5017: GREATER
5018: AND
5019: IFFALSE 5023
// else
5021: GO 5140
// begin if GetBType ( b ) = b_factory then
5023: LD_VAR 0 3
5027: PPUSH
5028: CALL_OW 266
5032: PUSH
5033: LD_INT 3
5035: EQUAL
5036: IFFALSE 5083
// un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) else
5038: LD_ADDR_VAR 0 2
5042: PUSH
5043: LD_INT 3
5045: PPUSH
5046: LD_EXP 64
5050: PPUSH
5051: LD_EXP 65
5055: PPUSH
5056: LD_VAR 0 3
5060: PPUSH
5061: CALL_OW 248
5065: PPUSH
5066: LD_VAR 0 3
5070: PPUSH
5071: CALL_OW 255
5075: PPUSH
5076: CALL 2566 0 5
5080: ST_TO_ADDR
5081: GO 5126
// un = VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5083: LD_ADDR_VAR 0 2
5087: PUSH
5088: LD_INT 4
5090: PPUSH
5091: LD_EXP 64
5095: PPUSH
5096: LD_EXP 65
5100: PPUSH
5101: LD_VAR 0 3
5105: PPUSH
5106: CALL_OW 248
5110: PPUSH
5111: LD_VAR 0 3
5115: PPUSH
5116: CALL_OW 255
5120: PPUSH
5121: CALL 2566 0 5
5125: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5126: LD_VAR 0 2
5130: PPUSH
5131: LD_VAR 0 3
5135: PPUSH
5136: CALL_OW 52
// end ; end ;
5140: GO 4962
5142: POP
5143: POP
// end else
5144: GO 5223
// begin for i = 1 to 3 do
5146: LD_ADDR_VAR 0 4
5150: PUSH
5151: DOUBLE
5152: LD_INT 1
5154: DEC
5155: ST_TO_ADDR
5156: LD_INT 3
5158: PUSH
5159: FOR_TO
5160: IFFALSE 5221
// begin un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5162: LD_ADDR_VAR 0 2
5166: PUSH
5167: LD_INT 3
5169: PPUSH
5170: LD_EXP 64
5174: PPUSH
5175: LD_EXP 65
5179: PPUSH
5180: LD_VAR 0 3
5184: PPUSH
5185: CALL_OW 248
5189: PPUSH
5190: LD_VAR 0 3
5194: PPUSH
5195: CALL_OW 255
5199: PPUSH
5200: CALL 2566 0 5
5204: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5205: LD_VAR 0 2
5209: PPUSH
5210: LD_VAR 0 3
5214: PPUSH
5215: CALL_OW 52
// end ;
5219: GO 5159
5221: POP
5222: POP
// end ; end ;
5223: GO 4928
5225: POP
5226: POP
// if richard_saved then
5227: LD_EXP 40
5231: IFFALSE 5288
// PlaceHumanInUnit ( richard , FilterAllUnits ( [ [ f_type , unit_building ] , [ f_btype , b_warehouse ] , [ f_side , arab ] ] ) [ 1 ] ) ;
5233: LD_EXP 9
5237: PPUSH
5238: LD_INT 21
5240: PUSH
5241: LD_INT 3
5243: PUSH
5244: EMPTY
5245: LIST
5246: LIST
5247: PUSH
5248: LD_INT 30
5250: PUSH
5251: LD_INT 1
5253: PUSH
5254: EMPTY
5255: LIST
5256: LIST
5257: PUSH
5258: LD_INT 22
5260: PUSH
5261: LD_EXP 23
5265: PUSH
5266: EMPTY
5267: LIST
5268: LIST
5269: PUSH
5270: EMPTY
5271: LIST
5272: LIST
5273: LIST
5274: PPUSH
5275: CALL_OW 69
5279: PUSH
5280: LD_INT 1
5282: ARRAY
5283: PPUSH
5284: CALL_OW 52
// for b in FilterUnitsExceptArea ( ArBazaDruha , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) do
5288: LD_ADDR_VAR 0 3
5292: PUSH
5293: LD_INT 12
5295: PPUSH
5296: LD_INT 2
5298: PUSH
5299: LD_INT 30
5301: PUSH
5302: LD_INT 0
5304: PUSH
5305: EMPTY
5306: LIST
5307: LIST
5308: PUSH
5309: LD_INT 30
5311: PUSH
5312: LD_INT 1
5314: PUSH
5315: EMPTY
5316: LIST
5317: LIST
5318: PUSH
5319: EMPTY
5320: LIST
5321: LIST
5322: LIST
5323: PPUSH
5324: CALL_OW 71
5328: PUSH
5329: FOR_IN
5330: IFFALSE 5471
// begin for i = 1 to dif_enemy_lidi_sklad do
5332: LD_ADDR_VAR 0 4
5336: PUSH
5337: DOUBLE
5338: LD_INT 1
5340: DEC
5341: ST_TO_ADDR
5342: LD_EXP 62
5346: PUSH
5347: FOR_TO
5348: IFFALSE 5467
// begin if GetSide ( b ) = purple and i > 3 then
5350: LD_VAR 0 3
5354: PPUSH
5355: CALL_OW 255
5359: PUSH
5360: LD_EXP 22
5364: EQUAL
5365: PUSH
5366: LD_VAR 0 4
5370: PUSH
5371: LD_INT 3
5373: GREATER
5374: AND
5375: IFFALSE 5379
// else
5377: GO 5465
// if GetSide ( b ) = arab and i > 5 then
5379: LD_VAR 0 3
5383: PPUSH
5384: CALL_OW 255
5388: PUSH
5389: LD_EXP 23
5393: EQUAL
5394: PUSH
5395: LD_VAR 0 4
5399: PUSH
5400: LD_INT 5
5402: GREATER
5403: AND
5404: IFFALSE 5408
// else
5406: GO 5465
// begin un = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5408: LD_ADDR_VAR 0 2
5412: PUSH
5413: LD_INT 2
5415: PPUSH
5416: LD_EXP 64
5420: PPUSH
5421: LD_EXP 65
5425: PPUSH
5426: LD_VAR 0 3
5430: PPUSH
5431: CALL_OW 248
5435: PPUSH
5436: LD_VAR 0 3
5440: PPUSH
5441: CALL_OW 255
5445: PPUSH
5446: CALL 2566 0 5
5450: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5451: LD_VAR 0 2
5455: PPUSH
5456: LD_VAR 0 3
5460: PPUSH
5461: CALL_OW 52
// end ; end ;
5465: GO 5347
5467: POP
5468: POP
// end ;
5469: GO 5329
5471: POP
5472: POP
// end ;
5473: LD_VAR 0 1
5477: RET
// export function VyjdiVen ( un ) ; begin
5478: LD_INT 0
5480: PPUSH
// if IsInUnit ( un ) then
5481: LD_VAR 0 1
5485: PPUSH
5486: CALL_OW 310
5490: IFFALSE 5557
// begin if GetType ( IsInUnit ( un ) ) = unit_building then
5492: LD_VAR 0 1
5496: PPUSH
5497: CALL_OW 310
5501: PPUSH
5502: CALL_OW 247
5506: PUSH
5507: LD_INT 3
5509: EQUAL
5510: IFFALSE 5521
// ComExitBuilding ( un ) ;
5512: LD_VAR 0 1
5516: PPUSH
5517: CALL_OW 122
// if GetType ( IsInUnit ( un ) ) = unit_vehicle then
5521: LD_VAR 0 1
5525: PPUSH
5526: CALL_OW 310
5530: PPUSH
5531: CALL_OW 247
5535: PUSH
5536: LD_INT 2
5538: EQUAL
5539: IFFALSE 5550
// ComExitVehicle ( un ) ;
5541: LD_VAR 0 1
5545: PPUSH
5546: CALL_OW 121
// Wait ( 0 0$0.2 ) ;
5550: LD_INT 7
5552: PPUSH
5553: CALL_OW 67
// end ; end ;
5557: LD_VAR 0 2
5561: RET
// export function NearestUnitToUnit2 ( list , un ) ; begin
5562: LD_INT 0
5564: PPUSH
// if not list then
5565: LD_VAR 0 1
5569: NOT
5570: IFFALSE 5582
// result = false else
5572: LD_ADDR_VAR 0 3
5576: PUSH
5577: LD_INT 0
5579: ST_TO_ADDR
5580: GO 5643
// begin if IsInUnit ( un ) and GetType ( un ) <> unit_building then
5582: LD_VAR 0 2
5586: PPUSH
5587: CALL_OW 310
5591: PUSH
5592: LD_VAR 0 2
5596: PPUSH
5597: CALL_OW 247
5601: PUSH
5602: LD_INT 3
5604: NONEQUAL
5605: AND
5606: IFFALSE 5623
// un = IsInUnit ( un ) ;
5608: LD_ADDR_VAR 0 2
5612: PUSH
5613: LD_VAR 0 2
5617: PPUSH
5618: CALL_OW 310
5622: ST_TO_ADDR
// result = NearestUnitToUnit ( list , un ) ;
5623: LD_ADDR_VAR 0 3
5627: PUSH
5628: LD_VAR 0 1
5632: PPUSH
5633: LD_VAR 0 2
5637: PPUSH
5638: CALL_OW 74
5642: ST_TO_ADDR
// end ; end ;
5643: LD_VAR 0 3
5647: RET
// export function IsInArea2 ( jedn , un ) ; begin
5648: LD_INT 0
5650: PPUSH
// if not jedn or jedn = 0 then
5651: LD_VAR 0 1
5655: NOT
5656: PUSH
5657: LD_VAR 0 1
5661: PUSH
5662: LD_INT 0
5664: EQUAL
5665: OR
5666: IFFALSE 5678
// result = false else
5668: LD_ADDR_VAR 0 3
5672: PUSH
5673: LD_INT 0
5675: ST_TO_ADDR
5676: GO 5698
// result = IsInArea ( jedn , un ) ;
5678: LD_ADDR_VAR 0 3
5682: PUSH
5683: LD_VAR 0 1
5687: PPUSH
5688: LD_VAR 0 2
5692: PPUSH
5693: CALL_OW 308
5697: ST_TO_ADDR
// end ;
5698: LD_VAR 0 3
5702: RET
// export function See2 ( side , un ) ; var x , y ; begin
5703: LD_INT 0
5705: PPUSH
5706: PPUSH
5707: PPUSH
// if not IsPlaced ( un ) or side < 1 then
5708: LD_VAR 0 2
5712: PPUSH
5713: CALL_OW 305
5717: NOT
5718: PUSH
5719: LD_VAR 0 1
5723: PUSH
5724: LD_INT 1
5726: LESS
5727: OR
5728: IFFALSE 5740
// result = false else
5730: LD_ADDR_VAR 0 3
5734: PUSH
5735: LD_INT 0
5737: ST_TO_ADDR
5738: GO 5807
// begin x := GetX ( un ) ;
5740: LD_ADDR_VAR 0 4
5744: PUSH
5745: LD_VAR 0 2
5749: PPUSH
5750: CALL_OW 250
5754: ST_TO_ADDR
// y := GetY ( un ) ;
5755: LD_ADDR_VAR 0 5
5759: PUSH
5760: LD_VAR 0 2
5764: PPUSH
5765: CALL_OW 251
5769: ST_TO_ADDR
// if not un then
5770: LD_VAR 0 2
5774: NOT
5775: IFFALSE 5787
// result = false else
5777: LD_ADDR_VAR 0 3
5781: PUSH
5782: LD_INT 0
5784: ST_TO_ADDR
5785: GO 5807
// begin result = See ( side , un ) ;
5787: LD_ADDR_VAR 0 3
5791: PUSH
5792: LD_VAR 0 1
5796: PPUSH
5797: LD_VAR 0 2
5801: PPUSH
5802: CALL_OW 292
5806: ST_TO_ADDR
// end ; end ; end ;
5807: LD_VAR 0 3
5811: RET
// every 0 0$20 do var depot ;
5812: GO 5814
5814: DISABLE
5815: LD_INT 0
5817: PPUSH
// begin for depot in FilterAllUnits ( [ [ f_or , [ f_side , purple ] , [ f_side , amik ] , [ f_side , arab ] ] , [ f_ok ] , [ f_btype , b_warehouse ] ] ) do
5818: LD_ADDR_VAR 0 1
5822: PUSH
5823: LD_INT 2
5825: PUSH
5826: LD_INT 22
5828: PUSH
5829: LD_EXP 22
5833: PUSH
5834: EMPTY
5835: LIST
5836: LIST
5837: PUSH
5838: LD_INT 22
5840: PUSH
5841: LD_EXP 24
5845: PUSH
5846: EMPTY
5847: LIST
5848: LIST
5849: PUSH
5850: LD_INT 22
5852: PUSH
5853: LD_EXP 23
5857: PUSH
5858: EMPTY
5859: LIST
5860: LIST
5861: PUSH
5862: EMPTY
5863: LIST
5864: LIST
5865: LIST
5866: LIST
5867: PUSH
5868: LD_INT 50
5870: PUSH
5871: EMPTY
5872: LIST
5873: PUSH
5874: LD_INT 30
5876: PUSH
5877: LD_INT 1
5879: PUSH
5880: EMPTY
5881: LIST
5882: LIST
5883: PUSH
5884: EMPTY
5885: LIST
5886: LIST
5887: LIST
5888: PPUSH
5889: CALL_OW 69
5893: PUSH
5894: FOR_IN
5895: IFFALSE 5908
// SurovinyDoSkladu ( depot ) ;
5897: LD_VAR 0 1
5901: PPUSH
5902: CALL 5914 0 1
5906: GO 5894
5908: POP
5909: POP
// enable ;
5910: ENABLE
// end ;
5911: PPOPN 1
5913: END
// export function SurovinyDoSkladu ( sklad ) ; begin
5914: LD_INT 0
5916: PPUSH
// if GetSide ( sklad ) = you then
5917: LD_VAR 0 1
5921: PPUSH
5922: CALL_OW 255
5926: PUSH
5927: LD_EXP 21
5931: EQUAL
5932: IFFALSE 5936
// exit ;
5934: GO 6100
// if GetResourceType ( GetBase ( sklad ) , mat_cans ) < 200 then
5936: LD_VAR 0 1
5940: PPUSH
5941: CALL_OW 274
5945: PPUSH
5946: LD_INT 1
5948: PPUSH
5949: CALL_OW 275
5953: PUSH
5954: LD_INT 200
5956: LESS
5957: IFFALSE 5979
// AddResourceType ( GetBase ( sklad ) , mat_cans , 200 ) ;
5959: LD_VAR 0 1
5963: PPUSH
5964: CALL_OW 274
5968: PPUSH
5969: LD_INT 1
5971: PPUSH
5972: LD_INT 200
5974: PPUSH
5975: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_oil ) < 650 and GetSide ( sklad ) <> arab then
5979: LD_VAR 0 1
5983: PPUSH
5984: CALL_OW 274
5988: PPUSH
5989: LD_INT 2
5991: PPUSH
5992: CALL_OW 275
5996: PUSH
5997: LD_INT 650
5999: LESS
6000: PUSH
6001: LD_VAR 0 1
6005: PPUSH
6006: CALL_OW 255
6010: PUSH
6011: LD_EXP 23
6015: NONEQUAL
6016: AND
6017: IFFALSE 6039
// AddResourceType ( GetBase ( sklad ) , mat_oil , 100 ) ;
6019: LD_VAR 0 1
6023: PPUSH
6024: CALL_OW 274
6028: PPUSH
6029: LD_INT 2
6031: PPUSH
6032: LD_INT 100
6034: PPUSH
6035: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_siberit ) < 80 and GetSide ( sklad ) <> purple then
6039: LD_VAR 0 1
6043: PPUSH
6044: CALL_OW 274
6048: PPUSH
6049: LD_INT 3
6051: PPUSH
6052: CALL_OW 275
6056: PUSH
6057: LD_INT 80
6059: LESS
6060: PUSH
6061: LD_VAR 0 1
6065: PPUSH
6066: CALL_OW 255
6070: PUSH
6071: LD_EXP 22
6075: NONEQUAL
6076: AND
6077: IFFALSE 6099
// AddResourceType ( GetBase ( sklad ) , mat_siberit , 100 ) ;
6079: LD_VAR 0 1
6083: PPUSH
6084: CALL_OW 274
6088: PPUSH
6089: LD_INT 3
6091: PPUSH
6092: LD_INT 100
6094: PPUSH
6095: CALL_OW 276
// enable ;
6099: ENABLE
// end ;
6100: LD_VAR 0 2
6104: RET
// every 0 0$0.4 trigger tick > 100 do
6105: LD_OWVAR 1
6109: PUSH
6110: LD_INT 100
6112: GREATER
6113: IFFALSE 6167
6115: GO 6117
6117: DISABLE
// begin if not stopBlueAI then
6118: LD_EXP 19
6122: NOT
6123: IFFALSE 6134
// AI_cast2 ( amik ) ;
6125: LD_EXP 24
6129: PPUSH
6130: CALL 8889 0 1
// Wait ( 0 0$1.1 ) ;
6134: LD_INT 39
6136: PPUSH
6137: CALL_OW 67
// if not stopBlueAI then
6141: LD_EXP 19
6145: NOT
6146: IFFALSE 6157
// AI_cast1 ( amik ) ;
6148: LD_EXP 24
6152: PPUSH
6153: CALL 6224 0 1
// AI_cast1 ( purple ) ;
6157: LD_EXP 22
6161: PPUSH
6162: CALL 6224 0 1
// enable ;
6166: ENABLE
// end ;
6167: END
// every 0 0$0.75 trigger tick > 100 do
6168: LD_OWVAR 1
6172: PUSH
6173: LD_INT 100
6175: GREATER
6176: IFFALSE 6223
6178: GO 6180
6180: DISABLE
// begin AI_cast2 ( arab ) ;
6181: LD_EXP 23
6185: PPUSH
6186: CALL 8889 0 1
// Wait ( 0 0$0.4 ) ;
6190: LD_INT 14
6192: PPUSH
6193: CALL_OW 67
// AI_cast1 ( arab ) ;
6197: LD_EXP 23
6201: PPUSH
6202: CALL 6224 0 1
// AI_cast2 ( purple ) ;
6206: LD_EXP 22
6210: PPUSH
6211: CALL 8889 0 1
// Wait ( 0 0$0.3 ) ;
6215: LD_INT 10
6217: PPUSH
6218: CALL_OW 67
// enable ;
6222: ENABLE
// end ;
6223: END
// function AI_cast1 ( strana ) ; var i , side , un , b , b_red , bedny , sklady , inzenyri , vojaci , bunkr , kasa , volne_bunkry , volne_kasy , jeraby , vehikly , dice , snipy , tmp ; begin
6224: LD_INT 0
6226: PPUSH
6227: PPUSH
6228: PPUSH
6229: PPUSH
6230: PPUSH
6231: PPUSH
6232: PPUSH
6233: PPUSH
6234: PPUSH
6235: PPUSH
6236: PPUSH
6237: PPUSH
6238: PPUSH
6239: PPUSH
6240: PPUSH
6241: PPUSH
6242: PPUSH
6243: PPUSH
6244: PPUSH
// side = strana ;
6245: LD_ADDR_VAR 0 4
6249: PUSH
6250: LD_VAR 0 1
6254: ST_TO_ADDR
// begin inzenyri = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_engineer ] ] ) ;
6255: LD_ADDR_VAR 0 10
6259: PUSH
6260: LD_INT 50
6262: PUSH
6263: EMPTY
6264: LIST
6265: PUSH
6266: LD_INT 22
6268: PUSH
6269: LD_VAR 0 4
6273: PUSH
6274: EMPTY
6275: LIST
6276: LIST
6277: PUSH
6278: LD_INT 25
6280: PUSH
6281: LD_INT 2
6283: PUSH
6284: EMPTY
6285: LIST
6286: LIST
6287: PUSH
6288: EMPTY
6289: LIST
6290: LIST
6291: LIST
6292: PPUSH
6293: CALL_OW 69
6297: ST_TO_ADDR
// b = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , hranice_budova_repair ] ] ] ) ;
6298: LD_ADDR_VAR 0 6
6302: PUSH
6303: LD_INT 52
6305: PUSH
6306: EMPTY
6307: LIST
6308: PUSH
6309: LD_INT 22
6311: PUSH
6312: LD_VAR 0 4
6316: PUSH
6317: EMPTY
6318: LIST
6319: LIST
6320: PUSH
6321: LD_INT 21
6323: PUSH
6324: LD_INT 3
6326: PUSH
6327: EMPTY
6328: LIST
6329: LIST
6330: PUSH
6331: LD_INT 3
6333: PUSH
6334: LD_INT 24
6336: PUSH
6337: LD_EXP 48
6341: PUSH
6342: EMPTY
6343: LIST
6344: LIST
6345: PUSH
6346: EMPTY
6347: LIST
6348: LIST
6349: PUSH
6350: EMPTY
6351: LIST
6352: LIST
6353: LIST
6354: LIST
6355: PPUSH
6356: CALL_OW 69
6360: ST_TO_ADDR
// b_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
6361: LD_ADDR_VAR 0 7
6365: PUSH
6366: LD_INT 52
6368: PUSH
6369: EMPTY
6370: LIST
6371: PUSH
6372: LD_INT 22
6374: PUSH
6375: LD_VAR 0 4
6379: PUSH
6380: EMPTY
6381: LIST
6382: LIST
6383: PUSH
6384: LD_INT 21
6386: PUSH
6387: LD_INT 3
6389: PUSH
6390: EMPTY
6391: LIST
6392: LIST
6393: PUSH
6394: LD_INT 3
6396: PUSH
6397: LD_INT 24
6399: PUSH
6400: LD_INT 250
6402: PUSH
6403: EMPTY
6404: LIST
6405: LIST
6406: PUSH
6407: EMPTY
6408: LIST
6409: LIST
6410: PUSH
6411: EMPTY
6412: LIST
6413: LIST
6414: LIST
6415: LIST
6416: PPUSH
6417: CALL_OW 69
6421: ST_TO_ADDR
// sklady = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_btype , b_warehouse ] ] ) ;
6422: LD_ADDR_VAR 0 9
6426: PUSH
6427: LD_INT 50
6429: PUSH
6430: EMPTY
6431: LIST
6432: PUSH
6433: LD_INT 22
6435: PUSH
6436: LD_VAR 0 4
6440: PUSH
6441: EMPTY
6442: LIST
6443: LIST
6444: PUSH
6445: LD_INT 30
6447: PUSH
6448: LD_INT 1
6450: PUSH
6451: EMPTY
6452: LIST
6453: LIST
6454: PUSH
6455: EMPTY
6456: LIST
6457: LIST
6458: LIST
6459: PPUSH
6460: CALL_OW 69
6464: ST_TO_ADDR
// if inzenyri then
6465: LD_VAR 0 10
6469: IFFALSE 6995
// for un in inzenyri do
6471: LD_ADDR_VAR 0 5
6475: PUSH
6476: LD_VAR 0 10
6480: PUSH
6481: FOR_IN
6482: IFFALSE 6993
// begin if GetLives ( un ) < hranice_leceni_utek then
6484: LD_VAR 0 5
6488: PPUSH
6489: CALL_OW 256
6493: PUSH
6494: LD_EXP 47
6498: LESS
6499: IFFALSE 6512
// UtecDoNejblizsiHealOblasti ( un ) else
6501: LD_VAR 0 5
6505: PPUSH
6506: CALL 11891 0 1
6510: GO 6991
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
6512: LD_VAR 0 5
6516: PPUSH
6517: CALL_OW 256
6521: PUSH
6522: LD_INT 1000
6524: LESS
6525: PUSH
6526: LD_VAR 0 5
6530: PPUSH
6531: LD_VAR 0 5
6535: PPUSH
6536: CALL 11189 0 1
6540: PPUSH
6541: CALL 5648 0 2
6545: AND
6546: IFFALSE 6550
// else
6548: GO 6991
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6550: LD_VAR 0 5
6554: PPUSH
6555: LD_VAR 0 5
6559: PPUSH
6560: CALL 11423 0 1
6564: PPUSH
6565: CALL_OW 299
6569: PUSH
6570: LD_INT 4
6572: GREATER
6573: IFFALSE 6596
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
6575: LD_VAR 0 5
6579: PPUSH
6580: LD_VAR 0 5
6584: PPUSH
6585: CALL 11306 0 1
6589: PPUSH
6590: CALL_OW 113
6594: GO 6991
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
6596: LD_VAR 0 7
6600: PUSH
6601: LD_VAR 0 5
6605: PPUSH
6606: LD_VAR 0 7
6610: PPUSH
6611: LD_VAR 0 5
6615: PPUSH
6616: CALL 5562 0 2
6620: PPUSH
6621: CALL_OW 296
6625: PUSH
6626: LD_EXP 46
6630: LESS
6631: AND
6632: IFFALSE 6675
// begin VyjdiVen ( un ) ;
6634: LD_VAR 0 5
6638: PPUSH
6639: CALL 5478 0 1
// if b_red then
6643: LD_VAR 0 7
6647: IFFALSE 6673
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
6649: LD_VAR 0 5
6653: PPUSH
6654: LD_VAR 0 7
6658: PPUSH
6659: LD_VAR 0 5
6663: PPUSH
6664: CALL 5562 0 2
6668: PPUSH
6669: CALL_OW 130
// end else
6673: GO 6991
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
6675: LD_VAR 0 6
6679: PUSH
6680: LD_VAR 0 5
6684: PPUSH
6685: LD_VAR 0 6
6689: PPUSH
6690: LD_VAR 0 5
6694: PPUSH
6695: CALL 5562 0 2
6699: PPUSH
6700: CALL_OW 296
6704: PUSH
6705: LD_EXP 46
6709: LESS
6710: AND
6711: IFFALSE 6754
// begin VyjdiVen ( un ) ;
6713: LD_VAR 0 5
6717: PPUSH
6718: CALL 5478 0 1
// if b then
6722: LD_VAR 0 6
6726: IFFALSE 6752
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
6728: LD_VAR 0 5
6732: PPUSH
6733: LD_VAR 0 6
6737: PPUSH
6738: LD_VAR 0 5
6742: PPUSH
6743: CALL 5562 0 2
6747: PPUSH
6748: CALL_OW 130
// end else
6752: GO 6991
// if GetListOfCratesInAreaBySide ( GetSide ( un ) ) then
6754: LD_VAR 0 5
6758: PPUSH
6759: CALL_OW 255
6763: PPUSH
6764: CALL 13392 0 1
6768: IFFALSE 6863
// begin bedny = GetListOfCratesInAreaBySide ( GetSide ( un ) ) ;
6770: LD_ADDR_VAR 0 8
6774: PUSH
6775: LD_VAR 0 5
6779: PPUSH
6780: CALL_OW 255
6784: PPUSH
6785: CALL 13392 0 1
6789: ST_TO_ADDR
// if GetDistUnitXY ( un , bedny [ 1 ] , bedny [ 2 ] ) < dist_max then
6790: LD_VAR 0 5
6794: PPUSH
6795: LD_VAR 0 8
6799: PUSH
6800: LD_INT 1
6802: ARRAY
6803: PPUSH
6804: LD_VAR 0 8
6808: PUSH
6809: LD_INT 2
6811: ARRAY
6812: PPUSH
6813: CALL_OW 297
6817: PUSH
6818: LD_EXP 46
6822: LESS
6823: IFFALSE 6861
// begin VyjdiVen ( un ) ;
6825: LD_VAR 0 5
6829: PPUSH
6830: CALL 5478 0 1
// ComCollect ( un , bedny [ 1 ] , bedny [ 2 ] ) ;
6834: LD_VAR 0 5
6838: PPUSH
6839: LD_VAR 0 8
6843: PUSH
6844: LD_INT 1
6846: ARRAY
6847: PPUSH
6848: LD_VAR 0 8
6852: PUSH
6853: LD_INT 2
6855: ARRAY
6856: PPUSH
6857: CALL_OW 117
// end ; end else
6861: GO 6991
// if not GetLives ( un ) = 1000 then
6863: LD_VAR 0 5
6867: PPUSH
6868: CALL_OW 256
6872: PUSH
6873: LD_INT 1000
6875: EQUAL
6876: NOT
6877: IFFALSE 6890
// UtecDoNejblizsiHealOblasti ( un ) else
6879: LD_VAR 0 5
6883: PPUSH
6884: CALL 11891 0 1
6888: GO 6991
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
6890: LD_VAR 0 5
6894: PPUSH
6895: CALL_OW 256
6899: PUSH
6900: LD_INT 1000
6902: EQUAL
6903: PUSH
6904: LD_VAR 0 5
6908: PPUSH
6909: CALL_OW 310
6913: PUSH
6914: LD_INT 0
6916: EQUAL
6917: AND
6918: IFFALSE 6991
// begin ComFree ( un ) ;
6920: LD_VAR 0 5
6924: PPUSH
6925: CALL_OW 139
// if sklady and GetDistUnits ( un , NearestUnitToUnit2 ( sklady , un ) ) < dist_max then
6929: LD_VAR 0 9
6933: PUSH
6934: LD_VAR 0 5
6938: PPUSH
6939: LD_VAR 0 9
6943: PPUSH
6944: LD_VAR 0 5
6948: PPUSH
6949: CALL 5562 0 2
6953: PPUSH
6954: CALL_OW 296
6958: PUSH
6959: LD_EXP 46
6963: LESS
6964: AND
6965: IFFALSE 6991
// ComEnterUnit ( un , NearestUnitToUnit2 ( sklady , un ) ) ;
6967: LD_VAR 0 5
6971: PPUSH
6972: LD_VAR 0 9
6976: PPUSH
6977: LD_VAR 0 5
6981: PPUSH
6982: CALL 5562 0 2
6986: PPUSH
6987: CALL_OW 120
// end ; end ;
6991: GO 6481
6993: POP
6994: POP
// jeraby = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , ru_crane ] ] ] ) ;
6995: LD_ADDR_VAR 0 16
6999: PUSH
7000: LD_INT 50
7002: PUSH
7003: EMPTY
7004: LIST
7005: PUSH
7006: LD_INT 22
7008: PUSH
7009: LD_VAR 0 4
7013: PUSH
7014: EMPTY
7015: LIST
7016: LIST
7017: PUSH
7018: LD_INT 2
7020: PUSH
7021: LD_INT 34
7023: PUSH
7024: LD_INT 13
7026: PUSH
7027: EMPTY
7028: LIST
7029: LIST
7030: PUSH
7031: LD_INT 34
7033: PUSH
7034: LD_INT 52
7036: PUSH
7037: EMPTY
7038: LIST
7039: LIST
7040: PUSH
7041: EMPTY
7042: LIST
7043: LIST
7044: LIST
7045: PUSH
7046: EMPTY
7047: LIST
7048: LIST
7049: LIST
7050: PPUSH
7051: CALL_OW 69
7055: ST_TO_ADDR
// if jeraby then
7056: LD_VAR 0 16
7060: IFFALSE 7387
// for un in jeraby do
7062: LD_ADDR_VAR 0 5
7066: PUSH
7067: LD_VAR 0 16
7071: PUSH
7072: FOR_IN
7073: IFFALSE 7385
// begin if GetLives ( un ) < hranice_oprava_utek then
7075: LD_VAR 0 5
7079: PPUSH
7080: CALL_OW 256
7084: PUSH
7085: LD_EXP 49
7089: LESS
7090: IFFALSE 7103
// UtecDoNejblizsiRepairOblasti ( un ) else
7092: LD_VAR 0 5
7096: PPUSH
7097: CALL 12001 0 1
7101: GO 7383
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
7103: LD_VAR 0 5
7107: PPUSH
7108: CALL_OW 256
7112: PUSH
7113: LD_INT 1000
7115: LESS
7116: PUSH
7117: LD_VAR 0 5
7121: PPUSH
7122: LD_VAR 0 5
7126: PPUSH
7127: CALL 11540 0 1
7131: PPUSH
7132: CALL 5648 0 2
7136: AND
7137: IFFALSE 7141
// else
7139: GO 7383
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7141: LD_VAR 0 5
7145: PPUSH
7146: LD_VAR 0 5
7150: PPUSH
7151: CALL 11423 0 1
7155: PPUSH
7156: CALL_OW 299
7160: PUSH
7161: LD_INT 4
7163: GREATER
7164: IFFALSE 7187
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
7166: LD_VAR 0 5
7170: PPUSH
7171: LD_VAR 0 5
7175: PPUSH
7176: CALL 11423 0 1
7180: PPUSH
7181: CALL_OW 113
7185: GO 7383
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
7187: LD_VAR 0 7
7191: PUSH
7192: LD_VAR 0 5
7196: PPUSH
7197: LD_VAR 0 7
7201: PPUSH
7202: LD_VAR 0 5
7206: PPUSH
7207: CALL 5562 0 2
7211: PPUSH
7212: CALL_OW 296
7216: PUSH
7217: LD_EXP 46
7221: LESS
7222: AND
7223: IFFALSE 7266
// begin VyjdiVen ( un ) ;
7225: LD_VAR 0 5
7229: PPUSH
7230: CALL 5478 0 1
// if b_red then
7234: LD_VAR 0 7
7238: IFFALSE 7264
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
7240: LD_VAR 0 5
7244: PPUSH
7245: LD_VAR 0 7
7249: PPUSH
7250: LD_VAR 0 5
7254: PPUSH
7255: CALL 5562 0 2
7259: PPUSH
7260: CALL_OW 130
// end else
7264: GO 7383
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
7266: LD_VAR 0 6
7270: PUSH
7271: LD_VAR 0 5
7275: PPUSH
7276: LD_VAR 0 6
7280: PPUSH
7281: LD_VAR 0 5
7285: PPUSH
7286: CALL 5562 0 2
7290: PPUSH
7291: CALL_OW 296
7295: PUSH
7296: LD_EXP 46
7300: LESS
7301: AND
7302: IFFALSE 7345
// begin VyjdiVen ( un ) ;
7304: LD_VAR 0 5
7308: PPUSH
7309: CALL 5478 0 1
// if b then
7313: LD_VAR 0 6
7317: IFFALSE 7343
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
7319: LD_VAR 0 5
7323: PPUSH
7324: LD_VAR 0 6
7328: PPUSH
7329: LD_VAR 0 5
7333: PPUSH
7334: CALL 5562 0 2
7338: PPUSH
7339: CALL_OW 130
// end else
7343: GO 7383
// if not GetLives ( un ) > hranice_budova_repair then
7345: LD_VAR 0 5
7349: PPUSH
7350: CALL_OW 256
7354: PUSH
7355: LD_EXP 48
7359: GREATER
7360: NOT
7361: IFFALSE 7374
// UtecDoNejblizsiRepairOblasti ( un ) else
7363: LD_VAR 0 5
7367: PPUSH
7368: CALL 12001 0 1
7372: GO 7383
// UtecDoNejblizsiCarParkOblasti ( un ) ;
7374: LD_VAR 0 5
7378: PPUSH
7379: CALL 11949 0 1
// end ;
7383: GO 7072
7385: POP
7386: POP
// vojaci = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_outside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] , [ f_class , class_bazooker ] , [ f_class , class_mortar ] ] ] ) diff ar_miner ;
7387: LD_ADDR_VAR 0 11
7391: PUSH
7392: LD_INT 50
7394: PUSH
7395: EMPTY
7396: LIST
7397: PUSH
7398: LD_INT 22
7400: PUSH
7401: LD_VAR 0 4
7405: PUSH
7406: EMPTY
7407: LIST
7408: LIST
7409: PUSH
7410: LD_INT 56
7412: PUSH
7413: EMPTY
7414: LIST
7415: PUSH
7416: LD_INT 2
7418: PUSH
7419: LD_INT 25
7421: PUSH
7422: LD_INT 1
7424: PUSH
7425: EMPTY
7426: LIST
7427: LIST
7428: PUSH
7429: LD_INT 25
7431: PUSH
7432: LD_INT 5
7434: PUSH
7435: EMPTY
7436: LIST
7437: LIST
7438: PUSH
7439: LD_INT 25
7441: PUSH
7442: LD_INT 9
7444: PUSH
7445: EMPTY
7446: LIST
7447: LIST
7448: PUSH
7449: LD_INT 25
7451: PUSH
7452: LD_INT 8
7454: PUSH
7455: EMPTY
7456: LIST
7457: LIST
7458: PUSH
7459: EMPTY
7460: LIST
7461: LIST
7462: LIST
7463: LIST
7464: LIST
7465: PUSH
7466: EMPTY
7467: LIST
7468: LIST
7469: LIST
7470: LIST
7471: PPUSH
7472: CALL_OW 69
7476: PUSH
7477: LD_EXP 86
7481: DIFF
7482: ST_TO_ADDR
// volne_bunkry = FilterAllUnits ( [ [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
7483: LD_ADDR_VAR 0 14
7487: PUSH
7488: LD_INT 52
7490: PUSH
7491: EMPTY
7492: LIST
7493: PUSH
7494: LD_INT 3
7496: PUSH
7497: LD_INT 57
7499: PUSH
7500: EMPTY
7501: LIST
7502: PUSH
7503: EMPTY
7504: LIST
7505: LIST
7506: PUSH
7507: LD_INT 50
7509: PUSH
7510: EMPTY
7511: LIST
7512: PUSH
7513: LD_INT 22
7515: PUSH
7516: LD_VAR 0 4
7520: PUSH
7521: EMPTY
7522: LIST
7523: LIST
7524: PUSH
7525: LD_INT 58
7527: PUSH
7528: EMPTY
7529: LIST
7530: PUSH
7531: LD_INT 2
7533: PUSH
7534: LD_INT 30
7536: PUSH
7537: LD_INT 31
7539: PUSH
7540: EMPTY
7541: LIST
7542: LIST
7543: PUSH
7544: LD_INT 30
7546: PUSH
7547: LD_INT 32
7549: PUSH
7550: EMPTY
7551: LIST
7552: LIST
7553: PUSH
7554: EMPTY
7555: LIST
7556: LIST
7557: LIST
7558: PUSH
7559: EMPTY
7560: LIST
7561: LIST
7562: LIST
7563: LIST
7564: LIST
7565: LIST
7566: PPUSH
7567: CALL_OW 69
7571: ST_TO_ADDR
// volne_kasy = FilterAllUnits ( [ [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) ;
7572: LD_ADDR_VAR 0 15
7576: PUSH
7577: LD_INT 52
7579: PUSH
7580: EMPTY
7581: LIST
7582: PUSH
7583: LD_INT 3
7585: PUSH
7586: LD_INT 57
7588: PUSH
7589: EMPTY
7590: LIST
7591: PUSH
7592: EMPTY
7593: LIST
7594: LIST
7595: PUSH
7596: LD_INT 50
7598: PUSH
7599: EMPTY
7600: LIST
7601: PUSH
7602: LD_INT 22
7604: PUSH
7605: LD_VAR 0 4
7609: PUSH
7610: EMPTY
7611: LIST
7612: LIST
7613: PUSH
7614: LD_INT 2
7616: PUSH
7617: LD_INT 30
7619: PUSH
7620: LD_INT 4
7622: PUSH
7623: EMPTY
7624: LIST
7625: LIST
7626: PUSH
7627: LD_INT 30
7629: PUSH
7630: LD_INT 5
7632: PUSH
7633: EMPTY
7634: LIST
7635: LIST
7636: PUSH
7637: EMPTY
7638: LIST
7639: LIST
7640: LIST
7641: PUSH
7642: EMPTY
7643: LIST
7644: LIST
7645: LIST
7646: LIST
7647: LIST
7648: PPUSH
7649: CALL_OW 69
7653: ST_TO_ADDR
// for i in volne_kasy do
7654: LD_ADDR_VAR 0 3
7658: PUSH
7659: LD_VAR 0 15
7663: PUSH
7664: FOR_IN
7665: IFFALSE 7700
// if UnitsInside ( i ) > 5 then
7667: LD_VAR 0 3
7671: PPUSH
7672: CALL_OW 313
7676: PUSH
7677: LD_INT 5
7679: GREATER
7680: IFFALSE 7698
// volne_kasy = volne_kasy diff i ;
7682: LD_ADDR_VAR 0 15
7686: PUSH
7687: LD_VAR 0 15
7691: PUSH
7692: LD_VAR 0 3
7696: DIFF
7697: ST_TO_ADDR
7698: GO 7664
7700: POP
7701: POP
// if vojaci then
7702: LD_VAR 0 11
7706: IFFALSE 8094
// for un in vojaci do
7708: LD_ADDR_VAR 0 5
7712: PUSH
7713: LD_VAR 0 11
7717: PUSH
7718: FOR_IN
7719: IFFALSE 8092
// begin if GetLives ( un ) < hranice_leceni_utek then
7721: LD_VAR 0 5
7725: PPUSH
7726: CALL_OW 256
7730: PUSH
7731: LD_EXP 47
7735: LESS
7736: IFFALSE 7749
// UtecDoNejblizsiHealOblasti ( un ) else
7738: LD_VAR 0 5
7742: PPUSH
7743: CALL 11891 0 1
7747: GO 8090
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
7749: LD_VAR 0 5
7753: PPUSH
7754: CALL_OW 256
7758: PUSH
7759: LD_INT 1000
7761: LESS
7762: PUSH
7763: LD_VAR 0 5
7767: PPUSH
7768: LD_VAR 0 5
7772: PPUSH
7773: CALL 11189 0 1
7777: PPUSH
7778: CALL 5648 0 2
7782: AND
7783: IFFALSE 7787
// else
7785: GO 8090
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7787: LD_VAR 0 5
7791: PPUSH
7792: LD_VAR 0 5
7796: PPUSH
7797: CALL 11423 0 1
7801: PPUSH
7802: CALL_OW 299
7806: PUSH
7807: LD_INT 4
7809: GREATER
7810: IFFALSE 7833
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
7812: LD_VAR 0 5
7816: PPUSH
7817: LD_VAR 0 5
7821: PPUSH
7822: CALL 11306 0 1
7826: PPUSH
7827: CALL_OW 113
7831: GO 8090
// if volne_bunkry then
7833: LD_VAR 0 14
7837: IFFALSE 7955
// begin for bunkr in volne_bunkry do
7839: LD_ADDR_VAR 0 12
7843: PUSH
7844: LD_VAR 0 14
7848: PUSH
7849: FOR_IN
7850: IFFALSE 7951
// begin if PocetJednotekCoJdouDoBudov ( vojaci ) = volne_bunkry + 0 then
7852: LD_VAR 0 11
7856: PPUSH
7857: CALL 12050 0 1
7861: PUSH
7862: LD_VAR 0 14
7866: PUSH
7867: LD_INT 0
7869: PLUS
7870: EQUAL
7871: IFFALSE 7875
// else
7873: GO 7949
// if GetDistUnits ( un , bunkr ) < dist_max and un = NejblizsiJednotkaCoNemaTask ( vojaci , bunkr ) then
7875: LD_VAR 0 5
7879: PPUSH
7880: LD_VAR 0 12
7884: PPUSH
7885: CALL_OW 296
7889: PUSH
7890: LD_EXP 46
7894: LESS
7895: PUSH
7896: LD_VAR 0 5
7900: PUSH
7901: LD_VAR 0 11
7905: PPUSH
7906: LD_VAR 0 12
7910: PPUSH
7911: CALL 12120 0 2
7915: EQUAL
7916: AND
7917: IFFALSE 7949
// begin ComEnterUnit ( un , bunkr ) ;
7919: LD_VAR 0 5
7923: PPUSH
7924: LD_VAR 0 12
7928: PPUSH
7929: CALL_OW 120
// volne_bunkry = volne_bunkry diff bunkr ;
7933: LD_ADDR_VAR 0 14
7937: PUSH
7938: LD_VAR 0 14
7942: PUSH
7943: LD_VAR 0 12
7947: DIFF
7948: ST_TO_ADDR
// end ; end ;
7949: GO 7849
7951: POP
7952: POP
// end else
7953: GO 8090
// if volne_kasy then
7955: LD_VAR 0 15
7959: IFFALSE 8053
// begin for kasa in volne_kasy do
7961: LD_ADDR_VAR 0 13
7965: PUSH
7966: LD_VAR 0 15
7970: PUSH
7971: FOR_IN
7972: IFFALSE 8049
// begin if UnitsInside ( kasa ) < 6 and un = NejblizsiJednotkaCoNemaTask ( vojaci , kasa ) and GetDistUnits ( un , kasa ) < dist_max then
7974: LD_VAR 0 13
7978: PPUSH
7979: CALL_OW 313
7983: PUSH
7984: LD_INT 6
7986: LESS
7987: PUSH
7988: LD_VAR 0 5
7992: PUSH
7993: LD_VAR 0 11
7997: PPUSH
7998: LD_VAR 0 13
8002: PPUSH
8003: CALL 12120 0 2
8007: EQUAL
8008: AND
8009: PUSH
8010: LD_VAR 0 5
8014: PPUSH
8015: LD_VAR 0 13
8019: PPUSH
8020: CALL_OW 296
8024: PUSH
8025: LD_EXP 46
8029: LESS
8030: AND
8031: IFFALSE 8047
// ComEnterUnit ( un , kasa ) ;
8033: LD_VAR 0 5
8037: PPUSH
8038: LD_VAR 0 13
8042: PPUSH
8043: CALL_OW 120
// end ;
8047: GO 7971
8049: POP
8050: POP
// end else
8051: GO 8090
// if not GetLives ( un ) = 1000 and not IsInUnit ( un ) then
8053: LD_VAR 0 5
8057: PPUSH
8058: CALL_OW 256
8062: PUSH
8063: LD_INT 1000
8065: EQUAL
8066: NOT
8067: PUSH
8068: LD_VAR 0 5
8072: PPUSH
8073: CALL_OW 310
8077: NOT
8078: AND
8079: IFFALSE 8090
// UtecDoNejblizsiHealOblasti ( un ) end ;
8081: LD_VAR 0 5
8085: PPUSH
8086: CALL 11891 0 1
8090: GO 7718
8092: POP
8093: POP
// snipy = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_inside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] ] , [ f_nation , nation_american ] ] ) ;
8094: LD_ADDR_VAR 0 19
8098: PUSH
8099: LD_INT 50
8101: PUSH
8102: EMPTY
8103: LIST
8104: PUSH
8105: LD_INT 22
8107: PUSH
8108: LD_VAR 0 4
8112: PUSH
8113: EMPTY
8114: LIST
8115: LIST
8116: PUSH
8117: LD_INT 54
8119: PUSH
8120: EMPTY
8121: LIST
8122: PUSH
8123: LD_INT 2
8125: PUSH
8126: LD_INT 25
8128: PUSH
8129: LD_INT 1
8131: PUSH
8132: EMPTY
8133: LIST
8134: LIST
8135: PUSH
8136: LD_INT 25
8138: PUSH
8139: LD_INT 5
8141: PUSH
8142: EMPTY
8143: LIST
8144: LIST
8145: PUSH
8146: EMPTY
8147: LIST
8148: LIST
8149: LIST
8150: PUSH
8151: LD_INT 23
8153: PUSH
8154: LD_INT 1
8156: PUSH
8157: EMPTY
8158: LIST
8159: LIST
8160: PUSH
8161: EMPTY
8162: LIST
8163: LIST
8164: LIST
8165: LIST
8166: LIST
8167: PPUSH
8168: CALL_OW 69
8172: ST_TO_ADDR
// if snipy then
8173: LD_VAR 0 19
8177: IFFALSE 8548
// for un in snipy do
8179: LD_ADDR_VAR 0 5
8183: PUSH
8184: LD_VAR 0 19
8188: PUSH
8189: FOR_IN
8190: IFFALSE 8546
// begin if GetBType ( IsInUnit ( un ) ) = b_barracks and GetNation ( IsInUnit ( un ) ) = nation_american then
8192: LD_VAR 0 5
8196: PPUSH
8197: CALL_OW 310
8201: PPUSH
8202: CALL_OW 266
8206: PUSH
8207: LD_INT 5
8209: EQUAL
8210: PUSH
8211: LD_VAR 0 5
8215: PPUSH
8216: CALL_OW 310
8220: PPUSH
8221: CALL_OW 248
8225: PUSH
8226: LD_INT 1
8228: EQUAL
8229: AND
8230: IFFALSE 8544
// begin tmp = FilterAllUnits ( [ [ f_or , [ f_side , you ] , [ f_side , arab ] ] , [ f_or , [ f_type , unit_human ] , [ f_and , [ f_type , unit_vehicle ] , [ f_control , control_manual ] , [ f_not , [ f_empty ] ] ] ] ] ) ;
8232: LD_ADDR_VAR 0 20
8236: PUSH
8237: LD_INT 2
8239: PUSH
8240: LD_INT 22
8242: PUSH
8243: LD_EXP 21
8247: PUSH
8248: EMPTY
8249: LIST
8250: LIST
8251: PUSH
8252: LD_INT 22
8254: PUSH
8255: LD_EXP 23
8259: PUSH
8260: EMPTY
8261: LIST
8262: LIST
8263: PUSH
8264: EMPTY
8265: LIST
8266: LIST
8267: LIST
8268: PUSH
8269: LD_INT 2
8271: PUSH
8272: LD_INT 21
8274: PUSH
8275: LD_INT 1
8277: PUSH
8278: EMPTY
8279: LIST
8280: LIST
8281: PUSH
8282: LD_INT 1
8284: PUSH
8285: LD_INT 21
8287: PUSH
8288: LD_INT 2
8290: PUSH
8291: EMPTY
8292: LIST
8293: LIST
8294: PUSH
8295: LD_INT 33
8297: PUSH
8298: LD_INT 1
8300: PUSH
8301: EMPTY
8302: LIST
8303: LIST
8304: PUSH
8305: LD_INT 3
8307: PUSH
8308: LD_INT 58
8310: PUSH
8311: EMPTY
8312: LIST
8313: PUSH
8314: EMPTY
8315: LIST
8316: LIST
8317: PUSH
8318: EMPTY
8319: LIST
8320: LIST
8321: LIST
8322: LIST
8323: PUSH
8324: EMPTY
8325: LIST
8326: LIST
8327: LIST
8328: PUSH
8329: EMPTY
8330: LIST
8331: LIST
8332: PPUSH
8333: CALL_OW 69
8337: ST_TO_ADDR
// if GetDistUnits ( NearestUnitToUnit2 ( tmp , un ) , un ) <= snipy_range and GetTech ( tech_lassight , side ) = state_researched and GetTech ( tech_soporific , side ) = state_researched then
8338: LD_VAR 0 20
8342: PPUSH
8343: LD_VAR 0 5
8347: PPUSH
8348: CALL 5562 0 2
8352: PPUSH
8353: LD_VAR 0 5
8357: PPUSH
8358: CALL_OW 296
8362: PUSH
8363: LD_EXP 54
8367: LESSEQUAL
8368: PUSH
8369: LD_INT 12
8371: PPUSH
8372: LD_VAR 0 4
8376: PPUSH
8377: CALL_OW 321
8381: PUSH
8382: LD_INT 2
8384: EQUAL
8385: AND
8386: PUSH
8387: LD_INT 13
8389: PPUSH
8390: LD_VAR 0 4
8394: PPUSH
8395: CALL_OW 321
8399: PUSH
8400: LD_INT 2
8402: EQUAL
8403: AND
8404: IFFALSE 8516
// begin if not GetClass ( un ) = class_sniper then
8406: LD_VAR 0 5
8410: PPUSH
8411: CALL_OW 257
8415: PUSH
8416: LD_INT 5
8418: EQUAL
8419: NOT
8420: IFFALSE 8436
// ComChangeProfession ( un , class_sniper ) else
8422: LD_VAR 0 5
8426: PPUSH
8427: LD_INT 5
8429: PPUSH
8430: CALL_OW 123
8434: GO 8514
// begin dice = Rand ( 1 , 100 ) ;
8436: LD_ADDR_VAR 0 18
8440: PUSH
8441: LD_INT 1
8443: PPUSH
8444: LD_INT 100
8446: PPUSH
8447: CALL_OW 12
8451: ST_TO_ADDR
// if dice < dif_prob_uspavaci then
8452: LD_VAR 0 18
8456: PUSH
8457: LD_EXP 66
8461: LESS
8462: IFFALSE 8490
// ComAttackSoporific ( un , NearestUnitToUnit2 ( tmp , un ) ) else
8464: LD_VAR 0 5
8468: PPUSH
8469: LD_VAR 0 20
8473: PPUSH
8474: LD_VAR 0 5
8478: PPUSH
8479: CALL 5562 0 2
8483: PPUSH
8484: CALL_OW 166
8488: GO 8514
// ComAttackUnit ( un , NearestUnitToUnit2 ( tmp , un ) ) ;
8490: LD_VAR 0 5
8494: PPUSH
8495: LD_VAR 0 20
8499: PPUSH
8500: LD_VAR 0 5
8504: PPUSH
8505: CALL 5562 0 2
8509: PPUSH
8510: CALL_OW 115
// end ; end else
8514: GO 8544
// if not GetClass ( un ) = class_soldier then
8516: LD_VAR 0 5
8520: PPUSH
8521: CALL_OW 257
8525: PUSH
8526: LD_INT 1
8528: EQUAL
8529: NOT
8530: IFFALSE 8544
// ComChangeProfession ( un , class_soldier ) ;
8532: LD_VAR 0 5
8536: PPUSH
8537: LD_INT 1
8539: PPUSH
8540: CALL_OW 123
// end end ;
8544: GO 8189
8546: POP
8547: POP
// vehikly = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ;
8548: LD_ADDR_VAR 0 17
8552: PUSH
8553: LD_INT 50
8555: PUSH
8556: EMPTY
8557: LIST
8558: PUSH
8559: LD_INT 22
8561: PUSH
8562: LD_VAR 0 4
8566: PUSH
8567: EMPTY
8568: LIST
8569: LIST
8570: PUSH
8571: LD_INT 21
8573: PUSH
8574: LD_INT 2
8576: PUSH
8577: EMPTY
8578: LIST
8579: LIST
8580: PUSH
8581: EMPTY
8582: LIST
8583: LIST
8584: LIST
8585: PPUSH
8586: CALL_OW 69
8590: ST_TO_ADDR
// vehikly = vehikly diff arab_attack_list ;
8591: LD_ADDR_VAR 0 17
8595: PUSH
8596: LD_VAR 0 17
8600: PUSH
8601: LD_EXP 28
8605: DIFF
8606: ST_TO_ADDR
// vehikly = vehikly diff purple_attack_list ;
8607: LD_ADDR_VAR 0 17
8611: PUSH
8612: LD_VAR 0 17
8616: PUSH
8617: LD_EXP 29
8621: DIFF
8622: ST_TO_ADDR
// vehikly = vehikly diff amik_attack_list ;
8623: LD_ADDR_VAR 0 17
8627: PUSH
8628: LD_VAR 0 17
8632: PUSH
8633: LD_EXP 30
8637: DIFF
8638: ST_TO_ADDR
// vehikly = vehikly diff ar_vznasedlo diff FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_radar ] ] ) diff FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_cargo_bay ] ] ) diff FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) diff arab_attack_list diff amik_attack_list diff purple_attack_list ;
8639: LD_ADDR_VAR 0 17
8643: PUSH
8644: LD_VAR 0 17
8648: PUSH
8649: LD_EXP 85
8653: DIFF
8654: PUSH
8655: LD_INT 22
8657: PUSH
8658: LD_EXP 23
8662: PUSH
8663: EMPTY
8664: LIST
8665: LIST
8666: PUSH
8667: LD_INT 21
8669: PUSH
8670: LD_INT 2
8672: PUSH
8673: EMPTY
8674: LIST
8675: LIST
8676: PUSH
8677: LD_INT 34
8679: PUSH
8680: LD_INT 30
8682: PUSH
8683: EMPTY
8684: LIST
8685: LIST
8686: PUSH
8687: EMPTY
8688: LIST
8689: LIST
8690: LIST
8691: PPUSH
8692: CALL_OW 69
8696: DIFF
8697: PUSH
8698: LD_INT 22
8700: PUSH
8701: LD_EXP 23
8705: PUSH
8706: EMPTY
8707: LIST
8708: LIST
8709: PUSH
8710: LD_INT 21
8712: PUSH
8713: LD_INT 2
8715: PUSH
8716: EMPTY
8717: LIST
8718: LIST
8719: PUSH
8720: LD_INT 34
8722: PUSH
8723: LD_INT 32
8725: PUSH
8726: EMPTY
8727: LIST
8728: LIST
8729: PUSH
8730: EMPTY
8731: LIST
8732: LIST
8733: LIST
8734: PPUSH
8735: CALL_OW 69
8739: DIFF
8740: PUSH
8741: LD_INT 21
8743: PUSH
8744: LD_INT 2
8746: PUSH
8747: EMPTY
8748: LIST
8749: LIST
8750: PUSH
8751: LD_INT 34
8753: PUSH
8754: LD_INT 12
8756: PUSH
8757: EMPTY
8758: LIST
8759: LIST
8760: PUSH
8761: EMPTY
8762: LIST
8763: LIST
8764: PPUSH
8765: CALL_OW 69
8769: DIFF
8770: PUSH
8771: LD_EXP 28
8775: DIFF
8776: PUSH
8777: LD_EXP 30
8781: DIFF
8782: PUSH
8783: LD_EXP 29
8787: DIFF
8788: ST_TO_ADDR
// if vehikly then
8789: LD_VAR 0 17
8793: IFFALSE 8884
// for un in vehikly do
8795: LD_ADDR_VAR 0 5
8799: PUSH
8800: LD_VAR 0 17
8804: PUSH
8805: FOR_IN
8806: IFFALSE 8882
// begin if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
8808: LD_VAR 0 5
8812: PPUSH
8813: LD_VAR 0 5
8817: PPUSH
8818: CALL 11423 0 1
8822: PPUSH
8823: CALL_OW 299
8827: PUSH
8828: LD_INT 4
8830: GREATER
8831: IFFALSE 8854
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
8833: LD_VAR 0 5
8837: PPUSH
8838: LD_VAR 0 5
8842: PPUSH
8843: CALL 11423 0 1
8847: PPUSH
8848: CALL_OW 113
8852: GO 8880
// if GetLives ( un ) < hranice_oprava_utek then
8854: LD_VAR 0 5
8858: PPUSH
8859: CALL_OW 256
8863: PUSH
8864: LD_EXP 49
8868: LESS
8869: IFFALSE 8880
// UtecDoNejblizsiRepairOblasti ( un ) end ;
8871: LD_VAR 0 5
8875: PPUSH
8876: CALL 12001 0 1
8880: GO 8805
8882: POP
8883: POP
// end ; end ;
8884: LD_VAR 0 2
8888: RET
// function AI_cast2 ( strana ) ; var i , side , un , labaky , tovarny , doktori , mechanici , lidi , lidi_red , auta , auta_red , jednotky_red , bazuky , nepritel , nepritel_red , dice , x , y , c , bude_space , nepritel_red_vehs , nekdo_jde_hackovat , nejblizsi_na_opravu , mpocit , dalkova_vez ; begin
8889: LD_INT 0
8891: PPUSH
8892: PPUSH
8893: PPUSH
8894: PPUSH
8895: PPUSH
8896: PPUSH
8897: PPUSH
8898: PPUSH
8899: PPUSH
8900: PPUSH
8901: PPUSH
8902: PPUSH
8903: PPUSH
8904: PPUSH
8905: PPUSH
8906: PPUSH
8907: PPUSH
8908: PPUSH
8909: PPUSH
8910: PPUSH
8911: PPUSH
8912: PPUSH
8913: PPUSH
8914: PPUSH
8915: PPUSH
8916: PPUSH
// DoBunkru ( strana ) ;
8917: LD_VAR 0 1
8921: PPUSH
8922: CALL 10793 0 1
// side = strana ;
8926: LD_ADDR_VAR 0 4
8930: PUSH
8931: LD_VAR 0 1
8935: ST_TO_ADDR
// begin doktori = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_scientistic ] ] ) ;
8936: LD_ADDR_VAR 0 8
8940: PUSH
8941: LD_INT 50
8943: PUSH
8944: EMPTY
8945: LIST
8946: PUSH
8947: LD_INT 22
8949: PUSH
8950: LD_VAR 0 4
8954: PUSH
8955: EMPTY
8956: LIST
8957: LIST
8958: PUSH
8959: LD_INT 25
8961: PUSH
8962: LD_INT 4
8964: PUSH
8965: EMPTY
8966: LIST
8967: LIST
8968: PUSH
8969: EMPTY
8970: LIST
8971: LIST
8972: LIST
8973: PPUSH
8974: CALL_OW 69
8978: ST_TO_ADDR
// lidi = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_outside ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
8979: LD_ADDR_VAR 0 10
8983: PUSH
8984: LD_INT 52
8986: PUSH
8987: EMPTY
8988: LIST
8989: PUSH
8990: LD_INT 22
8992: PUSH
8993: LD_VAR 0 4
8997: PUSH
8998: EMPTY
8999: LIST
9000: LIST
9001: PUSH
9002: LD_INT 21
9004: PUSH
9005: LD_INT 1
9007: PUSH
9008: EMPTY
9009: LIST
9010: LIST
9011: PUSH
9012: LD_INT 56
9014: PUSH
9015: EMPTY
9016: LIST
9017: PUSH
9018: LD_INT 3
9020: PUSH
9021: LD_INT 24
9023: PUSH
9024: LD_INT 1000
9026: PUSH
9027: EMPTY
9028: LIST
9029: LIST
9030: PUSH
9031: EMPTY
9032: LIST
9033: LIST
9034: PUSH
9035: EMPTY
9036: LIST
9037: LIST
9038: LIST
9039: LIST
9040: LIST
9041: PPUSH
9042: CALL_OW 69
9046: ST_TO_ADDR
// lidi_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
9047: LD_ADDR_VAR 0 11
9051: PUSH
9052: LD_INT 52
9054: PUSH
9055: EMPTY
9056: LIST
9057: PUSH
9058: LD_INT 22
9060: PUSH
9061: LD_VAR 0 4
9065: PUSH
9066: EMPTY
9067: LIST
9068: LIST
9069: PUSH
9070: LD_INT 21
9072: PUSH
9073: LD_INT 1
9075: PUSH
9076: EMPTY
9077: LIST
9078: LIST
9079: PUSH
9080: LD_INT 3
9082: PUSH
9083: LD_INT 24
9085: PUSH
9086: LD_INT 250
9088: PUSH
9089: EMPTY
9090: LIST
9091: LIST
9092: PUSH
9093: EMPTY
9094: LIST
9095: LIST
9096: PUSH
9097: EMPTY
9098: LIST
9099: LIST
9100: LIST
9101: LIST
9102: PPUSH
9103: CALL_OW 69
9107: ST_TO_ADDR
// labaky = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) ;
9108: LD_ADDR_VAR 0 6
9112: PUSH
9113: LD_INT 50
9115: PUSH
9116: EMPTY
9117: LIST
9118: PUSH
9119: LD_INT 22
9121: PUSH
9122: LD_VAR 0 4
9126: PUSH
9127: EMPTY
9128: LIST
9129: LIST
9130: PUSH
9131: LD_INT 2
9133: PUSH
9134: LD_INT 30
9136: PUSH
9137: LD_INT 6
9139: PUSH
9140: EMPTY
9141: LIST
9142: LIST
9143: PUSH
9144: LD_INT 30
9146: PUSH
9147: LD_INT 7
9149: PUSH
9150: EMPTY
9151: LIST
9152: LIST
9153: PUSH
9154: LD_INT 30
9156: PUSH
9157: LD_INT 8
9159: PUSH
9160: EMPTY
9161: LIST
9162: LIST
9163: PUSH
9164: EMPTY
9165: LIST
9166: LIST
9167: LIST
9168: LIST
9169: PUSH
9170: EMPTY
9171: LIST
9172: LIST
9173: LIST
9174: PPUSH
9175: CALL_OW 69
9179: ST_TO_ADDR
// nepritel_red_vehs = FilterAllUnits ( [ [ f_not , [ f_lives , 250 ] ] , [ f_side , you ] , [ f_type , unit_vehicle ] ] ) ^ FilterAllUnits ( [ [ f_not , [ f_lives , 250 ] ] , [ f_side , arab ] , [ f_type , unit_vehicle ] ] ) ;
9180: LD_ADDR_VAR 0 23
9184: PUSH
9185: LD_INT 3
9187: PUSH
9188: LD_INT 24
9190: PUSH
9191: LD_INT 250
9193: PUSH
9194: EMPTY
9195: LIST
9196: LIST
9197: PUSH
9198: EMPTY
9199: LIST
9200: LIST
9201: PUSH
9202: LD_INT 22
9204: PUSH
9205: LD_EXP 21
9209: PUSH
9210: EMPTY
9211: LIST
9212: LIST
9213: PUSH
9214: LD_INT 21
9216: PUSH
9217: LD_INT 2
9219: PUSH
9220: EMPTY
9221: LIST
9222: LIST
9223: PUSH
9224: EMPTY
9225: LIST
9226: LIST
9227: LIST
9228: PPUSH
9229: CALL_OW 69
9233: PUSH
9234: LD_INT 3
9236: PUSH
9237: LD_INT 24
9239: PUSH
9240: LD_INT 250
9242: PUSH
9243: EMPTY
9244: LIST
9245: LIST
9246: PUSH
9247: EMPTY
9248: LIST
9249: LIST
9250: PUSH
9251: LD_INT 22
9253: PUSH
9254: LD_EXP 23
9258: PUSH
9259: EMPTY
9260: LIST
9261: LIST
9262: PUSH
9263: LD_INT 21
9265: PUSH
9266: LD_INT 2
9268: PUSH
9269: EMPTY
9270: LIST
9271: LIST
9272: PUSH
9273: EMPTY
9274: LIST
9275: LIST
9276: LIST
9277: PPUSH
9278: CALL_OW 69
9282: ADD
9283: ST_TO_ADDR
// for i in labaky do
9284: LD_ADDR_VAR 0 3
9288: PUSH
9289: LD_VAR 0 6
9293: PUSH
9294: FOR_IN
9295: IFFALSE 9330
// if UnitsInside ( i ) > 5 then
9297: LD_VAR 0 3
9301: PPUSH
9302: CALL_OW 313
9306: PUSH
9307: LD_INT 5
9309: GREATER
9310: IFFALSE 9328
// labaky = labaky diff i ;
9312: LD_ADDR_VAR 0 6
9316: PUSH
9317: LD_VAR 0 6
9321: PUSH
9322: LD_VAR 0 3
9326: DIFF
9327: ST_TO_ADDR
9328: GO 9294
9330: POP
9331: POP
// if doktori then
9332: LD_VAR 0 8
9336: IFFALSE 9822
// for un in doktori do
9338: LD_ADDR_VAR 0 5
9342: PUSH
9343: LD_VAR 0 8
9347: PUSH
9348: FOR_IN
9349: IFFALSE 9820
// begin if GetLives ( un ) < hranice_leceni_utek then
9351: LD_VAR 0 5
9355: PPUSH
9356: CALL_OW 256
9360: PUSH
9361: LD_EXP 47
9365: LESS
9366: IFFALSE 9379
// UtecDoNejblizsiHealOblasti ( un ) else
9368: LD_VAR 0 5
9372: PPUSH
9373: CALL 11891 0 1
9377: GO 9818
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
9379: LD_VAR 0 5
9383: PPUSH
9384: LD_VAR 0 5
9388: PPUSH
9389: CALL 11423 0 1
9393: PPUSH
9394: CALL_OW 299
9398: PUSH
9399: LD_INT 4
9401: GREATER
9402: IFFALSE 9425
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
9404: LD_VAR 0 5
9408: PPUSH
9409: LD_VAR 0 5
9413: PPUSH
9414: CALL 11306 0 1
9418: PPUSH
9419: CALL_OW 113
9423: GO 9818
// if lidi_red and IsInArea2 ( NearestUnitToUnit2 ( lidi_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( lidi_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi_red , un ) ) < dist_max then
9425: LD_VAR 0 11
9429: PUSH
9430: LD_VAR 0 11
9434: PPUSH
9435: LD_VAR 0 5
9439: PPUSH
9440: CALL 5562 0 2
9444: PPUSH
9445: LD_VAR 0 11
9449: PPUSH
9450: LD_VAR 0 5
9454: PPUSH
9455: CALL 5562 0 2
9459: PPUSH
9460: CALL 11423 0 1
9464: PPUSH
9465: CALL 5648 0 2
9469: AND
9470: PUSH
9471: LD_VAR 0 5
9475: PPUSH
9476: LD_VAR 0 11
9480: PPUSH
9481: LD_VAR 0 5
9485: PPUSH
9486: CALL 5562 0 2
9490: PPUSH
9491: CALL_OW 296
9495: PUSH
9496: LD_EXP 46
9500: LESS
9501: AND
9502: IFFALSE 9545
// begin VyjdiVen ( un ) ;
9504: LD_VAR 0 5
9508: PPUSH
9509: CALL 5478 0 1
// if lidi_red then
9513: LD_VAR 0 11
9517: IFFALSE 9543
// ComHeal ( un , NearestUnitToUnit2 ( lidi_red , un ) ) ;
9519: LD_VAR 0 5
9523: PPUSH
9524: LD_VAR 0 11
9528: PPUSH
9529: LD_VAR 0 5
9533: PPUSH
9534: CALL 5562 0 2
9538: PPUSH
9539: CALL_OW 128
// end else
9543: GO 9818
// if lidi and IsInArea2 ( NearestUnitToUnit2 ( lidi , un ) , NajdiNejblizsiHealAreaExpanded ( NearestUnitToUnit2 ( lidi , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi , un ) ) < dist_max then
9545: LD_VAR 0 10
9549: PUSH
9550: LD_VAR 0 10
9554: PPUSH
9555: LD_VAR 0 5
9559: PPUSH
9560: CALL 5562 0 2
9564: PPUSH
9565: LD_VAR 0 10
9569: PPUSH
9570: LD_VAR 0 5
9574: PPUSH
9575: CALL 5562 0 2
9579: PPUSH
9580: CALL 11306 0 1
9584: PPUSH
9585: CALL 5648 0 2
9589: AND
9590: PUSH
9591: LD_VAR 0 5
9595: PPUSH
9596: LD_VAR 0 10
9600: PPUSH
9601: LD_VAR 0 5
9605: PPUSH
9606: CALL 5562 0 2
9610: PPUSH
9611: CALL_OW 296
9615: PUSH
9616: LD_EXP 46
9620: LESS
9621: AND
9622: IFFALSE 9665
// begin VyjdiVen ( un ) ;
9624: LD_VAR 0 5
9628: PPUSH
9629: CALL 5478 0 1
// if lidi then
9633: LD_VAR 0 10
9637: IFFALSE 9663
// ComHeal ( un , NearestUnitToUnit2 ( lidi , un ) ) ;
9639: LD_VAR 0 5
9643: PPUSH
9644: LD_VAR 0 10
9648: PPUSH
9649: LD_VAR 0 5
9653: PPUSH
9654: CALL 5562 0 2
9658: PPUSH
9659: CALL_OW 128
// end else
9663: GO 9818
// if not GetLives ( un ) = 1000 then
9665: LD_VAR 0 5
9669: PPUSH
9670: CALL_OW 256
9674: PUSH
9675: LD_INT 1000
9677: EQUAL
9678: NOT
9679: IFFALSE 9692
// UtecDoNejblizsiHealOblasti ( un ) else
9681: LD_VAR 0 5
9685: PPUSH
9686: CALL 11891 0 1
9690: GO 9818
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
9692: LD_VAR 0 5
9696: PPUSH
9697: CALL_OW 256
9701: PUSH
9702: LD_INT 1000
9704: EQUAL
9705: PUSH
9706: LD_VAR 0 5
9710: PPUSH
9711: CALL_OW 310
9715: PUSH
9716: LD_INT 0
9718: EQUAL
9719: AND
9720: IFFALSE 9818
// begin ComFree ( un ) ;
9722: LD_VAR 0 5
9726: PPUSH
9727: CALL_OW 139
// if labaky and GetDistUnits ( un , NearestUnitToUnit2 ( labaky , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( labaky , un ) ) < 6 then
9731: LD_VAR 0 6
9735: PUSH
9736: LD_VAR 0 5
9740: PPUSH
9741: LD_VAR 0 6
9745: PPUSH
9746: LD_VAR 0 5
9750: PPUSH
9751: CALL 5562 0 2
9755: PPUSH
9756: CALL_OW 296
9760: PUSH
9761: LD_EXP 46
9765: LESS
9766: AND
9767: PUSH
9768: LD_VAR 0 6
9772: PPUSH
9773: LD_VAR 0 5
9777: PPUSH
9778: CALL 5562 0 2
9782: PPUSH
9783: CALL_OW 313
9787: PUSH
9788: LD_INT 6
9790: LESS
9791: AND
9792: IFFALSE 9818
// ComEnterUnit ( un , NearestUnitToUnit2 ( labaky , un ) ) ;
9794: LD_VAR 0 5
9798: PPUSH
9799: LD_VAR 0 6
9803: PPUSH
9804: LD_VAR 0 5
9808: PPUSH
9809: CALL 5562 0 2
9813: PPUSH
9814: CALL_OW 120
// end ; end ;
9818: GO 9348
9820: POP
9821: POP
// mechanici = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_mechanic ] ] ) ;
9822: LD_ADDR_VAR 0 9
9826: PUSH
9827: LD_INT 50
9829: PUSH
9830: EMPTY
9831: LIST
9832: PUSH
9833: LD_INT 22
9835: PUSH
9836: LD_VAR 0 4
9840: PUSH
9841: EMPTY
9842: LIST
9843: LIST
9844: PUSH
9845: LD_INT 25
9847: PUSH
9848: LD_INT 3
9850: PUSH
9851: EMPTY
9852: LIST
9853: LIST
9854: PUSH
9855: EMPTY
9856: LIST
9857: LIST
9858: LIST
9859: PPUSH
9860: CALL_OW 69
9864: ST_TO_ADDR
// auta = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
9865: LD_ADDR_VAR 0 12
9869: PUSH
9870: LD_INT 52
9872: PUSH
9873: EMPTY
9874: LIST
9875: PUSH
9876: LD_INT 22
9878: PUSH
9879: LD_VAR 0 4
9883: PUSH
9884: EMPTY
9885: LIST
9886: LIST
9887: PUSH
9888: LD_INT 21
9890: PUSH
9891: LD_INT 2
9893: PUSH
9894: EMPTY
9895: LIST
9896: LIST
9897: PUSH
9898: LD_INT 3
9900: PUSH
9901: LD_INT 24
9903: PUSH
9904: LD_INT 1000
9906: PUSH
9907: EMPTY
9908: LIST
9909: LIST
9910: PUSH
9911: EMPTY
9912: LIST
9913: LIST
9914: PUSH
9915: EMPTY
9916: LIST
9917: LIST
9918: LIST
9919: LIST
9920: PPUSH
9921: CALL_OW 69
9925: ST_TO_ADDR
// auta_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
9926: LD_ADDR_VAR 0 13
9930: PUSH
9931: LD_INT 52
9933: PUSH
9934: EMPTY
9935: LIST
9936: PUSH
9937: LD_INT 22
9939: PUSH
9940: LD_VAR 0 4
9944: PUSH
9945: EMPTY
9946: LIST
9947: LIST
9948: PUSH
9949: LD_INT 21
9951: PUSH
9952: LD_INT 2
9954: PUSH
9955: EMPTY
9956: LIST
9957: LIST
9958: PUSH
9959: LD_INT 3
9961: PUSH
9962: LD_INT 24
9964: PUSH
9965: LD_INT 250
9967: PUSH
9968: EMPTY
9969: LIST
9970: LIST
9971: PUSH
9972: EMPTY
9973: LIST
9974: LIST
9975: PUSH
9976: EMPTY
9977: LIST
9978: LIST
9979: LIST
9980: LIST
9981: PPUSH
9982: CALL_OW 69
9986: ST_TO_ADDR
// tovarny = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) ;
9987: LD_ADDR_VAR 0 7
9991: PUSH
9992: LD_INT 50
9994: PUSH
9995: EMPTY
9996: LIST
9997: PUSH
9998: LD_INT 22
10000: PUSH
10001: LD_VAR 0 4
10005: PUSH
10006: EMPTY
10007: LIST
10008: LIST
10009: PUSH
10010: LD_INT 2
10012: PUSH
10013: LD_INT 30
10015: PUSH
10016: LD_INT 2
10018: PUSH
10019: EMPTY
10020: LIST
10021: LIST
10022: PUSH
10023: LD_INT 30
10025: PUSH
10026: LD_INT 3
10028: PUSH
10029: EMPTY
10030: LIST
10031: LIST
10032: PUSH
10033: EMPTY
10034: LIST
10035: LIST
10036: LIST
10037: PUSH
10038: EMPTY
10039: LIST
10040: LIST
10041: LIST
10042: PPUSH
10043: CALL_OW 69
10047: ST_TO_ADDR
// dalkova_vez = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_btype , b_control_tower ] ] ) ;
10048: LD_ADDR_VAR 0 27
10052: PUSH
10053: LD_INT 50
10055: PUSH
10056: EMPTY
10057: LIST
10058: PUSH
10059: LD_INT 22
10061: PUSH
10062: LD_VAR 0 4
10066: PUSH
10067: EMPTY
10068: LIST
10069: LIST
10070: PUSH
10071: LD_INT 30
10073: PUSH
10074: LD_INT 36
10076: PUSH
10077: EMPTY
10078: LIST
10079: LIST
10080: PUSH
10081: EMPTY
10082: LIST
10083: LIST
10084: LIST
10085: PPUSH
10086: CALL_OW 69
10090: ST_TO_ADDR
// for i in tovarny do
10091: LD_ADDR_VAR 0 3
10095: PUSH
10096: LD_VAR 0 7
10100: PUSH
10101: FOR_IN
10102: IFFALSE 10137
// if UnitsInside ( i ) > 5 then
10104: LD_VAR 0 3
10108: PPUSH
10109: CALL_OW 313
10113: PUSH
10114: LD_INT 5
10116: GREATER
10117: IFFALSE 10135
// tovarny = tovarny diff i ;
10119: LD_ADDR_VAR 0 7
10123: PUSH
10124: LD_VAR 0 7
10128: PUSH
10129: LD_VAR 0 3
10133: DIFF
10134: ST_TO_ADDR
10135: GO 10101
10137: POP
10138: POP
// if mechanici then
10139: LD_VAR 0 9
10143: IFFALSE 10788
// for un in mechanici do
10145: LD_ADDR_VAR 0 5
10149: PUSH
10150: LD_VAR 0 9
10154: PUSH
10155: FOR_IN
10156: IFFALSE 10786
// begin if not GetBType ( IsInUnit ( un ) ) = b_control_tower then
10158: LD_VAR 0 5
10162: PPUSH
10163: CALL_OW 310
10167: PPUSH
10168: CALL_OW 266
10172: PUSH
10173: LD_INT 36
10175: EQUAL
10176: NOT
10177: IFFALSE 10784
// begin if GetLives ( un ) < hranice_leceni_utek then
10179: LD_VAR 0 5
10183: PPUSH
10184: CALL_OW 256
10188: PUSH
10189: LD_EXP 47
10193: LESS
10194: IFFALSE 10207
// UtecDoNejblizsiHealOblasti ( un ) else
10196: LD_VAR 0 5
10200: PPUSH
10201: CALL 11891 0 1
10205: GO 10784
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
10207: LD_VAR 0 5
10211: PPUSH
10212: CALL_OW 256
10216: PUSH
10217: LD_INT 1000
10219: LESS
10220: PUSH
10221: LD_VAR 0 5
10225: PPUSH
10226: LD_VAR 0 5
10230: PPUSH
10231: CALL 11189 0 1
10235: PPUSH
10236: CALL 5648 0 2
10240: AND
10241: IFFALSE 10245
// else
10243: GO 10784
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
10245: LD_VAR 0 5
10249: PPUSH
10250: LD_VAR 0 5
10254: PPUSH
10255: CALL 11423 0 1
10259: PPUSH
10260: CALL_OW 299
10264: PUSH
10265: LD_INT 4
10267: GREATER
10268: IFFALSE 10291
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
10270: LD_VAR 0 5
10274: PPUSH
10275: LD_VAR 0 5
10279: PPUSH
10280: CALL 11306 0 1
10284: PPUSH
10285: CALL_OW 113
10289: GO 10784
// if auta_red and MuzeJitOpravovatCerveny ( un ) and IsInArea2 ( NearestUnitToUnit2 ( auta_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( auta_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta_red , un ) ) < dist_max then
10291: LD_VAR 0 13
10295: PUSH
10296: LD_VAR 0 5
10300: PPUSH
10301: CALL 12209 0 1
10305: AND
10306: PUSH
10307: LD_VAR 0 13
10311: PPUSH
10312: LD_VAR 0 5
10316: PPUSH
10317: CALL 5562 0 2
10321: PPUSH
10322: LD_VAR 0 13
10326: PPUSH
10327: LD_VAR 0 5
10331: PPUSH
10332: CALL 5562 0 2
10336: PPUSH
10337: CALL 11423 0 1
10341: PPUSH
10342: CALL 5648 0 2
10346: AND
10347: PUSH
10348: LD_VAR 0 5
10352: PPUSH
10353: LD_VAR 0 13
10357: PPUSH
10358: LD_VAR 0 5
10362: PPUSH
10363: CALL 5562 0 2
10367: PPUSH
10368: CALL_OW 296
10372: PUSH
10373: LD_EXP 46
10377: LESS
10378: AND
10379: IFFALSE 10422
// begin VyjdiVen ( un ) ;
10381: LD_VAR 0 5
10385: PPUSH
10386: CALL 5478 0 1
// if auta_red then
10390: LD_VAR 0 13
10394: IFFALSE 10420
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta_red , un ) ) ;
10396: LD_VAR 0 5
10400: PPUSH
10401: LD_VAR 0 13
10405: PPUSH
10406: LD_VAR 0 5
10410: PPUSH
10411: CALL 5562 0 2
10415: PPUSH
10416: CALL_OW 129
// end else
10420: GO 10784
// if auta and IsInArea2 ( NearestUnitToUnit2 ( auta , un ) , NajdiNejblizsiRepairAreaExpanded ( NearestUnitToUnit2 ( auta , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta , un ) ) < dist_max then
10422: LD_VAR 0 12
10426: PUSH
10427: LD_VAR 0 12
10431: PPUSH
10432: LD_VAR 0 5
10436: PPUSH
10437: CALL 5562 0 2
10441: PPUSH
10442: LD_VAR 0 12
10446: PPUSH
10447: LD_VAR 0 5
10451: PPUSH
10452: CALL 5562 0 2
10456: PPUSH
10457: CALL 11657 0 1
10461: PPUSH
10462: CALL 5648 0 2
10466: AND
10467: PUSH
10468: LD_VAR 0 5
10472: PPUSH
10473: LD_VAR 0 12
10477: PPUSH
10478: LD_VAR 0 5
10482: PPUSH
10483: CALL 5562 0 2
10487: PPUSH
10488: CALL_OW 296
10492: PUSH
10493: LD_EXP 46
10497: LESS
10498: AND
10499: IFFALSE 10542
// begin VyjdiVen ( un ) ;
10501: LD_VAR 0 5
10505: PPUSH
10506: CALL 5478 0 1
// if auta then
10510: LD_VAR 0 12
10514: IFFALSE 10540
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta , un ) ) ;
10516: LD_VAR 0 5
10520: PPUSH
10521: LD_VAR 0 12
10525: PPUSH
10526: LD_VAR 0 5
10530: PPUSH
10531: CALL 5562 0 2
10535: PPUSH
10536: CALL_OW 129
// end else
10540: GO 10784
// if not GetLives ( un ) = 1000 then
10542: LD_VAR 0 5
10546: PPUSH
10547: CALL_OW 256
10551: PUSH
10552: LD_INT 1000
10554: EQUAL
10555: NOT
10556: IFFALSE 10569
// UtecDoNejblizsiHealOblasti ( un ) else
10558: LD_VAR 0 5
10562: PPUSH
10563: CALL 11891 0 1
10567: GO 10784
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
10569: LD_VAR 0 5
10573: PPUSH
10574: CALL_OW 256
10578: PUSH
10579: LD_INT 1000
10581: EQUAL
10582: PUSH
10583: LD_VAR 0 5
10587: PPUSH
10588: CALL_OW 310
10592: PUSH
10593: LD_INT 0
10595: EQUAL
10596: AND
10597: IFFALSE 10784
// begin ComFree ( un ) ;
10599: LD_VAR 0 5
10603: PPUSH
10604: CALL_OW 139
// if dalkova_vez and GetDistUnits ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( dalkova_vez , un ) ) < 3 then
10608: LD_VAR 0 27
10612: PUSH
10613: LD_VAR 0 5
10617: PPUSH
10618: LD_VAR 0 27
10622: PPUSH
10623: LD_VAR 0 5
10627: PPUSH
10628: CALL 5562 0 2
10632: PPUSH
10633: CALL_OW 296
10637: PUSH
10638: LD_EXP 46
10642: LESS
10643: AND
10644: PUSH
10645: LD_VAR 0 27
10649: PPUSH
10650: LD_VAR 0 5
10654: PPUSH
10655: CALL 5562 0 2
10659: PPUSH
10660: CALL_OW 313
10664: PUSH
10665: LD_INT 3
10667: LESS
10668: AND
10669: IFFALSE 10697
// ComEnterUnit ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) else
10671: LD_VAR 0 5
10675: PPUSH
10676: LD_VAR 0 27
10680: PPUSH
10681: LD_VAR 0 5
10685: PPUSH
10686: CALL 5562 0 2
10690: PPUSH
10691: CALL_OW 120
10695: GO 10784
// if tovarny and GetDistUnits ( un , NearestUnitToUnit2 ( tovarny , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( tovarny , un ) ) < 6 then
10697: LD_VAR 0 7
10701: PUSH
10702: LD_VAR 0 5
10706: PPUSH
10707: LD_VAR 0 7
10711: PPUSH
10712: LD_VAR 0 5
10716: PPUSH
10717: CALL 5562 0 2
10721: PPUSH
10722: CALL_OW 296
10726: PUSH
10727: LD_EXP 46
10731: LESS
10732: AND
10733: PUSH
10734: LD_VAR 0 7
10738: PPUSH
10739: LD_VAR 0 5
10743: PPUSH
10744: CALL 5562 0 2
10748: PPUSH
10749: CALL_OW 313
10753: PUSH
10754: LD_INT 6
10756: LESS
10757: AND
10758: IFFALSE 10784
// ComEnterUnit ( un , NearestUnitToUnit2 ( tovarny , un ) ) ;
10760: LD_VAR 0 5
10764: PPUSH
10765: LD_VAR 0 7
10769: PPUSH
10770: LD_VAR 0 5
10774: PPUSH
10775: CALL 5562 0 2
10779: PPUSH
10780: CALL_OW 120
// end ; end ; end ;
10784: GO 10155
10786: POP
10787: POP
// end ; end ;
10788: LD_VAR 0 2
10792: RET
// var poslednitick ; function DoBunkru ( side ) ; var vojaci , vojaciout , volne_bunkry , kasy , cl ; begin
10793: LD_INT 0
10795: PPUSH
10796: PPUSH
10797: PPUSH
10798: PPUSH
10799: PPUSH
10800: PPUSH
// if not poslednitick then
10801: LD_LOC 1
10805: NOT
10806: IFFALSE 10818
// poslednitick = tick ;
10808: LD_ADDR_LOC 1
10812: PUSH
10813: LD_OWVAR 1
10817: ST_TO_ADDR
// if tick > poslednitick + 100 then
10818: LD_OWVAR 1
10822: PUSH
10823: LD_LOC 1
10827: PUSH
10828: LD_INT 100
10830: PLUS
10831: GREATER
10832: IFFALSE 11184
// begin vojaciout = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_outside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] , [ f_class , class_bazooker ] , [ f_class , class_mortar ] ] ] ) ;
10834: LD_ADDR_VAR 0 4
10838: PUSH
10839: LD_INT 50
10841: PUSH
10842: EMPTY
10843: LIST
10844: PUSH
10845: LD_INT 22
10847: PUSH
10848: LD_VAR 0 1
10852: PUSH
10853: EMPTY
10854: LIST
10855: LIST
10856: PUSH
10857: LD_INT 56
10859: PUSH
10860: EMPTY
10861: LIST
10862: PUSH
10863: LD_INT 2
10865: PUSH
10866: LD_INT 25
10868: PUSH
10869: LD_INT 1
10871: PUSH
10872: EMPTY
10873: LIST
10874: LIST
10875: PUSH
10876: LD_INT 25
10878: PUSH
10879: LD_INT 5
10881: PUSH
10882: EMPTY
10883: LIST
10884: LIST
10885: PUSH
10886: LD_INT 25
10888: PUSH
10889: LD_INT 9
10891: PUSH
10892: EMPTY
10893: LIST
10894: LIST
10895: PUSH
10896: LD_INT 25
10898: PUSH
10899: LD_INT 8
10901: PUSH
10902: EMPTY
10903: LIST
10904: LIST
10905: PUSH
10906: EMPTY
10907: LIST
10908: LIST
10909: LIST
10910: LIST
10911: LIST
10912: PUSH
10913: EMPTY
10914: LIST
10915: LIST
10916: LIST
10917: LIST
10918: PPUSH
10919: CALL_OW 69
10923: ST_TO_ADDR
// volne_bunkry = FilterAllUnits ( [ [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_ok ] , [ f_side , side ] , [ f_empty ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
10924: LD_ADDR_VAR 0 5
10928: PUSH
10929: LD_INT 52
10931: PUSH
10932: EMPTY
10933: LIST
10934: PUSH
10935: LD_INT 3
10937: PUSH
10938: LD_INT 57
10940: PUSH
10941: EMPTY
10942: LIST
10943: PUSH
10944: EMPTY
10945: LIST
10946: LIST
10947: PUSH
10948: LD_INT 50
10950: PUSH
10951: EMPTY
10952: LIST
10953: PUSH
10954: LD_INT 22
10956: PUSH
10957: LD_VAR 0 1
10961: PUSH
10962: EMPTY
10963: LIST
10964: LIST
10965: PUSH
10966: LD_INT 58
10968: PUSH
10969: EMPTY
10970: LIST
10971: PUSH
10972: LD_INT 2
10974: PUSH
10975: LD_INT 30
10977: PUSH
10978: LD_INT 31
10980: PUSH
10981: EMPTY
10982: LIST
10983: LIST
10984: PUSH
10985: LD_INT 30
10987: PUSH
10988: LD_INT 32
10990: PUSH
10991: EMPTY
10992: LIST
10993: LIST
10994: PUSH
10995: EMPTY
10996: LIST
10997: LIST
10998: LIST
10999: PUSH
11000: EMPTY
11001: LIST
11002: LIST
11003: LIST
11004: LIST
11005: LIST
11006: LIST
11007: PPUSH
11008: CALL_OW 69
11012: ST_TO_ADDR
// kasy = FilterAllUnits ( [ [ f_placed ] , [ f_not , [ f_constructed ] ] , [ f_not , [ f_empty ] ] , [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ] ) ;
11013: LD_ADDR_VAR 0 6
11017: PUSH
11018: LD_INT 52
11020: PUSH
11021: EMPTY
11022: LIST
11023: PUSH
11024: LD_INT 3
11026: PUSH
11027: LD_INT 57
11029: PUSH
11030: EMPTY
11031: LIST
11032: PUSH
11033: EMPTY
11034: LIST
11035: LIST
11036: PUSH
11037: LD_INT 3
11039: PUSH
11040: LD_INT 58
11042: PUSH
11043: EMPTY
11044: LIST
11045: PUSH
11046: EMPTY
11047: LIST
11048: LIST
11049: PUSH
11050: LD_INT 50
11052: PUSH
11053: EMPTY
11054: LIST
11055: PUSH
11056: LD_INT 22
11058: PUSH
11059: LD_VAR 0 1
11063: PUSH
11064: EMPTY
11065: LIST
11066: LIST
11067: PUSH
11068: LD_INT 2
11070: PUSH
11071: LD_INT 30
11073: PUSH
11074: LD_INT 4
11076: PUSH
11077: EMPTY
11078: LIST
11079: LIST
11080: PUSH
11081: LD_INT 30
11083: PUSH
11084: LD_INT 5
11086: PUSH
11087: EMPTY
11088: LIST
11089: LIST
11090: PUSH
11091: EMPTY
11092: LIST
11093: LIST
11094: LIST
11095: PUSH
11096: EMPTY
11097: LIST
11098: LIST
11099: LIST
11100: LIST
11101: LIST
11102: LIST
11103: PPUSH
11104: CALL_OW 69
11108: ST_TO_ADDR
// if volne_bunkry and kasy and not vojaciout then
11109: LD_VAR 0 5
11113: PUSH
11114: LD_VAR 0 6
11118: AND
11119: PUSH
11120: LD_VAR 0 4
11124: NOT
11125: AND
11126: IFFALSE 11184
// begin cl = UnitsInside ( kasy [ 1 ] ) [ 1 ] ;
11128: LD_ADDR_VAR 0 7
11132: PUSH
11133: LD_VAR 0 6
11137: PUSH
11138: LD_INT 1
11140: ARRAY
11141: PPUSH
11142: CALL_OW 313
11146: PUSH
11147: LD_INT 1
11149: ARRAY
11150: ST_TO_ADDR
// if cl then
11151: LD_VAR 0 7
11155: IFFALSE 11184
// begin VyjdiVen ( cl ) ;
11157: LD_VAR 0 7
11161: PPUSH
11162: CALL 5478 0 1
// ComEnterUnit ( cl , volne_bunkry [ 1 ] ) ;
11166: LD_VAR 0 7
11170: PPUSH
11171: LD_VAR 0 5
11175: PUSH
11176: LD_INT 1
11178: ARRAY
11179: PPUSH
11180: CALL_OW 120
// end ; end ; end ; end ;
11184: LD_VAR 0 2
11188: RET
// export function NajdiNejblizsiHealArea ( un ) ; begin
11189: LD_INT 0
11191: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 168 , 99 ] :
11192: LD_EXP 50
11196: PPUSH
11197: LD_VAR 0 1
11201: PPUSH
11202: CALL_OW 250
11206: PPUSH
11207: LD_VAR 0 1
11211: PPUSH
11212: CALL_OW 251
11216: PPUSH
11217: CALL_OW 439
11221: PUSH
11222: LD_INT 168
11224: PUSH
11225: LD_INT 99
11227: PUSH
11228: EMPTY
11229: LIST
11230: LIST
11231: DOUBLE
11232: EQUAL
11233: IFTRUE 11237
11235: GO 11248
11237: POP
// result = ArLeceni ; [ 114 , 11 ] :
11238: LD_ADDR_VAR 0 2
11242: PUSH
11243: LD_INT 18
11245: ST_TO_ADDR
11246: GO 11301
11248: LD_INT 114
11250: PUSH
11251: LD_INT 11
11253: PUSH
11254: EMPTY
11255: LIST
11256: LIST
11257: DOUBLE
11258: EQUAL
11259: IFTRUE 11263
11261: GO 11274
11263: POP
// result = PurpleLeceni ; [ 216 , 78 ] :
11264: LD_ADDR_VAR 0 2
11268: PUSH
11269: LD_INT 20
11271: ST_TO_ADDR
11272: GO 11301
11274: LD_INT 216
11276: PUSH
11277: LD_INT 78
11279: PUSH
11280: EMPTY
11281: LIST
11282: LIST
11283: DOUBLE
11284: EQUAL
11285: IFTRUE 11289
11287: GO 11300
11289: POP
// result = AmikLeceni ; end ;
11290: LD_ADDR_VAR 0 2
11294: PUSH
11295: LD_INT 22
11297: ST_TO_ADDR
11298: GO 11301
11300: POP
// end ;
11301: LD_VAR 0 2
11305: RET
// export function NajdiNejblizsiHealAreaExpanded ( un ) ; begin
11306: LD_INT 0
11308: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 168 , 99 ] :
11309: LD_EXP 50
11313: PPUSH
11314: LD_VAR 0 1
11318: PPUSH
11319: CALL_OW 250
11323: PPUSH
11324: LD_VAR 0 1
11328: PPUSH
11329: CALL_OW 251
11333: PPUSH
11334: CALL_OW 439
11338: PUSH
11339: LD_INT 168
11341: PUSH
11342: LD_INT 99
11344: PUSH
11345: EMPTY
11346: LIST
11347: LIST
11348: DOUBLE
11349: EQUAL
11350: IFTRUE 11354
11352: GO 11365
11354: POP
// result = ArLeceniExpanded ; [ 114 , 11 ] :
11355: LD_ADDR_VAR 0 2
11359: PUSH
11360: LD_INT 19
11362: ST_TO_ADDR
11363: GO 11418
11365: LD_INT 114
11367: PUSH
11368: LD_INT 11
11370: PUSH
11371: EMPTY
11372: LIST
11373: LIST
11374: DOUBLE
11375: EQUAL
11376: IFTRUE 11380
11378: GO 11391
11380: POP
// result = PurpleLeceniExpanded ; [ 216 , 78 ] :
11381: LD_ADDR_VAR 0 2
11385: PUSH
11386: LD_INT 21
11388: ST_TO_ADDR
11389: GO 11418
11391: LD_INT 216
11393: PUSH
11394: LD_INT 78
11396: PUSH
11397: EMPTY
11398: LIST
11399: LIST
11400: DOUBLE
11401: EQUAL
11402: IFTRUE 11406
11404: GO 11417
11406: POP
// result = AmikLeceniExpanded ; end ;
11407: LD_ADDR_VAR 0 2
11411: PUSH
11412: LD_INT 23
11414: ST_TO_ADDR
11415: GO 11418
11417: POP
// end ;
11418: LD_VAR 0 2
11422: RET
// export function NajdiNejblizsiBaseArea ( un ) ; begin
11423: LD_INT 0
11425: PPUSH
// case FindNearestPoint ( stredy_baz , GetX ( un ) , GetY ( un ) ) of [ 167 , 97 ] :
11426: LD_EXP 52
11430: PPUSH
11431: LD_VAR 0 1
11435: PPUSH
11436: CALL_OW 250
11440: PPUSH
11441: LD_VAR 0 1
11445: PPUSH
11446: CALL_OW 251
11450: PPUSH
11451: CALL_OW 439
11455: PUSH
11456: LD_INT 167
11458: PUSH
11459: LD_INT 97
11461: PUSH
11462: EMPTY
11463: LIST
11464: LIST
11465: DOUBLE
11466: EQUAL
11467: IFTRUE 11471
11469: GO 11482
11471: POP
// result = ArBaza ; [ 123 , 12 ] :
11472: LD_ADDR_VAR 0 2
11476: PUSH
11477: LD_INT 15
11479: ST_TO_ADDR
11480: GO 11535
11482: LD_INT 123
11484: PUSH
11485: LD_INT 12
11487: PUSH
11488: EMPTY
11489: LIST
11490: LIST
11491: DOUBLE
11492: EQUAL
11493: IFTRUE 11497
11495: GO 11508
11497: POP
// result = PurpleBaza ; [ 214 , 71 ] :
11498: LD_ADDR_VAR 0 2
11502: PUSH
11503: LD_INT 16
11505: ST_TO_ADDR
11506: GO 11535
11508: LD_INT 214
11510: PUSH
11511: LD_INT 71
11513: PUSH
11514: EMPTY
11515: LIST
11516: LIST
11517: DOUBLE
11518: EQUAL
11519: IFTRUE 11523
11521: GO 11534
11523: POP
// result = AmikBaza ; end ;
11524: LD_ADDR_VAR 0 2
11528: PUSH
11529: LD_INT 17
11531: ST_TO_ADDR
11532: GO 11535
11534: POP
// end ;
11535: LD_VAR 0 2
11539: RET
// export function NajdiNejblizsiRepairArea ( un ) ; begin
11540: LD_INT 0
11542: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 171 , 89 ] :
11543: LD_EXP 51
11547: PPUSH
11548: LD_VAR 0 1
11552: PPUSH
11553: CALL_OW 250
11557: PPUSH
11558: LD_VAR 0 1
11562: PPUSH
11563: CALL_OW 251
11567: PPUSH
11568: CALL_OW 439
11572: PUSH
11573: LD_INT 171
11575: PUSH
11576: LD_INT 89
11578: PUSH
11579: EMPTY
11580: LIST
11581: LIST
11582: DOUBLE
11583: EQUAL
11584: IFTRUE 11588
11586: GO 11599
11588: POP
// result = ArRepair ; [ 127 , 15 ] :
11589: LD_ADDR_VAR 0 2
11593: PUSH
11594: LD_INT 24
11596: ST_TO_ADDR
11597: GO 11652
11599: LD_INT 127
11601: PUSH
11602: LD_INT 15
11604: PUSH
11605: EMPTY
11606: LIST
11607: LIST
11608: DOUBLE
11609: EQUAL
11610: IFTRUE 11614
11612: GO 11625
11614: POP
// result = PurpleRepair ; [ 225 , 85 ] :
11615: LD_ADDR_VAR 0 2
11619: PUSH
11620: LD_INT 26
11622: ST_TO_ADDR
11623: GO 11652
11625: LD_INT 225
11627: PUSH
11628: LD_INT 85
11630: PUSH
11631: EMPTY
11632: LIST
11633: LIST
11634: DOUBLE
11635: EQUAL
11636: IFTRUE 11640
11638: GO 11651
11640: POP
// result = AmikRepair ; end ;
11641: LD_ADDR_VAR 0 2
11645: PUSH
11646: LD_INT 28
11648: ST_TO_ADDR
11649: GO 11652
11651: POP
// end ;
11652: LD_VAR 0 2
11656: RET
// function NajdiNejblizsiRepairAreaExpanded ( un ) ; begin
11657: LD_INT 0
11659: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 171 , 89 ] :
11660: LD_EXP 51
11664: PPUSH
11665: LD_VAR 0 1
11669: PPUSH
11670: CALL_OW 250
11674: PPUSH
11675: LD_VAR 0 1
11679: PPUSH
11680: CALL_OW 251
11684: PPUSH
11685: CALL_OW 439
11689: PUSH
11690: LD_INT 171
11692: PUSH
11693: LD_INT 89
11695: PUSH
11696: EMPTY
11697: LIST
11698: LIST
11699: DOUBLE
11700: EQUAL
11701: IFTRUE 11705
11703: GO 11716
11705: POP
// result = ArRepairExpanded ; [ 127 , 15 ] :
11706: LD_ADDR_VAR 0 2
11710: PUSH
11711: LD_INT 25
11713: ST_TO_ADDR
11714: GO 11769
11716: LD_INT 127
11718: PUSH
11719: LD_INT 15
11721: PUSH
11722: EMPTY
11723: LIST
11724: LIST
11725: DOUBLE
11726: EQUAL
11727: IFTRUE 11731
11729: GO 11742
11731: POP
// result = PurpleRepairExpanded ; [ 225 , 85 ] :
11732: LD_ADDR_VAR 0 2
11736: PUSH
11737: LD_INT 27
11739: ST_TO_ADDR
11740: GO 11769
11742: LD_INT 225
11744: PUSH
11745: LD_INT 85
11747: PUSH
11748: EMPTY
11749: LIST
11750: LIST
11751: DOUBLE
11752: EQUAL
11753: IFTRUE 11757
11755: GO 11768
11757: POP
// result = AmikRepairExpanded ; end ;
11758: LD_ADDR_VAR 0 2
11762: PUSH
11763: LD_INT 29
11765: ST_TO_ADDR
11766: GO 11769
11768: POP
// end ;
11769: LD_VAR 0 2
11773: RET
// export function NajdiNejblizsiCarParkArea ( un ) ; begin
11774: LD_INT 0
11776: PPUSH
// case FindNearestPoint ( stredy_carpark_oblasti , GetX ( un ) , GetY ( un ) ) of [ 167 , 98 ] :
11777: LD_EXP 53
11781: PPUSH
11782: LD_VAR 0 1
11786: PPUSH
11787: CALL_OW 250
11791: PPUSH
11792: LD_VAR 0 1
11796: PPUSH
11797: CALL_OW 251
11801: PPUSH
11802: CALL_OW 439
11806: PUSH
11807: LD_INT 167
11809: PUSH
11810: LD_INT 98
11812: PUSH
11813: EMPTY
11814: LIST
11815: LIST
11816: DOUBLE
11817: EQUAL
11818: IFTRUE 11822
11820: GO 11833
11822: POP
// result = ArCarPark ; [ 122 , 15 ] :
11823: LD_ADDR_VAR 0 2
11827: PUSH
11828: LD_INT 30
11830: ST_TO_ADDR
11831: GO 11886
11833: LD_INT 122
11835: PUSH
11836: LD_INT 15
11838: PUSH
11839: EMPTY
11840: LIST
11841: LIST
11842: DOUBLE
11843: EQUAL
11844: IFTRUE 11848
11846: GO 11859
11848: POP
// result = PurpleCarpark ; [ 214 , 70 ] :
11849: LD_ADDR_VAR 0 2
11853: PUSH
11854: LD_INT 31
11856: ST_TO_ADDR
11857: GO 11886
11859: LD_INT 214
11861: PUSH
11862: LD_INT 70
11864: PUSH
11865: EMPTY
11866: LIST
11867: LIST
11868: DOUBLE
11869: EQUAL
11870: IFTRUE 11874
11872: GO 11885
11874: POP
// result = AmikCarPark ; end ;
11875: LD_ADDR_VAR 0 2
11879: PUSH
11880: LD_INT 32
11882: ST_TO_ADDR
11883: GO 11886
11885: POP
// end ;
11886: LD_VAR 0 2
11890: RET
// function UtecDoNejblizsiHealOblasti ( un ) ; begin
11891: LD_INT 0
11893: PPUSH
// VyjdiVen ( un ) ;
11894: LD_VAR 0 1
11898: PPUSH
11899: CALL 5478 0 1
// if not IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
11903: LD_VAR 0 1
11907: PPUSH
11908: LD_VAR 0 1
11912: PPUSH
11913: CALL 11189 0 1
11917: PPUSH
11918: CALL 5648 0 2
11922: NOT
11923: IFFALSE 11944
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) ;
11925: LD_VAR 0 1
11929: PPUSH
11930: LD_VAR 0 1
11934: PPUSH
11935: CALL 11189 0 1
11939: PPUSH
11940: CALL_OW 113
// end ;
11944: LD_VAR 0 2
11948: RET
// function UtecDoNejblizsiCarParkOblasti ( un ) ; begin
11949: LD_INT 0
11951: PPUSH
// if GetDistUnitArea ( un , NajdiNejblizsiCarParkArea ( un ) ) > 4 then
11952: LD_VAR 0 1
11956: PPUSH
11957: LD_VAR 0 1
11961: PPUSH
11962: CALL 11774 0 1
11966: PPUSH
11967: CALL_OW 299
11971: PUSH
11972: LD_INT 4
11974: GREATER
11975: IFFALSE 11996
// begin ComMoveToArea ( un , NajdiNejblizsiCarParkArea ( un ) ) ;
11977: LD_VAR 0 1
11981: PPUSH
11982: LD_VAR 0 1
11986: PPUSH
11987: CALL 11774 0 1
11991: PPUSH
11992: CALL_OW 113
// end ; end ;
11996: LD_VAR 0 2
12000: RET
// export function UtecDoNejblizsiRepairOblasti ( un ) ; begin
12001: LD_INT 0
12003: PPUSH
// if not IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
12004: LD_VAR 0 1
12008: PPUSH
12009: LD_VAR 0 1
12013: PPUSH
12014: CALL 11540 0 1
12018: PPUSH
12019: CALL 5648 0 2
12023: NOT
12024: IFFALSE 12045
// ComMoveToArea ( un , NajdiNejblizsiRepairArea ( un ) ) ;
12026: LD_VAR 0 1
12030: PPUSH
12031: LD_VAR 0 1
12035: PPUSH
12036: CALL 11540 0 1
12040: PPUSH
12041: CALL_OW 113
// end ;
12045: LD_VAR 0 2
12049: RET
// function PocetJednotekCoJdouDoBudov ( list ) ; var pocet , i ; begin
12050: LD_INT 0
12052: PPUSH
12053: PPUSH
12054: PPUSH
// pocet = 0 ;
12055: LD_ADDR_VAR 0 3
12059: PUSH
12060: LD_INT 0
12062: ST_TO_ADDR
// for i in list do
12063: LD_ADDR_VAR 0 4
12067: PUSH
12068: LD_VAR 0 1
12072: PUSH
12073: FOR_IN
12074: IFFALSE 12103
// if JdeDoBudovy ( i ) then
12076: LD_VAR 0 4
12080: PPUSH
12081: CALL 12378 0 1
12085: IFFALSE 12101
// pocet = pocet + 1 ;
12087: LD_ADDR_VAR 0 3
12091: PUSH
12092: LD_VAR 0 3
12096: PUSH
12097: LD_INT 1
12099: PLUS
12100: ST_TO_ADDR
12101: GO 12073
12103: POP
12104: POP
// result = pocet ;
12105: LD_ADDR_VAR 0 2
12109: PUSH
12110: LD_VAR 0 3
12114: ST_TO_ADDR
// end ;
12115: LD_VAR 0 2
12119: RET
// function NejblizsiJednotkaCoNemaTask ( list , budova ) ; var k ; begin
12120: LD_INT 0
12122: PPUSH
12123: PPUSH
// for k in list do
12124: LD_ADDR_VAR 0 4
12128: PUSH
12129: LD_VAR 0 1
12133: PUSH
12134: FOR_IN
12135: IFFALSE 12166
// begin if JdeDoBudovy ( k ) then
12137: LD_VAR 0 4
12141: PPUSH
12142: CALL 12378 0 1
12146: IFFALSE 12164
// list = list diff k ;
12148: LD_ADDR_VAR 0 1
12152: PUSH
12153: LD_VAR 0 1
12157: PUSH
12158: LD_VAR 0 4
12162: DIFF
12163: ST_TO_ADDR
// end ;
12164: GO 12134
12166: POP
12167: POP
// if list then
12168: LD_VAR 0 1
12172: IFFALSE 12196
// result = NearestUnitToUnit ( list , budova ) else
12174: LD_ADDR_VAR 0 3
12178: PUSH
12179: LD_VAR 0 1
12183: PPUSH
12184: LD_VAR 0 2
12188: PPUSH
12189: CALL_OW 74
12193: ST_TO_ADDR
12194: GO 12204
// result = 0 ;
12196: LD_ADDR_VAR 0 3
12200: PUSH
12201: LD_INT 0
12203: ST_TO_ADDR
// end ;
12204: LD_VAR 0 3
12208: RET
// function MuzeJitOpravovatCerveny ( un ) ; var tmp ; begin
12209: LD_INT 0
12211: PPUSH
12212: PPUSH
// tmp = false ;
12213: LD_ADDR_VAR 0 3
12217: PUSH
12218: LD_INT 0
12220: ST_TO_ADDR
// if UnitsInside ( IsInUnit ( un ) ) > 3 then
12221: LD_VAR 0 1
12225: PPUSH
12226: CALL_OW 310
12230: PPUSH
12231: CALL_OW 313
12235: PUSH
12236: LD_INT 3
12238: GREATER
12239: IFFALSE 12259
// begin tmp = true ;
12241: LD_ADDR_VAR 0 3
12245: PUSH
12246: LD_INT 1
12248: ST_TO_ADDR
// result = true ;
12249: LD_ADDR_VAR 0 2
12253: PUSH
12254: LD_INT 1
12256: ST_TO_ADDR
// end else
12257: GO 12267
// result = false ;
12259: LD_ADDR_VAR 0 2
12263: PUSH
12264: LD_INT 0
12266: ST_TO_ADDR
// if not tmp then
12267: LD_VAR 0 3
12271: NOT
12272: IFFALSE 12373
// begin if GetTaskList ( un ) <> 0 then
12274: LD_VAR 0 1
12278: PPUSH
12279: CALL_OW 437
12283: PUSH
12284: LD_INT 0
12286: NONEQUAL
12287: IFFALSE 12365
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = r then
12289: LD_VAR 0 1
12293: PPUSH
12294: CALL_OW 437
12298: PUSH
12299: LD_INT 1
12301: ARRAY
12302: PUSH
12303: LD_INT 1
12305: ARRAY
12306: PUSH
12307: LD_STRING r
12309: EQUAL
12310: IFFALSE 12322
// result = true else
12312: LD_ADDR_VAR 0 2
12316: PUSH
12317: LD_INT 1
12319: ST_TO_ADDR
12320: GO 12363
// if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
12322: LD_VAR 0 1
12326: PPUSH
12327: CALL_OW 437
12331: PUSH
12332: LD_INT 1
12334: ARRAY
12335: PUSH
12336: LD_INT 1
12338: ARRAY
12339: PUSH
12340: LD_STRING e
12342: EQUAL
12343: IFFALSE 12355
// result = true else
12345: LD_ADDR_VAR 0 2
12349: PUSH
12350: LD_INT 1
12352: ST_TO_ADDR
12353: GO 12363
// result = false ;
12355: LD_ADDR_VAR 0 2
12359: PUSH
12360: LD_INT 0
12362: ST_TO_ADDR
// end else
12363: GO 12373
// result = false ;
12365: LD_ADDR_VAR 0 2
12369: PUSH
12370: LD_INT 0
12372: ST_TO_ADDR
// end end ;
12373: LD_VAR 0 2
12377: RET
// function JdeDoBudovy ( un ) ; begin
12378: LD_INT 0
12380: PPUSH
// if GetTaskList ( un ) <> 0 then
12381: LD_VAR 0 1
12385: PPUSH
12386: CALL_OW 437
12390: PUSH
12391: LD_INT 0
12393: NONEQUAL
12394: IFFALSE 12439
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
12396: LD_VAR 0 1
12400: PPUSH
12401: CALL_OW 437
12405: PUSH
12406: LD_INT 1
12408: ARRAY
12409: PUSH
12410: LD_INT 1
12412: ARRAY
12413: PUSH
12414: LD_STRING e
12416: EQUAL
12417: IFFALSE 12429
// result = true else
12419: LD_ADDR_VAR 0 2
12423: PUSH
12424: LD_INT 1
12426: ST_TO_ADDR
12427: GO 12437
// result = false ;
12429: LD_ADDR_VAR 0 2
12433: PUSH
12434: LD_INT 0
12436: ST_TO_ADDR
// end else
12437: GO 12447
// result = false ;
12439: LD_ADDR_VAR 0 2
12443: PUSH
12444: LD_INT 0
12446: ST_TO_ADDR
// end ;
12447: LD_VAR 0 2
12451: RET
// export function NajdiVojaka ; var voj ; begin
12452: LD_INT 0
12454: PPUSH
12455: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod then
12456: LD_INT 24
12458: PUSH
12459: LD_INT 250
12461: PUSH
12462: EMPTY
12463: LIST
12464: LIST
12465: PUSH
12466: LD_INT 23
12468: PUSH
12469: LD_INT 3
12471: PUSH
12472: EMPTY
12473: LIST
12474: LIST
12475: PUSH
12476: LD_INT 22
12478: PUSH
12479: LD_EXP 21
12483: PUSH
12484: EMPTY
12485: LIST
12486: LIST
12487: PUSH
12488: LD_INT 2
12490: PUSH
12491: LD_INT 25
12493: PUSH
12494: LD_INT 1
12496: PUSH
12497: EMPTY
12498: LIST
12499: LIST
12500: PUSH
12501: LD_INT 25
12503: PUSH
12504: LD_INT 9
12506: PUSH
12507: EMPTY
12508: LIST
12509: LIST
12510: PUSH
12511: EMPTY
12512: LIST
12513: LIST
12514: LIST
12515: PUSH
12516: EMPTY
12517: LIST
12518: LIST
12519: LIST
12520: LIST
12521: PPUSH
12522: CALL_OW 69
12526: PUSH
12527: LD_EXP 1
12531: DIFF
12532: IFFALSE 12616
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod ;
12534: LD_ADDR_VAR 0 2
12538: PUSH
12539: LD_INT 24
12541: PUSH
12542: LD_INT 250
12544: PUSH
12545: EMPTY
12546: LIST
12547: LIST
12548: PUSH
12549: LD_INT 23
12551: PUSH
12552: LD_INT 3
12554: PUSH
12555: EMPTY
12556: LIST
12557: LIST
12558: PUSH
12559: LD_INT 22
12561: PUSH
12562: LD_EXP 21
12566: PUSH
12567: EMPTY
12568: LIST
12569: LIST
12570: PUSH
12571: LD_INT 2
12573: PUSH
12574: LD_INT 25
12576: PUSH
12577: LD_INT 1
12579: PUSH
12580: EMPTY
12581: LIST
12582: LIST
12583: PUSH
12584: LD_INT 25
12586: PUSH
12587: LD_INT 9
12589: PUSH
12590: EMPTY
12591: LIST
12592: LIST
12593: PUSH
12594: EMPTY
12595: LIST
12596: LIST
12597: LIST
12598: PUSH
12599: EMPTY
12600: LIST
12601: LIST
12602: LIST
12603: LIST
12604: PPUSH
12605: CALL_OW 69
12609: PUSH
12610: LD_EXP 1
12614: DIFF
12615: ST_TO_ADDR
// if voj then
12616: LD_VAR 0 2
12620: IFFALSE 12648
// result = voj [ Rand ( 1 , voj ) ] else
12622: LD_ADDR_VAR 0 1
12626: PUSH
12627: LD_VAR 0 2
12631: PUSH
12632: LD_INT 1
12634: PPUSH
12635: LD_VAR 0 2
12639: PPUSH
12640: CALL_OW 12
12644: ARRAY
12645: ST_TO_ADDR
12646: GO 12709
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_combat ) ;
12648: LD_ADDR_VAR 0 1
12652: PUSH
12653: LD_INT 24
12655: PUSH
12656: LD_INT 250
12658: PUSH
12659: EMPTY
12660: LIST
12661: LIST
12662: PUSH
12663: LD_INT 23
12665: PUSH
12666: LD_INT 3
12668: PUSH
12669: EMPTY
12670: LIST
12671: LIST
12672: PUSH
12673: LD_INT 22
12675: PUSH
12676: LD_EXP 21
12680: PUSH
12681: EMPTY
12682: LIST
12683: LIST
12684: PUSH
12685: EMPTY
12686: LIST
12687: LIST
12688: LIST
12689: PPUSH
12690: CALL_OW 69
12694: PUSH
12695: LD_EXP 1
12699: DIFF
12700: PPUSH
12701: LD_INT 1
12703: PPUSH
12704: CALL_OW 433
12708: ST_TO_ADDR
// end ;
12709: LD_VAR 0 1
12713: RET
// export function NajdiVedce ; var ved ; begin
12714: LD_INT 0
12716: PPUSH
12717: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod then
12718: LD_INT 24
12720: PUSH
12721: LD_INT 250
12723: PUSH
12724: EMPTY
12725: LIST
12726: LIST
12727: PUSH
12728: LD_INT 23
12730: PUSH
12731: LD_INT 3
12733: PUSH
12734: EMPTY
12735: LIST
12736: LIST
12737: PUSH
12738: LD_INT 22
12740: PUSH
12741: LD_EXP 21
12745: PUSH
12746: EMPTY
12747: LIST
12748: LIST
12749: PUSH
12750: LD_INT 25
12752: PUSH
12753: LD_INT 4
12755: PUSH
12756: EMPTY
12757: LIST
12758: LIST
12759: PUSH
12760: EMPTY
12761: LIST
12762: LIST
12763: LIST
12764: LIST
12765: PPUSH
12766: CALL_OW 69
12770: PUSH
12771: LD_EXP 1
12775: DIFF
12776: IFFALSE 12842
// ved = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod ;
12778: LD_ADDR_VAR 0 2
12782: PUSH
12783: LD_INT 24
12785: PUSH
12786: LD_INT 250
12788: PUSH
12789: EMPTY
12790: LIST
12791: LIST
12792: PUSH
12793: LD_INT 23
12795: PUSH
12796: LD_INT 3
12798: PUSH
12799: EMPTY
12800: LIST
12801: LIST
12802: PUSH
12803: LD_INT 22
12805: PUSH
12806: LD_EXP 21
12810: PUSH
12811: EMPTY
12812: LIST
12813: LIST
12814: PUSH
12815: LD_INT 25
12817: PUSH
12818: LD_INT 4
12820: PUSH
12821: EMPTY
12822: LIST
12823: LIST
12824: PUSH
12825: EMPTY
12826: LIST
12827: LIST
12828: LIST
12829: LIST
12830: PPUSH
12831: CALL_OW 69
12835: PUSH
12836: LD_EXP 1
12840: DIFF
12841: ST_TO_ADDR
// if ved then
12842: LD_VAR 0 2
12846: IFFALSE 12874
// result = ved [ Rand ( 1 , ved ) ] else
12848: LD_ADDR_VAR 0 1
12852: PUSH
12853: LD_VAR 0 2
12857: PUSH
12858: LD_INT 1
12860: PPUSH
12861: LD_VAR 0 2
12865: PPUSH
12866: CALL_OW 12
12870: ARRAY
12871: ST_TO_ADDR
12872: GO 12935
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_scientistic ) ;
12874: LD_ADDR_VAR 0 1
12878: PUSH
12879: LD_INT 24
12881: PUSH
12882: LD_INT 250
12884: PUSH
12885: EMPTY
12886: LIST
12887: LIST
12888: PUSH
12889: LD_INT 23
12891: PUSH
12892: LD_INT 3
12894: PUSH
12895: EMPTY
12896: LIST
12897: LIST
12898: PUSH
12899: LD_INT 22
12901: PUSH
12902: LD_EXP 21
12906: PUSH
12907: EMPTY
12908: LIST
12909: LIST
12910: PUSH
12911: EMPTY
12912: LIST
12913: LIST
12914: LIST
12915: PPUSH
12916: CALL_OW 69
12920: PUSH
12921: LD_EXP 1
12925: DIFF
12926: PPUSH
12927: LD_INT 4
12929: PPUSH
12930: CALL_OW 433
12934: ST_TO_ADDR
// end ;
12935: LD_VAR 0 1
12939: RET
// export function NajdiMechanika ; var mech ; begin
12940: LD_INT 0
12942: PPUSH
12943: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod then
12944: LD_INT 24
12946: PUSH
12947: LD_INT 250
12949: PUSH
12950: EMPTY
12951: LIST
12952: LIST
12953: PUSH
12954: LD_INT 23
12956: PUSH
12957: LD_INT 3
12959: PUSH
12960: EMPTY
12961: LIST
12962: LIST
12963: PUSH
12964: LD_INT 22
12966: PUSH
12967: LD_EXP 21
12971: PUSH
12972: EMPTY
12973: LIST
12974: LIST
12975: PUSH
12976: LD_INT 25
12978: PUSH
12979: LD_INT 3
12981: PUSH
12982: EMPTY
12983: LIST
12984: LIST
12985: PUSH
12986: EMPTY
12987: LIST
12988: LIST
12989: LIST
12990: LIST
12991: PPUSH
12992: CALL_OW 69
12996: PUSH
12997: LD_EXP 1
13001: DIFF
13002: IFFALSE 13068
// mech = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod ;
13004: LD_ADDR_VAR 0 2
13008: PUSH
13009: LD_INT 24
13011: PUSH
13012: LD_INT 250
13014: PUSH
13015: EMPTY
13016: LIST
13017: LIST
13018: PUSH
13019: LD_INT 23
13021: PUSH
13022: LD_INT 3
13024: PUSH
13025: EMPTY
13026: LIST
13027: LIST
13028: PUSH
13029: LD_INT 22
13031: PUSH
13032: LD_EXP 21
13036: PUSH
13037: EMPTY
13038: LIST
13039: LIST
13040: PUSH
13041: LD_INT 25
13043: PUSH
13044: LD_INT 3
13046: PUSH
13047: EMPTY
13048: LIST
13049: LIST
13050: PUSH
13051: EMPTY
13052: LIST
13053: LIST
13054: LIST
13055: LIST
13056: PPUSH
13057: CALL_OW 69
13061: PUSH
13062: LD_EXP 1
13066: DIFF
13067: ST_TO_ADDR
// if mech then
13068: LD_VAR 0 2
13072: IFFALSE 13100
// result = mech [ Rand ( 1 , mech ) ] else
13074: LD_ADDR_VAR 0 1
13078: PUSH
13079: LD_VAR 0 2
13083: PUSH
13084: LD_INT 1
13086: PPUSH
13087: LD_VAR 0 2
13091: PPUSH
13092: CALL_OW 12
13096: ARRAY
13097: ST_TO_ADDR
13098: GO 13161
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_mechanical ) ;
13100: LD_ADDR_VAR 0 1
13104: PUSH
13105: LD_INT 24
13107: PUSH
13108: LD_INT 250
13110: PUSH
13111: EMPTY
13112: LIST
13113: LIST
13114: PUSH
13115: LD_INT 23
13117: PUSH
13118: LD_INT 3
13120: PUSH
13121: EMPTY
13122: LIST
13123: LIST
13124: PUSH
13125: LD_INT 22
13127: PUSH
13128: LD_EXP 21
13132: PUSH
13133: EMPTY
13134: LIST
13135: LIST
13136: PUSH
13137: EMPTY
13138: LIST
13139: LIST
13140: LIST
13141: PPUSH
13142: CALL_OW 69
13146: PUSH
13147: LD_EXP 1
13151: DIFF
13152: PPUSH
13153: LD_INT 3
13155: PPUSH
13156: CALL_OW 433
13160: ST_TO_ADDR
// end ;
13161: LD_VAR 0 1
13165: RET
// export function NajdiDelnika ; var del ; begin
13166: LD_INT 0
13168: PPUSH
13169: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod then
13170: LD_INT 24
13172: PUSH
13173: LD_INT 250
13175: PUSH
13176: EMPTY
13177: LIST
13178: LIST
13179: PUSH
13180: LD_INT 23
13182: PUSH
13183: LD_INT 3
13185: PUSH
13186: EMPTY
13187: LIST
13188: LIST
13189: PUSH
13190: LD_INT 22
13192: PUSH
13193: LD_EXP 21
13197: PUSH
13198: EMPTY
13199: LIST
13200: LIST
13201: PUSH
13202: LD_INT 25
13204: PUSH
13205: LD_INT 2
13207: PUSH
13208: EMPTY
13209: LIST
13210: LIST
13211: PUSH
13212: EMPTY
13213: LIST
13214: LIST
13215: LIST
13216: LIST
13217: PPUSH
13218: CALL_OW 69
13222: PUSH
13223: LD_EXP 1
13227: DIFF
13228: IFFALSE 13294
// del = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod ;
13230: LD_ADDR_VAR 0 2
13234: PUSH
13235: LD_INT 24
13237: PUSH
13238: LD_INT 250
13240: PUSH
13241: EMPTY
13242: LIST
13243: LIST
13244: PUSH
13245: LD_INT 23
13247: PUSH
13248: LD_INT 3
13250: PUSH
13251: EMPTY
13252: LIST
13253: LIST
13254: PUSH
13255: LD_INT 22
13257: PUSH
13258: LD_EXP 21
13262: PUSH
13263: EMPTY
13264: LIST
13265: LIST
13266: PUSH
13267: LD_INT 25
13269: PUSH
13270: LD_INT 2
13272: PUSH
13273: EMPTY
13274: LIST
13275: LIST
13276: PUSH
13277: EMPTY
13278: LIST
13279: LIST
13280: LIST
13281: LIST
13282: PPUSH
13283: CALL_OW 69
13287: PUSH
13288: LD_EXP 1
13292: DIFF
13293: ST_TO_ADDR
// if del then
13294: LD_VAR 0 2
13298: IFFALSE 13326
// result = del [ Rand ( 1 , del ) ] else
13300: LD_ADDR_VAR 0 1
13304: PUSH
13305: LD_VAR 0 2
13309: PUSH
13310: LD_INT 1
13312: PPUSH
13313: LD_VAR 0 2
13317: PPUSH
13318: CALL_OW 12
13322: ARRAY
13323: ST_TO_ADDR
13324: GO 13387
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_engineering ) ;
13326: LD_ADDR_VAR 0 1
13330: PUSH
13331: LD_INT 24
13333: PUSH
13334: LD_INT 250
13336: PUSH
13337: EMPTY
13338: LIST
13339: LIST
13340: PUSH
13341: LD_INT 23
13343: PUSH
13344: LD_INT 3
13346: PUSH
13347: EMPTY
13348: LIST
13349: LIST
13350: PUSH
13351: LD_INT 22
13353: PUSH
13354: LD_EXP 21
13358: PUSH
13359: EMPTY
13360: LIST
13361: LIST
13362: PUSH
13363: EMPTY
13364: LIST
13365: LIST
13366: LIST
13367: PPUSH
13368: CALL_OW 69
13372: PUSH
13373: LD_EXP 1
13377: DIFF
13378: PPUSH
13379: LD_INT 2
13381: PPUSH
13382: CALL_OW 433
13386: ST_TO_ADDR
// end ;
13387: LD_VAR 0 1
13391: RET
// function GetListOfCratesInAreaBySide ( side ) ; begin
13392: LD_INT 0
13394: PPUSH
// if side = arab then
13395: LD_VAR 0 1
13399: PUSH
13400: LD_EXP 23
13404: EQUAL
13405: IFFALSE 13422
// result = GetListOfCratesInArea ( ArBaza ) else
13407: LD_ADDR_VAR 0 2
13411: PUSH
13412: LD_INT 15
13414: PPUSH
13415: CALL_OW 435
13419: ST_TO_ADDR
13420: GO 13474
// if side = amik then
13422: LD_VAR 0 1
13426: PUSH
13427: LD_EXP 24
13431: EQUAL
13432: IFFALSE 13449
// result = GetListOfCratesInArea ( AmikBaza ) else
13434: LD_ADDR_VAR 0 2
13438: PUSH
13439: LD_INT 17
13441: PPUSH
13442: CALL_OW 435
13446: ST_TO_ADDR
13447: GO 13474
// if side = purple then
13449: LD_VAR 0 1
13453: PUSH
13454: LD_EXP 22
13458: EQUAL
13459: IFFALSE 13474
// result = GetListOfCratesInArea ( PurpleBaza ) end ;
13461: LD_ADDR_VAR 0 2
13465: PUSH
13466: LD_INT 16
13468: PPUSH
13469: CALL_OW 435
13473: ST_TO_ADDR
13474: LD_VAR 0 2
13478: RET
// export function CreateCratesArea2 ( crates , area , mat ) ; begin
13479: LD_INT 0
13481: PPUSH
// if crates < 1 or crates > 5 then
13482: LD_VAR 0 1
13486: PUSH
13487: LD_INT 1
13489: LESS
13490: PUSH
13491: LD_VAR 0 1
13495: PUSH
13496: LD_INT 5
13498: GREATER
13499: OR
13500: IFFALSE 13504
// exit ;
13502: GO 13523
// CreateCratesArea ( crates , area , mat ) ;
13504: LD_VAR 0 1
13508: PPUSH
13509: LD_VAR 0 2
13513: PPUSH
13514: LD_VAR 0 3
13518: PPUSH
13519: CALL_OW 55
// end ; end_of_file
13523: LD_VAR 0 4
13527: RET
// export function Priroda ; var i , k , apelist , tigerlist ; begin
13528: LD_INT 0
13530: PPUSH
13531: PPUSH
13532: PPUSH
13533: PPUSH
13534: PPUSH
// InitHc ;
13535: CALL_OW 19
// InitUc ;
13539: CALL_OW 18
// uc_side := 0 ;
13543: LD_ADDR_OWVAR 20
13547: PUSH
13548: LD_INT 0
13550: ST_TO_ADDR
// uc_nation := nation_nature ;
13551: LD_ADDR_OWVAR 21
13555: PUSH
13556: LD_INT 0
13558: ST_TO_ADDR
// hc_class := class_apeman ;
13559: LD_ADDR_OWVAR 28
13563: PUSH
13564: LD_INT 12
13566: ST_TO_ADDR
// apelist = [ [ 38 , 40 ] , [ 35 , 12 ] , [ 68 , 30 ] , [ 54 , 12 ] , [ 183 , 10 ] , [ 148 , 59 ] , [ 114 , 94 ] , [ 57 , 89 ] , [ 169 , 142 ] ] ;
13567: LD_ADDR_VAR 0 4
13571: PUSH
13572: LD_INT 38
13574: PUSH
13575: LD_INT 40
13577: PUSH
13578: EMPTY
13579: LIST
13580: LIST
13581: PUSH
13582: LD_INT 35
13584: PUSH
13585: LD_INT 12
13587: PUSH
13588: EMPTY
13589: LIST
13590: LIST
13591: PUSH
13592: LD_INT 68
13594: PUSH
13595: LD_INT 30
13597: PUSH
13598: EMPTY
13599: LIST
13600: LIST
13601: PUSH
13602: LD_INT 54
13604: PUSH
13605: LD_INT 12
13607: PUSH
13608: EMPTY
13609: LIST
13610: LIST
13611: PUSH
13612: LD_INT 183
13614: PUSH
13615: LD_INT 10
13617: PUSH
13618: EMPTY
13619: LIST
13620: LIST
13621: PUSH
13622: LD_INT 148
13624: PUSH
13625: LD_INT 59
13627: PUSH
13628: EMPTY
13629: LIST
13630: LIST
13631: PUSH
13632: LD_INT 114
13634: PUSH
13635: LD_INT 94
13637: PUSH
13638: EMPTY
13639: LIST
13640: LIST
13641: PUSH
13642: LD_INT 57
13644: PUSH
13645: LD_INT 89
13647: PUSH
13648: EMPTY
13649: LIST
13650: LIST
13651: PUSH
13652: LD_INT 169
13654: PUSH
13655: LD_INT 142
13657: PUSH
13658: EMPTY
13659: LIST
13660: LIST
13661: PUSH
13662: EMPTY
13663: LIST
13664: LIST
13665: LIST
13666: LIST
13667: LIST
13668: LIST
13669: LIST
13670: LIST
13671: LIST
13672: ST_TO_ADDR
// tigerlist = [ [ 72 , 89 ] , [ 74 , 27 ] , [ 82 , 148 ] , [ 240 , 148 ] , [ 161 , 45 ] ] ;
13673: LD_ADDR_VAR 0 5
13677: PUSH
13678: LD_INT 72
13680: PUSH
13681: LD_INT 89
13683: PUSH
13684: EMPTY
13685: LIST
13686: LIST
13687: PUSH
13688: LD_INT 74
13690: PUSH
13691: LD_INT 27
13693: PUSH
13694: EMPTY
13695: LIST
13696: LIST
13697: PUSH
13698: LD_INT 82
13700: PUSH
13701: LD_INT 148
13703: PUSH
13704: EMPTY
13705: LIST
13706: LIST
13707: PUSH
13708: LD_INT 240
13710: PUSH
13711: LD_INT 148
13713: PUSH
13714: EMPTY
13715: LIST
13716: LIST
13717: PUSH
13718: LD_INT 161
13720: PUSH
13721: LD_INT 45
13723: PUSH
13724: EMPTY
13725: LIST
13726: LIST
13727: PUSH
13728: EMPTY
13729: LIST
13730: LIST
13731: LIST
13732: LIST
13733: LIST
13734: ST_TO_ADDR
// for i = 1 to apelist + 0 do
13735: LD_ADDR_VAR 0 2
13739: PUSH
13740: DOUBLE
13741: LD_INT 1
13743: DEC
13744: ST_TO_ADDR
13745: LD_VAR 0 4
13749: PUSH
13750: LD_INT 0
13752: PLUS
13753: PUSH
13754: FOR_TO
13755: IFFALSE 13830
// begin hc_agressivity := Rand ( - 10 , dif_ape_agr_multiplier ) ;
13757: LD_ADDR_OWVAR 35
13761: PUSH
13762: LD_INT 10
13764: NEG
13765: PPUSH
13766: LD_EXP 57
13770: PPUSH
13771: CALL_OW 12
13775: ST_TO_ADDR
// k := CreateHuman ;
13776: LD_ADDR_VAR 0 3
13780: PUSH
13781: CALL_OW 44
13785: ST_TO_ADDR
// PlaceUnitXY ( k , apelist [ i ] [ 1 ] , apelist [ i ] [ 2 ] , false ) ;
13786: LD_VAR 0 3
13790: PPUSH
13791: LD_VAR 0 4
13795: PUSH
13796: LD_VAR 0 2
13800: ARRAY
13801: PUSH
13802: LD_INT 1
13804: ARRAY
13805: PPUSH
13806: LD_VAR 0 4
13810: PUSH
13811: LD_VAR 0 2
13815: ARRAY
13816: PUSH
13817: LD_INT 2
13819: ARRAY
13820: PPUSH
13821: LD_INT 0
13823: PPUSH
13824: CALL_OW 48
// end ;
13828: GO 13754
13830: POP
13831: POP
// hc_class := class_tiger ;
13832: LD_ADDR_OWVAR 28
13836: PUSH
13837: LD_INT 14
13839: ST_TO_ADDR
// for i = 1 to tigerlist + 0 do
13840: LD_ADDR_VAR 0 2
13844: PUSH
13845: DOUBLE
13846: LD_INT 1
13848: DEC
13849: ST_TO_ADDR
13850: LD_VAR 0 5
13854: PUSH
13855: LD_INT 0
13857: PLUS
13858: PUSH
13859: FOR_TO
13860: IFFALSE 13934
// begin hc_agressivity := Rand ( 10 , dif_tiger_agr_multiplier ) ;
13862: LD_ADDR_OWVAR 35
13866: PUSH
13867: LD_INT 10
13869: PPUSH
13870: LD_EXP 58
13874: PPUSH
13875: CALL_OW 12
13879: ST_TO_ADDR
// k := CreateHuman ;
13880: LD_ADDR_VAR 0 3
13884: PUSH
13885: CALL_OW 44
13889: ST_TO_ADDR
// PlaceUnitXY ( k , tigerlist [ i ] [ 1 ] , tigerlist [ i ] [ 2 ] , false ) ;
13890: LD_VAR 0 3
13894: PPUSH
13895: LD_VAR 0 5
13899: PUSH
13900: LD_VAR 0 2
13904: ARRAY
13905: PUSH
13906: LD_INT 1
13908: ARRAY
13909: PPUSH
13910: LD_VAR 0 5
13914: PUSH
13915: LD_VAR 0 2
13919: ARRAY
13920: PUSH
13921: LD_INT 2
13923: ARRAY
13924: PPUSH
13925: LD_INT 0
13927: PPUSH
13928: CALL_OW 48
// end ;
13932: GO 13859
13934: POP
13935: POP
// end ; end_of_file
13936: LD_VAR 0 1
13940: RET
// export dif_ape_agr_multiplier , dif_tiger_agr_multiplier , dif_bedny_wait , dif_bedny_mnozstvi , dif_enemy_lidi_kasa , dif_enemy_lidi_sklad , dif_enemy_lidi_faclab , dif_enemy_min_skill , dif_enemy_max_skill , dif_prob_uspavaci , dif_ar_attack_size , dif_purple_attack_size , dif_amik_attack_size , dif_arab_vyroba_utok_wait , dif_purple_vyroba_utok_wait , dif_amik_vyroba_utok_wait , dif_auto_lepsi_podvozek_sance , dif_auto_vyroba_sance , dif_research_wait , dif_arab_vyroba_utok_wait_start , dif_purple_vyroba_utok_wait_start , dif_amik_vyroba_utok_wait_start , dif_vyroba_tick_inkrement ; export function Obtiznost ; begin
13941: LD_INT 0
13943: PPUSH
// dif_ape_agr_multiplier = 13 * difficulty ;
13944: LD_ADDR_EXP 57
13948: PUSH
13949: LD_INT 13
13951: PUSH
13952: LD_OWVAR 67
13956: MUL
13957: ST_TO_ADDR
// dif_tiger_agr_multiplier = 20 * difficulty ;
13958: LD_ADDR_EXP 58
13962: PUSH
13963: LD_INT 20
13965: PUSH
13966: LD_OWVAR 67
13970: MUL
13971: ST_TO_ADDR
// dif_bedny_wait = [ [ 0 0$40 , 1 1$20 ] , [ 1 1$00 , 1 1$20 ] , [ 1 1$10 , 1 1$30 ] ] [ difficulty ] ;
13972: LD_ADDR_EXP 59
13976: PUSH
13977: LD_INT 1400
13979: PUSH
13980: LD_INT 2800
13982: PUSH
13983: EMPTY
13984: LIST
13985: LIST
13986: PUSH
13987: LD_INT 2100
13989: PUSH
13990: LD_INT 2800
13992: PUSH
13993: EMPTY
13994: LIST
13995: LIST
13996: PUSH
13997: LD_INT 2450
13999: PUSH
14000: LD_INT 3150
14002: PUSH
14003: EMPTY
14004: LIST
14005: LIST
14006: PUSH
14007: EMPTY
14008: LIST
14009: LIST
14010: LIST
14011: PUSH
14012: LD_OWVAR 67
14016: ARRAY
14017: ST_TO_ADDR
// dif_bedny_mnozstvi = [ [ 4 , 5 ] , [ 3 , 5 ] , [ 2 , 5 ] ] [ difficulty ] ;
14018: LD_ADDR_EXP 60
14022: PUSH
14023: LD_INT 4
14025: PUSH
14026: LD_INT 5
14028: PUSH
14029: EMPTY
14030: LIST
14031: LIST
14032: PUSH
14033: LD_INT 3
14035: PUSH
14036: LD_INT 5
14038: PUSH
14039: EMPTY
14040: LIST
14041: LIST
14042: PUSH
14043: LD_INT 2
14045: PUSH
14046: LD_INT 5
14048: PUSH
14049: EMPTY
14050: LIST
14051: LIST
14052: PUSH
14053: EMPTY
14054: LIST
14055: LIST
14056: LIST
14057: PUSH
14058: LD_OWVAR 67
14062: ARRAY
14063: ST_TO_ADDR
// dif_enemy_lidi_kasa = [ 4 , 5 , 6 ] [ difficulty ] ;
14064: LD_ADDR_EXP 61
14068: PUSH
14069: LD_INT 4
14071: PUSH
14072: LD_INT 5
14074: PUSH
14075: LD_INT 6
14077: PUSH
14078: EMPTY
14079: LIST
14080: LIST
14081: LIST
14082: PUSH
14083: LD_OWVAR 67
14087: ARRAY
14088: ST_TO_ADDR
// dif_enemy_lidi_faclab = [ 4 , 5 , 6 ] [ difficulty ] ;
14089: LD_ADDR_EXP 63
14093: PUSH
14094: LD_INT 4
14096: PUSH
14097: LD_INT 5
14099: PUSH
14100: LD_INT 6
14102: PUSH
14103: EMPTY
14104: LIST
14105: LIST
14106: LIST
14107: PUSH
14108: LD_OWVAR 67
14112: ARRAY
14113: ST_TO_ADDR
// dif_enemy_lidi_sklad = [ 4 , 6 , 6 ] [ difficulty ] ;
14114: LD_ADDR_EXP 62
14118: PUSH
14119: LD_INT 4
14121: PUSH
14122: LD_INT 6
14124: PUSH
14125: LD_INT 6
14127: PUSH
14128: EMPTY
14129: LIST
14130: LIST
14131: LIST
14132: PUSH
14133: LD_OWVAR 67
14137: ARRAY
14138: ST_TO_ADDR
// dif_enemy_min_skill = [ 4 , 5 , 7 ] [ difficulty ] ;
14139: LD_ADDR_EXP 64
14143: PUSH
14144: LD_INT 4
14146: PUSH
14147: LD_INT 5
14149: PUSH
14150: LD_INT 7
14152: PUSH
14153: EMPTY
14154: LIST
14155: LIST
14156: LIST
14157: PUSH
14158: LD_OWVAR 67
14162: ARRAY
14163: ST_TO_ADDR
// dif_enemy_max_skill = [ 6 , 7 , 9 ] [ difficulty ] ;
14164: LD_ADDR_EXP 65
14168: PUSH
14169: LD_INT 6
14171: PUSH
14172: LD_INT 7
14174: PUSH
14175: LD_INT 9
14177: PUSH
14178: EMPTY
14179: LIST
14180: LIST
14181: LIST
14182: PUSH
14183: LD_OWVAR 67
14187: ARRAY
14188: ST_TO_ADDR
// dif_prob_uspavaci = [ 50 , 55 , 60 ] [ difficulty ] ;
14189: LD_ADDR_EXP 66
14193: PUSH
14194: LD_INT 50
14196: PUSH
14197: LD_INT 55
14199: PUSH
14200: LD_INT 60
14202: PUSH
14203: EMPTY
14204: LIST
14205: LIST
14206: LIST
14207: PUSH
14208: LD_OWVAR 67
14212: ARRAY
14213: ST_TO_ADDR
// dif_ar_attack_size = [ 5 , 6 , 7 ] [ difficulty ] ;
14214: LD_ADDR_EXP 67
14218: PUSH
14219: LD_INT 5
14221: PUSH
14222: LD_INT 6
14224: PUSH
14225: LD_INT 7
14227: PUSH
14228: EMPTY
14229: LIST
14230: LIST
14231: LIST
14232: PUSH
14233: LD_OWVAR 67
14237: ARRAY
14238: ST_TO_ADDR
// dif_purple_attack_size = [ 4 , 5 , 5 ] [ difficulty ] ;
14239: LD_ADDR_EXP 68
14243: PUSH
14244: LD_INT 4
14246: PUSH
14247: LD_INT 5
14249: PUSH
14250: LD_INT 5
14252: PUSH
14253: EMPTY
14254: LIST
14255: LIST
14256: LIST
14257: PUSH
14258: LD_OWVAR 67
14262: ARRAY
14263: ST_TO_ADDR
// dif_amik_attack_size = [ 4 , 5 , 6 ] [ difficulty ] ;
14264: LD_ADDR_EXP 69
14268: PUSH
14269: LD_INT 4
14271: PUSH
14272: LD_INT 5
14274: PUSH
14275: LD_INT 6
14277: PUSH
14278: EMPTY
14279: LIST
14280: LIST
14281: LIST
14282: PUSH
14283: LD_OWVAR 67
14287: ARRAY
14288: ST_TO_ADDR
// dif_arab_vyroba_utok_wait_start = [ 5 5$30 , 4 4$30 , 3 3$00 ] [ difficulty ] ;
14289: LD_ADDR_EXP 76
14293: PUSH
14294: LD_INT 11550
14296: PUSH
14297: LD_INT 9450
14299: PUSH
14300: LD_INT 6300
14302: PUSH
14303: EMPTY
14304: LIST
14305: LIST
14306: LIST
14307: PUSH
14308: LD_OWVAR 67
14312: ARRAY
14313: ST_TO_ADDR
// dif_purple_vyroba_utok_wait_start = [ 13 13$30 , 10 10$00 , 9 9$00 ] [ difficulty ] ;
14314: LD_ADDR_EXP 77
14318: PUSH
14319: LD_INT 28350
14321: PUSH
14322: LD_INT 21000
14324: PUSH
14325: LD_INT 18900
14327: PUSH
14328: EMPTY
14329: LIST
14330: LIST
14331: LIST
14332: PUSH
14333: LD_OWVAR 67
14337: ARRAY
14338: ST_TO_ADDR
// dif_amik_vyroba_utok_wait_start = [ 6 6$30 , 4 4$30 , 3 3$10 ] [ difficulty ] ;
14339: LD_ADDR_EXP 78
14343: PUSH
14344: LD_INT 13650
14346: PUSH
14347: LD_INT 9450
14349: PUSH
14350: LD_INT 6650
14352: PUSH
14353: EMPTY
14354: LIST
14355: LIST
14356: LIST
14357: PUSH
14358: LD_OWVAR 67
14362: ARRAY
14363: ST_TO_ADDR
// dif_arab_vyroba_utok_wait = [ 11 11$00 , 9 9$30 , 8 8$00 ] [ difficulty ] ;
14364: LD_ADDR_EXP 70
14368: PUSH
14369: LD_INT 23100
14371: PUSH
14372: LD_INT 19950
14374: PUSH
14375: LD_INT 16800
14377: PUSH
14378: EMPTY
14379: LIST
14380: LIST
14381: LIST
14382: PUSH
14383: LD_OWVAR 67
14387: ARRAY
14388: ST_TO_ADDR
// dif_purple_vyroba_utok_wait = [ 20 20$00 , 16 16$00 , 15 15$00 ] [ difficulty ] ;
14389: LD_ADDR_EXP 71
14393: PUSH
14394: LD_INT 42000
14396: PUSH
14397: LD_INT 33600
14399: PUSH
14400: LD_INT 31500
14402: PUSH
14403: EMPTY
14404: LIST
14405: LIST
14406: LIST
14407: PUSH
14408: LD_OWVAR 67
14412: ARRAY
14413: ST_TO_ADDR
// dif_amik_vyroba_utok_wait = [ 13 13$00 , 7 7$30 , 6 6$40 ] [ difficulty ] ;
14414: LD_ADDR_EXP 72
14418: PUSH
14419: LD_INT 27300
14421: PUSH
14422: LD_INT 15750
14424: PUSH
14425: LD_INT 14000
14427: PUSH
14428: EMPTY
14429: LIST
14430: LIST
14431: LIST
14432: PUSH
14433: LD_OWVAR 67
14437: ARRAY
14438: ST_TO_ADDR
// dif_auto_lepsi_podvozek_sance = [ 25 , 50 , 75 ] [ difficulty ] ;
14439: LD_ADDR_EXP 73
14443: PUSH
14444: LD_INT 25
14446: PUSH
14447: LD_INT 50
14449: PUSH
14450: LD_INT 75
14452: PUSH
14453: EMPTY
14454: LIST
14455: LIST
14456: LIST
14457: PUSH
14458: LD_OWVAR 67
14462: ARRAY
14463: ST_TO_ADDR
// dif_auto_vyroba_sance = [ [ 25 , 50 , 75 , 95 ] , [ 20 , 40 , 70 , 91 ] , [ 10 , 30 , 50 , 88 ] ] [ difficulty ] ;
14464: LD_ADDR_EXP 74
14468: PUSH
14469: LD_INT 25
14471: PUSH
14472: LD_INT 50
14474: PUSH
14475: LD_INT 75
14477: PUSH
14478: LD_INT 95
14480: PUSH
14481: EMPTY
14482: LIST
14483: LIST
14484: LIST
14485: LIST
14486: PUSH
14487: LD_INT 20
14489: PUSH
14490: LD_INT 40
14492: PUSH
14493: LD_INT 70
14495: PUSH
14496: LD_INT 91
14498: PUSH
14499: EMPTY
14500: LIST
14501: LIST
14502: LIST
14503: LIST
14504: PUSH
14505: LD_INT 10
14507: PUSH
14508: LD_INT 30
14510: PUSH
14511: LD_INT 50
14513: PUSH
14514: LD_INT 88
14516: PUSH
14517: EMPTY
14518: LIST
14519: LIST
14520: LIST
14521: LIST
14522: PUSH
14523: EMPTY
14524: LIST
14525: LIST
14526: LIST
14527: PUSH
14528: LD_OWVAR 67
14532: ARRAY
14533: ST_TO_ADDR
// dif_research_wait = [ 7 7$00 , 5 5$30 , 4 4$00 ] [ difficulty ] ;
14534: LD_ADDR_EXP 75
14538: PUSH
14539: LD_INT 14700
14541: PUSH
14542: LD_INT 11550
14544: PUSH
14545: LD_INT 8400
14547: PUSH
14548: EMPTY
14549: LIST
14550: LIST
14551: LIST
14552: PUSH
14553: LD_OWVAR 67
14557: ARRAY
14558: ST_TO_ADDR
// dif_vyroba_tick_inkrement = [ 0 0$45 , 0 0$30 , 0 0$30 ] [ difficulty ] ;
14559: LD_ADDR_EXP 79
14563: PUSH
14564: LD_INT 1575
14566: PUSH
14567: LD_INT 1050
14569: PUSH
14570: LD_INT 1050
14572: PUSH
14573: EMPTY
14574: LIST
14575: LIST
14576: LIST
14577: PUSH
14578: LD_OWVAR 67
14582: ARRAY
14583: ST_TO_ADDR
// if difficulty > 1 then
14584: LD_OWVAR 67
14588: PUSH
14589: LD_INT 1
14591: GREATER
14592: IFFALSE 14624
// begin SetTech ( tech_weap1 , arab , state_researched ) ;
14594: LD_INT 51
14596: PPUSH
14597: LD_EXP 23
14601: PPUSH
14602: LD_INT 2
14604: PPUSH
14605: CALL_OW 322
// SetTech ( tech_weap2 , arab , state_researched ) ;
14609: LD_INT 52
14611: PPUSH
14612: LD_EXP 23
14616: PPUSH
14617: LD_INT 2
14619: PPUSH
14620: CALL_OW 322
// end ; if difficulty = 3 then
14624: LD_OWVAR 67
14628: PUSH
14629: LD_INT 3
14631: EQUAL
14632: IFFALSE 14649
// SetTech ( tech_weap3 , arab , state_researched ) ;
14634: LD_INT 53
14636: PPUSH
14637: LD_EXP 23
14641: PPUSH
14642: LD_INT 2
14644: PPUSH
14645: CALL_OW 322
// end ; end_of_file
14649: LD_VAR 0 1
14653: RET
// every 0 0$3 do
14654: GO 14656
14656: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14657: LD_EXP 59
14661: PUSH
14662: LD_INT 1
14664: ARRAY
14665: PPUSH
14666: LD_EXP 59
14670: PUSH
14671: LD_INT 2
14673: ARRAY
14674: PPUSH
14675: CALL_OW 12
14679: PPUSH
14680: CALL_OW 67
// if GetResourceArea ( Bedny1 , mat_cans ) < 12 then
14684: LD_INT 8
14686: PPUSH
14687: LD_INT 1
14689: PPUSH
14690: CALL_OW 287
14694: PUSH
14695: LD_INT 12
14697: LESS
14698: IFFALSE 14733
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny1 , true ) ;
14700: LD_EXP 60
14704: PUSH
14705: LD_INT 1
14707: ARRAY
14708: PPUSH
14709: LD_EXP 60
14713: PUSH
14714: LD_INT 2
14716: ARRAY
14717: PPUSH
14718: CALL_OW 12
14722: PPUSH
14723: LD_INT 8
14725: PPUSH
14726: LD_INT 1
14728: PPUSH
14729: CALL 13479 0 3
// enable ;
14733: ENABLE
// end ;
14734: END
// every 0 0$3 do
14735: GO 14737
14737: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14738: LD_EXP 59
14742: PUSH
14743: LD_INT 1
14745: ARRAY
14746: PPUSH
14747: LD_EXP 59
14751: PUSH
14752: LD_INT 2
14754: ARRAY
14755: PPUSH
14756: CALL_OW 12
14760: PPUSH
14761: CALL_OW 67
// if GetResourceArea ( Bedny2 , mat_cans ) < 12 then
14765: LD_INT 9
14767: PPUSH
14768: LD_INT 1
14770: PPUSH
14771: CALL_OW 287
14775: PUSH
14776: LD_INT 12
14778: LESS
14779: IFFALSE 14814
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny2 , true ) ;
14781: LD_EXP 60
14785: PUSH
14786: LD_INT 1
14788: ARRAY
14789: PPUSH
14790: LD_EXP 60
14794: PUSH
14795: LD_INT 2
14797: ARRAY
14798: PPUSH
14799: CALL_OW 12
14803: PPUSH
14804: LD_INT 9
14806: PPUSH
14807: LD_INT 1
14809: PPUSH
14810: CALL 13479 0 3
// enable ;
14814: ENABLE
// end ;
14815: END
// every 0 0$3 do
14816: GO 14818
14818: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14819: LD_EXP 59
14823: PUSH
14824: LD_INT 1
14826: ARRAY
14827: PPUSH
14828: LD_EXP 59
14832: PUSH
14833: LD_INT 2
14835: ARRAY
14836: PPUSH
14837: CALL_OW 12
14841: PPUSH
14842: CALL_OW 67
// if GetResourceArea ( Bedny3 , mat_cans ) < 12 then
14846: LD_INT 10
14848: PPUSH
14849: LD_INT 1
14851: PPUSH
14852: CALL_OW 287
14856: PUSH
14857: LD_INT 12
14859: LESS
14860: IFFALSE 14895
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny3 , true ) ;
14862: LD_EXP 60
14866: PUSH
14867: LD_INT 1
14869: ARRAY
14870: PPUSH
14871: LD_EXP 60
14875: PUSH
14876: LD_INT 2
14878: ARRAY
14879: PPUSH
14880: CALL_OW 12
14884: PPUSH
14885: LD_INT 10
14887: PPUSH
14888: LD_INT 1
14890: PPUSH
14891: CALL 13479 0 3
// enable ;
14895: ENABLE
// end ;
14896: END
// every 0 0$3 do
14897: GO 14899
14899: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14900: LD_EXP 59
14904: PUSH
14905: LD_INT 1
14907: ARRAY
14908: PPUSH
14909: LD_EXP 59
14913: PUSH
14914: LD_INT 2
14916: ARRAY
14917: PPUSH
14918: CALL_OW 12
14922: PPUSH
14923: CALL_OW 67
// if GetResourceArea ( Bedny4 , mat_cans ) < 12 then
14927: LD_INT 11
14929: PPUSH
14930: LD_INT 1
14932: PPUSH
14933: CALL_OW 287
14937: PUSH
14938: LD_INT 12
14940: LESS
14941: IFFALSE 14976
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny4 , true ) ;
14943: LD_EXP 60
14947: PUSH
14948: LD_INT 1
14950: ARRAY
14951: PPUSH
14952: LD_EXP 60
14956: PUSH
14957: LD_INT 2
14959: ARRAY
14960: PPUSH
14961: CALL_OW 12
14965: PPUSH
14966: LD_INT 11
14968: PPUSH
14969: LD_INT 1
14971: PPUSH
14972: CALL 13479 0 3
// enable ;
14976: ENABLE
// end ;
14977: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) do var x , y ;
14978: LD_INT 22
14980: PUSH
14981: LD_EXP 21
14985: PUSH
14986: EMPTY
14987: LIST
14988: LIST
14989: PUSH
14990: LD_INT 21
14992: PUSH
14993: LD_INT 3
14995: PUSH
14996: EMPTY
14997: LIST
14998: LIST
14999: PUSH
15000: LD_INT 57
15002: PUSH
15003: EMPTY
15004: LIST
15005: PUSH
15006: EMPTY
15007: LIST
15008: LIST
15009: LIST
15010: PPUSH
15011: CALL_OW 69
15015: IFFALSE 15260
15017: GO 15019
15019: DISABLE
15020: LD_INT 0
15022: PPUSH
15023: PPUSH
// begin x = GetX ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
15024: LD_ADDR_VAR 0 1
15028: PUSH
15029: LD_INT 22
15031: PUSH
15032: LD_EXP 21
15036: PUSH
15037: EMPTY
15038: LIST
15039: LIST
15040: PUSH
15041: LD_INT 21
15043: PUSH
15044: LD_INT 3
15046: PUSH
15047: EMPTY
15048: LIST
15049: LIST
15050: PUSH
15051: LD_INT 57
15053: PUSH
15054: EMPTY
15055: LIST
15056: PUSH
15057: EMPTY
15058: LIST
15059: LIST
15060: LIST
15061: PPUSH
15062: CALL_OW 69
15066: PUSH
15067: LD_INT 1
15069: ARRAY
15070: PPUSH
15071: CALL_OW 250
15075: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
15076: LD_ADDR_VAR 0 2
15080: PUSH
15081: LD_INT 22
15083: PUSH
15084: LD_EXP 21
15088: PUSH
15089: EMPTY
15090: LIST
15091: LIST
15092: PUSH
15093: LD_INT 21
15095: PUSH
15096: LD_INT 3
15098: PUSH
15099: EMPTY
15100: LIST
15101: LIST
15102: PUSH
15103: LD_INT 57
15105: PUSH
15106: EMPTY
15107: LIST
15108: PUSH
15109: EMPTY
15110: LIST
15111: LIST
15112: LIST
15113: PPUSH
15114: CALL_OW 69
15118: PUSH
15119: LD_INT 1
15121: ARRAY
15122: PPUSH
15123: CALL_OW 251
15127: ST_TO_ADDR
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15128: LD_INT 700
15130: PPUSH
15131: LD_INT 1400
15133: PPUSH
15134: CALL_OW 12
15138: PPUSH
15139: CALL_OW 67
// CreateCratesXYR ( 5 , x , y , 9 , true ) ;
15143: LD_INT 5
15145: PPUSH
15146: LD_VAR 0 1
15150: PPUSH
15151: LD_VAR 0 2
15155: PPUSH
15156: LD_INT 9
15158: PPUSH
15159: LD_INT 1
15161: PPUSH
15162: CALL_OW 56
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15166: LD_INT 700
15168: PPUSH
15169: LD_INT 1400
15171: PPUSH
15172: CALL_OW 12
15176: PPUSH
15177: CALL_OW 67
// if not difficulty = 3 then
15181: LD_OWVAR 67
15185: PUSH
15186: LD_INT 3
15188: EQUAL
15189: NOT
15190: IFFALSE 15215
// CreateCratesXYR ( 3 , x , y , 9 , true ) ;
15192: LD_INT 3
15194: PPUSH
15195: LD_VAR 0 1
15199: PPUSH
15200: LD_VAR 0 2
15204: PPUSH
15205: LD_INT 9
15207: PPUSH
15208: LD_INT 1
15210: PPUSH
15211: CALL_OW 56
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15215: LD_INT 700
15217: PPUSH
15218: LD_INT 1400
15220: PPUSH
15221: CALL_OW 12
15225: PPUSH
15226: CALL_OW 67
// if not RusakBazaDole then
15230: LD_EXP 42
15234: NOT
15235: IFFALSE 15260
// CreateCratesXYR ( 3 , x , y , 9 , true ) ;
15237: LD_INT 3
15239: PPUSH
15240: LD_VAR 0 1
15244: PPUSH
15245: LD_VAR 0 2
15249: PPUSH
15250: LD_INT 9
15252: PPUSH
15253: LD_INT 1
15255: PPUSH
15256: CALL_OW 56
// end ; end_of_file
15260: PPOPN 2
15262: END
// var ignore ; export zalezt ; every 0 0$1 do var i ;
15263: GO 15265
15265: DISABLE
15266: LD_INT 0
15268: PPUSH
// begin zalezt = [ ] ;
15269: LD_ADDR_EXP 80
15273: PUSH
15274: EMPTY
15275: ST_TO_ADDR
// for i in FilterUnitsInArea ( ArBazaDruha , [ f_type , unit_human ] ) do
15276: LD_ADDR_VAR 0 1
15280: PUSH
15281: LD_INT 12
15283: PPUSH
15284: LD_INT 21
15286: PUSH
15287: LD_INT 1
15289: PUSH
15290: EMPTY
15291: LIST
15292: LIST
15293: PPUSH
15294: CALL_OW 70
15298: PUSH
15299: FOR_IN
15300: IFFALSE 15341
// begin ComEnterUnit ( i , NearestUnitToUnit ( FilterUnitsInArea ( ArBazaDruha , [ f_type , unit_building ] ) , i ) ) ;
15302: LD_VAR 0 1
15306: PPUSH
15307: LD_INT 12
15309: PPUSH
15310: LD_INT 21
15312: PUSH
15313: LD_INT 3
15315: PUSH
15316: EMPTY
15317: LIST
15318: LIST
15319: PPUSH
15320: CALL_OW 70
15324: PPUSH
15325: LD_VAR 0 1
15329: PPUSH
15330: CALL_OW 74
15334: PPUSH
15335: CALL_OW 120
// end ;
15339: GO 15299
15341: POP
15342: POP
// end ;
15343: PPOPN 1
15345: END
// every 0 0$1 do var nepritel , opice , un , nejblizsi_enemy ;
15346: GO 15348
15348: DISABLE
15349: LD_INT 0
15351: PPUSH
15352: PPUSH
15353: PPUSH
15354: PPUSH
// begin if AlianceSAraby then
15355: CALL 2247 0 0
15359: IFFALSE 15363
// exit ;
15361: GO 15635
// nepritel = FilterUnitsInArea ( ArBazaDruha , [ [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] ] ) ;
15363: LD_ADDR_VAR 0 1
15367: PUSH
15368: LD_INT 12
15370: PPUSH
15371: LD_INT 22
15373: PUSH
15374: LD_EXP 21
15378: PUSH
15379: EMPTY
15380: LIST
15381: LIST
15382: PUSH
15383: LD_INT 2
15385: PUSH
15386: LD_INT 21
15388: PUSH
15389: LD_INT 1
15391: PUSH
15392: EMPTY
15393: LIST
15394: LIST
15395: PUSH
15396: LD_INT 21
15398: PUSH
15399: LD_INT 2
15401: PUSH
15402: EMPTY
15403: LIST
15404: LIST
15405: PUSH
15406: LD_INT 3
15408: PUSH
15409: LD_INT 58
15411: PUSH
15412: EMPTY
15413: LIST
15414: PUSH
15415: EMPTY
15416: LIST
15417: LIST
15418: PUSH
15419: EMPTY
15420: LIST
15421: LIST
15422: LIST
15423: LIST
15424: PUSH
15425: EMPTY
15426: LIST
15427: LIST
15428: PPUSH
15429: CALL_OW 70
15433: ST_TO_ADDR
// if nepritel then
15434: LD_VAR 0 1
15438: IFFALSE 15634
// begin opice = FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_side , arab ] , [ f_class , class_apeman_soldier ] , [ f_inside ] , [ f_lives , 600 ] ] ) ;
15440: LD_ADDR_VAR 0 2
15444: PUSH
15445: LD_INT 95
15447: PUSH
15448: LD_INT 12
15450: PUSH
15451: EMPTY
15452: LIST
15453: LIST
15454: PUSH
15455: LD_INT 22
15457: PUSH
15458: LD_EXP 23
15462: PUSH
15463: EMPTY
15464: LIST
15465: LIST
15466: PUSH
15467: LD_INT 25
15469: PUSH
15470: LD_INT 15
15472: PUSH
15473: EMPTY
15474: LIST
15475: LIST
15476: PUSH
15477: LD_INT 54
15479: PUSH
15480: EMPTY
15481: LIST
15482: PUSH
15483: LD_INT 24
15485: PUSH
15486: LD_INT 600
15488: PUSH
15489: EMPTY
15490: LIST
15491: LIST
15492: PUSH
15493: EMPTY
15494: LIST
15495: LIST
15496: LIST
15497: LIST
15498: LIST
15499: PPUSH
15500: CALL_OW 69
15504: ST_TO_ADDR
// for un in opice do
15505: LD_ADDR_VAR 0 3
15509: PUSH
15510: LD_VAR 0 2
15514: PUSH
15515: FOR_IN
15516: IFFALSE 15632
// begin nejblizsi_enemy = NearestUnitToUnit2 ( nepritel , un ) ;
15518: LD_ADDR_VAR 0 4
15522: PUSH
15523: LD_VAR 0 1
15527: PPUSH
15528: LD_VAR 0 3
15532: PPUSH
15533: CALL 5562 0 2
15537: ST_TO_ADDR
// if GetDistUnits ( un , nejblizsi_enemy ) > 8 and GetDistUnits ( un , nejblizsi_enemy ) < 16 then
15538: LD_VAR 0 3
15542: PPUSH
15543: LD_VAR 0 4
15547: PPUSH
15548: CALL_OW 296
15552: PUSH
15553: LD_INT 8
15555: GREATER
15556: PUSH
15557: LD_VAR 0 3
15561: PPUSH
15562: LD_VAR 0 4
15566: PPUSH
15567: CALL_OW 296
15571: PUSH
15572: LD_INT 16
15574: LESS
15575: AND
15576: IFFALSE 15630
// begin VyjdiVen ( un ) ;
15578: LD_VAR 0 3
15582: PPUSH
15583: CALL 5478 0 1
// ComAttackUnit ( un , nejblizsi_enemy ) ;
15587: LD_VAR 0 3
15591: PPUSH
15592: LD_VAR 0 4
15596: PPUSH
15597: CALL_OW 115
// if not un in zalezt then
15601: LD_VAR 0 3
15605: PUSH
15606: LD_EXP 80
15610: IN
15611: NOT
15612: IFFALSE 15630
// zalezt = zalezt ^ un ;
15614: LD_ADDR_EXP 80
15618: PUSH
15619: LD_EXP 80
15623: PUSH
15624: LD_VAR 0 3
15628: ADD
15629: ST_TO_ADDR
// end ; end ;
15630: GO 15515
15632: POP
15633: POP
// end ; enable ;
15634: ENABLE
// end ;
15635: PPOPN 4
15637: END
// every 0 0$4 do var un , bunks ;
15638: GO 15640
15640: DISABLE
15641: LD_INT 0
15643: PPUSH
15644: PPUSH
// begin if AlianceSAraby then
15645: CALL 2247 0 0
15649: IFFALSE 15653
// exit ;
15651: GO 15799
// if ignore then
15653: LD_LOC 2
15657: IFFALSE 15661
// else
15659: GO 15798
// begin bunks = FilterUnitsInArea ( ArBazaDruha , [ [ f_empty ] , [ f_side , arab ] , [ f_ok ] , [ f_type , unit_building ] , [ f_btype , b_breastwork ] ] ) ;
15661: LD_ADDR_VAR 0 2
15665: PUSH
15666: LD_INT 12
15668: PPUSH
15669: LD_INT 58
15671: PUSH
15672: EMPTY
15673: LIST
15674: PUSH
15675: LD_INT 22
15677: PUSH
15678: LD_EXP 23
15682: PUSH
15683: EMPTY
15684: LIST
15685: LIST
15686: PUSH
15687: LD_INT 50
15689: PUSH
15690: EMPTY
15691: LIST
15692: PUSH
15693: LD_INT 21
15695: PUSH
15696: LD_INT 3
15698: PUSH
15699: EMPTY
15700: LIST
15701: LIST
15702: PUSH
15703: LD_INT 30
15705: PUSH
15706: LD_INT 31
15708: PUSH
15709: EMPTY
15710: LIST
15711: LIST
15712: PUSH
15713: EMPTY
15714: LIST
15715: LIST
15716: LIST
15717: LIST
15718: LIST
15719: PPUSH
15720: CALL_OW 70
15724: ST_TO_ADDR
// for un in zalezt do
15725: LD_ADDR_VAR 0 1
15729: PUSH
15730: LD_EXP 80
15734: PUSH
15735: FOR_IN
15736: IFFALSE 15796
// begin if bunks then
15738: LD_VAR 0 2
15742: IFFALSE 15794
// begin ComEnterUnit ( un , NearestUnitToUnit2 ( bunks , un ) ) ;
15744: LD_VAR 0 1
15748: PPUSH
15749: LD_VAR 0 2
15753: PPUSH
15754: LD_VAR 0 1
15758: PPUSH
15759: CALL 5562 0 2
15763: PPUSH
15764: CALL_OW 120
// bunks = bunks diff NearestUnitToUnit2 ( bunks , un ) ;
15768: LD_ADDR_VAR 0 2
15772: PUSH
15773: LD_VAR 0 2
15777: PUSH
15778: LD_VAR 0 2
15782: PPUSH
15783: LD_VAR 0 1
15787: PPUSH
15788: CALL 5562 0 2
15792: DIFF
15793: ST_TO_ADDR
// end ; end ;
15794: GO 15735
15796: POP
15797: POP
// end ; enable ;
15798: ENABLE
// end ;
15799: PPOPN 2
15801: END
// every 0 0$1 do var nepritel , opice , un , nejblizsi_enemy ;
15802: GO 15804
15804: DISABLE
15805: LD_INT 0
15807: PPUSH
15808: PPUSH
15809: PPUSH
15810: PPUSH
// begin if AlianceSAraby then
15811: CALL 2247 0 0
15815: IFFALSE 15819
// exit ;
15817: GO 16070
// nepritel = FilterUnitsInArea ( ArDruhaDepot , [ [ f_side , you ] , [ f_type , unit_human ] , [ f_class , 2 ] ] ) ;
15819: LD_ADDR_VAR 0 1
15823: PUSH
15824: LD_INT 14
15826: PPUSH
15827: LD_INT 22
15829: PUSH
15830: LD_EXP 21
15834: PUSH
15835: EMPTY
15836: LIST
15837: LIST
15838: PUSH
15839: LD_INT 21
15841: PUSH
15842: LD_INT 1
15844: PUSH
15845: EMPTY
15846: LIST
15847: LIST
15848: PUSH
15849: LD_INT 25
15851: PUSH
15852: LD_INT 2
15854: PUSH
15855: EMPTY
15856: LIST
15857: LIST
15858: PUSH
15859: EMPTY
15860: LIST
15861: LIST
15862: LIST
15863: PPUSH
15864: CALL_OW 70
15868: ST_TO_ADDR
// if nepritel then
15869: LD_VAR 0 1
15873: IFFALSE 16061
// begin opice = FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_side , arab ] , [ f_class , class_apeman_soldier ] ] ) ;
15875: LD_ADDR_VAR 0 2
15879: PUSH
15880: LD_INT 95
15882: PUSH
15883: LD_INT 12
15885: PUSH
15886: EMPTY
15887: LIST
15888: LIST
15889: PUSH
15890: LD_INT 22
15892: PUSH
15893: LD_EXP 23
15897: PUSH
15898: EMPTY
15899: LIST
15900: LIST
15901: PUSH
15902: LD_INT 25
15904: PUSH
15905: LD_INT 15
15907: PUSH
15908: EMPTY
15909: LIST
15910: LIST
15911: PUSH
15912: EMPTY
15913: LIST
15914: LIST
15915: LIST
15916: PPUSH
15917: CALL_OW 69
15921: ST_TO_ADDR
// for un in opice do
15922: LD_ADDR_VAR 0 3
15926: PUSH
15927: LD_VAR 0 2
15931: PUSH
15932: FOR_IN
15933: IFFALSE 16057
// begin nejblizsi_enemy = NearestUnitToUnit2 ( nepritel , un ) ;
15935: LD_ADDR_VAR 0 4
15939: PUSH
15940: LD_VAR 0 1
15944: PPUSH
15945: LD_VAR 0 3
15949: PPUSH
15950: CALL 5562 0 2
15954: ST_TO_ADDR
// if GetDistUnits ( nejblizsi_enemy , un ) > 8 and GetDistUnits ( nejblizsi_enemy , un ) < 26 then
15955: LD_VAR 0 4
15959: PPUSH
15960: LD_VAR 0 3
15964: PPUSH
15965: CALL_OW 296
15969: PUSH
15970: LD_INT 8
15972: GREATER
15973: PUSH
15974: LD_VAR 0 4
15978: PPUSH
15979: LD_VAR 0 3
15983: PPUSH
15984: CALL_OW 296
15988: PUSH
15989: LD_INT 26
15991: LESS
15992: AND
15993: IFFALSE 16055
// begin ignore = true ;
15995: LD_ADDR_LOC 2
15999: PUSH
16000: LD_INT 1
16002: ST_TO_ADDR
// VyjdiVen ( un ) ;
16003: LD_VAR 0 3
16007: PPUSH
16008: CALL 5478 0 1
// ComAttackUnit ( un , nejblizsi_enemy ) ;
16012: LD_VAR 0 3
16016: PPUSH
16017: LD_VAR 0 4
16021: PPUSH
16022: CALL_OW 115
// if not un in zalezt then
16026: LD_VAR 0 3
16030: PUSH
16031: LD_EXP 80
16035: IN
16036: NOT
16037: IFFALSE 16055
// zalezt = zalezt ^ un ;
16039: LD_ADDR_EXP 80
16043: PUSH
16044: LD_EXP 80
16048: PUSH
16049: LD_VAR 0 3
16053: ADD
16054: ST_TO_ADDR
// end ; end ;
16055: GO 15932
16057: POP
16058: POP
// end else
16059: GO 16069
// ignore = false ;
16061: LD_ADDR_LOC 2
16065: PUSH
16066: LD_INT 0
16068: ST_TO_ADDR
// enable ;
16069: ENABLE
// end ; end_of_file
16070: PPOPN 4
16072: END
// every 0 0$1 + 0 0$0.1 trigger Hrajeme do
16073: LD_EXP 27
16077: IFFALSE 16100
16079: GO 16081
16081: DISABLE
// begin display_strings = [ #Ru01-Time , tick ] ;
16082: LD_ADDR_OWVAR 47
16086: PUSH
16087: LD_STRING #Ru01-Time
16089: PUSH
16090: LD_OWVAR 1
16094: PUSH
16095: EMPTY
16096: LIST
16097: LIST
16098: ST_TO_ADDR
// enable ;
16099: ENABLE
// end ;
16100: END
// every 0 0$1 trigger Hrajeme = false do
16101: LD_EXP 27
16105: PUSH
16106: LD_INT 0
16108: EQUAL
16109: IFFALSE 16133
16111: GO 16113
16113: DISABLE
// begin if tick > 0 0$1 then
16114: LD_OWVAR 1
16118: PUSH
16119: LD_INT 35
16121: GREATER
16122: IFFALSE 16132
// tick = 0 ;
16124: LD_ADDR_OWVAR 1
16128: PUSH
16129: LD_INT 0
16131: ST_TO_ADDR
// enable ;
16132: ENABLE
// end ; end_of_file
16133: END
// every 0 0$1 do var red , radar , enemy ;
16134: GO 16136
16136: DISABLE
16137: LD_INT 0
16139: PPUSH
16140: PPUSH
16141: PPUSH
// begin if FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] , [ f_placed ] ] ) or AlianceSAraby then
16142: LD_INT 22
16144: PUSH
16145: LD_EXP 21
16149: PUSH
16150: EMPTY
16151: LIST
16152: LIST
16153: PUSH
16154: LD_INT 21
16156: PUSH
16157: LD_INT 3
16159: PUSH
16160: EMPTY
16161: LIST
16162: LIST
16163: PUSH
16164: LD_INT 52
16166: PUSH
16167: EMPTY
16168: LIST
16169: PUSH
16170: EMPTY
16171: LIST
16172: LIST
16173: LIST
16174: PPUSH
16175: CALL_OW 69
16179: PUSH
16180: CALL 2247 0 0
16184: OR
16185: IFFALSE 16721
// begin if not AlianceSAraby then
16187: CALL 2247 0 0
16191: NOT
16192: IFFALSE 16228
// red = FilterAllUnits ( [ [ f_side , you ] , [ f_placed ] ] ) else
16194: LD_ADDR_VAR 0 1
16198: PUSH
16199: LD_INT 22
16201: PUSH
16202: LD_EXP 21
16206: PUSH
16207: EMPTY
16208: LIST
16209: LIST
16210: PUSH
16211: LD_INT 52
16213: PUSH
16214: EMPTY
16215: LIST
16216: PUSH
16217: EMPTY
16218: LIST
16219: LIST
16220: PPUSH
16221: CALL_OW 69
16225: ST_TO_ADDR
16226: GO 16370
// begin if SideDead ( amik ) then
16228: LD_EXP 24
16232: PPUSH
16233: CALL 2293 0 1
16237: IFFALSE 16273
// red = FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] ] ) else
16239: LD_ADDR_VAR 0 1
16243: PUSH
16244: LD_INT 52
16246: PUSH
16247: EMPTY
16248: LIST
16249: PUSH
16250: LD_INT 22
16252: PUSH
16253: LD_EXP 22
16257: PUSH
16258: EMPTY
16259: LIST
16260: LIST
16261: PUSH
16262: EMPTY
16263: LIST
16264: LIST
16265: PPUSH
16266: CALL_OW 69
16270: ST_TO_ADDR
16271: GO 16370
// if SideDead ( purple ) then
16273: LD_EXP 22
16277: PPUSH
16278: CALL 2293 0 1
16282: IFFALSE 16318
// red = FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] ] ) else
16284: LD_ADDR_VAR 0 1
16288: PUSH
16289: LD_INT 52
16291: PUSH
16292: EMPTY
16293: LIST
16294: PUSH
16295: LD_INT 22
16297: PUSH
16298: LD_EXP 24
16302: PUSH
16303: EMPTY
16304: LIST
16305: LIST
16306: PUSH
16307: EMPTY
16308: LIST
16309: LIST
16310: PPUSH
16311: CALL_OW 69
16315: ST_TO_ADDR
16316: GO 16370
// red = FilterAllUnits ( [ [ f_placed ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
16318: LD_ADDR_VAR 0 1
16322: PUSH
16323: LD_INT 52
16325: PUSH
16326: EMPTY
16327: LIST
16328: PUSH
16329: LD_INT 2
16331: PUSH
16332: LD_INT 22
16334: PUSH
16335: LD_EXP 24
16339: PUSH
16340: EMPTY
16341: LIST
16342: LIST
16343: PUSH
16344: LD_INT 22
16346: PUSH
16347: LD_EXP 22
16351: PUSH
16352: EMPTY
16353: LIST
16354: LIST
16355: PUSH
16356: EMPTY
16357: LIST
16358: LIST
16359: LIST
16360: PUSH
16361: EMPTY
16362: LIST
16363: LIST
16364: PPUSH
16365: CALL_OW 69
16369: ST_TO_ADDR
// end ; enemy = FilterAllUnits ( [ [ f_placed ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
16370: LD_ADDR_VAR 0 3
16374: PUSH
16375: LD_INT 52
16377: PUSH
16378: EMPTY
16379: LIST
16380: PUSH
16381: LD_INT 2
16383: PUSH
16384: LD_INT 22
16386: PUSH
16387: LD_EXP 24
16391: PUSH
16392: EMPTY
16393: LIST
16394: LIST
16395: PUSH
16396: LD_INT 22
16398: PUSH
16399: LD_EXP 22
16403: PUSH
16404: EMPTY
16405: LIST
16406: LIST
16407: PUSH
16408: EMPTY
16409: LIST
16410: LIST
16411: LIST
16412: PUSH
16413: EMPTY
16414: LIST
16415: LIST
16416: PPUSH
16417: CALL_OW 69
16421: ST_TO_ADDR
// radar = FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_radar ] , [ f_placed ] , [ f_not , [ f_chassis , ar_hovercraft ] ] ] ) ;
16422: LD_ADDR_VAR 0 2
16426: PUSH
16427: LD_INT 22
16429: PUSH
16430: LD_EXP 23
16434: PUSH
16435: EMPTY
16436: LIST
16437: LIST
16438: PUSH
16439: LD_INT 21
16441: PUSH
16442: LD_INT 2
16444: PUSH
16445: EMPTY
16446: LIST
16447: LIST
16448: PUSH
16449: LD_INT 34
16451: PUSH
16452: LD_INT 30
16454: PUSH
16455: EMPTY
16456: LIST
16457: LIST
16458: PUSH
16459: LD_INT 52
16461: PUSH
16462: EMPTY
16463: LIST
16464: PUSH
16465: LD_INT 3
16467: PUSH
16468: LD_INT 31
16470: PUSH
16471: LD_INT 11
16473: PUSH
16474: EMPTY
16475: LIST
16476: LIST
16477: PUSH
16478: EMPTY
16479: LIST
16480: LIST
16481: PUSH
16482: EMPTY
16483: LIST
16484: LIST
16485: LIST
16486: LIST
16487: LIST
16488: PPUSH
16489: CALL_OW 69
16493: ST_TO_ADDR
// if radar then
16494: LD_VAR 0 2
16498: IFFALSE 16721
// begin radar = radar [ 1 ] ;
16500: LD_ADDR_VAR 0 2
16504: PUSH
16505: LD_VAR 0 2
16509: PUSH
16510: LD_INT 1
16512: ARRAY
16513: ST_TO_ADDR
// if GetLives ( radar ) < hranice_utok_repair_utek then
16514: LD_VAR 0 2
16518: PPUSH
16519: CALL_OW 256
16523: PUSH
16524: LD_EXP 56
16528: LESS
16529: IFFALSE 16550
// begin ComMoveToArea ( radar , ArRepair ) ;
16531: LD_VAR 0 2
16535: PPUSH
16536: LD_INT 24
16538: PPUSH
16539: CALL_OW 113
// Wait ( 2 2$20 ) ;
16543: LD_INT 4900
16545: PPUSH
16546: CALL_OW 67
// end ; if GetDistUnits ( radar , NearestUnitToUnit2 ( enemy , radar ) ) < radar_distance - 1 then
16550: LD_VAR 0 2
16554: PPUSH
16555: LD_VAR 0 3
16559: PPUSH
16560: LD_VAR 0 2
16564: PPUSH
16565: CALL 5562 0 2
16569: PPUSH
16570: CALL_OW 296
16574: PUSH
16575: LD_EXP 55
16579: PUSH
16580: LD_INT 1
16582: MINUS
16583: LESS
16584: IFFALSE 16600
// ComMoveToArea ( radar , ArBaza ) else
16586: LD_VAR 0 2
16590: PPUSH
16591: LD_INT 15
16593: PPUSH
16594: CALL_OW 113
16598: GO 16721
// begin if GetDistUnits ( radar , NearestUnitToUnit2 ( red , radar ) ) > radar_distance + 1 then
16600: LD_VAR 0 2
16604: PPUSH
16605: LD_VAR 0 1
16609: PPUSH
16610: LD_VAR 0 2
16614: PPUSH
16615: CALL 5562 0 2
16619: PPUSH
16620: CALL_OW 296
16624: PUSH
16625: LD_EXP 55
16629: PUSH
16630: LD_INT 1
16632: PLUS
16633: GREATER
16634: IFFALSE 16662
// ComMoveUnit ( radar , NearestUnitToUnit2 ( red , radar ) ) else
16636: LD_VAR 0 2
16640: PPUSH
16641: LD_VAR 0 1
16645: PPUSH
16646: LD_VAR 0 2
16650: PPUSH
16651: CALL 5562 0 2
16655: PPUSH
16656: CALL_OW 112
16660: GO 16721
// if ( GetDistUnits ( radar , NearestUnitToUnit2 ( red , radar ) ) < radar_distance - 1 ) then
16662: LD_VAR 0 2
16666: PPUSH
16667: LD_VAR 0 1
16671: PPUSH
16672: LD_VAR 0 2
16676: PPUSH
16677: CALL 5562 0 2
16681: PPUSH
16682: CALL_OW 296
16686: PUSH
16687: LD_EXP 55
16691: PUSH
16692: LD_INT 1
16694: MINUS
16695: LESS
16696: IFFALSE 16712
// ComMoveToArea ( radar , ArBaza ) else
16698: LD_VAR 0 2
16702: PPUSH
16703: LD_INT 15
16705: PPUSH
16706: CALL_OW 113
16710: GO 16721
// ComStop ( radar ) ;
16712: LD_VAR 0 2
16716: PPUSH
16717: CALL_OW 141
// end ; end ; end ; enable ;
16721: ENABLE
// end ;
16722: PPOPN 3
16724: END
// every 0 0$3 do var veh ;
16725: GO 16727
16727: DISABLE
16728: LD_INT 0
16730: PPUSH
// begin if not FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_cargo_bay ] ] ) then
16731: LD_INT 22
16733: PUSH
16734: LD_EXP 23
16738: PUSH
16739: EMPTY
16740: LIST
16741: LIST
16742: PUSH
16743: LD_INT 21
16745: PUSH
16746: LD_INT 2
16748: PUSH
16749: EMPTY
16750: LIST
16751: LIST
16752: PUSH
16753: LD_INT 34
16755: PUSH
16756: LD_INT 32
16758: PUSH
16759: EMPTY
16760: LIST
16761: LIST
16762: PUSH
16763: EMPTY
16764: LIST
16765: LIST
16766: LIST
16767: PPUSH
16768: CALL_OW 69
16772: NOT
16773: IFFALSE 16857
// begin Wait ( 5 5$00 ) ;
16775: LD_INT 10500
16777: PPUSH
16778: CALL_OW 67
// uc_side = arab ;
16782: LD_ADDR_OWVAR 20
16786: PUSH
16787: LD_EXP 23
16791: ST_TO_ADDR
// uc_nation = nation_arabian ;
16792: LD_ADDR_OWVAR 21
16796: PUSH
16797: LD_INT 2
16799: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
16800: LD_ADDR_OWVAR 37
16804: PUSH
16805: LD_INT 14
16807: ST_TO_ADDR
// vc_control = control_apeman ;
16808: LD_ADDR_OWVAR 38
16812: PUSH
16813: LD_INT 5
16815: ST_TO_ADDR
// vc_engine = engine_siberite ;
16816: LD_ADDR_OWVAR 39
16820: PUSH
16821: LD_INT 3
16823: ST_TO_ADDR
// vc_weapon = ar_cargo_bay ;
16824: LD_ADDR_OWVAR 40
16828: PUSH
16829: LD_INT 32
16831: ST_TO_ADDR
// veh = CreateVehicle ;
16832: LD_ADDR_VAR 0 1
16836: PUSH
16837: CALL_OW 45
16841: ST_TO_ADDR
// PlaceUnitArea ( veh , ArSupportSpawn , false ) ;
16842: LD_VAR 0 1
16846: PPUSH
16847: LD_INT 34
16849: PPUSH
16850: LD_INT 0
16852: PPUSH
16853: CALL_OW 49
// end ; enable ;
16857: ENABLE
// end ;
16858: PPOPN 1
16860: END
// every 0 0$1 do var nakl , bedny , takeCrystals ;
16861: GO 16863
16863: DISABLE
16864: LD_INT 0
16866: PPUSH
16867: PPUSH
16868: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_cargo_bay ] ] ) ;
16869: LD_ADDR_VAR 0 1
16873: PUSH
16874: LD_INT 22
16876: PUSH
16877: LD_EXP 23
16881: PUSH
16882: EMPTY
16883: LIST
16884: LIST
16885: PUSH
16886: LD_INT 21
16888: PUSH
16889: LD_INT 2
16891: PUSH
16892: EMPTY
16893: LIST
16894: LIST
16895: PUSH
16896: LD_INT 34
16898: PUSH
16899: LD_INT 32
16901: PUSH
16902: EMPTY
16903: LIST
16904: LIST
16905: PUSH
16906: EMPTY
16907: LIST
16908: LIST
16909: LIST
16910: PPUSH
16911: CALL_OW 69
16915: ST_TO_ADDR
// if nakl then
16916: LD_VAR 0 1
16920: IFFALSE 17210
// begin nakl = nakl [ 1 ] ;
16922: LD_ADDR_VAR 0 1
16926: PUSH
16927: LD_VAR 0 1
16931: PUSH
16932: LD_INT 1
16934: ARRAY
16935: ST_TO_ADDR
// takeCrystals = false ;
16936: LD_ADDR_VAR 0 3
16940: PUSH
16941: LD_INT 0
16943: ST_TO_ADDR
// if IsOk ( forest_depot ) then
16944: LD_INT 88
16946: PPUSH
16947: CALL_OW 302
16951: IFFALSE 16998
// begin if GetResources ( GetBase ( forest_depot ) ) [ 3 ] >= 80 then
16953: LD_INT 88
16955: PPUSH
16956: CALL_OW 274
16960: PPUSH
16961: CALL_OW 279
16965: PUSH
16966: LD_INT 3
16968: ARRAY
16969: PUSH
16970: LD_INT 80
16972: GREATEREQUAL
16973: IFFALSE 16998
// begin if GetSide ( forest_depot ) = arab then
16975: LD_INT 88
16977: PPUSH
16978: CALL_OW 255
16982: PUSH
16983: LD_EXP 23
16987: EQUAL
16988: IFFALSE 16998
// takeCrystals = true end ;
16990: LD_ADDR_VAR 0 3
16994: PUSH
16995: LD_INT 1
16997: ST_TO_ADDR
// end ; if GetDistUnits ( nakl , ar_ware ) < 30 and GetCargo ( nakl , mat_siberit ) > 0 and IsOk ( nakl ) then
16998: LD_VAR 0 1
17002: PPUSH
17003: LD_INT 101
17005: PPUSH
17006: CALL_OW 296
17010: PUSH
17011: LD_INT 30
17013: LESS
17014: PUSH
17015: LD_VAR 0 1
17019: PPUSH
17020: LD_INT 3
17022: PPUSH
17023: CALL_OW 289
17027: PUSH
17028: LD_INT 0
17030: GREATER
17031: AND
17032: PUSH
17033: LD_VAR 0 1
17037: PPUSH
17038: CALL_OW 302
17042: AND
17043: IFFALSE 17071
// begin CreateCratesXYR ( 3 , 163 , 99 , 4 , true ) ;
17045: LD_INT 3
17047: PPUSH
17048: LD_INT 163
17050: PPUSH
17051: LD_INT 99
17053: PPUSH
17054: LD_INT 4
17056: PPUSH
17057: LD_INT 1
17059: PPUSH
17060: CALL_OW 56
// Wait ( 0 0$5 ) ;
17064: LD_INT 175
17066: PPUSH
17067: CALL_OW 67
// end ; if GetLives ( nakl ) < hranice_utok_repair_utek then
17071: LD_VAR 0 1
17075: PPUSH
17076: CALL_OW 256
17080: PUSH
17081: LD_EXP 56
17085: LESS
17086: IFFALSE 17109
// begin ComMoveToArea ( nakl , ArRepair ) ;
17088: LD_VAR 0 1
17092: PPUSH
17093: LD_INT 24
17095: PPUSH
17096: CALL_OW 113
// Wait ( 2 2$20 ) ;
17100: LD_INT 4900
17102: PPUSH
17103: CALL_OW 67
// end else
17107: GO 17210
// if GetCargo ( nakl , mat_siberit ) > 0 then
17109: LD_VAR 0 1
17113: PPUSH
17114: LD_INT 3
17116: PPUSH
17117: CALL_OW 289
17121: PUSH
17122: LD_INT 0
17124: GREATER
17125: IFFALSE 17141
// ComGive ( nakl , ar_ware ) else
17127: LD_VAR 0 1
17131: PPUSH
17132: LD_INT 101
17134: PPUSH
17135: CALL_OW 161
17139: GO 17210
// if takeCrystals then
17141: LD_VAR 0 3
17145: IFFALSE 17164
// ComTransport ( nakl , forest_depot , mat_siberit ) else
17147: LD_VAR 0 1
17151: PPUSH
17152: LD_INT 88
17154: PPUSH
17155: LD_INT 3
17157: PPUSH
17158: CALL_OW 151
17162: GO 17210
// begin bedny = GetListOfCratesInArea ( ArBazeOkoli ) ;
17164: LD_ADDR_VAR 0 2
17168: PUSH
17169: LD_INT 39
17171: PPUSH
17172: CALL_OW 435
17176: ST_TO_ADDR
// if bedny then
17177: LD_VAR 0 2
17181: IFFALSE 17210
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
17183: LD_VAR 0 1
17187: PPUSH
17188: LD_VAR 0 2
17192: PUSH
17193: LD_INT 1
17195: ARRAY
17196: PPUSH
17197: LD_VAR 0 2
17201: PUSH
17202: LD_INT 2
17204: ARRAY
17205: PPUSH
17206: CALL_OW 117
// end ; end ; enable ;
17210: ENABLE
// end ;
17211: PPOPN 3
17213: END
// every 0 0$0.8 do var nepritel , i ;
17214: GO 17216
17216: DISABLE
17217: LD_INT 0
17219: PPUSH
17220: PPUSH
// begin if GetAttitude ( you , arab ) = att_friend then
17221: LD_EXP 21
17225: PPUSH
17226: LD_EXP 23
17230: PPUSH
17231: CALL_OW 81
17235: PUSH
17236: LD_INT 1
17238: EQUAL
17239: IFFALSE 17244
// begin disable ;
17241: DISABLE
// exit ;
17242: GO 17404
// end ; nepritel = FilterUnitsInArea ( MinaOblast , [ f_side , 3 ] ) ;
17244: LD_ADDR_VAR 0 1
17248: PUSH
17249: LD_INT 13
17251: PPUSH
17252: LD_INT 22
17254: PUSH
17255: LD_INT 3
17257: PUSH
17258: EMPTY
17259: LIST
17260: LIST
17261: PPUSH
17262: CALL_OW 70
17266: ST_TO_ADDR
// if nepritel then
17267: LD_VAR 0 1
17271: IFFALSE 17403
// begin for i in nepritel do
17273: LD_ADDR_VAR 0 2
17277: PUSH
17278: LD_VAR 0 1
17282: PUSH
17283: FOR_IN
17284: IFFALSE 17401
// begin if GetDistUnitXY ( i , 117 , 63 ) < 3 and GetResourceAmountXY ( 117 , 62 ) <= 3 then
17286: LD_VAR 0 2
17290: PPUSH
17291: LD_INT 117
17293: PPUSH
17294: LD_INT 63
17296: PPUSH
17297: CALL_OW 297
17301: PUSH
17302: LD_INT 3
17304: LESS
17305: PUSH
17306: LD_INT 117
17308: PPUSH
17309: LD_INT 62
17311: PPUSH
17312: CALL_OW 284
17316: PUSH
17317: LD_INT 3
17319: LESSEQUAL
17320: AND
17321: IFFALSE 17399
// begin LaunchMineAtPos ( 117 , 63 , arab ) ;
17323: LD_INT 117
17325: PPUSH
17326: LD_INT 63
17328: PPUSH
17329: LD_EXP 23
17333: PPUSH
17334: CALL_OW 456
// Wait ( 0 0$0.5 ) ;
17338: LD_INT 18
17340: PPUSH
17341: CALL_OW 67
// disable ;
17345: DISABLE
// Say ( NearestUnitToXY ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] ] ) , 117 , 63 ) , D2nekdo-5 ) ;
17346: LD_INT 22
17348: PUSH
17349: LD_EXP 21
17353: PUSH
17354: EMPTY
17355: LIST
17356: LIST
17357: PUSH
17358: LD_INT 21
17360: PUSH
17361: LD_INT 1
17363: PUSH
17364: EMPTY
17365: LIST
17366: LIST
17367: PUSH
17368: EMPTY
17369: LIST
17370: LIST
17371: PPUSH
17372: CALL_OW 69
17376: PPUSH
17377: LD_INT 117
17379: PPUSH
17380: LD_INT 63
17382: PPUSH
17383: CALL_OW 73
17387: PPUSH
17388: LD_STRING D2nekdo-5
17390: PPUSH
17391: CALL_OW 88
// exit ;
17395: POP
17396: POP
17397: GO 17404
// end ; end ;
17399: GO 17283
17401: POP
17402: POP
// end ; enable ;
17403: ENABLE
// end ;
17404: PPOPN 2
17406: END
// every 0 0$1 do var arealist , i ;
17407: GO 17409
17409: DISABLE
17410: LD_INT 0
17412: PPUSH
17413: PPUSH
// begin arealist = AreaToList ( Kamery , 0 ) ;
17414: LD_ADDR_VAR 0 1
17418: PUSH
17419: LD_INT 36
17421: PPUSH
17422: LD_INT 0
17424: PPUSH
17425: CALL_OW 517
17429: ST_TO_ADDR
// for i = 1 to ( arealist [ 1 ] + 0 ) do
17430: LD_ADDR_VAR 0 2
17434: PUSH
17435: DOUBLE
17436: LD_INT 1
17438: DEC
17439: ST_TO_ADDR
17440: LD_VAR 0 1
17444: PUSH
17445: LD_INT 1
17447: ARRAY
17448: PUSH
17449: LD_INT 0
17451: PLUS
17452: PUSH
17453: FOR_TO
17454: IFFALSE 17533
// begin if IsEnvironment ( arealist [ 1 ] [ i ] , arealist [ 2 ] [ i ] ) then
17456: LD_VAR 0 1
17460: PUSH
17461: LD_INT 1
17463: ARRAY
17464: PUSH
17465: LD_VAR 0 2
17469: ARRAY
17470: PPUSH
17471: LD_VAR 0 1
17475: PUSH
17476: LD_INT 2
17478: ARRAY
17479: PUSH
17480: LD_VAR 0 2
17484: ARRAY
17485: PPUSH
17486: CALL_OW 351
17490: IFFALSE 17531
// HiddenCamera ( arealist [ 1 ] [ i ] , arealist [ 2 ] [ i ] , arab ) ;
17492: LD_VAR 0 1
17496: PUSH
17497: LD_INT 1
17499: ARRAY
17500: PUSH
17501: LD_VAR 0 2
17505: ARRAY
17506: PPUSH
17507: LD_VAR 0 1
17511: PUSH
17512: LD_INT 2
17514: ARRAY
17515: PUSH
17516: LD_VAR 0 2
17520: ARRAY
17521: PPUSH
17522: LD_EXP 23
17526: PPUSH
17527: CALL_OW 244
// end ;
17531: GO 17453
17533: POP
17534: POP
// end ;
17535: PPOPN 2
17537: END
// export Tech_list_Arab ; every 0 0$1 do
17538: GO 17540
17540: DISABLE
// begin Tech_list_Arab = [ tech_tech1 , tech_bio1 , tech_tech2 , tech_bio2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_bio3 , tech_weap3 , tech_opto1 , tech_opto2 , tech_opto3 ] ;
17541: LD_ADDR_EXP 81
17545: PUSH
17546: LD_INT 48
17548: PUSH
17549: LD_INT 66
17551: PUSH
17552: LD_INT 49
17554: PUSH
17555: LD_INT 67
17557: PUSH
17558: LD_INT 50
17560: PUSH
17561: LD_INT 51
17563: PUSH
17564: LD_INT 52
17566: PUSH
17567: LD_INT 68
17569: PUSH
17570: LD_INT 53
17572: PUSH
17573: LD_INT 60
17575: PUSH
17576: LD_INT 61
17578: PUSH
17579: LD_INT 62
17581: PUSH
17582: EMPTY
17583: LIST
17584: LIST
17585: LIST
17586: LIST
17587: LIST
17588: LIST
17589: LIST
17590: LIST
17591: LIST
17592: LIST
17593: LIST
17594: LIST
17595: ST_TO_ADDR
// end ;
17596: END
// every 0 0$1 do
17597: GO 17599
17599: DISABLE
// begin if IsOk ( ar_lab1 ) and GetSide ( ar_lab1 ) = arab and tick > dif_research_wait then
17600: LD_INT 99
17602: PPUSH
17603: CALL_OW 302
17607: PUSH
17608: LD_INT 99
17610: PPUSH
17611: CALL_OW 255
17615: PUSH
17616: LD_EXP 23
17620: EQUAL
17621: AND
17622: PUSH
17623: LD_OWVAR 1
17627: PUSH
17628: LD_EXP 75
17632: GREATER
17633: AND
17634: IFFALSE 17646
// Zkoumej ( 1 , ar_lab1 ) ;
17636: LD_INT 1
17638: PPUSH
17639: LD_INT 99
17641: PPUSH
17642: CALL 17694 0 2
// if IsOk ( ar_lab2 ) and GetSide ( ar_lab2 ) = arab and tick > dif_research_wait then
17646: LD_INT 100
17648: PPUSH
17649: CALL_OW 302
17653: PUSH
17654: LD_INT 100
17656: PPUSH
17657: CALL_OW 255
17661: PUSH
17662: LD_EXP 23
17666: EQUAL
17667: AND
17668: PUSH
17669: LD_OWVAR 1
17673: PUSH
17674: LD_EXP 75
17678: GREATER
17679: AND
17680: IFFALSE 17692
// Zkoumej ( 1 , ar_lab2 ) ;
17682: LD_INT 1
17684: PPUSH
17685: LD_INT 100
17687: PPUSH
17688: CALL 17694 0 2
// enable ;
17692: ENABLE
// end ;
17693: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
17694: LD_INT 0
17696: PPUSH
// if tech_list_arab + 0 >= 1 then
17697: LD_EXP 81
17701: PUSH
17702: LD_INT 0
17704: PLUS
17705: PUSH
17706: LD_INT 1
17708: GREATEREQUAL
17709: IFFALSE 17749
// if Researched ( arab , Tech_list_Arab [ 1 ] ) then
17711: LD_EXP 23
17715: PPUSH
17716: LD_EXP 81
17720: PUSH
17721: LD_INT 1
17723: ARRAY
17724: PPUSH
17725: CALL_OW 325
17729: IFFALSE 17749
// Tech_list_Arab = Delete ( Tech_list_Arab , 1 ) ;
17731: LD_ADDR_EXP 81
17735: PUSH
17736: LD_EXP 81
17740: PPUSH
17741: LD_INT 1
17743: PPUSH
17744: CALL_OW 3
17748: ST_TO_ADDR
// if Tech_list_Arab and not GetActResearch ( laborator ) then
17749: LD_EXP 81
17753: PUSH
17754: LD_VAR 0 2
17758: PPUSH
17759: CALL_OW 485
17763: NOT
17764: AND
17765: IFFALSE 17785
// ComResearch ( laborator , Tech_list_Arab [ 1 ] ) ;
17767: LD_VAR 0 2
17771: PPUSH
17772: LD_EXP 81
17776: PUSH
17777: LD_INT 1
17779: ARRAY
17780: PPUSH
17781: CALL_OW 124
// end ;
17785: LD_VAR 0 3
17789: RET
// every 0 0$2 do var tov ;
17790: GO 17792
17792: DISABLE
17793: LD_INT 0
17795: PPUSH
// begin tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_factory ] , [ f_ok ] , [ f_side , arab ] ] ) ;
17796: LD_ADDR_VAR 0 1
17800: PUSH
17801: LD_INT 22
17803: PUSH
17804: LD_EXP 23
17808: PUSH
17809: EMPTY
17810: LIST
17811: LIST
17812: PUSH
17813: LD_INT 30
17815: PUSH
17816: LD_INT 3
17818: PUSH
17819: EMPTY
17820: LIST
17821: LIST
17822: PUSH
17823: LD_INT 50
17825: PUSH
17826: EMPTY
17827: LIST
17828: PUSH
17829: LD_INT 22
17831: PUSH
17832: LD_EXP 23
17836: PUSH
17837: EMPTY
17838: LIST
17839: LIST
17840: PUSH
17841: EMPTY
17842: LIST
17843: LIST
17844: LIST
17845: LIST
17846: PPUSH
17847: CALL_OW 69
17851: ST_TO_ADDR
// if tov and FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_warehouse ] , [ f_ok ] ] ) then
17852: LD_VAR 0 1
17856: PUSH
17857: LD_INT 22
17859: PUSH
17860: LD_EXP 23
17864: PUSH
17865: EMPTY
17866: LIST
17867: LIST
17868: PUSH
17869: LD_INT 30
17871: PUSH
17872: LD_INT 1
17874: PUSH
17875: EMPTY
17876: LIST
17877: LIST
17878: PUSH
17879: LD_INT 50
17881: PUSH
17882: EMPTY
17883: LIST
17884: PUSH
17885: EMPTY
17886: LIST
17887: LIST
17888: LIST
17889: PPUSH
17890: CALL_OW 69
17894: AND
17895: IFFALSE 17944
// begin if UnitFilter ( UnitsInside ( tov [ 1 ] ) , [ f_class , class_apeman_soldier ] ) < 1 then
17897: LD_VAR 0 1
17901: PUSH
17902: LD_INT 1
17904: ARRAY
17905: PPUSH
17906: CALL_OW 313
17910: PPUSH
17911: LD_INT 25
17913: PUSH
17914: LD_INT 15
17916: PUSH
17917: EMPTY
17918: LIST
17919: LIST
17920: PPUSH
17921: CALL_OW 72
17925: PUSH
17926: LD_INT 1
17928: LESS
17929: IFFALSE 17944
// begin VopiceDoTovarny ( tov [ 1 ] ) ;
17931: LD_VAR 0 1
17935: PUSH
17936: LD_INT 1
17938: ARRAY
17939: PPUSH
17940: CALL 17948 0 1
// end ; end ; enable ;
17944: ENABLE
// end ;
17945: PPOPN 1
17947: END
// function VopiceDoTovarny ( tov ) ; var k ; begin
17948: LD_INT 0
17950: PPUSH
17951: PPUSH
// InitHc ;
17952: CALL_OW 19
// InitUc ;
17956: CALL_OW 18
// uc_side := arab ;
17960: LD_ADDR_OWVAR 20
17964: PUSH
17965: LD_EXP 23
17969: ST_TO_ADDR
// uc_nation := nation_nature ;
17970: LD_ADDR_OWVAR 21
17974: PUSH
17975: LD_INT 0
17977: ST_TO_ADDR
// hc_class := class_apeman_soldier ;
17978: LD_ADDR_OWVAR 28
17982: PUSH
17983: LD_INT 15
17985: ST_TO_ADDR
// k := CreateHuman ;
17986: LD_ADDR_VAR 0 3
17990: PUSH
17991: CALL_OW 44
17995: ST_TO_ADDR
// PlaceHumanInUnit ( k , tov ) ;
17996: LD_VAR 0 3
18000: PPUSH
18001: LD_VAR 0 1
18005: PPUSH
18006: CALL_OW 52
// end ;
18010: LD_VAR 0 2
18014: RET
// every 0 0$3 do var tov , radar ;
18015: GO 18017
18017: DISABLE
18018: LD_INT 0
18020: PPUSH
18021: PPUSH
// begin radar = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_radar ] ] ) ;
18022: LD_ADDR_VAR 0 2
18026: PUSH
18027: LD_INT 52
18029: PUSH
18030: EMPTY
18031: LIST
18032: PUSH
18033: LD_INT 22
18035: PUSH
18036: LD_EXP 23
18040: PUSH
18041: EMPTY
18042: LIST
18043: LIST
18044: PUSH
18045: LD_INT 21
18047: PUSH
18048: LD_INT 2
18050: PUSH
18051: EMPTY
18052: LIST
18053: LIST
18054: PUSH
18055: LD_INT 34
18057: PUSH
18058: LD_INT 30
18060: PUSH
18061: EMPTY
18062: LIST
18063: LIST
18064: PUSH
18065: EMPTY
18066: LIST
18067: LIST
18068: LIST
18069: LIST
18070: PPUSH
18071: CALL_OW 69
18075: ST_TO_ADDR
// if not radar then
18076: LD_VAR 0 2
18080: NOT
18081: IFFALSE 18201
// begin Wait ( 8 8$00 ) ;
18083: LD_INT 16800
18085: PPUSH
18086: CALL_OW 67
// tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_ok ] , [ f_btype , b_factory ] ] ) ;
18090: LD_ADDR_VAR 0 1
18094: PUSH
18095: LD_INT 22
18097: PUSH
18098: LD_EXP 23
18102: PUSH
18103: EMPTY
18104: LIST
18105: LIST
18106: PUSH
18107: LD_INT 50
18109: PUSH
18110: EMPTY
18111: LIST
18112: PUSH
18113: LD_INT 30
18115: PUSH
18116: LD_INT 3
18118: PUSH
18119: EMPTY
18120: LIST
18121: LIST
18122: PUSH
18123: EMPTY
18124: LIST
18125: LIST
18126: LIST
18127: PPUSH
18128: CALL_OW 69
18132: ST_TO_ADDR
// if not tov then
18133: LD_VAR 0 1
18137: NOT
18138: IFFALSE 18142
// exit ;
18140: GO 18202
// if CanBeConstructed ( tov [ 1 ] , ar_medium_trike , engine_siberite , control_apeman , ar_radar ) then
18142: LD_VAR 0 1
18146: PUSH
18147: LD_INT 1
18149: ARRAY
18150: PPUSH
18151: LD_INT 13
18153: PPUSH
18154: LD_INT 3
18156: PPUSH
18157: LD_INT 5
18159: PPUSH
18160: LD_INT 30
18162: PPUSH
18163: CALL_OW 448
18167: IFFALSE 18194
// AddComConstruct ( tov [ 1 ] , ar_medium_trike , engine_siberite , control_apeman , ar_radar ) ;
18169: LD_VAR 0 1
18173: PUSH
18174: LD_INT 1
18176: ARRAY
18177: PPUSH
18178: LD_INT 13
18180: PPUSH
18181: LD_INT 3
18183: PPUSH
18184: LD_INT 5
18186: PPUSH
18187: LD_INT 30
18189: PPUSH
18190: CALL_OW 185
// Wait ( 8 8$00 ) ;
18194: LD_INT 16800
18196: PPUSH
18197: CALL_OW 67
// end ; enable ;
18201: ENABLE
// end ; end_of_file
18202: PPOPN 2
18204: END
// on EnterBuilding ( building , human ) do begin if GetClass ( human ) = class_apeman_soldier and GetSide ( human ) = arab and IsInArea2 ( human , ArBazaDruha ) and human in zalezt then
18205: LD_VAR 0 2
18209: PPUSH
18210: CALL_OW 257
18214: PUSH
18215: LD_INT 15
18217: EQUAL
18218: PUSH
18219: LD_VAR 0 2
18223: PPUSH
18224: CALL_OW 255
18228: PUSH
18229: LD_EXP 23
18233: EQUAL
18234: AND
18235: PUSH
18236: LD_VAR 0 2
18240: PPUSH
18241: LD_INT 12
18243: PPUSH
18244: CALL 5648 0 2
18248: AND
18249: PUSH
18250: LD_VAR 0 2
18254: PUSH
18255: LD_EXP 80
18259: IN
18260: AND
18261: IFFALSE 18279
// zalezt = zalezt diff human ;
18263: LD_ADDR_EXP 80
18267: PUSH
18268: LD_EXP 80
18272: PUSH
18273: LD_VAR 0 2
18277: DIFF
18278: ST_TO_ADDR
// end ;
18279: PPOPN 2
18281: END
// on BuildingCaptured ( building , side , human ) do begin if building = forest_depot then
18282: LD_VAR 0 1
18286: PUSH
18287: LD_INT 88
18289: EQUAL
18290: IFFALSE 18340
// begin SetResourceType ( GetBase ( building ) , mat_cans , 10 ) ;
18292: LD_VAR 0 1
18296: PPUSH
18297: CALL_OW 274
18301: PPUSH
18302: LD_INT 1
18304: PPUSH
18305: LD_INT 10
18307: PPUSH
18308: CALL_OW 277
// SetResourceType ( GetBase ( building ) , mat_siberit , Rand ( 25 , 38 ) ) ;
18312: LD_VAR 0 1
18316: PPUSH
18317: CALL_OW 274
18321: PPUSH
18322: LD_INT 3
18324: PPUSH
18325: LD_INT 25
18327: PPUSH
18328: LD_INT 38
18330: PPUSH
18331: CALL_OW 12
18335: PPUSH
18336: CALL_OW 277
// end ; end ;
18340: PPOPN 3
18342: END
// on UnitGoesToRed ( unit ) do begin if ( GetSide ( unit ) = arab and GetBType ( unit ) = b_warehouse and FilterAllUnits ( [ [ f_inarea , ArBazeOkoli ] , [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) ) or ( GetSide ( unit ) = arab and FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] ] ) + 0 <= arStartUnitCount - 6 and FilterAllUnits ( [ [ f_inarea , ArBazeOkoli ] , [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ) ) then
18343: LD_VAR 0 1
18347: PPUSH
18348: CALL_OW 255
18352: PUSH
18353: LD_EXP 23
18357: EQUAL
18358: PUSH
18359: LD_VAR 0 1
18363: PPUSH
18364: CALL_OW 266
18368: PUSH
18369: LD_INT 1
18371: EQUAL
18372: AND
18373: PUSH
18374: LD_INT 95
18376: PUSH
18377: LD_INT 39
18379: PUSH
18380: EMPTY
18381: LIST
18382: LIST
18383: PUSH
18384: LD_INT 22
18386: PUSH
18387: LD_EXP 21
18391: PUSH
18392: EMPTY
18393: LIST
18394: LIST
18395: PUSH
18396: LD_INT 2
18398: PUSH
18399: LD_INT 21
18401: PUSH
18402: LD_INT 1
18404: PUSH
18405: EMPTY
18406: LIST
18407: LIST
18408: PUSH
18409: LD_INT 21
18411: PUSH
18412: LD_INT 2
18414: PUSH
18415: EMPTY
18416: LIST
18417: LIST
18418: PUSH
18419: EMPTY
18420: LIST
18421: LIST
18422: LIST
18423: PUSH
18424: EMPTY
18425: LIST
18426: LIST
18427: LIST
18428: PPUSH
18429: CALL_OW 69
18433: AND
18434: PUSH
18435: LD_VAR 0 1
18439: PPUSH
18440: CALL_OW 255
18444: PUSH
18445: LD_EXP 23
18449: EQUAL
18450: PUSH
18451: LD_INT 22
18453: PUSH
18454: LD_EXP 23
18458: PUSH
18459: EMPTY
18460: LIST
18461: LIST
18462: PUSH
18463: LD_INT 21
18465: PUSH
18466: LD_INT 1
18468: PUSH
18469: EMPTY
18470: LIST
18471: LIST
18472: PUSH
18473: LD_INT 23
18475: PUSH
18476: LD_INT 2
18478: PUSH
18479: EMPTY
18480: LIST
18481: LIST
18482: PUSH
18483: EMPTY
18484: LIST
18485: LIST
18486: LIST
18487: PPUSH
18488: CALL_OW 69
18492: PUSH
18493: LD_INT 0
18495: PLUS
18496: PUSH
18497: LD_EXP 20
18501: PUSH
18502: LD_INT 6
18504: MINUS
18505: LESSEQUAL
18506: AND
18507: PUSH
18508: LD_INT 95
18510: PUSH
18511: LD_INT 39
18513: PUSH
18514: EMPTY
18515: LIST
18516: LIST
18517: PUSH
18518: LD_INT 22
18520: PUSH
18521: LD_EXP 21
18525: PUSH
18526: EMPTY
18527: LIST
18528: LIST
18529: PUSH
18530: LD_INT 2
18532: PUSH
18533: LD_INT 21
18535: PUSH
18536: LD_INT 1
18538: PUSH
18539: EMPTY
18540: LIST
18541: LIST
18542: PUSH
18543: LD_INT 21
18545: PUSH
18546: LD_INT 2
18548: PUSH
18549: EMPTY
18550: LIST
18551: LIST
18552: PUSH
18553: EMPTY
18554: LIST
18555: LIST
18556: LIST
18557: PUSH
18558: EMPTY
18559: LIST
18560: LIST
18561: LIST
18562: PPUSH
18563: CALL_OW 69
18567: AND
18568: OR
18569: IFFALSE 18597
// begin if wasRichardDialog then
18571: LD_EXP 31
18575: IFFALSE 18581
// exit else
18577: GO 18636
18579: GO 18597
// begin if zachranenaArabka then
18581: LD_EXP 15
18585: IFFALSE 18593
// RichardDialog ( ) else
18587: CALL 25996 0 0
18591: GO 18597
// DieDialog ( ) ;
18593: CALL 26330 0 0
// end ; end ; if GetType ( unit ) = unit_vehicle and GetControl ( unit ) = control_remote then
18597: LD_VAR 0 1
18601: PPUSH
18602: CALL_OW 247
18606: PUSH
18607: LD_INT 2
18609: EQUAL
18610: PUSH
18611: LD_VAR 0 1
18615: PPUSH
18616: CALL_OW 263
18620: PUSH
18621: LD_INT 2
18623: EQUAL
18624: AND
18625: IFFALSE 18636
// ComUnlink ( unit ) ;
18627: LD_VAR 0 1
18631: PPUSH
18632: CALL_OW 136
// end ;
18636: PPOPN 1
18638: END
// on Contact ( side1 , side2 ) do begin if ( side1 = arab and side2 = you ) then
18639: LD_VAR 0 1
18643: PUSH
18644: LD_EXP 23
18648: EQUAL
18649: PUSH
18650: LD_VAR 0 2
18654: PUSH
18655: LD_EXP 21
18659: EQUAL
18660: AND
18661: IFFALSE 18711
// begin if AlianceSAraby then
18663: CALL 2247 0 0
18667: IFFALSE 18711
// begin nasralAraba = true ;
18669: LD_ADDR_EXP 37
18673: PUSH
18674: LD_INT 1
18676: ST_TO_ADDR
// SetAttitude ( you , arab , att_enemy , true ) ;
18677: LD_EXP 21
18681: PPUSH
18682: LD_EXP 23
18686: PPUSH
18687: LD_INT 2
18689: PPUSH
18690: LD_INT 1
18692: PPUSH
18693: CALL_OW 80
// ChangeSideFog ( arab , arab ) ;
18697: LD_EXP 23
18701: PPUSH
18702: LD_EXP 23
18706: PPUSH
18707: CALL_OW 343
// end ; end ; if side1 = you and side2 = 5 then
18711: LD_VAR 0 1
18715: PUSH
18716: LD_EXP 21
18720: EQUAL
18721: PUSH
18722: LD_VAR 0 2
18726: PUSH
18727: LD_INT 5
18729: EQUAL
18730: AND
18731: IFFALSE 18740
// YouLost ( platfail ) ;
18733: LD_STRING platfail
18735: PPUSH
18736: CALL_OW 104
// end ;
18740: PPOPN 2
18742: END
// on BehemothConstructed ( vehicle ) do begin if GetChassis ( vehicle ) = 25 then
18743: LD_VAR 0 1
18747: PPUSH
18748: CALL_OW 265
18752: PUSH
18753: LD_INT 25
18755: EQUAL
18756: IFFALSE 18762
// BehemotBuildTalk ;
18758: CALL 27886 0 0
// end ;
18762: PPOPN 1
18764: END
// on BuildingStarted ( building , unit ) do begin if GetSide ( building ) = you then
18765: LD_VAR 0 1
18769: PPUSH
18770: CALL_OW 255
18774: PUSH
18775: LD_EXP 21
18779: EQUAL
18780: IFFALSE 18790
// startAttackCountdown = true ;
18782: LD_ADDR_EXP 33
18786: PUSH
18787: LD_INT 1
18789: ST_TO_ADDR
// end ;
18790: PPOPN 2
18792: END
// on VehicleDestroyed ( vehicle , side , nation , x , y , direction , chassis , control , motor , weapon ) do begin if vehicle in arab_attack_list then
18793: LD_VAR 0 1
18797: PUSH
18798: LD_EXP 28
18802: IN
18803: IFFALSE 18821
// arab_attack_list = arab_attack_list diff vehicle ;
18805: LD_ADDR_EXP 28
18809: PUSH
18810: LD_EXP 28
18814: PUSH
18815: LD_VAR 0 1
18819: DIFF
18820: ST_TO_ADDR
// if vehicle in purple_attack_list then
18821: LD_VAR 0 1
18825: PUSH
18826: LD_EXP 29
18830: IN
18831: IFFALSE 18849
// purple_attack_list = purple_attack_list diff vehicle ;
18833: LD_ADDR_EXP 29
18837: PUSH
18838: LD_EXP 29
18842: PUSH
18843: LD_VAR 0 1
18847: DIFF
18848: ST_TO_ADDR
// if vehicle in amik_attack_list then
18849: LD_VAR 0 1
18853: PUSH
18854: LD_EXP 30
18858: IN
18859: IFFALSE 18877
// amik_attack_list = amik_attack_list diff vehicle ;
18861: LD_ADDR_EXP 30
18865: PUSH
18866: LD_EXP 30
18870: PUSH
18871: LD_VAR 0 1
18875: DIFF
18876: ST_TO_ADDR
// end ;
18877: PPOPN 10
18879: END
// on VehicleCaptured ( new_vehicle , old_vehicle , original_side , human ) do begin if GetSide ( human ) = you then
18880: LD_VAR 0 4
18884: PPUSH
18885: CALL_OW 255
18889: PUSH
18890: LD_EXP 21
18894: EQUAL
18895: IFFALSE 19065
// begin if old_vehicle in arab_attack_list then
18897: LD_VAR 0 2
18901: PUSH
18902: LD_EXP 28
18906: IN
18907: IFFALSE 18925
// arab_attack_list = arab_attack_list diff old_vehicle ;
18909: LD_ADDR_EXP 28
18913: PUSH
18914: LD_EXP 28
18918: PUSH
18919: LD_VAR 0 2
18923: DIFF
18924: ST_TO_ADDR
// if old_vehicle in purple_attack_list then
18925: LD_VAR 0 2
18929: PUSH
18930: LD_EXP 29
18934: IN
18935: IFFALSE 18953
// purple_attack_list = purple_attack_list diff old_vehicle ;
18937: LD_ADDR_EXP 29
18941: PUSH
18942: LD_EXP 29
18946: PUSH
18947: LD_VAR 0 2
18951: DIFF
18952: ST_TO_ADDR
// if old_vehicle in amik_attack_list then
18953: LD_VAR 0 2
18957: PUSH
18958: LD_EXP 30
18962: IN
18963: IFFALSE 18981
// amik_attack_list = amik_attack_list diff old_vehicle ;
18965: LD_ADDR_EXP 30
18969: PUSH
18970: LD_EXP 30
18974: PUSH
18975: LD_VAR 0 2
18979: DIFF
18980: ST_TO_ADDR
// if new_vehicle in arab_attack_list then
18981: LD_VAR 0 1
18985: PUSH
18986: LD_EXP 28
18990: IN
18991: IFFALSE 19009
// arab_attack_list = arab_attack_list diff new_vehicle ;
18993: LD_ADDR_EXP 28
18997: PUSH
18998: LD_EXP 28
19002: PUSH
19003: LD_VAR 0 1
19007: DIFF
19008: ST_TO_ADDR
// if new_vehicle in purple_attack_list then
19009: LD_VAR 0 1
19013: PUSH
19014: LD_EXP 29
19018: IN
19019: IFFALSE 19037
// purple_attack_list = purple_attack_list diff new_vehicle ;
19021: LD_ADDR_EXP 29
19025: PUSH
19026: LD_EXP 29
19030: PUSH
19031: LD_VAR 0 1
19035: DIFF
19036: ST_TO_ADDR
// if new_vehicle in amik_attack_list then
19037: LD_VAR 0 1
19041: PUSH
19042: LD_EXP 30
19046: IN
19047: IFFALSE 19065
// amik_attack_list = amik_attack_list diff new_vehicle ;
19049: LD_ADDR_EXP 30
19053: PUSH
19054: LD_EXP 30
19058: PUSH
19059: LD_VAR 0 1
19063: DIFF
19064: ST_TO_ADDR
// end ; VehicleCaptured2 ( new_vehicle , old_vehicle , original_side , human ) ;
19065: LD_VAR 0 1
19069: PPUSH
19070: LD_VAR 0 2
19074: PPUSH
19075: LD_VAR 0 3
19079: PPUSH
19080: LD_VAR 0 4
19084: PPUSH
19085: CALL 19180 0 4
// end ;
19089: PPOPN 4
19091: END
// var capturedEmptyVehs ; every 0 0$1 do
19092: GO 19094
19094: DISABLE
// capturedEmptyVehs = [ ] ;
19095: LD_ADDR_LOC 3
19099: PUSH
19100: EMPTY
19101: ST_TO_ADDR
19102: END
// on EnterVehicle ( vehicle , human ) do begin EnterVeh ( vehicle , human ) ;
19103: LD_VAR 0 1
19107: PPUSH
19108: LD_VAR 0 2
19112: PPUSH
19113: CALL 19137 0 2
// end ;
19117: PPOPN 2
19119: END
// on EnterVehicleFromBuilding ( vehicle , human , building ) do begin EnterVeh ( vehicle , human ) ;
19120: LD_VAR 0 1
19124: PPUSH
19125: LD_VAR 0 2
19129: PPUSH
19130: CALL 19137 0 2
// end ;
19134: PPOPN 3
19136: END
// function EnterVeh ( new_vehicle , human ) ; begin
19137: LD_INT 0
19139: PPUSH
// if new_vehicle in capturedEmptyVehs then
19140: LD_VAR 0 1
19144: PUSH
19145: LD_LOC 3
19149: IN
19150: IFFALSE 19175
// VehicleCaptured2 ( new_vehicle , new_vehicle , - 1 , human ) ;
19152: LD_VAR 0 1
19156: PPUSH
19157: LD_VAR 0 1
19161: PPUSH
19162: LD_INT 1
19164: NEG
19165: PPUSH
19166: LD_VAR 0 2
19170: PPUSH
19171: CALL 19180 0 4
// end ;
19175: LD_VAR 0 3
19179: RET
// function VehicleCaptured2 ( new_vehicle , old_vehicle , original_side , human ) ; var side , nation , weapon , chassis , control , engine , fuel , dir , x , y , lives , veh , rider , selected ; begin
19180: LD_INT 0
19182: PPUSH
19183: PPUSH
19184: PPUSH
19185: PPUSH
19186: PPUSH
19187: PPUSH
19188: PPUSH
19189: PPUSH
19190: PPUSH
19191: PPUSH
19192: PPUSH
19193: PPUSH
19194: PPUSH
19195: PPUSH
19196: PPUSH
// x = GetX ( new_vehicle ) ;
19197: LD_ADDR_VAR 0 14
19201: PUSH
19202: LD_VAR 0 1
19206: PPUSH
19207: CALL_OW 250
19211: ST_TO_ADDR
// y = GetY ( new_vehicle ) ;
19212: LD_ADDR_VAR 0 15
19216: PUSH
19217: LD_VAR 0 1
19221: PPUSH
19222: CALL_OW 251
19226: ST_TO_ADDR
// side = GetSide ( new_vehicle ) ;
19227: LD_ADDR_VAR 0 6
19231: PUSH
19232: LD_VAR 0 1
19236: PPUSH
19237: CALL_OW 255
19241: ST_TO_ADDR
// nation = GetNation ( new_vehicle ) ;
19242: LD_ADDR_VAR 0 7
19246: PUSH
19247: LD_VAR 0 1
19251: PPUSH
19252: CALL_OW 248
19256: ST_TO_ADDR
// weapon = GetWeapon ( new_vehicle ) ;
19257: LD_ADDR_VAR 0 8
19261: PUSH
19262: LD_VAR 0 1
19266: PPUSH
19267: CALL_OW 264
19271: ST_TO_ADDR
// chassis = GetChassis ( new_vehicle ) ;
19272: LD_ADDR_VAR 0 9
19276: PUSH
19277: LD_VAR 0 1
19281: PPUSH
19282: CALL_OW 265
19286: ST_TO_ADDR
// control = GetControl ( new_vehicle ) ;
19287: LD_ADDR_VAR 0 10
19291: PUSH
19292: LD_VAR 0 1
19296: PPUSH
19297: CALL_OW 263
19301: ST_TO_ADDR
// engine = GetEngine ( new_vehicle ) ;
19302: LD_ADDR_VAR 0 11
19306: PUSH
19307: LD_VAR 0 1
19311: PPUSH
19312: CALL_OW 262
19316: ST_TO_ADDR
// if engine <> engine_siberite then
19317: LD_VAR 0 11
19321: PUSH
19322: LD_INT 3
19324: NONEQUAL
19325: IFFALSE 19342
// fuel = GetFuel ( new_vehicle ) ;
19327: LD_ADDR_VAR 0 12
19331: PUSH
19332: LD_VAR 0 1
19336: PPUSH
19337: CALL_OW 261
19341: ST_TO_ADDR
// dir = GetDir ( new_vehicle ) ;
19342: LD_ADDR_VAR 0 13
19346: PUSH
19347: LD_VAR 0 1
19351: PPUSH
19352: CALL_OW 254
19356: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
19357: LD_ADDR_VAR 0 16
19361: PUSH
19362: LD_VAR 0 1
19366: PPUSH
19367: CALL_OW 256
19371: ST_TO_ADDR
// if control = control_manual and not UnitsInside ( new_vehicle ) then
19372: LD_VAR 0 10
19376: PUSH
19377: LD_INT 1
19379: EQUAL
19380: PUSH
19381: LD_VAR 0 1
19385: PPUSH
19386: CALL_OW 313
19390: NOT
19391: AND
19392: IFFALSE 19412
// begin capturedEmptyVehs = capturedEmptyVehs ^ new_vehicle ;
19394: LD_ADDR_LOC 3
19398: PUSH
19399: LD_LOC 3
19403: PUSH
19404: LD_VAR 0 1
19408: ADD
19409: ST_TO_ADDR
// exit ;
19410: GO 19721
// end ; if UnitsInside ( new_vehicle ) then
19412: LD_VAR 0 1
19416: PPUSH
19417: CALL_OW 313
19421: IFFALSE 19470
// begin rider = UnitsInside ( new_vehicle ) [ 1 ] ;
19423: LD_ADDR_VAR 0 18
19427: PUSH
19428: LD_VAR 0 1
19432: PPUSH
19433: CALL_OW 313
19437: PUSH
19438: LD_INT 1
19440: ARRAY
19441: ST_TO_ADDR
// if IsSelected ( rider ) then
19442: LD_VAR 0 18
19446: PPUSH
19447: CALL_OW 306
19451: IFFALSE 19461
// selected = 1 ;
19453: LD_ADDR_VAR 0 19
19457: PUSH
19458: LD_INT 1
19460: ST_TO_ADDR
// RemoveUnit ( rider ) ;
19461: LD_VAR 0 18
19465: PPUSH
19466: CALL_OW 64
// end ; if IsSelected ( new_vehicle ) then
19470: LD_VAR 0 1
19474: PPUSH
19475: CALL_OW 306
19479: IFFALSE 19498
// begin DeselectUnits ( new_vehicle ) ;
19481: LD_VAR 0 1
19485: PPUSH
19486: CALL_OW 491
// selected = 1 ;
19490: LD_ADDR_VAR 0 19
19494: PUSH
19495: LD_INT 1
19497: ST_TO_ADDR
// end ; if new_vehicle in capturedEmptyVehs then
19498: LD_VAR 0 1
19502: PUSH
19503: LD_LOC 3
19507: IN
19508: IFFALSE 19526
// capturedEmptyVehs = capturedEmptyVehs diff new_vehicle ;
19510: LD_ADDR_LOC 3
19514: PUSH
19515: LD_LOC 3
19519: PUSH
19520: LD_VAR 0 1
19524: DIFF
19525: ST_TO_ADDR
// uc_side = side ;
19526: LD_ADDR_OWVAR 20
19530: PUSH
19531: LD_VAR 0 6
19535: ST_TO_ADDR
// uc_nation = nation ;
19536: LD_ADDR_OWVAR 21
19540: PUSH
19541: LD_VAR 0 7
19545: ST_TO_ADDR
// vc_chassis = chassis ;
19546: LD_ADDR_OWVAR 37
19550: PUSH
19551: LD_VAR 0 9
19555: ST_TO_ADDR
// vc_control = control ;
19556: LD_ADDR_OWVAR 38
19560: PUSH
19561: LD_VAR 0 10
19565: ST_TO_ADDR
// vc_engine = engine ;
19566: LD_ADDR_OWVAR 39
19570: PUSH
19571: LD_VAR 0 11
19575: ST_TO_ADDR
// if engine <> engine_siberite then
19576: LD_VAR 0 11
19580: PUSH
19581: LD_INT 3
19583: NONEQUAL
19584: IFFALSE 19596
// vc_fuel_battery = fuel ;
19586: LD_ADDR_OWVAR 41
19590: PUSH
19591: LD_VAR 0 12
19595: ST_TO_ADDR
// vc_weapon = weapon ;
19596: LD_ADDR_OWVAR 40
19600: PUSH
19601: LD_VAR 0 8
19605: ST_TO_ADDR
// uc_direction = dir ;
19606: LD_ADDR_OWVAR 24
19610: PUSH
19611: LD_VAR 0 13
19615: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
19616: LD_ADDR_VAR 0 16
19620: PUSH
19621: LD_VAR 0 1
19625: PPUSH
19626: CALL_OW 256
19630: ST_TO_ADDR
// veh = CreateVehicle ;
19631: LD_ADDR_VAR 0 17
19635: PUSH
19636: CALL_OW 45
19640: ST_TO_ADDR
// SetLives ( veh , lives ) ;
19641: LD_VAR 0 17
19645: PPUSH
19646: LD_VAR 0 16
19650: PPUSH
19651: CALL_OW 234
// RemoveUnit ( new_vehicle ) ;
19655: LD_VAR 0 1
19659: PPUSH
19660: CALL_OW 64
// PlaceUnitXY ( veh , x , y , false ) ;
19664: LD_VAR 0 17
19668: PPUSH
19669: LD_VAR 0 14
19673: PPUSH
19674: LD_VAR 0 15
19678: PPUSH
19679: LD_INT 0
19681: PPUSH
19682: CALL_OW 48
// if rider then
19686: LD_VAR 0 18
19690: IFFALSE 19706
// PlaceHumanInUnit ( rider , veh ) ;
19692: LD_VAR 0 18
19696: PPUSH
19697: LD_VAR 0 17
19701: PPUSH
19702: CALL_OW 52
// if selected then
19706: LD_VAR 0 19
19710: IFFALSE 19721
// SelectUnits ( veh ) ;
19712: LD_VAR 0 17
19716: PPUSH
19717: CALL_OW 490
// end ; end_of_file
19721: LD_VAR 0 5
19725: RET
// var dosahly ; every 6 6$00 do var i , un , auto ;
19726: GO 19728
19728: DISABLE
19729: LD_INT 0
19731: PPUSH
19732: PPUSH
19733: PPUSH
// begin if SideDead ( arab ) then
19734: LD_EXP 23
19738: PPUSH
19739: CALL 2293 0 1
19743: IFFALSE 19747
// exit ;
19745: GO 19992
// dosahly = false ;
19747: LD_ADDR_LOC 4
19751: PUSH
19752: LD_INT 0
19754: ST_TO_ADDR
// for i = 1 to 4 do
19755: LD_ADDR_VAR 0 1
19759: PUSH
19760: DOUBLE
19761: LD_INT 1
19763: DEC
19764: ST_TO_ADDR
19765: LD_INT 4
19767: PUSH
19768: FOR_TO
19769: IFFALSE 19827
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill - 2 , dif_enemy_max_skill - 3 , 1 , cyan ) ;
19771: LD_ADDR_VAR 0 2
19775: PUSH
19776: LD_INT 1
19778: PPUSH
19779: LD_EXP 64
19783: PUSH
19784: LD_INT 2
19786: MINUS
19787: PPUSH
19788: LD_EXP 65
19792: PUSH
19793: LD_INT 3
19795: MINUS
19796: PPUSH
19797: LD_INT 1
19799: PPUSH
19800: LD_EXP 25
19804: PPUSH
19805: CALL 2566 0 5
19809: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
19810: LD_VAR 0 2
19814: PPUSH
19815: LD_INT 33
19817: PPUSH
19818: LD_INT 0
19820: PPUSH
19821: CALL_OW 49
// end ;
19825: GO 19768
19827: POP
19828: POP
// uc_side = cyan ;
19829: LD_ADDR_OWVAR 20
19833: PUSH
19834: LD_EXP 25
19838: ST_TO_ADDR
// uc_nation = nation_american ;
19839: LD_ADDR_OWVAR 21
19843: PUSH
19844: LD_INT 1
19846: ST_TO_ADDR
// vc_chassis = Rand ( us_medium_tracked , us_heavy_tracked ) ;
19847: LD_ADDR_OWVAR 37
19851: PUSH
19852: LD_INT 3
19854: PPUSH
19855: LD_INT 4
19857: PPUSH
19858: CALL_OW 12
19862: ST_TO_ADDR
// vc_control = control_manual ;
19863: LD_ADDR_OWVAR 38
19867: PUSH
19868: LD_INT 1
19870: ST_TO_ADDR
// vc_engine = engine_siberite ;
19871: LD_ADDR_OWVAR 39
19875: PUSH
19876: LD_INT 3
19878: ST_TO_ADDR
// if Prob ( 50 ) then
19879: LD_INT 50
19881: PPUSH
19882: CALL_OW 13
19886: IFFALSE 19898
// vc_weapon = us_laser else
19888: LD_ADDR_OWVAR 40
19892: PUSH
19893: LD_INT 9
19895: ST_TO_ADDR
19896: GO 19906
// vc_weapon = us_heavy_gun ;
19898: LD_ADDR_OWVAR 40
19902: PUSH
19903: LD_INT 6
19905: ST_TO_ADDR
// if vc_weapon = us_heavy_gun then
19906: LD_OWVAR 40
19910: PUSH
19911: LD_INT 6
19913: EQUAL
19914: IFFALSE 19924
// vc_chassis = us_heavy_tracked ;
19916: LD_ADDR_OWVAR 37
19920: PUSH
19921: LD_INT 4
19923: ST_TO_ADDR
// auto = CreateVehicle ;
19924: LD_ADDR_VAR 0 3
19928: PUSH
19929: CALL_OW 45
19933: ST_TO_ADDR
// PlaceUnitArea ( auto , CyanSpawn , false ) ;
19934: LD_VAR 0 3
19938: PPUSH
19939: LD_INT 33
19941: PPUSH
19942: LD_INT 0
19944: PPUSH
19945: CALL_OW 49
// PlaceHumanInUnit ( VytvorCloveka ( 3 , 5 , 7 , 1 , cyan ) , auto ) ;
19949: LD_INT 3
19951: PPUSH
19952: LD_INT 5
19954: PPUSH
19955: LD_INT 7
19957: PPUSH
19958: LD_INT 1
19960: PPUSH
19961: LD_EXP 25
19965: PPUSH
19966: CALL 2566 0 5
19970: PPUSH
19971: LD_VAR 0 3
19975: PPUSH
19976: CALL_OW 52
// Wait ( 0 0$0.5 ) ;
19980: LD_INT 18
19982: PPUSH
19983: CALL_OW 67
// Utoc ;
19987: CALL 20021 0 0
// enable ;
19991: ENABLE
// end ;
19992: PPOPN 3
19994: END
// every 0 0$1 do
19995: GO 19997
19997: DISABLE
// begin if FilterAllUnits ( [ f_side , cyan ] ) then
19998: LD_INT 22
20000: PUSH
20001: LD_EXP 25
20005: PUSH
20006: EMPTY
20007: LIST
20008: LIST
20009: PPUSH
20010: CALL_OW 69
20014: IFFALSE 20020
// Utoc ;
20016: CALL 20021 0 0
// end ;
20020: END
// function Utoc ; var jednotky , i , targ , targety , n ; begin
20021: LD_INT 0
20023: PPUSH
20024: PPUSH
20025: PPUSH
20026: PPUSH
20027: PPUSH
20028: PPUSH
// jednotky = FilterAllUnits ( [ f_side , cyan ] ) ;
20029: LD_ADDR_VAR 0 2
20033: PUSH
20034: LD_INT 22
20036: PUSH
20037: LD_EXP 25
20041: PUSH
20042: EMPTY
20043: LIST
20044: LIST
20045: PPUSH
20046: CALL_OW 69
20050: ST_TO_ADDR
// if jednotky then
20051: LD_VAR 0 2
20055: IFFALSE 20247
// begin if FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_human ] ] ) then
20057: LD_INT 22
20059: PUSH
20060: LD_EXP 23
20064: PUSH
20065: EMPTY
20066: LIST
20067: LIST
20068: PUSH
20069: LD_INT 21
20071: PUSH
20072: LD_INT 1
20074: PUSH
20075: EMPTY
20076: LIST
20077: LIST
20078: PUSH
20079: EMPTY
20080: LIST
20081: LIST
20082: PPUSH
20083: CALL_OW 69
20087: IFFALSE 20101
// targ = arab else
20089: LD_ADDR_VAR 0 4
20093: PUSH
20094: LD_EXP 23
20098: ST_TO_ADDR
20099: GO 20111
// targ = you ;
20101: LD_ADDR_VAR 0 4
20105: PUSH
20106: LD_EXP 21
20110: ST_TO_ADDR
// targety = FilterAllUnits ( [ [ f_side , targ ] , [ f_placed ] ] ) ;
20111: LD_ADDR_VAR 0 5
20115: PUSH
20116: LD_INT 22
20118: PUSH
20119: LD_VAR 0 4
20123: PUSH
20124: EMPTY
20125: LIST
20126: LIST
20127: PUSH
20128: LD_INT 52
20130: PUSH
20131: EMPTY
20132: LIST
20133: PUSH
20134: EMPTY
20135: LIST
20136: LIST
20137: PPUSH
20138: CALL_OW 69
20142: ST_TO_ADDR
// for i in jednotky do
20143: LD_ADDR_VAR 0 3
20147: PUSH
20148: LD_VAR 0 2
20152: PUSH
20153: FOR_IN
20154: IFFALSE 20245
// begin if GetDistUnitXY ( i , 170 , 96 ) < 6 then
20156: LD_VAR 0 3
20160: PPUSH
20161: LD_INT 170
20163: PPUSH
20164: LD_INT 96
20166: PPUSH
20167: CALL_OW 297
20171: PUSH
20172: LD_INT 6
20174: LESS
20175: IFFALSE 20185
// dosahly = true ;
20177: LD_ADDR_LOC 4
20181: PUSH
20182: LD_INT 1
20184: ST_TO_ADDR
// if not dosahly then
20185: LD_LOC 4
20189: NOT
20190: IFFALSE 20209
// ComAgressiveMove ( i , 170 , 96 ) else
20192: LD_VAR 0 3
20196: PPUSH
20197: LD_INT 170
20199: PPUSH
20200: LD_INT 96
20202: PPUSH
20203: CALL_OW 114
20207: GO 20243
// begin n = NearestUnitToUnit2 ( targety , i ) ;
20209: LD_ADDR_VAR 0 6
20213: PUSH
20214: LD_VAR 0 5
20218: PPUSH
20219: LD_VAR 0 3
20223: PPUSH
20224: CALL 5562 0 2
20228: ST_TO_ADDR
// ComAttackUnit ( i , n ) ;
20229: LD_VAR 0 3
20233: PPUSH
20234: LD_VAR 0 6
20238: PPUSH
20239: CALL_OW 115
// end ; end ;
20243: GO 20153
20245: POP
20246: POP
// end ; end ; end_of_file
20247: LD_VAR 0 1
20251: RET
// every 0 0$5 do
20252: GO 20254
20254: DISABLE
// begin arStartUnitCount = FilterAllUnits ( [ [ f_type , unit_human ] , [ f_placed ] , [ f_side , arab ] , [ f_nation , nation_arabian ] ] ) + 0 ;
20255: LD_ADDR_EXP 20
20259: PUSH
20260: LD_INT 21
20262: PUSH
20263: LD_INT 1
20265: PUSH
20266: EMPTY
20267: LIST
20268: LIST
20269: PUSH
20270: LD_INT 52
20272: PUSH
20273: EMPTY
20274: LIST
20275: PUSH
20276: LD_INT 22
20278: PUSH
20279: LD_EXP 23
20283: PUSH
20284: EMPTY
20285: LIST
20286: LIST
20287: PUSH
20288: LD_INT 23
20290: PUSH
20291: LD_INT 2
20293: PUSH
20294: EMPTY
20295: LIST
20296: LIST
20297: PUSH
20298: EMPTY
20299: LIST
20300: LIST
20301: LIST
20302: LIST
20303: PPUSH
20304: CALL_OW 69
20308: PUSH
20309: LD_INT 0
20311: PLUS
20312: ST_TO_ADDR
// end ;
20313: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_class , class_apeman_soldier ] ] ) + 0 = 0 do
20314: LD_INT 95
20316: PUSH
20317: LD_INT 12
20319: PUSH
20320: EMPTY
20321: LIST
20322: LIST
20323: PUSH
20324: LD_INT 25
20326: PUSH
20327: LD_INT 15
20329: PUSH
20330: EMPTY
20331: LIST
20332: LIST
20333: PUSH
20334: EMPTY
20335: LIST
20336: LIST
20337: PPUSH
20338: CALL_OW 69
20342: PUSH
20343: LD_INT 0
20345: PLUS
20346: PUSH
20347: LD_INT 0
20349: EQUAL
20350: IFFALSE 20363
20352: GO 20354
20354: DISABLE
// begin ar_bocni_baza_captured = true ;
20355: LD_ADDR_EXP 38
20359: PUSH
20360: LD_INT 1
20362: ST_TO_ADDR
// end ;
20363: END
// every 0 0$5 do var i ;
20364: GO 20366
20366: DISABLE
20367: LD_INT 0
20369: PPUSH
// begin for i in FilterAllUnits ( [ [ f_btype , b_warehouse ] , [ f_ok ] , [ f_not , [ f_side , you ] ] ] ) do
20370: LD_ADDR_VAR 0 1
20374: PUSH
20375: LD_INT 30
20377: PUSH
20378: LD_INT 1
20380: PUSH
20381: EMPTY
20382: LIST
20383: LIST
20384: PUSH
20385: LD_INT 50
20387: PUSH
20388: EMPTY
20389: LIST
20390: PUSH
20391: LD_INT 3
20393: PUSH
20394: LD_INT 22
20396: PUSH
20397: LD_EXP 21
20401: PUSH
20402: EMPTY
20403: LIST
20404: LIST
20405: PUSH
20406: EMPTY
20407: LIST
20408: LIST
20409: PUSH
20410: EMPTY
20411: LIST
20412: LIST
20413: LIST
20414: PPUSH
20415: CALL_OW 69
20419: PUSH
20420: FOR_IN
20421: IFFALSE 20434
// SurovinyDoSkladu ( i ) ;
20423: LD_VAR 0 1
20427: PPUSH
20428: CALL 5914 0 1
20432: GO 20420
20434: POP
20435: POP
// enable ;
20436: ENABLE
// end ;
20437: PPOPN 1
20439: END
// every 0 0$0.7 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_inarea , RuBaza2 ] , [ f_type , unit_building ] ] ) + 0 >= 2 do
20440: LD_INT 22
20442: PUSH
20443: LD_EXP 21
20447: PUSH
20448: EMPTY
20449: LIST
20450: LIST
20451: PUSH
20452: LD_INT 95
20454: PUSH
20455: LD_INT 38
20457: PUSH
20458: EMPTY
20459: LIST
20460: LIST
20461: PUSH
20462: LD_INT 21
20464: PUSH
20465: LD_INT 3
20467: PUSH
20468: EMPTY
20469: LIST
20470: LIST
20471: PUSH
20472: EMPTY
20473: LIST
20474: LIST
20475: LIST
20476: PPUSH
20477: CALL_OW 69
20481: PUSH
20482: LD_INT 0
20484: PLUS
20485: PUSH
20486: LD_INT 2
20488: GREATEREQUAL
20489: IFFALSE 20502
20491: GO 20493
20493: DISABLE
// begin RusakBazaDole = true ;
20494: LD_ADDR_EXP 42
20498: PUSH
20499: LD_INT 1
20501: ST_TO_ADDR
// end ;
20502: END
// every 0 0$0.7 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_inarea , RuBaza1 ] , [ f_type , unit_building ] ] ) + 0 >= 2 do
20503: LD_INT 22
20505: PUSH
20506: LD_EXP 21
20510: PUSH
20511: EMPTY
20512: LIST
20513: LIST
20514: PUSH
20515: LD_INT 95
20517: PUSH
20518: LD_INT 37
20520: PUSH
20521: EMPTY
20522: LIST
20523: LIST
20524: PUSH
20525: LD_INT 21
20527: PUSH
20528: LD_INT 3
20530: PUSH
20531: EMPTY
20532: LIST
20533: LIST
20534: PUSH
20535: EMPTY
20536: LIST
20537: LIST
20538: LIST
20539: PPUSH
20540: CALL_OW 69
20544: PUSH
20545: LD_INT 0
20547: PLUS
20548: PUSH
20549: LD_INT 2
20551: GREATEREQUAL
20552: IFFALSE 20565
20554: GO 20556
20556: DISABLE
// begin RusakBazaHore = true ;
20557: LD_ADDR_EXP 43
20561: PUSH
20562: LD_INT 1
20564: ST_TO_ADDR
// end ;
20565: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_type , unit_building ] , [ f_side , you ] ] ) do
20566: LD_INT 95
20568: PUSH
20569: LD_INT 12
20571: PUSH
20572: EMPTY
20573: LIST
20574: LIST
20575: PUSH
20576: LD_INT 21
20578: PUSH
20579: LD_INT 3
20581: PUSH
20582: EMPTY
20583: LIST
20584: LIST
20585: PUSH
20586: LD_INT 22
20588: PUSH
20589: LD_EXP 21
20593: PUSH
20594: EMPTY
20595: LIST
20596: LIST
20597: PUSH
20598: EMPTY
20599: LIST
20600: LIST
20601: LIST
20602: PPUSH
20603: CALL_OW 69
20607: IFFALSE 20620
20609: GO 20611
20611: DISABLE
// begin nasralAraba = true ;
20612: LD_ADDR_EXP 37
20616: PUSH
20617: LD_INT 1
20619: ST_TO_ADDR
// end ;
20620: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_see , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_type , unit_building ] ] , [ f_or , [ f_side , amik ] , [ f_side , arab ] , [ f_side , purple ] ] ] ) do
20621: LD_INT 101
20623: PUSH
20624: LD_EXP 21
20628: PUSH
20629: EMPTY
20630: LIST
20631: LIST
20632: PUSH
20633: LD_INT 2
20635: PUSH
20636: LD_INT 21
20638: PUSH
20639: LD_INT 1
20641: PUSH
20642: EMPTY
20643: LIST
20644: LIST
20645: PUSH
20646: LD_INT 21
20648: PUSH
20649: LD_INT 2
20651: PUSH
20652: EMPTY
20653: LIST
20654: LIST
20655: PUSH
20656: LD_INT 21
20658: PUSH
20659: LD_INT 3
20661: PUSH
20662: EMPTY
20663: LIST
20664: LIST
20665: PUSH
20666: EMPTY
20667: LIST
20668: LIST
20669: LIST
20670: LIST
20671: PUSH
20672: LD_INT 2
20674: PUSH
20675: LD_INT 22
20677: PUSH
20678: LD_EXP 24
20682: PUSH
20683: EMPTY
20684: LIST
20685: LIST
20686: PUSH
20687: LD_INT 22
20689: PUSH
20690: LD_EXP 23
20694: PUSH
20695: EMPTY
20696: LIST
20697: LIST
20698: PUSH
20699: LD_INT 22
20701: PUSH
20702: LD_EXP 22
20706: PUSH
20707: EMPTY
20708: LIST
20709: LIST
20710: PUSH
20711: EMPTY
20712: LIST
20713: LIST
20714: LIST
20715: LIST
20716: PUSH
20717: EMPTY
20718: LIST
20719: LIST
20720: LIST
20721: PPUSH
20722: CALL_OW 69
20726: IFFALSE 20739
20728: GO 20730
20730: DISABLE
// begin videlNepritele = true ;
20731: LD_ADDR_EXP 34
20735: PUSH
20736: LD_INT 1
20738: ST_TO_ADDR
// end ;
20739: END
// every 0 0$2 do var autaAr , autaPurple , autaAmik , i , r ;
20740: GO 20742
20742: DISABLE
20743: LD_INT 0
20745: PPUSH
20746: PPUSH
20747: PPUSH
20748: PPUSH
20749: PPUSH
// begin autaAr = FilterAllUnits ( [ [ f_side , arab ] , [ f_inarea , ArBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
20750: LD_ADDR_VAR 0 1
20754: PUSH
20755: LD_INT 22
20757: PUSH
20758: LD_EXP 23
20762: PUSH
20763: EMPTY
20764: LIST
20765: LIST
20766: PUSH
20767: LD_INT 95
20769: PUSH
20770: LD_INT 15
20772: PUSH
20773: EMPTY
20774: LIST
20775: LIST
20776: PUSH
20777: LD_INT 21
20779: PUSH
20780: LD_INT 2
20782: PUSH
20783: EMPTY
20784: LIST
20785: LIST
20786: PUSH
20787: LD_INT 24
20789: PUSH
20790: LD_EXP 49
20794: PUSH
20795: EMPTY
20796: LIST
20797: LIST
20798: PUSH
20799: LD_INT 3
20801: PUSH
20802: LD_INT 2
20804: PUSH
20805: LD_INT 34
20807: PUSH
20808: LD_INT 32
20810: PUSH
20811: EMPTY
20812: LIST
20813: LIST
20814: PUSH
20815: LD_INT 34
20817: PUSH
20818: LD_INT 12
20820: PUSH
20821: EMPTY
20822: LIST
20823: LIST
20824: PUSH
20825: LD_INT 34
20827: PUSH
20828: LD_INT 30
20830: PUSH
20831: EMPTY
20832: LIST
20833: LIST
20834: PUSH
20835: LD_INT 34
20837: PUSH
20838: LD_INT 11
20840: PUSH
20841: EMPTY
20842: LIST
20843: LIST
20844: PUSH
20845: LD_INT 34
20847: PUSH
20848: LD_INT 31
20850: PUSH
20851: EMPTY
20852: LIST
20853: LIST
20854: PUSH
20855: LD_INT 34
20857: PUSH
20858: LD_INT 13
20860: PUSH
20861: EMPTY
20862: LIST
20863: LIST
20864: PUSH
20865: EMPTY
20866: LIST
20867: LIST
20868: LIST
20869: LIST
20870: LIST
20871: LIST
20872: LIST
20873: PUSH
20874: EMPTY
20875: LIST
20876: LIST
20877: PUSH
20878: EMPTY
20879: LIST
20880: LIST
20881: LIST
20882: LIST
20883: LIST
20884: PPUSH
20885: CALL_OW 69
20889: ST_TO_ADDR
// autaPurple = FilterAllUnits ( [ [ f_side , purple ] , [ f_inarea , PurpleBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
20890: LD_ADDR_VAR 0 2
20894: PUSH
20895: LD_INT 22
20897: PUSH
20898: LD_EXP 22
20902: PUSH
20903: EMPTY
20904: LIST
20905: LIST
20906: PUSH
20907: LD_INT 95
20909: PUSH
20910: LD_INT 16
20912: PUSH
20913: EMPTY
20914: LIST
20915: LIST
20916: PUSH
20917: LD_INT 21
20919: PUSH
20920: LD_INT 2
20922: PUSH
20923: EMPTY
20924: LIST
20925: LIST
20926: PUSH
20927: LD_INT 24
20929: PUSH
20930: LD_EXP 49
20934: PUSH
20935: EMPTY
20936: LIST
20937: LIST
20938: PUSH
20939: LD_INT 3
20941: PUSH
20942: LD_INT 2
20944: PUSH
20945: LD_INT 34
20947: PUSH
20948: LD_INT 32
20950: PUSH
20951: EMPTY
20952: LIST
20953: LIST
20954: PUSH
20955: LD_INT 34
20957: PUSH
20958: LD_INT 12
20960: PUSH
20961: EMPTY
20962: LIST
20963: LIST
20964: PUSH
20965: LD_INT 34
20967: PUSH
20968: LD_INT 30
20970: PUSH
20971: EMPTY
20972: LIST
20973: LIST
20974: PUSH
20975: LD_INT 34
20977: PUSH
20978: LD_INT 11
20980: PUSH
20981: EMPTY
20982: LIST
20983: LIST
20984: PUSH
20985: LD_INT 34
20987: PUSH
20988: LD_INT 31
20990: PUSH
20991: EMPTY
20992: LIST
20993: LIST
20994: PUSH
20995: LD_INT 34
20997: PUSH
20998: LD_INT 13
21000: PUSH
21001: EMPTY
21002: LIST
21003: LIST
21004: PUSH
21005: EMPTY
21006: LIST
21007: LIST
21008: LIST
21009: LIST
21010: LIST
21011: LIST
21012: LIST
21013: PUSH
21014: EMPTY
21015: LIST
21016: LIST
21017: PUSH
21018: EMPTY
21019: LIST
21020: LIST
21021: LIST
21022: LIST
21023: LIST
21024: PPUSH
21025: CALL_OW 69
21029: ST_TO_ADDR
// autaAmik = FilterAllUnits ( [ [ f_side , amik ] , [ f_inarea , AmikBaza ] , [ f_type , unit_vehicle ] , [ f_lives , hranice_oprava_utek ] , [ f_not , [ f_or , [ f_weapon , ar_cargo_bay ] , [ f_weapon , us_cargo_bay ] , [ f_weapon , ar_radar ] , [ f_weapon , us_radar ] , [ f_weapon , ar_control_tower ] , [ f_weapon , us_crane ] ] ] ] ) ;
21030: LD_ADDR_VAR 0 3
21034: PUSH
21035: LD_INT 22
21037: PUSH
21038: LD_EXP 24
21042: PUSH
21043: EMPTY
21044: LIST
21045: LIST
21046: PUSH
21047: LD_INT 95
21049: PUSH
21050: LD_INT 17
21052: PUSH
21053: EMPTY
21054: LIST
21055: LIST
21056: PUSH
21057: LD_INT 21
21059: PUSH
21060: LD_INT 2
21062: PUSH
21063: EMPTY
21064: LIST
21065: LIST
21066: PUSH
21067: LD_INT 24
21069: PUSH
21070: LD_EXP 49
21074: PUSH
21075: EMPTY
21076: LIST
21077: LIST
21078: PUSH
21079: LD_INT 3
21081: PUSH
21082: LD_INT 2
21084: PUSH
21085: LD_INT 34
21087: PUSH
21088: LD_INT 32
21090: PUSH
21091: EMPTY
21092: LIST
21093: LIST
21094: PUSH
21095: LD_INT 34
21097: PUSH
21098: LD_INT 12
21100: PUSH
21101: EMPTY
21102: LIST
21103: LIST
21104: PUSH
21105: LD_INT 34
21107: PUSH
21108: LD_INT 30
21110: PUSH
21111: EMPTY
21112: LIST
21113: LIST
21114: PUSH
21115: LD_INT 34
21117: PUSH
21118: LD_INT 11
21120: PUSH
21121: EMPTY
21122: LIST
21123: LIST
21124: PUSH
21125: LD_INT 34
21127: PUSH
21128: LD_INT 31
21130: PUSH
21131: EMPTY
21132: LIST
21133: LIST
21134: PUSH
21135: LD_INT 34
21137: PUSH
21138: LD_INT 13
21140: PUSH
21141: EMPTY
21142: LIST
21143: LIST
21144: PUSH
21145: EMPTY
21146: LIST
21147: LIST
21148: LIST
21149: LIST
21150: LIST
21151: LIST
21152: LIST
21153: PUSH
21154: EMPTY
21155: LIST
21156: LIST
21157: PUSH
21158: EMPTY
21159: LIST
21160: LIST
21161: LIST
21162: LIST
21163: LIST
21164: PPUSH
21165: CALL_OW 69
21169: ST_TO_ADDR
// if autaAr + 0 >= dif_ar_attack_size then
21170: LD_VAR 0 1
21174: PUSH
21175: LD_INT 0
21177: PLUS
21178: PUSH
21179: LD_EXP 67
21183: GREATEREQUAL
21184: IFFALSE 21442
// begin for i in autaAr do
21186: LD_ADDR_VAR 0 4
21190: PUSH
21191: LD_VAR 0 1
21195: PUSH
21196: FOR_IN
21197: IFFALSE 21230
// if not i in arab_attack_list then
21199: LD_VAR 0 4
21203: PUSH
21204: LD_EXP 28
21208: IN
21209: NOT
21210: IFFALSE 21228
// arab_attack_list = arab_attack_list ^ i ;
21212: LD_ADDR_EXP 28
21216: PUSH
21217: LD_EXP 28
21221: PUSH
21222: LD_VAR 0 4
21226: ADD
21227: ST_TO_ADDR
21228: GO 21196
21230: POP
21231: POP
// begin if nasralAraba and not AlianceSAraby then
21232: LD_EXP 37
21236: PUSH
21237: CALL 2247 0 0
21241: NOT
21242: AND
21243: IFFALSE 21284
// begin ComAgressiveMove ( arab_attack_list , 88 , 130 ) ;
21245: LD_EXP 28
21249: PPUSH
21250: LD_INT 88
21252: PPUSH
21253: LD_INT 130
21255: PPUSH
21256: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21260: LD_INT 42
21262: PPUSH
21263: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 88 , 130 ) ;
21267: LD_EXP 28
21271: PPUSH
21272: LD_INT 88
21274: PPUSH
21275: LD_INT 130
21277: PPUSH
21278: CALL_OW 114
// end else
21282: GO 21442
// begin r = Rand ( 1 , 2 ) ;
21284: LD_ADDR_VAR 0 5
21288: PUSH
21289: LD_INT 1
21291: PPUSH
21292: LD_INT 2
21294: PPUSH
21295: CALL_OW 12
21299: ST_TO_ADDR
// if r = 1 and FilterAllUnits ( [ [ f_side , amik ] , [ f_ok ] ] ) then
21300: LD_VAR 0 5
21304: PUSH
21305: LD_INT 1
21307: EQUAL
21308: PUSH
21309: LD_INT 22
21311: PUSH
21312: LD_EXP 24
21316: PUSH
21317: EMPTY
21318: LIST
21319: LIST
21320: PUSH
21321: LD_INT 50
21323: PUSH
21324: EMPTY
21325: LIST
21326: PUSH
21327: EMPTY
21328: LIST
21329: LIST
21330: PPUSH
21331: CALL_OW 69
21335: AND
21336: IFFALSE 21377
// begin ComAgressiveMove ( arab_attack_list , 219 , 77 ) ;
21338: LD_EXP 28
21342: PPUSH
21343: LD_INT 219
21345: PPUSH
21346: LD_INT 77
21348: PPUSH
21349: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21353: LD_INT 42
21355: PPUSH
21356: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 219 , 77 ) ;
21360: LD_EXP 28
21364: PPUSH
21365: LD_INT 219
21367: PPUSH
21368: LD_INT 77
21370: PPUSH
21371: CALL_OW 114
// end else
21375: GO 21442
// if FilterAllUnits ( [ [ f_side , purple ] , [ f_ok ] ] ) then
21377: LD_INT 22
21379: PUSH
21380: LD_EXP 22
21384: PUSH
21385: EMPTY
21386: LIST
21387: LIST
21388: PUSH
21389: LD_INT 50
21391: PUSH
21392: EMPTY
21393: LIST
21394: PUSH
21395: EMPTY
21396: LIST
21397: LIST
21398: PPUSH
21399: CALL_OW 69
21403: IFFALSE 21442
// begin ComAgressiveMove ( arab_attack_list , 121 , 12 ) ;
21405: LD_EXP 28
21409: PPUSH
21410: LD_INT 121
21412: PPUSH
21413: LD_INT 12
21415: PPUSH
21416: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21420: LD_INT 42
21422: PPUSH
21423: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 121 , 12 ) ;
21427: LD_EXP 28
21431: PPUSH
21432: LD_INT 121
21434: PPUSH
21435: LD_INT 12
21437: PPUSH
21438: CALL_OW 114
// end ; end ; end ; end ; if autaPurple + 0 >= dif_purple_attack_size then
21442: LD_VAR 0 2
21446: PUSH
21447: LD_INT 0
21449: PLUS
21450: PUSH
21451: LD_EXP 68
21455: GREATEREQUAL
21456: IFFALSE 21691
// begin for i in autaPurple do
21458: LD_ADDR_VAR 0 4
21462: PUSH
21463: LD_VAR 0 2
21467: PUSH
21468: FOR_IN
21469: IFFALSE 21502
// if not i in purple_attack_list then
21471: LD_VAR 0 4
21475: PUSH
21476: LD_EXP 29
21480: IN
21481: NOT
21482: IFFALSE 21500
// purple_attack_list = purple_attack_list ^ i ;
21484: LD_ADDR_EXP 29
21488: PUSH
21489: LD_EXP 29
21493: PUSH
21494: LD_VAR 0 4
21498: ADD
21499: ST_TO_ADDR
21500: GO 21468
21502: POP
21503: POP
// begin if RusakBazaHore then
21504: LD_EXP 43
21508: IFFALSE 21549
// begin ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21510: LD_EXP 29
21514: PPUSH
21515: LD_INT 72
21517: PPUSH
21518: LD_INT 35
21520: PPUSH
21521: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21525: LD_INT 42
21527: PPUSH
21528: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21532: LD_EXP 29
21536: PPUSH
21537: LD_INT 72
21539: PPUSH
21540: LD_INT 35
21542: PPUSH
21543: CALL_OW 114
// end else
21547: GO 21691
// if RusakBazaDole then
21549: LD_EXP 42
21553: IFFALSE 21594
// begin ComAgressiveMove ( purple_attack_list , 171 , 96 ) ;
21555: LD_EXP 29
21559: PPUSH
21560: LD_INT 171
21562: PPUSH
21563: LD_INT 96
21565: PPUSH
21566: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21570: LD_INT 42
21572: PPUSH
21573: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 171 , 96 ) ;
21577: LD_EXP 29
21581: PPUSH
21582: LD_INT 171
21584: PPUSH
21585: LD_INT 96
21587: PPUSH
21588: CALL_OW 114
// end else
21592: GO 21691
// begin ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21594: LD_EXP 29
21598: PPUSH
21599: LD_INT 72
21601: PPUSH
21602: LD_INT 35
21604: PPUSH
21605: CALL_OW 114
// AddComAgressiveMove ( purple_attack_list , 42 , 53 ) ;
21609: LD_EXP 29
21613: PPUSH
21614: LD_INT 42
21616: PPUSH
21617: LD_INT 53
21619: PPUSH
21620: CALL_OW 174
// AddComAgressiveMove ( purple_attack_list , 90 , 133 ) ;
21624: LD_EXP 29
21628: PPUSH
21629: LD_INT 90
21631: PPUSH
21632: LD_INT 133
21634: PPUSH
21635: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
21639: LD_INT 42
21641: PPUSH
21642: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21646: LD_EXP 29
21650: PPUSH
21651: LD_INT 72
21653: PPUSH
21654: LD_INT 35
21656: PPUSH
21657: CALL_OW 114
// AddComAgressiveMove ( purple_attack_list , 42 , 53 ) ;
21661: LD_EXP 29
21665: PPUSH
21666: LD_INT 42
21668: PPUSH
21669: LD_INT 53
21671: PPUSH
21672: CALL_OW 174
// AddComAgressiveMove ( purple_attack_list , 90 , 133 ) ;
21676: LD_EXP 29
21680: PPUSH
21681: LD_INT 90
21683: PPUSH
21684: LD_INT 133
21686: PPUSH
21687: CALL_OW 174
// end ; end end ; if autaAmik + 0 >= dif_amik_attack_size then
21691: LD_VAR 0 3
21695: PUSH
21696: LD_INT 0
21698: PLUS
21699: PUSH
21700: LD_EXP 69
21704: GREATEREQUAL
21705: IFFALSE 21960
// begin for i in autaAmik do
21707: LD_ADDR_VAR 0 4
21711: PUSH
21712: LD_VAR 0 3
21716: PUSH
21717: FOR_IN
21718: IFFALSE 21751
// if not i in amik_attack_list then
21720: LD_VAR 0 4
21724: PUSH
21725: LD_EXP 30
21729: IN
21730: NOT
21731: IFFALSE 21749
// amik_attack_list = amik_attack_list ^ i ;
21733: LD_ADDR_EXP 30
21737: PUSH
21738: LD_EXP 30
21742: PUSH
21743: LD_VAR 0 4
21747: ADD
21748: ST_TO_ADDR
21749: GO 21717
21751: POP
21752: POP
// if Rand ( 1 , 3 ) < 3 or tick < 16 16$00 then
21753: LD_INT 1
21755: PPUSH
21756: LD_INT 3
21758: PPUSH
21759: CALL_OW 12
21763: PUSH
21764: LD_INT 3
21766: LESS
21767: PUSH
21768: LD_OWVAR 1
21772: PUSH
21773: LD_INT 33600
21775: LESS
21776: OR
21777: IFFALSE 21923
// begin if RusakBazaHore then
21779: LD_EXP 43
21783: IFFALSE 21824
// begin ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21785: LD_EXP 30
21789: PPUSH
21790: LD_INT 72
21792: PPUSH
21793: LD_INT 35
21795: PPUSH
21796: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21800: LD_INT 42
21802: PPUSH
21803: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21807: LD_EXP 30
21811: PPUSH
21812: LD_INT 72
21814: PPUSH
21815: LD_INT 35
21817: PPUSH
21818: CALL_OW 114
// end else
21822: GO 21921
// begin ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21824: LD_EXP 30
21828: PPUSH
21829: LD_INT 72
21831: PPUSH
21832: LD_INT 35
21834: PPUSH
21835: CALL_OW 114
// AddComAgressiveMove ( amik_attack_list , 42 , 53 ) ;
21839: LD_EXP 30
21843: PPUSH
21844: LD_INT 42
21846: PPUSH
21847: LD_INT 53
21849: PPUSH
21850: CALL_OW 174
// AddComAgressiveMove ( amik_attack_list , 90 , 133 ) ;
21854: LD_EXP 30
21858: PPUSH
21859: LD_INT 90
21861: PPUSH
21862: LD_INT 133
21864: PPUSH
21865: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
21869: LD_INT 42
21871: PPUSH
21872: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21876: LD_EXP 30
21880: PPUSH
21881: LD_INT 72
21883: PPUSH
21884: LD_INT 35
21886: PPUSH
21887: CALL_OW 114
// AddComAgressiveMove ( amik_attack_list , 42 , 53 ) ;
21891: LD_EXP 30
21895: PPUSH
21896: LD_INT 42
21898: PPUSH
21899: LD_INT 53
21901: PPUSH
21902: CALL_OW 174
// AddComAgressiveMove ( amik_attack_list , 90 , 133 ) ;
21906: LD_EXP 30
21910: PPUSH
21911: LD_INT 90
21913: PPUSH
21914: LD_INT 133
21916: PPUSH
21917: CALL_OW 174
// end ; end else
21921: GO 21960
// begin ComAgressiveMove ( amik_attack_list , 168 , 97 ) ;
21923: LD_EXP 30
21927: PPUSH
21928: LD_INT 168
21930: PPUSH
21931: LD_INT 97
21933: PPUSH
21934: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21938: LD_INT 42
21940: PPUSH
21941: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 168 , 97 ) ;
21945: LD_EXP 30
21949: PPUSH
21950: LD_INT 168
21952: PPUSH
21953: LD_INT 97
21955: PPUSH
21956: CALL_OW 114
// end ; end ; enable ;
21960: ENABLE
// end ;
21961: PPOPN 5
21963: END
// every 0 0$0.5 do var veh , list ;
21964: GO 21966
21966: DISABLE
21967: LD_INT 0
21969: PPUSH
21970: PPUSH
// begin for list in [ arab_attack_list , amik_attack_list , purple_attack_list ] do
21971: LD_ADDR_VAR 0 2
21975: PUSH
21976: LD_EXP 28
21980: PUSH
21981: LD_EXP 30
21985: PUSH
21986: LD_EXP 29
21990: PUSH
21991: EMPTY
21992: LIST
21993: LIST
21994: LIST
21995: PUSH
21996: FOR_IN
21997: IFFALSE 22060
// begin if not list then
21999: LD_VAR 0 2
22003: NOT
22004: IFFALSE 22008
// continue ;
22006: GO 21996
// for veh in list do
22008: LD_ADDR_VAR 0 1
22012: PUSH
22013: LD_VAR 0 2
22017: PUSH
22018: FOR_IN
22019: IFFALSE 22056
// if GetSide ( veh ) = you then
22021: LD_VAR 0 1
22025: PPUSH
22026: CALL_OW 255
22030: PUSH
22031: LD_EXP 21
22035: EQUAL
22036: IFFALSE 22054
// list = list diff veh ;
22038: LD_ADDR_VAR 0 2
22042: PUSH
22043: LD_VAR 0 2
22047: PUSH
22048: LD_VAR 0 1
22052: DIFF
22053: ST_TO_ADDR
22054: GO 22018
22056: POP
22057: POP
// end ;
22058: GO 21996
22060: POP
22061: POP
// enable ;
22062: ENABLE
// end ;
22063: PPOPN 2
22065: END
// every 0 0$1 do var targety , un , x , y ;
22066: GO 22068
22068: DISABLE
22069: LD_INT 0
22071: PPUSH
22072: PPUSH
22073: PPUSH
22074: PPUSH
// begin if nasralAraba and not AlianceSAraby then
22075: LD_EXP 37
22079: PUSH
22080: CALL 2247 0 0
22084: NOT
22085: AND
22086: IFFALSE 22155
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , you ] , [ f_side , amik ] , [ f_side , purple ] ] ] ) else
22088: LD_ADDR_VAR 0 1
22092: PUSH
22093: LD_INT 50
22095: PUSH
22096: EMPTY
22097: LIST
22098: PUSH
22099: LD_INT 2
22101: PUSH
22102: LD_INT 22
22104: PUSH
22105: LD_EXP 21
22109: PUSH
22110: EMPTY
22111: LIST
22112: LIST
22113: PUSH
22114: LD_INT 22
22116: PUSH
22117: LD_EXP 24
22121: PUSH
22122: EMPTY
22123: LIST
22124: LIST
22125: PUSH
22126: LD_INT 22
22128: PUSH
22129: LD_EXP 22
22133: PUSH
22134: EMPTY
22135: LIST
22136: LIST
22137: PUSH
22138: EMPTY
22139: LIST
22140: LIST
22141: LIST
22142: LIST
22143: PUSH
22144: EMPTY
22145: LIST
22146: LIST
22147: PPUSH
22148: CALL_OW 69
22152: ST_TO_ADDR
22153: GO 22207
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
22155: LD_ADDR_VAR 0 1
22159: PUSH
22160: LD_INT 50
22162: PUSH
22163: EMPTY
22164: LIST
22165: PUSH
22166: LD_INT 2
22168: PUSH
22169: LD_INT 22
22171: PUSH
22172: LD_EXP 24
22176: PUSH
22177: EMPTY
22178: LIST
22179: LIST
22180: PUSH
22181: LD_INT 22
22183: PUSH
22184: LD_EXP 22
22188: PUSH
22189: EMPTY
22190: LIST
22191: LIST
22192: PUSH
22193: EMPTY
22194: LIST
22195: LIST
22196: LIST
22197: PUSH
22198: EMPTY
22199: LIST
22200: LIST
22201: PPUSH
22202: CALL_OW 69
22206: ST_TO_ADDR
// if not targety then
22207: LD_VAR 0 1
22211: NOT
22212: IFFALSE 22216
// else
22214: GO 22657
// begin for un in arab_attack_list do
22216: LD_ADDR_VAR 0 2
22220: PUSH
22221: LD_EXP 28
22225: PUSH
22226: FOR_IN
22227: IFFALSE 22655
// begin if not IsOK ( un ) then
22229: LD_VAR 0 2
22233: PPUSH
22234: CALL_OW 302
22238: NOT
22239: IFFALSE 22243
// continue ;
22241: GO 22226
// if HasTask ( un ) and GetLives ( un ) = 1000 then
22243: LD_VAR 0 2
22247: PPUSH
22248: CALL_OW 314
22252: PUSH
22253: LD_VAR 0 2
22257: PPUSH
22258: CALL_OW 256
22262: PUSH
22263: LD_INT 1000
22265: EQUAL
22266: AND
22267: IFFALSE 22294
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
22269: LD_VAR 0 2
22273: PPUSH
22274: CALL_OW 437
22278: PUSH
22279: LD_INT 1
22281: ARRAY
22282: PUSH
22283: LD_INT 1
22285: ARRAY
22286: PUSH
22287: LD_STRING a
22289: EQUAL
22290: IFFALSE 22294
// continue ;
22292: GO 22226
// end ; if GetWeapon ( un ) = ar_selfpropelled_bomb then
22294: LD_VAR 0 2
22298: PPUSH
22299: CALL_OW 264
22303: PUSH
22304: LD_INT 29
22306: EQUAL
22307: IFFALSE 22504
// begin if GetDistUnits ( un , NearestUnitToUnit2 ( targety , un ) ) < 15 then
22309: LD_VAR 0 2
22313: PPUSH
22314: LD_VAR 0 1
22318: PPUSH
22319: LD_VAR 0 2
22323: PPUSH
22324: CALL 5562 0 2
22328: PPUSH
22329: CALL_OW 296
22333: PUSH
22334: LD_INT 15
22336: LESS
22337: IFFALSE 22478
// begin if See2 ( arab , NearestUnitToUnit2 ( targety , un ) ) then
22339: LD_EXP 23
22343: PPUSH
22344: LD_VAR 0 1
22348: PPUSH
22349: LD_VAR 0 2
22353: PPUSH
22354: CALL 5562 0 2
22358: PPUSH
22359: CALL 5703 0 2
22363: IFFALSE 22391
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22365: LD_VAR 0 2
22369: PPUSH
22370: LD_VAR 0 1
22374: PPUSH
22375: LD_VAR 0 2
22379: PPUSH
22380: CALL 5562 0 2
22384: PPUSH
22385: CALL_OW 115
22389: GO 22476
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22391: LD_ADDR_VAR 0 3
22395: PUSH
22396: LD_VAR 0 1
22400: PPUSH
22401: LD_VAR 0 2
22405: PPUSH
22406: CALL 5562 0 2
22410: PPUSH
22411: CALL_OW 250
22415: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22416: LD_ADDR_VAR 0 4
22420: PUSH
22421: LD_VAR 0 1
22425: PPUSH
22426: LD_VAR 0 2
22430: PPUSH
22431: CALL 5562 0 2
22435: PPUSH
22436: CALL_OW 251
22440: ST_TO_ADDR
// if ValidHex ( x , y ) then
22441: LD_VAR 0 3
22445: PPUSH
22446: LD_VAR 0 4
22450: PPUSH
22451: CALL_OW 488
22455: IFFALSE 22476
// ComAgressiveMove ( un , x , y ) ;
22457: LD_VAR 0 2
22461: PPUSH
22462: LD_VAR 0 3
22466: PPUSH
22467: LD_VAR 0 4
22471: PPUSH
22472: CALL_OW 114
// end ; end else
22476: GO 22502
// if not HasTask ( un ) then
22478: LD_VAR 0 2
22482: PPUSH
22483: CALL_OW 314
22487: NOT
22488: IFFALSE 22502
// ComMoveToArea ( un , ArBaza ) ;
22490: LD_VAR 0 2
22494: PPUSH
22495: LD_INT 15
22497: PPUSH
22498: CALL_OW 113
// end else
22502: GO 22653
// if not HasTask ( un ) then
22504: LD_VAR 0 2
22508: PPUSH
22509: CALL_OW 314
22513: NOT
22514: IFFALSE 22653
// begin if See2 ( arab , NearestUnitToUnit2 ( targety , un ) ) then
22516: LD_EXP 23
22520: PPUSH
22521: LD_VAR 0 1
22525: PPUSH
22526: LD_VAR 0 2
22530: PPUSH
22531: CALL 5562 0 2
22535: PPUSH
22536: CALL 5703 0 2
22540: IFFALSE 22568
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22542: LD_VAR 0 2
22546: PPUSH
22547: LD_VAR 0 1
22551: PPUSH
22552: LD_VAR 0 2
22556: PPUSH
22557: CALL 5562 0 2
22561: PPUSH
22562: CALL_OW 115
22566: GO 22653
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22568: LD_ADDR_VAR 0 3
22572: PUSH
22573: LD_VAR 0 1
22577: PPUSH
22578: LD_VAR 0 2
22582: PPUSH
22583: CALL 5562 0 2
22587: PPUSH
22588: CALL_OW 250
22592: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22593: LD_ADDR_VAR 0 4
22597: PUSH
22598: LD_VAR 0 1
22602: PPUSH
22603: LD_VAR 0 2
22607: PPUSH
22608: CALL 5562 0 2
22612: PPUSH
22613: CALL_OW 251
22617: ST_TO_ADDR
// if ValidHex ( x , y ) then
22618: LD_VAR 0 3
22622: PPUSH
22623: LD_VAR 0 4
22627: PPUSH
22628: CALL_OW 488
22632: IFFALSE 22653
// ComAgressiveMove ( un , x , y ) ;
22634: LD_VAR 0 2
22638: PPUSH
22639: LD_VAR 0 3
22643: PPUSH
22644: LD_VAR 0 4
22648: PPUSH
22649: CALL_OW 114
// end ; end ; end ;
22653: GO 22226
22655: POP
22656: POP
// end ; enable ;
22657: ENABLE
// end ;
22658: PPOPN 4
22660: END
// every 0 0$1 do var targety , un , x , y ;
22661: GO 22663
22663: DISABLE
22664: LD_INT 0
22666: PPUSH
22667: PPUSH
22668: PPUSH
22669: PPUSH
// begin targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , you ] , [ f_side , arab ] ] ] ) ;
22670: LD_ADDR_VAR 0 1
22674: PUSH
22675: LD_INT 50
22677: PUSH
22678: EMPTY
22679: LIST
22680: PUSH
22681: LD_INT 2
22683: PUSH
22684: LD_INT 22
22686: PUSH
22687: LD_EXP 21
22691: PUSH
22692: EMPTY
22693: LIST
22694: LIST
22695: PUSH
22696: LD_INT 22
22698: PUSH
22699: LD_EXP 23
22703: PUSH
22704: EMPTY
22705: LIST
22706: LIST
22707: PUSH
22708: EMPTY
22709: LIST
22710: LIST
22711: LIST
22712: PUSH
22713: EMPTY
22714: LIST
22715: LIST
22716: PPUSH
22717: CALL_OW 69
22721: ST_TO_ADDR
// if not targety then
22722: LD_VAR 0 1
22726: NOT
22727: IFFALSE 22731
// else
22729: GO 22995
// begin for un in amik_attack_list do
22731: LD_ADDR_VAR 0 2
22735: PUSH
22736: LD_EXP 30
22740: PUSH
22741: FOR_IN
22742: IFFALSE 22993
// begin if not IsOK ( un ) then
22744: LD_VAR 0 2
22748: PPUSH
22749: CALL_OW 302
22753: NOT
22754: IFFALSE 22758
// continue ;
22756: GO 22741
// if GetSide ( un ) <> amik then
22758: LD_VAR 0 2
22762: PPUSH
22763: CALL_OW 255
22767: PUSH
22768: LD_EXP 24
22772: NONEQUAL
22773: IFFALSE 22791
// amik_attack_list = amik_attack_list diff un ;
22775: LD_ADDR_EXP 30
22779: PUSH
22780: LD_EXP 30
22784: PUSH
22785: LD_VAR 0 2
22789: DIFF
22790: ST_TO_ADDR
// if HasTask ( un ) and GetLives ( un ) = 1000 then
22791: LD_VAR 0 2
22795: PPUSH
22796: CALL_OW 314
22800: PUSH
22801: LD_VAR 0 2
22805: PPUSH
22806: CALL_OW 256
22810: PUSH
22811: LD_INT 1000
22813: EQUAL
22814: AND
22815: IFFALSE 22842
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
22817: LD_VAR 0 2
22821: PPUSH
22822: CALL_OW 437
22826: PUSH
22827: LD_INT 1
22829: ARRAY
22830: PUSH
22831: LD_INT 1
22833: ARRAY
22834: PUSH
22835: LD_STRING a
22837: EQUAL
22838: IFFALSE 22842
// continue ;
22840: GO 22741
// end ; if not HasTask ( un ) then
22842: LD_VAR 0 2
22846: PPUSH
22847: CALL_OW 314
22851: NOT
22852: IFFALSE 22991
// begin if See2 ( amik , NearestUnitToUnit2 ( targety , un ) ) then
22854: LD_EXP 24
22858: PPUSH
22859: LD_VAR 0 1
22863: PPUSH
22864: LD_VAR 0 2
22868: PPUSH
22869: CALL 5562 0 2
22873: PPUSH
22874: CALL 5703 0 2
22878: IFFALSE 22906
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22880: LD_VAR 0 2
22884: PPUSH
22885: LD_VAR 0 1
22889: PPUSH
22890: LD_VAR 0 2
22894: PPUSH
22895: CALL 5562 0 2
22899: PPUSH
22900: CALL_OW 115
22904: GO 22991
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22906: LD_ADDR_VAR 0 3
22910: PUSH
22911: LD_VAR 0 1
22915: PPUSH
22916: LD_VAR 0 2
22920: PPUSH
22921: CALL 5562 0 2
22925: PPUSH
22926: CALL_OW 250
22930: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22931: LD_ADDR_VAR 0 4
22935: PUSH
22936: LD_VAR 0 1
22940: PPUSH
22941: LD_VAR 0 2
22945: PPUSH
22946: CALL 5562 0 2
22950: PPUSH
22951: CALL_OW 251
22955: ST_TO_ADDR
// if ValidHex ( x , y ) then
22956: LD_VAR 0 3
22960: PPUSH
22961: LD_VAR 0 4
22965: PPUSH
22966: CALL_OW 488
22970: IFFALSE 22991
// ComAgressiveMove ( un , x , y ) ;
22972: LD_VAR 0 2
22976: PPUSH
22977: LD_VAR 0 3
22981: PPUSH
22982: LD_VAR 0 4
22986: PPUSH
22987: CALL_OW 114
// end ; end ; end ;
22991: GO 22741
22993: POP
22994: POP
// end ; enable ;
22995: ENABLE
// end ;
22996: PPOPN 4
22998: END
// every 0 0$1 do var targety , un , x , y ;
22999: GO 23001
23001: DISABLE
23002: LD_INT 0
23004: PPUSH
23005: PPUSH
23006: PPUSH
23007: PPUSH
// begin if not nasralAraba then
23008: LD_EXP 37
23012: NOT
23013: IFFALSE 23049
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) else
23015: LD_ADDR_VAR 0 1
23019: PUSH
23020: LD_INT 50
23022: PUSH
23023: EMPTY
23024: LIST
23025: PUSH
23026: LD_INT 22
23028: PUSH
23029: LD_EXP 21
23033: PUSH
23034: EMPTY
23035: LIST
23036: LIST
23037: PUSH
23038: EMPTY
23039: LIST
23040: LIST
23041: PPUSH
23042: CALL_OW 69
23046: ST_TO_ADDR
23047: GO 23142
// if not AlianceSAraby then
23049: CALL 2247 0 0
23053: NOT
23054: IFFALSE 23090
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , arab ] ] ) else
23056: LD_ADDR_VAR 0 1
23060: PUSH
23061: LD_INT 50
23063: PUSH
23064: EMPTY
23065: LIST
23066: PUSH
23067: LD_INT 22
23069: PUSH
23070: LD_EXP 23
23074: PUSH
23075: EMPTY
23076: LIST
23077: LIST
23078: PUSH
23079: EMPTY
23080: LIST
23081: LIST
23082: PPUSH
23083: CALL_OW 69
23087: ST_TO_ADDR
23088: GO 23142
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , arab ] , [ f_side , you ] ] ] ) ;
23090: LD_ADDR_VAR 0 1
23094: PUSH
23095: LD_INT 50
23097: PUSH
23098: EMPTY
23099: LIST
23100: PUSH
23101: LD_INT 2
23103: PUSH
23104: LD_INT 22
23106: PUSH
23107: LD_EXP 23
23111: PUSH
23112: EMPTY
23113: LIST
23114: LIST
23115: PUSH
23116: LD_INT 22
23118: PUSH
23119: LD_EXP 21
23123: PUSH
23124: EMPTY
23125: LIST
23126: LIST
23127: PUSH
23128: EMPTY
23129: LIST
23130: LIST
23131: LIST
23132: PUSH
23133: EMPTY
23134: LIST
23135: LIST
23136: PPUSH
23137: CALL_OW 69
23141: ST_TO_ADDR
// if not targety then
23142: LD_VAR 0 1
23146: NOT
23147: IFFALSE 23151
// else
23149: GO 23467
// begin for un in purple_attack_list do
23151: LD_ADDR_VAR 0 2
23155: PUSH
23156: LD_EXP 29
23160: PUSH
23161: FOR_IN
23162: IFFALSE 23465
// begin if not IsOK ( un ) then
23164: LD_VAR 0 2
23168: PPUSH
23169: CALL_OW 302
23173: NOT
23174: IFFALSE 23178
// continue ;
23176: GO 23161
// if HasTask ( un ) and GetLives ( un ) = 1000 then
23178: LD_VAR 0 2
23182: PPUSH
23183: CALL_OW 314
23187: PUSH
23188: LD_VAR 0 2
23192: PPUSH
23193: CALL_OW 256
23197: PUSH
23198: LD_INT 1000
23200: EQUAL
23201: AND
23202: IFFALSE 23229
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
23204: LD_VAR 0 2
23208: PPUSH
23209: CALL_OW 437
23213: PUSH
23214: LD_INT 1
23216: ARRAY
23217: PUSH
23218: LD_INT 1
23220: ARRAY
23221: PUSH
23222: LD_STRING a
23224: EQUAL
23225: IFFALSE 23229
// continue ;
23227: GO 23161
// end ; if GetFuel ( un ) < 20 and IsPlaced ( purple_ware ) then
23229: LD_VAR 0 2
23233: PPUSH
23234: CALL_OW 261
23238: PUSH
23239: LD_INT 20
23241: LESS
23242: PUSH
23243: LD_INT 105
23245: PPUSH
23246: CALL_OW 305
23250: AND
23251: IFFALSE 23279
// begin ComMoveUnit ( un , purple_ware ) ;
23253: LD_VAR 0 2
23257: PPUSH
23258: LD_INT 105
23260: PPUSH
23261: CALL_OW 112
// AddComRefuel ( un , purple_ware ) ;
23265: LD_VAR 0 2
23269: PPUSH
23270: LD_INT 105
23272: PPUSH
23273: CALL_OW 210
// end else
23277: GO 23463
// if GetLives ( un ) < hranice_utok_repair_utek then
23279: LD_VAR 0 2
23283: PPUSH
23284: CALL_OW 256
23288: PUSH
23289: LD_EXP 56
23293: LESS
23294: IFFALSE 23314
// purple_attack_list = purple_attack_list diff un else
23296: LD_ADDR_EXP 29
23300: PUSH
23301: LD_EXP 29
23305: PUSH
23306: LD_VAR 0 2
23310: DIFF
23311: ST_TO_ADDR
23312: GO 23463
// if not HasTask ( un ) then
23314: LD_VAR 0 2
23318: PPUSH
23319: CALL_OW 314
23323: NOT
23324: IFFALSE 23463
// begin if See2 ( purple , NearestUnitToUnit2 ( targety , un ) ) then
23326: LD_EXP 22
23330: PPUSH
23331: LD_VAR 0 1
23335: PPUSH
23336: LD_VAR 0 2
23340: PPUSH
23341: CALL 5562 0 2
23345: PPUSH
23346: CALL 5703 0 2
23350: IFFALSE 23378
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
23352: LD_VAR 0 2
23356: PPUSH
23357: LD_VAR 0 1
23361: PPUSH
23362: LD_VAR 0 2
23366: PPUSH
23367: CALL 5562 0 2
23371: PPUSH
23372: CALL_OW 115
23376: GO 23463
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
23378: LD_ADDR_VAR 0 3
23382: PUSH
23383: LD_VAR 0 1
23387: PPUSH
23388: LD_VAR 0 2
23392: PPUSH
23393: CALL 5562 0 2
23397: PPUSH
23398: CALL_OW 250
23402: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
23403: LD_ADDR_VAR 0 4
23407: PUSH
23408: LD_VAR 0 1
23412: PPUSH
23413: LD_VAR 0 2
23417: PPUSH
23418: CALL 5562 0 2
23422: PPUSH
23423: CALL_OW 251
23427: ST_TO_ADDR
// if ValidHex ( x , y ) then
23428: LD_VAR 0 3
23432: PPUSH
23433: LD_VAR 0 4
23437: PPUSH
23438: CALL_OW 488
23442: IFFALSE 23463
// ComAgressiveMove ( un , x , y ) ;
23444: LD_VAR 0 2
23448: PPUSH
23449: LD_VAR 0 3
23453: PPUSH
23454: LD_VAR 0 4
23458: PPUSH
23459: CALL_OW 114
// end ; end ; end ;
23463: GO 23161
23465: POP
23466: POP
// end ; enable ;
23467: ENABLE
// end ;
23468: PPOPN 4
23470: END
// every 0 0$10 do var i , tov ;
23471: GO 23473
23473: DISABLE
23474: LD_INT 0
23476: PPUSH
23477: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_ar_attack_size + 3 then
23478: LD_EXP 33
23482: NOT
23483: PUSH
23484: LD_INT 52
23486: PUSH
23487: EMPTY
23488: LIST
23489: PUSH
23490: LD_INT 22
23492: PUSH
23493: LD_EXP 23
23497: PUSH
23498: EMPTY
23499: LIST
23500: LIST
23501: PUSH
23502: LD_INT 21
23504: PUSH
23505: LD_INT 2
23507: PUSH
23508: EMPTY
23509: LIST
23510: LIST
23511: PUSH
23512: EMPTY
23513: LIST
23514: LIST
23515: LIST
23516: PPUSH
23517: CALL_OW 69
23521: PUSH
23522: LD_INT 0
23524: PLUS
23525: PUSH
23526: LD_EXP 67
23530: PUSH
23531: LD_INT 3
23533: PLUS
23534: LESS
23535: AND
23536: IFFALSE 23540
// else
23538: GO 23668
// begin Wait ( dif_arab_vyroba_utok_wait_start ) ;
23540: LD_EXP 76
23544: PPUSH
23545: CALL_OW 67
// if dif_arab_vyroba_utok_wait_start < dif_arab_vyroba_utok_wait then
23549: LD_EXP 76
23553: PUSH
23554: LD_EXP 70
23558: LESS
23559: IFFALSE 23581
// dif_arab_vyroba_utok_wait_start = dif_arab_vyroba_utok_wait_start + dif_vyroba_tick_inkrement * 2 ;
23561: LD_ADDR_EXP 76
23565: PUSH
23566: LD_EXP 76
23570: PUSH
23571: LD_EXP 79
23575: PUSH
23576: LD_INT 2
23578: MUL
23579: PLUS
23580: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23581: LD_ADDR_VAR 0 2
23585: PUSH
23586: LD_INT 22
23588: PUSH
23589: LD_EXP 23
23593: PUSH
23594: EMPTY
23595: LIST
23596: LIST
23597: PUSH
23598: LD_INT 30
23600: PUSH
23601: LD_INT 3
23603: PUSH
23604: EMPTY
23605: LIST
23606: LIST
23607: PUSH
23608: LD_INT 52
23610: PUSH
23611: EMPTY
23612: LIST
23613: PUSH
23614: EMPTY
23615: LIST
23616: LIST
23617: LIST
23618: PPUSH
23619: CALL_OW 69
23623: ST_TO_ADDR
// if not tov then
23624: LD_VAR 0 2
23628: NOT
23629: IFFALSE 23633
// exit ;
23631: GO 23669
// for i = 1 to dif_ar_attack_size do
23633: LD_ADDR_VAR 0 1
23637: PUSH
23638: DOUBLE
23639: LD_INT 1
23641: DEC
23642: ST_TO_ADDR
23643: LD_EXP 67
23647: PUSH
23648: FOR_TO
23649: IFFALSE 23666
// begin VyrobAuto ( tov [ 1 ] ) ;
23651: LD_VAR 0 2
23655: PUSH
23656: LD_INT 1
23658: ARRAY
23659: PPUSH
23660: CALL 24171 0 1
// end ;
23664: GO 23648
23666: POP
23667: POP
// end ; enable ;
23668: ENABLE
// end ;
23669: PPOPN 2
23671: END
// every 0 0$10 do var i , tov ;
23672: GO 23674
23674: DISABLE
23675: LD_INT 0
23677: PPUSH
23678: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_purple_attack_size + 2 then
23679: LD_EXP 33
23683: NOT
23684: PUSH
23685: LD_INT 52
23687: PUSH
23688: EMPTY
23689: LIST
23690: PUSH
23691: LD_INT 22
23693: PUSH
23694: LD_EXP 22
23698: PUSH
23699: EMPTY
23700: LIST
23701: LIST
23702: PUSH
23703: LD_INT 21
23705: PUSH
23706: LD_INT 2
23708: PUSH
23709: EMPTY
23710: LIST
23711: LIST
23712: PUSH
23713: EMPTY
23714: LIST
23715: LIST
23716: LIST
23717: PPUSH
23718: CALL_OW 69
23722: PUSH
23723: LD_INT 0
23725: PLUS
23726: PUSH
23727: LD_EXP 68
23731: PUSH
23732: LD_INT 2
23734: PLUS
23735: LESS
23736: AND
23737: IFFALSE 23741
// else
23739: GO 23869
// begin Wait ( dif_purple_vyroba_utok_wait_start ) ;
23741: LD_EXP 77
23745: PPUSH
23746: CALL_OW 67
// if dif_purple_vyroba_utok_wait_start < dif_purple_vyroba_utok_wait then
23750: LD_EXP 77
23754: PUSH
23755: LD_EXP 71
23759: LESS
23760: IFFALSE 23782
// dif_purple_vyroba_utok_wait_start = dif_purple_vyroba_utok_wait_start + dif_vyroba_tick_inkrement * 4 ;
23762: LD_ADDR_EXP 77
23766: PUSH
23767: LD_EXP 77
23771: PUSH
23772: LD_EXP 79
23776: PUSH
23777: LD_INT 4
23779: MUL
23780: PLUS
23781: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , purple ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23782: LD_ADDR_VAR 0 2
23786: PUSH
23787: LD_INT 22
23789: PUSH
23790: LD_EXP 22
23794: PUSH
23795: EMPTY
23796: LIST
23797: LIST
23798: PUSH
23799: LD_INT 30
23801: PUSH
23802: LD_INT 3
23804: PUSH
23805: EMPTY
23806: LIST
23807: LIST
23808: PUSH
23809: LD_INT 52
23811: PUSH
23812: EMPTY
23813: LIST
23814: PUSH
23815: EMPTY
23816: LIST
23817: LIST
23818: LIST
23819: PPUSH
23820: CALL_OW 69
23824: ST_TO_ADDR
// if not tov then
23825: LD_VAR 0 2
23829: NOT
23830: IFFALSE 23834
// exit ;
23832: GO 23870
// for i = 1 to dif_purple_attack_size do
23834: LD_ADDR_VAR 0 1
23838: PUSH
23839: DOUBLE
23840: LD_INT 1
23842: DEC
23843: ST_TO_ADDR
23844: LD_EXP 68
23848: PUSH
23849: FOR_TO
23850: IFFALSE 23867
// begin VyrobAuto ( tov [ 1 ] ) ;
23852: LD_VAR 0 2
23856: PUSH
23857: LD_INT 1
23859: ARRAY
23860: PPUSH
23861: CALL 24171 0 1
// end ;
23865: GO 23849
23867: POP
23868: POP
// end ; enable ;
23869: ENABLE
// end ;
23870: PPOPN 2
23872: END
// every 0 0$10 do var i , tov ;
23873: GO 23875
23875: DISABLE
23876: LD_INT 0
23878: PPUSH
23879: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_ar_attack_size + 2 then
23880: LD_EXP 33
23884: NOT
23885: PUSH
23886: LD_INT 52
23888: PUSH
23889: EMPTY
23890: LIST
23891: PUSH
23892: LD_INT 22
23894: PUSH
23895: LD_EXP 24
23899: PUSH
23900: EMPTY
23901: LIST
23902: LIST
23903: PUSH
23904: LD_INT 21
23906: PUSH
23907: LD_INT 2
23909: PUSH
23910: EMPTY
23911: LIST
23912: LIST
23913: PUSH
23914: EMPTY
23915: LIST
23916: LIST
23917: LIST
23918: PPUSH
23919: CALL_OW 69
23923: PUSH
23924: LD_INT 0
23926: PLUS
23927: PUSH
23928: LD_EXP 67
23932: PUSH
23933: LD_INT 2
23935: PLUS
23936: LESS
23937: AND
23938: IFFALSE 23942
// else
23940: GO 24167
// begin Wait ( dif_amik_vyroba_utok_wait_start ) ;
23942: LD_EXP 78
23946: PPUSH
23947: CALL_OW 67
// if dif_amik_vyroba_utok_wait_start < dif_amik_vyroba_utok_wait then
23951: LD_EXP 78
23955: PUSH
23956: LD_EXP 72
23960: LESS
23961: IFFALSE 23979
// dif_amik_vyroba_utok_wait_start = dif_amik_vyroba_utok_wait_start + dif_vyroba_tick_inkrement ;
23963: LD_ADDR_EXP 78
23967: PUSH
23968: LD_EXP 78
23972: PUSH
23973: LD_EXP 79
23977: PLUS
23978: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , amik ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23979: LD_ADDR_VAR 0 2
23983: PUSH
23984: LD_INT 22
23986: PUSH
23987: LD_EXP 24
23991: PUSH
23992: EMPTY
23993: LIST
23994: LIST
23995: PUSH
23996: LD_INT 30
23998: PUSH
23999: LD_INT 3
24001: PUSH
24002: EMPTY
24003: LIST
24004: LIST
24005: PUSH
24006: LD_INT 52
24008: PUSH
24009: EMPTY
24010: LIST
24011: PUSH
24012: EMPTY
24013: LIST
24014: LIST
24015: LIST
24016: PPUSH
24017: CALL_OW 69
24021: ST_TO_ADDR
// if not tov then
24022: LD_VAR 0 2
24026: NOT
24027: IFFALSE 24031
// exit ;
24029: GO 24168
// if tov = 2 then
24031: LD_VAR 0 2
24035: PUSH
24036: LD_INT 2
24038: EQUAL
24039: IFFALSE 24123
// begin for i = 1 to dif_amik_attack_size / 2 do
24041: LD_ADDR_VAR 0 1
24045: PUSH
24046: DOUBLE
24047: LD_INT 1
24049: DEC
24050: ST_TO_ADDR
24051: LD_EXP 69
24055: PUSH
24056: LD_INT 2
24058: DIVREAL
24059: PUSH
24060: FOR_TO
24061: IFFALSE 24078
// begin VyrobAuto ( tov [ 1 ] ) ;
24063: LD_VAR 0 2
24067: PUSH
24068: LD_INT 1
24070: ARRAY
24071: PPUSH
24072: CALL 24171 0 1
// end ;
24076: GO 24060
24078: POP
24079: POP
// for i = dif_amik_attack_size / 2 to dif_amik_attack_size do
24080: LD_ADDR_VAR 0 1
24084: PUSH
24085: DOUBLE
24086: LD_EXP 69
24090: PUSH
24091: LD_INT 2
24093: DIVREAL
24094: DEC
24095: ST_TO_ADDR
24096: LD_EXP 69
24100: PUSH
24101: FOR_TO
24102: IFFALSE 24119
// begin VyrobAuto ( tov [ 2 ] ) ;
24104: LD_VAR 0 2
24108: PUSH
24109: LD_INT 2
24111: ARRAY
24112: PPUSH
24113: CALL 24171 0 1
// end ;
24117: GO 24101
24119: POP
24120: POP
// end else
24121: GO 24158
// begin for i = 1 to dif_amik_attack_size do
24123: LD_ADDR_VAR 0 1
24127: PUSH
24128: DOUBLE
24129: LD_INT 1
24131: DEC
24132: ST_TO_ADDR
24133: LD_EXP 69
24137: PUSH
24138: FOR_TO
24139: IFFALSE 24156
// begin VyrobAuto ( tov [ 1 ] ) ;
24141: LD_VAR 0 2
24145: PUSH
24146: LD_INT 1
24148: ARRAY
24149: PPUSH
24150: CALL 24171 0 1
// end ;
24154: GO 24138
24156: POP
24157: POP
// end ; Wait ( dif_amik_vyroba_utok_wait_start ) ;
24158: LD_EXP 78
24162: PPUSH
24163: CALL_OW 67
// end ; enable ;
24167: ENABLE
// end ;
24168: PPOPN 2
24170: END
// function VyrobAuto ( tovarna ) ; var podvozek , zbran , P , narod , pasovy_pristavek ; begin
24171: LD_INT 0
24173: PPUSH
24174: PPUSH
24175: PPUSH
24176: PPUSH
24177: PPUSH
24178: PPUSH
// if not tovarna then
24179: LD_VAR 0 1
24183: NOT
24184: IFFALSE 24188
// exit ;
24186: GO 25086
// if not IsOk ( tovarna ) then
24188: LD_VAR 0 1
24192: PPUSH
24193: CALL_OW 302
24197: NOT
24198: IFFALSE 24202
// exit ;
24200: GO 25086
// P = Rand ( 1 , 100 ) ;
24202: LD_ADDR_VAR 0 5
24206: PUSH
24207: LD_INT 1
24209: PPUSH
24210: LD_INT 100
24212: PPUSH
24213: CALL_OW 12
24217: ST_TO_ADDR
// narod = GetNation ( tovarna ) ;
24218: LD_ADDR_VAR 0 6
24222: PUSH
24223: LD_VAR 0 1
24227: PPUSH
24228: CALL_OW 248
24232: ST_TO_ADDR
// if narod = 1 then
24233: LD_VAR 0 6
24237: PUSH
24238: LD_INT 1
24240: EQUAL
24241: IFFALSE 24272
// pasovy_pristavek = CanBeConstructed ( tovarna , us_medium_tracked , engine_combustion , control_manual , us_machine_gun ) else
24243: LD_ADDR_VAR 0 7
24247: PUSH
24248: LD_VAR 0 1
24252: PPUSH
24253: LD_INT 3
24255: PPUSH
24256: LD_INT 1
24258: PPUSH
24259: LD_INT 1
24261: PPUSH
24262: LD_INT 2
24264: PPUSH
24265: CALL_OW 448
24269: ST_TO_ADDR
24270: GO 24338
// if narod = 3 then
24272: LD_VAR 0 6
24276: PUSH
24277: LD_INT 3
24279: EQUAL
24280: IFFALSE 24311
// pasovy_pristavek = CanBeConstructed ( tovarna , ru_medium_tracked , engine_combustion , control_manual , ru_heavy_machine_gun ) else
24282: LD_ADDR_VAR 0 7
24286: PUSH
24287: LD_VAR 0 1
24291: PPUSH
24292: LD_INT 22
24294: PPUSH
24295: LD_INT 1
24297: PPUSH
24298: LD_INT 1
24300: PPUSH
24301: LD_INT 42
24303: PPUSH
24304: CALL_OW 448
24308: ST_TO_ADDR
24309: GO 24338
// pasovy_pristavek = CanBeConstructed ( tovarna , ar_medium_trike , engine_combustion , control_manual , ar_double_machine_gun ) ;
24311: LD_ADDR_VAR 0 7
24315: PUSH
24316: LD_VAR 0 1
24320: PPUSH
24321: LD_INT 13
24323: PPUSH
24324: LD_INT 1
24326: PPUSH
24327: LD_INT 1
24329: PPUSH
24330: LD_INT 24
24332: PPUSH
24333: CALL_OW 448
24337: ST_TO_ADDR
// if narod = 1 then
24338: LD_VAR 0 6
24342: PUSH
24343: LD_INT 1
24345: EQUAL
24346: IFFALSE 24651
// begin if P < dif_auto_vyroba_sance [ 1 ] then
24348: LD_VAR 0 5
24352: PUSH
24353: LD_EXP 74
24357: PUSH
24358: LD_INT 1
24360: ARRAY
24361: LESS
24362: IFFALSE 24382
// begin zbran = us_gatling_gun ;
24364: LD_ADDR_VAR 0 4
24368: PUSH
24369: LD_INT 4
24371: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24372: LD_ADDR_VAR 0 3
24376: PUSH
24377: LD_INT 3
24379: ST_TO_ADDR
// end else
24380: GO 24500
// if P < dif_auto_vyroba_sance [ 2 ] then
24382: LD_VAR 0 5
24386: PUSH
24387: LD_EXP 74
24391: PUSH
24392: LD_INT 2
24394: ARRAY
24395: LESS
24396: IFFALSE 24416
// begin zbran = us_laser ;
24398: LD_ADDR_VAR 0 4
24402: PUSH
24403: LD_INT 9
24405: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24406: LD_ADDR_VAR 0 3
24410: PUSH
24411: LD_INT 3
24413: ST_TO_ADDR
// end else
24414: GO 24500
// if P < dif_auto_vyroba_sance [ 3 ] then
24416: LD_VAR 0 5
24420: PUSH
24421: LD_EXP 74
24425: PUSH
24426: LD_INT 3
24428: ARRAY
24429: LESS
24430: IFFALSE 24450
// begin zbran = us_rocket_launcher ;
24432: LD_ADDR_VAR 0 4
24436: PUSH
24437: LD_INT 7
24439: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24440: LD_ADDR_VAR 0 3
24444: PUSH
24445: LD_INT 3
24447: ST_TO_ADDR
// end else
24448: GO 24500
// if P < dif_auto_vyroba_sance [ 4 ] then
24450: LD_VAR 0 5
24454: PUSH
24455: LD_EXP 74
24459: PUSH
24460: LD_INT 4
24462: ARRAY
24463: LESS
24464: IFFALSE 24484
// begin zbran = us_double_gun ;
24466: LD_ADDR_VAR 0 4
24470: PUSH
24471: LD_INT 5
24473: ST_TO_ADDR
// podvozek = us_heavy_tracked ;
24474: LD_ADDR_VAR 0 3
24478: PUSH
24479: LD_INT 4
24481: ST_TO_ADDR
// end else
24482: GO 24500
// begin zbran = us_heavy_gun ;
24484: LD_ADDR_VAR 0 4
24488: PUSH
24489: LD_INT 6
24491: ST_TO_ADDR
// podvozek = us_morphling ;
24492: LD_ADDR_VAR 0 3
24496: PUSH
24497: LD_INT 5
24499: ST_TO_ADDR
// end ; if not pasovy_pristavek then
24500: LD_VAR 0 7
24504: NOT
24505: IFFALSE 24557
// begin if podvozek in [ us_medium_tracked , us_heavy_tracked , us_morphling ] then
24507: LD_VAR 0 3
24511: PUSH
24512: LD_INT 3
24514: PUSH
24515: LD_INT 4
24517: PUSH
24518: LD_INT 5
24520: PUSH
24521: EMPTY
24522: LIST
24523: LIST
24524: LIST
24525: IN
24526: IFFALSE 24536
// podvozek = us_medium_wheeled ;
24528: LD_ADDR_VAR 0 3
24532: PUSH
24533: LD_INT 2
24535: ST_TO_ADDR
// if zbran in [ us_heavy_gun ] then
24536: LD_VAR 0 4
24540: PUSH
24541: LD_INT 6
24543: PUSH
24544: EMPTY
24545: LIST
24546: IN
24547: IFFALSE 24557
// zbran = us_double_gun ;
24549: LD_ADDR_VAR 0 4
24553: PUSH
24554: LD_INT 5
24556: ST_TO_ADDR
// end ; if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_computer , zbran ) and zbran = us_heavy_gun then
24557: LD_VAR 0 1
24561: PPUSH
24562: LD_VAR 0 3
24566: PPUSH
24567: LD_INT 1
24569: PPUSH
24570: LD_INT 3
24572: PPUSH
24573: LD_VAR 0 4
24577: PPUSH
24578: CALL_OW 448
24582: NOT
24583: PUSH
24584: LD_VAR 0 4
24588: PUSH
24589: LD_INT 6
24591: EQUAL
24592: AND
24593: IFFALSE 24603
// zbran = us_laser ;
24595: LD_ADDR_VAR 0 4
24599: PUSH
24600: LD_INT 9
24602: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_computer , zbran ) and zbran = us_double_gun then
24603: LD_VAR 0 1
24607: PPUSH
24608: LD_VAR 0 3
24612: PPUSH
24613: LD_INT 1
24615: PPUSH
24616: LD_INT 3
24618: PPUSH
24619: LD_VAR 0 4
24623: PPUSH
24624: CALL_OW 448
24628: NOT
24629: PUSH
24630: LD_VAR 0 4
24634: PUSH
24635: LD_INT 5
24637: EQUAL
24638: AND
24639: IFFALSE 24649
// zbran = us_rocket_launcher ;
24641: LD_ADDR_VAR 0 4
24645: PUSH
24646: LD_INT 7
24648: ST_TO_ADDR
// end else
24649: GO 24878
// begin if P < dif_auto_vyroba_sance [ 1 ] then
24651: LD_VAR 0 5
24655: PUSH
24656: LD_EXP 74
24660: PUSH
24661: LD_INT 1
24663: ARRAY
24664: LESS
24665: IFFALSE 24685
// begin zbran = ar_gun ;
24667: LD_ADDR_VAR 0 4
24671: PUSH
24672: LD_INT 27
24674: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24675: LD_ADDR_VAR 0 3
24679: PUSH
24680: LD_INT 13
24682: ST_TO_ADDR
// end else
24683: GO 24839
// if P < dif_auto_vyroba_sance [ 2 ] then
24685: LD_VAR 0 5
24689: PUSH
24690: LD_EXP 74
24694: PUSH
24695: LD_INT 2
24697: ARRAY
24698: LESS
24699: IFFALSE 24719
// begin zbran = ar_gatling_gun ;
24701: LD_ADDR_VAR 0 4
24705: PUSH
24706: LD_INT 25
24708: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24709: LD_ADDR_VAR 0 3
24713: PUSH
24714: LD_INT 13
24716: ST_TO_ADDR
// end else
24717: GO 24839
// if P < dif_auto_vyroba_sance [ 3 ] then
24719: LD_VAR 0 5
24723: PUSH
24724: LD_EXP 74
24728: PUSH
24729: LD_INT 3
24731: ARRAY
24732: LESS
24733: IFFALSE 24753
// begin zbran = ar_gun ;
24735: LD_ADDR_VAR 0 4
24739: PUSH
24740: LD_INT 27
24742: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24743: LD_ADDR_VAR 0 3
24747: PUSH
24748: LD_INT 13
24750: ST_TO_ADDR
// end else
24751: GO 24839
// if P < dif_auto_vyroba_sance [ 4 ] then
24753: LD_VAR 0 5
24757: PUSH
24758: LD_EXP 74
24762: PUSH
24763: LD_INT 4
24765: ARRAY
24766: LESS
24767: IFFALSE 24787
// begin zbran = ar_rocket_launcher ;
24769: LD_ADDR_VAR 0 4
24773: PUSH
24774: LD_INT 28
24776: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24777: LD_ADDR_VAR 0 3
24781: PUSH
24782: LD_INT 14
24784: ST_TO_ADDR
// end else
24785: GO 24839
// begin if ar_samohybka_naposled_stavba >= 2 then
24787: LD_EXP 41
24791: PUSH
24792: LD_INT 2
24794: GREATEREQUAL
24795: IFFALSE 24823
// begin zbran = ar_selfpropelled_bomb ;
24797: LD_ADDR_VAR 0 4
24801: PUSH
24802: LD_INT 29
24804: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24805: LD_ADDR_VAR 0 3
24809: PUSH
24810: LD_INT 14
24812: ST_TO_ADDR
// ar_samohybka_naposled_stavba = 0 ;
24813: LD_ADDR_EXP 41
24817: PUSH
24818: LD_INT 0
24820: ST_TO_ADDR
// end else
24821: GO 24839
// begin zbran = ar_rocket_launcher ;
24823: LD_ADDR_VAR 0 4
24827: PUSH
24828: LD_INT 28
24830: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24831: LD_ADDR_VAR 0 3
24835: PUSH
24836: LD_INT 14
24838: ST_TO_ADDR
// end ; end ; if not pasovy_pristavek then
24839: LD_VAR 0 7
24843: NOT
24844: IFFALSE 24864
// begin if podvozek = ar_half_tracked then
24846: LD_VAR 0 3
24850: PUSH
24851: LD_INT 14
24853: EQUAL
24854: IFFALSE 24864
// podvozek = ar_medium_trike ;
24856: LD_ADDR_VAR 0 3
24860: PUSH
24861: LD_INT 13
24863: ST_TO_ADDR
// end ; ar_samohybka_naposled_stavba = ar_samohybka_naposled_stavba + 1 ;
24864: LD_ADDR_EXP 41
24868: PUSH
24869: LD_EXP 41
24873: PUSH
24874: LD_INT 1
24876: PLUS
24877: ST_TO_ADDR
// end ; if Prob ( dif_auto_lepsi_podvozek_sance ) and pasovy_pristavek then
24878: LD_EXP 73
24882: PPUSH
24883: CALL_OW 13
24887: PUSH
24888: LD_VAR 0 7
24892: AND
24893: IFFALSE 24973
// begin if narod = nation_american then
24895: LD_VAR 0 6
24899: PUSH
24900: LD_INT 1
24902: EQUAL
24903: IFFALSE 24925
// podvozek = Rand ( podvozek , us_morphling ) else
24905: LD_ADDR_VAR 0 3
24909: PUSH
24910: LD_VAR 0 3
24914: PPUSH
24915: LD_INT 5
24917: PPUSH
24918: CALL_OW 12
24922: ST_TO_ADDR
24923: GO 24973
// if narod = nation_russian then
24925: LD_VAR 0 6
24929: PUSH
24930: LD_INT 3
24932: EQUAL
24933: IFFALSE 24955
// podvozek = Rand ( podvozek , ru_heavy_tracked ) else
24935: LD_ADDR_VAR 0 3
24939: PUSH
24940: LD_VAR 0 3
24944: PPUSH
24945: LD_INT 24
24947: PPUSH
24948: CALL_OW 12
24952: ST_TO_ADDR
24953: GO 24973
// podvozek = Rand ( podvozek , ar_half_tracked ) ;
24955: LD_ADDR_VAR 0 3
24959: PUSH
24960: LD_VAR 0 3
24964: PPUSH
24965: LD_INT 14
24967: PPUSH
24968: CALL_OW 12
24972: ST_TO_ADDR
// end ; if GetSide ( tovarna ) = arab then
24973: LD_VAR 0 1
24977: PPUSH
24978: CALL_OW 255
24982: PUSH
24983: LD_EXP 23
24987: EQUAL
24988: IFFALSE 25017
// AddComConstruct ( tovarna , podvozek , engine_siberite , control_apeman , zbran ) else
24990: LD_VAR 0 1
24994: PPUSH
24995: LD_VAR 0 3
24999: PPUSH
25000: LD_INT 3
25002: PPUSH
25003: LD_INT 5
25005: PPUSH
25006: LD_VAR 0 4
25010: PPUSH
25011: CALL_OW 185
25015: GO 25086
// if GetSide ( tovarna ) = purple then
25017: LD_VAR 0 1
25021: PPUSH
25022: CALL_OW 255
25026: PUSH
25027: LD_EXP 22
25031: EQUAL
25032: IFFALSE 25061
// AddComConstruct ( tovarna , podvozek , engine_combustion , control_remote , zbran ) else
25034: LD_VAR 0 1
25038: PPUSH
25039: LD_VAR 0 3
25043: PPUSH
25044: LD_INT 1
25046: PPUSH
25047: LD_INT 2
25049: PPUSH
25050: LD_VAR 0 4
25054: PPUSH
25055: CALL_OW 185
25059: GO 25086
// AddComConstruct ( tovarna , podvozek , engine_combustion , control_computer , zbran ) end ; end_of_file
25061: LD_VAR 0 1
25065: PPUSH
25066: LD_VAR 0 3
25070: PPUSH
25071: LD_INT 1
25073: PPUSH
25074: LD_INT 3
25076: PPUSH
25077: LD_VAR 0 4
25081: PPUSH
25082: CALL_OW 185
25086: LD_VAR 0 2
25090: RET
// export researchtalk ; var buildingtalk ; on ResearchComplete ( research , building ) do var doktor ;
25091: LD_INT 0
25093: PPUSH
// begin if research = tech_virus and not researchtalk then
25094: LD_VAR 0 1
25098: PUSH
25099: LD_INT 33
25101: EQUAL
25102: PUSH
25103: LD_EXP 82
25107: NOT
25108: AND
25109: IFFALSE 25192
// begin researchtalk = true ;
25111: LD_ADDR_EXP 82
25115: PUSH
25116: LD_INT 1
25118: ST_TO_ADDR
// DialogueOn ;
25119: CALL_OW 6
// doktor = NajdiVedce ;
25123: LD_ADDR_VAR 0 3
25127: PUSH
25128: CALL 12714 0 0
25132: ST_TO_ADDR
// ChangeMissionObjectives ( M04 ) ;
25133: LD_STRING M04
25135: PPUSH
25136: CALL_OW 337
// Say ( doktor , D2sci-2 ) ;
25140: LD_VAR 0 3
25144: PPUSH
25145: LD_STRING D2sci-2
25147: PPUSH
25148: CALL_OW 88
// Say ( vsevolod , D2vse-2 ) ;
25152: LD_EXP 1
25156: PPUSH
25157: LD_STRING D2vse-2
25159: PPUSH
25160: CALL_OW 88
// Say ( doktor , D2sci-3 ) ;
25164: LD_VAR 0 3
25168: PPUSH
25169: LD_STRING D2sci-3
25171: PPUSH
25172: CALL_OW 88
// Say ( vsevolod , D2vse-3 ) ;
25176: LD_EXP 1
25180: PPUSH
25181: LD_STRING D2vse-3
25183: PPUSH
25184: CALL_OW 88
// DialogueOff ;
25188: CALL_OW 7
// end ; if research = tech_behemoth then
25192: LD_VAR 0 1
25196: PUSH
25197: LD_INT 23
25199: EQUAL
25200: IFFALSE 25270
// begin DialogueOn ;
25202: CALL_OW 6
// Say ( NajdiVedce , D2nekdo-6 ) ;
25206: CALL 12714 0 0
25210: PPUSH
25211: LD_STRING D2nekdo-6
25213: PPUSH
25214: CALL_OW 88
// if IsOk ( mikhail ) and IsPlaced ( mikhail ) then
25218: LD_EXP 14
25222: PPUSH
25223: CALL_OW 302
25227: PUSH
25228: LD_EXP 14
25232: PPUSH
25233: CALL_OW 305
25237: AND
25238: IFFALSE 25254
// Say ( mikhail , D2nekdo-7 ) else
25240: LD_EXP 14
25244: PPUSH
25245: LD_STRING D2nekdo-7
25247: PPUSH
25248: CALL_OW 88
25252: GO 25266
// Say ( NajdiMechanika , D2nekdo-7 ) ;
25254: CALL 12940 0 0
25258: PPUSH
25259: LD_STRING D2nekdo-7
25261: PPUSH
25262: CALL_OW 88
// DialogueOff ;
25266: CALL_OW 7
// end ; end ;
25270: PPOPN 3
25272: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , You ] , [ f_or , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] , [ f_btype , b_lab ] ] ] ) > 0 do var pom , i ;
25273: LD_INT 22
25275: PUSH
25276: LD_EXP 21
25280: PUSH
25281: EMPTY
25282: LIST
25283: LIST
25284: PUSH
25285: LD_INT 2
25287: PUSH
25288: LD_INT 30
25290: PUSH
25291: LD_INT 7
25293: PUSH
25294: EMPTY
25295: LIST
25296: LIST
25297: PUSH
25298: LD_INT 30
25300: PUSH
25301: LD_INT 8
25303: PUSH
25304: EMPTY
25305: LIST
25306: LIST
25307: PUSH
25308: LD_INT 30
25310: PUSH
25311: LD_INT 6
25313: PUSH
25314: EMPTY
25315: LIST
25316: LIST
25317: PUSH
25318: EMPTY
25319: LIST
25320: LIST
25321: LIST
25322: LIST
25323: PUSH
25324: EMPTY
25325: LIST
25326: LIST
25327: PPUSH
25328: CALL_OW 69
25332: PUSH
25333: LD_INT 0
25335: GREATER
25336: IFFALSE 25356
25338: GO 25340
25340: DISABLE
25341: LD_INT 0
25343: PPUSH
25344: PPUSH
// begin Wait ( 0 0$2 ) ;
25345: LD_INT 70
25347: PPUSH
25348: CALL_OW 67
// VirusDialog ;
25352: CALL 25467 0 0
// end ;
25356: PPOPN 2
25358: END
// every 0 0$1 trigger FilterUnitsInArea ( ZaklArea , [ [ f_side , You ] , [ f_type , unit_human ] ] ) and not buildingtalk do
25359: LD_INT 47
25361: PPUSH
25362: LD_INT 22
25364: PUSH
25365: LD_EXP 21
25369: PUSH
25370: EMPTY
25371: LIST
25372: LIST
25373: PUSH
25374: LD_INT 21
25376: PUSH
25377: LD_INT 1
25379: PUSH
25380: EMPTY
25381: LIST
25382: LIST
25383: PUSH
25384: EMPTY
25385: LIST
25386: LIST
25387: PPUSH
25388: CALL_OW 70
25392: PUSH
25393: LD_LOC 5
25397: NOT
25398: AND
25399: IFFALSE 25466
25401: GO 25403
25403: DISABLE
// begin Wait ( 0 0$2 ) ;
25404: LD_INT 70
25406: PPUSH
25407: CALL_OW 67
// if not FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] ] ) then
25411: LD_INT 22
25413: PUSH
25414: LD_EXP 21
25418: PUSH
25419: EMPTY
25420: LIST
25421: LIST
25422: PUSH
25423: LD_INT 21
25425: PUSH
25426: LD_INT 3
25428: PUSH
25429: EMPTY
25430: LIST
25431: LIST
25432: PUSH
25433: EMPTY
25434: LIST
25435: LIST
25436: PPUSH
25437: CALL_OW 69
25441: NOT
25442: IFFALSE 25466
// begin CenterOnXY ( 78 , 40 ) ;
25444: LD_INT 78
25446: PPUSH
25447: LD_INT 40
25449: PPUSH
25450: CALL_OW 84
// Say ( vsevolod , D2vse-0-2 ) ;
25454: LD_EXP 1
25458: PPUSH
25459: LD_STRING D2vse-0-2
25461: PPUSH
25462: CALL_OW 88
// end ; end ;
25466: END
// function VirusDialog ; var doktor ; begin
25467: LD_INT 0
25469: PPUSH
25470: PPUSH
// if not buildingtalk then
25471: LD_LOC 5
25475: NOT
25476: IFFALSE 25557
// begin buildingtalk = true ;
25478: LD_ADDR_LOC 5
25482: PUSH
25483: LD_INT 1
25485: ST_TO_ADDR
// doktor = NajdiVedce ;
25486: LD_ADDR_VAR 0 2
25490: PUSH
25491: CALL 12714 0 0
25495: ST_TO_ADDR
// SetTech ( tech_virus , you , state_enabled ) ;
25496: LD_INT 33
25498: PPUSH
25499: LD_EXP 21
25503: PPUSH
25504: LD_INT 1
25506: PPUSH
25507: CALL_OW 322
// Say ( doktor , D2sci-1 ) ;
25511: LD_VAR 0 2
25515: PPUSH
25516: LD_STRING D2sci-1
25518: PPUSH
25519: CALL_OW 88
// Say ( vsevolod , D2vse-1 ) ;
25523: LD_EXP 1
25527: PPUSH
25528: LD_STRING D2vse-1
25530: PPUSH
25531: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
25535: LD_INT 7
25537: PPUSH
25538: CALL_OW 67
// ChangeMissionObjectives ( M02 ) ;
25542: LD_STRING M02
25544: PPUSH
25545: CALL_OW 337
// buildtalk2 = true ;
25549: LD_ADDR_EXP 18
25553: PUSH
25554: LD_INT 1
25556: ST_TO_ADDR
// end ; end ;
25557: LD_VAR 0 1
25561: RET
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] , [ f_control , control_computer ] ] ) do var hacker ;
25562: LD_INT 22
25564: PUSH
25565: LD_EXP 21
25569: PUSH
25570: EMPTY
25571: LIST
25572: LIST
25573: PUSH
25574: LD_INT 21
25576: PUSH
25577: LD_INT 2
25579: PUSH
25580: EMPTY
25581: LIST
25582: LIST
25583: PUSH
25584: LD_INT 23
25586: PUSH
25587: LD_INT 1
25589: PUSH
25590: EMPTY
25591: LIST
25592: LIST
25593: PUSH
25594: LD_INT 33
25596: PUSH
25597: LD_INT 3
25599: PUSH
25600: EMPTY
25601: LIST
25602: LIST
25603: PUSH
25604: EMPTY
25605: LIST
25606: LIST
25607: LIST
25608: LIST
25609: PPUSH
25610: CALL_OW 69
25614: IFFALSE 25752
25616: GO 25618
25618: DISABLE
25619: LD_INT 0
25621: PPUSH
// begin hackingPerformed = true ;
25622: LD_ADDR_EXP 17
25626: PUSH
25627: LD_INT 1
25629: ST_TO_ADDR
// hacker = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , you ] , [ f_class , class_scientistic ] ] ) , FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] , [ f_control , control_computer ] ] ) [ 1 ] ) ;
25630: LD_ADDR_VAR 0 1
25634: PUSH
25635: LD_INT 22
25637: PUSH
25638: LD_EXP 21
25642: PUSH
25643: EMPTY
25644: LIST
25645: LIST
25646: PUSH
25647: LD_INT 25
25649: PUSH
25650: LD_INT 4
25652: PUSH
25653: EMPTY
25654: LIST
25655: LIST
25656: PUSH
25657: EMPTY
25658: LIST
25659: LIST
25660: PPUSH
25661: CALL_OW 69
25665: PPUSH
25666: LD_INT 22
25668: PUSH
25669: LD_EXP 21
25673: PUSH
25674: EMPTY
25675: LIST
25676: LIST
25677: PUSH
25678: LD_INT 21
25680: PUSH
25681: LD_INT 2
25683: PUSH
25684: EMPTY
25685: LIST
25686: LIST
25687: PUSH
25688: LD_INT 23
25690: PUSH
25691: LD_INT 1
25693: PUSH
25694: EMPTY
25695: LIST
25696: LIST
25697: PUSH
25698: LD_INT 33
25700: PUSH
25701: LD_INT 3
25703: PUSH
25704: EMPTY
25705: LIST
25706: LIST
25707: PUSH
25708: EMPTY
25709: LIST
25710: LIST
25711: LIST
25712: LIST
25713: PPUSH
25714: CALL_OW 69
25718: PUSH
25719: LD_INT 1
25721: ARRAY
25722: PPUSH
25723: CALL_OW 74
25727: ST_TO_ADDR
// Say ( hacker , D2sci-4 ) ;
25728: LD_VAR 0 1
25732: PPUSH
25733: LD_STRING D2sci-4
25735: PPUSH
25736: CALL_OW 88
// Say ( vsevolod , D2vse-4 ) ;
25740: LD_EXP 1
25744: PPUSH
25745: LD_STRING D2vse-4
25747: PPUSH
25748: CALL_OW 88
// end ;
25752: PPOPN 1
25754: END
// every 0 0$1 trigger See ( you , forest_dul ) and not wasDialogOMiste and not AlianceSAraby do var sci , del ;
25755: LD_EXP 21
25759: PPUSH
25760: LD_INT 89
25762: PPUSH
25763: CALL_OW 292
25767: PUSH
25768: LD_EXP 32
25772: NOT
25773: AND
25774: PUSH
25775: CALL 2247 0 0
25779: NOT
25780: AND
25781: IFFALSE 25882
25783: GO 25785
25785: DISABLE
25786: LD_INT 0
25788: PPUSH
25789: PPUSH
// begin CenterNowOnUnits ( forest_dul ) ;
25790: LD_INT 89
25792: PPUSH
25793: CALL_OW 87
// DialogueOn ;
25797: CALL_OW 6
// sci = NajdiVedce ;
25801: LD_ADDR_VAR 0 1
25805: PUSH
25806: CALL 12714 0 0
25810: ST_TO_ADDR
// del = NajdiDelnika ;
25811: LD_ADDR_VAR 0 2
25815: PUSH
25816: CALL 13166 0 0
25820: ST_TO_ADDR
// Say ( sci , D2nekdo-1 ) ;
25821: LD_VAR 0 1
25825: PPUSH
25826: LD_STRING D2nekdo-1
25828: PPUSH
25829: CALL_OW 88
// if IsPlaced ( kvantovy ) then
25833: LD_EXP 12
25837: PPUSH
25838: CALL_OW 305
25842: IFFALSE 25858
// Say ( kvantovy , D2kvant-1 ) else
25844: LD_EXP 12
25848: PPUSH
25849: LD_STRING D2kvant-1
25851: PPUSH
25852: CALL_OW 88
25856: GO 25870
// Say ( del , D2kvant-1 ) ;
25858: LD_VAR 0 2
25862: PPUSH
25863: LD_STRING D2kvant-1
25865: PPUSH
25866: CALL_OW 88
// DialogueOff ;
25870: CALL_OW 7
// wasDialogOMiste = true ;
25874: LD_ADDR_EXP 32
25878: PUSH
25879: LD_INT 1
25881: ST_TO_ADDR
// end ;
25882: PPOPN 2
25884: END
// every 0 0$1 trigger GetResourceVisibility ( 82 , 23 , you ) and not wasDialogOMiste and not AlianceSAraby do var sci , mech ;
25885: LD_INT 82
25887: PPUSH
25888: LD_INT 23
25890: PPUSH
25891: LD_EXP 21
25895: PPUSH
25896: CALL_OW 440
25900: PUSH
25901: LD_EXP 32
25905: NOT
25906: AND
25907: PUSH
25908: CALL 2247 0 0
25912: NOT
25913: AND
25914: IFFALSE 25993
25916: GO 25918
25918: DISABLE
25919: LD_INT 0
25921: PPUSH
25922: PPUSH
// begin CenterNowOnXY ( 81 , 26 ) ;
25923: LD_INT 81
25925: PPUSH
25926: LD_INT 26
25928: PPUSH
25929: CALL_OW 86
// DialogueOn ;
25933: CALL_OW 6
// sci = NajdiVedce ;
25937: LD_ADDR_VAR 0 1
25941: PUSH
25942: CALL 12714 0 0
25946: ST_TO_ADDR
// mech = NajdiMechanika ;
25947: LD_ADDR_VAR 0 2
25951: PUSH
25952: CALL 12940 0 0
25956: ST_TO_ADDR
// Say ( sci , D2nekdo-2 ) ;
25957: LD_VAR 0 1
25961: PPUSH
25962: LD_STRING D2nekdo-2
25964: PPUSH
25965: CALL_OW 88
// Say ( vsevolod , D2nekdo-3 ) ;
25969: LD_EXP 1
25973: PPUSH
25974: LD_STRING D2nekdo-3
25976: PPUSH
25977: CALL_OW 88
// DialogueOff ;
25981: CALL_OW 7
// wasDialogOMiste = true ;
25985: LD_ADDR_EXP 32
25989: PUSH
25990: LD_INT 1
25992: ST_TO_ADDR
// end ;
25993: PPOPN 2
25995: END
// export function RichardDialog ( ) ; var i , un ; begin
25996: LD_INT 0
25998: PPUSH
25999: PPUSH
26000: PPUSH
// if not richard_saved then
26001: LD_EXP 40
26005: NOT
26006: IFFALSE 26010
// exit ;
26008: GO 26325
// if SideDead ( amik ) and SideDead ( purple ) then
26010: LD_EXP 24
26014: PPUSH
26015: CALL 2293 0 1
26019: PUSH
26020: LD_EXP 22
26024: PPUSH
26025: CALL 2293 0 1
26029: AND
26030: IFFALSE 26034
// exit ;
26032: GO 26325
// wasRichardDialog = true ;
26034: LD_ADDR_EXP 31
26038: PUSH
26039: LD_INT 1
26041: ST_TO_ADDR
// DialogueOn ;
26042: CALL_OW 6
// Say ( richard , D2richard ) ;
26046: LD_EXP 9
26050: PPUSH
26051: LD_STRING D2richard
26053: PPUSH
26054: CALL_OW 88
// Say ( vsevolod , D2vse-5 ) ;
26058: LD_EXP 1
26062: PPUSH
26063: LD_STRING D2vse-5
26065: PPUSH
26066: CALL_OW 88
// Say ( richard , D2richard-2 ) ;
26070: LD_EXP 9
26074: PPUSH
26075: LD_STRING D2richard-2
26077: PPUSH
26078: CALL_OW 88
// Say ( vsevolod , D2vse-6 ) ;
26082: LD_EXP 1
26086: PPUSH
26087: LD_STRING D2vse-6
26089: PPUSH
26090: CALL_OW 88
// Say ( richard , D2richard-3 ) ;
26094: LD_EXP 9
26098: PPUSH
26099: LD_STRING D2richard-3
26101: PPUSH
26102: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
26106: LD_INT 7
26108: PPUSH
26109: CALL_OW 67
// case Query ( richardquery ) of 1 :
26113: LD_STRING richardquery
26115: PPUSH
26116: CALL_OW 97
26120: PUSH
26121: LD_INT 1
26123: DOUBLE
26124: EQUAL
26125: IFTRUE 26129
26127: GO 26160
26129: POP
// begin Say ( vsevolod , D2vse-7 ) ;
26130: LD_EXP 1
26134: PPUSH
26135: LD_STRING D2vse-7
26137: PPUSH
26138: CALL_OW 88
// Say ( richard , D2richard-4 ) ;
26142: LD_EXP 9
26146: PPUSH
26147: LD_STRING D2richard-4
26149: PPUSH
26150: CALL_OW 88
// MakeAliance ;
26154: CALL 26401 0 0
// end ; 2 :
26158: GO 26321
26160: LD_INT 2
26162: DOUBLE
26163: EQUAL
26164: IFTRUE 26168
26166: GO 26195
26168: POP
// begin Say ( vsevolod , D2vse-8 ) ;
26169: LD_EXP 1
26173: PPUSH
26174: LD_STRING D2vse-8
26176: PPUSH
26177: CALL_OW 88
// Say ( richard , D2richard-5 ) ;
26181: LD_EXP 9
26185: PPUSH
26186: LD_STRING D2richard-5
26188: PPUSH
26189: CALL_OW 88
// end ; 3 :
26193: GO 26321
26195: LD_INT 3
26197: DOUBLE
26198: EQUAL
26199: IFTRUE 26203
26201: GO 26320
26203: POP
// begin Say ( vsevolod , D2vse-8-2 ) ;
26204: LD_EXP 1
26208: PPUSH
26209: LD_STRING D2vse-8-2
26211: PPUSH
26212: CALL_OW 88
// SayRadio ( platonov , D2plat-2-2 ) ;
26216: LD_EXP 13
26220: PPUSH
26221: LD_STRING D2plat-2-2
26223: PPUSH
26224: CALL_OW 94
// Wait ( 0 0$0.2 ) ;
26228: LD_INT 7
26230: PPUSH
26231: CALL_OW 67
// case Query ( richardqueryagain ) of 1 :
26235: LD_STRING richardqueryagain
26237: PPUSH
26238: CALL_OW 97
26242: PUSH
26243: LD_INT 1
26245: DOUBLE
26246: EQUAL
26247: IFTRUE 26251
26249: GO 26282
26251: POP
// begin Say ( vsevolod , D2vse-8-3 ) ;
26252: LD_EXP 1
26256: PPUSH
26257: LD_STRING D2vse-8-3
26259: PPUSH
26260: CALL_OW 88
// Say ( richard , D2richard-4 ) ;
26264: LD_EXP 9
26268: PPUSH
26269: LD_STRING D2richard-4
26271: PPUSH
26272: CALL_OW 88
// MakeAliance ;
26276: CALL 26401 0 0
// end ; 2 :
26280: GO 26318
26282: LD_INT 2
26284: DOUBLE
26285: EQUAL
26286: IFTRUE 26290
26288: GO 26317
26290: POP
// begin Say ( vsevolod , D2vse-8-4 ) ;
26291: LD_EXP 1
26295: PPUSH
26296: LD_STRING D2vse-8-4
26298: PPUSH
26299: CALL_OW 88
// Say ( richard , D2richard-5 ) ;
26303: LD_EXP 9
26307: PPUSH
26308: LD_STRING D2richard-5
26310: PPUSH
26311: CALL_OW 88
// end ; end ;
26315: GO 26318
26317: POP
// end ; end ;
26318: GO 26321
26320: POP
// DialogueOff ;
26321: CALL_OW 7
// end ;
26325: LD_VAR 0 1
26329: RET
// export function DieDialog ( ) ; var i , un ; begin
26330: LD_INT 0
26332: PPUSH
26333: PPUSH
26334: PPUSH
// if not richard_saved then
26335: LD_EXP 40
26339: NOT
26340: IFFALSE 26344
// exit ;
26342: GO 26396
// wasRichardDialog = true ;
26344: LD_ADDR_EXP 31
26348: PUSH
26349: LD_INT 1
26351: ST_TO_ADDR
// DialogueOn ;
26352: CALL_OW 6
// Say ( vsevolod , D2vse-14 ) ;
26356: LD_EXP 1
26360: PPUSH
26361: LD_STRING D2vse-14
26363: PPUSH
26364: CALL_OW 88
// Say ( richard , D2richard-6 ) ;
26368: LD_EXP 9
26372: PPUSH
26373: LD_STRING D2richard-6
26375: PPUSH
26376: CALL_OW 88
// Say ( vsevolod , D2vse-15 ) ;
26380: LD_EXP 1
26384: PPUSH
26385: LD_STRING D2vse-15
26387: PPUSH
26388: CALL_OW 88
// DialogueOff ;
26392: CALL_OW 7
// end ;
26396: LD_VAR 0 1
26400: RET
// function makeAliance ( ) ; var un , i , del , ved ; begin
26401: LD_INT 0
26403: PPUSH
26404: PPUSH
26405: PPUSH
26406: PPUSH
26407: PPUSH
// SetAttitude ( you , arab , att_friend , true ) ;
26408: LD_EXP 21
26412: PPUSH
26413: LD_EXP 23
26417: PPUSH
26418: LD_INT 1
26420: PPUSH
26421: LD_INT 1
26423: PPUSH
26424: CALL_OW 80
// ChangeSideFog ( arab , you ) ;
26428: LD_EXP 23
26432: PPUSH
26433: LD_EXP 21
26437: PPUSH
26438: CALL_OW 343
// ViewMineAtPos ( 117 , 63 , you ) ;
26442: LD_INT 117
26444: PPUSH
26445: LD_INT 63
26447: PPUSH
26448: LD_EXP 21
26452: PPUSH
26453: CALL_OW 457
// del = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_class , 2 ] ] ) + 0 ;
26457: LD_ADDR_VAR 0 4
26461: PUSH
26462: LD_INT 52
26464: PUSH
26465: EMPTY
26466: LIST
26467: PUSH
26468: LD_INT 22
26470: PUSH
26471: LD_EXP 23
26475: PUSH
26476: EMPTY
26477: LIST
26478: LIST
26479: PUSH
26480: LD_INT 25
26482: PUSH
26483: LD_INT 2
26485: PUSH
26486: EMPTY
26487: LIST
26488: LIST
26489: PUSH
26490: EMPTY
26491: LIST
26492: LIST
26493: LIST
26494: PPUSH
26495: CALL_OW 69
26499: PUSH
26500: LD_INT 0
26502: PLUS
26503: ST_TO_ADDR
// ved = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_class , class_scientistic ] ] ) + 0 ;
26504: LD_ADDR_VAR 0 5
26508: PUSH
26509: LD_INT 52
26511: PUSH
26512: EMPTY
26513: LIST
26514: PUSH
26515: LD_INT 22
26517: PUSH
26518: LD_EXP 23
26522: PUSH
26523: EMPTY
26524: LIST
26525: LIST
26526: PUSH
26527: LD_INT 25
26529: PUSH
26530: LD_INT 4
26532: PUSH
26533: EMPTY
26534: LIST
26535: LIST
26536: PUSH
26537: EMPTY
26538: LIST
26539: LIST
26540: LIST
26541: PPUSH
26542: CALL_OW 69
26546: PUSH
26547: LD_INT 0
26549: PLUS
26550: ST_TO_ADDR
// if ved < 3 then
26551: LD_VAR 0 5
26555: PUSH
26556: LD_INT 3
26558: LESS
26559: IFFALSE 26732
// begin for i = 1 to 5 - ved do
26561: LD_ADDR_VAR 0 3
26565: PUSH
26566: DOUBLE
26567: LD_INT 1
26569: DEC
26570: ST_TO_ADDR
26571: LD_INT 5
26573: PUSH
26574: LD_VAR 0 5
26578: MINUS
26579: PUSH
26580: FOR_TO
26581: IFFALSE 26730
// begin uc_side = arab ;
26583: LD_ADDR_OWVAR 20
26587: PUSH
26588: LD_EXP 23
26592: ST_TO_ADDR
// uc_nation = nation_arabian ;
26593: LD_ADDR_OWVAR 21
26597: PUSH
26598: LD_INT 2
26600: ST_TO_ADDR
// hc_attr = [ 10 , 11 ] ;
26601: LD_ADDR_OWVAR 29
26605: PUSH
26606: LD_INT 10
26608: PUSH
26609: LD_INT 11
26611: PUSH
26612: EMPTY
26613: LIST
26614: LIST
26615: ST_TO_ADDR
// hc_class = 4 ;
26616: LD_ADDR_OWVAR 28
26620: PUSH
26621: LD_INT 4
26623: ST_TO_ADDR
// hc_importance = 10 ;
26624: LD_ADDR_OWVAR 32
26628: PUSH
26629: LD_INT 10
26631: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
26632: LD_ADDR_OWVAR 27
26636: PUSH
26637: LD_INT 1
26639: PPUSH
26640: LD_INT 2
26642: PPUSH
26643: CALL_OW 12
26647: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 4 , 7 ) ] ;
26648: LD_ADDR_OWVAR 31
26652: PUSH
26653: LD_INT 0
26655: PPUSH
26656: LD_INT 4
26658: PPUSH
26659: CALL_OW 12
26663: PUSH
26664: LD_INT 0
26666: PPUSH
26667: LD_INT 4
26669: PPUSH
26670: CALL_OW 12
26674: PUSH
26675: LD_INT 0
26677: PPUSH
26678: LD_INT 4
26680: PPUSH
26681: CALL_OW 12
26685: PUSH
26686: LD_INT 4
26688: PPUSH
26689: LD_INT 7
26691: PPUSH
26692: CALL_OW 12
26696: PUSH
26697: EMPTY
26698: LIST
26699: LIST
26700: LIST
26701: LIST
26702: ST_TO_ADDR
// un = CreateHuman ;
26703: LD_ADDR_VAR 0 2
26707: PUSH
26708: CALL_OW 44
26712: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
26713: LD_VAR 0 2
26717: PPUSH
26718: LD_INT 33
26720: PPUSH
26721: LD_INT 0
26723: PPUSH
26724: CALL_OW 49
// end ;
26728: GO 26580
26730: POP
26731: POP
// end ; if del <= 3 then
26732: LD_VAR 0 4
26736: PUSH
26737: LD_INT 3
26739: LESSEQUAL
26740: IFFALSE 26913
// begin for i = 1 to 5 - del do
26742: LD_ADDR_VAR 0 3
26746: PUSH
26747: DOUBLE
26748: LD_INT 1
26750: DEC
26751: ST_TO_ADDR
26752: LD_INT 5
26754: PUSH
26755: LD_VAR 0 4
26759: MINUS
26760: PUSH
26761: FOR_TO
26762: IFFALSE 26911
// begin uc_side = arab ;
26764: LD_ADDR_OWVAR 20
26768: PUSH
26769: LD_EXP 23
26773: ST_TO_ADDR
// uc_nation = nation_arabian ;
26774: LD_ADDR_OWVAR 21
26778: PUSH
26779: LD_INT 2
26781: ST_TO_ADDR
// hc_attr = [ 10 , 11 ] ;
26782: LD_ADDR_OWVAR 29
26786: PUSH
26787: LD_INT 10
26789: PUSH
26790: LD_INT 11
26792: PUSH
26793: EMPTY
26794: LIST
26795: LIST
26796: ST_TO_ADDR
// hc_class = class_engineer ;
26797: LD_ADDR_OWVAR 28
26801: PUSH
26802: LD_INT 2
26804: ST_TO_ADDR
// hc_importance = 10 ;
26805: LD_ADDR_OWVAR 32
26809: PUSH
26810: LD_INT 10
26812: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
26813: LD_ADDR_OWVAR 27
26817: PUSH
26818: LD_INT 1
26820: PPUSH
26821: LD_INT 2
26823: PPUSH
26824: CALL_OW 12
26828: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 4 , 7 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
26829: LD_ADDR_OWVAR 31
26833: PUSH
26834: LD_INT 0
26836: PPUSH
26837: LD_INT 4
26839: PPUSH
26840: CALL_OW 12
26844: PUSH
26845: LD_INT 4
26847: PPUSH
26848: LD_INT 7
26850: PPUSH
26851: CALL_OW 12
26855: PUSH
26856: LD_INT 0
26858: PPUSH
26859: LD_INT 4
26861: PPUSH
26862: CALL_OW 12
26866: PUSH
26867: LD_INT 0
26869: PPUSH
26870: LD_INT 4
26872: PPUSH
26873: CALL_OW 12
26877: PUSH
26878: EMPTY
26879: LIST
26880: LIST
26881: LIST
26882: LIST
26883: ST_TO_ADDR
// un = CreateHuman ;
26884: LD_ADDR_VAR 0 2
26888: PUSH
26889: CALL_OW 44
26893: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
26894: LD_VAR 0 2
26898: PPUSH
26899: LD_INT 33
26901: PPUSH
26902: LD_INT 0
26904: PPUSH
26905: CALL_OW 49
// end ;
26909: GO 26761
26911: POP
26912: POP
// end ; for i in arab_attack_list do
26913: LD_ADDR_VAR 0 3
26917: PUSH
26918: LD_EXP 28
26922: PUSH
26923: FOR_IN
26924: IFFALSE 26937
// ComStop ( i ) ;
26926: LD_VAR 0 3
26930: PPUSH
26931: CALL_OW 141
26935: GO 26923
26937: POP
26938: POP
// dif_arab_vyroba_utok_wait = 6 6$00 ;
26939: LD_ADDR_EXP 70
26943: PUSH
26944: LD_INT 12600
26946: ST_TO_ADDR
// dif_auto_vyroba_sance = [ 10 , 30 , 50 , 85 ] ;
26947: LD_ADDR_EXP 74
26951: PUSH
26952: LD_INT 10
26954: PUSH
26955: LD_INT 30
26957: PUSH
26958: LD_INT 50
26960: PUSH
26961: LD_INT 85
26963: PUSH
26964: EMPTY
26965: LIST
26966: LIST
26967: LIST
26968: LIST
26969: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , arab ] , [ f_placed ] ] ) do
26970: LD_ADDR_VAR 0 3
26974: PUSH
26975: LD_INT 22
26977: PUSH
26978: LD_EXP 23
26982: PUSH
26983: EMPTY
26984: LIST
26985: LIST
26986: PUSH
26987: LD_INT 52
26989: PUSH
26990: EMPTY
26991: LIST
26992: PUSH
26993: EMPTY
26994: LIST
26995: LIST
26996: PPUSH
26997: CALL_OW 69
27001: PUSH
27002: FOR_IN
27003: IFFALSE 27021
// NormalAttack ( you , i ) ;
27005: LD_EXP 21
27009: PPUSH
27010: LD_VAR 0 3
27014: PPUSH
27015: CALL_OW 472
27019: GO 27002
27021: POP
27022: POP
// if IsOk ( ar_lab2 ) and not GetTech ( tech_opto3 , arab ) = state_researched then
27023: LD_INT 100
27025: PPUSH
27026: CALL_OW 302
27030: PUSH
27031: LD_INT 62
27033: PPUSH
27034: LD_EXP 23
27038: PPUSH
27039: CALL_OW 321
27043: PUSH
27044: LD_INT 2
27046: EQUAL
27047: NOT
27048: AND
27049: IFFALSE 27120
// begin if GetSide ( ar_lab2 ) = arab and UnitsInside ( ar_lab2 ) = 0 then
27051: LD_INT 100
27053: PPUSH
27054: CALL_OW 255
27058: PUSH
27059: LD_EXP 23
27063: EQUAL
27064: PUSH
27065: LD_INT 100
27067: PPUSH
27068: CALL_OW 313
27072: PUSH
27073: LD_INT 0
27075: EQUAL
27076: AND
27077: IFFALSE 27120
// PlaceHumanInUnit ( VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( ar_lab2 ) , GetSide ( ar_lab2 ) ) , ar_lab2 ) ;
27079: LD_INT 4
27081: PPUSH
27082: LD_EXP 64
27086: PPUSH
27087: LD_EXP 65
27091: PPUSH
27092: LD_INT 100
27094: PPUSH
27095: CALL_OW 248
27099: PPUSH
27100: LD_INT 100
27102: PPUSH
27103: CALL_OW 255
27107: PPUSH
27108: CALL 2566 0 5
27112: PPUSH
27113: LD_INT 100
27115: PPUSH
27116: CALL_OW 52
// end ; if IsInUnit ( richard ) then
27120: LD_EXP 9
27124: PPUSH
27125: CALL_OW 310
27129: IFFALSE 27140
// ComExitBuilding ( richard ) ;
27131: LD_EXP 9
27135: PPUSH
27136: CALL_OW 122
// end ;
27140: LD_VAR 0 1
27144: RET
// every 0 0$2 trigger startAttackCountdown and buildtalk2 do
27145: LD_EXP 33
27149: PUSH
27150: LD_EXP 18
27154: AND
27155: IFFALSE 27538
27157: GO 27159
27159: DISABLE
// begin Wait ( Rand ( 0 0$30 , 0 0$45 ) ) ;
27160: LD_INT 1050
27162: PPUSH
27163: LD_INT 1575
27165: PPUSH
27166: CALL_OW 12
27170: PPUSH
27171: CALL_OW 67
// DialogueOn ;
27175: CALL_OW 6
// SayRadio ( platonov , D2plat-1-2 ) ;
27179: LD_EXP 13
27183: PPUSH
27184: LD_STRING D2plat-1-2
27186: PPUSH
27187: CALL_OW 94
// if videlNepritele then
27191: LD_EXP 34
27195: IFFALSE 27211
// Say ( vsevolod , D2vse-10 ) else
27197: LD_EXP 1
27201: PPUSH
27202: LD_STRING D2vse-10
27204: PPUSH
27205: CALL_OW 88
27209: GO 27223
// Say ( vsevolod , D2vse-9 ) ;
27211: LD_EXP 1
27215: PPUSH
27216: LD_STRING D2vse-9
27218: PPUSH
27219: CALL_OW 88
// SayRadio ( platonov , D2plat-2 ) ;
27223: LD_EXP 13
27227: PPUSH
27228: LD_STRING D2plat-2
27230: PPUSH
27231: CALL_OW 94
// if IsOk ( karamazov ) and IsPlaced ( karamazov ) then
27235: LD_EXP 5
27239: PPUSH
27240: CALL_OW 302
27244: PUSH
27245: LD_EXP 5
27249: PPUSH
27250: CALL_OW 305
27254: AND
27255: IFFALSE 27271
// Say ( karamazov , D2-karam-1 ) else
27257: LD_EXP 5
27261: PPUSH
27262: LD_STRING D2-karam-1
27264: PPUSH
27265: CALL_OW 88
27269: GO 27283
// Say ( NajdiDelnika , D2-karam-1 ) ;
27271: CALL 13166 0 0
27275: PPUSH
27276: LD_STRING D2-karam-1
27278: PPUSH
27279: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
27283: LD_INT 7
27285: PPUSH
27286: CALL_OW 67
// case Query ( materialquery ) of 1 :
27290: LD_STRING materialquery
27292: PPUSH
27293: CALL_OW 97
27297: PUSH
27298: LD_INT 1
27300: DOUBLE
27301: EQUAL
27302: IFTRUE 27306
27304: GO 27354
27306: POP
// begin Say ( vsevolod , D2vse-11 ) ;
27307: LD_EXP 1
27311: PPUSH
27312: LD_STRING D2vse-11
27314: PPUSH
27315: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27319: LD_EXP 13
27323: PPUSH
27324: LD_STRING D2plat-3
27326: PPUSH
27327: CALL_OW 94
// potrebovalMaterial = true ;
27331: LD_ADDR_EXP 35
27335: PUSH
27336: LD_INT 1
27338: ST_TO_ADDR
// SetCargo ( platCargo , mat_cans , 100 ) ;
27339: LD_INT 106
27341: PPUSH
27342: LD_INT 1
27344: PPUSH
27345: LD_INT 100
27347: PPUSH
27348: CALL_OW 290
// end ; 2 :
27352: GO 27503
27354: LD_INT 2
27356: DOUBLE
27357: EQUAL
27358: IFTRUE 27362
27360: GO 27410
27362: POP
// begin Say ( vsevolod , D2vse-12 ) ;
27363: LD_EXP 1
27367: PPUSH
27368: LD_STRING D2vse-12
27370: PPUSH
27371: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27375: LD_EXP 13
27379: PPUSH
27380: LD_STRING D2plat-3
27382: PPUSH
27383: CALL_OW 94
// potrebovalMaterial = true ;
27387: LD_ADDR_EXP 35
27391: PUSH
27392: LD_INT 1
27394: ST_TO_ADDR
// SetCargo ( platCargo , mat_oil , 100 ) ;
27395: LD_INT 106
27397: PPUSH
27398: LD_INT 2
27400: PPUSH
27401: LD_INT 100
27403: PPUSH
27404: CALL_OW 290
// end ; 3 :
27408: GO 27503
27410: LD_INT 3
27412: DOUBLE
27413: EQUAL
27414: IFTRUE 27418
27416: GO 27479
27418: POP
// begin Say ( vsevolod , D2vse-13 ) ;
27419: LD_EXP 1
27423: PPUSH
27424: LD_STRING D2vse-13
27426: PPUSH
27427: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27431: LD_EXP 13
27435: PPUSH
27436: LD_STRING D2plat-3
27438: PPUSH
27439: CALL_OW 94
// potrebovalMaterial = true ;
27443: LD_ADDR_EXP 35
27447: PUSH
27448: LD_INT 1
27450: ST_TO_ADDR
// SetCargo ( platCargo , mat_siberit , 60 ) ;
27451: LD_INT 106
27453: PPUSH
27454: LD_INT 3
27456: PPUSH
27457: LD_INT 60
27459: PPUSH
27460: CALL_OW 290
// AddCargo ( platCargo , mat_cans , 40 ) ;
27464: LD_INT 106
27466: PPUSH
27467: LD_INT 1
27469: PPUSH
27470: LD_INT 40
27472: PPUSH
27473: CALL_OW 291
// end ; 4 :
27477: GO 27503
27479: LD_INT 4
27481: DOUBLE
27482: EQUAL
27483: IFTRUE 27487
27485: GO 27502
27487: POP
// begin Say ( vsevolod , D2vse-10-2 ) ;
27488: LD_EXP 1
27492: PPUSH
27493: LD_STRING D2vse-10-2
27495: PPUSH
27496: CALL_OW 88
// end ; end ;
27500: GO 27503
27502: POP
// Wait ( 0 0$0.2 ) ;
27503: LD_INT 7
27505: PPUSH
27506: CALL_OW 67
// DialogueOff ;
27510: CALL_OW 7
// ChangeMissionObjectives ( M05 ) ;
27514: LD_STRING M05
27516: PPUSH
27517: CALL_OW 337
// if potrebovalMaterial then
27521: LD_EXP 35
27525: IFFALSE 27538
// begin Wait ( 0 0$50 ) ;
27527: LD_INT 1750
27529: PPUSH
27530: CALL_OW 67
// placePlatonovCargo ( ) ;
27534: CALL 31170 0 0
// end ; end ;
27538: END
// export bylVAmBazi ; every 0 0$1 trigger FilterAllUnits ( [ [ f_inarea , AmikBazaDetect ] , [ f_side , you ] ] ) do
27539: LD_INT 95
27541: PUSH
27542: LD_INT 44
27544: PUSH
27545: EMPTY
27546: LIST
27547: LIST
27548: PUSH
27549: LD_INT 22
27551: PUSH
27552: LD_EXP 21
27556: PUSH
27557: EMPTY
27558: LIST
27559: LIST
27560: PUSH
27561: EMPTY
27562: LIST
27563: LIST
27564: PPUSH
27565: CALL_OW 69
27569: IFFALSE 27582
27571: GO 27573
27573: DISABLE
// begin bylVAmBazi = true ;
27574: LD_ADDR_EXP 83
27578: PUSH
27579: LD_INT 1
27581: ST_TO_ADDR
// end ;
27582: END
// every 0 0$1 trigger SeeXY ( you , 245 , 111 ) and not bylVAmBazi do
27583: LD_EXP 21
27587: PPUSH
27588: LD_INT 245
27590: PPUSH
27591: LD_INT 111
27593: PPUSH
27594: CALL_OW 293
27598: PUSH
27599: LD_EXP 83
27603: NOT
27604: AND
27605: IFFALSE 27718
27607: GO 27609
27609: DISABLE
// begin Say ( NearestUnitToXY ( FilterAllUnits ( [ [ f_side , you ] , [ f_nation , nation_russian ] , [ f_type , unit_human ] ] ) , 245 , 111 ) , D2nekdo-4 ) ;
27610: LD_INT 22
27612: PUSH
27613: LD_EXP 21
27617: PUSH
27618: EMPTY
27619: LIST
27620: LIST
27621: PUSH
27622: LD_INT 23
27624: PUSH
27625: LD_INT 3
27627: PUSH
27628: EMPTY
27629: LIST
27630: LIST
27631: PUSH
27632: LD_INT 21
27634: PUSH
27635: LD_INT 1
27637: PUSH
27638: EMPTY
27639: LIST
27640: LIST
27641: PUSH
27642: EMPTY
27643: LIST
27644: LIST
27645: LIST
27646: PPUSH
27647: CALL_OW 69
27651: PPUSH
27652: LD_INT 245
27654: PPUSH
27655: LD_INT 111
27657: PPUSH
27658: CALL_OW 73
27662: PPUSH
27663: LD_STRING D2nekdo-4
27665: PPUSH
27666: CALL_OW 88
// if IsOk ( Kvantovy ) and IsPlaced ( Kvantovy ) then
27670: LD_EXP 12
27674: PPUSH
27675: CALL_OW 302
27679: PUSH
27680: LD_EXP 12
27684: PPUSH
27685: CALL_OW 305
27689: AND
27690: IFFALSE 27706
// Say ( kvantovy , D2kvant-2 ) else
27692: LD_EXP 12
27696: PPUSH
27697: LD_STRING D2kvant-2
27699: PPUSH
27700: CALL_OW 88
27704: GO 27718
// Say ( NajdiVojaka , D2kvant-2 ) ;
27706: CALL 12452 0 0
27710: PPUSH
27711: LD_STRING D2kvant-2
27713: PPUSH
27714: CALL_OW 88
// end ;
27718: END
// every 0 0$1 trigger AlianceSAraby do var solBlue , solPurple ;
27719: CALL 2247 0 0
27723: IFFALSE 27883
27725: GO 27727
27727: DISABLE
27728: LD_INT 0
27730: PPUSH
27731: PPUSH
// begin Wait ( 3 3$00 ) ;
27732: LD_INT 6300
27734: PPUSH
27735: CALL_OW 67
// if AlianceSAraby then
27739: CALL 2247 0 0
27743: IFFALSE 27883
// begin solBlue = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_human ] , [ f_class , class_soldier ] ] ) ;
27745: LD_ADDR_VAR 0 1
27749: PUSH
27750: LD_INT 22
27752: PUSH
27753: LD_EXP 24
27757: PUSH
27758: EMPTY
27759: LIST
27760: LIST
27761: PUSH
27762: LD_INT 21
27764: PUSH
27765: LD_INT 1
27767: PUSH
27768: EMPTY
27769: LIST
27770: LIST
27771: PUSH
27772: LD_INT 25
27774: PUSH
27775: LD_INT 1
27777: PUSH
27778: EMPTY
27779: LIST
27780: LIST
27781: PUSH
27782: EMPTY
27783: LIST
27784: LIST
27785: LIST
27786: PPUSH
27787: CALL_OW 69
27791: ST_TO_ADDR
// solPurple = FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_human ] , [ f_class , class_soldier ] ] ) ;
27792: LD_ADDR_VAR 0 2
27796: PUSH
27797: LD_INT 22
27799: PUSH
27800: LD_EXP 22
27804: PUSH
27805: EMPTY
27806: LIST
27807: LIST
27808: PUSH
27809: LD_INT 21
27811: PUSH
27812: LD_INT 1
27814: PUSH
27815: EMPTY
27816: LIST
27817: LIST
27818: PUSH
27819: LD_INT 25
27821: PUSH
27822: LD_INT 1
27824: PUSH
27825: EMPTY
27826: LIST
27827: LIST
27828: PUSH
27829: EMPTY
27830: LIST
27831: LIST
27832: LIST
27833: PPUSH
27834: CALL_OW 69
27838: ST_TO_ADDR
// if solBlue and solPurple then
27839: LD_VAR 0 1
27843: PUSH
27844: LD_VAR 0 2
27848: AND
27849: IFFALSE 27883
// begin SayRadio ( solPurple [ 1 ] , D2amik-1 ) ;
27851: LD_VAR 0 2
27855: PUSH
27856: LD_INT 1
27858: ARRAY
27859: PPUSH
27860: LD_STRING D2amik-1
27862: PPUSH
27863: CALL_OW 94
// SayRadio ( solBlue [ 1 ] , D2amik-2 ) ;
27867: LD_VAR 0 1
27871: PUSH
27872: LD_INT 1
27874: ARRAY
27875: PPUSH
27876: LD_STRING D2amik-2
27878: PPUSH
27879: CALL_OW 94
// end ; end ; end ;
27883: PPOPN 2
27885: END
// export wasBehemotBuildTalk ; export function BehemotBuildTalk ; begin
27886: LD_INT 0
27888: PPUSH
// if not wasBehemotBuildTalk then
27889: LD_EXP 84
27893: NOT
27894: IFFALSE 27936
// begin wasBehemotBuildTalk = true ;
27896: LD_ADDR_EXP 84
27900: PUSH
27901: LD_INT 1
27903: ST_TO_ADDR
// DialogueOn ;
27904: CALL_OW 6
// Say ( NajdiDelnika , D2nekdo-8 ) ;
27908: CALL 13166 0 0
27912: PPUSH
27913: LD_STRING D2nekdo-8
27915: PPUSH
27916: CALL_OW 88
// Say ( vsevolod , D2vse-17 ) ;
27920: LD_EXP 1
27924: PPUSH
27925: LD_STRING D2vse-17
27927: PPUSH
27928: CALL_OW 88
// DialogueOff ;
27932: CALL_OW 7
// end ; end ; end_of_file
27936: LD_VAR 0 1
27940: RET
// export ar_vznasedlo , ar_miner ; var readyToSneak ; var sneakType ; var checkpoint ; every 0 0$1 do
27941: GO 27943
27943: DISABLE
// begin readyToSneak = false ;
27944: LD_ADDR_LOC 6
27948: PUSH
27949: LD_INT 0
27951: ST_TO_ADDR
// checkpoint = false ;
27952: LD_ADDR_LOC 8
27956: PUSH
27957: LD_INT 0
27959: ST_TO_ADDR
// end ;
27960: END
// every 0 0$10 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) do
27961: LD_INT 22
27963: PUSH
27964: LD_EXP 21
27968: PUSH
27969: EMPTY
27970: LIST
27971: LIST
27972: PUSH
27973: LD_INT 21
27975: PUSH
27976: LD_INT 3
27978: PUSH
27979: EMPTY
27980: LIST
27981: LIST
27982: PUSH
27983: EMPTY
27984: LIST
27985: LIST
27986: PPUSH
27987: CALL_OW 69
27991: IFFALSE 28014
27993: GO 27995
27995: DISABLE
// begin Wait ( 3 3$50 ) ;
27996: LD_INT 8050
27998: PPUSH
27999: CALL_OW 67
// if not AlianceSAraby then
28003: CALL 2247 0 0
28007: NOT
28008: IFFALSE 28014
// StartArMiner ( ) ;
28010: CALL 28015 0 0
// end ;
28014: END
// function StartArMiner ( ) ; var r ; begin
28015: LD_INT 0
28017: PPUSH
28018: PPUSH
// uc_side = arab ;
28019: LD_ADDR_OWVAR 20
28023: PUSH
28024: LD_EXP 23
28028: ST_TO_ADDR
// uc_nation = nation_arabian ;
28029: LD_ADDR_OWVAR 21
28033: PUSH
28034: LD_INT 2
28036: ST_TO_ADDR
// vc_chassis = ar_hovercraft ;
28037: LD_ADDR_OWVAR 37
28041: PUSH
28042: LD_INT 11
28044: ST_TO_ADDR
// vc_control = control_manual ;
28045: LD_ADDR_OWVAR 38
28049: PUSH
28050: LD_INT 1
28052: ST_TO_ADDR
// vc_engine = engine_solar ;
28053: LD_ADDR_OWVAR 39
28057: PUSH
28058: LD_INT 2
28060: ST_TO_ADDR
// vc_fuel_battery = 100 ;
28061: LD_ADDR_OWVAR 41
28065: PUSH
28066: LD_INT 100
28068: ST_TO_ADDR
// vc_weapon = ar_radar ;
28069: LD_ADDR_OWVAR 40
28073: PUSH
28074: LD_INT 30
28076: ST_TO_ADDR
// ar_vznasedlo = CreateVehicle ;
28077: LD_ADDR_EXP 85
28081: PUSH
28082: CALL_OW 45
28086: ST_TO_ADDR
// PlaceUnitArea ( ar_vznasedlo , arcarpark , false ) ;
28087: LD_EXP 85
28091: PPUSH
28092: LD_INT 30
28094: PPUSH
28095: LD_INT 0
28097: PPUSH
28098: CALL_OW 49
// uc_side = arab ;
28102: LD_ADDR_OWVAR 20
28106: PUSH
28107: LD_EXP 23
28111: ST_TO_ADDR
// uc_nation = nation_arabian ;
28112: LD_ADDR_OWVAR 21
28116: PUSH
28117: LD_INT 2
28119: ST_TO_ADDR
// hc_attr = [ 11 , 12 ] ;
28120: LD_ADDR_OWVAR 29
28124: PUSH
28125: LD_INT 11
28127: PUSH
28128: LD_INT 12
28130: PUSH
28131: EMPTY
28132: LIST
28133: LIST
28134: ST_TO_ADDR
// hc_class = class_soldier ;
28135: LD_ADDR_OWVAR 28
28139: PUSH
28140: LD_INT 1
28142: ST_TO_ADDR
// hc_sex = sex_male ;
28143: LD_ADDR_OWVAR 27
28147: PUSH
28148: LD_INT 1
28150: ST_TO_ADDR
// hc_gallery := 02 ;
28151: LD_ADDR_OWVAR 33
28155: PUSH
28156: LD_STRING 02
28158: ST_TO_ADDR
// hc_face_number := 2 ;
28159: LD_ADDR_OWVAR 34
28163: PUSH
28164: LD_INT 2
28166: ST_TO_ADDR
// hc_name = Don Tworry ;
28167: LD_ADDR_OWVAR 26
28171: PUSH
28172: LD_STRING Don Tworry
28174: ST_TO_ADDR
// hc_skills = [ ( rand ( 5 , 6 + difficulty ) ) , ( rand ( 1 , 5 ) ) , ( rand ( 8 , 10 ) ) , ( rand ( 1 , 4 ) ) ] ;
28175: LD_ADDR_OWVAR 31
28179: PUSH
28180: LD_INT 5
28182: PPUSH
28183: LD_INT 6
28185: PUSH
28186: LD_OWVAR 67
28190: PLUS
28191: PPUSH
28192: CALL_OW 12
28196: PUSH
28197: LD_INT 1
28199: PPUSH
28200: LD_INT 5
28202: PPUSH
28203: CALL_OW 12
28207: PUSH
28208: LD_INT 8
28210: PPUSH
28211: LD_INT 10
28213: PPUSH
28214: CALL_OW 12
28218: PUSH
28219: LD_INT 1
28221: PPUSH
28222: LD_INT 4
28224: PPUSH
28225: CALL_OW 12
28229: PUSH
28230: EMPTY
28231: LIST
28232: LIST
28233: LIST
28234: LIST
28235: ST_TO_ADDR
// ar_miner = CreateHuman ;
28236: LD_ADDR_EXP 86
28240: PUSH
28241: CALL_OW 44
28245: ST_TO_ADDR
// PlaceHumanInUnit ( ar_miner , ar_vznasedlo ) ;
28246: LD_EXP 86
28250: PPUSH
28251: LD_EXP 85
28255: PPUSH
28256: CALL_OW 52
// Cesta ;
28260: CALL 28269 0 0
// end ;
28264: LD_VAR 0 1
28268: RET
// function Cesta ; var Target ; begin
28269: LD_INT 0
28271: PPUSH
28272: PPUSH
// Wait ( 0 0$3 ) ;
28273: LD_INT 105
28275: PPUSH
28276: CALL_OW 67
// ComMoveXY ( Ar_vznasedlo , 122 , 89 ) ;
28280: LD_EXP 85
28284: PPUSH
28285: LD_INT 122
28287: PPUSH
28288: LD_INT 89
28290: PPUSH
28291: CALL_OW 111
// AddComMoveXY ( Ar_vznasedlo , 87 , 86 ) ;
28295: LD_EXP 85
28299: PPUSH
28300: LD_INT 87
28302: PPUSH
28303: LD_INT 86
28305: PPUSH
28306: CALL_OW 171
// AddComMoveXY ( Ar_vznasedlo , 47 , 71 ) ;
28310: LD_EXP 85
28314: PPUSH
28315: LD_INT 47
28317: PPUSH
28318: LD_INT 71
28320: PPUSH
28321: CALL_OW 171
// if FilterAllUnits ( [ [ f_inarea , RuBaza2 ] , [ f_side , you ] , [ f_type , unit_building ] ] ) >= 2 then
28325: LD_INT 95
28327: PUSH
28328: LD_INT 38
28330: PUSH
28331: EMPTY
28332: LIST
28333: LIST
28334: PUSH
28335: LD_INT 22
28337: PUSH
28338: LD_EXP 21
28342: PUSH
28343: EMPTY
28344: LIST
28345: LIST
28346: PUSH
28347: LD_INT 21
28349: PUSH
28350: LD_INT 3
28352: PUSH
28353: EMPTY
28354: LIST
28355: LIST
28356: PUSH
28357: EMPTY
28358: LIST
28359: LIST
28360: LIST
28361: PPUSH
28362: CALL_OW 69
28366: PUSH
28367: LD_INT 2
28369: GREATEREQUAL
28370: IFFALSE 28397
// begin AddComMoveXY ( Ar_vznasedlo , 51 , 93 ) ;
28372: LD_EXP 85
28376: PPUSH
28377: LD_INT 51
28379: PPUSH
28380: LD_INT 93
28382: PPUSH
28383: CALL_OW 171
// sneakType = 2 ;
28387: LD_ADDR_LOC 7
28391: PUSH
28392: LD_INT 2
28394: ST_TO_ADDR
// end else
28395: GO 28482
// if FilterAllUnits ( [ [ f_inarea , RuBaza1 ] , [ f_side , you ] , [ f_type , unit_building ] ] ) >= 2 then
28397: LD_INT 95
28399: PUSH
28400: LD_INT 37
28402: PUSH
28403: EMPTY
28404: LIST
28405: LIST
28406: PUSH
28407: LD_INT 22
28409: PUSH
28410: LD_EXP 21
28414: PUSH
28415: EMPTY
28416: LIST
28417: LIST
28418: PUSH
28419: LD_INT 21
28421: PUSH
28422: LD_INT 3
28424: PUSH
28425: EMPTY
28426: LIST
28427: LIST
28428: PUSH
28429: EMPTY
28430: LIST
28431: LIST
28432: LIST
28433: PPUSH
28434: CALL_OW 69
28438: PUSH
28439: LD_INT 2
28441: GREATEREQUAL
28442: IFFALSE 28482
// begin AddComMoveXY ( Ar_vznasedlo , 10 , 10 ) ;
28444: LD_EXP 85
28448: PPUSH
28449: LD_INT 10
28451: PPUSH
28452: LD_INT 10
28454: PPUSH
28455: CALL_OW 171
// AddComMoveXY ( Ar_vznasedlo , 44 , 7 ) ;
28459: LD_EXP 85
28463: PPUSH
28464: LD_INT 44
28466: PPUSH
28467: LD_INT 7
28469: PPUSH
28470: CALL_OW 171
// sneakType = 1 ;
28474: LD_ADDR_LOC 7
28478: PUSH
28479: LD_INT 1
28481: ST_TO_ADDR
// end ; Wait ( 0 0$8 ) ;
28482: LD_INT 280
28484: PPUSH
28485: CALL_OW 67
// SetFuel ( ar_vznasedlo , 100 ) ;
28489: LD_EXP 85
28493: PPUSH
28494: LD_INT 100
28496: PPUSH
28497: CALL_OW 240
// repeat begin Wait ( 0 0$1 ) ;
28501: LD_INT 35
28503: PPUSH
28504: CALL_OW 67
// if checkpoint and not HasTask ( ar_vznasedlo ) then
28508: LD_LOC 8
28512: PUSH
28513: LD_EXP 85
28517: PPUSH
28518: CALL_OW 314
28522: NOT
28523: AND
28524: IFFALSE 28534
// readyToSneak = true ;
28526: LD_ADDR_LOC 6
28530: PUSH
28531: LD_INT 1
28533: ST_TO_ADDR
// end until readyToSneak = true ;
28534: LD_LOC 6
28538: PUSH
28539: LD_INT 1
28541: EQUAL
28542: IFFALSE 28501
// end ;
28544: LD_VAR 0 1
28548: RET
// every 0 0$0.5 trigger IsInArea ( ar_vznasedlo , ArCheckpoint ) do
28549: LD_EXP 85
28553: PPUSH
28554: LD_INT 46
28556: PPUSH
28557: CALL_OW 308
28561: IFFALSE 28574
28563: GO 28565
28565: DISABLE
// checkpoint = true ;
28566: LD_ADDR_LOC 8
28570: PUSH
28571: LD_INT 1
28573: ST_TO_ADDR
28574: END
// every 0 0$0.6 trigger readyToSneak do
28575: LD_LOC 6
28579: IFFALSE 28620
28581: GO 28583
28583: DISABLE
// begin if IsInUnit ( Ar_miner ) then
28584: LD_EXP 86
28588: PPUSH
28589: CALL_OW 310
28593: IFFALSE 28604
// ComExitVehicle ( Ar_miner ) ;
28595: LD_EXP 86
28599: PPUSH
28600: CALL_OW 121
// Wait ( 0 0$0.6 ) ;
28604: LD_INT 21
28606: PPUSH
28607: CALL_OW 67
// Sneak ( Ar_miner ) ;
28611: LD_EXP 86
28615: PPUSH
28616: CALL 28621 0 1
// end ;
28620: END
// function Sneak ( kdo ) ; var list , a , letsBomb ; begin
28621: LD_INT 0
28623: PPUSH
28624: PPUSH
28625: PPUSH
28626: PPUSH
// letsBomb = 0 ;
28627: LD_ADDR_VAR 0 5
28631: PUSH
28632: LD_INT 0
28634: ST_TO_ADDR
// if not sneaktype then
28635: LD_LOC 7
28639: NOT
28640: IFFALSE 28650
// sneaktype = 1 ;
28642: LD_ADDR_LOC 7
28646: PUSH
28647: LD_INT 1
28649: ST_TO_ADDR
// AddComCrawl ( kdo ) ;
28650: LD_VAR 0 1
28654: PPUSH
28655: CALL_OW 197
// Wait ( 0 0$0.6 ) ;
28659: LD_INT 21
28661: PPUSH
28662: CALL_OW 67
// if sneakType = 1 then
28666: LD_LOC 7
28670: PUSH
28671: LD_INT 1
28673: EQUAL
28674: IFFALSE 28793
// begin List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28676: LD_ADDR_VAR 0 3
28680: PUSH
28681: LD_INT 22
28683: PUSH
28684: LD_EXP 21
28688: PUSH
28689: EMPTY
28690: LIST
28691: LIST
28692: PUSH
28693: LD_INT 21
28695: PUSH
28696: LD_INT 3
28698: PUSH
28699: EMPTY
28700: LIST
28701: LIST
28702: PUSH
28703: EMPTY
28704: LIST
28705: LIST
28706: PPUSH
28707: CALL_OW 69
28711: ST_TO_ADDR
// if not list then
28712: LD_VAR 0 3
28716: NOT
28717: IFFALSE 28757
// begin if IsInUnit ( vsevolod ) then
28719: LD_EXP 1
28723: PPUSH
28724: CALL_OW 310
28728: IFFALSE 28747
// list = IsInUnit ( vsevolod ) else
28730: LD_ADDR_VAR 0 3
28734: PUSH
28735: LD_EXP 1
28739: PPUSH
28740: CALL_OW 310
28744: ST_TO_ADDR
28745: GO 28757
// list = vsevolod ;
28747: LD_ADDR_VAR 0 3
28751: PUSH
28752: LD_EXP 1
28756: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
28757: LD_ADDR_VAR 0 4
28761: PUSH
28762: LD_VAR 0 3
28766: PPUSH
28767: LD_EXP 86
28771: PPUSH
28772: CALL_OW 74
28776: ST_TO_ADDR
// ComMoveUnit ( kdo , a ) ;
28777: LD_VAR 0 1
28781: PPUSH
28782: LD_VAR 0 4
28786: PPUSH
28787: CALL_OW 112
// end else
28791: GO 28939
// begin ComMoveXY ( kdo , 67 , 113 ) ;
28793: LD_VAR 0 1
28797: PPUSH
28798: LD_INT 67
28800: PPUSH
28801: LD_INT 113
28803: PPUSH
28804: CALL_OW 111
// AddComMoveXY ( kdo , 68 , 124 ) ;
28808: LD_VAR 0 1
28812: PPUSH
28813: LD_INT 68
28815: PPUSH
28816: LD_INT 124
28818: PPUSH
28819: CALL_OW 171
// List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28823: LD_ADDR_VAR 0 3
28827: PUSH
28828: LD_INT 22
28830: PUSH
28831: LD_EXP 21
28835: PUSH
28836: EMPTY
28837: LIST
28838: LIST
28839: PUSH
28840: LD_INT 21
28842: PUSH
28843: LD_INT 3
28845: PUSH
28846: EMPTY
28847: LIST
28848: LIST
28849: PUSH
28850: EMPTY
28851: LIST
28852: LIST
28853: PPUSH
28854: CALL_OW 69
28858: ST_TO_ADDR
// if not list then
28859: LD_VAR 0 3
28863: NOT
28864: IFFALSE 28904
// begin if IsInUnit ( vsevolod ) then
28866: LD_EXP 1
28870: PPUSH
28871: CALL_OW 310
28875: IFFALSE 28894
// list = IsInUnit ( vsevolod ) else
28877: LD_ADDR_VAR 0 3
28881: PUSH
28882: LD_EXP 1
28886: PPUSH
28887: CALL_OW 310
28891: ST_TO_ADDR
28892: GO 28904
// list = vsevolod ;
28894: LD_ADDR_VAR 0 3
28898: PUSH
28899: LD_EXP 1
28903: ST_TO_ADDR
// end ; A = NearestUnitToXY ( list , 71 , 136 ) ;
28904: LD_ADDR_VAR 0 4
28908: PUSH
28909: LD_VAR 0 3
28913: PPUSH
28914: LD_INT 71
28916: PPUSH
28917: LD_INT 136
28919: PPUSH
28920: CALL_OW 73
28924: ST_TO_ADDR
// AddComMoveUnit ( kdo , a ) ;
28925: LD_VAR 0 1
28929: PPUSH
28930: LD_VAR 0 4
28934: PPUSH
28935: CALL_OW 172
// end ; repeat begin List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28939: LD_ADDR_VAR 0 3
28943: PUSH
28944: LD_INT 22
28946: PUSH
28947: LD_EXP 21
28951: PUSH
28952: EMPTY
28953: LIST
28954: LIST
28955: PUSH
28956: LD_INT 21
28958: PUSH
28959: LD_INT 3
28961: PUSH
28962: EMPTY
28963: LIST
28964: LIST
28965: PUSH
28966: EMPTY
28967: LIST
28968: LIST
28969: PPUSH
28970: CALL_OW 69
28974: ST_TO_ADDR
// if not list then
28975: LD_VAR 0 3
28979: NOT
28980: IFFALSE 29020
// begin if IsInUnit ( vsevolod ) then
28982: LD_EXP 1
28986: PPUSH
28987: CALL_OW 310
28991: IFFALSE 29010
// list = IsInUnit ( vsevolod ) else
28993: LD_ADDR_VAR 0 3
28997: PUSH
28998: LD_EXP 1
29002: PPUSH
29003: CALL_OW 310
29007: ST_TO_ADDR
29008: GO 29020
// list = vsevolod ;
29010: LD_ADDR_VAR 0 3
29014: PUSH
29015: LD_EXP 1
29019: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
29020: LD_ADDR_VAR 0 4
29024: PUSH
29025: LD_VAR 0 3
29029: PPUSH
29030: LD_EXP 86
29034: PPUSH
29035: CALL_OW 74
29039: ST_TO_ADDR
// if GetDistUnits ( ar_miner , a ) < 9 then
29040: LD_EXP 86
29044: PPUSH
29045: LD_VAR 0 4
29049: PPUSH
29050: CALL_OW 296
29054: PUSH
29055: LD_INT 9
29057: LESS
29058: IFFALSE 29095
// begin ComWalk ( ar_miner ) ;
29060: LD_EXP 86
29064: PPUSH
29065: CALL_OW 138
// Wait ( 0 0$0.8 ) ;
29069: LD_INT 28
29071: PPUSH
29072: CALL_OW 67
// letsBomb = 1 ;
29076: LD_ADDR_VAR 0 5
29080: PUSH
29081: LD_INT 1
29083: ST_TO_ADDR
// Podminuj ( ar_miner ) ;
29084: LD_EXP 86
29088: PPUSH
29089: CALL 29117 0 1
// end else
29093: GO 29102
// begin Wait ( 0 0$3 ) ;
29095: LD_INT 105
29097: PPUSH
29098: CALL_OW 67
// end ; end ; until letsBomb = 1 ;
29102: LD_VAR 0 5
29106: PUSH
29107: LD_INT 1
29109: EQUAL
29110: IFFALSE 28939
// end ;
29112: LD_VAR 0 2
29116: RET
// function Podminuj ( kdo ) ; var List , A ; begin
29117: LD_INT 0
29119: PPUSH
29120: PPUSH
29121: PPUSH
// repeat ; List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
29122: LD_ADDR_VAR 0 3
29126: PUSH
29127: LD_INT 22
29129: PUSH
29130: LD_EXP 21
29134: PUSH
29135: EMPTY
29136: LIST
29137: LIST
29138: PUSH
29139: LD_INT 21
29141: PUSH
29142: LD_INT 3
29144: PUSH
29145: EMPTY
29146: LIST
29147: LIST
29148: PUSH
29149: EMPTY
29150: LIST
29151: LIST
29152: PPUSH
29153: CALL_OW 69
29157: ST_TO_ADDR
// if not list then
29158: LD_VAR 0 3
29162: NOT
29163: IFFALSE 29203
// begin if IsInUnit ( vsevolod ) then
29165: LD_EXP 1
29169: PPUSH
29170: CALL_OW 310
29174: IFFALSE 29193
// list = IsInUnit ( vsevolod ) else
29176: LD_ADDR_VAR 0 3
29180: PUSH
29181: LD_EXP 1
29185: PPUSH
29186: CALL_OW 310
29190: ST_TO_ADDR
29191: GO 29203
// list = vsevolod ;
29193: LD_ADDR_VAR 0 3
29197: PUSH
29198: LD_EXP 1
29202: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
29203: LD_ADDR_VAR 0 4
29207: PUSH
29208: LD_VAR 0 3
29212: PPUSH
29213: LD_EXP 86
29217: PPUSH
29218: CALL_OW 74
29222: ST_TO_ADDR
// ComPlaceDelayedCharge ( Ar_miner , 1 , 1 , A ) ;
29223: LD_EXP 86
29227: PPUSH
29228: LD_INT 1
29230: PPUSH
29231: LD_INT 1
29233: PPUSH
29234: LD_VAR 0 4
29238: PPUSH
29239: CALL_OW 132
// Wait ( 0 0$5 ) ;
29243: LD_INT 175
29245: PPUSH
29246: CALL_OW 67
// until IsDead ( Ar_miner ) or IsPlaced ( Ar_miner ) = false ;
29250: LD_EXP 86
29254: PPUSH
29255: CALL_OW 301
29259: PUSH
29260: LD_EXP 86
29264: PPUSH
29265: CALL_OW 305
29269: PUSH
29270: LD_INT 0
29272: EQUAL
29273: OR
29274: IFFALSE 29122
// end ;
29276: LD_VAR 0 2
29280: RET
// every 0 0$1 trigger IsOk ( Ar_vznasedlo ) and readyToSneak and GetDistUnits ( ar_miner , ar_vznasedlo ) > 4 do
29281: LD_EXP 85
29285: PPUSH
29286: CALL_OW 302
29290: PUSH
29291: LD_LOC 6
29295: AND
29296: PUSH
29297: LD_EXP 86
29301: PPUSH
29302: LD_EXP 85
29306: PPUSH
29307: CALL_OW 296
29311: PUSH
29312: LD_INT 4
29314: GREATER
29315: AND
29316: IFFALSE 29349
29318: GO 29320
29320: DISABLE
// begin if GetSide ( ar_vznasedlo ) <> arab then
29321: LD_EXP 85
29325: PPUSH
29326: CALL_OW 255
29330: PUSH
29331: LD_EXP 23
29335: NONEQUAL
29336: IFFALSE 29340
// exit ;
29338: GO 29349
// KillUnit ( Ar_vznasedlo ) ;
29340: LD_EXP 85
29344: PPUSH
29345: CALL_OW 66
// end ; end_of_file
29349: END
// every 0 0$1 do var nakl , bedny ;
29350: GO 29352
29352: DISABLE
29353: LD_INT 0
29355: PPUSH
29356: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
29357: LD_ADDR_VAR 0 1
29361: PUSH
29362: LD_INT 22
29364: PUSH
29365: LD_EXP 22
29369: PUSH
29370: EMPTY
29371: LIST
29372: LIST
29373: PUSH
29374: LD_INT 21
29376: PUSH
29377: LD_INT 2
29379: PUSH
29380: EMPTY
29381: LIST
29382: LIST
29383: PUSH
29384: LD_INT 34
29386: PUSH
29387: LD_INT 12
29389: PUSH
29390: EMPTY
29391: LIST
29392: LIST
29393: PUSH
29394: EMPTY
29395: LIST
29396: LIST
29397: LIST
29398: PPUSH
29399: CALL_OW 69
29403: ST_TO_ADDR
// if nakl then
29404: LD_VAR 0 1
29408: IFFALSE 29581
// begin nakl = nakl [ 1 ] ;
29410: LD_ADDR_VAR 0 1
29414: PUSH
29415: LD_VAR 0 1
29419: PUSH
29420: LD_INT 1
29422: ARRAY
29423: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
29424: LD_VAR 0 1
29428: PPUSH
29429: CALL_OW 256
29433: PUSH
29434: LD_EXP 56
29438: LESS
29439: IFFALSE 29462
// begin ComMoveToArea ( nakl , PurpleRepair ) ;
29441: LD_VAR 0 1
29445: PPUSH
29446: LD_INT 26
29448: PPUSH
29449: CALL_OW 113
// Wait ( 2 2$20 ) ;
29453: LD_INT 4900
29455: PPUSH
29456: CALL_OW 67
// end else
29460: GO 29581
// if GetFuel ( nakl ) < 30 and GetDistUnitXY ( nakl , 119 , 8 ) and GetSide ( purple_ware ) = purple then
29462: LD_VAR 0 1
29466: PPUSH
29467: CALL_OW 261
29471: PUSH
29472: LD_INT 30
29474: LESS
29475: PUSH
29476: LD_VAR 0 1
29480: PPUSH
29481: LD_INT 119
29483: PPUSH
29484: LD_INT 8
29486: PPUSH
29487: CALL_OW 297
29491: AND
29492: PUSH
29493: LD_INT 105
29495: PPUSH
29496: CALL_OW 255
29500: PUSH
29501: LD_EXP 22
29505: EQUAL
29506: AND
29507: IFFALSE 29535
// begin ComMoveUnit ( nakl , purple_ware ) ;
29509: LD_VAR 0 1
29513: PPUSH
29514: LD_INT 105
29516: PPUSH
29517: CALL_OW 112
// AddComRefuel ( nakl , purple_ware ) ;
29521: LD_VAR 0 1
29525: PPUSH
29526: LD_INT 105
29528: PPUSH
29529: CALL_OW 210
// end else
29533: GO 29581
// begin bedny = GetListOfCratesInArea ( PurpleBazeOkoli ) ;
29535: LD_ADDR_VAR 0 2
29539: PUSH
29540: LD_INT 40
29542: PPUSH
29543: CALL_OW 435
29547: ST_TO_ADDR
// if bedny then
29548: LD_VAR 0 2
29552: IFFALSE 29581
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
29554: LD_VAR 0 1
29558: PPUSH
29559: LD_VAR 0 2
29563: PUSH
29564: LD_INT 1
29566: ARRAY
29567: PPUSH
29568: LD_VAR 0 2
29572: PUSH
29573: LD_INT 2
29575: ARRAY
29576: PPUSH
29577: CALL_OW 117
// end ; end ; enable ;
29581: ENABLE
// end ;
29582: PPOPN 2
29584: END
// function LinkVehicle ( Veh ) ; var mechs , un ; begin
29585: LD_INT 0
29587: PPUSH
29588: PPUSH
29589: PPUSH
// mechs = UnitsInside ( purple_contr ) ;
29590: LD_ADDR_VAR 0 3
29594: PUSH
29595: LD_INT 91
29597: PPUSH
29598: CALL_OW 313
29602: ST_TO_ADDR
// MechLink ( Veh , mechs ) ;
29603: LD_VAR 0 1
29607: PPUSH
29608: LD_VAR 0 3
29612: PPUSH
29613: CALL 29622 0 2
// end ;
29617: LD_VAR 0 2
29621: RET
// export function MechLink ( Veh , Mechs ) ; begin
29622: LD_INT 0
29624: PPUSH
// case mechs + 0 of 1 :
29625: LD_VAR 0 2
29629: PUSH
29630: LD_INT 0
29632: PLUS
29633: PUSH
29634: LD_INT 1
29636: DOUBLE
29637: EQUAL
29638: IFTRUE 29642
29640: GO 29663
29642: POP
// ComLinkTo ( Veh , Mechs [ 1 ] ) ; 2 :
29643: LD_VAR 0 1
29647: PPUSH
29648: LD_VAR 0 2
29652: PUSH
29653: LD_INT 1
29655: ARRAY
29656: PPUSH
29657: CALL_OW 135
29661: GO 30012
29663: LD_INT 2
29665: DOUBLE
29666: EQUAL
29667: IFTRUE 29671
29669: GO 29742
29671: POP
// begin if UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 2 ] ) then
29672: LD_VAR 0 2
29676: PUSH
29677: LD_INT 1
29679: ARRAY
29680: PPUSH
29681: CALL_OW 432
29685: PUSH
29686: LD_VAR 0 2
29690: PUSH
29691: LD_INT 2
29693: ARRAY
29694: PPUSH
29695: CALL_OW 432
29699: LESS
29700: IFFALSE 29722
// ComLinkTo ( Veh , Mechs [ 1 ] ) else
29702: LD_VAR 0 1
29706: PPUSH
29707: LD_VAR 0 2
29711: PUSH
29712: LD_INT 1
29714: ARRAY
29715: PPUSH
29716: CALL_OW 135
29720: GO 29740
// ComLinkTo ( Veh , Mechs [ 2 ] ) ;
29722: LD_VAR 0 1
29726: PPUSH
29727: LD_VAR 0 2
29731: PUSH
29732: LD_INT 2
29734: ARRAY
29735: PPUSH
29736: CALL_OW 135
// end ; 3 :
29740: GO 30012
29742: LD_INT 3
29744: DOUBLE
29745: EQUAL
29746: IFTRUE 29750
29748: GO 30011
29750: POP
// begin if UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 2 ] ) or UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 3 ] ) then
29751: LD_VAR 0 2
29755: PUSH
29756: LD_INT 1
29758: ARRAY
29759: PPUSH
29760: CALL_OW 432
29764: PUSH
29765: LD_VAR 0 2
29769: PUSH
29770: LD_INT 2
29772: ARRAY
29773: PPUSH
29774: CALL_OW 432
29778: LESS
29779: PUSH
29780: LD_VAR 0 2
29784: PUSH
29785: LD_INT 1
29787: ARRAY
29788: PPUSH
29789: CALL_OW 432
29793: PUSH
29794: LD_VAR 0 2
29798: PUSH
29799: LD_INT 3
29801: ARRAY
29802: PPUSH
29803: CALL_OW 432
29807: LESS
29808: OR
29809: IFFALSE 29831
// ComLinkTo ( Veh , Mechs [ 1 ] ) else
29811: LD_VAR 0 1
29815: PPUSH
29816: LD_VAR 0 2
29820: PUSH
29821: LD_INT 1
29823: ARRAY
29824: PPUSH
29825: CALL_OW 135
29829: GO 30009
// if UnitsLinked ( mechs [ 2 ] ) < UnitsLinked ( mechs [ 1 ] ) or UnitsLinked ( mechs [ 2 ] ) < UnitsLinked ( mechs [ 3 ] ) then
29831: LD_VAR 0 2
29835: PUSH
29836: LD_INT 2
29838: ARRAY
29839: PPUSH
29840: CALL_OW 432
29844: PUSH
29845: LD_VAR 0 2
29849: PUSH
29850: LD_INT 1
29852: ARRAY
29853: PPUSH
29854: CALL_OW 432
29858: LESS
29859: PUSH
29860: LD_VAR 0 2
29864: PUSH
29865: LD_INT 2
29867: ARRAY
29868: PPUSH
29869: CALL_OW 432
29873: PUSH
29874: LD_VAR 0 2
29878: PUSH
29879: LD_INT 3
29881: ARRAY
29882: PPUSH
29883: CALL_OW 432
29887: LESS
29888: OR
29889: IFFALSE 29911
// ComLinkTo ( Veh , Mechs [ 2 ] ) else
29891: LD_VAR 0 1
29895: PPUSH
29896: LD_VAR 0 2
29900: PUSH
29901: LD_INT 2
29903: ARRAY
29904: PPUSH
29905: CALL_OW 135
29909: GO 30009
// if UnitsLinked ( mechs [ 3 ] ) < UnitsLinked ( mechs [ 1 ] ) or UnitsLinked ( mechs [ 3 ] ) < UnitsLinked ( mechs [ 2 ] ) then
29911: LD_VAR 0 2
29915: PUSH
29916: LD_INT 3
29918: ARRAY
29919: PPUSH
29920: CALL_OW 432
29924: PUSH
29925: LD_VAR 0 2
29929: PUSH
29930: LD_INT 1
29932: ARRAY
29933: PPUSH
29934: CALL_OW 432
29938: LESS
29939: PUSH
29940: LD_VAR 0 2
29944: PUSH
29945: LD_INT 3
29947: ARRAY
29948: PPUSH
29949: CALL_OW 432
29953: PUSH
29954: LD_VAR 0 2
29958: PUSH
29959: LD_INT 2
29961: ARRAY
29962: PPUSH
29963: CALL_OW 432
29967: LESS
29968: OR
29969: IFFALSE 29991
// ComLinkTo ( Veh , Mechs [ 3 ] ) else
29971: LD_VAR 0 1
29975: PPUSH
29976: LD_VAR 0 2
29980: PUSH
29981: LD_INT 3
29983: ARRAY
29984: PPUSH
29985: CALL_OW 135
29989: GO 30009
// ComLinkTo ( Veh , Mechs [ 1 ] ) ;
29991: LD_VAR 0 1
29995: PPUSH
29996: LD_VAR 0 2
30000: PUSH
30001: LD_INT 1
30003: ARRAY
30004: PPUSH
30005: CALL_OW 135
// end ; end ;
30009: GO 30012
30011: POP
// end ;
30012: LD_VAR 0 3
30016: RET
// every 0 0$0.8 trigger FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) do
30017: LD_INT 22
30019: PUSH
30020: LD_EXP 22
30024: PUSH
30025: EMPTY
30026: LIST
30027: LIST
30028: PUSH
30029: LD_INT 21
30031: PUSH
30032: LD_INT 2
30034: PUSH
30035: EMPTY
30036: LIST
30037: LIST
30038: PUSH
30039: LD_INT 3
30041: PUSH
30042: LD_INT 61
30044: PUSH
30045: EMPTY
30046: LIST
30047: PUSH
30048: EMPTY
30049: LIST
30050: LIST
30051: PUSH
30052: LD_INT 50
30054: PUSH
30055: EMPTY
30056: LIST
30057: PUSH
30058: EMPTY
30059: LIST
30060: LIST
30061: LIST
30062: LIST
30063: PPUSH
30064: CALL_OW 69
30068: IFFALSE 30134
30070: GO 30072
30072: DISABLE
// begin LinkVehicle ( FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) [ 1 ] ) ;
30073: LD_INT 22
30075: PUSH
30076: LD_EXP 22
30080: PUSH
30081: EMPTY
30082: LIST
30083: LIST
30084: PUSH
30085: LD_INT 21
30087: PUSH
30088: LD_INT 2
30090: PUSH
30091: EMPTY
30092: LIST
30093: LIST
30094: PUSH
30095: LD_INT 3
30097: PUSH
30098: LD_INT 61
30100: PUSH
30101: EMPTY
30102: LIST
30103: PUSH
30104: EMPTY
30105: LIST
30106: LIST
30107: PUSH
30108: LD_INT 50
30110: PUSH
30111: EMPTY
30112: LIST
30113: PUSH
30114: EMPTY
30115: LIST
30116: LIST
30117: LIST
30118: LIST
30119: PPUSH
30120: CALL_OW 69
30124: PUSH
30125: LD_INT 1
30127: ARRAY
30128: PPUSH
30129: CALL 29585 0 1
// enable ;
30133: ENABLE
// end ;
30134: END
// export Tech_list_Purple ; every 0 0$1 do
30135: GO 30137
30137: DISABLE
// begin Tech_list_Purple = [ tech_tech1 , tech_tech2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_soporific , tech_weap3 , tech_opto1 , tech_opto2 , tech_opto3 ] ;
30138: LD_ADDR_EXP 87
30142: PUSH
30143: LD_INT 48
30145: PUSH
30146: LD_INT 49
30148: PUSH
30149: LD_INT 50
30151: PUSH
30152: LD_INT 51
30154: PUSH
30155: LD_INT 52
30157: PUSH
30158: LD_INT 13
30160: PUSH
30161: LD_INT 53
30163: PUSH
30164: LD_INT 60
30166: PUSH
30167: LD_INT 61
30169: PUSH
30170: LD_INT 62
30172: PUSH
30173: EMPTY
30174: LIST
30175: LIST
30176: LIST
30177: LIST
30178: LIST
30179: LIST
30180: LIST
30181: LIST
30182: LIST
30183: LIST
30184: ST_TO_ADDR
// end ;
30185: END
// every 0 0$1 do
30186: GO 30188
30188: DISABLE
// begin if IsOk ( pur_lab ) and GetSide ( pur_lab ) = purple and tick > dif_research_wait then
30189: LD_INT 96
30191: PPUSH
30192: CALL_OW 302
30196: PUSH
30197: LD_INT 96
30199: PPUSH
30200: CALL_OW 255
30204: PUSH
30205: LD_EXP 22
30209: EQUAL
30210: AND
30211: PUSH
30212: LD_OWVAR 1
30216: PUSH
30217: LD_EXP 75
30221: GREATER
30222: AND
30223: IFFALSE 30235
// Zkoumej ( 1 , pur_lab ) ;
30225: LD_INT 1
30227: PPUSH
30228: LD_INT 96
30230: PPUSH
30231: CALL 30237 0 2
// enable ;
30235: ENABLE
// end ;
30236: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
30237: LD_INT 0
30239: PPUSH
// if Tech_list_Purple + 0 >= 1 then
30240: LD_EXP 87
30244: PUSH
30245: LD_INT 0
30247: PLUS
30248: PUSH
30249: LD_INT 1
30251: GREATEREQUAL
30252: IFFALSE 30292
// if Researched ( purple , Tech_list_Purple [ 1 ] ) then
30254: LD_EXP 22
30258: PPUSH
30259: LD_EXP 87
30263: PUSH
30264: LD_INT 1
30266: ARRAY
30267: PPUSH
30268: CALL_OW 325
30272: IFFALSE 30292
// Tech_list_Purple = Delete ( Tech_list_Purple , 1 ) ;
30274: LD_ADDR_EXP 87
30278: PUSH
30279: LD_EXP 87
30283: PPUSH
30284: LD_INT 1
30286: PPUSH
30287: CALL_OW 3
30291: ST_TO_ADDR
// if Tech_list_Purple and not GetActResearch ( laborator ) then
30292: LD_EXP 87
30296: PUSH
30297: LD_VAR 0 2
30301: PPUSH
30302: CALL_OW 485
30306: NOT
30307: AND
30308: IFFALSE 30328
// ComResearch ( laborator , Tech_list_Purple [ 1 ] ) ;
30310: LD_VAR 0 2
30314: PPUSH
30315: LD_EXP 87
30319: PUSH
30320: LD_INT 1
30322: ARRAY
30323: PPUSH
30324: CALL_OW 124
// end ; end_of_file
30328: LD_VAR 0 3
30332: RET
// every 0 0$1 do var nakl , bedny ;
30333: GO 30335
30335: DISABLE
30336: LD_INT 0
30338: PPUSH
30339: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
30340: LD_ADDR_VAR 0 1
30344: PUSH
30345: LD_INT 22
30347: PUSH
30348: LD_EXP 24
30352: PUSH
30353: EMPTY
30354: LIST
30355: LIST
30356: PUSH
30357: LD_INT 21
30359: PUSH
30360: LD_INT 2
30362: PUSH
30363: EMPTY
30364: LIST
30365: LIST
30366: PUSH
30367: LD_INT 34
30369: PUSH
30370: LD_INT 12
30372: PUSH
30373: EMPTY
30374: LIST
30375: LIST
30376: PUSH
30377: EMPTY
30378: LIST
30379: LIST
30380: LIST
30381: PPUSH
30382: CALL_OW 69
30386: ST_TO_ADDR
// if nakl then
30387: LD_VAR 0 1
30391: IFFALSE 30491
// begin nakl = nakl [ 1 ] ;
30393: LD_ADDR_VAR 0 1
30397: PUSH
30398: LD_VAR 0 1
30402: PUSH
30403: LD_INT 1
30405: ARRAY
30406: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
30407: LD_VAR 0 1
30411: PPUSH
30412: CALL_OW 256
30416: PUSH
30417: LD_EXP 56
30421: LESS
30422: IFFALSE 30445
// begin ComMoveToArea ( nakl , AmikRepair ) ;
30424: LD_VAR 0 1
30428: PPUSH
30429: LD_INT 28
30431: PPUSH
30432: CALL_OW 113
// Wait ( 2 2$20 ) ;
30436: LD_INT 4900
30438: PPUSH
30439: CALL_OW 67
// end else
30443: GO 30491
// begin bedny = GetListOfCratesInArea ( AmikBazeOkoli ) ;
30445: LD_ADDR_VAR 0 2
30449: PUSH
30450: LD_INT 41
30452: PPUSH
30453: CALL_OW 435
30457: ST_TO_ADDR
// if bedny then
30458: LD_VAR 0 2
30462: IFFALSE 30491
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
30464: LD_VAR 0 1
30468: PPUSH
30469: LD_VAR 0 2
30473: PUSH
30474: LD_INT 1
30476: ARRAY
30477: PPUSH
30478: LD_VAR 0 2
30482: PUSH
30483: LD_INT 2
30485: ARRAY
30486: PPUSH
30487: CALL_OW 117
// end ; end ; enable ;
30491: ENABLE
// end ;
30492: PPOPN 2
30494: END
// export Tech_list_Amik ; every 0 0$1 do
30495: GO 30497
30497: DISABLE
// begin Tech_list_Amik = [ tech_tech1 , tech_comp1 , tech_tech2 , tech_comp2 , tech_tech3 , tech_weap1 , tech_weap2 , tech_comp3 , tech_weap3 , tech_opto1 , tech_opto2 , tech_opto3 , tech_sib1 , tech_sib2 , tech_sib3 ] ;
30498: LD_ADDR_EXP 88
30502: PUSH
30503: LD_INT 48
30505: PUSH
30506: LD_INT 57
30508: PUSH
30509: LD_INT 49
30511: PUSH
30512: LD_INT 58
30514: PUSH
30515: LD_INT 50
30517: PUSH
30518: LD_INT 51
30520: PUSH
30521: LD_INT 52
30523: PUSH
30524: LD_INT 59
30526: PUSH
30527: LD_INT 53
30529: PUSH
30530: LD_INT 60
30532: PUSH
30533: LD_INT 61
30535: PUSH
30536: LD_INT 62
30538: PUSH
30539: LD_INT 54
30541: PUSH
30542: LD_INT 55
30544: PUSH
30545: LD_INT 56
30547: PUSH
30548: EMPTY
30549: LIST
30550: LIST
30551: LIST
30552: LIST
30553: LIST
30554: LIST
30555: LIST
30556: LIST
30557: LIST
30558: LIST
30559: LIST
30560: LIST
30561: LIST
30562: LIST
30563: LIST
30564: ST_TO_ADDR
// end ;
30565: END
// every 0 0$1 do
30566: GO 30568
30568: DISABLE
// begin if IsOk ( amik_lab ) and GetSide ( amik_lab ) = amik and tick > dif_research_wait then
30569: LD_INT 97
30571: PPUSH
30572: CALL_OW 302
30576: PUSH
30577: LD_INT 97
30579: PPUSH
30580: CALL_OW 255
30584: PUSH
30585: LD_EXP 24
30589: EQUAL
30590: AND
30591: PUSH
30592: LD_OWVAR 1
30596: PUSH
30597: LD_EXP 75
30601: GREATER
30602: AND
30603: IFFALSE 30615
// Zkoumej ( 1 , amik_lab ) ;
30605: LD_INT 1
30607: PPUSH
30608: LD_INT 97
30610: PPUSH
30611: CALL 30663 0 2
// if IsOk ( amik_lab2 ) and GetSide ( amik_lab2 ) = amik and tick > dif_research_wait then
30615: LD_INT 98
30617: PPUSH
30618: CALL_OW 302
30622: PUSH
30623: LD_INT 98
30625: PPUSH
30626: CALL_OW 255
30630: PUSH
30631: LD_EXP 24
30635: EQUAL
30636: AND
30637: PUSH
30638: LD_OWVAR 1
30642: PUSH
30643: LD_EXP 75
30647: GREATER
30648: AND
30649: IFFALSE 30661
// Zkoumej ( 1 , amik_lab2 ) ;
30651: LD_INT 1
30653: PPUSH
30654: LD_INT 98
30656: PPUSH
30657: CALL 30663 0 2
// enable ;
30661: ENABLE
// end ;
30662: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
30663: LD_INT 0
30665: PPUSH
// if Tech_list_Amik + 0 >= 1 then
30666: LD_EXP 88
30670: PUSH
30671: LD_INT 0
30673: PLUS
30674: PUSH
30675: LD_INT 1
30677: GREATEREQUAL
30678: IFFALSE 30718
// if Researched ( amik , Tech_list_Amik [ 1 ] ) then
30680: LD_EXP 24
30684: PPUSH
30685: LD_EXP 88
30689: PUSH
30690: LD_INT 1
30692: ARRAY
30693: PPUSH
30694: CALL_OW 325
30698: IFFALSE 30718
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
30700: LD_ADDR_EXP 88
30704: PUSH
30705: LD_EXP 88
30709: PPUSH
30710: LD_INT 1
30712: PPUSH
30713: CALL_OW 3
30717: ST_TO_ADDR
// if Tech_list_Amik and not GetActResearch ( laborator ) then
30718: LD_EXP 88
30722: PUSH
30723: LD_VAR 0 2
30727: PPUSH
30728: CALL_OW 485
30732: NOT
30733: AND
30734: IFFALSE 30754
// ComResearch ( laborator , Tech_list_Amik [ 1 ] ) ;
30736: LD_VAR 0 2
30740: PPUSH
30741: LD_EXP 88
30745: PUSH
30746: LD_INT 1
30748: ARRAY
30749: PPUSH
30750: CALL_OW 124
// end ;
30754: LD_VAR 0 3
30758: RET
// every 0 0$1 trigger FilterAllUnits ( [ [ f_ok ] , [ f_nation , nation_american ] , [ f_type , unit_human ] , [ f_side , amik ] ] ) < 13 and ( IsDead ( amik_ware ) or GetSide ( amik_ware ) = you ) do
30759: LD_INT 50
30761: PUSH
30762: EMPTY
30763: LIST
30764: PUSH
30765: LD_INT 23
30767: PUSH
30768: LD_INT 1
30770: PUSH
30771: EMPTY
30772: LIST
30773: LIST
30774: PUSH
30775: LD_INT 21
30777: PUSH
30778: LD_INT 1
30780: PUSH
30781: EMPTY
30782: LIST
30783: LIST
30784: PUSH
30785: LD_INT 22
30787: PUSH
30788: LD_EXP 24
30792: PUSH
30793: EMPTY
30794: LIST
30795: LIST
30796: PUSH
30797: EMPTY
30798: LIST
30799: LIST
30800: LIST
30801: LIST
30802: PPUSH
30803: CALL_OW 69
30807: PUSH
30808: LD_INT 13
30810: LESS
30811: PUSH
30812: LD_INT 108
30814: PPUSH
30815: CALL_OW 301
30819: PUSH
30820: LD_INT 108
30822: PPUSH
30823: CALL_OW 255
30827: PUSH
30828: LD_EXP 21
30832: EQUAL
30833: OR
30834: AND
30835: IFFALSE 30848
30837: GO 30839
30839: DISABLE
// begin stopBlueAI = true ;
30840: LD_ADDR_EXP 19
30844: PUSH
30845: LD_INT 1
30847: ST_TO_ADDR
// end ;
30848: END
// export zdrhejte ; every 0 0$1 trigger stopBlueAI do
30849: LD_EXP 19
30853: IFFALSE 30963
30855: GO 30857
30857: DISABLE
// begin ComExitBuilding ( ( FilterAllUnits ( [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) ) ;
30858: LD_INT 50
30860: PUSH
30861: EMPTY
30862: LIST
30863: PUSH
30864: LD_INT 22
30866: PUSH
30867: LD_EXP 24
30871: PUSH
30872: EMPTY
30873: LIST
30874: LIST
30875: PUSH
30876: LD_INT 21
30878: PUSH
30879: LD_INT 1
30881: PUSH
30882: EMPTY
30883: LIST
30884: LIST
30885: PUSH
30886: EMPTY
30887: LIST
30888: LIST
30889: LIST
30890: PPUSH
30891: CALL_OW 69
30895: PPUSH
30896: CALL_OW 122
// AddComMoveToArea ( ( FilterUnitsInArea ( AmikBaza , [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) , pryc ) ;
30900: LD_INT 17
30902: PPUSH
30903: LD_INT 50
30905: PUSH
30906: EMPTY
30907: LIST
30908: PUSH
30909: LD_INT 22
30911: PUSH
30912: LD_EXP 24
30916: PUSH
30917: EMPTY
30918: LIST
30919: LIST
30920: PUSH
30921: LD_INT 21
30923: PUSH
30924: LD_INT 1
30926: PUSH
30927: EMPTY
30928: LIST
30929: LIST
30930: PUSH
30931: EMPTY
30932: LIST
30933: LIST
30934: LIST
30935: PPUSH
30936: CALL_OW 70
30940: PPUSH
30941: LD_INT 45
30943: PPUSH
30944: CALL_OW 173
// Wait ( 0 0$0.5 ) ;
30948: LD_INT 18
30950: PPUSH
30951: CALL_OW 67
// zdrhejte = true ;
30955: LD_ADDR_EXP 89
30959: PUSH
30960: LD_INT 1
30962: ST_TO_ADDR
// end ;
30963: END
// export moji ; every 0 0$1 trigger zdrhejte = true do
30964: LD_EXP 89
30968: PUSH
30969: LD_INT 1
30971: EQUAL
30972: IFFALSE 31026
30974: GO 30976
30976: DISABLE
// begin ComMoveToArea ( ( FilterUnitsInArea ( AmikBaza , [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) , pryc ) ;
30977: LD_INT 17
30979: PPUSH
30980: LD_INT 50
30982: PUSH
30983: EMPTY
30984: LIST
30985: PUSH
30986: LD_INT 22
30988: PUSH
30989: LD_EXP 24
30993: PUSH
30994: EMPTY
30995: LIST
30996: LIST
30997: PUSH
30998: LD_INT 21
31000: PUSH
31001: LD_INT 1
31003: PUSH
31004: EMPTY
31005: LIST
31006: LIST
31007: PUSH
31008: EMPTY
31009: LIST
31010: LIST
31011: LIST
31012: PPUSH
31013: CALL_OW 70
31017: PPUSH
31018: LD_INT 45
31020: PPUSH
31021: CALL_OW 113
// enable ;
31025: ENABLE
// end ;
31026: END
// every 0 0$0.5 trigger FilterUnitsInArea ( pryc , ( [ [ [ f_side , amik ] , [ f_type , unit_human ] ] ] ) ) > 0 and zdrhejte = true do var un ;
31027: LD_INT 45
31029: PPUSH
31030: LD_INT 22
31032: PUSH
31033: LD_EXP 24
31037: PUSH
31038: EMPTY
31039: LIST
31040: LIST
31041: PUSH
31042: LD_INT 21
31044: PUSH
31045: LD_INT 1
31047: PUSH
31048: EMPTY
31049: LIST
31050: LIST
31051: PUSH
31052: EMPTY
31053: LIST
31054: LIST
31055: PUSH
31056: EMPTY
31057: LIST
31058: PPUSH
31059: CALL_OW 70
31063: PUSH
31064: LD_INT 0
31066: GREATER
31067: PUSH
31068: LD_EXP 89
31072: PUSH
31073: LD_INT 1
31075: EQUAL
31076: AND
31077: IFFALSE 31144
31079: GO 31081
31081: DISABLE
31082: LD_INT 0
31084: PPUSH
// begin for un in FilterUnitsInArea ( pryc , ( [ [ [ f_side , amik ] , [ f_type , unit_human ] ] ] ) ) do
31085: LD_ADDR_VAR 0 1
31089: PUSH
31090: LD_INT 45
31092: PPUSH
31093: LD_INT 22
31095: PUSH
31096: LD_EXP 24
31100: PUSH
31101: EMPTY
31102: LIST
31103: LIST
31104: PUSH
31105: LD_INT 21
31107: PUSH
31108: LD_INT 1
31110: PUSH
31111: EMPTY
31112: LIST
31113: LIST
31114: PUSH
31115: EMPTY
31116: LIST
31117: LIST
31118: PUSH
31119: EMPTY
31120: LIST
31121: PPUSH
31122: CALL_OW 70
31126: PUSH
31127: FOR_IN
31128: IFFALSE 31141
// begin RemoveUnit ( un ) ;
31130: LD_VAR 0 1
31134: PPUSH
31135: CALL_OW 64
// end ;
31139: GO 31127
31141: POP
31142: POP
// enable ;
31143: ENABLE
// end ; end_of_file
31144: PPOPN 1
31146: END
// export matCargo , rem ; export function RemoveCargo ; begin
31147: LD_INT 0
31149: PPUSH
// RemoveUnit ( platCargo ) ;
31150: LD_INT 106
31152: PPUSH
31153: CALL_OW 64
// rem = false ;
31157: LD_ADDR_EXP 92
31161: PUSH
31162: LD_INT 0
31164: ST_TO_ADDR
// end ;
31165: LD_VAR 0 1
31169: RET
// export function placePlatonovCargo ( ) ; var depot , budovy ; begin
31170: LD_INT 0
31172: PPUSH
31173: PPUSH
31174: PPUSH
// PlaceUnitXYR ( platCargo , 27 , 50 , 3 , false ) ;
31175: LD_INT 106
31177: PPUSH
31178: LD_INT 27
31180: PPUSH
31181: LD_INT 50
31183: PPUSH
31184: LD_INT 3
31186: PPUSH
31187: LD_INT 0
31189: PPUSH
31190: CALL_OW 50
// PlaceHumanInUnit ( VytvorCloveka ( 3 , 5 , 6 , 3 , 5 ) , platCargo ) ;
31194: LD_INT 3
31196: PPUSH
31197: LD_INT 5
31199: PPUSH
31200: LD_INT 6
31202: PPUSH
31203: LD_INT 3
31205: PPUSH
31206: LD_INT 5
31208: PPUSH
31209: CALL 2566 0 5
31213: PPUSH
31214: LD_INT 106
31216: PPUSH
31217: CALL_OW 52
// Wait ( 0 0$0.5 ) ;
31221: LD_INT 18
31223: PPUSH
31224: CALL_OW 67
// depot = FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
31228: LD_ADDR_VAR 0 2
31232: PUSH
31233: LD_INT 22
31235: PUSH
31236: LD_EXP 21
31240: PUSH
31241: EMPTY
31242: LIST
31243: LIST
31244: PUSH
31245: LD_INT 2
31247: PUSH
31248: LD_INT 30
31250: PUSH
31251: LD_INT 0
31253: PUSH
31254: EMPTY
31255: LIST
31256: LIST
31257: PUSH
31258: LD_INT 30
31260: PUSH
31261: LD_INT 1
31263: PUSH
31264: EMPTY
31265: LIST
31266: LIST
31267: PUSH
31268: EMPTY
31269: LIST
31270: LIST
31271: LIST
31272: PUSH
31273: EMPTY
31274: LIST
31275: LIST
31276: PPUSH
31277: CALL_OW 69
31281: ST_TO_ADDR
// budovy = FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
31282: LD_ADDR_VAR 0 3
31286: PUSH
31287: LD_INT 22
31289: PUSH
31290: LD_EXP 21
31294: PUSH
31295: EMPTY
31296: LIST
31297: LIST
31298: PUSH
31299: LD_INT 21
31301: PUSH
31302: LD_INT 3
31304: PUSH
31305: EMPTY
31306: LIST
31307: LIST
31308: PUSH
31309: EMPTY
31310: LIST
31311: LIST
31312: PPUSH
31313: CALL_OW 69
31317: ST_TO_ADDR
// begin if depot then
31318: LD_VAR 0 2
31322: IFFALSE 31396
// begin MoveAreaXY ( transformArea , GetX ( depot [ 1 ] ) - 3 , GetY ( depot [ 1 ] ) - 3 ) ;
31324: LD_INT 42
31326: PPUSH
31327: LD_VAR 0 2
31331: PUSH
31332: LD_INT 1
31334: ARRAY
31335: PPUSH
31336: CALL_OW 250
31340: PUSH
31341: LD_INT 3
31343: MINUS
31344: PPUSH
31345: LD_VAR 0 2
31349: PUSH
31350: LD_INT 1
31352: ARRAY
31353: PPUSH
31354: CALL_OW 251
31358: PUSH
31359: LD_INT 3
31361: MINUS
31362: PPUSH
31363: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31367: LD_INT 106
31369: PPUSH
31370: LD_INT 42
31372: PPUSH
31373: CALL_OW 113
// AddComUnload ( platcargo ) ;
31377: LD_INT 106
31379: PPUSH
31380: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31384: LD_INT 106
31386: PPUSH
31387: LD_INT 7
31389: PPUSH
31390: CALL_OW 173
// end else
31394: GO 31536
// if budovy then
31396: LD_VAR 0 3
31400: IFFALSE 31474
// begin MoveAreaXY ( transformArea , GetX ( budovy [ 1 ] ) - 3 , GetY ( budovy [ 1 ] ) - 3 ) ;
31402: LD_INT 42
31404: PPUSH
31405: LD_VAR 0 3
31409: PUSH
31410: LD_INT 1
31412: ARRAY
31413: PPUSH
31414: CALL_OW 250
31418: PUSH
31419: LD_INT 3
31421: MINUS
31422: PPUSH
31423: LD_VAR 0 3
31427: PUSH
31428: LD_INT 1
31430: ARRAY
31431: PPUSH
31432: CALL_OW 251
31436: PUSH
31437: LD_INT 3
31439: MINUS
31440: PPUSH
31441: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31445: LD_INT 106
31447: PPUSH
31448: LD_INT 42
31450: PPUSH
31451: CALL_OW 113
// AddComUnload ( platcargo ) ;
31455: LD_INT 106
31457: PPUSH
31458: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31462: LD_INT 106
31464: PPUSH
31465: LD_INT 7
31467: PPUSH
31468: CALL_OW 173
// end else
31472: GO 31536
// begin MoveAreaXY ( transformArea , GetX ( vsevolod ) - 3 , GetY ( vsevolod ) - 3 ) ;
31474: LD_INT 42
31476: PPUSH
31477: LD_EXP 1
31481: PPUSH
31482: CALL_OW 250
31486: PUSH
31487: LD_INT 3
31489: MINUS
31490: PPUSH
31491: LD_EXP 1
31495: PPUSH
31496: CALL_OW 251
31500: PUSH
31501: LD_INT 3
31503: MINUS
31504: PPUSH
31505: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31509: LD_INT 106
31511: PPUSH
31512: LD_INT 42
31514: PPUSH
31515: CALL_OW 113
// AddComUnload ( platcargo ) ;
31519: LD_INT 106
31521: PPUSH
31522: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31526: LD_INT 106
31528: PPUSH
31529: LD_INT 7
31531: PPUSH
31532: CALL_OW 173
// end ; Wait ( 0 0$1 ) ;
31536: LD_INT 35
31538: PPUSH
31539: CALL_OW 67
// end ; Wait ( 0 0$5 ) ;
31543: LD_INT 175
31545: PPUSH
31546: CALL_OW 67
// rem = true ;
31550: LD_ADDR_EXP 92
31554: PUSH
31555: LD_INT 1
31557: ST_TO_ADDR
// end ;
31558: LD_VAR 0 1
31562: RET
// every 0 0$1 trigger rem and IsInArea ( platCargo , startShrink ) do
31563: LD_EXP 92
31567: PUSH
31568: LD_INT 106
31570: PPUSH
31571: LD_INT 43
31573: PPUSH
31574: CALL_OW 308
31578: AND
31579: IFFALSE 31612
31581: GO 31583
31583: DISABLE
// begin if IsInUnit ( platCargo ) then
31584: LD_INT 106
31586: PPUSH
31587: CALL_OW 310
31591: IFFALSE 31605
// RemoveUnit ( IsInUnit ( platCargo ) ) ;
31593: LD_INT 106
31595: PPUSH
31596: CALL_OW 310
31600: PPUSH
31601: CALL_OW 64
// RemoveUnit ( platCargo ) ;
31605: LD_INT 106
31607: PPUSH
31608: CALL_OW 64
// end ;
31612: END
// every 0 0$1 trigger Carry ( platCargo ) = false and HasTask ( platCargo ) = false and IsPlaced ( platCargo ) do
31613: LD_INT 106
31615: PPUSH
31616: CALL_OW 281
31620: PUSH
31621: LD_INT 0
31623: EQUAL
31624: PUSH
31625: LD_INT 106
31627: PPUSH
31628: CALL_OW 314
31632: PUSH
31633: LD_INT 0
31635: EQUAL
31636: AND
31637: PUSH
31638: LD_INT 106
31640: PPUSH
31641: CALL_OW 305
31645: AND
31646: IFFALSE 31662
31648: GO 31650
31650: DISABLE
// begin ComMoveToArea ( platcargo , startShrink ) ;
31651: LD_INT 106
31653: PPUSH
31654: LD_INT 43
31656: PPUSH
31657: CALL_OW 113
// enable ;
31661: ENABLE
// end ;
31662: END
// every 0 0$1 trigger Carry ( platCargo ) and HasTask ( platCargo ) = false and IsPlaced ( platCargo ) and rem do
31663: LD_INT 106
31665: PPUSH
31666: CALL_OW 281
31670: PUSH
31671: LD_INT 106
31673: PPUSH
31674: CALL_OW 314
31678: PUSH
31679: LD_INT 0
31681: EQUAL
31682: AND
31683: PUSH
31684: LD_INT 106
31686: PPUSH
31687: CALL_OW 305
31691: AND
31692: PUSH
31693: LD_EXP 92
31697: AND
31698: IFFALSE 31711
31700: GO 31702
31702: DISABLE
// begin ComUnload ( platcargo ) ;
31703: LD_INT 106
31705: PPUSH
31706: CALL_OW 159
// enable ;
31710: ENABLE
// end ;
31711: END
