// 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 31160 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 13541 0 0
// Obtiznost ;
  77: CALL 13954 0 0
// NaplnVsechnyBudovyLidma ;
  81: CALL 4085 0 0
// BLevely ;
  85: CALL 3822 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 , 4 , 6 , nation_russian , You ) ;
 258: LD_ADDR_VAR 0 3
 262: PUSH
 263: LD_VAR 0 4
 267: PPUSH
 268: LD_INT 4
 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 12465 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
// Mikhail = NewCharacter ( Mikhail ) ;
3195: LD_ADDR_EXP 14
3199: PUSH
3200: LD_STRING Mikhail
3202: PPUSH
3203: CALL_OW 25
3207: ST_TO_ADDR
// Kvantovy = NewCharacter ( Kvantovy ) ;
3208: LD_ADDR_EXP 12
3212: PUSH
3213: LD_STRING Kvantovy
3215: PPUSH
3216: CALL_OW 25
3220: ST_TO_ADDR
// if not TestCharacters ( Vsevolod ) then
3221: LD_STRING Vsevolod
3223: PPUSH
3224: CALL_OW 28
3228: NOT
3229: IFFALSE 3410
// begin vsevolod = NewCharacter ( Vsevolod ) ;
3231: LD_ADDR_EXP 1
3235: PUSH
3236: LD_STRING Vsevolod
3238: PPUSH
3239: CALL_OW 25
3243: ST_TO_ADDR
// talin = NewCharacter ( Talin ) ;
3244: LD_ADDR_EXP 11
3248: PUSH
3249: LD_STRING Talin
3251: PPUSH
3252: CALL_OW 25
3256: ST_TO_ADDR
// gnevko = NewCharacter ( Gnyevko ) ;
3257: LD_ADDR_EXP 2
3261: PUSH
3262: LD_STRING Gnyevko
3264: PPUSH
3265: CALL_OW 25
3269: ST_TO_ADDR
// petrovova = NewCharacter ( Petrovova ) ;
3270: LD_ADDR_EXP 3
3274: PUSH
3275: LD_STRING Petrovova
3277: PPUSH
3278: CALL_OW 25
3282: ST_TO_ADDR
// dolgov = NewCharacter ( Dolgov ) ;
3283: LD_ADDR_EXP 4
3287: PUSH
3288: LD_STRING Dolgov
3290: PPUSH
3291: CALL_OW 25
3295: ST_TO_ADDR
// karamazov = NewCharacter ( Karamazov ) ;
3296: LD_ADDR_EXP 5
3300: PUSH
3301: LD_STRING Karamazov
3303: PPUSH
3304: CALL_OW 25
3308: ST_TO_ADDR
// titov = NewCharacter ( Titov ) ;
3309: LD_ADDR_EXP 6
3313: PUSH
3314: LD_STRING Titov
3316: PPUSH
3317: CALL_OW 25
3321: ST_TO_ADDR
// kozlov = NewCharacter ( Kozlov ) ;
3322: LD_ADDR_EXP 7
3326: PUSH
3327: LD_STRING Kozlov
3329: PPUSH
3330: CALL_OW 25
3334: ST_TO_ADDR
// kapitsova = NewCharacter ( Kapitsova ) ;
3335: LD_ADDR_EXP 8
3339: PUSH
3340: LD_STRING Kapitsova
3342: PPUSH
3343: CALL_OW 25
3347: ST_TO_ADDR
// alice = NewCharacter ( Alice ) ;
3348: LD_ADDR_EXP 10
3352: PUSH
3353: LD_STRING Alice
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 3817
// 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
// begin uc_side = arab ;
3612: LD_ADDR_OWVAR 20
3616: PUSH
3617: LD_EXP 23
3621: ST_TO_ADDR
// uc_nation = nation_arabian ;
3622: LD_ADDR_OWVAR 21
3626: PUSH
3627: LD_INT 2
3629: ST_TO_ADDR
// hc_class = 1 ;
3630: LD_ADDR_OWVAR 28
3634: PUSH
3635: LD_INT 1
3637: ST_TO_ADDR
// richard = NewCharacter ( Richard ) ;
3638: LD_ADDR_EXP 9
3642: PUSH
3643: LD_STRING Richard
3645: PPUSH
3646: CALL_OW 25
3650: ST_TO_ADDR
// richard_saved = true ;
3651: LD_ADDR_EXP 40
3655: PUSH
3656: LD_INT 1
3658: ST_TO_ADDR
// end ; for i in [ vsevolod , gnevko , petrovova , dolgov , karamazov , titov , kozlov , kapitsova , kvantovy , mikhail ] do
3659: LD_ADDR_VAR 0 2
3663: PUSH
3664: LD_EXP 1
3668: PUSH
3669: LD_EXP 2
3673: PUSH
3674: LD_EXP 3
3678: PUSH
3679: LD_EXP 4
3683: PUSH
3684: LD_EXP 5
3688: PUSH
3689: LD_EXP 6
3693: PUSH
3694: LD_EXP 7
3698: PUSH
3699: LD_EXP 8
3703: PUSH
3704: LD_EXP 12
3708: PUSH
3709: LD_EXP 14
3713: PUSH
3714: EMPTY
3715: LIST
3716: LIST
3717: LIST
3718: LIST
3719: LIST
3720: LIST
3721: LIST
3722: LIST
3723: LIST
3724: LIST
3725: PUSH
3726: FOR_IN
3727: IFFALSE 3758
// if GetClass ( i ) = class_bazooker then
3729: LD_VAR 0 2
3733: PPUSH
3734: CALL_OW 257
3738: PUSH
3739: LD_INT 9
3741: EQUAL
3742: IFFALSE 3756
// SetClass ( i , 1 ) ;
3744: LD_VAR 0 2
3748: PPUSH
3749: LD_INT 1
3751: PPUSH
3752: CALL_OW 336
3756: GO 3726
3758: POP
3759: POP
// if gnevko then
3760: LD_EXP 2
3764: IFFALSE 3796
// begin GiveSkillBonus ( gnevko , skill_combat , 1 ) ;
3766: LD_EXP 2
3770: PPUSH
3771: LD_INT 1
3773: PPUSH
3774: LD_INT 1
3776: PPUSH
3777: CALL_OW 238
// GiveSkillBonus ( gnevko , skill_mechanical , 1 ) ;
3781: LD_EXP 2
3785: PPUSH
3786: LD_INT 3
3788: PPUSH
3789: LD_INT 1
3791: PPUSH
3792: CALL_OW 238
// end ; if karamazov then
3796: LD_EXP 5
3800: IFFALSE 3817
// GiveSkillBonus ( karamazov , skill_engineering , 1 ) ;
3802: LD_EXP 5
3806: PPUSH
3807: LD_INT 2
3809: PPUSH
3810: LD_INT 1
3812: PPUSH
3813: CALL_OW 238
// end ; end ;
3817: LD_VAR 0 1
3821: RET
// export function BLevely ; begin
3822: LD_INT 0
3824: PPUSH
// SetBLevel ( ( FilterAllUnits ( [ [ f_type , unit_building ] , [ f_side , purple ] ] ) ) , GetSkill ( FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] , [ f_class , class_engineer ] ] ) [ 1 ] , skill_engineering ) ) ;
3825: LD_INT 21
3827: PUSH
3828: LD_INT 3
3830: PUSH
3831: EMPTY
3832: LIST
3833: LIST
3834: PUSH
3835: LD_INT 22
3837: PUSH
3838: LD_EXP 22
3842: PUSH
3843: EMPTY
3844: LIST
3845: LIST
3846: PUSH
3847: EMPTY
3848: LIST
3849: LIST
3850: PPUSH
3851: CALL_OW 69
3855: PPUSH
3856: LD_INT 52
3858: PUSH
3859: EMPTY
3860: LIST
3861: PUSH
3862: LD_INT 22
3864: PUSH
3865: LD_EXP 22
3869: PUSH
3870: EMPTY
3871: LIST
3872: LIST
3873: PUSH
3874: LD_INT 25
3876: PUSH
3877: LD_INT 2
3879: PUSH
3880: EMPTY
3881: LIST
3882: LIST
3883: PUSH
3884: EMPTY
3885: LIST
3886: LIST
3887: LIST
3888: PPUSH
3889: CALL_OW 69
3893: PUSH
3894: LD_INT 1
3896: ARRAY
3897: PPUSH
3898: LD_INT 2
3900: PPUSH
3901: CALL_OW 259
3905: PPUSH
3906: 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 ) ) ;
3910: LD_INT 21
3912: PUSH
3913: LD_INT 3
3915: PUSH
3916: EMPTY
3917: LIST
3918: LIST
3919: PUSH
3920: LD_INT 22
3922: PUSH
3923: LD_EXP 23
3927: PUSH
3928: EMPTY
3929: LIST
3930: LIST
3931: PUSH
3932: EMPTY
3933: LIST
3934: LIST
3935: PPUSH
3936: CALL_OW 69
3940: PPUSH
3941: LD_INT 52
3943: PUSH
3944: EMPTY
3945: LIST
3946: PUSH
3947: LD_INT 22
3949: PUSH
3950: LD_EXP 23
3954: PUSH
3955: EMPTY
3956: LIST
3957: LIST
3958: PUSH
3959: LD_INT 25
3961: PUSH
3962: LD_INT 2
3964: PUSH
3965: EMPTY
3966: LIST
3967: LIST
3968: PUSH
3969: EMPTY
3970: LIST
3971: LIST
3972: LIST
3973: PPUSH
3974: CALL_OW 69
3978: PUSH
3979: LD_INT 1
3981: ARRAY
3982: PPUSH
3983: LD_INT 2
3985: PPUSH
3986: CALL_OW 259
3990: PPUSH
3991: 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 ) ) ;
3995: LD_INT 21
3997: PUSH
3998: LD_INT 3
4000: PUSH
4001: EMPTY
4002: LIST
4003: LIST
4004: PUSH
4005: LD_INT 22
4007: PUSH
4008: LD_EXP 24
4012: PUSH
4013: EMPTY
4014: LIST
4015: LIST
4016: PUSH
4017: EMPTY
4018: LIST
4019: LIST
4020: PPUSH
4021: CALL_OW 69
4025: PPUSH
4026: LD_INT 52
4028: PUSH
4029: EMPTY
4030: LIST
4031: PUSH
4032: LD_INT 22
4034: PUSH
4035: LD_EXP 24
4039: PUSH
4040: EMPTY
4041: LIST
4042: LIST
4043: PUSH
4044: LD_INT 25
4046: PUSH
4047: LD_INT 2
4049: PUSH
4050: EMPTY
4051: LIST
4052: LIST
4053: PUSH
4054: EMPTY
4055: LIST
4056: LIST
4057: LIST
4058: PPUSH
4059: CALL_OW 69
4063: PUSH
4064: LD_INT 1
4066: ARRAY
4067: PPUSH
4068: LD_INT 2
4070: PPUSH
4071: CALL_OW 259
4075: PPUSH
4076: CALL_OW 241
// end ;
4080: LD_VAR 0 1
4084: RET
// export function NaplnVsechnyBudovyLidma ; var un ; var b , i , bunkry ; begin
4085: LD_INT 0
4087: PPUSH
4088: PPUSH
4089: PPUSH
4090: PPUSH
4091: PPUSH
// for b in FilterUnitsExceptArea ( ArBazaDruha , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ) do
4092: LD_ADDR_VAR 0 3
4096: PUSH
4097: LD_INT 12
4099: PPUSH
4100: LD_INT 2
4102: PUSH
4103: LD_INT 30
4105: PUSH
4106: LD_INT 32
4108: PUSH
4109: EMPTY
4110: LIST
4111: LIST
4112: PUSH
4113: LD_INT 30
4115: PUSH
4116: LD_INT 31
4118: PUSH
4119: EMPTY
4120: LIST
4121: LIST
4122: PUSH
4123: EMPTY
4124: LIST
4125: LIST
4126: LIST
4127: PPUSH
4128: CALL_OW 71
4132: PUSH
4133: FOR_IN
4134: IFFALSE 4269
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4136: LD_ADDR_VAR 0 2
4140: PUSH
4141: LD_INT 1
4143: PPUSH
4144: LD_EXP 64
4148: PPUSH
4149: LD_EXP 65
4153: PPUSH
4154: LD_VAR 0 3
4158: PPUSH
4159: CALL_OW 248
4163: PPUSH
4164: LD_VAR 0 3
4168: PPUSH
4169: CALL_OW 255
4173: PPUSH
4174: CALL 2566 0 5
4178: ST_TO_ADDR
// SetDir ( un , GetDir ( b ) + 3 ) ;
4179: LD_VAR 0 2
4183: PPUSH
4184: LD_VAR 0 3
4188: PPUSH
4189: CALL_OW 254
4193: PUSH
4194: LD_INT 3
4196: PLUS
4197: PPUSH
4198: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
4202: LD_VAR 0 2
4206: PPUSH
4207: LD_VAR 0 3
4211: PPUSH
4212: CALL_OW 52
// if GetBType ( b ) = b_breastwork and GetNation ( b ) = nation_arabian and Prob ( 50 ) then
4216: LD_VAR 0 3
4220: PPUSH
4221: CALL_OW 266
4225: PUSH
4226: LD_INT 31
4228: EQUAL
4229: PUSH
4230: LD_VAR 0 3
4234: PPUSH
4235: CALL_OW 248
4239: PUSH
4240: LD_INT 2
4242: EQUAL
4243: AND
4244: PUSH
4245: LD_INT 50
4247: PPUSH
4248: CALL_OW 13
4252: AND
4253: IFFALSE 4267
// SetClass ( un , 8 ) ;
4255: LD_VAR 0 2
4259: PPUSH
4260: LD_INT 8
4262: PPUSH
4263: CALL_OW 336
// end ;
4267: GO 4133
4269: POP
4270: POP
// for b in FilterAllUnits ( [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) do
4271: LD_ADDR_VAR 0 3
4275: PUSH
4276: LD_INT 2
4278: PUSH
4279: LD_INT 30
4281: PUSH
4282: LD_INT 4
4284: PUSH
4285: EMPTY
4286: LIST
4287: LIST
4288: PUSH
4289: LD_INT 30
4291: PUSH
4292: LD_INT 5
4294: PUSH
4295: EMPTY
4296: LIST
4297: LIST
4298: PUSH
4299: EMPTY
4300: LIST
4301: LIST
4302: LIST
4303: PPUSH
4304: CALL_OW 69
4308: PUSH
4309: FOR_IN
4310: IFFALSE 4780
// begin if GetSide ( b ) = purple then
4312: LD_VAR 0 3
4316: PPUSH
4317: CALL_OW 255
4321: PUSH
4322: LD_EXP 22
4326: EQUAL
4327: IFFALSE 4440
// begin for i = 1 to dif_enemy_lidi_kasa - 2 do
4329: LD_ADDR_VAR 0 4
4333: PUSH
4334: DOUBLE
4335: LD_INT 1
4337: DEC
4338: ST_TO_ADDR
4339: LD_EXP 61
4343: PUSH
4344: LD_INT 2
4346: MINUS
4347: PUSH
4348: FOR_TO
4349: IFFALSE 4438
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4351: LD_ADDR_VAR 0 2
4355: PUSH
4356: LD_INT 1
4358: PPUSH
4359: LD_EXP 64
4363: PPUSH
4364: LD_EXP 65
4368: PPUSH
4369: LD_VAR 0 3
4373: PPUSH
4374: CALL_OW 248
4378: PPUSH
4379: LD_VAR 0 3
4383: PPUSH
4384: CALL_OW 255
4388: PPUSH
4389: CALL 2566 0 5
4393: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4394: LD_VAR 0 2
4398: PPUSH
4399: LD_VAR 0 3
4403: PPUSH
4404: CALL_OW 52
// if i = dif_enemy_lidi_kasa - 2 then
4408: LD_VAR 0 4
4412: PUSH
4413: LD_EXP 61
4417: PUSH
4418: LD_INT 2
4420: MINUS
4421: EQUAL
4422: IFFALSE 4436
// SetClass ( un , 5 ) ;
4424: LD_VAR 0 2
4428: PPUSH
4429: LD_INT 5
4431: PPUSH
4432: CALL_OW 336
// end ;
4436: GO 4348
4438: POP
4439: POP
// end ; if GetSide ( b ) = amik then
4440: LD_VAR 0 3
4444: PPUSH
4445: CALL_OW 255
4449: PUSH
4450: LD_EXP 24
4454: EQUAL
4455: IFFALSE 4569
// begin for i = 1 to dif_enemy_lidi_kasa do
4457: LD_ADDR_VAR 0 4
4461: PUSH
4462: DOUBLE
4463: LD_INT 1
4465: DEC
4466: ST_TO_ADDR
4467: LD_EXP 61
4471: PUSH
4472: FOR_TO
4473: IFFALSE 4567
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4475: LD_ADDR_VAR 0 2
4479: PUSH
4480: LD_INT 1
4482: PPUSH
4483: LD_EXP 64
4487: PPUSH
4488: LD_EXP 65
4492: PPUSH
4493: LD_VAR 0 3
4497: PPUSH
4498: CALL_OW 248
4502: PPUSH
4503: LD_VAR 0 3
4507: PPUSH
4508: CALL_OW 255
4512: PPUSH
4513: CALL 2566 0 5
4517: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4518: LD_VAR 0 2
4522: PPUSH
4523: LD_VAR 0 3
4527: PPUSH
4528: CALL_OW 52
// if i = dif_enemy_lidi_kasa and Prob ( 50 ) then
4532: LD_VAR 0 4
4536: PUSH
4537: LD_EXP 61
4541: EQUAL
4542: PUSH
4543: LD_INT 50
4545: PPUSH
4546: CALL_OW 13
4550: AND
4551: IFFALSE 4565
// SetClass ( un , 5 ) ;
4553: LD_VAR 0 2
4557: PPUSH
4558: LD_INT 5
4560: PPUSH
4561: CALL_OW 336
// end ;
4565: GO 4472
4567: POP
4568: POP
// end ; if GetSide ( b ) = arab then
4569: LD_VAR 0 3
4573: PPUSH
4574: CALL_OW 255
4578: PUSH
4579: LD_EXP 23
4583: EQUAL
4584: IFFALSE 4778
// begin for i = 1 to dif_enemy_lidi_kasa do
4586: LD_ADDR_VAR 0 4
4590: PUSH
4591: DOUBLE
4592: LD_INT 1
4594: DEC
4595: ST_TO_ADDR
4596: LD_EXP 61
4600: PUSH
4601: FOR_TO
4602: IFFALSE 4776
// begin if GetBType ( b ) = b_armoury and i in [ dif_enemy_lidi_kasa , dif_enemy_lidi_kasa - 1 ] then
4604: LD_VAR 0 3
4608: PPUSH
4609: CALL_OW 266
4613: PUSH
4614: LD_INT 4
4616: EQUAL
4617: PUSH
4618: LD_VAR 0 4
4622: PUSH
4623: LD_EXP 61
4627: PUSH
4628: LD_EXP 61
4632: PUSH
4633: LD_INT 1
4635: MINUS
4636: PUSH
4637: EMPTY
4638: LIST
4639: LIST
4640: IN
4641: AND
4642: IFFALSE 4646
// else
4644: GO 4774
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
4646: LD_ADDR_VAR 0 2
4650: PUSH
4651: LD_INT 1
4653: PPUSH
4654: LD_EXP 64
4658: PPUSH
4659: LD_EXP 65
4663: PPUSH
4664: LD_VAR 0 3
4668: PPUSH
4669: CALL_OW 248
4673: PPUSH
4674: LD_VAR 0 3
4678: PPUSH
4679: CALL_OW 255
4683: PPUSH
4684: CALL 2566 0 5
4688: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
4689: LD_VAR 0 2
4693: PPUSH
4694: LD_VAR 0 3
4698: PPUSH
4699: 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
4703: LD_VAR 0 4
4707: PUSH
4708: LD_EXP 61
4712: EQUAL
4713: PUSH
4714: LD_VAR 0 4
4718: PUSH
4719: LD_EXP 61
4723: PUSH
4724: LD_INT 1
4726: MINUS
4727: EQUAL
4728: OR
4729: PUSH
4730: LD_VAR 0 3
4734: PPUSH
4735: CALL_OW 266
4739: PUSH
4740: LD_INT 4
4742: EQUAL
4743: PUSH
4744: LD_VAR 0 4
4748: PUSH
4749: LD_EXP 61
4753: PUSH
4754: LD_INT 2
4756: MINUS
4757: EQUAL
4758: AND
4759: OR
4760: IFFALSE 4774
// SetClass ( un , 8 ) ;
4762: LD_VAR 0 2
4766: PPUSH
4767: LD_INT 8
4769: PPUSH
4770: CALL_OW 336
// end ; end ;
4774: GO 4601
4776: POP
4777: POP
// end ; end ;
4778: GO 4309
4780: POP
4781: 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
4782: LD_ADDR_VAR 0 3
4786: PUSH
4787: LD_INT 2
4789: PUSH
4790: LD_INT 30
4792: PUSH
4793: LD_INT 6
4795: PUSH
4796: EMPTY
4797: LIST
4798: LIST
4799: PUSH
4800: LD_INT 30
4802: PUSH
4803: LD_INT 7
4805: PUSH
4806: EMPTY
4807: LIST
4808: LIST
4809: PUSH
4810: LD_INT 30
4812: PUSH
4813: LD_INT 8
4815: PUSH
4816: EMPTY
4817: LIST
4818: LIST
4819: PUSH
4820: LD_INT 30
4822: PUSH
4823: LD_INT 9
4825: PUSH
4826: EMPTY
4827: LIST
4828: LIST
4829: PUSH
4830: LD_INT 30
4832: PUSH
4833: LD_INT 10
4835: PUSH
4836: EMPTY
4837: LIST
4838: LIST
4839: PUSH
4840: LD_INT 30
4842: PUSH
4843: LD_INT 11
4845: PUSH
4846: EMPTY
4847: LIST
4848: LIST
4849: PUSH
4850: LD_INT 30
4852: PUSH
4853: LD_INT 12
4855: PUSH
4856: EMPTY
4857: LIST
4858: LIST
4859: PUSH
4860: LD_INT 30
4862: PUSH
4863: LD_INT 13
4865: PUSH
4866: EMPTY
4867: LIST
4868: LIST
4869: PUSH
4870: LD_INT 30
4872: PUSH
4873: LD_INT 14
4875: PUSH
4876: EMPTY
4877: LIST
4878: LIST
4879: PUSH
4880: LD_INT 30
4882: PUSH
4883: LD_INT 15
4885: PUSH
4886: EMPTY
4887: LIST
4888: LIST
4889: PUSH
4890: LD_INT 30
4892: PUSH
4893: LD_INT 3
4895: PUSH
4896: EMPTY
4897: LIST
4898: LIST
4899: PUSH
4900: LD_INT 30
4902: PUSH
4903: LD_INT 2
4905: PUSH
4906: EMPTY
4907: LIST
4908: LIST
4909: PUSH
4910: LD_INT 30
4912: PUSH
4913: LD_INT 36
4915: PUSH
4916: EMPTY
4917: LIST
4918: LIST
4919: PUSH
4920: EMPTY
4921: LIST
4922: LIST
4923: LIST
4924: LIST
4925: LIST
4926: LIST
4927: LIST
4928: LIST
4929: LIST
4930: LIST
4931: LIST
4932: LIST
4933: LIST
4934: LIST
4935: PPUSH
4936: CALL_OW 69
4940: PUSH
4941: FOR_IN
4942: IFFALSE 5238
// begin if not GetBType ( b ) = b_control_tower then
4944: LD_VAR 0 3
4948: PPUSH
4949: CALL_OW 266
4953: PUSH
4954: LD_INT 36
4956: EQUAL
4957: NOT
4958: IFFALSE 5159
// begin for i = 1 to dif_enemy_lidi_faclab do
4960: LD_ADDR_VAR 0 4
4964: PUSH
4965: DOUBLE
4966: LD_INT 1
4968: DEC
4969: ST_TO_ADDR
4970: LD_EXP 63
4974: PUSH
4975: FOR_TO
4976: IFFALSE 5155
// begin if GetSide ( b ) = purple and i > 4 then
4978: LD_VAR 0 3
4982: PPUSH
4983: CALL_OW 255
4987: PUSH
4988: LD_EXP 22
4992: EQUAL
4993: PUSH
4994: LD_VAR 0 4
4998: PUSH
4999: LD_INT 4
5001: GREATER
5002: AND
5003: IFFALSE 5007
// else
5005: GO 5153
// if GetSide ( b ) = arab and i > 4 then
5007: LD_VAR 0 3
5011: PPUSH
5012: CALL_OW 255
5016: PUSH
5017: LD_EXP 23
5021: EQUAL
5022: PUSH
5023: LD_VAR 0 4
5027: PUSH
5028: LD_INT 4
5030: GREATER
5031: AND
5032: IFFALSE 5036
// else
5034: GO 5153
// begin if GetBType ( b ) = b_factory then
5036: LD_VAR 0 3
5040: PPUSH
5041: CALL_OW 266
5045: PUSH
5046: LD_INT 3
5048: EQUAL
5049: IFFALSE 5096
// un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) else
5051: LD_ADDR_VAR 0 2
5055: PUSH
5056: LD_INT 3
5058: PPUSH
5059: LD_EXP 64
5063: PPUSH
5064: LD_EXP 65
5068: PPUSH
5069: LD_VAR 0 3
5073: PPUSH
5074: CALL_OW 248
5078: PPUSH
5079: LD_VAR 0 3
5083: PPUSH
5084: CALL_OW 255
5088: PPUSH
5089: CALL 2566 0 5
5093: ST_TO_ADDR
5094: GO 5139
// un = VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5096: LD_ADDR_VAR 0 2
5100: PUSH
5101: LD_INT 4
5103: PPUSH
5104: LD_EXP 64
5108: PPUSH
5109: LD_EXP 65
5113: PPUSH
5114: LD_VAR 0 3
5118: PPUSH
5119: CALL_OW 248
5123: PPUSH
5124: LD_VAR 0 3
5128: PPUSH
5129: CALL_OW 255
5133: PPUSH
5134: CALL 2566 0 5
5138: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5139: LD_VAR 0 2
5143: PPUSH
5144: LD_VAR 0 3
5148: PPUSH
5149: CALL_OW 52
// end ; end ;
5153: GO 4975
5155: POP
5156: POP
// end else
5157: GO 5236
// begin for i = 1 to 3 do
5159: LD_ADDR_VAR 0 4
5163: PUSH
5164: DOUBLE
5165: LD_INT 1
5167: DEC
5168: ST_TO_ADDR
5169: LD_INT 3
5171: PUSH
5172: FOR_TO
5173: IFFALSE 5234
// begin un = VytvorCloveka ( 3 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5175: LD_ADDR_VAR 0 2
5179: PUSH
5180: LD_INT 3
5182: PPUSH
5183: LD_EXP 64
5187: PPUSH
5188: LD_EXP 65
5192: PPUSH
5193: LD_VAR 0 3
5197: PPUSH
5198: CALL_OW 248
5202: PPUSH
5203: LD_VAR 0 3
5207: PPUSH
5208: CALL_OW 255
5212: PPUSH
5213: CALL 2566 0 5
5217: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5218: LD_VAR 0 2
5222: PPUSH
5223: LD_VAR 0 3
5227: PPUSH
5228: CALL_OW 52
// end ;
5232: GO 5172
5234: POP
5235: POP
// end ; end ;
5236: GO 4941
5238: POP
5239: POP
// if richard_saved then
5240: LD_EXP 40
5244: IFFALSE 5301
// PlaceHumanInUnit ( richard , FilterAllUnits ( [ [ f_type , unit_building ] , [ f_btype , b_warehouse ] , [ f_side , arab ] ] ) [ 1 ] ) ;
5246: LD_EXP 9
5250: PPUSH
5251: LD_INT 21
5253: PUSH
5254: LD_INT 3
5256: PUSH
5257: EMPTY
5258: LIST
5259: LIST
5260: PUSH
5261: LD_INT 30
5263: PUSH
5264: LD_INT 1
5266: PUSH
5267: EMPTY
5268: LIST
5269: LIST
5270: PUSH
5271: LD_INT 22
5273: PUSH
5274: LD_EXP 23
5278: PUSH
5279: EMPTY
5280: LIST
5281: LIST
5282: PUSH
5283: EMPTY
5284: LIST
5285: LIST
5286: LIST
5287: PPUSH
5288: CALL_OW 69
5292: PUSH
5293: LD_INT 1
5295: ARRAY
5296: PPUSH
5297: CALL_OW 52
// for b in FilterUnitsExceptArea ( ArBazaDruha , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) do
5301: LD_ADDR_VAR 0 3
5305: PUSH
5306: LD_INT 12
5308: PPUSH
5309: LD_INT 2
5311: PUSH
5312: LD_INT 30
5314: PUSH
5315: LD_INT 0
5317: PUSH
5318: EMPTY
5319: LIST
5320: LIST
5321: PUSH
5322: LD_INT 30
5324: PUSH
5325: LD_INT 1
5327: PUSH
5328: EMPTY
5329: LIST
5330: LIST
5331: PUSH
5332: EMPTY
5333: LIST
5334: LIST
5335: LIST
5336: PPUSH
5337: CALL_OW 71
5341: PUSH
5342: FOR_IN
5343: IFFALSE 5484
// begin for i = 1 to dif_enemy_lidi_sklad do
5345: LD_ADDR_VAR 0 4
5349: PUSH
5350: DOUBLE
5351: LD_INT 1
5353: DEC
5354: ST_TO_ADDR
5355: LD_EXP 62
5359: PUSH
5360: FOR_TO
5361: IFFALSE 5480
// begin if GetSide ( b ) = purple and i > 3 then
5363: LD_VAR 0 3
5367: PPUSH
5368: CALL_OW 255
5372: PUSH
5373: LD_EXP 22
5377: EQUAL
5378: PUSH
5379: LD_VAR 0 4
5383: PUSH
5384: LD_INT 3
5386: GREATER
5387: AND
5388: IFFALSE 5392
// else
5390: GO 5478
// if GetSide ( b ) = arab and i > 5 then
5392: LD_VAR 0 3
5396: PPUSH
5397: CALL_OW 255
5401: PUSH
5402: LD_EXP 23
5406: EQUAL
5407: PUSH
5408: LD_VAR 0 4
5412: PUSH
5413: LD_INT 5
5415: GREATER
5416: AND
5417: IFFALSE 5421
// else
5419: GO 5478
// begin un = VytvorCloveka ( 2 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( b ) , GetSide ( b ) ) ;
5421: LD_ADDR_VAR 0 2
5425: PUSH
5426: LD_INT 2
5428: PPUSH
5429: LD_EXP 64
5433: PPUSH
5434: LD_EXP 65
5438: PPUSH
5439: LD_VAR 0 3
5443: PPUSH
5444: CALL_OW 248
5448: PPUSH
5449: LD_VAR 0 3
5453: PPUSH
5454: CALL_OW 255
5458: PPUSH
5459: CALL 2566 0 5
5463: ST_TO_ADDR
// PlaceHumanInUnit ( un , b ) ;
5464: LD_VAR 0 2
5468: PPUSH
5469: LD_VAR 0 3
5473: PPUSH
5474: CALL_OW 52
// end ; end ;
5478: GO 5360
5480: POP
5481: POP
// end ;
5482: GO 5342
5484: POP
5485: POP
// end ;
5486: LD_VAR 0 1
5490: RET
// export function VyjdiVen ( un ) ; begin
5491: LD_INT 0
5493: PPUSH
// if IsInUnit ( un ) then
5494: LD_VAR 0 1
5498: PPUSH
5499: CALL_OW 310
5503: IFFALSE 5570
// begin if GetType ( IsInUnit ( un ) ) = unit_building then
5505: LD_VAR 0 1
5509: PPUSH
5510: CALL_OW 310
5514: PPUSH
5515: CALL_OW 247
5519: PUSH
5520: LD_INT 3
5522: EQUAL
5523: IFFALSE 5534
// ComExitBuilding ( un ) ;
5525: LD_VAR 0 1
5529: PPUSH
5530: CALL_OW 122
// if GetType ( IsInUnit ( un ) ) = unit_vehicle then
5534: LD_VAR 0 1
5538: PPUSH
5539: CALL_OW 310
5543: PPUSH
5544: CALL_OW 247
5548: PUSH
5549: LD_INT 2
5551: EQUAL
5552: IFFALSE 5563
// ComExitVehicle ( un ) ;
5554: LD_VAR 0 1
5558: PPUSH
5559: CALL_OW 121
// Wait ( 0 0$0.2 ) ;
5563: LD_INT 7
5565: PPUSH
5566: CALL_OW 67
// end ; end ;
5570: LD_VAR 0 2
5574: RET
// export function NearestUnitToUnit2 ( list , un ) ; begin
5575: LD_INT 0
5577: PPUSH
// if not list then
5578: LD_VAR 0 1
5582: NOT
5583: IFFALSE 5595
// result = false else
5585: LD_ADDR_VAR 0 3
5589: PUSH
5590: LD_INT 0
5592: ST_TO_ADDR
5593: GO 5656
// begin if IsInUnit ( un ) and GetType ( un ) <> unit_building then
5595: LD_VAR 0 2
5599: PPUSH
5600: CALL_OW 310
5604: PUSH
5605: LD_VAR 0 2
5609: PPUSH
5610: CALL_OW 247
5614: PUSH
5615: LD_INT 3
5617: NONEQUAL
5618: AND
5619: IFFALSE 5636
// un = IsInUnit ( un ) ;
5621: LD_ADDR_VAR 0 2
5625: PUSH
5626: LD_VAR 0 2
5630: PPUSH
5631: CALL_OW 310
5635: ST_TO_ADDR
// result = NearestUnitToUnit ( list , un ) ;
5636: LD_ADDR_VAR 0 3
5640: PUSH
5641: LD_VAR 0 1
5645: PPUSH
5646: LD_VAR 0 2
5650: PPUSH
5651: CALL_OW 74
5655: ST_TO_ADDR
// end ; end ;
5656: LD_VAR 0 3
5660: RET
// export function IsInArea2 ( jedn , un ) ; begin
5661: LD_INT 0
5663: PPUSH
// if not jedn or jedn = 0 then
5664: LD_VAR 0 1
5668: NOT
5669: PUSH
5670: LD_VAR 0 1
5674: PUSH
5675: LD_INT 0
5677: EQUAL
5678: OR
5679: IFFALSE 5691
// result = false else
5681: LD_ADDR_VAR 0 3
5685: PUSH
5686: LD_INT 0
5688: ST_TO_ADDR
5689: GO 5711
// result = IsInArea ( jedn , un ) ;
5691: LD_ADDR_VAR 0 3
5695: PUSH
5696: LD_VAR 0 1
5700: PPUSH
5701: LD_VAR 0 2
5705: PPUSH
5706: CALL_OW 308
5710: ST_TO_ADDR
// end ;
5711: LD_VAR 0 3
5715: RET
// export function See2 ( side , un ) ; var x , y ; begin
5716: LD_INT 0
5718: PPUSH
5719: PPUSH
5720: PPUSH
// if not IsPlaced ( un ) or side < 1 then
5721: LD_VAR 0 2
5725: PPUSH
5726: CALL_OW 305
5730: NOT
5731: PUSH
5732: LD_VAR 0 1
5736: PUSH
5737: LD_INT 1
5739: LESS
5740: OR
5741: IFFALSE 5753
// result = false else
5743: LD_ADDR_VAR 0 3
5747: PUSH
5748: LD_INT 0
5750: ST_TO_ADDR
5751: GO 5820
// begin x := GetX ( un ) ;
5753: LD_ADDR_VAR 0 4
5757: PUSH
5758: LD_VAR 0 2
5762: PPUSH
5763: CALL_OW 250
5767: ST_TO_ADDR
// y := GetY ( un ) ;
5768: LD_ADDR_VAR 0 5
5772: PUSH
5773: LD_VAR 0 2
5777: PPUSH
5778: CALL_OW 251
5782: ST_TO_ADDR
// if not un then
5783: LD_VAR 0 2
5787: NOT
5788: IFFALSE 5800
// result = false else
5790: LD_ADDR_VAR 0 3
5794: PUSH
5795: LD_INT 0
5797: ST_TO_ADDR
5798: GO 5820
// begin result = See ( side , un ) ;
5800: LD_ADDR_VAR 0 3
5804: PUSH
5805: LD_VAR 0 1
5809: PPUSH
5810: LD_VAR 0 2
5814: PPUSH
5815: CALL_OW 292
5819: ST_TO_ADDR
// end ; end ; end ;
5820: LD_VAR 0 3
5824: RET
// every 0 0$20 do var depot ;
5825: GO 5827
5827: DISABLE
5828: LD_INT 0
5830: PPUSH
// begin for depot in FilterAllUnits ( [ [ f_or , [ f_side , purple ] , [ f_side , amik ] , [ f_side , arab ] ] , [ f_ok ] , [ f_btype , b_warehouse ] ] ) do
5831: LD_ADDR_VAR 0 1
5835: PUSH
5836: LD_INT 2
5838: PUSH
5839: LD_INT 22
5841: PUSH
5842: LD_EXP 22
5846: PUSH
5847: EMPTY
5848: LIST
5849: LIST
5850: PUSH
5851: LD_INT 22
5853: PUSH
5854: LD_EXP 24
5858: PUSH
5859: EMPTY
5860: LIST
5861: LIST
5862: PUSH
5863: LD_INT 22
5865: PUSH
5866: LD_EXP 23
5870: PUSH
5871: EMPTY
5872: LIST
5873: LIST
5874: PUSH
5875: EMPTY
5876: LIST
5877: LIST
5878: LIST
5879: LIST
5880: PUSH
5881: LD_INT 50
5883: PUSH
5884: EMPTY
5885: LIST
5886: PUSH
5887: LD_INT 30
5889: PUSH
5890: LD_INT 1
5892: PUSH
5893: EMPTY
5894: LIST
5895: LIST
5896: PUSH
5897: EMPTY
5898: LIST
5899: LIST
5900: LIST
5901: PPUSH
5902: CALL_OW 69
5906: PUSH
5907: FOR_IN
5908: IFFALSE 5921
// SurovinyDoSkladu ( depot ) ;
5910: LD_VAR 0 1
5914: PPUSH
5915: CALL 5927 0 1
5919: GO 5907
5921: POP
5922: POP
// enable ;
5923: ENABLE
// end ;
5924: PPOPN 1
5926: END
// export function SurovinyDoSkladu ( sklad ) ; begin
5927: LD_INT 0
5929: PPUSH
// if GetSide ( sklad ) = you then
5930: LD_VAR 0 1
5934: PPUSH
5935: CALL_OW 255
5939: PUSH
5940: LD_EXP 21
5944: EQUAL
5945: IFFALSE 5949
// exit ;
5947: GO 6113
// if GetResourceType ( GetBase ( sklad ) , mat_cans ) < 200 then
5949: LD_VAR 0 1
5953: PPUSH
5954: CALL_OW 274
5958: PPUSH
5959: LD_INT 1
5961: PPUSH
5962: CALL_OW 275
5966: PUSH
5967: LD_INT 200
5969: LESS
5970: IFFALSE 5992
// AddResourceType ( GetBase ( sklad ) , mat_cans , 200 ) ;
5972: LD_VAR 0 1
5976: PPUSH
5977: CALL_OW 274
5981: PPUSH
5982: LD_INT 1
5984: PPUSH
5985: LD_INT 200
5987: PPUSH
5988: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_oil ) < 650 and GetSide ( sklad ) <> arab then
5992: LD_VAR 0 1
5996: PPUSH
5997: CALL_OW 274
6001: PPUSH
6002: LD_INT 2
6004: PPUSH
6005: CALL_OW 275
6009: PUSH
6010: LD_INT 650
6012: LESS
6013: PUSH
6014: LD_VAR 0 1
6018: PPUSH
6019: CALL_OW 255
6023: PUSH
6024: LD_EXP 23
6028: NONEQUAL
6029: AND
6030: IFFALSE 6052
// AddResourceType ( GetBase ( sklad ) , mat_oil , 100 ) ;
6032: LD_VAR 0 1
6036: PPUSH
6037: CALL_OW 274
6041: PPUSH
6042: LD_INT 2
6044: PPUSH
6045: LD_INT 100
6047: PPUSH
6048: CALL_OW 276
// if GetResourceType ( GetBase ( sklad ) , mat_siberit ) < 80 and GetSide ( sklad ) <> purple then
6052: LD_VAR 0 1
6056: PPUSH
6057: CALL_OW 274
6061: PPUSH
6062: LD_INT 3
6064: PPUSH
6065: CALL_OW 275
6069: PUSH
6070: LD_INT 80
6072: LESS
6073: PUSH
6074: LD_VAR 0 1
6078: PPUSH
6079: CALL_OW 255
6083: PUSH
6084: LD_EXP 22
6088: NONEQUAL
6089: AND
6090: IFFALSE 6112
// AddResourceType ( GetBase ( sklad ) , mat_siberit , 100 ) ;
6092: LD_VAR 0 1
6096: PPUSH
6097: CALL_OW 274
6101: PPUSH
6102: LD_INT 3
6104: PPUSH
6105: LD_INT 100
6107: PPUSH
6108: CALL_OW 276
// enable ;
6112: ENABLE
// end ;
6113: LD_VAR 0 2
6117: RET
// every 0 0$0.4 trigger tick > 100 do
6118: LD_OWVAR 1
6122: PUSH
6123: LD_INT 100
6125: GREATER
6126: IFFALSE 6180
6128: GO 6130
6130: DISABLE
// begin if not stopBlueAI then
6131: LD_EXP 19
6135: NOT
6136: IFFALSE 6147
// AI_cast2 ( amik ) ;
6138: LD_EXP 24
6142: PPUSH
6143: CALL 8902 0 1
// Wait ( 0 0$1.1 ) ;
6147: LD_INT 39
6149: PPUSH
6150: CALL_OW 67
// if not stopBlueAI then
6154: LD_EXP 19
6158: NOT
6159: IFFALSE 6170
// AI_cast1 ( amik ) ;
6161: LD_EXP 24
6165: PPUSH
6166: CALL 6237 0 1
// AI_cast1 ( purple ) ;
6170: LD_EXP 22
6174: PPUSH
6175: CALL 6237 0 1
// enable ;
6179: ENABLE
// end ;
6180: END
// every 0 0$0.75 trigger tick > 100 do
6181: LD_OWVAR 1
6185: PUSH
6186: LD_INT 100
6188: GREATER
6189: IFFALSE 6236
6191: GO 6193
6193: DISABLE
// begin AI_cast2 ( arab ) ;
6194: LD_EXP 23
6198: PPUSH
6199: CALL 8902 0 1
// Wait ( 0 0$0.4 ) ;
6203: LD_INT 14
6205: PPUSH
6206: CALL_OW 67
// AI_cast1 ( arab ) ;
6210: LD_EXP 23
6214: PPUSH
6215: CALL 6237 0 1
// AI_cast2 ( purple ) ;
6219: LD_EXP 22
6223: PPUSH
6224: CALL 8902 0 1
// Wait ( 0 0$0.3 ) ;
6228: LD_INT 10
6230: PPUSH
6231: CALL_OW 67
// enable ;
6235: ENABLE
// end ;
6236: 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
6237: LD_INT 0
6239: PPUSH
6240: PPUSH
6241: PPUSH
6242: PPUSH
6243: PPUSH
6244: PPUSH
6245: PPUSH
6246: PPUSH
6247: PPUSH
6248: PPUSH
6249: PPUSH
6250: PPUSH
6251: PPUSH
6252: PPUSH
6253: PPUSH
6254: PPUSH
6255: PPUSH
6256: PPUSH
6257: PPUSH
// side = strana ;
6258: LD_ADDR_VAR 0 4
6262: PUSH
6263: LD_VAR 0 1
6267: ST_TO_ADDR
// begin inzenyri = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_engineer ] ] ) ;
6268: LD_ADDR_VAR 0 10
6272: PUSH
6273: LD_INT 50
6275: PUSH
6276: EMPTY
6277: LIST
6278: PUSH
6279: LD_INT 22
6281: PUSH
6282: LD_VAR 0 4
6286: PUSH
6287: EMPTY
6288: LIST
6289: LIST
6290: PUSH
6291: LD_INT 25
6293: PUSH
6294: LD_INT 2
6296: PUSH
6297: EMPTY
6298: LIST
6299: LIST
6300: PUSH
6301: EMPTY
6302: LIST
6303: LIST
6304: LIST
6305: PPUSH
6306: CALL_OW 69
6310: ST_TO_ADDR
// b = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , hranice_budova_repair ] ] ] ) ;
6311: LD_ADDR_VAR 0 6
6315: PUSH
6316: LD_INT 52
6318: PUSH
6319: EMPTY
6320: LIST
6321: PUSH
6322: LD_INT 22
6324: PUSH
6325: LD_VAR 0 4
6329: PUSH
6330: EMPTY
6331: LIST
6332: LIST
6333: PUSH
6334: LD_INT 21
6336: PUSH
6337: LD_INT 3
6339: PUSH
6340: EMPTY
6341: LIST
6342: LIST
6343: PUSH
6344: LD_INT 3
6346: PUSH
6347: LD_INT 24
6349: PUSH
6350: LD_EXP 48
6354: PUSH
6355: EMPTY
6356: LIST
6357: LIST
6358: PUSH
6359: EMPTY
6360: LIST
6361: LIST
6362: PUSH
6363: EMPTY
6364: LIST
6365: LIST
6366: LIST
6367: LIST
6368: PPUSH
6369: CALL_OW 69
6373: ST_TO_ADDR
// b_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
6374: LD_ADDR_VAR 0 7
6378: PUSH
6379: LD_INT 52
6381: PUSH
6382: EMPTY
6383: LIST
6384: PUSH
6385: LD_INT 22
6387: PUSH
6388: LD_VAR 0 4
6392: PUSH
6393: EMPTY
6394: LIST
6395: LIST
6396: PUSH
6397: LD_INT 21
6399: PUSH
6400: LD_INT 3
6402: PUSH
6403: EMPTY
6404: LIST
6405: LIST
6406: PUSH
6407: LD_INT 3
6409: PUSH
6410: LD_INT 24
6412: PUSH
6413: LD_INT 250
6415: PUSH
6416: EMPTY
6417: LIST
6418: LIST
6419: PUSH
6420: EMPTY
6421: LIST
6422: LIST
6423: PUSH
6424: EMPTY
6425: LIST
6426: LIST
6427: LIST
6428: LIST
6429: PPUSH
6430: CALL_OW 69
6434: ST_TO_ADDR
// sklady = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_btype , b_warehouse ] ] ) ;
6435: LD_ADDR_VAR 0 9
6439: PUSH
6440: LD_INT 50
6442: PUSH
6443: EMPTY
6444: LIST
6445: PUSH
6446: LD_INT 22
6448: PUSH
6449: LD_VAR 0 4
6453: PUSH
6454: EMPTY
6455: LIST
6456: LIST
6457: PUSH
6458: LD_INT 30
6460: PUSH
6461: LD_INT 1
6463: PUSH
6464: EMPTY
6465: LIST
6466: LIST
6467: PUSH
6468: EMPTY
6469: LIST
6470: LIST
6471: LIST
6472: PPUSH
6473: CALL_OW 69
6477: ST_TO_ADDR
// if inzenyri then
6478: LD_VAR 0 10
6482: IFFALSE 7008
// for un in inzenyri do
6484: LD_ADDR_VAR 0 5
6488: PUSH
6489: LD_VAR 0 10
6493: PUSH
6494: FOR_IN
6495: IFFALSE 7006
// begin if GetLives ( un ) < hranice_leceni_utek then
6497: LD_VAR 0 5
6501: PPUSH
6502: CALL_OW 256
6506: PUSH
6507: LD_EXP 47
6511: LESS
6512: IFFALSE 6525
// UtecDoNejblizsiHealOblasti ( un ) else
6514: LD_VAR 0 5
6518: PPUSH
6519: CALL 11904 0 1
6523: GO 7004
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
6525: LD_VAR 0 5
6529: PPUSH
6530: CALL_OW 256
6534: PUSH
6535: LD_INT 1000
6537: LESS
6538: PUSH
6539: LD_VAR 0 5
6543: PPUSH
6544: LD_VAR 0 5
6548: PPUSH
6549: CALL 11202 0 1
6553: PPUSH
6554: CALL 5661 0 2
6558: AND
6559: IFFALSE 6563
// else
6561: GO 7004
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
6563: LD_VAR 0 5
6567: PPUSH
6568: LD_VAR 0 5
6572: PPUSH
6573: CALL 11436 0 1
6577: PPUSH
6578: CALL_OW 299
6582: PUSH
6583: LD_INT 4
6585: GREATER
6586: IFFALSE 6609
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
6588: LD_VAR 0 5
6592: PPUSH
6593: LD_VAR 0 5
6597: PPUSH
6598: CALL 11319 0 1
6602: PPUSH
6603: CALL_OW 113
6607: GO 7004
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
6609: LD_VAR 0 7
6613: PUSH
6614: LD_VAR 0 5
6618: PPUSH
6619: LD_VAR 0 7
6623: PPUSH
6624: LD_VAR 0 5
6628: PPUSH
6629: CALL 5575 0 2
6633: PPUSH
6634: CALL_OW 296
6638: PUSH
6639: LD_EXP 46
6643: LESS
6644: AND
6645: IFFALSE 6688
// begin VyjdiVen ( un ) ;
6647: LD_VAR 0 5
6651: PPUSH
6652: CALL 5491 0 1
// if b_red then
6656: LD_VAR 0 7
6660: IFFALSE 6686
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
6662: LD_VAR 0 5
6666: PPUSH
6667: LD_VAR 0 7
6671: PPUSH
6672: LD_VAR 0 5
6676: PPUSH
6677: CALL 5575 0 2
6681: PPUSH
6682: CALL_OW 130
// end else
6686: GO 7004
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
6688: LD_VAR 0 6
6692: PUSH
6693: LD_VAR 0 5
6697: PPUSH
6698: LD_VAR 0 6
6702: PPUSH
6703: LD_VAR 0 5
6707: PPUSH
6708: CALL 5575 0 2
6712: PPUSH
6713: CALL_OW 296
6717: PUSH
6718: LD_EXP 46
6722: LESS
6723: AND
6724: IFFALSE 6767
// begin VyjdiVen ( un ) ;
6726: LD_VAR 0 5
6730: PPUSH
6731: CALL 5491 0 1
// if b then
6735: LD_VAR 0 6
6739: IFFALSE 6765
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
6741: LD_VAR 0 5
6745: PPUSH
6746: LD_VAR 0 6
6750: PPUSH
6751: LD_VAR 0 5
6755: PPUSH
6756: CALL 5575 0 2
6760: PPUSH
6761: CALL_OW 130
// end else
6765: GO 7004
// if GetListOfCratesInAreaBySide ( GetSide ( un ) ) then
6767: LD_VAR 0 5
6771: PPUSH
6772: CALL_OW 255
6776: PPUSH
6777: CALL 13405 0 1
6781: IFFALSE 6876
// begin bedny = GetListOfCratesInAreaBySide ( GetSide ( un ) ) ;
6783: LD_ADDR_VAR 0 8
6787: PUSH
6788: LD_VAR 0 5
6792: PPUSH
6793: CALL_OW 255
6797: PPUSH
6798: CALL 13405 0 1
6802: ST_TO_ADDR
// if GetDistUnitXY ( un , bedny [ 1 ] , bedny [ 2 ] ) < dist_max then
6803: LD_VAR 0 5
6807: PPUSH
6808: LD_VAR 0 8
6812: PUSH
6813: LD_INT 1
6815: ARRAY
6816: PPUSH
6817: LD_VAR 0 8
6821: PUSH
6822: LD_INT 2
6824: ARRAY
6825: PPUSH
6826: CALL_OW 297
6830: PUSH
6831: LD_EXP 46
6835: LESS
6836: IFFALSE 6874
// begin VyjdiVen ( un ) ;
6838: LD_VAR 0 5
6842: PPUSH
6843: CALL 5491 0 1
// ComCollect ( un , bedny [ 1 ] , bedny [ 2 ] ) ;
6847: LD_VAR 0 5
6851: PPUSH
6852: LD_VAR 0 8
6856: PUSH
6857: LD_INT 1
6859: ARRAY
6860: PPUSH
6861: LD_VAR 0 8
6865: PUSH
6866: LD_INT 2
6868: ARRAY
6869: PPUSH
6870: CALL_OW 117
// end ; end else
6874: GO 7004
// if not GetLives ( un ) = 1000 then
6876: LD_VAR 0 5
6880: PPUSH
6881: CALL_OW 256
6885: PUSH
6886: LD_INT 1000
6888: EQUAL
6889: NOT
6890: IFFALSE 6903
// UtecDoNejblizsiHealOblasti ( un ) else
6892: LD_VAR 0 5
6896: PPUSH
6897: CALL 11904 0 1
6901: GO 7004
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
6903: LD_VAR 0 5
6907: PPUSH
6908: CALL_OW 256
6912: PUSH
6913: LD_INT 1000
6915: EQUAL
6916: PUSH
6917: LD_VAR 0 5
6921: PPUSH
6922: CALL_OW 310
6926: PUSH
6927: LD_INT 0
6929: EQUAL
6930: AND
6931: IFFALSE 7004
// begin ComFree ( un ) ;
6933: LD_VAR 0 5
6937: PPUSH
6938: CALL_OW 139
// if sklady and GetDistUnits ( un , NearestUnitToUnit2 ( sklady , un ) ) < dist_max then
6942: LD_VAR 0 9
6946: PUSH
6947: LD_VAR 0 5
6951: PPUSH
6952: LD_VAR 0 9
6956: PPUSH
6957: LD_VAR 0 5
6961: PPUSH
6962: CALL 5575 0 2
6966: PPUSH
6967: CALL_OW 296
6971: PUSH
6972: LD_EXP 46
6976: LESS
6977: AND
6978: IFFALSE 7004
// ComEnterUnit ( un , NearestUnitToUnit2 ( sklady , un ) ) ;
6980: LD_VAR 0 5
6984: PPUSH
6985: LD_VAR 0 9
6989: PPUSH
6990: LD_VAR 0 5
6994: PPUSH
6995: CALL 5575 0 2
6999: PPUSH
7000: CALL_OW 120
// end ; end ;
7004: GO 6494
7006: POP
7007: POP
// jeraby = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , ru_crane ] ] ] ) ;
7008: LD_ADDR_VAR 0 16
7012: PUSH
7013: LD_INT 50
7015: PUSH
7016: EMPTY
7017: LIST
7018: PUSH
7019: LD_INT 22
7021: PUSH
7022: LD_VAR 0 4
7026: PUSH
7027: EMPTY
7028: LIST
7029: LIST
7030: PUSH
7031: LD_INT 2
7033: PUSH
7034: LD_INT 34
7036: PUSH
7037: LD_INT 13
7039: PUSH
7040: EMPTY
7041: LIST
7042: LIST
7043: PUSH
7044: LD_INT 34
7046: PUSH
7047: LD_INT 52
7049: PUSH
7050: EMPTY
7051: LIST
7052: LIST
7053: PUSH
7054: EMPTY
7055: LIST
7056: LIST
7057: LIST
7058: PUSH
7059: EMPTY
7060: LIST
7061: LIST
7062: LIST
7063: PPUSH
7064: CALL_OW 69
7068: ST_TO_ADDR
// if jeraby then
7069: LD_VAR 0 16
7073: IFFALSE 7400
// for un in jeraby do
7075: LD_ADDR_VAR 0 5
7079: PUSH
7080: LD_VAR 0 16
7084: PUSH
7085: FOR_IN
7086: IFFALSE 7398
// begin if GetLives ( un ) < hranice_oprava_utek then
7088: LD_VAR 0 5
7092: PPUSH
7093: CALL_OW 256
7097: PUSH
7098: LD_EXP 49
7102: LESS
7103: IFFALSE 7116
// UtecDoNejblizsiRepairOblasti ( un ) else
7105: LD_VAR 0 5
7109: PPUSH
7110: CALL 12014 0 1
7114: GO 7396
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
7116: LD_VAR 0 5
7120: PPUSH
7121: CALL_OW 256
7125: PUSH
7126: LD_INT 1000
7128: LESS
7129: PUSH
7130: LD_VAR 0 5
7134: PPUSH
7135: LD_VAR 0 5
7139: PPUSH
7140: CALL 11553 0 1
7144: PPUSH
7145: CALL 5661 0 2
7149: AND
7150: IFFALSE 7154
// else
7152: GO 7396
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7154: LD_VAR 0 5
7158: PPUSH
7159: LD_VAR 0 5
7163: PPUSH
7164: CALL 11436 0 1
7168: PPUSH
7169: CALL_OW 299
7173: PUSH
7174: LD_INT 4
7176: GREATER
7177: IFFALSE 7200
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
7179: LD_VAR 0 5
7183: PPUSH
7184: LD_VAR 0 5
7188: PPUSH
7189: CALL 11436 0 1
7193: PPUSH
7194: CALL_OW 113
7198: GO 7396
// if b_red and GetDistUnits ( un , NearestUnitToUnit2 ( b_red , un ) ) < dist_max then
7200: LD_VAR 0 7
7204: PUSH
7205: LD_VAR 0 5
7209: PPUSH
7210: LD_VAR 0 7
7214: PPUSH
7215: LD_VAR 0 5
7219: PPUSH
7220: CALL 5575 0 2
7224: PPUSH
7225: CALL_OW 296
7229: PUSH
7230: LD_EXP 46
7234: LESS
7235: AND
7236: IFFALSE 7279
// begin VyjdiVen ( un ) ;
7238: LD_VAR 0 5
7242: PPUSH
7243: CALL 5491 0 1
// if b_red then
7247: LD_VAR 0 7
7251: IFFALSE 7277
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b_red , un ) ) ;
7253: LD_VAR 0 5
7257: PPUSH
7258: LD_VAR 0 7
7262: PPUSH
7263: LD_VAR 0 5
7267: PPUSH
7268: CALL 5575 0 2
7272: PPUSH
7273: CALL_OW 130
// end else
7277: GO 7396
// if b and GetDistUnits ( un , NearestUnitToUnit2 ( b , un ) ) < dist_max then
7279: LD_VAR 0 6
7283: PUSH
7284: LD_VAR 0 5
7288: PPUSH
7289: LD_VAR 0 6
7293: PPUSH
7294: LD_VAR 0 5
7298: PPUSH
7299: CALL 5575 0 2
7303: PPUSH
7304: CALL_OW 296
7308: PUSH
7309: LD_EXP 46
7313: LESS
7314: AND
7315: IFFALSE 7358
// begin VyjdiVen ( un ) ;
7317: LD_VAR 0 5
7321: PPUSH
7322: CALL 5491 0 1
// if b then
7326: LD_VAR 0 6
7330: IFFALSE 7356
// ComRepairBuilding ( un , NearestUnitToUnit2 ( b , un ) ) ;
7332: LD_VAR 0 5
7336: PPUSH
7337: LD_VAR 0 6
7341: PPUSH
7342: LD_VAR 0 5
7346: PPUSH
7347: CALL 5575 0 2
7351: PPUSH
7352: CALL_OW 130
// end else
7356: GO 7396
// if not GetLives ( un ) > hranice_budova_repair then
7358: LD_VAR 0 5
7362: PPUSH
7363: CALL_OW 256
7367: PUSH
7368: LD_EXP 48
7372: GREATER
7373: NOT
7374: IFFALSE 7387
// UtecDoNejblizsiRepairOblasti ( un ) else
7376: LD_VAR 0 5
7380: PPUSH
7381: CALL 12014 0 1
7385: GO 7396
// UtecDoNejblizsiCarParkOblasti ( un ) ;
7387: LD_VAR 0 5
7391: PPUSH
7392: CALL 11962 0 1
// end ;
7396: GO 7085
7398: POP
7399: 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 ;
7400: LD_ADDR_VAR 0 11
7404: PUSH
7405: LD_INT 50
7407: PUSH
7408: EMPTY
7409: LIST
7410: PUSH
7411: LD_INT 22
7413: PUSH
7414: LD_VAR 0 4
7418: PUSH
7419: EMPTY
7420: LIST
7421: LIST
7422: PUSH
7423: LD_INT 56
7425: PUSH
7426: EMPTY
7427: LIST
7428: PUSH
7429: LD_INT 2
7431: PUSH
7432: LD_INT 25
7434: PUSH
7435: LD_INT 1
7437: PUSH
7438: EMPTY
7439: LIST
7440: LIST
7441: PUSH
7442: LD_INT 25
7444: PUSH
7445: LD_INT 5
7447: PUSH
7448: EMPTY
7449: LIST
7450: LIST
7451: PUSH
7452: LD_INT 25
7454: PUSH
7455: LD_INT 9
7457: PUSH
7458: EMPTY
7459: LIST
7460: LIST
7461: PUSH
7462: LD_INT 25
7464: PUSH
7465: LD_INT 8
7467: PUSH
7468: EMPTY
7469: LIST
7470: LIST
7471: PUSH
7472: EMPTY
7473: LIST
7474: LIST
7475: LIST
7476: LIST
7477: LIST
7478: PUSH
7479: EMPTY
7480: LIST
7481: LIST
7482: LIST
7483: LIST
7484: PPUSH
7485: CALL_OW 69
7489: PUSH
7490: LD_EXP 86
7494: DIFF
7495: 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 ] ] ] ) ;
7496: LD_ADDR_VAR 0 14
7500: PUSH
7501: LD_INT 52
7503: PUSH
7504: EMPTY
7505: LIST
7506: PUSH
7507: LD_INT 3
7509: PUSH
7510: LD_INT 57
7512: PUSH
7513: EMPTY
7514: LIST
7515: PUSH
7516: EMPTY
7517: LIST
7518: LIST
7519: PUSH
7520: LD_INT 50
7522: PUSH
7523: EMPTY
7524: LIST
7525: PUSH
7526: LD_INT 22
7528: PUSH
7529: LD_VAR 0 4
7533: PUSH
7534: EMPTY
7535: LIST
7536: LIST
7537: PUSH
7538: LD_INT 58
7540: PUSH
7541: EMPTY
7542: LIST
7543: PUSH
7544: LD_INT 2
7546: PUSH
7547: LD_INT 30
7549: PUSH
7550: LD_INT 31
7552: PUSH
7553: EMPTY
7554: LIST
7555: LIST
7556: PUSH
7557: LD_INT 30
7559: PUSH
7560: LD_INT 32
7562: PUSH
7563: EMPTY
7564: LIST
7565: LIST
7566: PUSH
7567: EMPTY
7568: LIST
7569: LIST
7570: LIST
7571: PUSH
7572: EMPTY
7573: LIST
7574: LIST
7575: LIST
7576: LIST
7577: LIST
7578: LIST
7579: PPUSH
7580: CALL_OW 69
7584: 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 ] ] ] ) ;
7585: LD_ADDR_VAR 0 15
7589: PUSH
7590: LD_INT 52
7592: PUSH
7593: EMPTY
7594: LIST
7595: PUSH
7596: LD_INT 3
7598: PUSH
7599: LD_INT 57
7601: PUSH
7602: EMPTY
7603: LIST
7604: PUSH
7605: EMPTY
7606: LIST
7607: LIST
7608: PUSH
7609: LD_INT 50
7611: PUSH
7612: EMPTY
7613: LIST
7614: PUSH
7615: LD_INT 22
7617: PUSH
7618: LD_VAR 0 4
7622: PUSH
7623: EMPTY
7624: LIST
7625: LIST
7626: PUSH
7627: LD_INT 2
7629: PUSH
7630: LD_INT 30
7632: PUSH
7633: LD_INT 4
7635: PUSH
7636: EMPTY
7637: LIST
7638: LIST
7639: PUSH
7640: LD_INT 30
7642: PUSH
7643: LD_INT 5
7645: PUSH
7646: EMPTY
7647: LIST
7648: LIST
7649: PUSH
7650: EMPTY
7651: LIST
7652: LIST
7653: LIST
7654: PUSH
7655: EMPTY
7656: LIST
7657: LIST
7658: LIST
7659: LIST
7660: LIST
7661: PPUSH
7662: CALL_OW 69
7666: ST_TO_ADDR
// for i in volne_kasy do
7667: LD_ADDR_VAR 0 3
7671: PUSH
7672: LD_VAR 0 15
7676: PUSH
7677: FOR_IN
7678: IFFALSE 7713
// if UnitsInside ( i ) > 5 then
7680: LD_VAR 0 3
7684: PPUSH
7685: CALL_OW 313
7689: PUSH
7690: LD_INT 5
7692: GREATER
7693: IFFALSE 7711
// volne_kasy = volne_kasy diff i ;
7695: LD_ADDR_VAR 0 15
7699: PUSH
7700: LD_VAR 0 15
7704: PUSH
7705: LD_VAR 0 3
7709: DIFF
7710: ST_TO_ADDR
7711: GO 7677
7713: POP
7714: POP
// if vojaci then
7715: LD_VAR 0 11
7719: IFFALSE 8107
// for un in vojaci do
7721: LD_ADDR_VAR 0 5
7725: PUSH
7726: LD_VAR 0 11
7730: PUSH
7731: FOR_IN
7732: IFFALSE 8105
// begin if GetLives ( un ) < hranice_leceni_utek then
7734: LD_VAR 0 5
7738: PPUSH
7739: CALL_OW 256
7743: PUSH
7744: LD_EXP 47
7748: LESS
7749: IFFALSE 7762
// UtecDoNejblizsiHealOblasti ( un ) else
7751: LD_VAR 0 5
7755: PPUSH
7756: CALL 11904 0 1
7760: GO 8103
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
7762: LD_VAR 0 5
7766: PPUSH
7767: CALL_OW 256
7771: PUSH
7772: LD_INT 1000
7774: LESS
7775: PUSH
7776: LD_VAR 0 5
7780: PPUSH
7781: LD_VAR 0 5
7785: PPUSH
7786: CALL 11202 0 1
7790: PPUSH
7791: CALL 5661 0 2
7795: AND
7796: IFFALSE 7800
// else
7798: GO 8103
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
7800: LD_VAR 0 5
7804: PPUSH
7805: LD_VAR 0 5
7809: PPUSH
7810: CALL 11436 0 1
7814: PPUSH
7815: CALL_OW 299
7819: PUSH
7820: LD_INT 4
7822: GREATER
7823: IFFALSE 7846
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
7825: LD_VAR 0 5
7829: PPUSH
7830: LD_VAR 0 5
7834: PPUSH
7835: CALL 11319 0 1
7839: PPUSH
7840: CALL_OW 113
7844: GO 8103
// if volne_bunkry then
7846: LD_VAR 0 14
7850: IFFALSE 7968
// begin for bunkr in volne_bunkry do
7852: LD_ADDR_VAR 0 12
7856: PUSH
7857: LD_VAR 0 14
7861: PUSH
7862: FOR_IN
7863: IFFALSE 7964
// begin if PocetJednotekCoJdouDoBudov ( vojaci ) = volne_bunkry + 0 then
7865: LD_VAR 0 11
7869: PPUSH
7870: CALL 12063 0 1
7874: PUSH
7875: LD_VAR 0 14
7879: PUSH
7880: LD_INT 0
7882: PLUS
7883: EQUAL
7884: IFFALSE 7888
// else
7886: GO 7962
// if GetDistUnits ( un , bunkr ) < dist_max and un = NejblizsiJednotkaCoNemaTask ( vojaci , bunkr ) then
7888: LD_VAR 0 5
7892: PPUSH
7893: LD_VAR 0 12
7897: PPUSH
7898: CALL_OW 296
7902: PUSH
7903: LD_EXP 46
7907: LESS
7908: PUSH
7909: LD_VAR 0 5
7913: PUSH
7914: LD_VAR 0 11
7918: PPUSH
7919: LD_VAR 0 12
7923: PPUSH
7924: CALL 12133 0 2
7928: EQUAL
7929: AND
7930: IFFALSE 7962
// begin ComEnterUnit ( un , bunkr ) ;
7932: LD_VAR 0 5
7936: PPUSH
7937: LD_VAR 0 12
7941: PPUSH
7942: CALL_OW 120
// volne_bunkry = volne_bunkry diff bunkr ;
7946: LD_ADDR_VAR 0 14
7950: PUSH
7951: LD_VAR 0 14
7955: PUSH
7956: LD_VAR 0 12
7960: DIFF
7961: ST_TO_ADDR
// end ; end ;
7962: GO 7862
7964: POP
7965: POP
// end else
7966: GO 8103
// if volne_kasy then
7968: LD_VAR 0 15
7972: IFFALSE 8066
// begin for kasa in volne_kasy do
7974: LD_ADDR_VAR 0 13
7978: PUSH
7979: LD_VAR 0 15
7983: PUSH
7984: FOR_IN
7985: IFFALSE 8062
// begin if UnitsInside ( kasa ) < 6 and un = NejblizsiJednotkaCoNemaTask ( vojaci , kasa ) and GetDistUnits ( un , kasa ) < dist_max then
7987: LD_VAR 0 13
7991: PPUSH
7992: CALL_OW 313
7996: PUSH
7997: LD_INT 6
7999: LESS
8000: PUSH
8001: LD_VAR 0 5
8005: PUSH
8006: LD_VAR 0 11
8010: PPUSH
8011: LD_VAR 0 13
8015: PPUSH
8016: CALL 12133 0 2
8020: EQUAL
8021: AND
8022: PUSH
8023: LD_VAR 0 5
8027: PPUSH
8028: LD_VAR 0 13
8032: PPUSH
8033: CALL_OW 296
8037: PUSH
8038: LD_EXP 46
8042: LESS
8043: AND
8044: IFFALSE 8060
// ComEnterUnit ( un , kasa ) ;
8046: LD_VAR 0 5
8050: PPUSH
8051: LD_VAR 0 13
8055: PPUSH
8056: CALL_OW 120
// end ;
8060: GO 7984
8062: POP
8063: POP
// end else
8064: GO 8103
// if not GetLives ( un ) = 1000 and not IsInUnit ( un ) then
8066: LD_VAR 0 5
8070: PPUSH
8071: CALL_OW 256
8075: PUSH
8076: LD_INT 1000
8078: EQUAL
8079: NOT
8080: PUSH
8081: LD_VAR 0 5
8085: PPUSH
8086: CALL_OW 310
8090: NOT
8091: AND
8092: IFFALSE 8103
// UtecDoNejblizsiHealOblasti ( un ) end ;
8094: LD_VAR 0 5
8098: PPUSH
8099: CALL 11904 0 1
8103: GO 7731
8105: POP
8106: POP
// snipy = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_inside ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_sniper ] ] , [ f_nation , nation_american ] ] ) ;
8107: LD_ADDR_VAR 0 19
8111: PUSH
8112: LD_INT 50
8114: PUSH
8115: EMPTY
8116: LIST
8117: PUSH
8118: LD_INT 22
8120: PUSH
8121: LD_VAR 0 4
8125: PUSH
8126: EMPTY
8127: LIST
8128: LIST
8129: PUSH
8130: LD_INT 54
8132: PUSH
8133: EMPTY
8134: LIST
8135: PUSH
8136: LD_INT 2
8138: PUSH
8139: LD_INT 25
8141: PUSH
8142: LD_INT 1
8144: PUSH
8145: EMPTY
8146: LIST
8147: LIST
8148: PUSH
8149: LD_INT 25
8151: PUSH
8152: LD_INT 5
8154: PUSH
8155: EMPTY
8156: LIST
8157: LIST
8158: PUSH
8159: EMPTY
8160: LIST
8161: LIST
8162: LIST
8163: PUSH
8164: LD_INT 23
8166: PUSH
8167: LD_INT 1
8169: PUSH
8170: EMPTY
8171: LIST
8172: LIST
8173: PUSH
8174: EMPTY
8175: LIST
8176: LIST
8177: LIST
8178: LIST
8179: LIST
8180: PPUSH
8181: CALL_OW 69
8185: ST_TO_ADDR
// if snipy then
8186: LD_VAR 0 19
8190: IFFALSE 8561
// for un in snipy do
8192: LD_ADDR_VAR 0 5
8196: PUSH
8197: LD_VAR 0 19
8201: PUSH
8202: FOR_IN
8203: IFFALSE 8559
// begin if GetBType ( IsInUnit ( un ) ) = b_barracks and GetNation ( IsInUnit ( un ) ) = nation_american then
8205: LD_VAR 0 5
8209: PPUSH
8210: CALL_OW 310
8214: PPUSH
8215: CALL_OW 266
8219: PUSH
8220: LD_INT 5
8222: EQUAL
8223: PUSH
8224: LD_VAR 0 5
8228: PPUSH
8229: CALL_OW 310
8233: PPUSH
8234: CALL_OW 248
8238: PUSH
8239: LD_INT 1
8241: EQUAL
8242: AND
8243: IFFALSE 8557
// 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 ] ] ] ] ] ) ;
8245: LD_ADDR_VAR 0 20
8249: PUSH
8250: LD_INT 2
8252: PUSH
8253: LD_INT 22
8255: PUSH
8256: LD_EXP 21
8260: PUSH
8261: EMPTY
8262: LIST
8263: LIST
8264: PUSH
8265: LD_INT 22
8267: PUSH
8268: LD_EXP 23
8272: PUSH
8273: EMPTY
8274: LIST
8275: LIST
8276: PUSH
8277: EMPTY
8278: LIST
8279: LIST
8280: LIST
8281: PUSH
8282: LD_INT 2
8284: PUSH
8285: LD_INT 21
8287: PUSH
8288: LD_INT 1
8290: PUSH
8291: EMPTY
8292: LIST
8293: LIST
8294: PUSH
8295: LD_INT 1
8297: PUSH
8298: LD_INT 21
8300: PUSH
8301: LD_INT 2
8303: PUSH
8304: EMPTY
8305: LIST
8306: LIST
8307: PUSH
8308: LD_INT 33
8310: PUSH
8311: LD_INT 1
8313: PUSH
8314: EMPTY
8315: LIST
8316: LIST
8317: PUSH
8318: LD_INT 3
8320: PUSH
8321: LD_INT 58
8323: PUSH
8324: EMPTY
8325: LIST
8326: PUSH
8327: EMPTY
8328: LIST
8329: LIST
8330: PUSH
8331: EMPTY
8332: LIST
8333: LIST
8334: LIST
8335: LIST
8336: PUSH
8337: EMPTY
8338: LIST
8339: LIST
8340: LIST
8341: PUSH
8342: EMPTY
8343: LIST
8344: LIST
8345: PPUSH
8346: CALL_OW 69
8350: 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
8351: LD_VAR 0 20
8355: PPUSH
8356: LD_VAR 0 5
8360: PPUSH
8361: CALL 5575 0 2
8365: PPUSH
8366: LD_VAR 0 5
8370: PPUSH
8371: CALL_OW 296
8375: PUSH
8376: LD_EXP 54
8380: LESSEQUAL
8381: PUSH
8382: LD_INT 12
8384: PPUSH
8385: LD_VAR 0 4
8389: PPUSH
8390: CALL_OW 321
8394: PUSH
8395: LD_INT 2
8397: EQUAL
8398: AND
8399: PUSH
8400: LD_INT 13
8402: PPUSH
8403: LD_VAR 0 4
8407: PPUSH
8408: CALL_OW 321
8412: PUSH
8413: LD_INT 2
8415: EQUAL
8416: AND
8417: IFFALSE 8529
// begin if not GetClass ( un ) = class_sniper then
8419: LD_VAR 0 5
8423: PPUSH
8424: CALL_OW 257
8428: PUSH
8429: LD_INT 5
8431: EQUAL
8432: NOT
8433: IFFALSE 8449
// ComChangeProfession ( un , class_sniper ) else
8435: LD_VAR 0 5
8439: PPUSH
8440: LD_INT 5
8442: PPUSH
8443: CALL_OW 123
8447: GO 8527
// begin dice = Rand ( 1 , 100 ) ;
8449: LD_ADDR_VAR 0 18
8453: PUSH
8454: LD_INT 1
8456: PPUSH
8457: LD_INT 100
8459: PPUSH
8460: CALL_OW 12
8464: ST_TO_ADDR
// if dice < dif_prob_uspavaci then
8465: LD_VAR 0 18
8469: PUSH
8470: LD_EXP 66
8474: LESS
8475: IFFALSE 8503
// ComAttackSoporific ( un , NearestUnitToUnit2 ( tmp , un ) ) else
8477: LD_VAR 0 5
8481: PPUSH
8482: LD_VAR 0 20
8486: PPUSH
8487: LD_VAR 0 5
8491: PPUSH
8492: CALL 5575 0 2
8496: PPUSH
8497: CALL_OW 166
8501: GO 8527
// ComAttackUnit ( un , NearestUnitToUnit2 ( tmp , un ) ) ;
8503: LD_VAR 0 5
8507: PPUSH
8508: LD_VAR 0 20
8512: PPUSH
8513: LD_VAR 0 5
8517: PPUSH
8518: CALL 5575 0 2
8522: PPUSH
8523: CALL_OW 115
// end ; end else
8527: GO 8557
// if not GetClass ( un ) = class_soldier then
8529: LD_VAR 0 5
8533: PPUSH
8534: CALL_OW 257
8538: PUSH
8539: LD_INT 1
8541: EQUAL
8542: NOT
8543: IFFALSE 8557
// ComChangeProfession ( un , class_soldier ) ;
8545: LD_VAR 0 5
8549: PPUSH
8550: LD_INT 1
8552: PPUSH
8553: CALL_OW 123
// end end ;
8557: GO 8202
8559: POP
8560: POP
// vehikly = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ;
8561: LD_ADDR_VAR 0 17
8565: PUSH
8566: LD_INT 50
8568: PUSH
8569: EMPTY
8570: LIST
8571: PUSH
8572: LD_INT 22
8574: PUSH
8575: LD_VAR 0 4
8579: PUSH
8580: EMPTY
8581: LIST
8582: LIST
8583: PUSH
8584: LD_INT 21
8586: PUSH
8587: LD_INT 2
8589: PUSH
8590: EMPTY
8591: LIST
8592: LIST
8593: PUSH
8594: EMPTY
8595: LIST
8596: LIST
8597: LIST
8598: PPUSH
8599: CALL_OW 69
8603: ST_TO_ADDR
// vehikly = vehikly diff arab_attack_list ;
8604: LD_ADDR_VAR 0 17
8608: PUSH
8609: LD_VAR 0 17
8613: PUSH
8614: LD_EXP 28
8618: DIFF
8619: ST_TO_ADDR
// vehikly = vehikly diff purple_attack_list ;
8620: LD_ADDR_VAR 0 17
8624: PUSH
8625: LD_VAR 0 17
8629: PUSH
8630: LD_EXP 29
8634: DIFF
8635: ST_TO_ADDR
// vehikly = vehikly diff amik_attack_list ;
8636: LD_ADDR_VAR 0 17
8640: PUSH
8641: LD_VAR 0 17
8645: PUSH
8646: LD_EXP 30
8650: DIFF
8651: 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 ;
8652: LD_ADDR_VAR 0 17
8656: PUSH
8657: LD_VAR 0 17
8661: PUSH
8662: LD_EXP 85
8666: DIFF
8667: PUSH
8668: LD_INT 22
8670: PUSH
8671: LD_EXP 23
8675: PUSH
8676: EMPTY
8677: LIST
8678: LIST
8679: PUSH
8680: LD_INT 21
8682: PUSH
8683: LD_INT 2
8685: PUSH
8686: EMPTY
8687: LIST
8688: LIST
8689: PUSH
8690: LD_INT 34
8692: PUSH
8693: LD_INT 30
8695: PUSH
8696: EMPTY
8697: LIST
8698: LIST
8699: PUSH
8700: EMPTY
8701: LIST
8702: LIST
8703: LIST
8704: PPUSH
8705: CALL_OW 69
8709: DIFF
8710: PUSH
8711: LD_INT 22
8713: PUSH
8714: LD_EXP 23
8718: PUSH
8719: EMPTY
8720: LIST
8721: LIST
8722: PUSH
8723: LD_INT 21
8725: PUSH
8726: LD_INT 2
8728: PUSH
8729: EMPTY
8730: LIST
8731: LIST
8732: PUSH
8733: LD_INT 34
8735: PUSH
8736: LD_INT 32
8738: PUSH
8739: EMPTY
8740: LIST
8741: LIST
8742: PUSH
8743: EMPTY
8744: LIST
8745: LIST
8746: LIST
8747: PPUSH
8748: CALL_OW 69
8752: DIFF
8753: PUSH
8754: LD_INT 21
8756: PUSH
8757: LD_INT 2
8759: PUSH
8760: EMPTY
8761: LIST
8762: LIST
8763: PUSH
8764: LD_INT 34
8766: PUSH
8767: LD_INT 12
8769: PUSH
8770: EMPTY
8771: LIST
8772: LIST
8773: PUSH
8774: EMPTY
8775: LIST
8776: LIST
8777: PPUSH
8778: CALL_OW 69
8782: DIFF
8783: PUSH
8784: LD_EXP 28
8788: DIFF
8789: PUSH
8790: LD_EXP 30
8794: DIFF
8795: PUSH
8796: LD_EXP 29
8800: DIFF
8801: ST_TO_ADDR
// if vehikly then
8802: LD_VAR 0 17
8806: IFFALSE 8897
// for un in vehikly do
8808: LD_ADDR_VAR 0 5
8812: PUSH
8813: LD_VAR 0 17
8817: PUSH
8818: FOR_IN
8819: IFFALSE 8895
// begin if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
8821: LD_VAR 0 5
8825: PPUSH
8826: LD_VAR 0 5
8830: PPUSH
8831: CALL 11436 0 1
8835: PPUSH
8836: CALL_OW 299
8840: PUSH
8841: LD_INT 4
8843: GREATER
8844: IFFALSE 8867
// ComMoveToArea ( un , NajdiNejblizsiBaseArea ( un ) ) else
8846: LD_VAR 0 5
8850: PPUSH
8851: LD_VAR 0 5
8855: PPUSH
8856: CALL 11436 0 1
8860: PPUSH
8861: CALL_OW 113
8865: GO 8893
// if GetLives ( un ) < hranice_oprava_utek then
8867: LD_VAR 0 5
8871: PPUSH
8872: CALL_OW 256
8876: PUSH
8877: LD_EXP 49
8881: LESS
8882: IFFALSE 8893
// UtecDoNejblizsiRepairOblasti ( un ) end ;
8884: LD_VAR 0 5
8888: PPUSH
8889: CALL 12014 0 1
8893: GO 8818
8895: POP
8896: POP
// end ; end ;
8897: LD_VAR 0 2
8901: 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
8902: LD_INT 0
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
8917: PPUSH
8918: PPUSH
8919: PPUSH
8920: PPUSH
8921: PPUSH
8922: PPUSH
8923: PPUSH
8924: PPUSH
8925: PPUSH
8926: PPUSH
8927: PPUSH
8928: PPUSH
8929: PPUSH
// DoBunkru ( strana ) ;
8930: LD_VAR 0 1
8934: PPUSH
8935: CALL 10806 0 1
// side = strana ;
8939: LD_ADDR_VAR 0 4
8943: PUSH
8944: LD_VAR 0 1
8948: ST_TO_ADDR
// begin doktori = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_scientistic ] ] ) ;
8949: LD_ADDR_VAR 0 8
8953: PUSH
8954: LD_INT 50
8956: PUSH
8957: EMPTY
8958: LIST
8959: PUSH
8960: LD_INT 22
8962: PUSH
8963: LD_VAR 0 4
8967: PUSH
8968: EMPTY
8969: LIST
8970: LIST
8971: PUSH
8972: LD_INT 25
8974: PUSH
8975: LD_INT 4
8977: PUSH
8978: EMPTY
8979: LIST
8980: LIST
8981: PUSH
8982: EMPTY
8983: LIST
8984: LIST
8985: LIST
8986: PPUSH
8987: CALL_OW 69
8991: ST_TO_ADDR
// lidi = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_outside ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
8992: LD_ADDR_VAR 0 10
8996: PUSH
8997: LD_INT 52
8999: PUSH
9000: EMPTY
9001: LIST
9002: PUSH
9003: LD_INT 22
9005: PUSH
9006: LD_VAR 0 4
9010: PUSH
9011: EMPTY
9012: LIST
9013: LIST
9014: PUSH
9015: LD_INT 21
9017: PUSH
9018: LD_INT 1
9020: PUSH
9021: EMPTY
9022: LIST
9023: LIST
9024: PUSH
9025: LD_INT 56
9027: PUSH
9028: EMPTY
9029: LIST
9030: PUSH
9031: LD_INT 3
9033: PUSH
9034: LD_INT 24
9036: PUSH
9037: LD_INT 1000
9039: PUSH
9040: EMPTY
9041: LIST
9042: LIST
9043: PUSH
9044: EMPTY
9045: LIST
9046: LIST
9047: PUSH
9048: EMPTY
9049: LIST
9050: LIST
9051: LIST
9052: LIST
9053: LIST
9054: PPUSH
9055: CALL_OW 69
9059: ST_TO_ADDR
// lidi_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
9060: LD_ADDR_VAR 0 11
9064: PUSH
9065: LD_INT 52
9067: PUSH
9068: EMPTY
9069: LIST
9070: PUSH
9071: LD_INT 22
9073: PUSH
9074: LD_VAR 0 4
9078: PUSH
9079: EMPTY
9080: LIST
9081: LIST
9082: PUSH
9083: LD_INT 21
9085: PUSH
9086: LD_INT 1
9088: PUSH
9089: EMPTY
9090: LIST
9091: LIST
9092: PUSH
9093: LD_INT 3
9095: PUSH
9096: LD_INT 24
9098: PUSH
9099: LD_INT 250
9101: PUSH
9102: EMPTY
9103: LIST
9104: LIST
9105: PUSH
9106: EMPTY
9107: LIST
9108: LIST
9109: PUSH
9110: EMPTY
9111: LIST
9112: LIST
9113: LIST
9114: LIST
9115: PPUSH
9116: CALL_OW 69
9120: 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 ] ] ] ) ;
9121: LD_ADDR_VAR 0 6
9125: PUSH
9126: LD_INT 50
9128: PUSH
9129: EMPTY
9130: LIST
9131: PUSH
9132: LD_INT 22
9134: PUSH
9135: LD_VAR 0 4
9139: PUSH
9140: EMPTY
9141: LIST
9142: LIST
9143: PUSH
9144: LD_INT 2
9146: PUSH
9147: LD_INT 30
9149: PUSH
9150: LD_INT 6
9152: PUSH
9153: EMPTY
9154: LIST
9155: LIST
9156: PUSH
9157: LD_INT 30
9159: PUSH
9160: LD_INT 7
9162: PUSH
9163: EMPTY
9164: LIST
9165: LIST
9166: PUSH
9167: LD_INT 30
9169: PUSH
9170: LD_INT 8
9172: PUSH
9173: EMPTY
9174: LIST
9175: LIST
9176: PUSH
9177: EMPTY
9178: LIST
9179: LIST
9180: LIST
9181: LIST
9182: PUSH
9183: EMPTY
9184: LIST
9185: LIST
9186: LIST
9187: PPUSH
9188: CALL_OW 69
9192: 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 ] ] ) ;
9193: LD_ADDR_VAR 0 23
9197: PUSH
9198: LD_INT 3
9200: PUSH
9201: LD_INT 24
9203: PUSH
9204: LD_INT 250
9206: PUSH
9207: EMPTY
9208: LIST
9209: LIST
9210: PUSH
9211: EMPTY
9212: LIST
9213: LIST
9214: PUSH
9215: LD_INT 22
9217: PUSH
9218: LD_EXP 21
9222: PUSH
9223: EMPTY
9224: LIST
9225: LIST
9226: PUSH
9227: LD_INT 21
9229: PUSH
9230: LD_INT 2
9232: PUSH
9233: EMPTY
9234: LIST
9235: LIST
9236: PUSH
9237: EMPTY
9238: LIST
9239: LIST
9240: LIST
9241: PPUSH
9242: CALL_OW 69
9246: PUSH
9247: LD_INT 3
9249: PUSH
9250: LD_INT 24
9252: PUSH
9253: LD_INT 250
9255: PUSH
9256: EMPTY
9257: LIST
9258: LIST
9259: PUSH
9260: EMPTY
9261: LIST
9262: LIST
9263: PUSH
9264: LD_INT 22
9266: PUSH
9267: LD_EXP 23
9271: PUSH
9272: EMPTY
9273: LIST
9274: LIST
9275: PUSH
9276: LD_INT 21
9278: PUSH
9279: LD_INT 2
9281: PUSH
9282: EMPTY
9283: LIST
9284: LIST
9285: PUSH
9286: EMPTY
9287: LIST
9288: LIST
9289: LIST
9290: PPUSH
9291: CALL_OW 69
9295: ADD
9296: ST_TO_ADDR
// for i in labaky do
9297: LD_ADDR_VAR 0 3
9301: PUSH
9302: LD_VAR 0 6
9306: PUSH
9307: FOR_IN
9308: IFFALSE 9343
// if UnitsInside ( i ) > 5 then
9310: LD_VAR 0 3
9314: PPUSH
9315: CALL_OW 313
9319: PUSH
9320: LD_INT 5
9322: GREATER
9323: IFFALSE 9341
// labaky = labaky diff i ;
9325: LD_ADDR_VAR 0 6
9329: PUSH
9330: LD_VAR 0 6
9334: PUSH
9335: LD_VAR 0 3
9339: DIFF
9340: ST_TO_ADDR
9341: GO 9307
9343: POP
9344: POP
// if doktori then
9345: LD_VAR 0 8
9349: IFFALSE 9835
// for un in doktori do
9351: LD_ADDR_VAR 0 5
9355: PUSH
9356: LD_VAR 0 8
9360: PUSH
9361: FOR_IN
9362: IFFALSE 9833
// begin if GetLives ( un ) < hranice_leceni_utek then
9364: LD_VAR 0 5
9368: PPUSH
9369: CALL_OW 256
9373: PUSH
9374: LD_EXP 47
9378: LESS
9379: IFFALSE 9392
// UtecDoNejblizsiHealOblasti ( un ) else
9381: LD_VAR 0 5
9385: PPUSH
9386: CALL 11904 0 1
9390: GO 9831
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
9392: LD_VAR 0 5
9396: PPUSH
9397: LD_VAR 0 5
9401: PPUSH
9402: CALL 11436 0 1
9406: PPUSH
9407: CALL_OW 299
9411: PUSH
9412: LD_INT 4
9414: GREATER
9415: IFFALSE 9438
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
9417: LD_VAR 0 5
9421: PPUSH
9422: LD_VAR 0 5
9426: PPUSH
9427: CALL 11319 0 1
9431: PPUSH
9432: CALL_OW 113
9436: GO 9831
// if lidi_red and IsInArea2 ( NearestUnitToUnit2 ( lidi_red , un ) , NajdiNejblizsiBaseArea ( NearestUnitToUnit2 ( lidi_red , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi_red , un ) ) < dist_max then
9438: LD_VAR 0 11
9442: PUSH
9443: LD_VAR 0 11
9447: PPUSH
9448: LD_VAR 0 5
9452: PPUSH
9453: CALL 5575 0 2
9457: PPUSH
9458: LD_VAR 0 11
9462: PPUSH
9463: LD_VAR 0 5
9467: PPUSH
9468: CALL 5575 0 2
9472: PPUSH
9473: CALL 11436 0 1
9477: PPUSH
9478: CALL 5661 0 2
9482: AND
9483: PUSH
9484: LD_VAR 0 5
9488: PPUSH
9489: LD_VAR 0 11
9493: PPUSH
9494: LD_VAR 0 5
9498: PPUSH
9499: CALL 5575 0 2
9503: PPUSH
9504: CALL_OW 296
9508: PUSH
9509: LD_EXP 46
9513: LESS
9514: AND
9515: IFFALSE 9558
// begin VyjdiVen ( un ) ;
9517: LD_VAR 0 5
9521: PPUSH
9522: CALL 5491 0 1
// if lidi_red then
9526: LD_VAR 0 11
9530: IFFALSE 9556
// ComHeal ( un , NearestUnitToUnit2 ( lidi_red , un ) ) ;
9532: LD_VAR 0 5
9536: PPUSH
9537: LD_VAR 0 11
9541: PPUSH
9542: LD_VAR 0 5
9546: PPUSH
9547: CALL 5575 0 2
9551: PPUSH
9552: CALL_OW 128
// end else
9556: GO 9831
// if lidi and IsInArea2 ( NearestUnitToUnit2 ( lidi , un ) , NajdiNejblizsiHealAreaExpanded ( NearestUnitToUnit2 ( lidi , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( lidi , un ) ) < dist_max then
9558: LD_VAR 0 10
9562: PUSH
9563: LD_VAR 0 10
9567: PPUSH
9568: LD_VAR 0 5
9572: PPUSH
9573: CALL 5575 0 2
9577: PPUSH
9578: LD_VAR 0 10
9582: PPUSH
9583: LD_VAR 0 5
9587: PPUSH
9588: CALL 5575 0 2
9592: PPUSH
9593: CALL 11319 0 1
9597: PPUSH
9598: CALL 5661 0 2
9602: AND
9603: PUSH
9604: LD_VAR 0 5
9608: PPUSH
9609: LD_VAR 0 10
9613: PPUSH
9614: LD_VAR 0 5
9618: PPUSH
9619: CALL 5575 0 2
9623: PPUSH
9624: CALL_OW 296
9628: PUSH
9629: LD_EXP 46
9633: LESS
9634: AND
9635: IFFALSE 9678
// begin VyjdiVen ( un ) ;
9637: LD_VAR 0 5
9641: PPUSH
9642: CALL 5491 0 1
// if lidi then
9646: LD_VAR 0 10
9650: IFFALSE 9676
// ComHeal ( un , NearestUnitToUnit2 ( lidi , un ) ) ;
9652: LD_VAR 0 5
9656: PPUSH
9657: LD_VAR 0 10
9661: PPUSH
9662: LD_VAR 0 5
9666: PPUSH
9667: CALL 5575 0 2
9671: PPUSH
9672: CALL_OW 128
// end else
9676: GO 9831
// if not GetLives ( un ) = 1000 then
9678: LD_VAR 0 5
9682: PPUSH
9683: CALL_OW 256
9687: PUSH
9688: LD_INT 1000
9690: EQUAL
9691: NOT
9692: IFFALSE 9705
// UtecDoNejblizsiHealOblasti ( un ) else
9694: LD_VAR 0 5
9698: PPUSH
9699: CALL 11904 0 1
9703: GO 9831
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
9705: LD_VAR 0 5
9709: PPUSH
9710: CALL_OW 256
9714: PUSH
9715: LD_INT 1000
9717: EQUAL
9718: PUSH
9719: LD_VAR 0 5
9723: PPUSH
9724: CALL_OW 310
9728: PUSH
9729: LD_INT 0
9731: EQUAL
9732: AND
9733: IFFALSE 9831
// begin ComFree ( un ) ;
9735: LD_VAR 0 5
9739: PPUSH
9740: CALL_OW 139
// if labaky and GetDistUnits ( un , NearestUnitToUnit2 ( labaky , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( labaky , un ) ) < 6 then
9744: LD_VAR 0 6
9748: PUSH
9749: LD_VAR 0 5
9753: PPUSH
9754: LD_VAR 0 6
9758: PPUSH
9759: LD_VAR 0 5
9763: PPUSH
9764: CALL 5575 0 2
9768: PPUSH
9769: CALL_OW 296
9773: PUSH
9774: LD_EXP 46
9778: LESS
9779: AND
9780: PUSH
9781: LD_VAR 0 6
9785: PPUSH
9786: LD_VAR 0 5
9790: PPUSH
9791: CALL 5575 0 2
9795: PPUSH
9796: CALL_OW 313
9800: PUSH
9801: LD_INT 6
9803: LESS
9804: AND
9805: IFFALSE 9831
// ComEnterUnit ( un , NearestUnitToUnit2 ( labaky , un ) ) ;
9807: LD_VAR 0 5
9811: PPUSH
9812: LD_VAR 0 6
9816: PPUSH
9817: LD_VAR 0 5
9821: PPUSH
9822: CALL 5575 0 2
9826: PPUSH
9827: CALL_OW 120
// end ; end ;
9831: GO 9361
9833: POP
9834: POP
// mechanici = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_class , class_mechanic ] ] ) ;
9835: LD_ADDR_VAR 0 9
9839: PUSH
9840: LD_INT 50
9842: PUSH
9843: EMPTY
9844: LIST
9845: PUSH
9846: LD_INT 22
9848: PUSH
9849: LD_VAR 0 4
9853: PUSH
9854: EMPTY
9855: LIST
9856: LIST
9857: PUSH
9858: LD_INT 25
9860: PUSH
9861: LD_INT 3
9863: PUSH
9864: EMPTY
9865: LIST
9866: LIST
9867: PUSH
9868: EMPTY
9869: LIST
9870: LIST
9871: LIST
9872: PPUSH
9873: CALL_OW 69
9877: ST_TO_ADDR
// auta = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
9878: LD_ADDR_VAR 0 12
9882: PUSH
9883: LD_INT 52
9885: PUSH
9886: EMPTY
9887: LIST
9888: PUSH
9889: LD_INT 22
9891: PUSH
9892: LD_VAR 0 4
9896: PUSH
9897: EMPTY
9898: LIST
9899: LIST
9900: PUSH
9901: LD_INT 21
9903: PUSH
9904: LD_INT 2
9906: PUSH
9907: EMPTY
9908: LIST
9909: LIST
9910: PUSH
9911: LD_INT 3
9913: PUSH
9914: LD_INT 24
9916: PUSH
9917: LD_INT 1000
9919: PUSH
9920: EMPTY
9921: LIST
9922: LIST
9923: PUSH
9924: EMPTY
9925: LIST
9926: LIST
9927: PUSH
9928: EMPTY
9929: LIST
9930: LIST
9931: LIST
9932: LIST
9933: PPUSH
9934: CALL_OW 69
9938: ST_TO_ADDR
// auta_red = FilterAllUnits ( [ [ f_placed ] , [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 250 ] ] ] ) ;
9939: LD_ADDR_VAR 0 13
9943: PUSH
9944: LD_INT 52
9946: PUSH
9947: EMPTY
9948: LIST
9949: PUSH
9950: LD_INT 22
9952: PUSH
9953: LD_VAR 0 4
9957: PUSH
9958: EMPTY
9959: LIST
9960: LIST
9961: PUSH
9962: LD_INT 21
9964: PUSH
9965: LD_INT 2
9967: PUSH
9968: EMPTY
9969: LIST
9970: LIST
9971: PUSH
9972: LD_INT 3
9974: PUSH
9975: LD_INT 24
9977: PUSH
9978: LD_INT 250
9980: PUSH
9981: EMPTY
9982: LIST
9983: LIST
9984: PUSH
9985: EMPTY
9986: LIST
9987: LIST
9988: PUSH
9989: EMPTY
9990: LIST
9991: LIST
9992: LIST
9993: LIST
9994: PPUSH
9995: CALL_OW 69
9999: ST_TO_ADDR
// tovarny = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) ;
10000: LD_ADDR_VAR 0 7
10004: PUSH
10005: LD_INT 50
10007: PUSH
10008: EMPTY
10009: LIST
10010: PUSH
10011: LD_INT 22
10013: PUSH
10014: LD_VAR 0 4
10018: PUSH
10019: EMPTY
10020: LIST
10021: LIST
10022: PUSH
10023: LD_INT 2
10025: PUSH
10026: LD_INT 30
10028: PUSH
10029: LD_INT 2
10031: PUSH
10032: EMPTY
10033: LIST
10034: LIST
10035: PUSH
10036: LD_INT 30
10038: PUSH
10039: LD_INT 3
10041: PUSH
10042: EMPTY
10043: LIST
10044: LIST
10045: PUSH
10046: EMPTY
10047: LIST
10048: LIST
10049: LIST
10050: PUSH
10051: EMPTY
10052: LIST
10053: LIST
10054: LIST
10055: PPUSH
10056: CALL_OW 69
10060: ST_TO_ADDR
// dalkova_vez = FilterAllUnits ( [ [ f_ok ] , [ f_side , side ] , [ f_btype , b_control_tower ] ] ) ;
10061: LD_ADDR_VAR 0 27
10065: PUSH
10066: LD_INT 50
10068: PUSH
10069: EMPTY
10070: LIST
10071: PUSH
10072: LD_INT 22
10074: PUSH
10075: LD_VAR 0 4
10079: PUSH
10080: EMPTY
10081: LIST
10082: LIST
10083: PUSH
10084: LD_INT 30
10086: PUSH
10087: LD_INT 36
10089: PUSH
10090: EMPTY
10091: LIST
10092: LIST
10093: PUSH
10094: EMPTY
10095: LIST
10096: LIST
10097: LIST
10098: PPUSH
10099: CALL_OW 69
10103: ST_TO_ADDR
// for i in tovarny do
10104: LD_ADDR_VAR 0 3
10108: PUSH
10109: LD_VAR 0 7
10113: PUSH
10114: FOR_IN
10115: IFFALSE 10150
// if UnitsInside ( i ) > 5 then
10117: LD_VAR 0 3
10121: PPUSH
10122: CALL_OW 313
10126: PUSH
10127: LD_INT 5
10129: GREATER
10130: IFFALSE 10148
// tovarny = tovarny diff i ;
10132: LD_ADDR_VAR 0 7
10136: PUSH
10137: LD_VAR 0 7
10141: PUSH
10142: LD_VAR 0 3
10146: DIFF
10147: ST_TO_ADDR
10148: GO 10114
10150: POP
10151: POP
// if mechanici then
10152: LD_VAR 0 9
10156: IFFALSE 10801
// for un in mechanici do
10158: LD_ADDR_VAR 0 5
10162: PUSH
10163: LD_VAR 0 9
10167: PUSH
10168: FOR_IN
10169: IFFALSE 10799
// begin if not GetBType ( IsInUnit ( un ) ) = b_control_tower then
10171: LD_VAR 0 5
10175: PPUSH
10176: CALL_OW 310
10180: PPUSH
10181: CALL_OW 266
10185: PUSH
10186: LD_INT 36
10188: EQUAL
10189: NOT
10190: IFFALSE 10797
// begin if GetLives ( un ) < hranice_leceni_utek then
10192: LD_VAR 0 5
10196: PPUSH
10197: CALL_OW 256
10201: PUSH
10202: LD_EXP 47
10206: LESS
10207: IFFALSE 10220
// UtecDoNejblizsiHealOblasti ( un ) else
10209: LD_VAR 0 5
10213: PPUSH
10214: CALL 11904 0 1
10218: GO 10797
// if GetLives ( un ) < 1000 and IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
10220: LD_VAR 0 5
10224: PPUSH
10225: CALL_OW 256
10229: PUSH
10230: LD_INT 1000
10232: LESS
10233: PUSH
10234: LD_VAR 0 5
10238: PPUSH
10239: LD_VAR 0 5
10243: PPUSH
10244: CALL 11202 0 1
10248: PPUSH
10249: CALL 5661 0 2
10253: AND
10254: IFFALSE 10258
// else
10256: GO 10797
// if GetDistUnitArea ( un , NajdiNejblizsiBaseArea ( un ) ) > 4 then
10258: LD_VAR 0 5
10262: PPUSH
10263: LD_VAR 0 5
10267: PPUSH
10268: CALL 11436 0 1
10272: PPUSH
10273: CALL_OW 299
10277: PUSH
10278: LD_INT 4
10280: GREATER
10281: IFFALSE 10304
// ComMoveToArea ( un , NajdiNejblizsiHealAreaExpanded ( un ) ) else
10283: LD_VAR 0 5
10287: PPUSH
10288: LD_VAR 0 5
10292: PPUSH
10293: CALL 11319 0 1
10297: PPUSH
10298: CALL_OW 113
10302: GO 10797
// 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
10304: LD_VAR 0 13
10308: PUSH
10309: LD_VAR 0 5
10313: PPUSH
10314: CALL 12222 0 1
10318: AND
10319: PUSH
10320: LD_VAR 0 13
10324: PPUSH
10325: LD_VAR 0 5
10329: PPUSH
10330: CALL 5575 0 2
10334: PPUSH
10335: LD_VAR 0 13
10339: PPUSH
10340: LD_VAR 0 5
10344: PPUSH
10345: CALL 5575 0 2
10349: PPUSH
10350: CALL 11436 0 1
10354: PPUSH
10355: CALL 5661 0 2
10359: AND
10360: PUSH
10361: LD_VAR 0 5
10365: PPUSH
10366: LD_VAR 0 13
10370: PPUSH
10371: LD_VAR 0 5
10375: PPUSH
10376: CALL 5575 0 2
10380: PPUSH
10381: CALL_OW 296
10385: PUSH
10386: LD_EXP 46
10390: LESS
10391: AND
10392: IFFALSE 10435
// begin VyjdiVen ( un ) ;
10394: LD_VAR 0 5
10398: PPUSH
10399: CALL 5491 0 1
// if auta_red then
10403: LD_VAR 0 13
10407: IFFALSE 10433
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta_red , un ) ) ;
10409: LD_VAR 0 5
10413: PPUSH
10414: LD_VAR 0 13
10418: PPUSH
10419: LD_VAR 0 5
10423: PPUSH
10424: CALL 5575 0 2
10428: PPUSH
10429: CALL_OW 129
// end else
10433: GO 10797
// if auta and IsInArea2 ( NearestUnitToUnit2 ( auta , un ) , NajdiNejblizsiRepairAreaExpanded ( NearestUnitToUnit2 ( auta , un ) ) ) and GetDistUnits ( un , NearestUnitToUnit2 ( auta , un ) ) < dist_max then
10435: LD_VAR 0 12
10439: PUSH
10440: LD_VAR 0 12
10444: PPUSH
10445: LD_VAR 0 5
10449: PPUSH
10450: CALL 5575 0 2
10454: PPUSH
10455: LD_VAR 0 12
10459: PPUSH
10460: LD_VAR 0 5
10464: PPUSH
10465: CALL 5575 0 2
10469: PPUSH
10470: CALL 11670 0 1
10474: PPUSH
10475: CALL 5661 0 2
10479: AND
10480: PUSH
10481: LD_VAR 0 5
10485: PPUSH
10486: LD_VAR 0 12
10490: PPUSH
10491: LD_VAR 0 5
10495: PPUSH
10496: CALL 5575 0 2
10500: PPUSH
10501: CALL_OW 296
10505: PUSH
10506: LD_EXP 46
10510: LESS
10511: AND
10512: IFFALSE 10555
// begin VyjdiVen ( un ) ;
10514: LD_VAR 0 5
10518: PPUSH
10519: CALL 5491 0 1
// if auta then
10523: LD_VAR 0 12
10527: IFFALSE 10553
// ComRepairVehicle ( un , NearestUnitToUnit2 ( auta , un ) ) ;
10529: LD_VAR 0 5
10533: PPUSH
10534: LD_VAR 0 12
10538: PPUSH
10539: LD_VAR 0 5
10543: PPUSH
10544: CALL 5575 0 2
10548: PPUSH
10549: CALL_OW 129
// end else
10553: GO 10797
// if not GetLives ( un ) = 1000 then
10555: LD_VAR 0 5
10559: PPUSH
10560: CALL_OW 256
10564: PUSH
10565: LD_INT 1000
10567: EQUAL
10568: NOT
10569: IFFALSE 10582
// UtecDoNejblizsiHealOblasti ( un ) else
10571: LD_VAR 0 5
10575: PPUSH
10576: CALL 11904 0 1
10580: GO 10797
// if GetLives ( un ) = 1000 and IsInUnit ( un ) = false then
10582: LD_VAR 0 5
10586: PPUSH
10587: CALL_OW 256
10591: PUSH
10592: LD_INT 1000
10594: EQUAL
10595: PUSH
10596: LD_VAR 0 5
10600: PPUSH
10601: CALL_OW 310
10605: PUSH
10606: LD_INT 0
10608: EQUAL
10609: AND
10610: IFFALSE 10797
// begin ComFree ( un ) ;
10612: LD_VAR 0 5
10616: PPUSH
10617: CALL_OW 139
// if dalkova_vez and GetDistUnits ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( dalkova_vez , un ) ) < 3 then
10621: LD_VAR 0 27
10625: PUSH
10626: LD_VAR 0 5
10630: PPUSH
10631: LD_VAR 0 27
10635: PPUSH
10636: LD_VAR 0 5
10640: PPUSH
10641: CALL 5575 0 2
10645: PPUSH
10646: CALL_OW 296
10650: PUSH
10651: LD_EXP 46
10655: LESS
10656: AND
10657: PUSH
10658: LD_VAR 0 27
10662: PPUSH
10663: LD_VAR 0 5
10667: PPUSH
10668: CALL 5575 0 2
10672: PPUSH
10673: CALL_OW 313
10677: PUSH
10678: LD_INT 3
10680: LESS
10681: AND
10682: IFFALSE 10710
// ComEnterUnit ( un , NearestUnitToUnit2 ( dalkova_vez , un ) ) else
10684: LD_VAR 0 5
10688: PPUSH
10689: LD_VAR 0 27
10693: PPUSH
10694: LD_VAR 0 5
10698: PPUSH
10699: CALL 5575 0 2
10703: PPUSH
10704: CALL_OW 120
10708: GO 10797
// if tovarny and GetDistUnits ( un , NearestUnitToUnit2 ( tovarny , un ) ) < dist_max and UnitsInside ( NearestUnitToUnit2 ( tovarny , un ) ) < 6 then
10710: LD_VAR 0 7
10714: PUSH
10715: LD_VAR 0 5
10719: PPUSH
10720: LD_VAR 0 7
10724: PPUSH
10725: LD_VAR 0 5
10729: PPUSH
10730: CALL 5575 0 2
10734: PPUSH
10735: CALL_OW 296
10739: PUSH
10740: LD_EXP 46
10744: LESS
10745: AND
10746: PUSH
10747: LD_VAR 0 7
10751: PPUSH
10752: LD_VAR 0 5
10756: PPUSH
10757: CALL 5575 0 2
10761: PPUSH
10762: CALL_OW 313
10766: PUSH
10767: LD_INT 6
10769: LESS
10770: AND
10771: IFFALSE 10797
// ComEnterUnit ( un , NearestUnitToUnit2 ( tovarny , un ) ) ;
10773: LD_VAR 0 5
10777: PPUSH
10778: LD_VAR 0 7
10782: PPUSH
10783: LD_VAR 0 5
10787: PPUSH
10788: CALL 5575 0 2
10792: PPUSH
10793: CALL_OW 120
// end ; end ; end ;
10797: GO 10168
10799: POP
10800: POP
// end ; end ;
10801: LD_VAR 0 2
10805: RET
// var poslednitick ; function DoBunkru ( side ) ; var vojaci , vojaciout , volne_bunkry , kasy , cl ; begin
10806: LD_INT 0
10808: PPUSH
10809: PPUSH
10810: PPUSH
10811: PPUSH
10812: PPUSH
10813: PPUSH
// if not poslednitick then
10814: LD_LOC 1
10818: NOT
10819: IFFALSE 10831
// poslednitick = tick ;
10821: LD_ADDR_LOC 1
10825: PUSH
10826: LD_OWVAR 1
10830: ST_TO_ADDR
// if tick > poslednitick + 100 then
10831: LD_OWVAR 1
10835: PUSH
10836: LD_LOC 1
10840: PUSH
10841: LD_INT 100
10843: PLUS
10844: GREATER
10845: IFFALSE 11197
// 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 ] ] ] ) ;
10847: LD_ADDR_VAR 0 4
10851: PUSH
10852: LD_INT 50
10854: PUSH
10855: EMPTY
10856: LIST
10857: PUSH
10858: LD_INT 22
10860: PUSH
10861: LD_VAR 0 1
10865: PUSH
10866: EMPTY
10867: LIST
10868: LIST
10869: PUSH
10870: LD_INT 56
10872: PUSH
10873: EMPTY
10874: LIST
10875: PUSH
10876: LD_INT 2
10878: PUSH
10879: LD_INT 25
10881: PUSH
10882: LD_INT 1
10884: PUSH
10885: EMPTY
10886: LIST
10887: LIST
10888: PUSH
10889: LD_INT 25
10891: PUSH
10892: LD_INT 5
10894: PUSH
10895: EMPTY
10896: LIST
10897: LIST
10898: PUSH
10899: LD_INT 25
10901: PUSH
10902: LD_INT 9
10904: PUSH
10905: EMPTY
10906: LIST
10907: LIST
10908: PUSH
10909: LD_INT 25
10911: PUSH
10912: LD_INT 8
10914: PUSH
10915: EMPTY
10916: LIST
10917: LIST
10918: PUSH
10919: EMPTY
10920: LIST
10921: LIST
10922: LIST
10923: LIST
10924: LIST
10925: PUSH
10926: EMPTY
10927: LIST
10928: LIST
10929: LIST
10930: LIST
10931: PPUSH
10932: CALL_OW 69
10936: 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 ] ] ] ) ;
10937: LD_ADDR_VAR 0 5
10941: PUSH
10942: LD_INT 52
10944: PUSH
10945: EMPTY
10946: LIST
10947: PUSH
10948: LD_INT 3
10950: PUSH
10951: LD_INT 57
10953: PUSH
10954: EMPTY
10955: LIST
10956: PUSH
10957: EMPTY
10958: LIST
10959: LIST
10960: PUSH
10961: LD_INT 50
10963: PUSH
10964: EMPTY
10965: LIST
10966: PUSH
10967: LD_INT 22
10969: PUSH
10970: LD_VAR 0 1
10974: PUSH
10975: EMPTY
10976: LIST
10977: LIST
10978: PUSH
10979: LD_INT 58
10981: PUSH
10982: EMPTY
10983: LIST
10984: PUSH
10985: LD_INT 2
10987: PUSH
10988: LD_INT 30
10990: PUSH
10991: LD_INT 31
10993: PUSH
10994: EMPTY
10995: LIST
10996: LIST
10997: PUSH
10998: LD_INT 30
11000: PUSH
11001: LD_INT 32
11003: PUSH
11004: EMPTY
11005: LIST
11006: LIST
11007: PUSH
11008: EMPTY
11009: LIST
11010: LIST
11011: LIST
11012: PUSH
11013: EMPTY
11014: LIST
11015: LIST
11016: LIST
11017: LIST
11018: LIST
11019: LIST
11020: PPUSH
11021: CALL_OW 69
11025: 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 ] ] ] ) ;
11026: LD_ADDR_VAR 0 6
11030: PUSH
11031: LD_INT 52
11033: PUSH
11034: EMPTY
11035: LIST
11036: PUSH
11037: LD_INT 3
11039: PUSH
11040: LD_INT 57
11042: PUSH
11043: EMPTY
11044: LIST
11045: PUSH
11046: EMPTY
11047: LIST
11048: LIST
11049: PUSH
11050: LD_INT 3
11052: PUSH
11053: LD_INT 58
11055: PUSH
11056: EMPTY
11057: LIST
11058: PUSH
11059: EMPTY
11060: LIST
11061: LIST
11062: PUSH
11063: LD_INT 50
11065: PUSH
11066: EMPTY
11067: LIST
11068: PUSH
11069: LD_INT 22
11071: PUSH
11072: LD_VAR 0 1
11076: PUSH
11077: EMPTY
11078: LIST
11079: LIST
11080: PUSH
11081: LD_INT 2
11083: PUSH
11084: LD_INT 30
11086: PUSH
11087: LD_INT 4
11089: PUSH
11090: EMPTY
11091: LIST
11092: LIST
11093: PUSH
11094: LD_INT 30
11096: PUSH
11097: LD_INT 5
11099: PUSH
11100: EMPTY
11101: LIST
11102: LIST
11103: PUSH
11104: EMPTY
11105: LIST
11106: LIST
11107: LIST
11108: PUSH
11109: EMPTY
11110: LIST
11111: LIST
11112: LIST
11113: LIST
11114: LIST
11115: LIST
11116: PPUSH
11117: CALL_OW 69
11121: ST_TO_ADDR
// if volne_bunkry and kasy and not vojaciout then
11122: LD_VAR 0 5
11126: PUSH
11127: LD_VAR 0 6
11131: AND
11132: PUSH
11133: LD_VAR 0 4
11137: NOT
11138: AND
11139: IFFALSE 11197
// begin cl = UnitsInside ( kasy [ 1 ] ) [ 1 ] ;
11141: LD_ADDR_VAR 0 7
11145: PUSH
11146: LD_VAR 0 6
11150: PUSH
11151: LD_INT 1
11153: ARRAY
11154: PPUSH
11155: CALL_OW 313
11159: PUSH
11160: LD_INT 1
11162: ARRAY
11163: ST_TO_ADDR
// if cl then
11164: LD_VAR 0 7
11168: IFFALSE 11197
// begin VyjdiVen ( cl ) ;
11170: LD_VAR 0 7
11174: PPUSH
11175: CALL 5491 0 1
// ComEnterUnit ( cl , volne_bunkry [ 1 ] ) ;
11179: LD_VAR 0 7
11183: PPUSH
11184: LD_VAR 0 5
11188: PUSH
11189: LD_INT 1
11191: ARRAY
11192: PPUSH
11193: CALL_OW 120
// end ; end ; end ; end ;
11197: LD_VAR 0 2
11201: RET
// export function NajdiNejblizsiHealArea ( un ) ; begin
11202: LD_INT 0
11204: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 168 , 99 ] :
11205: LD_EXP 50
11209: PPUSH
11210: LD_VAR 0 1
11214: PPUSH
11215: CALL_OW 250
11219: PPUSH
11220: LD_VAR 0 1
11224: PPUSH
11225: CALL_OW 251
11229: PPUSH
11230: CALL_OW 439
11234: PUSH
11235: LD_INT 168
11237: PUSH
11238: LD_INT 99
11240: PUSH
11241: EMPTY
11242: LIST
11243: LIST
11244: DOUBLE
11245: EQUAL
11246: IFTRUE 11250
11248: GO 11261
11250: POP
// result = ArLeceni ; [ 114 , 11 ] :
11251: LD_ADDR_VAR 0 2
11255: PUSH
11256: LD_INT 18
11258: ST_TO_ADDR
11259: GO 11314
11261: LD_INT 114
11263: PUSH
11264: LD_INT 11
11266: PUSH
11267: EMPTY
11268: LIST
11269: LIST
11270: DOUBLE
11271: EQUAL
11272: IFTRUE 11276
11274: GO 11287
11276: POP
// result = PurpleLeceni ; [ 216 , 78 ] :
11277: LD_ADDR_VAR 0 2
11281: PUSH
11282: LD_INT 20
11284: ST_TO_ADDR
11285: GO 11314
11287: LD_INT 216
11289: PUSH
11290: LD_INT 78
11292: PUSH
11293: EMPTY
11294: LIST
11295: LIST
11296: DOUBLE
11297: EQUAL
11298: IFTRUE 11302
11300: GO 11313
11302: POP
// result = AmikLeceni ; end ;
11303: LD_ADDR_VAR 0 2
11307: PUSH
11308: LD_INT 22
11310: ST_TO_ADDR
11311: GO 11314
11313: POP
// end ;
11314: LD_VAR 0 2
11318: RET
// export function NajdiNejblizsiHealAreaExpanded ( un ) ; begin
11319: LD_INT 0
11321: PPUSH
// case FindNearestPoint ( stredy_heal_oblasti , GetX ( un ) , GetY ( un ) ) of [ 168 , 99 ] :
11322: LD_EXP 50
11326: PPUSH
11327: LD_VAR 0 1
11331: PPUSH
11332: CALL_OW 250
11336: PPUSH
11337: LD_VAR 0 1
11341: PPUSH
11342: CALL_OW 251
11346: PPUSH
11347: CALL_OW 439
11351: PUSH
11352: LD_INT 168
11354: PUSH
11355: LD_INT 99
11357: PUSH
11358: EMPTY
11359: LIST
11360: LIST
11361: DOUBLE
11362: EQUAL
11363: IFTRUE 11367
11365: GO 11378
11367: POP
// result = ArLeceniExpanded ; [ 114 , 11 ] :
11368: LD_ADDR_VAR 0 2
11372: PUSH
11373: LD_INT 19
11375: ST_TO_ADDR
11376: GO 11431
11378: LD_INT 114
11380: PUSH
11381: LD_INT 11
11383: PUSH
11384: EMPTY
11385: LIST
11386: LIST
11387: DOUBLE
11388: EQUAL
11389: IFTRUE 11393
11391: GO 11404
11393: POP
// result = PurpleLeceniExpanded ; [ 216 , 78 ] :
11394: LD_ADDR_VAR 0 2
11398: PUSH
11399: LD_INT 21
11401: ST_TO_ADDR
11402: GO 11431
11404: LD_INT 216
11406: PUSH
11407: LD_INT 78
11409: PUSH
11410: EMPTY
11411: LIST
11412: LIST
11413: DOUBLE
11414: EQUAL
11415: IFTRUE 11419
11417: GO 11430
11419: POP
// result = AmikLeceniExpanded ; end ;
11420: LD_ADDR_VAR 0 2
11424: PUSH
11425: LD_INT 23
11427: ST_TO_ADDR
11428: GO 11431
11430: POP
// end ;
11431: LD_VAR 0 2
11435: RET
// export function NajdiNejblizsiBaseArea ( un ) ; begin
11436: LD_INT 0
11438: PPUSH
// case FindNearestPoint ( stredy_baz , GetX ( un ) , GetY ( un ) ) of [ 167 , 97 ] :
11439: LD_EXP 52
11443: PPUSH
11444: LD_VAR 0 1
11448: PPUSH
11449: CALL_OW 250
11453: PPUSH
11454: LD_VAR 0 1
11458: PPUSH
11459: CALL_OW 251
11463: PPUSH
11464: CALL_OW 439
11468: PUSH
11469: LD_INT 167
11471: PUSH
11472: LD_INT 97
11474: PUSH
11475: EMPTY
11476: LIST
11477: LIST
11478: DOUBLE
11479: EQUAL
11480: IFTRUE 11484
11482: GO 11495
11484: POP
// result = ArBaza ; [ 123 , 12 ] :
11485: LD_ADDR_VAR 0 2
11489: PUSH
11490: LD_INT 15
11492: ST_TO_ADDR
11493: GO 11548
11495: LD_INT 123
11497: PUSH
11498: LD_INT 12
11500: PUSH
11501: EMPTY
11502: LIST
11503: LIST
11504: DOUBLE
11505: EQUAL
11506: IFTRUE 11510
11508: GO 11521
11510: POP
// result = PurpleBaza ; [ 214 , 71 ] :
11511: LD_ADDR_VAR 0 2
11515: PUSH
11516: LD_INT 16
11518: ST_TO_ADDR
11519: GO 11548
11521: LD_INT 214
11523: PUSH
11524: LD_INT 71
11526: PUSH
11527: EMPTY
11528: LIST
11529: LIST
11530: DOUBLE
11531: EQUAL
11532: IFTRUE 11536
11534: GO 11547
11536: POP
// result = AmikBaza ; end ;
11537: LD_ADDR_VAR 0 2
11541: PUSH
11542: LD_INT 17
11544: ST_TO_ADDR
11545: GO 11548
11547: POP
// end ;
11548: LD_VAR 0 2
11552: RET
// export function NajdiNejblizsiRepairArea ( un ) ; begin
11553: LD_INT 0
11555: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 171 , 89 ] :
11556: LD_EXP 51
11560: PPUSH
11561: LD_VAR 0 1
11565: PPUSH
11566: CALL_OW 250
11570: PPUSH
11571: LD_VAR 0 1
11575: PPUSH
11576: CALL_OW 251
11580: PPUSH
11581: CALL_OW 439
11585: PUSH
11586: LD_INT 171
11588: PUSH
11589: LD_INT 89
11591: PUSH
11592: EMPTY
11593: LIST
11594: LIST
11595: DOUBLE
11596: EQUAL
11597: IFTRUE 11601
11599: GO 11612
11601: POP
// result = ArRepair ; [ 127 , 15 ] :
11602: LD_ADDR_VAR 0 2
11606: PUSH
11607: LD_INT 24
11609: ST_TO_ADDR
11610: GO 11665
11612: LD_INT 127
11614: PUSH
11615: LD_INT 15
11617: PUSH
11618: EMPTY
11619: LIST
11620: LIST
11621: DOUBLE
11622: EQUAL
11623: IFTRUE 11627
11625: GO 11638
11627: POP
// result = PurpleRepair ; [ 225 , 85 ] :
11628: LD_ADDR_VAR 0 2
11632: PUSH
11633: LD_INT 26
11635: ST_TO_ADDR
11636: GO 11665
11638: LD_INT 225
11640: PUSH
11641: LD_INT 85
11643: PUSH
11644: EMPTY
11645: LIST
11646: LIST
11647: DOUBLE
11648: EQUAL
11649: IFTRUE 11653
11651: GO 11664
11653: POP
// result = AmikRepair ; end ;
11654: LD_ADDR_VAR 0 2
11658: PUSH
11659: LD_INT 28
11661: ST_TO_ADDR
11662: GO 11665
11664: POP
// end ;
11665: LD_VAR 0 2
11669: RET
// function NajdiNejblizsiRepairAreaExpanded ( un ) ; begin
11670: LD_INT 0
11672: PPUSH
// case FindNearestPoint ( stredy_repair_oblasti , GetX ( un ) , GetY ( un ) ) of [ 171 , 89 ] :
11673: LD_EXP 51
11677: PPUSH
11678: LD_VAR 0 1
11682: PPUSH
11683: CALL_OW 250
11687: PPUSH
11688: LD_VAR 0 1
11692: PPUSH
11693: CALL_OW 251
11697: PPUSH
11698: CALL_OW 439
11702: PUSH
11703: LD_INT 171
11705: PUSH
11706: LD_INT 89
11708: PUSH
11709: EMPTY
11710: LIST
11711: LIST
11712: DOUBLE
11713: EQUAL
11714: IFTRUE 11718
11716: GO 11729
11718: POP
// result = ArRepairExpanded ; [ 127 , 15 ] :
11719: LD_ADDR_VAR 0 2
11723: PUSH
11724: LD_INT 25
11726: ST_TO_ADDR
11727: GO 11782
11729: LD_INT 127
11731: PUSH
11732: LD_INT 15
11734: PUSH
11735: EMPTY
11736: LIST
11737: LIST
11738: DOUBLE
11739: EQUAL
11740: IFTRUE 11744
11742: GO 11755
11744: POP
// result = PurpleRepairExpanded ; [ 225 , 85 ] :
11745: LD_ADDR_VAR 0 2
11749: PUSH
11750: LD_INT 27
11752: ST_TO_ADDR
11753: GO 11782
11755: LD_INT 225
11757: PUSH
11758: LD_INT 85
11760: PUSH
11761: EMPTY
11762: LIST
11763: LIST
11764: DOUBLE
11765: EQUAL
11766: IFTRUE 11770
11768: GO 11781
11770: POP
// result = AmikRepairExpanded ; end ;
11771: LD_ADDR_VAR 0 2
11775: PUSH
11776: LD_INT 29
11778: ST_TO_ADDR
11779: GO 11782
11781: POP
// end ;
11782: LD_VAR 0 2
11786: RET
// export function NajdiNejblizsiCarParkArea ( un ) ; begin
11787: LD_INT 0
11789: PPUSH
// case FindNearestPoint ( stredy_carpark_oblasti , GetX ( un ) , GetY ( un ) ) of [ 167 , 98 ] :
11790: LD_EXP 53
11794: PPUSH
11795: LD_VAR 0 1
11799: PPUSH
11800: CALL_OW 250
11804: PPUSH
11805: LD_VAR 0 1
11809: PPUSH
11810: CALL_OW 251
11814: PPUSH
11815: CALL_OW 439
11819: PUSH
11820: LD_INT 167
11822: PUSH
11823: LD_INT 98
11825: PUSH
11826: EMPTY
11827: LIST
11828: LIST
11829: DOUBLE
11830: EQUAL
11831: IFTRUE 11835
11833: GO 11846
11835: POP
// result = ArCarPark ; [ 122 , 15 ] :
11836: LD_ADDR_VAR 0 2
11840: PUSH
11841: LD_INT 30
11843: ST_TO_ADDR
11844: GO 11899
11846: LD_INT 122
11848: PUSH
11849: LD_INT 15
11851: PUSH
11852: EMPTY
11853: LIST
11854: LIST
11855: DOUBLE
11856: EQUAL
11857: IFTRUE 11861
11859: GO 11872
11861: POP
// result = PurpleCarpark ; [ 214 , 70 ] :
11862: LD_ADDR_VAR 0 2
11866: PUSH
11867: LD_INT 31
11869: ST_TO_ADDR
11870: GO 11899
11872: LD_INT 214
11874: PUSH
11875: LD_INT 70
11877: PUSH
11878: EMPTY
11879: LIST
11880: LIST
11881: DOUBLE
11882: EQUAL
11883: IFTRUE 11887
11885: GO 11898
11887: POP
// result = AmikCarPark ; end ;
11888: LD_ADDR_VAR 0 2
11892: PUSH
11893: LD_INT 32
11895: ST_TO_ADDR
11896: GO 11899
11898: POP
// end ;
11899: LD_VAR 0 2
11903: RET
// function UtecDoNejblizsiHealOblasti ( un ) ; begin
11904: LD_INT 0
11906: PPUSH
// VyjdiVen ( un ) ;
11907: LD_VAR 0 1
11911: PPUSH
11912: CALL 5491 0 1
// if not IsInArea2 ( un , NajdiNejblizsiHealArea ( un ) ) then
11916: LD_VAR 0 1
11920: PPUSH
11921: LD_VAR 0 1
11925: PPUSH
11926: CALL 11202 0 1
11930: PPUSH
11931: CALL 5661 0 2
11935: NOT
11936: IFFALSE 11957
// ComMoveToArea ( un , NajdiNejblizsiHealArea ( un ) ) ;
11938: LD_VAR 0 1
11942: PPUSH
11943: LD_VAR 0 1
11947: PPUSH
11948: CALL 11202 0 1
11952: PPUSH
11953: CALL_OW 113
// end ;
11957: LD_VAR 0 2
11961: RET
// function UtecDoNejblizsiCarParkOblasti ( un ) ; begin
11962: LD_INT 0
11964: PPUSH
// if GetDistUnitArea ( un , NajdiNejblizsiCarParkArea ( un ) ) > 4 then
11965: LD_VAR 0 1
11969: PPUSH
11970: LD_VAR 0 1
11974: PPUSH
11975: CALL 11787 0 1
11979: PPUSH
11980: CALL_OW 299
11984: PUSH
11985: LD_INT 4
11987: GREATER
11988: IFFALSE 12009
// begin ComMoveToArea ( un , NajdiNejblizsiCarParkArea ( un ) ) ;
11990: LD_VAR 0 1
11994: PPUSH
11995: LD_VAR 0 1
11999: PPUSH
12000: CALL 11787 0 1
12004: PPUSH
12005: CALL_OW 113
// end ; end ;
12009: LD_VAR 0 2
12013: RET
// export function UtecDoNejblizsiRepairOblasti ( un ) ; begin
12014: LD_INT 0
12016: PPUSH
// if not IsInArea2 ( un , NajdiNejblizsiRepairArea ( un ) ) then
12017: LD_VAR 0 1
12021: PPUSH
12022: LD_VAR 0 1
12026: PPUSH
12027: CALL 11553 0 1
12031: PPUSH
12032: CALL 5661 0 2
12036: NOT
12037: IFFALSE 12058
// ComMoveToArea ( un , NajdiNejblizsiRepairArea ( un ) ) ;
12039: LD_VAR 0 1
12043: PPUSH
12044: LD_VAR 0 1
12048: PPUSH
12049: CALL 11553 0 1
12053: PPUSH
12054: CALL_OW 113
// end ;
12058: LD_VAR 0 2
12062: RET
// function PocetJednotekCoJdouDoBudov ( list ) ; var pocet , i ; begin
12063: LD_INT 0
12065: PPUSH
12066: PPUSH
12067: PPUSH
// pocet = 0 ;
12068: LD_ADDR_VAR 0 3
12072: PUSH
12073: LD_INT 0
12075: ST_TO_ADDR
// for i in list do
12076: LD_ADDR_VAR 0 4
12080: PUSH
12081: LD_VAR 0 1
12085: PUSH
12086: FOR_IN
12087: IFFALSE 12116
// if JdeDoBudovy ( i ) then
12089: LD_VAR 0 4
12093: PPUSH
12094: CALL 12391 0 1
12098: IFFALSE 12114
// pocet = pocet + 1 ;
12100: LD_ADDR_VAR 0 3
12104: PUSH
12105: LD_VAR 0 3
12109: PUSH
12110: LD_INT 1
12112: PLUS
12113: ST_TO_ADDR
12114: GO 12086
12116: POP
12117: POP
// result = pocet ;
12118: LD_ADDR_VAR 0 2
12122: PUSH
12123: LD_VAR 0 3
12127: ST_TO_ADDR
// end ;
12128: LD_VAR 0 2
12132: RET
// function NejblizsiJednotkaCoNemaTask ( list , budova ) ; var k ; begin
12133: LD_INT 0
12135: PPUSH
12136: PPUSH
// for k in list do
12137: LD_ADDR_VAR 0 4
12141: PUSH
12142: LD_VAR 0 1
12146: PUSH
12147: FOR_IN
12148: IFFALSE 12179
// begin if JdeDoBudovy ( k ) then
12150: LD_VAR 0 4
12154: PPUSH
12155: CALL 12391 0 1
12159: IFFALSE 12177
// list = list diff k ;
12161: LD_ADDR_VAR 0 1
12165: PUSH
12166: LD_VAR 0 1
12170: PUSH
12171: LD_VAR 0 4
12175: DIFF
12176: ST_TO_ADDR
// end ;
12177: GO 12147
12179: POP
12180: POP
// if list then
12181: LD_VAR 0 1
12185: IFFALSE 12209
// result = NearestUnitToUnit ( list , budova ) else
12187: LD_ADDR_VAR 0 3
12191: PUSH
12192: LD_VAR 0 1
12196: PPUSH
12197: LD_VAR 0 2
12201: PPUSH
12202: CALL_OW 74
12206: ST_TO_ADDR
12207: GO 12217
// result = 0 ;
12209: LD_ADDR_VAR 0 3
12213: PUSH
12214: LD_INT 0
12216: ST_TO_ADDR
// end ;
12217: LD_VAR 0 3
12221: RET
// function MuzeJitOpravovatCerveny ( un ) ; var tmp ; begin
12222: LD_INT 0
12224: PPUSH
12225: PPUSH
// tmp = false ;
12226: LD_ADDR_VAR 0 3
12230: PUSH
12231: LD_INT 0
12233: ST_TO_ADDR
// if UnitsInside ( IsInUnit ( un ) ) > 3 then
12234: LD_VAR 0 1
12238: PPUSH
12239: CALL_OW 310
12243: PPUSH
12244: CALL_OW 313
12248: PUSH
12249: LD_INT 3
12251: GREATER
12252: IFFALSE 12272
// begin tmp = true ;
12254: LD_ADDR_VAR 0 3
12258: PUSH
12259: LD_INT 1
12261: ST_TO_ADDR
// result = true ;
12262: LD_ADDR_VAR 0 2
12266: PUSH
12267: LD_INT 1
12269: ST_TO_ADDR
// end else
12270: GO 12280
// result = false ;
12272: LD_ADDR_VAR 0 2
12276: PUSH
12277: LD_INT 0
12279: ST_TO_ADDR
// if not tmp then
12280: LD_VAR 0 3
12284: NOT
12285: IFFALSE 12386
// begin if GetTaskList ( un ) <> 0 then
12287: LD_VAR 0 1
12291: PPUSH
12292: CALL_OW 437
12296: PUSH
12297: LD_INT 0
12299: NONEQUAL
12300: IFFALSE 12378
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = r then
12302: LD_VAR 0 1
12306: PPUSH
12307: CALL_OW 437
12311: PUSH
12312: LD_INT 1
12314: ARRAY
12315: PUSH
12316: LD_INT 1
12318: ARRAY
12319: PUSH
12320: LD_STRING r
12322: EQUAL
12323: IFFALSE 12335
// result = true else
12325: LD_ADDR_VAR 0 2
12329: PUSH
12330: LD_INT 1
12332: ST_TO_ADDR
12333: GO 12376
// if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
12335: LD_VAR 0 1
12339: PPUSH
12340: CALL_OW 437
12344: PUSH
12345: LD_INT 1
12347: ARRAY
12348: PUSH
12349: LD_INT 1
12351: ARRAY
12352: PUSH
12353: LD_STRING e
12355: EQUAL
12356: IFFALSE 12368
// result = true else
12358: LD_ADDR_VAR 0 2
12362: PUSH
12363: LD_INT 1
12365: ST_TO_ADDR
12366: GO 12376
// result = false ;
12368: LD_ADDR_VAR 0 2
12372: PUSH
12373: LD_INT 0
12375: ST_TO_ADDR
// end else
12376: GO 12386
// result = false ;
12378: LD_ADDR_VAR 0 2
12382: PUSH
12383: LD_INT 0
12385: ST_TO_ADDR
// end end ;
12386: LD_VAR 0 2
12390: RET
// function JdeDoBudovy ( un ) ; begin
12391: LD_INT 0
12393: PPUSH
// if GetTaskList ( un ) <> 0 then
12394: LD_VAR 0 1
12398: PPUSH
12399: CALL_OW 437
12403: PUSH
12404: LD_INT 0
12406: NONEQUAL
12407: IFFALSE 12452
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = e then
12409: LD_VAR 0 1
12413: PPUSH
12414: CALL_OW 437
12418: PUSH
12419: LD_INT 1
12421: ARRAY
12422: PUSH
12423: LD_INT 1
12425: ARRAY
12426: PUSH
12427: LD_STRING e
12429: EQUAL
12430: IFFALSE 12442
// result = true else
12432: LD_ADDR_VAR 0 2
12436: PUSH
12437: LD_INT 1
12439: ST_TO_ADDR
12440: GO 12450
// result = false ;
12442: LD_ADDR_VAR 0 2
12446: PUSH
12447: LD_INT 0
12449: ST_TO_ADDR
// end else
12450: GO 12460
// result = false ;
12452: LD_ADDR_VAR 0 2
12456: PUSH
12457: LD_INT 0
12459: ST_TO_ADDR
// end ;
12460: LD_VAR 0 2
12464: RET
// export function NajdiVojaka ; var voj ; begin
12465: LD_INT 0
12467: PPUSH
12468: 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
12469: LD_INT 24
12471: PUSH
12472: LD_INT 250
12474: PUSH
12475: EMPTY
12476: LIST
12477: LIST
12478: PUSH
12479: LD_INT 23
12481: PUSH
12482: LD_INT 3
12484: PUSH
12485: EMPTY
12486: LIST
12487: LIST
12488: PUSH
12489: LD_INT 22
12491: PUSH
12492: LD_EXP 21
12496: PUSH
12497: EMPTY
12498: LIST
12499: LIST
12500: PUSH
12501: LD_INT 2
12503: PUSH
12504: LD_INT 25
12506: PUSH
12507: LD_INT 1
12509: PUSH
12510: EMPTY
12511: LIST
12512: LIST
12513: PUSH
12514: LD_INT 25
12516: PUSH
12517: LD_INT 9
12519: PUSH
12520: EMPTY
12521: LIST
12522: LIST
12523: PUSH
12524: EMPTY
12525: LIST
12526: LIST
12527: LIST
12528: PUSH
12529: EMPTY
12530: LIST
12531: LIST
12532: LIST
12533: LIST
12534: PPUSH
12535: CALL_OW 69
12539: PUSH
12540: LD_EXP 1
12544: DIFF
12545: IFFALSE 12629
// voj = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_or , [ f_class , class_soldier ] , [ f_class , class_bazooker ] ] ] ) diff Vsevolod ;
12547: LD_ADDR_VAR 0 2
12551: PUSH
12552: LD_INT 24
12554: PUSH
12555: LD_INT 250
12557: PUSH
12558: EMPTY
12559: LIST
12560: LIST
12561: PUSH
12562: LD_INT 23
12564: PUSH
12565: LD_INT 3
12567: PUSH
12568: EMPTY
12569: LIST
12570: LIST
12571: PUSH
12572: LD_INT 22
12574: PUSH
12575: LD_EXP 21
12579: PUSH
12580: EMPTY
12581: LIST
12582: LIST
12583: PUSH
12584: LD_INT 2
12586: PUSH
12587: LD_INT 25
12589: PUSH
12590: LD_INT 1
12592: PUSH
12593: EMPTY
12594: LIST
12595: LIST
12596: PUSH
12597: LD_INT 25
12599: PUSH
12600: LD_INT 9
12602: PUSH
12603: EMPTY
12604: LIST
12605: LIST
12606: PUSH
12607: EMPTY
12608: LIST
12609: LIST
12610: LIST
12611: PUSH
12612: EMPTY
12613: LIST
12614: LIST
12615: LIST
12616: LIST
12617: PPUSH
12618: CALL_OW 69
12622: PUSH
12623: LD_EXP 1
12627: DIFF
12628: ST_TO_ADDR
// if voj then
12629: LD_VAR 0 2
12633: IFFALSE 12661
// result = voj [ Rand ( 1 , voj ) ] else
12635: LD_ADDR_VAR 0 1
12639: PUSH
12640: LD_VAR 0 2
12644: PUSH
12645: LD_INT 1
12647: PPUSH
12648: LD_VAR 0 2
12652: PPUSH
12653: CALL_OW 12
12657: ARRAY
12658: ST_TO_ADDR
12659: GO 12722
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_combat ) ;
12661: LD_ADDR_VAR 0 1
12665: PUSH
12666: LD_INT 24
12668: PUSH
12669: LD_INT 250
12671: PUSH
12672: EMPTY
12673: LIST
12674: LIST
12675: PUSH
12676: LD_INT 23
12678: PUSH
12679: LD_INT 3
12681: PUSH
12682: EMPTY
12683: LIST
12684: LIST
12685: PUSH
12686: LD_INT 22
12688: PUSH
12689: LD_EXP 21
12693: PUSH
12694: EMPTY
12695: LIST
12696: LIST
12697: PUSH
12698: EMPTY
12699: LIST
12700: LIST
12701: LIST
12702: PPUSH
12703: CALL_OW 69
12707: PUSH
12708: LD_EXP 1
12712: DIFF
12713: PPUSH
12714: LD_INT 1
12716: PPUSH
12717: CALL_OW 433
12721: ST_TO_ADDR
// end ;
12722: LD_VAR 0 1
12726: RET
// export function NajdiVedce ; var ved ; begin
12727: LD_INT 0
12729: PPUSH
12730: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod then
12731: LD_INT 24
12733: PUSH
12734: LD_INT 250
12736: PUSH
12737: EMPTY
12738: LIST
12739: LIST
12740: PUSH
12741: LD_INT 23
12743: PUSH
12744: LD_INT 3
12746: PUSH
12747: EMPTY
12748: LIST
12749: LIST
12750: PUSH
12751: LD_INT 22
12753: PUSH
12754: LD_EXP 21
12758: PUSH
12759: EMPTY
12760: LIST
12761: LIST
12762: PUSH
12763: LD_INT 25
12765: PUSH
12766: LD_INT 4
12768: PUSH
12769: EMPTY
12770: LIST
12771: LIST
12772: PUSH
12773: EMPTY
12774: LIST
12775: LIST
12776: LIST
12777: LIST
12778: PPUSH
12779: CALL_OW 69
12783: PUSH
12784: LD_EXP 1
12788: DIFF
12789: IFFALSE 12855
// ved = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_scientistic ] ] ) diff Vsevolod ;
12791: LD_ADDR_VAR 0 2
12795: PUSH
12796: LD_INT 24
12798: PUSH
12799: LD_INT 250
12801: PUSH
12802: EMPTY
12803: LIST
12804: LIST
12805: PUSH
12806: LD_INT 23
12808: PUSH
12809: LD_INT 3
12811: PUSH
12812: EMPTY
12813: LIST
12814: LIST
12815: PUSH
12816: LD_INT 22
12818: PUSH
12819: LD_EXP 21
12823: PUSH
12824: EMPTY
12825: LIST
12826: LIST
12827: PUSH
12828: LD_INT 25
12830: PUSH
12831: LD_INT 4
12833: PUSH
12834: EMPTY
12835: LIST
12836: LIST
12837: PUSH
12838: EMPTY
12839: LIST
12840: LIST
12841: LIST
12842: LIST
12843: PPUSH
12844: CALL_OW 69
12848: PUSH
12849: LD_EXP 1
12853: DIFF
12854: ST_TO_ADDR
// if ved then
12855: LD_VAR 0 2
12859: IFFALSE 12887
// result = ved [ Rand ( 1 , ved ) ] else
12861: LD_ADDR_VAR 0 1
12865: PUSH
12866: LD_VAR 0 2
12870: PUSH
12871: LD_INT 1
12873: PPUSH
12874: LD_VAR 0 2
12878: PPUSH
12879: CALL_OW 12
12883: ARRAY
12884: ST_TO_ADDR
12885: GO 12948
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_scientistic ) ;
12887: LD_ADDR_VAR 0 1
12891: PUSH
12892: LD_INT 24
12894: PUSH
12895: LD_INT 250
12897: PUSH
12898: EMPTY
12899: LIST
12900: LIST
12901: PUSH
12902: LD_INT 23
12904: PUSH
12905: LD_INT 3
12907: PUSH
12908: EMPTY
12909: LIST
12910: LIST
12911: PUSH
12912: LD_INT 22
12914: PUSH
12915: LD_EXP 21
12919: PUSH
12920: EMPTY
12921: LIST
12922: LIST
12923: PUSH
12924: EMPTY
12925: LIST
12926: LIST
12927: LIST
12928: PPUSH
12929: CALL_OW 69
12933: PUSH
12934: LD_EXP 1
12938: DIFF
12939: PPUSH
12940: LD_INT 4
12942: PPUSH
12943: CALL_OW 433
12947: ST_TO_ADDR
// end ;
12948: LD_VAR 0 1
12952: RET
// export function NajdiMechanika ; var mech ; begin
12953: LD_INT 0
12955: PPUSH
12956: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod then
12957: LD_INT 24
12959: PUSH
12960: LD_INT 250
12962: PUSH
12963: EMPTY
12964: LIST
12965: LIST
12966: PUSH
12967: LD_INT 23
12969: PUSH
12970: LD_INT 3
12972: PUSH
12973: EMPTY
12974: LIST
12975: LIST
12976: PUSH
12977: LD_INT 22
12979: PUSH
12980: LD_EXP 21
12984: PUSH
12985: EMPTY
12986: LIST
12987: LIST
12988: PUSH
12989: LD_INT 25
12991: PUSH
12992: LD_INT 3
12994: PUSH
12995: EMPTY
12996: LIST
12997: LIST
12998: PUSH
12999: EMPTY
13000: LIST
13001: LIST
13002: LIST
13003: LIST
13004: PPUSH
13005: CALL_OW 69
13009: PUSH
13010: LD_EXP 1
13014: DIFF
13015: IFFALSE 13081
// mech = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_mechanic ] ] ) diff Vsevolod ;
13017: LD_ADDR_VAR 0 2
13021: PUSH
13022: LD_INT 24
13024: PUSH
13025: LD_INT 250
13027: PUSH
13028: EMPTY
13029: LIST
13030: LIST
13031: PUSH
13032: LD_INT 23
13034: PUSH
13035: LD_INT 3
13037: PUSH
13038: EMPTY
13039: LIST
13040: LIST
13041: PUSH
13042: LD_INT 22
13044: PUSH
13045: LD_EXP 21
13049: PUSH
13050: EMPTY
13051: LIST
13052: LIST
13053: PUSH
13054: LD_INT 25
13056: PUSH
13057: LD_INT 3
13059: PUSH
13060: EMPTY
13061: LIST
13062: LIST
13063: PUSH
13064: EMPTY
13065: LIST
13066: LIST
13067: LIST
13068: LIST
13069: PPUSH
13070: CALL_OW 69
13074: PUSH
13075: LD_EXP 1
13079: DIFF
13080: ST_TO_ADDR
// if mech then
13081: LD_VAR 0 2
13085: IFFALSE 13113
// result = mech [ Rand ( 1 , mech ) ] else
13087: LD_ADDR_VAR 0 1
13091: PUSH
13092: LD_VAR 0 2
13096: PUSH
13097: LD_INT 1
13099: PPUSH
13100: LD_VAR 0 2
13104: PPUSH
13105: CALL_OW 12
13109: ARRAY
13110: ST_TO_ADDR
13111: GO 13174
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_mechanical ) ;
13113: LD_ADDR_VAR 0 1
13117: PUSH
13118: LD_INT 24
13120: PUSH
13121: LD_INT 250
13123: PUSH
13124: EMPTY
13125: LIST
13126: LIST
13127: PUSH
13128: LD_INT 23
13130: PUSH
13131: LD_INT 3
13133: PUSH
13134: EMPTY
13135: LIST
13136: LIST
13137: PUSH
13138: LD_INT 22
13140: PUSH
13141: LD_EXP 21
13145: PUSH
13146: EMPTY
13147: LIST
13148: LIST
13149: PUSH
13150: EMPTY
13151: LIST
13152: LIST
13153: LIST
13154: PPUSH
13155: CALL_OW 69
13159: PUSH
13160: LD_EXP 1
13164: DIFF
13165: PPUSH
13166: LD_INT 3
13168: PPUSH
13169: CALL_OW 433
13173: ST_TO_ADDR
// end ;
13174: LD_VAR 0 1
13178: RET
// export function NajdiDelnika ; var del ; begin
13179: LD_INT 0
13181: PPUSH
13182: PPUSH
// if FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod then
13183: LD_INT 24
13185: PUSH
13186: LD_INT 250
13188: PUSH
13189: EMPTY
13190: LIST
13191: LIST
13192: PUSH
13193: LD_INT 23
13195: PUSH
13196: LD_INT 3
13198: PUSH
13199: EMPTY
13200: LIST
13201: LIST
13202: PUSH
13203: LD_INT 22
13205: PUSH
13206: LD_EXP 21
13210: PUSH
13211: EMPTY
13212: LIST
13213: LIST
13214: PUSH
13215: LD_INT 25
13217: PUSH
13218: LD_INT 2
13220: PUSH
13221: EMPTY
13222: LIST
13223: LIST
13224: PUSH
13225: EMPTY
13226: LIST
13227: LIST
13228: LIST
13229: LIST
13230: PPUSH
13231: CALL_OW 69
13235: PUSH
13236: LD_EXP 1
13240: DIFF
13241: IFFALSE 13307
// del = FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] , [ f_class , class_engineer ] ] ) diff Vsevolod ;
13243: LD_ADDR_VAR 0 2
13247: PUSH
13248: LD_INT 24
13250: PUSH
13251: LD_INT 250
13253: PUSH
13254: EMPTY
13255: LIST
13256: LIST
13257: PUSH
13258: LD_INT 23
13260: PUSH
13261: LD_INT 3
13263: PUSH
13264: EMPTY
13265: LIST
13266: LIST
13267: PUSH
13268: LD_INT 22
13270: PUSH
13271: LD_EXP 21
13275: PUSH
13276: EMPTY
13277: LIST
13278: LIST
13279: PUSH
13280: LD_INT 25
13282: PUSH
13283: LD_INT 2
13285: PUSH
13286: EMPTY
13287: LIST
13288: LIST
13289: PUSH
13290: EMPTY
13291: LIST
13292: LIST
13293: LIST
13294: LIST
13295: PPUSH
13296: CALL_OW 69
13300: PUSH
13301: LD_EXP 1
13305: DIFF
13306: ST_TO_ADDR
// if del then
13307: LD_VAR 0 2
13311: IFFALSE 13339
// result = del [ Rand ( 1 , del ) ] else
13313: LD_ADDR_VAR 0 1
13317: PUSH
13318: LD_VAR 0 2
13322: PUSH
13323: LD_INT 1
13325: PPUSH
13326: LD_VAR 0 2
13330: PPUSH
13331: CALL_OW 12
13335: ARRAY
13336: ST_TO_ADDR
13337: GO 13400
// result = FindMaxSkill ( FilterAllUnits ( [ [ f_lives , 250 ] , [ f_nation , nation_russian ] , [ f_side , You ] ] ) diff vsevolod , skill_engineering ) ;
13339: LD_ADDR_VAR 0 1
13343: PUSH
13344: LD_INT 24
13346: PUSH
13347: LD_INT 250
13349: PUSH
13350: EMPTY
13351: LIST
13352: LIST
13353: PUSH
13354: LD_INT 23
13356: PUSH
13357: LD_INT 3
13359: PUSH
13360: EMPTY
13361: LIST
13362: LIST
13363: PUSH
13364: LD_INT 22
13366: PUSH
13367: LD_EXP 21
13371: PUSH
13372: EMPTY
13373: LIST
13374: LIST
13375: PUSH
13376: EMPTY
13377: LIST
13378: LIST
13379: LIST
13380: PPUSH
13381: CALL_OW 69
13385: PUSH
13386: LD_EXP 1
13390: DIFF
13391: PPUSH
13392: LD_INT 2
13394: PPUSH
13395: CALL_OW 433
13399: ST_TO_ADDR
// end ;
13400: LD_VAR 0 1
13404: RET
// function GetListOfCratesInAreaBySide ( side ) ; begin
13405: LD_INT 0
13407: PPUSH
// if side = arab then
13408: LD_VAR 0 1
13412: PUSH
13413: LD_EXP 23
13417: EQUAL
13418: IFFALSE 13435
// result = GetListOfCratesInArea ( ArBaza ) else
13420: LD_ADDR_VAR 0 2
13424: PUSH
13425: LD_INT 15
13427: PPUSH
13428: CALL_OW 435
13432: ST_TO_ADDR
13433: GO 13487
// if side = amik then
13435: LD_VAR 0 1
13439: PUSH
13440: LD_EXP 24
13444: EQUAL
13445: IFFALSE 13462
// result = GetListOfCratesInArea ( AmikBaza ) else
13447: LD_ADDR_VAR 0 2
13451: PUSH
13452: LD_INT 17
13454: PPUSH
13455: CALL_OW 435
13459: ST_TO_ADDR
13460: GO 13487
// if side = purple then
13462: LD_VAR 0 1
13466: PUSH
13467: LD_EXP 22
13471: EQUAL
13472: IFFALSE 13487
// result = GetListOfCratesInArea ( PurpleBaza ) end ;
13474: LD_ADDR_VAR 0 2
13478: PUSH
13479: LD_INT 16
13481: PPUSH
13482: CALL_OW 435
13486: ST_TO_ADDR
13487: LD_VAR 0 2
13491: RET
// export function CreateCratesArea2 ( crates , area , mat ) ; begin
13492: LD_INT 0
13494: PPUSH
// if crates < 1 or crates > 5 then
13495: LD_VAR 0 1
13499: PUSH
13500: LD_INT 1
13502: LESS
13503: PUSH
13504: LD_VAR 0 1
13508: PUSH
13509: LD_INT 5
13511: GREATER
13512: OR
13513: IFFALSE 13517
// exit ;
13515: GO 13536
// CreateCratesArea ( crates , area , mat ) ;
13517: LD_VAR 0 1
13521: PPUSH
13522: LD_VAR 0 2
13526: PPUSH
13527: LD_VAR 0 3
13531: PPUSH
13532: CALL_OW 55
// end ; end_of_file
13536: LD_VAR 0 4
13540: RET
// export function Priroda ; var i , k , apelist , tigerlist ; begin
13541: LD_INT 0
13543: PPUSH
13544: PPUSH
13545: PPUSH
13546: PPUSH
13547: PPUSH
// InitHc ;
13548: CALL_OW 19
// InitUc ;
13552: CALL_OW 18
// uc_side := 0 ;
13556: LD_ADDR_OWVAR 20
13560: PUSH
13561: LD_INT 0
13563: ST_TO_ADDR
// uc_nation := nation_nature ;
13564: LD_ADDR_OWVAR 21
13568: PUSH
13569: LD_INT 0
13571: ST_TO_ADDR
// hc_class := class_apeman ;
13572: LD_ADDR_OWVAR 28
13576: PUSH
13577: LD_INT 12
13579: ST_TO_ADDR
// apelist = [ [ 38 , 40 ] , [ 35 , 12 ] , [ 68 , 30 ] , [ 54 , 12 ] , [ 183 , 10 ] , [ 148 , 59 ] , [ 114 , 94 ] , [ 57 , 89 ] , [ 169 , 142 ] ] ;
13580: LD_ADDR_VAR 0 4
13584: PUSH
13585: LD_INT 38
13587: PUSH
13588: LD_INT 40
13590: PUSH
13591: EMPTY
13592: LIST
13593: LIST
13594: PUSH
13595: LD_INT 35
13597: PUSH
13598: LD_INT 12
13600: PUSH
13601: EMPTY
13602: LIST
13603: LIST
13604: PUSH
13605: LD_INT 68
13607: PUSH
13608: LD_INT 30
13610: PUSH
13611: EMPTY
13612: LIST
13613: LIST
13614: PUSH
13615: LD_INT 54
13617: PUSH
13618: LD_INT 12
13620: PUSH
13621: EMPTY
13622: LIST
13623: LIST
13624: PUSH
13625: LD_INT 183
13627: PUSH
13628: LD_INT 10
13630: PUSH
13631: EMPTY
13632: LIST
13633: LIST
13634: PUSH
13635: LD_INT 148
13637: PUSH
13638: LD_INT 59
13640: PUSH
13641: EMPTY
13642: LIST
13643: LIST
13644: PUSH
13645: LD_INT 114
13647: PUSH
13648: LD_INT 94
13650: PUSH
13651: EMPTY
13652: LIST
13653: LIST
13654: PUSH
13655: LD_INT 57
13657: PUSH
13658: LD_INT 89
13660: PUSH
13661: EMPTY
13662: LIST
13663: LIST
13664: PUSH
13665: LD_INT 169
13667: PUSH
13668: LD_INT 142
13670: PUSH
13671: EMPTY
13672: LIST
13673: LIST
13674: PUSH
13675: EMPTY
13676: LIST
13677: LIST
13678: LIST
13679: LIST
13680: LIST
13681: LIST
13682: LIST
13683: LIST
13684: LIST
13685: ST_TO_ADDR
// tigerlist = [ [ 72 , 89 ] , [ 74 , 27 ] , [ 82 , 148 ] , [ 240 , 148 ] , [ 161 , 45 ] ] ;
13686: LD_ADDR_VAR 0 5
13690: PUSH
13691: LD_INT 72
13693: PUSH
13694: LD_INT 89
13696: PUSH
13697: EMPTY
13698: LIST
13699: LIST
13700: PUSH
13701: LD_INT 74
13703: PUSH
13704: LD_INT 27
13706: PUSH
13707: EMPTY
13708: LIST
13709: LIST
13710: PUSH
13711: LD_INT 82
13713: PUSH
13714: LD_INT 148
13716: PUSH
13717: EMPTY
13718: LIST
13719: LIST
13720: PUSH
13721: LD_INT 240
13723: PUSH
13724: LD_INT 148
13726: PUSH
13727: EMPTY
13728: LIST
13729: LIST
13730: PUSH
13731: LD_INT 161
13733: PUSH
13734: LD_INT 45
13736: PUSH
13737: EMPTY
13738: LIST
13739: LIST
13740: PUSH
13741: EMPTY
13742: LIST
13743: LIST
13744: LIST
13745: LIST
13746: LIST
13747: ST_TO_ADDR
// for i = 1 to apelist + 0 do
13748: LD_ADDR_VAR 0 2
13752: PUSH
13753: DOUBLE
13754: LD_INT 1
13756: DEC
13757: ST_TO_ADDR
13758: LD_VAR 0 4
13762: PUSH
13763: LD_INT 0
13765: PLUS
13766: PUSH
13767: FOR_TO
13768: IFFALSE 13843
// begin hc_agressivity := Rand ( - 10 , dif_ape_agr_multiplier ) ;
13770: LD_ADDR_OWVAR 35
13774: PUSH
13775: LD_INT 10
13777: NEG
13778: PPUSH
13779: LD_EXP 57
13783: PPUSH
13784: CALL_OW 12
13788: ST_TO_ADDR
// k := CreateHuman ;
13789: LD_ADDR_VAR 0 3
13793: PUSH
13794: CALL_OW 44
13798: ST_TO_ADDR
// PlaceUnitXY ( k , apelist [ i ] [ 1 ] , apelist [ i ] [ 2 ] , false ) ;
13799: LD_VAR 0 3
13803: PPUSH
13804: LD_VAR 0 4
13808: PUSH
13809: LD_VAR 0 2
13813: ARRAY
13814: PUSH
13815: LD_INT 1
13817: ARRAY
13818: PPUSH
13819: LD_VAR 0 4
13823: PUSH
13824: LD_VAR 0 2
13828: ARRAY
13829: PUSH
13830: LD_INT 2
13832: ARRAY
13833: PPUSH
13834: LD_INT 0
13836: PPUSH
13837: CALL_OW 48
// end ;
13841: GO 13767
13843: POP
13844: POP
// hc_class := class_tiger ;
13845: LD_ADDR_OWVAR 28
13849: PUSH
13850: LD_INT 14
13852: ST_TO_ADDR
// for i = 1 to tigerlist + 0 do
13853: LD_ADDR_VAR 0 2
13857: PUSH
13858: DOUBLE
13859: LD_INT 1
13861: DEC
13862: ST_TO_ADDR
13863: LD_VAR 0 5
13867: PUSH
13868: LD_INT 0
13870: PLUS
13871: PUSH
13872: FOR_TO
13873: IFFALSE 13947
// begin hc_agressivity := Rand ( 10 , dif_tiger_agr_multiplier ) ;
13875: LD_ADDR_OWVAR 35
13879: PUSH
13880: LD_INT 10
13882: PPUSH
13883: LD_EXP 58
13887: PPUSH
13888: CALL_OW 12
13892: ST_TO_ADDR
// k := CreateHuman ;
13893: LD_ADDR_VAR 0 3
13897: PUSH
13898: CALL_OW 44
13902: ST_TO_ADDR
// PlaceUnitXY ( k , tigerlist [ i ] [ 1 ] , tigerlist [ i ] [ 2 ] , false ) ;
13903: LD_VAR 0 3
13907: PPUSH
13908: LD_VAR 0 5
13912: PUSH
13913: LD_VAR 0 2
13917: ARRAY
13918: PUSH
13919: LD_INT 1
13921: ARRAY
13922: PPUSH
13923: LD_VAR 0 5
13927: PUSH
13928: LD_VAR 0 2
13932: ARRAY
13933: PUSH
13934: LD_INT 2
13936: ARRAY
13937: PPUSH
13938: LD_INT 0
13940: PPUSH
13941: CALL_OW 48
// end ;
13945: GO 13872
13947: POP
13948: POP
// end ; end_of_file
13949: LD_VAR 0 1
13953: 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
13954: LD_INT 0
13956: PPUSH
// dif_ape_agr_multiplier = 13 * difficulty ;
13957: LD_ADDR_EXP 57
13961: PUSH
13962: LD_INT 13
13964: PUSH
13965: LD_OWVAR 67
13969: MUL
13970: ST_TO_ADDR
// dif_tiger_agr_multiplier = 20 * difficulty ;
13971: LD_ADDR_EXP 58
13975: PUSH
13976: LD_INT 20
13978: PUSH
13979: LD_OWVAR 67
13983: MUL
13984: 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 ] ;
13985: LD_ADDR_EXP 59
13989: PUSH
13990: LD_INT 1400
13992: PUSH
13993: LD_INT 2800
13995: PUSH
13996: EMPTY
13997: LIST
13998: LIST
13999: PUSH
14000: LD_INT 2100
14002: PUSH
14003: LD_INT 2800
14005: PUSH
14006: EMPTY
14007: LIST
14008: LIST
14009: PUSH
14010: LD_INT 2450
14012: PUSH
14013: LD_INT 3150
14015: PUSH
14016: EMPTY
14017: LIST
14018: LIST
14019: PUSH
14020: EMPTY
14021: LIST
14022: LIST
14023: LIST
14024: PUSH
14025: LD_OWVAR 67
14029: ARRAY
14030: ST_TO_ADDR
// dif_bedny_mnozstvi = [ [ 4 , 5 ] , [ 3 , 5 ] , [ 2 , 5 ] ] [ difficulty ] ;
14031: LD_ADDR_EXP 60
14035: PUSH
14036: LD_INT 4
14038: PUSH
14039: LD_INT 5
14041: PUSH
14042: EMPTY
14043: LIST
14044: LIST
14045: PUSH
14046: LD_INT 3
14048: PUSH
14049: LD_INT 5
14051: PUSH
14052: EMPTY
14053: LIST
14054: LIST
14055: PUSH
14056: LD_INT 2
14058: PUSH
14059: LD_INT 5
14061: PUSH
14062: EMPTY
14063: LIST
14064: LIST
14065: PUSH
14066: EMPTY
14067: LIST
14068: LIST
14069: LIST
14070: PUSH
14071: LD_OWVAR 67
14075: ARRAY
14076: ST_TO_ADDR
// dif_enemy_lidi_kasa = [ 4 , 5 , 6 ] [ difficulty ] ;
14077: LD_ADDR_EXP 61
14081: PUSH
14082: LD_INT 4
14084: PUSH
14085: LD_INT 5
14087: PUSH
14088: LD_INT 6
14090: PUSH
14091: EMPTY
14092: LIST
14093: LIST
14094: LIST
14095: PUSH
14096: LD_OWVAR 67
14100: ARRAY
14101: ST_TO_ADDR
// dif_enemy_lidi_faclab = [ 4 , 5 , 6 ] [ difficulty ] ;
14102: LD_ADDR_EXP 63
14106: PUSH
14107: LD_INT 4
14109: PUSH
14110: LD_INT 5
14112: PUSH
14113: LD_INT 6
14115: PUSH
14116: EMPTY
14117: LIST
14118: LIST
14119: LIST
14120: PUSH
14121: LD_OWVAR 67
14125: ARRAY
14126: ST_TO_ADDR
// dif_enemy_lidi_sklad = [ 4 , 6 , 6 ] [ difficulty ] ;
14127: LD_ADDR_EXP 62
14131: PUSH
14132: LD_INT 4
14134: PUSH
14135: LD_INT 6
14137: PUSH
14138: LD_INT 6
14140: PUSH
14141: EMPTY
14142: LIST
14143: LIST
14144: LIST
14145: PUSH
14146: LD_OWVAR 67
14150: ARRAY
14151: ST_TO_ADDR
// dif_enemy_min_skill = [ 4 , 5 , 7 ] [ difficulty ] ;
14152: LD_ADDR_EXP 64
14156: PUSH
14157: LD_INT 4
14159: PUSH
14160: LD_INT 5
14162: PUSH
14163: LD_INT 7
14165: PUSH
14166: EMPTY
14167: LIST
14168: LIST
14169: LIST
14170: PUSH
14171: LD_OWVAR 67
14175: ARRAY
14176: ST_TO_ADDR
// dif_enemy_max_skill = [ 6 , 7 , 9 ] [ difficulty ] ;
14177: LD_ADDR_EXP 65
14181: PUSH
14182: LD_INT 6
14184: PUSH
14185: LD_INT 7
14187: PUSH
14188: LD_INT 9
14190: PUSH
14191: EMPTY
14192: LIST
14193: LIST
14194: LIST
14195: PUSH
14196: LD_OWVAR 67
14200: ARRAY
14201: ST_TO_ADDR
// dif_prob_uspavaci = [ 50 , 55 , 60 ] [ difficulty ] ;
14202: LD_ADDR_EXP 66
14206: PUSH
14207: LD_INT 50
14209: PUSH
14210: LD_INT 55
14212: PUSH
14213: LD_INT 60
14215: PUSH
14216: EMPTY
14217: LIST
14218: LIST
14219: LIST
14220: PUSH
14221: LD_OWVAR 67
14225: ARRAY
14226: ST_TO_ADDR
// dif_ar_attack_size = [ 5 , 6 , 7 ] [ difficulty ] ;
14227: LD_ADDR_EXP 67
14231: PUSH
14232: LD_INT 5
14234: PUSH
14235: LD_INT 6
14237: PUSH
14238: LD_INT 7
14240: PUSH
14241: EMPTY
14242: LIST
14243: LIST
14244: LIST
14245: PUSH
14246: LD_OWVAR 67
14250: ARRAY
14251: ST_TO_ADDR
// dif_purple_attack_size = [ 4 , 5 , 5 ] [ difficulty ] ;
14252: LD_ADDR_EXP 68
14256: PUSH
14257: LD_INT 4
14259: PUSH
14260: LD_INT 5
14262: PUSH
14263: LD_INT 5
14265: PUSH
14266: EMPTY
14267: LIST
14268: LIST
14269: LIST
14270: PUSH
14271: LD_OWVAR 67
14275: ARRAY
14276: ST_TO_ADDR
// dif_amik_attack_size = [ 4 , 5 , 6 ] [ difficulty ] ;
14277: LD_ADDR_EXP 69
14281: PUSH
14282: LD_INT 4
14284: PUSH
14285: LD_INT 5
14287: PUSH
14288: LD_INT 6
14290: PUSH
14291: EMPTY
14292: LIST
14293: LIST
14294: LIST
14295: PUSH
14296: LD_OWVAR 67
14300: ARRAY
14301: ST_TO_ADDR
// dif_arab_vyroba_utok_wait_start = [ 5 5$30 , 4 4$30 , 3 3$00 ] [ difficulty ] ;
14302: LD_ADDR_EXP 76
14306: PUSH
14307: LD_INT 11550
14309: PUSH
14310: LD_INT 9450
14312: PUSH
14313: LD_INT 6300
14315: PUSH
14316: EMPTY
14317: LIST
14318: LIST
14319: LIST
14320: PUSH
14321: LD_OWVAR 67
14325: ARRAY
14326: ST_TO_ADDR
// dif_purple_vyroba_utok_wait_start = [ 13 13$30 , 10 10$00 , 9 9$00 ] [ difficulty ] ;
14327: LD_ADDR_EXP 77
14331: PUSH
14332: LD_INT 28350
14334: PUSH
14335: LD_INT 21000
14337: PUSH
14338: LD_INT 18900
14340: PUSH
14341: EMPTY
14342: LIST
14343: LIST
14344: LIST
14345: PUSH
14346: LD_OWVAR 67
14350: ARRAY
14351: ST_TO_ADDR
// dif_amik_vyroba_utok_wait_start = [ 6 6$30 , 4 4$30 , 3 3$10 ] [ difficulty ] ;
14352: LD_ADDR_EXP 78
14356: PUSH
14357: LD_INT 13650
14359: PUSH
14360: LD_INT 9450
14362: PUSH
14363: LD_INT 6650
14365: PUSH
14366: EMPTY
14367: LIST
14368: LIST
14369: LIST
14370: PUSH
14371: LD_OWVAR 67
14375: ARRAY
14376: ST_TO_ADDR
// dif_arab_vyroba_utok_wait = [ 11 11$00 , 9 9$30 , 8 8$00 ] [ difficulty ] ;
14377: LD_ADDR_EXP 70
14381: PUSH
14382: LD_INT 23100
14384: PUSH
14385: LD_INT 19950
14387: PUSH
14388: LD_INT 16800
14390: PUSH
14391: EMPTY
14392: LIST
14393: LIST
14394: LIST
14395: PUSH
14396: LD_OWVAR 67
14400: ARRAY
14401: ST_TO_ADDR
// dif_purple_vyroba_utok_wait = [ 20 20$00 , 16 16$00 , 15 15$00 ] [ difficulty ] ;
14402: LD_ADDR_EXP 71
14406: PUSH
14407: LD_INT 42000
14409: PUSH
14410: LD_INT 33600
14412: PUSH
14413: LD_INT 31500
14415: PUSH
14416: EMPTY
14417: LIST
14418: LIST
14419: LIST
14420: PUSH
14421: LD_OWVAR 67
14425: ARRAY
14426: ST_TO_ADDR
// dif_amik_vyroba_utok_wait = [ 13 13$00 , 7 7$30 , 6 6$40 ] [ difficulty ] ;
14427: LD_ADDR_EXP 72
14431: PUSH
14432: LD_INT 27300
14434: PUSH
14435: LD_INT 15750
14437: PUSH
14438: LD_INT 14000
14440: PUSH
14441: EMPTY
14442: LIST
14443: LIST
14444: LIST
14445: PUSH
14446: LD_OWVAR 67
14450: ARRAY
14451: ST_TO_ADDR
// dif_auto_lepsi_podvozek_sance = [ 25 , 50 , 75 ] [ difficulty ] ;
14452: LD_ADDR_EXP 73
14456: PUSH
14457: LD_INT 25
14459: PUSH
14460: LD_INT 50
14462: PUSH
14463: LD_INT 75
14465: PUSH
14466: EMPTY
14467: LIST
14468: LIST
14469: LIST
14470: PUSH
14471: LD_OWVAR 67
14475: ARRAY
14476: ST_TO_ADDR
// dif_auto_vyroba_sance = [ [ 25 , 50 , 75 , 95 ] , [ 20 , 40 , 70 , 91 ] , [ 10 , 30 , 50 , 88 ] ] [ difficulty ] ;
14477: LD_ADDR_EXP 74
14481: PUSH
14482: LD_INT 25
14484: PUSH
14485: LD_INT 50
14487: PUSH
14488: LD_INT 75
14490: PUSH
14491: LD_INT 95
14493: PUSH
14494: EMPTY
14495: LIST
14496: LIST
14497: LIST
14498: LIST
14499: PUSH
14500: LD_INT 20
14502: PUSH
14503: LD_INT 40
14505: PUSH
14506: LD_INT 70
14508: PUSH
14509: LD_INT 91
14511: PUSH
14512: EMPTY
14513: LIST
14514: LIST
14515: LIST
14516: LIST
14517: PUSH
14518: LD_INT 10
14520: PUSH
14521: LD_INT 30
14523: PUSH
14524: LD_INT 50
14526: PUSH
14527: LD_INT 88
14529: PUSH
14530: EMPTY
14531: LIST
14532: LIST
14533: LIST
14534: LIST
14535: PUSH
14536: EMPTY
14537: LIST
14538: LIST
14539: LIST
14540: PUSH
14541: LD_OWVAR 67
14545: ARRAY
14546: ST_TO_ADDR
// dif_research_wait = [ 7 7$00 , 5 5$30 , 4 4$00 ] [ difficulty ] ;
14547: LD_ADDR_EXP 75
14551: PUSH
14552: LD_INT 14700
14554: PUSH
14555: LD_INT 11550
14557: PUSH
14558: LD_INT 8400
14560: PUSH
14561: EMPTY
14562: LIST
14563: LIST
14564: LIST
14565: PUSH
14566: LD_OWVAR 67
14570: ARRAY
14571: ST_TO_ADDR
// dif_vyroba_tick_inkrement = [ 0 0$45 , 0 0$30 , 0 0$30 ] [ difficulty ] ;
14572: LD_ADDR_EXP 79
14576: PUSH
14577: LD_INT 1575
14579: PUSH
14580: LD_INT 1050
14582: PUSH
14583: LD_INT 1050
14585: PUSH
14586: EMPTY
14587: LIST
14588: LIST
14589: LIST
14590: PUSH
14591: LD_OWVAR 67
14595: ARRAY
14596: ST_TO_ADDR
// if difficulty > 1 then
14597: LD_OWVAR 67
14601: PUSH
14602: LD_INT 1
14604: GREATER
14605: IFFALSE 14637
// begin SetTech ( tech_weap1 , arab , state_researched ) ;
14607: LD_INT 51
14609: PPUSH
14610: LD_EXP 23
14614: PPUSH
14615: LD_INT 2
14617: PPUSH
14618: CALL_OW 322
// SetTech ( tech_weap2 , arab , state_researched ) ;
14622: LD_INT 52
14624: PPUSH
14625: LD_EXP 23
14629: PPUSH
14630: LD_INT 2
14632: PPUSH
14633: CALL_OW 322
// end ; if difficulty = 3 then
14637: LD_OWVAR 67
14641: PUSH
14642: LD_INT 3
14644: EQUAL
14645: IFFALSE 14662
// SetTech ( tech_weap3 , arab , state_researched ) ;
14647: LD_INT 53
14649: PPUSH
14650: LD_EXP 23
14654: PPUSH
14655: LD_INT 2
14657: PPUSH
14658: CALL_OW 322
// end ; end_of_file
14662: LD_VAR 0 1
14666: RET
// every 0 0$3 do
14667: GO 14669
14669: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14670: LD_EXP 59
14674: PUSH
14675: LD_INT 1
14677: ARRAY
14678: PPUSH
14679: LD_EXP 59
14683: PUSH
14684: LD_INT 2
14686: ARRAY
14687: PPUSH
14688: CALL_OW 12
14692: PPUSH
14693: CALL_OW 67
// if GetResourceArea ( Bedny1 , mat_cans ) < 12 then
14697: LD_INT 8
14699: PPUSH
14700: LD_INT 1
14702: PPUSH
14703: CALL_OW 287
14707: PUSH
14708: LD_INT 12
14710: LESS
14711: IFFALSE 14746
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny1 , true ) ;
14713: LD_EXP 60
14717: PUSH
14718: LD_INT 1
14720: ARRAY
14721: PPUSH
14722: LD_EXP 60
14726: PUSH
14727: LD_INT 2
14729: ARRAY
14730: PPUSH
14731: CALL_OW 12
14735: PPUSH
14736: LD_INT 8
14738: PPUSH
14739: LD_INT 1
14741: PPUSH
14742: CALL 13492 0 3
// enable ;
14746: ENABLE
// end ;
14747: END
// every 0 0$3 do
14748: GO 14750
14750: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14751: LD_EXP 59
14755: PUSH
14756: LD_INT 1
14758: ARRAY
14759: PPUSH
14760: LD_EXP 59
14764: PUSH
14765: LD_INT 2
14767: ARRAY
14768: PPUSH
14769: CALL_OW 12
14773: PPUSH
14774: CALL_OW 67
// if GetResourceArea ( Bedny2 , mat_cans ) < 12 then
14778: LD_INT 9
14780: PPUSH
14781: LD_INT 1
14783: PPUSH
14784: CALL_OW 287
14788: PUSH
14789: LD_INT 12
14791: LESS
14792: IFFALSE 14827
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny2 , true ) ;
14794: LD_EXP 60
14798: PUSH
14799: LD_INT 1
14801: ARRAY
14802: PPUSH
14803: LD_EXP 60
14807: PUSH
14808: LD_INT 2
14810: ARRAY
14811: PPUSH
14812: CALL_OW 12
14816: PPUSH
14817: LD_INT 9
14819: PPUSH
14820: LD_INT 1
14822: PPUSH
14823: CALL 13492 0 3
// enable ;
14827: ENABLE
// end ;
14828: END
// every 0 0$3 do
14829: GO 14831
14831: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14832: LD_EXP 59
14836: PUSH
14837: LD_INT 1
14839: ARRAY
14840: PPUSH
14841: LD_EXP 59
14845: PUSH
14846: LD_INT 2
14848: ARRAY
14849: PPUSH
14850: CALL_OW 12
14854: PPUSH
14855: CALL_OW 67
// if GetResourceArea ( Bedny3 , mat_cans ) < 12 then
14859: LD_INT 10
14861: PPUSH
14862: LD_INT 1
14864: PPUSH
14865: CALL_OW 287
14869: PUSH
14870: LD_INT 12
14872: LESS
14873: IFFALSE 14908
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny3 , true ) ;
14875: LD_EXP 60
14879: PUSH
14880: LD_INT 1
14882: ARRAY
14883: PPUSH
14884: LD_EXP 60
14888: PUSH
14889: LD_INT 2
14891: ARRAY
14892: PPUSH
14893: CALL_OW 12
14897: PPUSH
14898: LD_INT 10
14900: PPUSH
14901: LD_INT 1
14903: PPUSH
14904: CALL 13492 0 3
// enable ;
14908: ENABLE
// end ;
14909: END
// every 0 0$3 do
14910: GO 14912
14912: DISABLE
// begin Wait ( Rand ( dif_bedny_wait [ 1 ] , dif_bedny_wait [ 2 ] ) ) ;
14913: LD_EXP 59
14917: PUSH
14918: LD_INT 1
14920: ARRAY
14921: PPUSH
14922: LD_EXP 59
14926: PUSH
14927: LD_INT 2
14929: ARRAY
14930: PPUSH
14931: CALL_OW 12
14935: PPUSH
14936: CALL_OW 67
// if GetResourceArea ( Bedny4 , mat_cans ) < 12 then
14940: LD_INT 11
14942: PPUSH
14943: LD_INT 1
14945: PPUSH
14946: CALL_OW 287
14950: PUSH
14951: LD_INT 12
14953: LESS
14954: IFFALSE 14989
// CreateCratesArea2 ( Rand ( dif_bedny_mnozstvi [ 1 ] , dif_bedny_mnozstvi [ 2 ] ) , Bedny4 , true ) ;
14956: LD_EXP 60
14960: PUSH
14961: LD_INT 1
14963: ARRAY
14964: PPUSH
14965: LD_EXP 60
14969: PUSH
14970: LD_INT 2
14972: ARRAY
14973: PPUSH
14974: CALL_OW 12
14978: PPUSH
14979: LD_INT 11
14981: PPUSH
14982: LD_INT 1
14984: PPUSH
14985: CALL 13492 0 3
// enable ;
14989: ENABLE
// end ;
14990: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) do var x , y ;
14991: LD_INT 22
14993: PUSH
14994: LD_EXP 21
14998: PUSH
14999: EMPTY
15000: LIST
15001: LIST
15002: PUSH
15003: LD_INT 21
15005: PUSH
15006: LD_INT 3
15008: PUSH
15009: EMPTY
15010: LIST
15011: LIST
15012: PUSH
15013: LD_INT 57
15015: PUSH
15016: EMPTY
15017: LIST
15018: PUSH
15019: EMPTY
15020: LIST
15021: LIST
15022: LIST
15023: PPUSH
15024: CALL_OW 69
15028: IFFALSE 15273
15030: GO 15032
15032: DISABLE
15033: LD_INT 0
15035: PPUSH
15036: PPUSH
// begin x = GetX ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
15037: LD_ADDR_VAR 0 1
15041: PUSH
15042: LD_INT 22
15044: PUSH
15045: LD_EXP 21
15049: PUSH
15050: EMPTY
15051: LIST
15052: LIST
15053: PUSH
15054: LD_INT 21
15056: PUSH
15057: LD_INT 3
15059: PUSH
15060: EMPTY
15061: LIST
15062: LIST
15063: PUSH
15064: LD_INT 57
15066: PUSH
15067: EMPTY
15068: LIST
15069: PUSH
15070: EMPTY
15071: LIST
15072: LIST
15073: LIST
15074: PPUSH
15075: CALL_OW 69
15079: PUSH
15080: LD_INT 1
15082: ARRAY
15083: PPUSH
15084: CALL_OW 250
15088: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] , [ f_constructed ] ] ) [ 1 ] ) ;
15089: LD_ADDR_VAR 0 2
15093: PUSH
15094: LD_INT 22
15096: PUSH
15097: LD_EXP 21
15101: PUSH
15102: EMPTY
15103: LIST
15104: LIST
15105: PUSH
15106: LD_INT 21
15108: PUSH
15109: LD_INT 3
15111: PUSH
15112: EMPTY
15113: LIST
15114: LIST
15115: PUSH
15116: LD_INT 57
15118: PUSH
15119: EMPTY
15120: LIST
15121: PUSH
15122: EMPTY
15123: LIST
15124: LIST
15125: LIST
15126: PPUSH
15127: CALL_OW 69
15131: PUSH
15132: LD_INT 1
15134: ARRAY
15135: PPUSH
15136: CALL_OW 251
15140: ST_TO_ADDR
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15141: LD_INT 700
15143: PPUSH
15144: LD_INT 1400
15146: PPUSH
15147: CALL_OW 12
15151: PPUSH
15152: CALL_OW 67
// CreateCratesXYR ( 5 , x , y , 9 , true ) ;
15156: LD_INT 5
15158: PPUSH
15159: LD_VAR 0 1
15163: PPUSH
15164: LD_VAR 0 2
15168: PPUSH
15169: LD_INT 9
15171: PPUSH
15172: LD_INT 1
15174: PPUSH
15175: CALL_OW 56
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15179: LD_INT 700
15181: PPUSH
15182: LD_INT 1400
15184: PPUSH
15185: CALL_OW 12
15189: PPUSH
15190: CALL_OW 67
// if not difficulty = 3 then
15194: LD_OWVAR 67
15198: PUSH
15199: LD_INT 3
15201: EQUAL
15202: NOT
15203: IFFALSE 15228
// CreateCratesXYR ( 3 , x , y , 9 , true ) ;
15205: LD_INT 3
15207: PPUSH
15208: LD_VAR 0 1
15212: PPUSH
15213: LD_VAR 0 2
15217: PPUSH
15218: LD_INT 9
15220: PPUSH
15221: LD_INT 1
15223: PPUSH
15224: CALL_OW 56
// Wait ( Rand ( 0 0$20 , 0 0$40 ) ) ;
15228: LD_INT 700
15230: PPUSH
15231: LD_INT 1400
15233: PPUSH
15234: CALL_OW 12
15238: PPUSH
15239: CALL_OW 67
// if not RusakBazaDole then
15243: LD_EXP 42
15247: NOT
15248: IFFALSE 15273
// CreateCratesXYR ( 3 , x , y , 9 , true ) ;
15250: LD_INT 3
15252: PPUSH
15253: LD_VAR 0 1
15257: PPUSH
15258: LD_VAR 0 2
15262: PPUSH
15263: LD_INT 9
15265: PPUSH
15266: LD_INT 1
15268: PPUSH
15269: CALL_OW 56
// end ; end_of_file
15273: PPOPN 2
15275: END
// var ignore ; export zalezt ; every 0 0$1 do var i ;
15276: GO 15278
15278: DISABLE
15279: LD_INT 0
15281: PPUSH
// begin zalezt = [ ] ;
15282: LD_ADDR_EXP 80
15286: PUSH
15287: EMPTY
15288: ST_TO_ADDR
// for i in FilterUnitsInArea ( ArBazaDruha , [ f_type , unit_human ] ) do
15289: LD_ADDR_VAR 0 1
15293: PUSH
15294: LD_INT 12
15296: PPUSH
15297: LD_INT 21
15299: PUSH
15300: LD_INT 1
15302: PUSH
15303: EMPTY
15304: LIST
15305: LIST
15306: PPUSH
15307: CALL_OW 70
15311: PUSH
15312: FOR_IN
15313: IFFALSE 15354
// begin ComEnterUnit ( i , NearestUnitToUnit ( FilterUnitsInArea ( ArBazaDruha , [ f_type , unit_building ] ) , i ) ) ;
15315: LD_VAR 0 1
15319: PPUSH
15320: LD_INT 12
15322: PPUSH
15323: LD_INT 21
15325: PUSH
15326: LD_INT 3
15328: PUSH
15329: EMPTY
15330: LIST
15331: LIST
15332: PPUSH
15333: CALL_OW 70
15337: PPUSH
15338: LD_VAR 0 1
15342: PPUSH
15343: CALL_OW 74
15347: PPUSH
15348: CALL_OW 120
// end ;
15352: GO 15312
15354: POP
15355: POP
// end ;
15356: PPOPN 1
15358: END
// every 0 0$1 do var nepritel , opice , un , nejblizsi_enemy ;
15359: GO 15361
15361: DISABLE
15362: LD_INT 0
15364: PPUSH
15365: PPUSH
15366: PPUSH
15367: PPUSH
// begin if AlianceSAraby then
15368: CALL 2247 0 0
15372: IFFALSE 15376
// exit ;
15374: GO 15648
// nepritel = FilterUnitsInArea ( ArBazaDruha , [ [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] ] ) ;
15376: LD_ADDR_VAR 0 1
15380: PUSH
15381: LD_INT 12
15383: PPUSH
15384: LD_INT 22
15386: PUSH
15387: LD_EXP 21
15391: PUSH
15392: EMPTY
15393: LIST
15394: LIST
15395: PUSH
15396: LD_INT 2
15398: PUSH
15399: LD_INT 21
15401: PUSH
15402: LD_INT 1
15404: PUSH
15405: EMPTY
15406: LIST
15407: LIST
15408: PUSH
15409: LD_INT 21
15411: PUSH
15412: LD_INT 2
15414: PUSH
15415: EMPTY
15416: LIST
15417: LIST
15418: PUSH
15419: LD_INT 3
15421: PUSH
15422: LD_INT 58
15424: PUSH
15425: EMPTY
15426: LIST
15427: PUSH
15428: EMPTY
15429: LIST
15430: LIST
15431: PUSH
15432: EMPTY
15433: LIST
15434: LIST
15435: LIST
15436: LIST
15437: PUSH
15438: EMPTY
15439: LIST
15440: LIST
15441: PPUSH
15442: CALL_OW 70
15446: ST_TO_ADDR
// if nepritel then
15447: LD_VAR 0 1
15451: IFFALSE 15647
// begin opice = FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_side , arab ] , [ f_class , class_apeman_soldier ] , [ f_inside ] , [ f_lives , 600 ] ] ) ;
15453: LD_ADDR_VAR 0 2
15457: PUSH
15458: LD_INT 95
15460: PUSH
15461: LD_INT 12
15463: PUSH
15464: EMPTY
15465: LIST
15466: LIST
15467: PUSH
15468: LD_INT 22
15470: PUSH
15471: LD_EXP 23
15475: PUSH
15476: EMPTY
15477: LIST
15478: LIST
15479: PUSH
15480: LD_INT 25
15482: PUSH
15483: LD_INT 15
15485: PUSH
15486: EMPTY
15487: LIST
15488: LIST
15489: PUSH
15490: LD_INT 54
15492: PUSH
15493: EMPTY
15494: LIST
15495: PUSH
15496: LD_INT 24
15498: PUSH
15499: LD_INT 600
15501: PUSH
15502: EMPTY
15503: LIST
15504: LIST
15505: PUSH
15506: EMPTY
15507: LIST
15508: LIST
15509: LIST
15510: LIST
15511: LIST
15512: PPUSH
15513: CALL_OW 69
15517: ST_TO_ADDR
// for un in opice do
15518: LD_ADDR_VAR 0 3
15522: PUSH
15523: LD_VAR 0 2
15527: PUSH
15528: FOR_IN
15529: IFFALSE 15645
// begin nejblizsi_enemy = NearestUnitToUnit2 ( nepritel , un ) ;
15531: LD_ADDR_VAR 0 4
15535: PUSH
15536: LD_VAR 0 1
15540: PPUSH
15541: LD_VAR 0 3
15545: PPUSH
15546: CALL 5575 0 2
15550: ST_TO_ADDR
// if GetDistUnits ( un , nejblizsi_enemy ) > 8 and GetDistUnits ( un , nejblizsi_enemy ) < 16 then
15551: LD_VAR 0 3
15555: PPUSH
15556: LD_VAR 0 4
15560: PPUSH
15561: CALL_OW 296
15565: PUSH
15566: LD_INT 8
15568: GREATER
15569: PUSH
15570: LD_VAR 0 3
15574: PPUSH
15575: LD_VAR 0 4
15579: PPUSH
15580: CALL_OW 296
15584: PUSH
15585: LD_INT 16
15587: LESS
15588: AND
15589: IFFALSE 15643
// begin VyjdiVen ( un ) ;
15591: LD_VAR 0 3
15595: PPUSH
15596: CALL 5491 0 1
// ComAttackUnit ( un , nejblizsi_enemy ) ;
15600: LD_VAR 0 3
15604: PPUSH
15605: LD_VAR 0 4
15609: PPUSH
15610: CALL_OW 115
// if not un in zalezt then
15614: LD_VAR 0 3
15618: PUSH
15619: LD_EXP 80
15623: IN
15624: NOT
15625: IFFALSE 15643
// zalezt = zalezt ^ un ;
15627: LD_ADDR_EXP 80
15631: PUSH
15632: LD_EXP 80
15636: PUSH
15637: LD_VAR 0 3
15641: ADD
15642: ST_TO_ADDR
// end ; end ;
15643: GO 15528
15645: POP
15646: POP
// end ; enable ;
15647: ENABLE
// end ;
15648: PPOPN 4
15650: END
// every 0 0$4 do var un , bunks ;
15651: GO 15653
15653: DISABLE
15654: LD_INT 0
15656: PPUSH
15657: PPUSH
// begin if AlianceSAraby then
15658: CALL 2247 0 0
15662: IFFALSE 15666
// exit ;
15664: GO 15812
// if ignore then
15666: LD_LOC 2
15670: IFFALSE 15674
// else
15672: GO 15811
// begin bunks = FilterUnitsInArea ( ArBazaDruha , [ [ f_empty ] , [ f_side , arab ] , [ f_ok ] , [ f_type , unit_building ] , [ f_btype , b_breastwork ] ] ) ;
15674: LD_ADDR_VAR 0 2
15678: PUSH
15679: LD_INT 12
15681: PPUSH
15682: LD_INT 58
15684: PUSH
15685: EMPTY
15686: LIST
15687: PUSH
15688: LD_INT 22
15690: PUSH
15691: LD_EXP 23
15695: PUSH
15696: EMPTY
15697: LIST
15698: LIST
15699: PUSH
15700: LD_INT 50
15702: PUSH
15703: EMPTY
15704: LIST
15705: PUSH
15706: LD_INT 21
15708: PUSH
15709: LD_INT 3
15711: PUSH
15712: EMPTY
15713: LIST
15714: LIST
15715: PUSH
15716: LD_INT 30
15718: PUSH
15719: LD_INT 31
15721: PUSH
15722: EMPTY
15723: LIST
15724: LIST
15725: PUSH
15726: EMPTY
15727: LIST
15728: LIST
15729: LIST
15730: LIST
15731: LIST
15732: PPUSH
15733: CALL_OW 70
15737: ST_TO_ADDR
// for un in zalezt do
15738: LD_ADDR_VAR 0 1
15742: PUSH
15743: LD_EXP 80
15747: PUSH
15748: FOR_IN
15749: IFFALSE 15809
// begin if bunks then
15751: LD_VAR 0 2
15755: IFFALSE 15807
// begin ComEnterUnit ( un , NearestUnitToUnit2 ( bunks , un ) ) ;
15757: LD_VAR 0 1
15761: PPUSH
15762: LD_VAR 0 2
15766: PPUSH
15767: LD_VAR 0 1
15771: PPUSH
15772: CALL 5575 0 2
15776: PPUSH
15777: CALL_OW 120
// bunks = bunks diff NearestUnitToUnit2 ( bunks , un ) ;
15781: LD_ADDR_VAR 0 2
15785: PUSH
15786: LD_VAR 0 2
15790: PUSH
15791: LD_VAR 0 2
15795: PPUSH
15796: LD_VAR 0 1
15800: PPUSH
15801: CALL 5575 0 2
15805: DIFF
15806: ST_TO_ADDR
// end ; end ;
15807: GO 15748
15809: POP
15810: POP
// end ; enable ;
15811: ENABLE
// end ;
15812: PPOPN 2
15814: END
// every 0 0$1 do var nepritel , opice , un , nejblizsi_enemy ;
15815: GO 15817
15817: DISABLE
15818: LD_INT 0
15820: PPUSH
15821: PPUSH
15822: PPUSH
15823: PPUSH
// begin if AlianceSAraby then
15824: CALL 2247 0 0
15828: IFFALSE 15832
// exit ;
15830: GO 16083
// nepritel = FilterUnitsInArea ( ArDruhaDepot , [ [ f_side , you ] , [ f_type , unit_human ] , [ f_class , 2 ] ] ) ;
15832: LD_ADDR_VAR 0 1
15836: PUSH
15837: LD_INT 14
15839: PPUSH
15840: LD_INT 22
15842: PUSH
15843: LD_EXP 21
15847: PUSH
15848: EMPTY
15849: LIST
15850: LIST
15851: PUSH
15852: LD_INT 21
15854: PUSH
15855: LD_INT 1
15857: PUSH
15858: EMPTY
15859: LIST
15860: LIST
15861: PUSH
15862: LD_INT 25
15864: PUSH
15865: LD_INT 2
15867: PUSH
15868: EMPTY
15869: LIST
15870: LIST
15871: PUSH
15872: EMPTY
15873: LIST
15874: LIST
15875: LIST
15876: PPUSH
15877: CALL_OW 70
15881: ST_TO_ADDR
// if nepritel then
15882: LD_VAR 0 1
15886: IFFALSE 16074
// begin opice = FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_side , arab ] , [ f_class , class_apeman_soldier ] ] ) ;
15888: LD_ADDR_VAR 0 2
15892: PUSH
15893: LD_INT 95
15895: PUSH
15896: LD_INT 12
15898: PUSH
15899: EMPTY
15900: LIST
15901: LIST
15902: PUSH
15903: LD_INT 22
15905: PUSH
15906: LD_EXP 23
15910: PUSH
15911: EMPTY
15912: LIST
15913: LIST
15914: PUSH
15915: LD_INT 25
15917: PUSH
15918: LD_INT 15
15920: PUSH
15921: EMPTY
15922: LIST
15923: LIST
15924: PUSH
15925: EMPTY
15926: LIST
15927: LIST
15928: LIST
15929: PPUSH
15930: CALL_OW 69
15934: ST_TO_ADDR
// for un in opice do
15935: LD_ADDR_VAR 0 3
15939: PUSH
15940: LD_VAR 0 2
15944: PUSH
15945: FOR_IN
15946: IFFALSE 16070
// begin nejblizsi_enemy = NearestUnitToUnit2 ( nepritel , un ) ;
15948: LD_ADDR_VAR 0 4
15952: PUSH
15953: LD_VAR 0 1
15957: PPUSH
15958: LD_VAR 0 3
15962: PPUSH
15963: CALL 5575 0 2
15967: ST_TO_ADDR
// if GetDistUnits ( nejblizsi_enemy , un ) > 8 and GetDistUnits ( nejblizsi_enemy , un ) < 26 then
15968: LD_VAR 0 4
15972: PPUSH
15973: LD_VAR 0 3
15977: PPUSH
15978: CALL_OW 296
15982: PUSH
15983: LD_INT 8
15985: GREATER
15986: PUSH
15987: LD_VAR 0 4
15991: PPUSH
15992: LD_VAR 0 3
15996: PPUSH
15997: CALL_OW 296
16001: PUSH
16002: LD_INT 26
16004: LESS
16005: AND
16006: IFFALSE 16068
// begin ignore = true ;
16008: LD_ADDR_LOC 2
16012: PUSH
16013: LD_INT 1
16015: ST_TO_ADDR
// VyjdiVen ( un ) ;
16016: LD_VAR 0 3
16020: PPUSH
16021: CALL 5491 0 1
// ComAttackUnit ( un , nejblizsi_enemy ) ;
16025: LD_VAR 0 3
16029: PPUSH
16030: LD_VAR 0 4
16034: PPUSH
16035: CALL_OW 115
// if not un in zalezt then
16039: LD_VAR 0 3
16043: PUSH
16044: LD_EXP 80
16048: IN
16049: NOT
16050: IFFALSE 16068
// zalezt = zalezt ^ un ;
16052: LD_ADDR_EXP 80
16056: PUSH
16057: LD_EXP 80
16061: PUSH
16062: LD_VAR 0 3
16066: ADD
16067: ST_TO_ADDR
// end ; end ;
16068: GO 15945
16070: POP
16071: POP
// end else
16072: GO 16082
// ignore = false ;
16074: LD_ADDR_LOC 2
16078: PUSH
16079: LD_INT 0
16081: ST_TO_ADDR
// enable ;
16082: ENABLE
// end ; end_of_file
16083: PPOPN 4
16085: END
// every 0 0$1 + 0 0$0.1 trigger Hrajeme do
16086: LD_EXP 27
16090: IFFALSE 16113
16092: GO 16094
16094: DISABLE
// begin display_strings = [ #Ru01-Time , tick ] ;
16095: LD_ADDR_OWVAR 47
16099: PUSH
16100: LD_STRING #Ru01-Time
16102: PUSH
16103: LD_OWVAR 1
16107: PUSH
16108: EMPTY
16109: LIST
16110: LIST
16111: ST_TO_ADDR
// enable ;
16112: ENABLE
// end ;
16113: END
// every 0 0$1 trigger Hrajeme = false do
16114: LD_EXP 27
16118: PUSH
16119: LD_INT 0
16121: EQUAL
16122: IFFALSE 16146
16124: GO 16126
16126: DISABLE
// begin if tick > 0 0$1 then
16127: LD_OWVAR 1
16131: PUSH
16132: LD_INT 35
16134: GREATER
16135: IFFALSE 16145
// tick = 0 ;
16137: LD_ADDR_OWVAR 1
16141: PUSH
16142: LD_INT 0
16144: ST_TO_ADDR
// enable ;
16145: ENABLE
// end ; end_of_file
16146: END
// every 0 0$1 do var red , radar , enemy ;
16147: GO 16149
16149: DISABLE
16150: LD_INT 0
16152: PPUSH
16153: PPUSH
16154: PPUSH
// begin if FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] , [ f_placed ] ] ) or AlianceSAraby then
16155: LD_INT 22
16157: PUSH
16158: LD_EXP 21
16162: PUSH
16163: EMPTY
16164: LIST
16165: LIST
16166: PUSH
16167: LD_INT 21
16169: PUSH
16170: LD_INT 3
16172: PUSH
16173: EMPTY
16174: LIST
16175: LIST
16176: PUSH
16177: LD_INT 52
16179: PUSH
16180: EMPTY
16181: LIST
16182: PUSH
16183: EMPTY
16184: LIST
16185: LIST
16186: LIST
16187: PPUSH
16188: CALL_OW 69
16192: PUSH
16193: CALL 2247 0 0
16197: OR
16198: IFFALSE 16734
// begin if not AlianceSAraby then
16200: CALL 2247 0 0
16204: NOT
16205: IFFALSE 16241
// red = FilterAllUnits ( [ [ f_side , you ] , [ f_placed ] ] ) else
16207: LD_ADDR_VAR 0 1
16211: PUSH
16212: LD_INT 22
16214: PUSH
16215: LD_EXP 21
16219: PUSH
16220: EMPTY
16221: LIST
16222: LIST
16223: PUSH
16224: LD_INT 52
16226: PUSH
16227: EMPTY
16228: LIST
16229: PUSH
16230: EMPTY
16231: LIST
16232: LIST
16233: PPUSH
16234: CALL_OW 69
16238: ST_TO_ADDR
16239: GO 16383
// begin if SideDead ( amik ) then
16241: LD_EXP 24
16245: PPUSH
16246: CALL 2293 0 1
16250: IFFALSE 16286
// red = FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] ] ) else
16252: LD_ADDR_VAR 0 1
16256: PUSH
16257: LD_INT 52
16259: PUSH
16260: EMPTY
16261: LIST
16262: PUSH
16263: LD_INT 22
16265: PUSH
16266: LD_EXP 22
16270: PUSH
16271: EMPTY
16272: LIST
16273: LIST
16274: PUSH
16275: EMPTY
16276: LIST
16277: LIST
16278: PPUSH
16279: CALL_OW 69
16283: ST_TO_ADDR
16284: GO 16383
// if SideDead ( purple ) then
16286: LD_EXP 22
16290: PPUSH
16291: CALL 2293 0 1
16295: IFFALSE 16331
// red = FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] ] ) else
16297: LD_ADDR_VAR 0 1
16301: PUSH
16302: LD_INT 52
16304: PUSH
16305: EMPTY
16306: LIST
16307: PUSH
16308: LD_INT 22
16310: PUSH
16311: LD_EXP 24
16315: PUSH
16316: EMPTY
16317: LIST
16318: LIST
16319: PUSH
16320: EMPTY
16321: LIST
16322: LIST
16323: PPUSH
16324: CALL_OW 69
16328: ST_TO_ADDR
16329: GO 16383
// red = FilterAllUnits ( [ [ f_placed ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
16331: LD_ADDR_VAR 0 1
16335: PUSH
16336: LD_INT 52
16338: PUSH
16339: EMPTY
16340: LIST
16341: PUSH
16342: LD_INT 2
16344: PUSH
16345: LD_INT 22
16347: PUSH
16348: LD_EXP 24
16352: PUSH
16353: EMPTY
16354: LIST
16355: LIST
16356: PUSH
16357: LD_INT 22
16359: PUSH
16360: LD_EXP 22
16364: PUSH
16365: EMPTY
16366: LIST
16367: LIST
16368: PUSH
16369: EMPTY
16370: LIST
16371: LIST
16372: LIST
16373: PUSH
16374: EMPTY
16375: LIST
16376: LIST
16377: PPUSH
16378: CALL_OW 69
16382: ST_TO_ADDR
// end ; enemy = FilterAllUnits ( [ [ f_placed ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
16383: LD_ADDR_VAR 0 3
16387: PUSH
16388: LD_INT 52
16390: PUSH
16391: EMPTY
16392: LIST
16393: PUSH
16394: LD_INT 2
16396: PUSH
16397: LD_INT 22
16399: PUSH
16400: LD_EXP 24
16404: PUSH
16405: EMPTY
16406: LIST
16407: LIST
16408: PUSH
16409: LD_INT 22
16411: PUSH
16412: LD_EXP 22
16416: PUSH
16417: EMPTY
16418: LIST
16419: LIST
16420: PUSH
16421: EMPTY
16422: LIST
16423: LIST
16424: LIST
16425: PUSH
16426: EMPTY
16427: LIST
16428: LIST
16429: PPUSH
16430: CALL_OW 69
16434: ST_TO_ADDR
// radar = FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_radar ] , [ f_placed ] , [ f_not , [ f_chassis , ar_hovercraft ] ] ] ) ;
16435: LD_ADDR_VAR 0 2
16439: PUSH
16440: LD_INT 22
16442: PUSH
16443: LD_EXP 23
16447: PUSH
16448: EMPTY
16449: LIST
16450: LIST
16451: PUSH
16452: LD_INT 21
16454: PUSH
16455: LD_INT 2
16457: PUSH
16458: EMPTY
16459: LIST
16460: LIST
16461: PUSH
16462: LD_INT 34
16464: PUSH
16465: LD_INT 30
16467: PUSH
16468: EMPTY
16469: LIST
16470: LIST
16471: PUSH
16472: LD_INT 52
16474: PUSH
16475: EMPTY
16476: LIST
16477: PUSH
16478: LD_INT 3
16480: PUSH
16481: LD_INT 31
16483: PUSH
16484: LD_INT 11
16486: PUSH
16487: EMPTY
16488: LIST
16489: LIST
16490: PUSH
16491: EMPTY
16492: LIST
16493: LIST
16494: PUSH
16495: EMPTY
16496: LIST
16497: LIST
16498: LIST
16499: LIST
16500: LIST
16501: PPUSH
16502: CALL_OW 69
16506: ST_TO_ADDR
// if radar then
16507: LD_VAR 0 2
16511: IFFALSE 16734
// begin radar = radar [ 1 ] ;
16513: LD_ADDR_VAR 0 2
16517: PUSH
16518: LD_VAR 0 2
16522: PUSH
16523: LD_INT 1
16525: ARRAY
16526: ST_TO_ADDR
// if GetLives ( radar ) < hranice_utok_repair_utek then
16527: LD_VAR 0 2
16531: PPUSH
16532: CALL_OW 256
16536: PUSH
16537: LD_EXP 56
16541: LESS
16542: IFFALSE 16563
// begin ComMoveToArea ( radar , ArRepair ) ;
16544: LD_VAR 0 2
16548: PPUSH
16549: LD_INT 24
16551: PPUSH
16552: CALL_OW 113
// Wait ( 2 2$20 ) ;
16556: LD_INT 4900
16558: PPUSH
16559: CALL_OW 67
// end ; if GetDistUnits ( radar , NearestUnitToUnit2 ( enemy , radar ) ) < radar_distance - 1 then
16563: LD_VAR 0 2
16567: PPUSH
16568: LD_VAR 0 3
16572: PPUSH
16573: LD_VAR 0 2
16577: PPUSH
16578: CALL 5575 0 2
16582: PPUSH
16583: CALL_OW 296
16587: PUSH
16588: LD_EXP 55
16592: PUSH
16593: LD_INT 1
16595: MINUS
16596: LESS
16597: IFFALSE 16613
// ComMoveToArea ( radar , ArBaza ) else
16599: LD_VAR 0 2
16603: PPUSH
16604: LD_INT 15
16606: PPUSH
16607: CALL_OW 113
16611: GO 16734
// begin if GetDistUnits ( radar , NearestUnitToUnit2 ( red , radar ) ) > radar_distance + 1 then
16613: LD_VAR 0 2
16617: PPUSH
16618: LD_VAR 0 1
16622: PPUSH
16623: LD_VAR 0 2
16627: PPUSH
16628: CALL 5575 0 2
16632: PPUSH
16633: CALL_OW 296
16637: PUSH
16638: LD_EXP 55
16642: PUSH
16643: LD_INT 1
16645: PLUS
16646: GREATER
16647: IFFALSE 16675
// ComMoveUnit ( radar , NearestUnitToUnit2 ( red , radar ) ) else
16649: LD_VAR 0 2
16653: PPUSH
16654: LD_VAR 0 1
16658: PPUSH
16659: LD_VAR 0 2
16663: PPUSH
16664: CALL 5575 0 2
16668: PPUSH
16669: CALL_OW 112
16673: GO 16734
// if ( GetDistUnits ( radar , NearestUnitToUnit2 ( red , radar ) ) < radar_distance - 1 ) then
16675: LD_VAR 0 2
16679: PPUSH
16680: LD_VAR 0 1
16684: PPUSH
16685: LD_VAR 0 2
16689: PPUSH
16690: CALL 5575 0 2
16694: PPUSH
16695: CALL_OW 296
16699: PUSH
16700: LD_EXP 55
16704: PUSH
16705: LD_INT 1
16707: MINUS
16708: LESS
16709: IFFALSE 16725
// ComMoveToArea ( radar , ArBaza ) else
16711: LD_VAR 0 2
16715: PPUSH
16716: LD_INT 15
16718: PPUSH
16719: CALL_OW 113
16723: GO 16734
// ComStop ( radar ) ;
16725: LD_VAR 0 2
16729: PPUSH
16730: CALL_OW 141
// end ; end ; end ; enable ;
16734: ENABLE
// end ;
16735: PPOPN 3
16737: END
// every 0 0$3 do var veh ;
16738: GO 16740
16740: DISABLE
16741: LD_INT 0
16743: PPUSH
// begin if not FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_cargo_bay ] ] ) then
16744: LD_INT 22
16746: PUSH
16747: LD_EXP 23
16751: PUSH
16752: EMPTY
16753: LIST
16754: LIST
16755: PUSH
16756: LD_INT 21
16758: PUSH
16759: LD_INT 2
16761: PUSH
16762: EMPTY
16763: LIST
16764: LIST
16765: PUSH
16766: LD_INT 34
16768: PUSH
16769: LD_INT 32
16771: PUSH
16772: EMPTY
16773: LIST
16774: LIST
16775: PUSH
16776: EMPTY
16777: LIST
16778: LIST
16779: LIST
16780: PPUSH
16781: CALL_OW 69
16785: NOT
16786: IFFALSE 16870
// begin Wait ( 5 5$00 ) ;
16788: LD_INT 10500
16790: PPUSH
16791: CALL_OW 67
// uc_side = arab ;
16795: LD_ADDR_OWVAR 20
16799: PUSH
16800: LD_EXP 23
16804: ST_TO_ADDR
// uc_nation = nation_arabian ;
16805: LD_ADDR_OWVAR 21
16809: PUSH
16810: LD_INT 2
16812: ST_TO_ADDR
// vc_chassis = ar_half_tracked ;
16813: LD_ADDR_OWVAR 37
16817: PUSH
16818: LD_INT 14
16820: ST_TO_ADDR
// vc_control = control_apeman ;
16821: LD_ADDR_OWVAR 38
16825: PUSH
16826: LD_INT 5
16828: ST_TO_ADDR
// vc_engine = engine_siberite ;
16829: LD_ADDR_OWVAR 39
16833: PUSH
16834: LD_INT 3
16836: ST_TO_ADDR
// vc_weapon = ar_cargo_bay ;
16837: LD_ADDR_OWVAR 40
16841: PUSH
16842: LD_INT 32
16844: ST_TO_ADDR
// veh = CreateVehicle ;
16845: LD_ADDR_VAR 0 1
16849: PUSH
16850: CALL_OW 45
16854: ST_TO_ADDR
// PlaceUnitArea ( veh , ArSupportSpawn , false ) ;
16855: LD_VAR 0 1
16859: PPUSH
16860: LD_INT 34
16862: PPUSH
16863: LD_INT 0
16865: PPUSH
16866: CALL_OW 49
// end ; enable ;
16870: ENABLE
// end ;
16871: PPOPN 1
16873: END
// every 0 0$1 do var nakl , bedny , takeCrystals ;
16874: GO 16876
16876: DISABLE
16877: LD_INT 0
16879: PPUSH
16880: PPUSH
16881: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_cargo_bay ] ] ) ;
16882: LD_ADDR_VAR 0 1
16886: PUSH
16887: LD_INT 22
16889: PUSH
16890: LD_EXP 23
16894: PUSH
16895: EMPTY
16896: LIST
16897: LIST
16898: PUSH
16899: LD_INT 21
16901: PUSH
16902: LD_INT 2
16904: PUSH
16905: EMPTY
16906: LIST
16907: LIST
16908: PUSH
16909: LD_INT 34
16911: PUSH
16912: LD_INT 32
16914: PUSH
16915: EMPTY
16916: LIST
16917: LIST
16918: PUSH
16919: EMPTY
16920: LIST
16921: LIST
16922: LIST
16923: PPUSH
16924: CALL_OW 69
16928: ST_TO_ADDR
// if nakl then
16929: LD_VAR 0 1
16933: IFFALSE 17223
// begin nakl = nakl [ 1 ] ;
16935: LD_ADDR_VAR 0 1
16939: PUSH
16940: LD_VAR 0 1
16944: PUSH
16945: LD_INT 1
16947: ARRAY
16948: ST_TO_ADDR
// takeCrystals = false ;
16949: LD_ADDR_VAR 0 3
16953: PUSH
16954: LD_INT 0
16956: ST_TO_ADDR
// if IsOk ( forest_depot ) then
16957: LD_INT 88
16959: PPUSH
16960: CALL_OW 302
16964: IFFALSE 17011
// begin if GetResources ( GetBase ( forest_depot ) ) [ 3 ] >= 80 then
16966: LD_INT 88
16968: PPUSH
16969: CALL_OW 274
16973: PPUSH
16974: CALL_OW 279
16978: PUSH
16979: LD_INT 3
16981: ARRAY
16982: PUSH
16983: LD_INT 80
16985: GREATEREQUAL
16986: IFFALSE 17011
// begin if GetSide ( forest_depot ) = arab then
16988: LD_INT 88
16990: PPUSH
16991: CALL_OW 255
16995: PUSH
16996: LD_EXP 23
17000: EQUAL
17001: IFFALSE 17011
// takeCrystals = true end ;
17003: LD_ADDR_VAR 0 3
17007: PUSH
17008: LD_INT 1
17010: ST_TO_ADDR
// end ; if GetDistUnits ( nakl , ar_ware ) < 30 and GetCargo ( nakl , mat_siberit ) > 0 and IsOk ( nakl ) then
17011: LD_VAR 0 1
17015: PPUSH
17016: LD_INT 101
17018: PPUSH
17019: CALL_OW 296
17023: PUSH
17024: LD_INT 30
17026: LESS
17027: PUSH
17028: LD_VAR 0 1
17032: PPUSH
17033: LD_INT 3
17035: PPUSH
17036: CALL_OW 289
17040: PUSH
17041: LD_INT 0
17043: GREATER
17044: AND
17045: PUSH
17046: LD_VAR 0 1
17050: PPUSH
17051: CALL_OW 302
17055: AND
17056: IFFALSE 17084
// begin CreateCratesXYR ( 3 , 163 , 99 , 4 , true ) ;
17058: LD_INT 3
17060: PPUSH
17061: LD_INT 163
17063: PPUSH
17064: LD_INT 99
17066: PPUSH
17067: LD_INT 4
17069: PPUSH
17070: LD_INT 1
17072: PPUSH
17073: CALL_OW 56
// Wait ( 0 0$5 ) ;
17077: LD_INT 175
17079: PPUSH
17080: CALL_OW 67
// end ; if GetLives ( nakl ) < hranice_utok_repair_utek then
17084: LD_VAR 0 1
17088: PPUSH
17089: CALL_OW 256
17093: PUSH
17094: LD_EXP 56
17098: LESS
17099: IFFALSE 17122
// begin ComMoveToArea ( nakl , ArRepair ) ;
17101: LD_VAR 0 1
17105: PPUSH
17106: LD_INT 24
17108: PPUSH
17109: CALL_OW 113
// Wait ( 2 2$20 ) ;
17113: LD_INT 4900
17115: PPUSH
17116: CALL_OW 67
// end else
17120: GO 17223
// if GetCargo ( nakl , mat_siberit ) > 0 then
17122: LD_VAR 0 1
17126: PPUSH
17127: LD_INT 3
17129: PPUSH
17130: CALL_OW 289
17134: PUSH
17135: LD_INT 0
17137: GREATER
17138: IFFALSE 17154
// ComGive ( nakl , ar_ware ) else
17140: LD_VAR 0 1
17144: PPUSH
17145: LD_INT 101
17147: PPUSH
17148: CALL_OW 161
17152: GO 17223
// if takeCrystals then
17154: LD_VAR 0 3
17158: IFFALSE 17177
// ComTransport ( nakl , forest_depot , mat_siberit ) else
17160: LD_VAR 0 1
17164: PPUSH
17165: LD_INT 88
17167: PPUSH
17168: LD_INT 3
17170: PPUSH
17171: CALL_OW 151
17175: GO 17223
// begin bedny = GetListOfCratesInArea ( ArBazeOkoli ) ;
17177: LD_ADDR_VAR 0 2
17181: PUSH
17182: LD_INT 39
17184: PPUSH
17185: CALL_OW 435
17189: ST_TO_ADDR
// if bedny then
17190: LD_VAR 0 2
17194: IFFALSE 17223
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
17196: LD_VAR 0 1
17200: PPUSH
17201: LD_VAR 0 2
17205: PUSH
17206: LD_INT 1
17208: ARRAY
17209: PPUSH
17210: LD_VAR 0 2
17214: PUSH
17215: LD_INT 2
17217: ARRAY
17218: PPUSH
17219: CALL_OW 117
// end ; end ; enable ;
17223: ENABLE
// end ;
17224: PPOPN 3
17226: END
// every 0 0$0.8 do var nepritel , i ;
17227: GO 17229
17229: DISABLE
17230: LD_INT 0
17232: PPUSH
17233: PPUSH
// begin if GetAttitude ( you , arab ) = att_friend then
17234: LD_EXP 21
17238: PPUSH
17239: LD_EXP 23
17243: PPUSH
17244: CALL_OW 81
17248: PUSH
17249: LD_INT 1
17251: EQUAL
17252: IFFALSE 17257
// begin disable ;
17254: DISABLE
// exit ;
17255: GO 17417
// end ; nepritel = FilterUnitsInArea ( MinaOblast , [ f_side , 3 ] ) ;
17257: LD_ADDR_VAR 0 1
17261: PUSH
17262: LD_INT 13
17264: PPUSH
17265: LD_INT 22
17267: PUSH
17268: LD_INT 3
17270: PUSH
17271: EMPTY
17272: LIST
17273: LIST
17274: PPUSH
17275: CALL_OW 70
17279: ST_TO_ADDR
// if nepritel then
17280: LD_VAR 0 1
17284: IFFALSE 17416
// begin for i in nepritel do
17286: LD_ADDR_VAR 0 2
17290: PUSH
17291: LD_VAR 0 1
17295: PUSH
17296: FOR_IN
17297: IFFALSE 17414
// begin if GetDistUnitXY ( i , 117 , 63 ) < 3 and GetResourceAmountXY ( 117 , 62 ) <= 3 then
17299: LD_VAR 0 2
17303: PPUSH
17304: LD_INT 117
17306: PPUSH
17307: LD_INT 63
17309: PPUSH
17310: CALL_OW 297
17314: PUSH
17315: LD_INT 3
17317: LESS
17318: PUSH
17319: LD_INT 117
17321: PPUSH
17322: LD_INT 62
17324: PPUSH
17325: CALL_OW 284
17329: PUSH
17330: LD_INT 3
17332: LESSEQUAL
17333: AND
17334: IFFALSE 17412
// begin LaunchMineAtPos ( 117 , 63 , arab ) ;
17336: LD_INT 117
17338: PPUSH
17339: LD_INT 63
17341: PPUSH
17342: LD_EXP 23
17346: PPUSH
17347: CALL_OW 456
// Wait ( 0 0$0.5 ) ;
17351: LD_INT 18
17353: PPUSH
17354: CALL_OW 67
// disable ;
17358: DISABLE
// Say ( NearestUnitToXY ( FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_human ] ] ) , 117 , 63 ) , D2nekdo-5 ) ;
17359: LD_INT 22
17361: PUSH
17362: LD_EXP 21
17366: PUSH
17367: EMPTY
17368: LIST
17369: LIST
17370: PUSH
17371: LD_INT 21
17373: PUSH
17374: LD_INT 1
17376: PUSH
17377: EMPTY
17378: LIST
17379: LIST
17380: PUSH
17381: EMPTY
17382: LIST
17383: LIST
17384: PPUSH
17385: CALL_OW 69
17389: PPUSH
17390: LD_INT 117
17392: PPUSH
17393: LD_INT 63
17395: PPUSH
17396: CALL_OW 73
17400: PPUSH
17401: LD_STRING D2nekdo-5
17403: PPUSH
17404: CALL_OW 88
// exit ;
17408: POP
17409: POP
17410: GO 17417
// end ; end ;
17412: GO 17296
17414: POP
17415: POP
// end ; enable ;
17416: ENABLE
// end ;
17417: PPOPN 2
17419: END
// every 0 0$1 do var arealist , i ;
17420: GO 17422
17422: DISABLE
17423: LD_INT 0
17425: PPUSH
17426: PPUSH
// begin arealist = AreaToList ( Kamery , 0 ) ;
17427: LD_ADDR_VAR 0 1
17431: PUSH
17432: LD_INT 36
17434: PPUSH
17435: LD_INT 0
17437: PPUSH
17438: CALL_OW 517
17442: ST_TO_ADDR
// for i = 1 to ( arealist [ 1 ] + 0 ) do
17443: LD_ADDR_VAR 0 2
17447: PUSH
17448: DOUBLE
17449: LD_INT 1
17451: DEC
17452: ST_TO_ADDR
17453: LD_VAR 0 1
17457: PUSH
17458: LD_INT 1
17460: ARRAY
17461: PUSH
17462: LD_INT 0
17464: PLUS
17465: PUSH
17466: FOR_TO
17467: IFFALSE 17546
// begin if IsEnvironment ( arealist [ 1 ] [ i ] , arealist [ 2 ] [ i ] ) then
17469: LD_VAR 0 1
17473: PUSH
17474: LD_INT 1
17476: ARRAY
17477: PUSH
17478: LD_VAR 0 2
17482: ARRAY
17483: PPUSH
17484: LD_VAR 0 1
17488: PUSH
17489: LD_INT 2
17491: ARRAY
17492: PUSH
17493: LD_VAR 0 2
17497: ARRAY
17498: PPUSH
17499: CALL_OW 351
17503: IFFALSE 17544
// HiddenCamera ( arealist [ 1 ] [ i ] , arealist [ 2 ] [ i ] , arab ) ;
17505: LD_VAR 0 1
17509: PUSH
17510: LD_INT 1
17512: ARRAY
17513: PUSH
17514: LD_VAR 0 2
17518: ARRAY
17519: PPUSH
17520: LD_VAR 0 1
17524: PUSH
17525: LD_INT 2
17527: ARRAY
17528: PUSH
17529: LD_VAR 0 2
17533: ARRAY
17534: PPUSH
17535: LD_EXP 23
17539: PPUSH
17540: CALL_OW 244
// end ;
17544: GO 17466
17546: POP
17547: POP
// end ;
17548: PPOPN 2
17550: END
// export Tech_list_Arab ; every 0 0$1 do
17551: GO 17553
17553: 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 ] ;
17554: LD_ADDR_EXP 81
17558: PUSH
17559: LD_INT 48
17561: PUSH
17562: LD_INT 66
17564: PUSH
17565: LD_INT 49
17567: PUSH
17568: LD_INT 67
17570: PUSH
17571: LD_INT 50
17573: PUSH
17574: LD_INT 51
17576: PUSH
17577: LD_INT 52
17579: PUSH
17580: LD_INT 68
17582: PUSH
17583: LD_INT 53
17585: PUSH
17586: LD_INT 60
17588: PUSH
17589: LD_INT 61
17591: PUSH
17592: LD_INT 62
17594: PUSH
17595: EMPTY
17596: LIST
17597: LIST
17598: LIST
17599: LIST
17600: LIST
17601: LIST
17602: LIST
17603: LIST
17604: LIST
17605: LIST
17606: LIST
17607: LIST
17608: ST_TO_ADDR
// end ;
17609: END
// every 0 0$1 do
17610: GO 17612
17612: DISABLE
// begin if IsOk ( ar_lab1 ) and GetSide ( ar_lab1 ) = arab and tick > dif_research_wait then
17613: LD_INT 99
17615: PPUSH
17616: CALL_OW 302
17620: PUSH
17621: LD_INT 99
17623: PPUSH
17624: CALL_OW 255
17628: PUSH
17629: LD_EXP 23
17633: EQUAL
17634: AND
17635: PUSH
17636: LD_OWVAR 1
17640: PUSH
17641: LD_EXP 75
17645: GREATER
17646: AND
17647: IFFALSE 17659
// Zkoumej ( 1 , ar_lab1 ) ;
17649: LD_INT 1
17651: PPUSH
17652: LD_INT 99
17654: PPUSH
17655: CALL 17707 0 2
// if IsOk ( ar_lab2 ) and GetSide ( ar_lab2 ) = arab and tick > dif_research_wait then
17659: LD_INT 100
17661: PPUSH
17662: CALL_OW 302
17666: PUSH
17667: LD_INT 100
17669: PPUSH
17670: CALL_OW 255
17674: PUSH
17675: LD_EXP 23
17679: EQUAL
17680: AND
17681: PUSH
17682: LD_OWVAR 1
17686: PUSH
17687: LD_EXP 75
17691: GREATER
17692: AND
17693: IFFALSE 17705
// Zkoumej ( 1 , ar_lab2 ) ;
17695: LD_INT 1
17697: PPUSH
17698: LD_INT 100
17700: PPUSH
17701: CALL 17707 0 2
// enable ;
17705: ENABLE
// end ;
17706: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
17707: LD_INT 0
17709: PPUSH
// if tech_list_arab + 0 >= 1 then
17710: LD_EXP 81
17714: PUSH
17715: LD_INT 0
17717: PLUS
17718: PUSH
17719: LD_INT 1
17721: GREATEREQUAL
17722: IFFALSE 17762
// if Researched ( arab , Tech_list_Arab [ 1 ] ) then
17724: LD_EXP 23
17728: PPUSH
17729: LD_EXP 81
17733: PUSH
17734: LD_INT 1
17736: ARRAY
17737: PPUSH
17738: CALL_OW 325
17742: IFFALSE 17762
// Tech_list_Arab = Delete ( Tech_list_Arab , 1 ) ;
17744: LD_ADDR_EXP 81
17748: PUSH
17749: LD_EXP 81
17753: PPUSH
17754: LD_INT 1
17756: PPUSH
17757: CALL_OW 3
17761: ST_TO_ADDR
// if Tech_list_Arab and not GetActResearch ( laborator ) then
17762: LD_EXP 81
17766: PUSH
17767: LD_VAR 0 2
17771: PPUSH
17772: CALL_OW 485
17776: NOT
17777: AND
17778: IFFALSE 17798
// ComResearch ( laborator , Tech_list_Arab [ 1 ] ) ;
17780: LD_VAR 0 2
17784: PPUSH
17785: LD_EXP 81
17789: PUSH
17790: LD_INT 1
17792: ARRAY
17793: PPUSH
17794: CALL_OW 124
// end ;
17798: LD_VAR 0 3
17802: RET
// every 0 0$2 do var tov ;
17803: GO 17805
17805: DISABLE
17806: LD_INT 0
17808: PPUSH
// begin tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_factory ] , [ f_ok ] , [ f_side , arab ] ] ) ;
17809: LD_ADDR_VAR 0 1
17813: PUSH
17814: LD_INT 22
17816: PUSH
17817: LD_EXP 23
17821: PUSH
17822: EMPTY
17823: LIST
17824: LIST
17825: PUSH
17826: LD_INT 30
17828: PUSH
17829: LD_INT 3
17831: PUSH
17832: EMPTY
17833: LIST
17834: LIST
17835: PUSH
17836: LD_INT 50
17838: PUSH
17839: EMPTY
17840: LIST
17841: PUSH
17842: LD_INT 22
17844: PUSH
17845: LD_EXP 23
17849: PUSH
17850: EMPTY
17851: LIST
17852: LIST
17853: PUSH
17854: EMPTY
17855: LIST
17856: LIST
17857: LIST
17858: LIST
17859: PPUSH
17860: CALL_OW 69
17864: ST_TO_ADDR
// if tov and FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_warehouse ] , [ f_ok ] ] ) then
17865: LD_VAR 0 1
17869: PUSH
17870: LD_INT 22
17872: PUSH
17873: LD_EXP 23
17877: PUSH
17878: EMPTY
17879: LIST
17880: LIST
17881: PUSH
17882: LD_INT 30
17884: PUSH
17885: LD_INT 1
17887: PUSH
17888: EMPTY
17889: LIST
17890: LIST
17891: PUSH
17892: LD_INT 50
17894: PUSH
17895: EMPTY
17896: LIST
17897: PUSH
17898: EMPTY
17899: LIST
17900: LIST
17901: LIST
17902: PPUSH
17903: CALL_OW 69
17907: AND
17908: IFFALSE 17957
// begin if UnitFilter ( UnitsInside ( tov [ 1 ] ) , [ f_class , class_apeman_soldier ] ) < 1 then
17910: LD_VAR 0 1
17914: PUSH
17915: LD_INT 1
17917: ARRAY
17918: PPUSH
17919: CALL_OW 313
17923: PPUSH
17924: LD_INT 25
17926: PUSH
17927: LD_INT 15
17929: PUSH
17930: EMPTY
17931: LIST
17932: LIST
17933: PPUSH
17934: CALL_OW 72
17938: PUSH
17939: LD_INT 1
17941: LESS
17942: IFFALSE 17957
// begin VopiceDoTovarny ( tov [ 1 ] ) ;
17944: LD_VAR 0 1
17948: PUSH
17949: LD_INT 1
17951: ARRAY
17952: PPUSH
17953: CALL 17961 0 1
// end ; end ; enable ;
17957: ENABLE
// end ;
17958: PPOPN 1
17960: END
// function VopiceDoTovarny ( tov ) ; var k ; begin
17961: LD_INT 0
17963: PPUSH
17964: PPUSH
// InitHc ;
17965: CALL_OW 19
// InitUc ;
17969: CALL_OW 18
// uc_side := arab ;
17973: LD_ADDR_OWVAR 20
17977: PUSH
17978: LD_EXP 23
17982: ST_TO_ADDR
// uc_nation := nation_nature ;
17983: LD_ADDR_OWVAR 21
17987: PUSH
17988: LD_INT 0
17990: ST_TO_ADDR
// hc_class := class_apeman_soldier ;
17991: LD_ADDR_OWVAR 28
17995: PUSH
17996: LD_INT 15
17998: ST_TO_ADDR
// k := CreateHuman ;
17999: LD_ADDR_VAR 0 3
18003: PUSH
18004: CALL_OW 44
18008: ST_TO_ADDR
// PlaceHumanInUnit ( k , tov ) ;
18009: LD_VAR 0 3
18013: PPUSH
18014: LD_VAR 0 1
18018: PPUSH
18019: CALL_OW 52
// end ;
18023: LD_VAR 0 2
18027: RET
// every 0 0$3 do var tov , radar ;
18028: GO 18030
18030: DISABLE
18031: LD_INT 0
18033: PPUSH
18034: PPUSH
// begin radar = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_type , unit_vehicle ] , [ f_weapon , ar_radar ] ] ) ;
18035: LD_ADDR_VAR 0 2
18039: PUSH
18040: LD_INT 52
18042: PUSH
18043: EMPTY
18044: LIST
18045: PUSH
18046: LD_INT 22
18048: PUSH
18049: LD_EXP 23
18053: PUSH
18054: EMPTY
18055: LIST
18056: LIST
18057: PUSH
18058: LD_INT 21
18060: PUSH
18061: LD_INT 2
18063: PUSH
18064: EMPTY
18065: LIST
18066: LIST
18067: PUSH
18068: LD_INT 34
18070: PUSH
18071: LD_INT 30
18073: PUSH
18074: EMPTY
18075: LIST
18076: LIST
18077: PUSH
18078: EMPTY
18079: LIST
18080: LIST
18081: LIST
18082: LIST
18083: PPUSH
18084: CALL_OW 69
18088: ST_TO_ADDR
// if not radar then
18089: LD_VAR 0 2
18093: NOT
18094: IFFALSE 18214
// begin Wait ( 8 8$00 ) ;
18096: LD_INT 16800
18098: PPUSH
18099: CALL_OW 67
// tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_ok ] , [ f_btype , b_factory ] ] ) ;
18103: LD_ADDR_VAR 0 1
18107: PUSH
18108: LD_INT 22
18110: PUSH
18111: LD_EXP 23
18115: PUSH
18116: EMPTY
18117: LIST
18118: LIST
18119: PUSH
18120: LD_INT 50
18122: PUSH
18123: EMPTY
18124: LIST
18125: PUSH
18126: LD_INT 30
18128: PUSH
18129: LD_INT 3
18131: PUSH
18132: EMPTY
18133: LIST
18134: LIST
18135: PUSH
18136: EMPTY
18137: LIST
18138: LIST
18139: LIST
18140: PPUSH
18141: CALL_OW 69
18145: ST_TO_ADDR
// if not tov then
18146: LD_VAR 0 1
18150: NOT
18151: IFFALSE 18155
// exit ;
18153: GO 18215
// if CanBeConstructed ( tov [ 1 ] , ar_medium_trike , engine_siberite , control_apeman , ar_radar ) then
18155: LD_VAR 0 1
18159: PUSH
18160: LD_INT 1
18162: ARRAY
18163: PPUSH
18164: LD_INT 13
18166: PPUSH
18167: LD_INT 3
18169: PPUSH
18170: LD_INT 5
18172: PPUSH
18173: LD_INT 30
18175: PPUSH
18176: CALL_OW 448
18180: IFFALSE 18207
// AddComConstruct ( tov [ 1 ] , ar_medium_trike , engine_siberite , control_apeman , ar_radar ) ;
18182: LD_VAR 0 1
18186: PUSH
18187: LD_INT 1
18189: ARRAY
18190: PPUSH
18191: LD_INT 13
18193: PPUSH
18194: LD_INT 3
18196: PPUSH
18197: LD_INT 5
18199: PPUSH
18200: LD_INT 30
18202: PPUSH
18203: CALL_OW 185
// Wait ( 8 8$00 ) ;
18207: LD_INT 16800
18209: PPUSH
18210: CALL_OW 67
// end ; enable ;
18214: ENABLE
// end ; end_of_file
18215: PPOPN 2
18217: 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
18218: LD_VAR 0 2
18222: PPUSH
18223: CALL_OW 257
18227: PUSH
18228: LD_INT 15
18230: EQUAL
18231: PUSH
18232: LD_VAR 0 2
18236: PPUSH
18237: CALL_OW 255
18241: PUSH
18242: LD_EXP 23
18246: EQUAL
18247: AND
18248: PUSH
18249: LD_VAR 0 2
18253: PPUSH
18254: LD_INT 12
18256: PPUSH
18257: CALL 5661 0 2
18261: AND
18262: PUSH
18263: LD_VAR 0 2
18267: PUSH
18268: LD_EXP 80
18272: IN
18273: AND
18274: IFFALSE 18292
// zalezt = zalezt diff human ;
18276: LD_ADDR_EXP 80
18280: PUSH
18281: LD_EXP 80
18285: PUSH
18286: LD_VAR 0 2
18290: DIFF
18291: ST_TO_ADDR
// end ;
18292: PPOPN 2
18294: END
// on BuildingCaptured ( building , side , human ) do begin if building = forest_depot then
18295: LD_VAR 0 1
18299: PUSH
18300: LD_INT 88
18302: EQUAL
18303: IFFALSE 18353
// begin SetResourceType ( GetBase ( building ) , mat_cans , 10 ) ;
18305: LD_VAR 0 1
18309: PPUSH
18310: CALL_OW 274
18314: PPUSH
18315: LD_INT 1
18317: PPUSH
18318: LD_INT 10
18320: PPUSH
18321: CALL_OW 277
// SetResourceType ( GetBase ( building ) , mat_siberit , Rand ( 25 , 38 ) ) ;
18325: LD_VAR 0 1
18329: PPUSH
18330: CALL_OW 274
18334: PPUSH
18335: LD_INT 3
18337: PPUSH
18338: LD_INT 25
18340: PPUSH
18341: LD_INT 38
18343: PPUSH
18344: CALL_OW 12
18348: PPUSH
18349: CALL_OW 277
// end ; end ;
18353: PPOPN 3
18355: 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
18356: LD_VAR 0 1
18360: PPUSH
18361: CALL_OW 255
18365: PUSH
18366: LD_EXP 23
18370: EQUAL
18371: PUSH
18372: LD_VAR 0 1
18376: PPUSH
18377: CALL_OW 266
18381: PUSH
18382: LD_INT 1
18384: EQUAL
18385: AND
18386: PUSH
18387: LD_INT 95
18389: PUSH
18390: LD_INT 39
18392: PUSH
18393: EMPTY
18394: LIST
18395: LIST
18396: PUSH
18397: LD_INT 22
18399: PUSH
18400: LD_EXP 21
18404: PUSH
18405: EMPTY
18406: LIST
18407: LIST
18408: PUSH
18409: LD_INT 2
18411: PUSH
18412: LD_INT 21
18414: PUSH
18415: LD_INT 1
18417: PUSH
18418: EMPTY
18419: LIST
18420: LIST
18421: PUSH
18422: LD_INT 21
18424: PUSH
18425: LD_INT 2
18427: PUSH
18428: EMPTY
18429: LIST
18430: LIST
18431: PUSH
18432: EMPTY
18433: LIST
18434: LIST
18435: LIST
18436: PUSH
18437: EMPTY
18438: LIST
18439: LIST
18440: LIST
18441: PPUSH
18442: CALL_OW 69
18446: AND
18447: PUSH
18448: LD_VAR 0 1
18452: PPUSH
18453: CALL_OW 255
18457: PUSH
18458: LD_EXP 23
18462: EQUAL
18463: PUSH
18464: LD_INT 22
18466: PUSH
18467: LD_EXP 23
18471: PUSH
18472: EMPTY
18473: LIST
18474: LIST
18475: PUSH
18476: LD_INT 21
18478: PUSH
18479: LD_INT 1
18481: PUSH
18482: EMPTY
18483: LIST
18484: LIST
18485: PUSH
18486: LD_INT 23
18488: PUSH
18489: LD_INT 2
18491: PUSH
18492: EMPTY
18493: LIST
18494: LIST
18495: PUSH
18496: EMPTY
18497: LIST
18498: LIST
18499: LIST
18500: PPUSH
18501: CALL_OW 69
18505: PUSH
18506: LD_INT 0
18508: PLUS
18509: PUSH
18510: LD_EXP 20
18514: PUSH
18515: LD_INT 6
18517: MINUS
18518: LESSEQUAL
18519: AND
18520: PUSH
18521: LD_INT 95
18523: PUSH
18524: LD_INT 39
18526: PUSH
18527: EMPTY
18528: LIST
18529: LIST
18530: PUSH
18531: LD_INT 22
18533: PUSH
18534: LD_EXP 21
18538: PUSH
18539: EMPTY
18540: LIST
18541: LIST
18542: PUSH
18543: LD_INT 2
18545: PUSH
18546: LD_INT 21
18548: PUSH
18549: LD_INT 1
18551: PUSH
18552: EMPTY
18553: LIST
18554: LIST
18555: PUSH
18556: LD_INT 21
18558: PUSH
18559: LD_INT 2
18561: PUSH
18562: EMPTY
18563: LIST
18564: LIST
18565: PUSH
18566: EMPTY
18567: LIST
18568: LIST
18569: LIST
18570: PUSH
18571: EMPTY
18572: LIST
18573: LIST
18574: LIST
18575: PPUSH
18576: CALL_OW 69
18580: AND
18581: OR
18582: IFFALSE 18610
// begin if wasRichardDialog then
18584: LD_EXP 31
18588: IFFALSE 18594
// exit else
18590: GO 18649
18592: GO 18610
// begin if zachranenaArabka then
18594: LD_EXP 15
18598: IFFALSE 18606
// RichardDialog ( ) else
18600: CALL 26009 0 0
18604: GO 18610
// DieDialog ( ) ;
18606: CALL 26343 0 0
// end ; end ; if GetType ( unit ) = unit_vehicle and GetControl ( unit ) = control_remote then
18610: LD_VAR 0 1
18614: PPUSH
18615: CALL_OW 247
18619: PUSH
18620: LD_INT 2
18622: EQUAL
18623: PUSH
18624: LD_VAR 0 1
18628: PPUSH
18629: CALL_OW 263
18633: PUSH
18634: LD_INT 2
18636: EQUAL
18637: AND
18638: IFFALSE 18649
// ComUnlink ( unit ) ;
18640: LD_VAR 0 1
18644: PPUSH
18645: CALL_OW 136
// end ;
18649: PPOPN 1
18651: END
// on Contact ( side1 , side2 ) do begin if ( side1 = arab and side2 = you ) then
18652: LD_VAR 0 1
18656: PUSH
18657: LD_EXP 23
18661: EQUAL
18662: PUSH
18663: LD_VAR 0 2
18667: PUSH
18668: LD_EXP 21
18672: EQUAL
18673: AND
18674: IFFALSE 18724
// begin if AlianceSAraby then
18676: CALL 2247 0 0
18680: IFFALSE 18724
// begin nasralAraba = true ;
18682: LD_ADDR_EXP 37
18686: PUSH
18687: LD_INT 1
18689: ST_TO_ADDR
// SetAttitude ( you , arab , att_enemy , true ) ;
18690: LD_EXP 21
18694: PPUSH
18695: LD_EXP 23
18699: PPUSH
18700: LD_INT 2
18702: PPUSH
18703: LD_INT 1
18705: PPUSH
18706: CALL_OW 80
// ChangeSideFog ( arab , arab ) ;
18710: LD_EXP 23
18714: PPUSH
18715: LD_EXP 23
18719: PPUSH
18720: CALL_OW 343
// end ; end ; if side1 = you and side2 = 5 then
18724: LD_VAR 0 1
18728: PUSH
18729: LD_EXP 21
18733: EQUAL
18734: PUSH
18735: LD_VAR 0 2
18739: PUSH
18740: LD_INT 5
18742: EQUAL
18743: AND
18744: IFFALSE 18753
// YouLost ( platfail ) ;
18746: LD_STRING platfail
18748: PPUSH
18749: CALL_OW 104
// end ;
18753: PPOPN 2
18755: END
// on BehemothConstructed ( vehicle ) do begin if GetChassis ( vehicle ) = 25 then
18756: LD_VAR 0 1
18760: PPUSH
18761: CALL_OW 265
18765: PUSH
18766: LD_INT 25
18768: EQUAL
18769: IFFALSE 18775
// BehemotBuildTalk ;
18771: CALL 27899 0 0
// end ;
18775: PPOPN 1
18777: END
// on BuildingStarted ( building , unit ) do begin if GetSide ( building ) = you then
18778: LD_VAR 0 1
18782: PPUSH
18783: CALL_OW 255
18787: PUSH
18788: LD_EXP 21
18792: EQUAL
18793: IFFALSE 18803
// startAttackCountdown = true ;
18795: LD_ADDR_EXP 33
18799: PUSH
18800: LD_INT 1
18802: ST_TO_ADDR
// end ;
18803: PPOPN 2
18805: END
// on VehicleDestroyed ( vehicle , side , nation , x , y , direction , chassis , control , motor , weapon ) do begin if vehicle in arab_attack_list then
18806: LD_VAR 0 1
18810: PUSH
18811: LD_EXP 28
18815: IN
18816: IFFALSE 18834
// arab_attack_list = arab_attack_list diff vehicle ;
18818: LD_ADDR_EXP 28
18822: PUSH
18823: LD_EXP 28
18827: PUSH
18828: LD_VAR 0 1
18832: DIFF
18833: ST_TO_ADDR
// if vehicle in purple_attack_list then
18834: LD_VAR 0 1
18838: PUSH
18839: LD_EXP 29
18843: IN
18844: IFFALSE 18862
// purple_attack_list = purple_attack_list diff vehicle ;
18846: LD_ADDR_EXP 29
18850: PUSH
18851: LD_EXP 29
18855: PUSH
18856: LD_VAR 0 1
18860: DIFF
18861: ST_TO_ADDR
// if vehicle in amik_attack_list then
18862: LD_VAR 0 1
18866: PUSH
18867: LD_EXP 30
18871: IN
18872: IFFALSE 18890
// amik_attack_list = amik_attack_list diff vehicle ;
18874: LD_ADDR_EXP 30
18878: PUSH
18879: LD_EXP 30
18883: PUSH
18884: LD_VAR 0 1
18888: DIFF
18889: ST_TO_ADDR
// end ;
18890: PPOPN 10
18892: END
// on VehicleCaptured ( new_vehicle , old_vehicle , original_side , human ) do begin if GetSide ( human ) = you then
18893: LD_VAR 0 4
18897: PPUSH
18898: CALL_OW 255
18902: PUSH
18903: LD_EXP 21
18907: EQUAL
18908: IFFALSE 19078
// begin if old_vehicle in arab_attack_list then
18910: LD_VAR 0 2
18914: PUSH
18915: LD_EXP 28
18919: IN
18920: IFFALSE 18938
// arab_attack_list = arab_attack_list diff old_vehicle ;
18922: LD_ADDR_EXP 28
18926: PUSH
18927: LD_EXP 28
18931: PUSH
18932: LD_VAR 0 2
18936: DIFF
18937: ST_TO_ADDR
// if old_vehicle in purple_attack_list then
18938: LD_VAR 0 2
18942: PUSH
18943: LD_EXP 29
18947: IN
18948: IFFALSE 18966
// purple_attack_list = purple_attack_list diff old_vehicle ;
18950: LD_ADDR_EXP 29
18954: PUSH
18955: LD_EXP 29
18959: PUSH
18960: LD_VAR 0 2
18964: DIFF
18965: ST_TO_ADDR
// if old_vehicle in amik_attack_list then
18966: LD_VAR 0 2
18970: PUSH
18971: LD_EXP 30
18975: IN
18976: IFFALSE 18994
// amik_attack_list = amik_attack_list diff old_vehicle ;
18978: LD_ADDR_EXP 30
18982: PUSH
18983: LD_EXP 30
18987: PUSH
18988: LD_VAR 0 2
18992: DIFF
18993: ST_TO_ADDR
// if new_vehicle in arab_attack_list then
18994: LD_VAR 0 1
18998: PUSH
18999: LD_EXP 28
19003: IN
19004: IFFALSE 19022
// arab_attack_list = arab_attack_list diff new_vehicle ;
19006: LD_ADDR_EXP 28
19010: PUSH
19011: LD_EXP 28
19015: PUSH
19016: LD_VAR 0 1
19020: DIFF
19021: ST_TO_ADDR
// if new_vehicle in purple_attack_list then
19022: LD_VAR 0 1
19026: PUSH
19027: LD_EXP 29
19031: IN
19032: IFFALSE 19050
// purple_attack_list = purple_attack_list diff new_vehicle ;
19034: LD_ADDR_EXP 29
19038: PUSH
19039: LD_EXP 29
19043: PUSH
19044: LD_VAR 0 1
19048: DIFF
19049: ST_TO_ADDR
// if new_vehicle in amik_attack_list then
19050: LD_VAR 0 1
19054: PUSH
19055: LD_EXP 30
19059: IN
19060: IFFALSE 19078
// amik_attack_list = amik_attack_list diff new_vehicle ;
19062: LD_ADDR_EXP 30
19066: PUSH
19067: LD_EXP 30
19071: PUSH
19072: LD_VAR 0 1
19076: DIFF
19077: ST_TO_ADDR
// end ; VehicleCaptured2 ( new_vehicle , old_vehicle , original_side , human ) ;
19078: LD_VAR 0 1
19082: PPUSH
19083: LD_VAR 0 2
19087: PPUSH
19088: LD_VAR 0 3
19092: PPUSH
19093: LD_VAR 0 4
19097: PPUSH
19098: CALL 19193 0 4
// end ;
19102: PPOPN 4
19104: END
// var capturedEmptyVehs ; every 0 0$1 do
19105: GO 19107
19107: DISABLE
// capturedEmptyVehs = [ ] ;
19108: LD_ADDR_LOC 3
19112: PUSH
19113: EMPTY
19114: ST_TO_ADDR
19115: END
// on EnterVehicle ( vehicle , human ) do begin EnterVeh ( vehicle , human ) ;
19116: LD_VAR 0 1
19120: PPUSH
19121: LD_VAR 0 2
19125: PPUSH
19126: CALL 19150 0 2
// end ;
19130: PPOPN 2
19132: END
// on EnterVehicleFromBuilding ( vehicle , human , building ) do begin EnterVeh ( vehicle , human ) ;
19133: LD_VAR 0 1
19137: PPUSH
19138: LD_VAR 0 2
19142: PPUSH
19143: CALL 19150 0 2
// end ;
19147: PPOPN 3
19149: END
// function EnterVeh ( new_vehicle , human ) ; begin
19150: LD_INT 0
19152: PPUSH
// if new_vehicle in capturedEmptyVehs then
19153: LD_VAR 0 1
19157: PUSH
19158: LD_LOC 3
19162: IN
19163: IFFALSE 19188
// VehicleCaptured2 ( new_vehicle , new_vehicle , - 1 , human ) ;
19165: LD_VAR 0 1
19169: PPUSH
19170: LD_VAR 0 1
19174: PPUSH
19175: LD_INT 1
19177: NEG
19178: PPUSH
19179: LD_VAR 0 2
19183: PPUSH
19184: CALL 19193 0 4
// end ;
19188: LD_VAR 0 3
19192: 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
19193: LD_INT 0
19195: PPUSH
19196: PPUSH
19197: PPUSH
19198: PPUSH
19199: PPUSH
19200: PPUSH
19201: PPUSH
19202: PPUSH
19203: PPUSH
19204: PPUSH
19205: PPUSH
19206: PPUSH
19207: PPUSH
19208: PPUSH
19209: PPUSH
// x = GetX ( new_vehicle ) ;
19210: LD_ADDR_VAR 0 14
19214: PUSH
19215: LD_VAR 0 1
19219: PPUSH
19220: CALL_OW 250
19224: ST_TO_ADDR
// y = GetY ( new_vehicle ) ;
19225: LD_ADDR_VAR 0 15
19229: PUSH
19230: LD_VAR 0 1
19234: PPUSH
19235: CALL_OW 251
19239: ST_TO_ADDR
// side = GetSide ( new_vehicle ) ;
19240: LD_ADDR_VAR 0 6
19244: PUSH
19245: LD_VAR 0 1
19249: PPUSH
19250: CALL_OW 255
19254: ST_TO_ADDR
// nation = GetNation ( new_vehicle ) ;
19255: LD_ADDR_VAR 0 7
19259: PUSH
19260: LD_VAR 0 1
19264: PPUSH
19265: CALL_OW 248
19269: ST_TO_ADDR
// weapon = GetWeapon ( new_vehicle ) ;
19270: LD_ADDR_VAR 0 8
19274: PUSH
19275: LD_VAR 0 1
19279: PPUSH
19280: CALL_OW 264
19284: ST_TO_ADDR
// chassis = GetChassis ( new_vehicle ) ;
19285: LD_ADDR_VAR 0 9
19289: PUSH
19290: LD_VAR 0 1
19294: PPUSH
19295: CALL_OW 265
19299: ST_TO_ADDR
// control = GetControl ( new_vehicle ) ;
19300: LD_ADDR_VAR 0 10
19304: PUSH
19305: LD_VAR 0 1
19309: PPUSH
19310: CALL_OW 263
19314: ST_TO_ADDR
// engine = GetEngine ( new_vehicle ) ;
19315: LD_ADDR_VAR 0 11
19319: PUSH
19320: LD_VAR 0 1
19324: PPUSH
19325: CALL_OW 262
19329: ST_TO_ADDR
// if engine <> engine_siberite then
19330: LD_VAR 0 11
19334: PUSH
19335: LD_INT 3
19337: NONEQUAL
19338: IFFALSE 19355
// fuel = GetFuel ( new_vehicle ) ;
19340: LD_ADDR_VAR 0 12
19344: PUSH
19345: LD_VAR 0 1
19349: PPUSH
19350: CALL_OW 261
19354: ST_TO_ADDR
// dir = GetDir ( new_vehicle ) ;
19355: LD_ADDR_VAR 0 13
19359: PUSH
19360: LD_VAR 0 1
19364: PPUSH
19365: CALL_OW 254
19369: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
19370: LD_ADDR_VAR 0 16
19374: PUSH
19375: LD_VAR 0 1
19379: PPUSH
19380: CALL_OW 256
19384: ST_TO_ADDR
// if control = control_manual and not UnitsInside ( new_vehicle ) then
19385: LD_VAR 0 10
19389: PUSH
19390: LD_INT 1
19392: EQUAL
19393: PUSH
19394: LD_VAR 0 1
19398: PPUSH
19399: CALL_OW 313
19403: NOT
19404: AND
19405: IFFALSE 19425
// begin capturedEmptyVehs = capturedEmptyVehs ^ new_vehicle ;
19407: LD_ADDR_LOC 3
19411: PUSH
19412: LD_LOC 3
19416: PUSH
19417: LD_VAR 0 1
19421: ADD
19422: ST_TO_ADDR
// exit ;
19423: GO 19734
// end ; if UnitsInside ( new_vehicle ) then
19425: LD_VAR 0 1
19429: PPUSH
19430: CALL_OW 313
19434: IFFALSE 19483
// begin rider = UnitsInside ( new_vehicle ) [ 1 ] ;
19436: LD_ADDR_VAR 0 18
19440: PUSH
19441: LD_VAR 0 1
19445: PPUSH
19446: CALL_OW 313
19450: PUSH
19451: LD_INT 1
19453: ARRAY
19454: ST_TO_ADDR
// if IsSelected ( rider ) then
19455: LD_VAR 0 18
19459: PPUSH
19460: CALL_OW 306
19464: IFFALSE 19474
// selected = 1 ;
19466: LD_ADDR_VAR 0 19
19470: PUSH
19471: LD_INT 1
19473: ST_TO_ADDR
// RemoveUnit ( rider ) ;
19474: LD_VAR 0 18
19478: PPUSH
19479: CALL_OW 64
// end ; if IsSelected ( new_vehicle ) then
19483: LD_VAR 0 1
19487: PPUSH
19488: CALL_OW 306
19492: IFFALSE 19511
// begin DeselectUnits ( new_vehicle ) ;
19494: LD_VAR 0 1
19498: PPUSH
19499: CALL_OW 491
// selected = 1 ;
19503: LD_ADDR_VAR 0 19
19507: PUSH
19508: LD_INT 1
19510: ST_TO_ADDR
// end ; if new_vehicle in capturedEmptyVehs then
19511: LD_VAR 0 1
19515: PUSH
19516: LD_LOC 3
19520: IN
19521: IFFALSE 19539
// capturedEmptyVehs = capturedEmptyVehs diff new_vehicle ;
19523: LD_ADDR_LOC 3
19527: PUSH
19528: LD_LOC 3
19532: PUSH
19533: LD_VAR 0 1
19537: DIFF
19538: ST_TO_ADDR
// uc_side = side ;
19539: LD_ADDR_OWVAR 20
19543: PUSH
19544: LD_VAR 0 6
19548: ST_TO_ADDR
// uc_nation = nation ;
19549: LD_ADDR_OWVAR 21
19553: PUSH
19554: LD_VAR 0 7
19558: ST_TO_ADDR
// vc_chassis = chassis ;
19559: LD_ADDR_OWVAR 37
19563: PUSH
19564: LD_VAR 0 9
19568: ST_TO_ADDR
// vc_control = control ;
19569: LD_ADDR_OWVAR 38
19573: PUSH
19574: LD_VAR 0 10
19578: ST_TO_ADDR
// vc_engine = engine ;
19579: LD_ADDR_OWVAR 39
19583: PUSH
19584: LD_VAR 0 11
19588: ST_TO_ADDR
// if engine <> engine_siberite then
19589: LD_VAR 0 11
19593: PUSH
19594: LD_INT 3
19596: NONEQUAL
19597: IFFALSE 19609
// vc_fuel_battery = fuel ;
19599: LD_ADDR_OWVAR 41
19603: PUSH
19604: LD_VAR 0 12
19608: ST_TO_ADDR
// vc_weapon = weapon ;
19609: LD_ADDR_OWVAR 40
19613: PUSH
19614: LD_VAR 0 8
19618: ST_TO_ADDR
// uc_direction = dir ;
19619: LD_ADDR_OWVAR 24
19623: PUSH
19624: LD_VAR 0 13
19628: ST_TO_ADDR
// lives = GetLives ( new_vehicle ) ;
19629: LD_ADDR_VAR 0 16
19633: PUSH
19634: LD_VAR 0 1
19638: PPUSH
19639: CALL_OW 256
19643: ST_TO_ADDR
// veh = CreateVehicle ;
19644: LD_ADDR_VAR 0 17
19648: PUSH
19649: CALL_OW 45
19653: ST_TO_ADDR
// SetLives ( veh , lives ) ;
19654: LD_VAR 0 17
19658: PPUSH
19659: LD_VAR 0 16
19663: PPUSH
19664: CALL_OW 234
// RemoveUnit ( new_vehicle ) ;
19668: LD_VAR 0 1
19672: PPUSH
19673: CALL_OW 64
// PlaceUnitXY ( veh , x , y , false ) ;
19677: LD_VAR 0 17
19681: PPUSH
19682: LD_VAR 0 14
19686: PPUSH
19687: LD_VAR 0 15
19691: PPUSH
19692: LD_INT 0
19694: PPUSH
19695: CALL_OW 48
// if rider then
19699: LD_VAR 0 18
19703: IFFALSE 19719
// PlaceHumanInUnit ( rider , veh ) ;
19705: LD_VAR 0 18
19709: PPUSH
19710: LD_VAR 0 17
19714: PPUSH
19715: CALL_OW 52
// if selected then
19719: LD_VAR 0 19
19723: IFFALSE 19734
// SelectUnits ( veh ) ;
19725: LD_VAR 0 17
19729: PPUSH
19730: CALL_OW 490
// end ; end_of_file
19734: LD_VAR 0 5
19738: RET
// var dosahly ; every 6 6$00 do var i , un , auto ;
19739: GO 19741
19741: DISABLE
19742: LD_INT 0
19744: PPUSH
19745: PPUSH
19746: PPUSH
// begin if SideDead ( arab ) then
19747: LD_EXP 23
19751: PPUSH
19752: CALL 2293 0 1
19756: IFFALSE 19760
// exit ;
19758: GO 20005
// dosahly = false ;
19760: LD_ADDR_LOC 4
19764: PUSH
19765: LD_INT 0
19767: ST_TO_ADDR
// for i = 1 to 4 do
19768: LD_ADDR_VAR 0 1
19772: PUSH
19773: DOUBLE
19774: LD_INT 1
19776: DEC
19777: ST_TO_ADDR
19778: LD_INT 4
19780: PUSH
19781: FOR_TO
19782: IFFALSE 19840
// begin un = VytvorCloveka ( 1 , dif_enemy_min_skill - 2 , dif_enemy_max_skill - 3 , 1 , cyan ) ;
19784: LD_ADDR_VAR 0 2
19788: PUSH
19789: LD_INT 1
19791: PPUSH
19792: LD_EXP 64
19796: PUSH
19797: LD_INT 2
19799: MINUS
19800: PPUSH
19801: LD_EXP 65
19805: PUSH
19806: LD_INT 3
19808: MINUS
19809: PPUSH
19810: LD_INT 1
19812: PPUSH
19813: LD_EXP 25
19817: PPUSH
19818: CALL 2566 0 5
19822: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
19823: LD_VAR 0 2
19827: PPUSH
19828: LD_INT 33
19830: PPUSH
19831: LD_INT 0
19833: PPUSH
19834: CALL_OW 49
// end ;
19838: GO 19781
19840: POP
19841: POP
// uc_side = cyan ;
19842: LD_ADDR_OWVAR 20
19846: PUSH
19847: LD_EXP 25
19851: ST_TO_ADDR
// uc_nation = nation_american ;
19852: LD_ADDR_OWVAR 21
19856: PUSH
19857: LD_INT 1
19859: ST_TO_ADDR
// vc_chassis = Rand ( us_medium_tracked , us_heavy_tracked ) ;
19860: LD_ADDR_OWVAR 37
19864: PUSH
19865: LD_INT 3
19867: PPUSH
19868: LD_INT 4
19870: PPUSH
19871: CALL_OW 12
19875: ST_TO_ADDR
// vc_control = control_manual ;
19876: LD_ADDR_OWVAR 38
19880: PUSH
19881: LD_INT 1
19883: ST_TO_ADDR
// vc_engine = engine_siberite ;
19884: LD_ADDR_OWVAR 39
19888: PUSH
19889: LD_INT 3
19891: ST_TO_ADDR
// if Prob ( 50 ) then
19892: LD_INT 50
19894: PPUSH
19895: CALL_OW 13
19899: IFFALSE 19911
// vc_weapon = us_laser else
19901: LD_ADDR_OWVAR 40
19905: PUSH
19906: LD_INT 9
19908: ST_TO_ADDR
19909: GO 19919
// vc_weapon = us_heavy_gun ;
19911: LD_ADDR_OWVAR 40
19915: PUSH
19916: LD_INT 6
19918: ST_TO_ADDR
// if vc_weapon = us_heavy_gun then
19919: LD_OWVAR 40
19923: PUSH
19924: LD_INT 6
19926: EQUAL
19927: IFFALSE 19937
// vc_chassis = us_heavy_tracked ;
19929: LD_ADDR_OWVAR 37
19933: PUSH
19934: LD_INT 4
19936: ST_TO_ADDR
// auto = CreateVehicle ;
19937: LD_ADDR_VAR 0 3
19941: PUSH
19942: CALL_OW 45
19946: ST_TO_ADDR
// PlaceUnitArea ( auto , CyanSpawn , false ) ;
19947: LD_VAR 0 3
19951: PPUSH
19952: LD_INT 33
19954: PPUSH
19955: LD_INT 0
19957: PPUSH
19958: CALL_OW 49
// PlaceHumanInUnit ( VytvorCloveka ( 3 , 5 , 7 , 1 , cyan ) , auto ) ;
19962: LD_INT 3
19964: PPUSH
19965: LD_INT 5
19967: PPUSH
19968: LD_INT 7
19970: PPUSH
19971: LD_INT 1
19973: PPUSH
19974: LD_EXP 25
19978: PPUSH
19979: CALL 2566 0 5
19983: PPUSH
19984: LD_VAR 0 3
19988: PPUSH
19989: CALL_OW 52
// Wait ( 0 0$0.5 ) ;
19993: LD_INT 18
19995: PPUSH
19996: CALL_OW 67
// Utoc ;
20000: CALL 20034 0 0
// enable ;
20004: ENABLE
// end ;
20005: PPOPN 3
20007: END
// every 0 0$1 do
20008: GO 20010
20010: DISABLE
// begin if FilterAllUnits ( [ f_side , cyan ] ) then
20011: LD_INT 22
20013: PUSH
20014: LD_EXP 25
20018: PUSH
20019: EMPTY
20020: LIST
20021: LIST
20022: PPUSH
20023: CALL_OW 69
20027: IFFALSE 20033
// Utoc ;
20029: CALL 20034 0 0
// end ;
20033: END
// function Utoc ; var jednotky , i , targ , targety , n ; begin
20034: LD_INT 0
20036: PPUSH
20037: PPUSH
20038: PPUSH
20039: PPUSH
20040: PPUSH
20041: PPUSH
// jednotky = FilterAllUnits ( [ f_side , cyan ] ) ;
20042: LD_ADDR_VAR 0 2
20046: PUSH
20047: LD_INT 22
20049: PUSH
20050: LD_EXP 25
20054: PUSH
20055: EMPTY
20056: LIST
20057: LIST
20058: PPUSH
20059: CALL_OW 69
20063: ST_TO_ADDR
// if jednotky then
20064: LD_VAR 0 2
20068: IFFALSE 20260
// begin if FilterAllUnits ( [ [ f_side , arab ] , [ f_type , unit_human ] ] ) then
20070: LD_INT 22
20072: PUSH
20073: LD_EXP 23
20077: PUSH
20078: EMPTY
20079: LIST
20080: LIST
20081: PUSH
20082: LD_INT 21
20084: PUSH
20085: LD_INT 1
20087: PUSH
20088: EMPTY
20089: LIST
20090: LIST
20091: PUSH
20092: EMPTY
20093: LIST
20094: LIST
20095: PPUSH
20096: CALL_OW 69
20100: IFFALSE 20114
// targ = arab else
20102: LD_ADDR_VAR 0 4
20106: PUSH
20107: LD_EXP 23
20111: ST_TO_ADDR
20112: GO 20124
// targ = you ;
20114: LD_ADDR_VAR 0 4
20118: PUSH
20119: LD_EXP 21
20123: ST_TO_ADDR
// targety = FilterAllUnits ( [ [ f_side , targ ] , [ f_placed ] ] ) ;
20124: LD_ADDR_VAR 0 5
20128: PUSH
20129: LD_INT 22
20131: PUSH
20132: LD_VAR 0 4
20136: PUSH
20137: EMPTY
20138: LIST
20139: LIST
20140: PUSH
20141: LD_INT 52
20143: PUSH
20144: EMPTY
20145: LIST
20146: PUSH
20147: EMPTY
20148: LIST
20149: LIST
20150: PPUSH
20151: CALL_OW 69
20155: ST_TO_ADDR
// for i in jednotky do
20156: LD_ADDR_VAR 0 3
20160: PUSH
20161: LD_VAR 0 2
20165: PUSH
20166: FOR_IN
20167: IFFALSE 20258
// begin if GetDistUnitXY ( i , 170 , 96 ) < 6 then
20169: LD_VAR 0 3
20173: PPUSH
20174: LD_INT 170
20176: PPUSH
20177: LD_INT 96
20179: PPUSH
20180: CALL_OW 297
20184: PUSH
20185: LD_INT 6
20187: LESS
20188: IFFALSE 20198
// dosahly = true ;
20190: LD_ADDR_LOC 4
20194: PUSH
20195: LD_INT 1
20197: ST_TO_ADDR
// if not dosahly then
20198: LD_LOC 4
20202: NOT
20203: IFFALSE 20222
// ComAgressiveMove ( i , 170 , 96 ) else
20205: LD_VAR 0 3
20209: PPUSH
20210: LD_INT 170
20212: PPUSH
20213: LD_INT 96
20215: PPUSH
20216: CALL_OW 114
20220: GO 20256
// begin n = NearestUnitToUnit2 ( targety , i ) ;
20222: LD_ADDR_VAR 0 6
20226: PUSH
20227: LD_VAR 0 5
20231: PPUSH
20232: LD_VAR 0 3
20236: PPUSH
20237: CALL 5575 0 2
20241: ST_TO_ADDR
// ComAttackUnit ( i , n ) ;
20242: LD_VAR 0 3
20246: PPUSH
20247: LD_VAR 0 6
20251: PPUSH
20252: CALL_OW 115
// end ; end ;
20256: GO 20166
20258: POP
20259: POP
// end ; end ; end_of_file
20260: LD_VAR 0 1
20264: RET
// every 0 0$5 do
20265: GO 20267
20267: DISABLE
// begin arStartUnitCount = FilterAllUnits ( [ [ f_type , unit_human ] , [ f_placed ] , [ f_side , arab ] , [ f_nation , nation_arabian ] ] ) + 0 ;
20268: LD_ADDR_EXP 20
20272: PUSH
20273: LD_INT 21
20275: PUSH
20276: LD_INT 1
20278: PUSH
20279: EMPTY
20280: LIST
20281: LIST
20282: PUSH
20283: LD_INT 52
20285: PUSH
20286: EMPTY
20287: LIST
20288: PUSH
20289: LD_INT 22
20291: PUSH
20292: LD_EXP 23
20296: PUSH
20297: EMPTY
20298: LIST
20299: LIST
20300: PUSH
20301: LD_INT 23
20303: PUSH
20304: LD_INT 2
20306: PUSH
20307: EMPTY
20308: LIST
20309: LIST
20310: PUSH
20311: EMPTY
20312: LIST
20313: LIST
20314: LIST
20315: LIST
20316: PPUSH
20317: CALL_OW 69
20321: PUSH
20322: LD_INT 0
20324: PLUS
20325: ST_TO_ADDR
// end ;
20326: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_class , class_apeman_soldier ] ] ) + 0 = 0 do
20327: LD_INT 95
20329: PUSH
20330: LD_INT 12
20332: PUSH
20333: EMPTY
20334: LIST
20335: LIST
20336: PUSH
20337: LD_INT 25
20339: PUSH
20340: LD_INT 15
20342: PUSH
20343: EMPTY
20344: LIST
20345: LIST
20346: PUSH
20347: EMPTY
20348: LIST
20349: LIST
20350: PPUSH
20351: CALL_OW 69
20355: PUSH
20356: LD_INT 0
20358: PLUS
20359: PUSH
20360: LD_INT 0
20362: EQUAL
20363: IFFALSE 20376
20365: GO 20367
20367: DISABLE
// begin ar_bocni_baza_captured = true ;
20368: LD_ADDR_EXP 38
20372: PUSH
20373: LD_INT 1
20375: ST_TO_ADDR
// end ;
20376: END
// every 0 0$5 do var i ;
20377: GO 20379
20379: DISABLE
20380: LD_INT 0
20382: PPUSH
// begin for i in FilterAllUnits ( [ [ f_btype , b_warehouse ] , [ f_ok ] , [ f_not , [ f_side , you ] ] ] ) do
20383: LD_ADDR_VAR 0 1
20387: PUSH
20388: LD_INT 30
20390: PUSH
20391: LD_INT 1
20393: PUSH
20394: EMPTY
20395: LIST
20396: LIST
20397: PUSH
20398: LD_INT 50
20400: PUSH
20401: EMPTY
20402: LIST
20403: PUSH
20404: LD_INT 3
20406: PUSH
20407: LD_INT 22
20409: PUSH
20410: LD_EXP 21
20414: PUSH
20415: EMPTY
20416: LIST
20417: LIST
20418: PUSH
20419: EMPTY
20420: LIST
20421: LIST
20422: PUSH
20423: EMPTY
20424: LIST
20425: LIST
20426: LIST
20427: PPUSH
20428: CALL_OW 69
20432: PUSH
20433: FOR_IN
20434: IFFALSE 20447
// SurovinyDoSkladu ( i ) ;
20436: LD_VAR 0 1
20440: PPUSH
20441: CALL 5927 0 1
20445: GO 20433
20447: POP
20448: POP
// enable ;
20449: ENABLE
// end ;
20450: PPOPN 1
20452: END
// every 0 0$0.7 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_inarea , RuBaza2 ] , [ f_type , unit_building ] ] ) + 0 >= 2 do
20453: LD_INT 22
20455: PUSH
20456: LD_EXP 21
20460: PUSH
20461: EMPTY
20462: LIST
20463: LIST
20464: PUSH
20465: LD_INT 95
20467: PUSH
20468: LD_INT 38
20470: PUSH
20471: EMPTY
20472: LIST
20473: LIST
20474: PUSH
20475: LD_INT 21
20477: PUSH
20478: LD_INT 3
20480: PUSH
20481: EMPTY
20482: LIST
20483: LIST
20484: PUSH
20485: EMPTY
20486: LIST
20487: LIST
20488: LIST
20489: PPUSH
20490: CALL_OW 69
20494: PUSH
20495: LD_INT 0
20497: PLUS
20498: PUSH
20499: LD_INT 2
20501: GREATEREQUAL
20502: IFFALSE 20515
20504: GO 20506
20506: DISABLE
// begin RusakBazaDole = true ;
20507: LD_ADDR_EXP 42
20511: PUSH
20512: LD_INT 1
20514: ST_TO_ADDR
// end ;
20515: END
// every 0 0$0.7 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_inarea , RuBaza1 ] , [ f_type , unit_building ] ] ) + 0 >= 2 do
20516: LD_INT 22
20518: PUSH
20519: LD_EXP 21
20523: PUSH
20524: EMPTY
20525: LIST
20526: LIST
20527: PUSH
20528: LD_INT 95
20530: PUSH
20531: LD_INT 37
20533: PUSH
20534: EMPTY
20535: LIST
20536: LIST
20537: PUSH
20538: LD_INT 21
20540: PUSH
20541: LD_INT 3
20543: PUSH
20544: EMPTY
20545: LIST
20546: LIST
20547: PUSH
20548: EMPTY
20549: LIST
20550: LIST
20551: LIST
20552: PPUSH
20553: CALL_OW 69
20557: PUSH
20558: LD_INT 0
20560: PLUS
20561: PUSH
20562: LD_INT 2
20564: GREATEREQUAL
20565: IFFALSE 20578
20567: GO 20569
20569: DISABLE
// begin RusakBazaHore = true ;
20570: LD_ADDR_EXP 43
20574: PUSH
20575: LD_INT 1
20577: ST_TO_ADDR
// end ;
20578: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_inarea , ArBazaDruha ] , [ f_type , unit_building ] , [ f_side , you ] ] ) do
20579: LD_INT 95
20581: PUSH
20582: LD_INT 12
20584: PUSH
20585: EMPTY
20586: LIST
20587: LIST
20588: PUSH
20589: LD_INT 21
20591: PUSH
20592: LD_INT 3
20594: PUSH
20595: EMPTY
20596: LIST
20597: LIST
20598: PUSH
20599: LD_INT 22
20601: PUSH
20602: LD_EXP 21
20606: PUSH
20607: EMPTY
20608: LIST
20609: LIST
20610: PUSH
20611: EMPTY
20612: LIST
20613: LIST
20614: LIST
20615: PPUSH
20616: CALL_OW 69
20620: IFFALSE 20633
20622: GO 20624
20624: DISABLE
// begin nasralAraba = true ;
20625: LD_ADDR_EXP 37
20629: PUSH
20630: LD_INT 1
20632: ST_TO_ADDR
// end ;
20633: 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
20634: LD_INT 101
20636: PUSH
20637: LD_EXP 21
20641: PUSH
20642: EMPTY
20643: LIST
20644: LIST
20645: PUSH
20646: LD_INT 2
20648: PUSH
20649: LD_INT 21
20651: PUSH
20652: LD_INT 1
20654: PUSH
20655: EMPTY
20656: LIST
20657: LIST
20658: PUSH
20659: LD_INT 21
20661: PUSH
20662: LD_INT 2
20664: PUSH
20665: EMPTY
20666: LIST
20667: LIST
20668: PUSH
20669: LD_INT 21
20671: PUSH
20672: LD_INT 3
20674: PUSH
20675: EMPTY
20676: LIST
20677: LIST
20678: PUSH
20679: EMPTY
20680: LIST
20681: LIST
20682: LIST
20683: LIST
20684: PUSH
20685: LD_INT 2
20687: PUSH
20688: LD_INT 22
20690: PUSH
20691: LD_EXP 24
20695: PUSH
20696: EMPTY
20697: LIST
20698: LIST
20699: PUSH
20700: LD_INT 22
20702: PUSH
20703: LD_EXP 23
20707: PUSH
20708: EMPTY
20709: LIST
20710: LIST
20711: PUSH
20712: LD_INT 22
20714: PUSH
20715: LD_EXP 22
20719: PUSH
20720: EMPTY
20721: LIST
20722: LIST
20723: PUSH
20724: EMPTY
20725: LIST
20726: LIST
20727: LIST
20728: LIST
20729: PUSH
20730: EMPTY
20731: LIST
20732: LIST
20733: LIST
20734: PPUSH
20735: CALL_OW 69
20739: IFFALSE 20752
20741: GO 20743
20743: DISABLE
// begin videlNepritele = true ;
20744: LD_ADDR_EXP 34
20748: PUSH
20749: LD_INT 1
20751: ST_TO_ADDR
// end ;
20752: END
// every 0 0$2 do var autaAr , autaPurple , autaAmik , i , r ;
20753: GO 20755
20755: DISABLE
20756: LD_INT 0
20758: PPUSH
20759: PPUSH
20760: PPUSH
20761: PPUSH
20762: 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 ] ] ] ] ) ;
20763: LD_ADDR_VAR 0 1
20767: PUSH
20768: LD_INT 22
20770: PUSH
20771: LD_EXP 23
20775: PUSH
20776: EMPTY
20777: LIST
20778: LIST
20779: PUSH
20780: LD_INT 95
20782: PUSH
20783: LD_INT 15
20785: PUSH
20786: EMPTY
20787: LIST
20788: LIST
20789: PUSH
20790: LD_INT 21
20792: PUSH
20793: LD_INT 2
20795: PUSH
20796: EMPTY
20797: LIST
20798: LIST
20799: PUSH
20800: LD_INT 24
20802: PUSH
20803: LD_EXP 49
20807: PUSH
20808: EMPTY
20809: LIST
20810: LIST
20811: PUSH
20812: LD_INT 3
20814: PUSH
20815: LD_INT 2
20817: PUSH
20818: LD_INT 34
20820: PUSH
20821: LD_INT 32
20823: PUSH
20824: EMPTY
20825: LIST
20826: LIST
20827: PUSH
20828: LD_INT 34
20830: PUSH
20831: LD_INT 12
20833: PUSH
20834: EMPTY
20835: LIST
20836: LIST
20837: PUSH
20838: LD_INT 34
20840: PUSH
20841: LD_INT 30
20843: PUSH
20844: EMPTY
20845: LIST
20846: LIST
20847: PUSH
20848: LD_INT 34
20850: PUSH
20851: LD_INT 11
20853: PUSH
20854: EMPTY
20855: LIST
20856: LIST
20857: PUSH
20858: LD_INT 34
20860: PUSH
20861: LD_INT 31
20863: PUSH
20864: EMPTY
20865: LIST
20866: LIST
20867: PUSH
20868: LD_INT 34
20870: PUSH
20871: LD_INT 13
20873: PUSH
20874: EMPTY
20875: LIST
20876: LIST
20877: PUSH
20878: EMPTY
20879: LIST
20880: LIST
20881: LIST
20882: LIST
20883: LIST
20884: LIST
20885: LIST
20886: PUSH
20887: EMPTY
20888: LIST
20889: LIST
20890: PUSH
20891: EMPTY
20892: LIST
20893: LIST
20894: LIST
20895: LIST
20896: LIST
20897: PPUSH
20898: CALL_OW 69
20902: 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 ] ] ] ] ) ;
20903: LD_ADDR_VAR 0 2
20907: PUSH
20908: LD_INT 22
20910: PUSH
20911: LD_EXP 22
20915: PUSH
20916: EMPTY
20917: LIST
20918: LIST
20919: PUSH
20920: LD_INT 95
20922: PUSH
20923: LD_INT 16
20925: PUSH
20926: EMPTY
20927: LIST
20928: LIST
20929: PUSH
20930: LD_INT 21
20932: PUSH
20933: LD_INT 2
20935: PUSH
20936: EMPTY
20937: LIST
20938: LIST
20939: PUSH
20940: LD_INT 24
20942: PUSH
20943: LD_EXP 49
20947: PUSH
20948: EMPTY
20949: LIST
20950: LIST
20951: PUSH
20952: LD_INT 3
20954: PUSH
20955: LD_INT 2
20957: PUSH
20958: LD_INT 34
20960: PUSH
20961: LD_INT 32
20963: PUSH
20964: EMPTY
20965: LIST
20966: LIST
20967: PUSH
20968: LD_INT 34
20970: PUSH
20971: LD_INT 12
20973: PUSH
20974: EMPTY
20975: LIST
20976: LIST
20977: PUSH
20978: LD_INT 34
20980: PUSH
20981: LD_INT 30
20983: PUSH
20984: EMPTY
20985: LIST
20986: LIST
20987: PUSH
20988: LD_INT 34
20990: PUSH
20991: LD_INT 11
20993: PUSH
20994: EMPTY
20995: LIST
20996: LIST
20997: PUSH
20998: LD_INT 34
21000: PUSH
21001: LD_INT 31
21003: PUSH
21004: EMPTY
21005: LIST
21006: LIST
21007: PUSH
21008: LD_INT 34
21010: PUSH
21011: LD_INT 13
21013: PUSH
21014: EMPTY
21015: LIST
21016: LIST
21017: PUSH
21018: EMPTY
21019: LIST
21020: LIST
21021: LIST
21022: LIST
21023: LIST
21024: LIST
21025: LIST
21026: PUSH
21027: EMPTY
21028: LIST
21029: LIST
21030: PUSH
21031: EMPTY
21032: LIST
21033: LIST
21034: LIST
21035: LIST
21036: LIST
21037: PPUSH
21038: CALL_OW 69
21042: 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 ] ] ] ] ) ;
21043: LD_ADDR_VAR 0 3
21047: PUSH
21048: LD_INT 22
21050: PUSH
21051: LD_EXP 24
21055: PUSH
21056: EMPTY
21057: LIST
21058: LIST
21059: PUSH
21060: LD_INT 95
21062: PUSH
21063: LD_INT 17
21065: PUSH
21066: EMPTY
21067: LIST
21068: LIST
21069: PUSH
21070: LD_INT 21
21072: PUSH
21073: LD_INT 2
21075: PUSH
21076: EMPTY
21077: LIST
21078: LIST
21079: PUSH
21080: LD_INT 24
21082: PUSH
21083: LD_EXP 49
21087: PUSH
21088: EMPTY
21089: LIST
21090: LIST
21091: PUSH
21092: LD_INT 3
21094: PUSH
21095: LD_INT 2
21097: PUSH
21098: LD_INT 34
21100: PUSH
21101: LD_INT 32
21103: PUSH
21104: EMPTY
21105: LIST
21106: LIST
21107: PUSH
21108: LD_INT 34
21110: PUSH
21111: LD_INT 12
21113: PUSH
21114: EMPTY
21115: LIST
21116: LIST
21117: PUSH
21118: LD_INT 34
21120: PUSH
21121: LD_INT 30
21123: PUSH
21124: EMPTY
21125: LIST
21126: LIST
21127: PUSH
21128: LD_INT 34
21130: PUSH
21131: LD_INT 11
21133: PUSH
21134: EMPTY
21135: LIST
21136: LIST
21137: PUSH
21138: LD_INT 34
21140: PUSH
21141: LD_INT 31
21143: PUSH
21144: EMPTY
21145: LIST
21146: LIST
21147: PUSH
21148: LD_INT 34
21150: PUSH
21151: LD_INT 13
21153: PUSH
21154: EMPTY
21155: LIST
21156: LIST
21157: PUSH
21158: EMPTY
21159: LIST
21160: LIST
21161: LIST
21162: LIST
21163: LIST
21164: LIST
21165: LIST
21166: PUSH
21167: EMPTY
21168: LIST
21169: LIST
21170: PUSH
21171: EMPTY
21172: LIST
21173: LIST
21174: LIST
21175: LIST
21176: LIST
21177: PPUSH
21178: CALL_OW 69
21182: ST_TO_ADDR
// if autaAr + 0 >= dif_ar_attack_size then
21183: LD_VAR 0 1
21187: PUSH
21188: LD_INT 0
21190: PLUS
21191: PUSH
21192: LD_EXP 67
21196: GREATEREQUAL
21197: IFFALSE 21455
// begin for i in autaAr do
21199: LD_ADDR_VAR 0 4
21203: PUSH
21204: LD_VAR 0 1
21208: PUSH
21209: FOR_IN
21210: IFFALSE 21243
// if not i in arab_attack_list then
21212: LD_VAR 0 4
21216: PUSH
21217: LD_EXP 28
21221: IN
21222: NOT
21223: IFFALSE 21241
// arab_attack_list = arab_attack_list ^ i ;
21225: LD_ADDR_EXP 28
21229: PUSH
21230: LD_EXP 28
21234: PUSH
21235: LD_VAR 0 4
21239: ADD
21240: ST_TO_ADDR
21241: GO 21209
21243: POP
21244: POP
// begin if nasralAraba and not AlianceSAraby then
21245: LD_EXP 37
21249: PUSH
21250: CALL 2247 0 0
21254: NOT
21255: AND
21256: IFFALSE 21297
// begin ComAgressiveMove ( arab_attack_list , 88 , 130 ) ;
21258: LD_EXP 28
21262: PPUSH
21263: LD_INT 88
21265: PPUSH
21266: LD_INT 130
21268: PPUSH
21269: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21273: LD_INT 42
21275: PPUSH
21276: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 88 , 130 ) ;
21280: LD_EXP 28
21284: PPUSH
21285: LD_INT 88
21287: PPUSH
21288: LD_INT 130
21290: PPUSH
21291: CALL_OW 114
// end else
21295: GO 21455
// begin r = Rand ( 1 , 2 ) ;
21297: LD_ADDR_VAR 0 5
21301: PUSH
21302: LD_INT 1
21304: PPUSH
21305: LD_INT 2
21307: PPUSH
21308: CALL_OW 12
21312: ST_TO_ADDR
// if r = 1 and FilterAllUnits ( [ [ f_side , amik ] , [ f_ok ] ] ) then
21313: LD_VAR 0 5
21317: PUSH
21318: LD_INT 1
21320: EQUAL
21321: PUSH
21322: LD_INT 22
21324: PUSH
21325: LD_EXP 24
21329: PUSH
21330: EMPTY
21331: LIST
21332: LIST
21333: PUSH
21334: LD_INT 50
21336: PUSH
21337: EMPTY
21338: LIST
21339: PUSH
21340: EMPTY
21341: LIST
21342: LIST
21343: PPUSH
21344: CALL_OW 69
21348: AND
21349: IFFALSE 21390
// begin ComAgressiveMove ( arab_attack_list , 219 , 77 ) ;
21351: LD_EXP 28
21355: PPUSH
21356: LD_INT 219
21358: PPUSH
21359: LD_INT 77
21361: PPUSH
21362: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21366: LD_INT 42
21368: PPUSH
21369: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 219 , 77 ) ;
21373: LD_EXP 28
21377: PPUSH
21378: LD_INT 219
21380: PPUSH
21381: LD_INT 77
21383: PPUSH
21384: CALL_OW 114
// end else
21388: GO 21455
// if FilterAllUnits ( [ [ f_side , purple ] , [ f_ok ] ] ) then
21390: LD_INT 22
21392: PUSH
21393: LD_EXP 22
21397: PUSH
21398: EMPTY
21399: LIST
21400: LIST
21401: PUSH
21402: LD_INT 50
21404: PUSH
21405: EMPTY
21406: LIST
21407: PUSH
21408: EMPTY
21409: LIST
21410: LIST
21411: PPUSH
21412: CALL_OW 69
21416: IFFALSE 21455
// begin ComAgressiveMove ( arab_attack_list , 121 , 12 ) ;
21418: LD_EXP 28
21422: PPUSH
21423: LD_INT 121
21425: PPUSH
21426: LD_INT 12
21428: PPUSH
21429: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21433: LD_INT 42
21435: PPUSH
21436: CALL_OW 67
// ComAgressiveMove ( arab_attack_list , 121 , 12 ) ;
21440: LD_EXP 28
21444: PPUSH
21445: LD_INT 121
21447: PPUSH
21448: LD_INT 12
21450: PPUSH
21451: CALL_OW 114
// end ; end ; end ; end ; if autaPurple + 0 >= dif_purple_attack_size then
21455: LD_VAR 0 2
21459: PUSH
21460: LD_INT 0
21462: PLUS
21463: PUSH
21464: LD_EXP 68
21468: GREATEREQUAL
21469: IFFALSE 21704
// begin for i in autaPurple do
21471: LD_ADDR_VAR 0 4
21475: PUSH
21476: LD_VAR 0 2
21480: PUSH
21481: FOR_IN
21482: IFFALSE 21515
// if not i in purple_attack_list then
21484: LD_VAR 0 4
21488: PUSH
21489: LD_EXP 29
21493: IN
21494: NOT
21495: IFFALSE 21513
// purple_attack_list = purple_attack_list ^ i ;
21497: LD_ADDR_EXP 29
21501: PUSH
21502: LD_EXP 29
21506: PUSH
21507: LD_VAR 0 4
21511: ADD
21512: ST_TO_ADDR
21513: GO 21481
21515: POP
21516: POP
// begin if RusakBazaHore then
21517: LD_EXP 43
21521: IFFALSE 21562
// begin ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21523: LD_EXP 29
21527: PPUSH
21528: LD_INT 72
21530: PPUSH
21531: LD_INT 35
21533: PPUSH
21534: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21538: LD_INT 42
21540: PPUSH
21541: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21545: LD_EXP 29
21549: PPUSH
21550: LD_INT 72
21552: PPUSH
21553: LD_INT 35
21555: PPUSH
21556: CALL_OW 114
// end else
21560: GO 21704
// if RusakBazaDole then
21562: LD_EXP 42
21566: IFFALSE 21607
// begin ComAgressiveMove ( purple_attack_list , 171 , 96 ) ;
21568: LD_EXP 29
21572: PPUSH
21573: LD_INT 171
21575: PPUSH
21576: LD_INT 96
21578: PPUSH
21579: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21583: LD_INT 42
21585: PPUSH
21586: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 171 , 96 ) ;
21590: LD_EXP 29
21594: PPUSH
21595: LD_INT 171
21597: PPUSH
21598: LD_INT 96
21600: PPUSH
21601: CALL_OW 114
// end else
21605: GO 21704
// begin ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21607: LD_EXP 29
21611: PPUSH
21612: LD_INT 72
21614: PPUSH
21615: LD_INT 35
21617: PPUSH
21618: CALL_OW 114
// AddComAgressiveMove ( purple_attack_list , 42 , 53 ) ;
21622: LD_EXP 29
21626: PPUSH
21627: LD_INT 42
21629: PPUSH
21630: LD_INT 53
21632: PPUSH
21633: CALL_OW 174
// AddComAgressiveMove ( purple_attack_list , 90 , 133 ) ;
21637: LD_EXP 29
21641: PPUSH
21642: LD_INT 90
21644: PPUSH
21645: LD_INT 133
21647: PPUSH
21648: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
21652: LD_INT 42
21654: PPUSH
21655: CALL_OW 67
// ComAgressiveMove ( purple_attack_list , 72 , 35 ) ;
21659: LD_EXP 29
21663: PPUSH
21664: LD_INT 72
21666: PPUSH
21667: LD_INT 35
21669: PPUSH
21670: CALL_OW 114
// AddComAgressiveMove ( purple_attack_list , 42 , 53 ) ;
21674: LD_EXP 29
21678: PPUSH
21679: LD_INT 42
21681: PPUSH
21682: LD_INT 53
21684: PPUSH
21685: CALL_OW 174
// AddComAgressiveMove ( purple_attack_list , 90 , 133 ) ;
21689: LD_EXP 29
21693: PPUSH
21694: LD_INT 90
21696: PPUSH
21697: LD_INT 133
21699: PPUSH
21700: CALL_OW 174
// end ; end end ; if autaAmik + 0 >= dif_amik_attack_size then
21704: LD_VAR 0 3
21708: PUSH
21709: LD_INT 0
21711: PLUS
21712: PUSH
21713: LD_EXP 69
21717: GREATEREQUAL
21718: IFFALSE 21973
// begin for i in autaAmik do
21720: LD_ADDR_VAR 0 4
21724: PUSH
21725: LD_VAR 0 3
21729: PUSH
21730: FOR_IN
21731: IFFALSE 21764
// if not i in amik_attack_list then
21733: LD_VAR 0 4
21737: PUSH
21738: LD_EXP 30
21742: IN
21743: NOT
21744: IFFALSE 21762
// amik_attack_list = amik_attack_list ^ i ;
21746: LD_ADDR_EXP 30
21750: PUSH
21751: LD_EXP 30
21755: PUSH
21756: LD_VAR 0 4
21760: ADD
21761: ST_TO_ADDR
21762: GO 21730
21764: POP
21765: POP
// if Rand ( 1 , 3 ) < 3 or tick < 16 16$00 then
21766: LD_INT 1
21768: PPUSH
21769: LD_INT 3
21771: PPUSH
21772: CALL_OW 12
21776: PUSH
21777: LD_INT 3
21779: LESS
21780: PUSH
21781: LD_OWVAR 1
21785: PUSH
21786: LD_INT 33600
21788: LESS
21789: OR
21790: IFFALSE 21936
// begin if RusakBazaHore then
21792: LD_EXP 43
21796: IFFALSE 21837
// begin ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21798: LD_EXP 30
21802: PPUSH
21803: LD_INT 72
21805: PPUSH
21806: LD_INT 35
21808: PPUSH
21809: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21813: LD_INT 42
21815: PPUSH
21816: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21820: LD_EXP 30
21824: PPUSH
21825: LD_INT 72
21827: PPUSH
21828: LD_INT 35
21830: PPUSH
21831: CALL_OW 114
// end else
21835: GO 21934
// begin ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21837: LD_EXP 30
21841: PPUSH
21842: LD_INT 72
21844: PPUSH
21845: LD_INT 35
21847: PPUSH
21848: CALL_OW 114
// AddComAgressiveMove ( amik_attack_list , 42 , 53 ) ;
21852: LD_EXP 30
21856: PPUSH
21857: LD_INT 42
21859: PPUSH
21860: LD_INT 53
21862: PPUSH
21863: CALL_OW 174
// AddComAgressiveMove ( amik_attack_list , 90 , 133 ) ;
21867: LD_EXP 30
21871: PPUSH
21872: LD_INT 90
21874: PPUSH
21875: LD_INT 133
21877: PPUSH
21878: CALL_OW 174
// Wait ( 0 0$1.2 ) ;
21882: LD_INT 42
21884: PPUSH
21885: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 72 , 35 ) ;
21889: LD_EXP 30
21893: PPUSH
21894: LD_INT 72
21896: PPUSH
21897: LD_INT 35
21899: PPUSH
21900: CALL_OW 114
// AddComAgressiveMove ( amik_attack_list , 42 , 53 ) ;
21904: LD_EXP 30
21908: PPUSH
21909: LD_INT 42
21911: PPUSH
21912: LD_INT 53
21914: PPUSH
21915: CALL_OW 174
// AddComAgressiveMove ( amik_attack_list , 90 , 133 ) ;
21919: LD_EXP 30
21923: PPUSH
21924: LD_INT 90
21926: PPUSH
21927: LD_INT 133
21929: PPUSH
21930: CALL_OW 174
// end ; end else
21934: GO 21973
// begin ComAgressiveMove ( amik_attack_list , 168 , 97 ) ;
21936: LD_EXP 30
21940: PPUSH
21941: LD_INT 168
21943: PPUSH
21944: LD_INT 97
21946: PPUSH
21947: CALL_OW 114
// Wait ( 0 0$1.2 ) ;
21951: LD_INT 42
21953: PPUSH
21954: CALL_OW 67
// ComAgressiveMove ( amik_attack_list , 168 , 97 ) ;
21958: LD_EXP 30
21962: PPUSH
21963: LD_INT 168
21965: PPUSH
21966: LD_INT 97
21968: PPUSH
21969: CALL_OW 114
// end ; end ; enable ;
21973: ENABLE
// end ;
21974: PPOPN 5
21976: END
// every 0 0$0.5 do var veh , list ;
21977: GO 21979
21979: DISABLE
21980: LD_INT 0
21982: PPUSH
21983: PPUSH
// begin for list in [ arab_attack_list , amik_attack_list , purple_attack_list ] do
21984: LD_ADDR_VAR 0 2
21988: PUSH
21989: LD_EXP 28
21993: PUSH
21994: LD_EXP 30
21998: PUSH
21999: LD_EXP 29
22003: PUSH
22004: EMPTY
22005: LIST
22006: LIST
22007: LIST
22008: PUSH
22009: FOR_IN
22010: IFFALSE 22073
// begin if not list then
22012: LD_VAR 0 2
22016: NOT
22017: IFFALSE 22021
// continue ;
22019: GO 22009
// for veh in list do
22021: LD_ADDR_VAR 0 1
22025: PUSH
22026: LD_VAR 0 2
22030: PUSH
22031: FOR_IN
22032: IFFALSE 22069
// if GetSide ( veh ) = you then
22034: LD_VAR 0 1
22038: PPUSH
22039: CALL_OW 255
22043: PUSH
22044: LD_EXP 21
22048: EQUAL
22049: IFFALSE 22067
// list = list diff veh ;
22051: LD_ADDR_VAR 0 2
22055: PUSH
22056: LD_VAR 0 2
22060: PUSH
22061: LD_VAR 0 1
22065: DIFF
22066: ST_TO_ADDR
22067: GO 22031
22069: POP
22070: POP
// end ;
22071: GO 22009
22073: POP
22074: POP
// enable ;
22075: ENABLE
// end ;
22076: PPOPN 2
22078: END
// every 0 0$1 do var targety , un , x , y ;
22079: GO 22081
22081: DISABLE
22082: LD_INT 0
22084: PPUSH
22085: PPUSH
22086: PPUSH
22087: PPUSH
// begin if nasralAraba and not AlianceSAraby then
22088: LD_EXP 37
22092: PUSH
22093: CALL 2247 0 0
22097: NOT
22098: AND
22099: IFFALSE 22168
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , you ] , [ f_side , amik ] , [ f_side , purple ] ] ] ) else
22101: LD_ADDR_VAR 0 1
22105: PUSH
22106: LD_INT 50
22108: PUSH
22109: EMPTY
22110: LIST
22111: PUSH
22112: LD_INT 2
22114: PUSH
22115: LD_INT 22
22117: PUSH
22118: LD_EXP 21
22122: PUSH
22123: EMPTY
22124: LIST
22125: LIST
22126: PUSH
22127: LD_INT 22
22129: PUSH
22130: LD_EXP 24
22134: PUSH
22135: EMPTY
22136: LIST
22137: LIST
22138: PUSH
22139: LD_INT 22
22141: PUSH
22142: LD_EXP 22
22146: PUSH
22147: EMPTY
22148: LIST
22149: LIST
22150: PUSH
22151: EMPTY
22152: LIST
22153: LIST
22154: LIST
22155: LIST
22156: PUSH
22157: EMPTY
22158: LIST
22159: LIST
22160: PPUSH
22161: CALL_OW 69
22165: ST_TO_ADDR
22166: GO 22220
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , amik ] , [ f_side , purple ] ] ] ) ;
22168: LD_ADDR_VAR 0 1
22172: PUSH
22173: LD_INT 50
22175: PUSH
22176: EMPTY
22177: LIST
22178: PUSH
22179: LD_INT 2
22181: PUSH
22182: LD_INT 22
22184: PUSH
22185: LD_EXP 24
22189: PUSH
22190: EMPTY
22191: LIST
22192: LIST
22193: PUSH
22194: LD_INT 22
22196: PUSH
22197: LD_EXP 22
22201: PUSH
22202: EMPTY
22203: LIST
22204: LIST
22205: PUSH
22206: EMPTY
22207: LIST
22208: LIST
22209: LIST
22210: PUSH
22211: EMPTY
22212: LIST
22213: LIST
22214: PPUSH
22215: CALL_OW 69
22219: ST_TO_ADDR
// if not targety then
22220: LD_VAR 0 1
22224: NOT
22225: IFFALSE 22229
// else
22227: GO 22670
// begin for un in arab_attack_list do
22229: LD_ADDR_VAR 0 2
22233: PUSH
22234: LD_EXP 28
22238: PUSH
22239: FOR_IN
22240: IFFALSE 22668
// begin if not IsOK ( un ) then
22242: LD_VAR 0 2
22246: PPUSH
22247: CALL_OW 302
22251: NOT
22252: IFFALSE 22256
// continue ;
22254: GO 22239
// if HasTask ( un ) and GetLives ( un ) = 1000 then
22256: LD_VAR 0 2
22260: PPUSH
22261: CALL_OW 314
22265: PUSH
22266: LD_VAR 0 2
22270: PPUSH
22271: CALL_OW 256
22275: PUSH
22276: LD_INT 1000
22278: EQUAL
22279: AND
22280: IFFALSE 22307
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
22282: LD_VAR 0 2
22286: PPUSH
22287: CALL_OW 437
22291: PUSH
22292: LD_INT 1
22294: ARRAY
22295: PUSH
22296: LD_INT 1
22298: ARRAY
22299: PUSH
22300: LD_STRING a
22302: EQUAL
22303: IFFALSE 22307
// continue ;
22305: GO 22239
// end ; if GetWeapon ( un ) = ar_selfpropelled_bomb then
22307: LD_VAR 0 2
22311: PPUSH
22312: CALL_OW 264
22316: PUSH
22317: LD_INT 29
22319: EQUAL
22320: IFFALSE 22517
// begin if GetDistUnits ( un , NearestUnitToUnit2 ( targety , un ) ) < 15 then
22322: LD_VAR 0 2
22326: PPUSH
22327: LD_VAR 0 1
22331: PPUSH
22332: LD_VAR 0 2
22336: PPUSH
22337: CALL 5575 0 2
22341: PPUSH
22342: CALL_OW 296
22346: PUSH
22347: LD_INT 15
22349: LESS
22350: IFFALSE 22491
// begin if See2 ( arab , NearestUnitToUnit2 ( targety , un ) ) then
22352: LD_EXP 23
22356: PPUSH
22357: LD_VAR 0 1
22361: PPUSH
22362: LD_VAR 0 2
22366: PPUSH
22367: CALL 5575 0 2
22371: PPUSH
22372: CALL 5716 0 2
22376: IFFALSE 22404
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22378: LD_VAR 0 2
22382: PPUSH
22383: LD_VAR 0 1
22387: PPUSH
22388: LD_VAR 0 2
22392: PPUSH
22393: CALL 5575 0 2
22397: PPUSH
22398: CALL_OW 115
22402: GO 22489
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22404: LD_ADDR_VAR 0 3
22408: PUSH
22409: LD_VAR 0 1
22413: PPUSH
22414: LD_VAR 0 2
22418: PPUSH
22419: CALL 5575 0 2
22423: PPUSH
22424: CALL_OW 250
22428: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22429: LD_ADDR_VAR 0 4
22433: PUSH
22434: LD_VAR 0 1
22438: PPUSH
22439: LD_VAR 0 2
22443: PPUSH
22444: CALL 5575 0 2
22448: PPUSH
22449: CALL_OW 251
22453: ST_TO_ADDR
// if ValidHex ( x , y ) then
22454: LD_VAR 0 3
22458: PPUSH
22459: LD_VAR 0 4
22463: PPUSH
22464: CALL_OW 488
22468: IFFALSE 22489
// ComAgressiveMove ( un , x , y ) ;
22470: LD_VAR 0 2
22474: PPUSH
22475: LD_VAR 0 3
22479: PPUSH
22480: LD_VAR 0 4
22484: PPUSH
22485: CALL_OW 114
// end ; end else
22489: GO 22515
// if not HasTask ( un ) then
22491: LD_VAR 0 2
22495: PPUSH
22496: CALL_OW 314
22500: NOT
22501: IFFALSE 22515
// ComMoveToArea ( un , ArBaza ) ;
22503: LD_VAR 0 2
22507: PPUSH
22508: LD_INT 15
22510: PPUSH
22511: CALL_OW 113
// end else
22515: GO 22666
// if not HasTask ( un ) then
22517: LD_VAR 0 2
22521: PPUSH
22522: CALL_OW 314
22526: NOT
22527: IFFALSE 22666
// begin if See2 ( arab , NearestUnitToUnit2 ( targety , un ) ) then
22529: LD_EXP 23
22533: PPUSH
22534: LD_VAR 0 1
22538: PPUSH
22539: LD_VAR 0 2
22543: PPUSH
22544: CALL 5575 0 2
22548: PPUSH
22549: CALL 5716 0 2
22553: IFFALSE 22581
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22555: LD_VAR 0 2
22559: PPUSH
22560: LD_VAR 0 1
22564: PPUSH
22565: LD_VAR 0 2
22569: PPUSH
22570: CALL 5575 0 2
22574: PPUSH
22575: CALL_OW 115
22579: GO 22666
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22581: LD_ADDR_VAR 0 3
22585: PUSH
22586: LD_VAR 0 1
22590: PPUSH
22591: LD_VAR 0 2
22595: PPUSH
22596: CALL 5575 0 2
22600: PPUSH
22601: CALL_OW 250
22605: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22606: LD_ADDR_VAR 0 4
22610: PUSH
22611: LD_VAR 0 1
22615: PPUSH
22616: LD_VAR 0 2
22620: PPUSH
22621: CALL 5575 0 2
22625: PPUSH
22626: CALL_OW 251
22630: ST_TO_ADDR
// if ValidHex ( x , y ) then
22631: LD_VAR 0 3
22635: PPUSH
22636: LD_VAR 0 4
22640: PPUSH
22641: CALL_OW 488
22645: IFFALSE 22666
// ComAgressiveMove ( un , x , y ) ;
22647: LD_VAR 0 2
22651: PPUSH
22652: LD_VAR 0 3
22656: PPUSH
22657: LD_VAR 0 4
22661: PPUSH
22662: CALL_OW 114
// end ; end ; end ;
22666: GO 22239
22668: POP
22669: POP
// end ; enable ;
22670: ENABLE
// end ;
22671: PPOPN 4
22673: END
// every 0 0$1 do var targety , un , x , y ;
22674: GO 22676
22676: DISABLE
22677: LD_INT 0
22679: PPUSH
22680: PPUSH
22681: PPUSH
22682: PPUSH
// begin targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , you ] , [ f_side , arab ] ] ] ) ;
22683: LD_ADDR_VAR 0 1
22687: PUSH
22688: LD_INT 50
22690: PUSH
22691: EMPTY
22692: LIST
22693: PUSH
22694: LD_INT 2
22696: PUSH
22697: LD_INT 22
22699: PUSH
22700: LD_EXP 21
22704: PUSH
22705: EMPTY
22706: LIST
22707: LIST
22708: PUSH
22709: LD_INT 22
22711: PUSH
22712: LD_EXP 23
22716: PUSH
22717: EMPTY
22718: LIST
22719: LIST
22720: PUSH
22721: EMPTY
22722: LIST
22723: LIST
22724: LIST
22725: PUSH
22726: EMPTY
22727: LIST
22728: LIST
22729: PPUSH
22730: CALL_OW 69
22734: ST_TO_ADDR
// if not targety then
22735: LD_VAR 0 1
22739: NOT
22740: IFFALSE 22744
// else
22742: GO 23008
// begin for un in amik_attack_list do
22744: LD_ADDR_VAR 0 2
22748: PUSH
22749: LD_EXP 30
22753: PUSH
22754: FOR_IN
22755: IFFALSE 23006
// begin if not IsOK ( un ) then
22757: LD_VAR 0 2
22761: PPUSH
22762: CALL_OW 302
22766: NOT
22767: IFFALSE 22771
// continue ;
22769: GO 22754
// if GetSide ( un ) <> amik then
22771: LD_VAR 0 2
22775: PPUSH
22776: CALL_OW 255
22780: PUSH
22781: LD_EXP 24
22785: NONEQUAL
22786: IFFALSE 22804
// amik_attack_list = amik_attack_list diff un ;
22788: LD_ADDR_EXP 30
22792: PUSH
22793: LD_EXP 30
22797: PUSH
22798: LD_VAR 0 2
22802: DIFF
22803: ST_TO_ADDR
// if HasTask ( un ) and GetLives ( un ) = 1000 then
22804: LD_VAR 0 2
22808: PPUSH
22809: CALL_OW 314
22813: PUSH
22814: LD_VAR 0 2
22818: PPUSH
22819: CALL_OW 256
22823: PUSH
22824: LD_INT 1000
22826: EQUAL
22827: AND
22828: IFFALSE 22855
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
22830: LD_VAR 0 2
22834: PPUSH
22835: CALL_OW 437
22839: PUSH
22840: LD_INT 1
22842: ARRAY
22843: PUSH
22844: LD_INT 1
22846: ARRAY
22847: PUSH
22848: LD_STRING a
22850: EQUAL
22851: IFFALSE 22855
// continue ;
22853: GO 22754
// end ; if not HasTask ( un ) then
22855: LD_VAR 0 2
22859: PPUSH
22860: CALL_OW 314
22864: NOT
22865: IFFALSE 23004
// begin if See2 ( amik , NearestUnitToUnit2 ( targety , un ) ) then
22867: LD_EXP 24
22871: PPUSH
22872: LD_VAR 0 1
22876: PPUSH
22877: LD_VAR 0 2
22881: PPUSH
22882: CALL 5575 0 2
22886: PPUSH
22887: CALL 5716 0 2
22891: IFFALSE 22919
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
22893: LD_VAR 0 2
22897: PPUSH
22898: LD_VAR 0 1
22902: PPUSH
22903: LD_VAR 0 2
22907: PPUSH
22908: CALL 5575 0 2
22912: PPUSH
22913: CALL_OW 115
22917: GO 23004
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
22919: LD_ADDR_VAR 0 3
22923: PUSH
22924: LD_VAR 0 1
22928: PPUSH
22929: LD_VAR 0 2
22933: PPUSH
22934: CALL 5575 0 2
22938: PPUSH
22939: CALL_OW 250
22943: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
22944: LD_ADDR_VAR 0 4
22948: PUSH
22949: LD_VAR 0 1
22953: PPUSH
22954: LD_VAR 0 2
22958: PPUSH
22959: CALL 5575 0 2
22963: PPUSH
22964: CALL_OW 251
22968: ST_TO_ADDR
// if ValidHex ( x , y ) then
22969: LD_VAR 0 3
22973: PPUSH
22974: LD_VAR 0 4
22978: PPUSH
22979: CALL_OW 488
22983: IFFALSE 23004
// ComAgressiveMove ( un , x , y ) ;
22985: LD_VAR 0 2
22989: PPUSH
22990: LD_VAR 0 3
22994: PPUSH
22995: LD_VAR 0 4
22999: PPUSH
23000: CALL_OW 114
// end ; end ; end ;
23004: GO 22754
23006: POP
23007: POP
// end ; enable ;
23008: ENABLE
// end ;
23009: PPOPN 4
23011: END
// every 0 0$1 do var targety , un , x , y ;
23012: GO 23014
23014: DISABLE
23015: LD_INT 0
23017: PPUSH
23018: PPUSH
23019: PPUSH
23020: PPUSH
// begin if not nasralAraba then
23021: LD_EXP 37
23025: NOT
23026: IFFALSE 23062
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , you ] ] ) else
23028: LD_ADDR_VAR 0 1
23032: PUSH
23033: LD_INT 50
23035: PUSH
23036: EMPTY
23037: LIST
23038: PUSH
23039: LD_INT 22
23041: PUSH
23042: LD_EXP 21
23046: PUSH
23047: EMPTY
23048: LIST
23049: LIST
23050: PUSH
23051: EMPTY
23052: LIST
23053: LIST
23054: PPUSH
23055: CALL_OW 69
23059: ST_TO_ADDR
23060: GO 23155
// if not AlianceSAraby then
23062: CALL 2247 0 0
23066: NOT
23067: IFFALSE 23103
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_side , arab ] ] ) else
23069: LD_ADDR_VAR 0 1
23073: PUSH
23074: LD_INT 50
23076: PUSH
23077: EMPTY
23078: LIST
23079: PUSH
23080: LD_INT 22
23082: PUSH
23083: LD_EXP 23
23087: PUSH
23088: EMPTY
23089: LIST
23090: LIST
23091: PUSH
23092: EMPTY
23093: LIST
23094: LIST
23095: PPUSH
23096: CALL_OW 69
23100: ST_TO_ADDR
23101: GO 23155
// targety = FilterAllUnits ( [ [ f_ok ] , [ f_or , [ f_side , arab ] , [ f_side , you ] ] ] ) ;
23103: LD_ADDR_VAR 0 1
23107: PUSH
23108: LD_INT 50
23110: PUSH
23111: EMPTY
23112: LIST
23113: PUSH
23114: LD_INT 2
23116: PUSH
23117: LD_INT 22
23119: PUSH
23120: LD_EXP 23
23124: PUSH
23125: EMPTY
23126: LIST
23127: LIST
23128: PUSH
23129: LD_INT 22
23131: PUSH
23132: LD_EXP 21
23136: PUSH
23137: EMPTY
23138: LIST
23139: LIST
23140: PUSH
23141: EMPTY
23142: LIST
23143: LIST
23144: LIST
23145: PUSH
23146: EMPTY
23147: LIST
23148: LIST
23149: PPUSH
23150: CALL_OW 69
23154: ST_TO_ADDR
// if not targety then
23155: LD_VAR 0 1
23159: NOT
23160: IFFALSE 23164
// else
23162: GO 23480
// begin for un in purple_attack_list do
23164: LD_ADDR_VAR 0 2
23168: PUSH
23169: LD_EXP 29
23173: PUSH
23174: FOR_IN
23175: IFFALSE 23478
// begin if not IsOK ( un ) then
23177: LD_VAR 0 2
23181: PPUSH
23182: CALL_OW 302
23186: NOT
23187: IFFALSE 23191
// continue ;
23189: GO 23174
// if HasTask ( un ) and GetLives ( un ) = 1000 then
23191: LD_VAR 0 2
23195: PPUSH
23196: CALL_OW 314
23200: PUSH
23201: LD_VAR 0 2
23205: PPUSH
23206: CALL_OW 256
23210: PUSH
23211: LD_INT 1000
23213: EQUAL
23214: AND
23215: IFFALSE 23242
// begin if GetTaskList ( un ) [ 1 ] [ 1 ] = a then
23217: LD_VAR 0 2
23221: PPUSH
23222: CALL_OW 437
23226: PUSH
23227: LD_INT 1
23229: ARRAY
23230: PUSH
23231: LD_INT 1
23233: ARRAY
23234: PUSH
23235: LD_STRING a
23237: EQUAL
23238: IFFALSE 23242
// continue ;
23240: GO 23174
// end ; if GetFuel ( un ) < 20 and IsPlaced ( purple_ware ) then
23242: LD_VAR 0 2
23246: PPUSH
23247: CALL_OW 261
23251: PUSH
23252: LD_INT 20
23254: LESS
23255: PUSH
23256: LD_INT 105
23258: PPUSH
23259: CALL_OW 305
23263: AND
23264: IFFALSE 23292
// begin ComMoveUnit ( un , purple_ware ) ;
23266: LD_VAR 0 2
23270: PPUSH
23271: LD_INT 105
23273: PPUSH
23274: CALL_OW 112
// AddComRefuel ( un , purple_ware ) ;
23278: LD_VAR 0 2
23282: PPUSH
23283: LD_INT 105
23285: PPUSH
23286: CALL_OW 210
// end else
23290: GO 23476
// if GetLives ( un ) < hranice_utok_repair_utek then
23292: LD_VAR 0 2
23296: PPUSH
23297: CALL_OW 256
23301: PUSH
23302: LD_EXP 56
23306: LESS
23307: IFFALSE 23327
// purple_attack_list = purple_attack_list diff un else
23309: LD_ADDR_EXP 29
23313: PUSH
23314: LD_EXP 29
23318: PUSH
23319: LD_VAR 0 2
23323: DIFF
23324: ST_TO_ADDR
23325: GO 23476
// if not HasTask ( un ) then
23327: LD_VAR 0 2
23331: PPUSH
23332: CALL_OW 314
23336: NOT
23337: IFFALSE 23476
// begin if See2 ( purple , NearestUnitToUnit2 ( targety , un ) ) then
23339: LD_EXP 22
23343: PPUSH
23344: LD_VAR 0 1
23348: PPUSH
23349: LD_VAR 0 2
23353: PPUSH
23354: CALL 5575 0 2
23358: PPUSH
23359: CALL 5716 0 2
23363: IFFALSE 23391
// ComAttackUnit ( un , NearestUnitToUnit2 ( targety , un ) ) else
23365: LD_VAR 0 2
23369: PPUSH
23370: LD_VAR 0 1
23374: PPUSH
23375: LD_VAR 0 2
23379: PPUSH
23380: CALL 5575 0 2
23384: PPUSH
23385: CALL_OW 115
23389: GO 23476
// begin x = GetX ( NearestUnitToUnit2 ( targety , un ) ) ;
23391: LD_ADDR_VAR 0 3
23395: PUSH
23396: LD_VAR 0 1
23400: PPUSH
23401: LD_VAR 0 2
23405: PPUSH
23406: CALL 5575 0 2
23410: PPUSH
23411: CALL_OW 250
23415: ST_TO_ADDR
// y = GetY ( NearestUnitToUnit2 ( targety , un ) ) ;
23416: LD_ADDR_VAR 0 4
23420: PUSH
23421: LD_VAR 0 1
23425: PPUSH
23426: LD_VAR 0 2
23430: PPUSH
23431: CALL 5575 0 2
23435: PPUSH
23436: CALL_OW 251
23440: ST_TO_ADDR
// if ValidHex ( x , y ) then
23441: LD_VAR 0 3
23445: PPUSH
23446: LD_VAR 0 4
23450: PPUSH
23451: CALL_OW 488
23455: IFFALSE 23476
// ComAgressiveMove ( un , x , y ) ;
23457: LD_VAR 0 2
23461: PPUSH
23462: LD_VAR 0 3
23466: PPUSH
23467: LD_VAR 0 4
23471: PPUSH
23472: CALL_OW 114
// end ; end ; end ;
23476: GO 23174
23478: POP
23479: POP
// end ; enable ;
23480: ENABLE
// end ;
23481: PPOPN 4
23483: END
// every 0 0$10 do var i , tov ;
23484: GO 23486
23486: DISABLE
23487: LD_INT 0
23489: PPUSH
23490: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_ar_attack_size + 3 then
23491: LD_EXP 33
23495: NOT
23496: PUSH
23497: LD_INT 52
23499: PUSH
23500: EMPTY
23501: LIST
23502: PUSH
23503: LD_INT 22
23505: PUSH
23506: LD_EXP 23
23510: PUSH
23511: EMPTY
23512: LIST
23513: LIST
23514: PUSH
23515: LD_INT 21
23517: PUSH
23518: LD_INT 2
23520: PUSH
23521: EMPTY
23522: LIST
23523: LIST
23524: PUSH
23525: EMPTY
23526: LIST
23527: LIST
23528: LIST
23529: PPUSH
23530: CALL_OW 69
23534: PUSH
23535: LD_INT 0
23537: PLUS
23538: PUSH
23539: LD_EXP 67
23543: PUSH
23544: LD_INT 3
23546: PLUS
23547: LESS
23548: AND
23549: IFFALSE 23553
// else
23551: GO 23681
// begin Wait ( dif_arab_vyroba_utok_wait_start ) ;
23553: LD_EXP 76
23557: PPUSH
23558: CALL_OW 67
// if dif_arab_vyroba_utok_wait_start < dif_arab_vyroba_utok_wait then
23562: LD_EXP 76
23566: PUSH
23567: LD_EXP 70
23571: LESS
23572: IFFALSE 23594
// dif_arab_vyroba_utok_wait_start = dif_arab_vyroba_utok_wait_start + dif_vyroba_tick_inkrement * 2 ;
23574: LD_ADDR_EXP 76
23578: PUSH
23579: LD_EXP 76
23583: PUSH
23584: LD_EXP 79
23588: PUSH
23589: LD_INT 2
23591: MUL
23592: PLUS
23593: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , arab ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23594: LD_ADDR_VAR 0 2
23598: PUSH
23599: LD_INT 22
23601: PUSH
23602: LD_EXP 23
23606: PUSH
23607: EMPTY
23608: LIST
23609: LIST
23610: PUSH
23611: LD_INT 30
23613: PUSH
23614: LD_INT 3
23616: PUSH
23617: EMPTY
23618: LIST
23619: LIST
23620: PUSH
23621: LD_INT 52
23623: PUSH
23624: EMPTY
23625: LIST
23626: PUSH
23627: EMPTY
23628: LIST
23629: LIST
23630: LIST
23631: PPUSH
23632: CALL_OW 69
23636: ST_TO_ADDR
// if not tov then
23637: LD_VAR 0 2
23641: NOT
23642: IFFALSE 23646
// exit ;
23644: GO 23682
// for i = 1 to dif_ar_attack_size do
23646: LD_ADDR_VAR 0 1
23650: PUSH
23651: DOUBLE
23652: LD_INT 1
23654: DEC
23655: ST_TO_ADDR
23656: LD_EXP 67
23660: PUSH
23661: FOR_TO
23662: IFFALSE 23679
// begin VyrobAuto ( tov [ 1 ] ) ;
23664: LD_VAR 0 2
23668: PUSH
23669: LD_INT 1
23671: ARRAY
23672: PPUSH
23673: CALL 24184 0 1
// end ;
23677: GO 23661
23679: POP
23680: POP
// end ; enable ;
23681: ENABLE
// end ;
23682: PPOPN 2
23684: END
// every 0 0$10 do var i , tov ;
23685: GO 23687
23687: DISABLE
23688: LD_INT 0
23690: PPUSH
23691: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , purple ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_purple_attack_size + 2 then
23692: LD_EXP 33
23696: NOT
23697: PUSH
23698: LD_INT 52
23700: PUSH
23701: EMPTY
23702: LIST
23703: PUSH
23704: LD_INT 22
23706: PUSH
23707: LD_EXP 22
23711: PUSH
23712: EMPTY
23713: LIST
23714: LIST
23715: PUSH
23716: LD_INT 21
23718: PUSH
23719: LD_INT 2
23721: PUSH
23722: EMPTY
23723: LIST
23724: LIST
23725: PUSH
23726: EMPTY
23727: LIST
23728: LIST
23729: LIST
23730: PPUSH
23731: CALL_OW 69
23735: PUSH
23736: LD_INT 0
23738: PLUS
23739: PUSH
23740: LD_EXP 68
23744: PUSH
23745: LD_INT 2
23747: PLUS
23748: LESS
23749: AND
23750: IFFALSE 23754
// else
23752: GO 23882
// begin Wait ( dif_purple_vyroba_utok_wait_start ) ;
23754: LD_EXP 77
23758: PPUSH
23759: CALL_OW 67
// if dif_purple_vyroba_utok_wait_start < dif_purple_vyroba_utok_wait then
23763: LD_EXP 77
23767: PUSH
23768: LD_EXP 71
23772: LESS
23773: IFFALSE 23795
// dif_purple_vyroba_utok_wait_start = dif_purple_vyroba_utok_wait_start + dif_vyroba_tick_inkrement * 4 ;
23775: LD_ADDR_EXP 77
23779: PUSH
23780: LD_EXP 77
23784: PUSH
23785: LD_EXP 79
23789: PUSH
23790: LD_INT 4
23792: MUL
23793: PLUS
23794: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , purple ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23795: LD_ADDR_VAR 0 2
23799: PUSH
23800: LD_INT 22
23802: PUSH
23803: LD_EXP 22
23807: PUSH
23808: EMPTY
23809: LIST
23810: LIST
23811: PUSH
23812: LD_INT 30
23814: PUSH
23815: LD_INT 3
23817: PUSH
23818: EMPTY
23819: LIST
23820: LIST
23821: PUSH
23822: LD_INT 52
23824: PUSH
23825: EMPTY
23826: LIST
23827: PUSH
23828: EMPTY
23829: LIST
23830: LIST
23831: LIST
23832: PPUSH
23833: CALL_OW 69
23837: ST_TO_ADDR
// if not tov then
23838: LD_VAR 0 2
23842: NOT
23843: IFFALSE 23847
// exit ;
23845: GO 23883
// for i = 1 to dif_purple_attack_size do
23847: LD_ADDR_VAR 0 1
23851: PUSH
23852: DOUBLE
23853: LD_INT 1
23855: DEC
23856: ST_TO_ADDR
23857: LD_EXP 68
23861: PUSH
23862: FOR_TO
23863: IFFALSE 23880
// begin VyrobAuto ( tov [ 1 ] ) ;
23865: LD_VAR 0 2
23869: PUSH
23870: LD_INT 1
23872: ARRAY
23873: PPUSH
23874: CALL 24184 0 1
// end ;
23878: GO 23862
23880: POP
23881: POP
// end ; enable ;
23882: ENABLE
// end ;
23883: PPOPN 2
23885: END
// every 0 0$10 do var i , tov ;
23886: GO 23888
23888: DISABLE
23889: LD_INT 0
23891: PPUSH
23892: PPUSH
// begin if not startAttackCountdown and FilterAllUnits ( [ [ f_placed ] , [ f_side , amik ] , [ f_type , unit_vehicle ] ] ) + 0 < dif_ar_attack_size + 2 then
23893: LD_EXP 33
23897: NOT
23898: PUSH
23899: LD_INT 52
23901: PUSH
23902: EMPTY
23903: LIST
23904: PUSH
23905: LD_INT 22
23907: PUSH
23908: LD_EXP 24
23912: PUSH
23913: EMPTY
23914: LIST
23915: LIST
23916: PUSH
23917: LD_INT 21
23919: PUSH
23920: LD_INT 2
23922: PUSH
23923: EMPTY
23924: LIST
23925: LIST
23926: PUSH
23927: EMPTY
23928: LIST
23929: LIST
23930: LIST
23931: PPUSH
23932: CALL_OW 69
23936: PUSH
23937: LD_INT 0
23939: PLUS
23940: PUSH
23941: LD_EXP 67
23945: PUSH
23946: LD_INT 2
23948: PLUS
23949: LESS
23950: AND
23951: IFFALSE 23955
// else
23953: GO 24180
// begin Wait ( dif_amik_vyroba_utok_wait_start ) ;
23955: LD_EXP 78
23959: PPUSH
23960: CALL_OW 67
// if dif_amik_vyroba_utok_wait_start < dif_amik_vyroba_utok_wait then
23964: LD_EXP 78
23968: PUSH
23969: LD_EXP 72
23973: LESS
23974: IFFALSE 23992
// dif_amik_vyroba_utok_wait_start = dif_amik_vyroba_utok_wait_start + dif_vyroba_tick_inkrement ;
23976: LD_ADDR_EXP 78
23980: PUSH
23981: LD_EXP 78
23985: PUSH
23986: LD_EXP 79
23990: PLUS
23991: ST_TO_ADDR
// tov = FilterAllUnits ( [ [ f_side , amik ] , [ f_btype , b_factory ] , [ f_placed ] ] ) ;
23992: LD_ADDR_VAR 0 2
23996: PUSH
23997: LD_INT 22
23999: PUSH
24000: LD_EXP 24
24004: PUSH
24005: EMPTY
24006: LIST
24007: LIST
24008: PUSH
24009: LD_INT 30
24011: PUSH
24012: LD_INT 3
24014: PUSH
24015: EMPTY
24016: LIST
24017: LIST
24018: PUSH
24019: LD_INT 52
24021: PUSH
24022: EMPTY
24023: LIST
24024: PUSH
24025: EMPTY
24026: LIST
24027: LIST
24028: LIST
24029: PPUSH
24030: CALL_OW 69
24034: ST_TO_ADDR
// if not tov then
24035: LD_VAR 0 2
24039: NOT
24040: IFFALSE 24044
// exit ;
24042: GO 24181
// if tov = 2 then
24044: LD_VAR 0 2
24048: PUSH
24049: LD_INT 2
24051: EQUAL
24052: IFFALSE 24136
// begin for i = 1 to dif_amik_attack_size / 2 do
24054: LD_ADDR_VAR 0 1
24058: PUSH
24059: DOUBLE
24060: LD_INT 1
24062: DEC
24063: ST_TO_ADDR
24064: LD_EXP 69
24068: PUSH
24069: LD_INT 2
24071: DIVREAL
24072: PUSH
24073: FOR_TO
24074: IFFALSE 24091
// begin VyrobAuto ( tov [ 1 ] ) ;
24076: LD_VAR 0 2
24080: PUSH
24081: LD_INT 1
24083: ARRAY
24084: PPUSH
24085: CALL 24184 0 1
// end ;
24089: GO 24073
24091: POP
24092: POP
// for i = dif_amik_attack_size / 2 to dif_amik_attack_size do
24093: LD_ADDR_VAR 0 1
24097: PUSH
24098: DOUBLE
24099: LD_EXP 69
24103: PUSH
24104: LD_INT 2
24106: DIVREAL
24107: DEC
24108: ST_TO_ADDR
24109: LD_EXP 69
24113: PUSH
24114: FOR_TO
24115: IFFALSE 24132
// begin VyrobAuto ( tov [ 2 ] ) ;
24117: LD_VAR 0 2
24121: PUSH
24122: LD_INT 2
24124: ARRAY
24125: PPUSH
24126: CALL 24184 0 1
// end ;
24130: GO 24114
24132: POP
24133: POP
// end else
24134: GO 24171
// begin for i = 1 to dif_amik_attack_size do
24136: LD_ADDR_VAR 0 1
24140: PUSH
24141: DOUBLE
24142: LD_INT 1
24144: DEC
24145: ST_TO_ADDR
24146: LD_EXP 69
24150: PUSH
24151: FOR_TO
24152: IFFALSE 24169
// begin VyrobAuto ( tov [ 1 ] ) ;
24154: LD_VAR 0 2
24158: PUSH
24159: LD_INT 1
24161: ARRAY
24162: PPUSH
24163: CALL 24184 0 1
// end ;
24167: GO 24151
24169: POP
24170: POP
// end ; Wait ( dif_amik_vyroba_utok_wait_start ) ;
24171: LD_EXP 78
24175: PPUSH
24176: CALL_OW 67
// end ; enable ;
24180: ENABLE
// end ;
24181: PPOPN 2
24183: END
// function VyrobAuto ( tovarna ) ; var podvozek , zbran , P , narod , pasovy_pristavek ; begin
24184: LD_INT 0
24186: PPUSH
24187: PPUSH
24188: PPUSH
24189: PPUSH
24190: PPUSH
24191: PPUSH
// if not tovarna then
24192: LD_VAR 0 1
24196: NOT
24197: IFFALSE 24201
// exit ;
24199: GO 25099
// if not IsOk ( tovarna ) then
24201: LD_VAR 0 1
24205: PPUSH
24206: CALL_OW 302
24210: NOT
24211: IFFALSE 24215
// exit ;
24213: GO 25099
// P = Rand ( 1 , 100 ) ;
24215: LD_ADDR_VAR 0 5
24219: PUSH
24220: LD_INT 1
24222: PPUSH
24223: LD_INT 100
24225: PPUSH
24226: CALL_OW 12
24230: ST_TO_ADDR
// narod = GetNation ( tovarna ) ;
24231: LD_ADDR_VAR 0 6
24235: PUSH
24236: LD_VAR 0 1
24240: PPUSH
24241: CALL_OW 248
24245: ST_TO_ADDR
// if narod = 1 then
24246: LD_VAR 0 6
24250: PUSH
24251: LD_INT 1
24253: EQUAL
24254: IFFALSE 24285
// pasovy_pristavek = CanBeConstructed ( tovarna , us_medium_tracked , engine_combustion , control_manual , us_machine_gun ) else
24256: LD_ADDR_VAR 0 7
24260: PUSH
24261: LD_VAR 0 1
24265: PPUSH
24266: LD_INT 3
24268: PPUSH
24269: LD_INT 1
24271: PPUSH
24272: LD_INT 1
24274: PPUSH
24275: LD_INT 2
24277: PPUSH
24278: CALL_OW 448
24282: ST_TO_ADDR
24283: GO 24351
// if narod = 3 then
24285: LD_VAR 0 6
24289: PUSH
24290: LD_INT 3
24292: EQUAL
24293: IFFALSE 24324
// pasovy_pristavek = CanBeConstructed ( tovarna , ru_medium_tracked , engine_combustion , control_manual , ru_heavy_machine_gun ) else
24295: LD_ADDR_VAR 0 7
24299: PUSH
24300: LD_VAR 0 1
24304: PPUSH
24305: LD_INT 22
24307: PPUSH
24308: LD_INT 1
24310: PPUSH
24311: LD_INT 1
24313: PPUSH
24314: LD_INT 42
24316: PPUSH
24317: CALL_OW 448
24321: ST_TO_ADDR
24322: GO 24351
// pasovy_pristavek = CanBeConstructed ( tovarna , ar_medium_trike , engine_combustion , control_manual , ar_double_machine_gun ) ;
24324: LD_ADDR_VAR 0 7
24328: PUSH
24329: LD_VAR 0 1
24333: PPUSH
24334: LD_INT 13
24336: PPUSH
24337: LD_INT 1
24339: PPUSH
24340: LD_INT 1
24342: PPUSH
24343: LD_INT 24
24345: PPUSH
24346: CALL_OW 448
24350: ST_TO_ADDR
// if narod = 1 then
24351: LD_VAR 0 6
24355: PUSH
24356: LD_INT 1
24358: EQUAL
24359: IFFALSE 24664
// begin if P < dif_auto_vyroba_sance [ 1 ] then
24361: LD_VAR 0 5
24365: PUSH
24366: LD_EXP 74
24370: PUSH
24371: LD_INT 1
24373: ARRAY
24374: LESS
24375: IFFALSE 24395
// begin zbran = us_gatling_gun ;
24377: LD_ADDR_VAR 0 4
24381: PUSH
24382: LD_INT 4
24384: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24385: LD_ADDR_VAR 0 3
24389: PUSH
24390: LD_INT 3
24392: ST_TO_ADDR
// end else
24393: GO 24513
// if P < dif_auto_vyroba_sance [ 2 ] then
24395: LD_VAR 0 5
24399: PUSH
24400: LD_EXP 74
24404: PUSH
24405: LD_INT 2
24407: ARRAY
24408: LESS
24409: IFFALSE 24429
// begin zbran = us_laser ;
24411: LD_ADDR_VAR 0 4
24415: PUSH
24416: LD_INT 9
24418: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24419: LD_ADDR_VAR 0 3
24423: PUSH
24424: LD_INT 3
24426: ST_TO_ADDR
// end else
24427: GO 24513
// if P < dif_auto_vyroba_sance [ 3 ] then
24429: LD_VAR 0 5
24433: PUSH
24434: LD_EXP 74
24438: PUSH
24439: LD_INT 3
24441: ARRAY
24442: LESS
24443: IFFALSE 24463
// begin zbran = us_rocket_launcher ;
24445: LD_ADDR_VAR 0 4
24449: PUSH
24450: LD_INT 7
24452: ST_TO_ADDR
// podvozek = us_medium_tracked ;
24453: LD_ADDR_VAR 0 3
24457: PUSH
24458: LD_INT 3
24460: ST_TO_ADDR
// end else
24461: GO 24513
// if P < dif_auto_vyroba_sance [ 4 ] then
24463: LD_VAR 0 5
24467: PUSH
24468: LD_EXP 74
24472: PUSH
24473: LD_INT 4
24475: ARRAY
24476: LESS
24477: IFFALSE 24497
// begin zbran = us_double_gun ;
24479: LD_ADDR_VAR 0 4
24483: PUSH
24484: LD_INT 5
24486: ST_TO_ADDR
// podvozek = us_heavy_tracked ;
24487: LD_ADDR_VAR 0 3
24491: PUSH
24492: LD_INT 4
24494: ST_TO_ADDR
// end else
24495: GO 24513
// begin zbran = us_heavy_gun ;
24497: LD_ADDR_VAR 0 4
24501: PUSH
24502: LD_INT 6
24504: ST_TO_ADDR
// podvozek = us_morphling ;
24505: LD_ADDR_VAR 0 3
24509: PUSH
24510: LD_INT 5
24512: ST_TO_ADDR
// end ; if not pasovy_pristavek then
24513: LD_VAR 0 7
24517: NOT
24518: IFFALSE 24570
// begin if podvozek in [ us_medium_tracked , us_heavy_tracked , us_morphling ] then
24520: LD_VAR 0 3
24524: PUSH
24525: LD_INT 3
24527: PUSH
24528: LD_INT 4
24530: PUSH
24531: LD_INT 5
24533: PUSH
24534: EMPTY
24535: LIST
24536: LIST
24537: LIST
24538: IN
24539: IFFALSE 24549
// podvozek = us_medium_wheeled ;
24541: LD_ADDR_VAR 0 3
24545: PUSH
24546: LD_INT 2
24548: ST_TO_ADDR
// if zbran in [ us_heavy_gun ] then
24549: LD_VAR 0 4
24553: PUSH
24554: LD_INT 6
24556: PUSH
24557: EMPTY
24558: LIST
24559: IN
24560: IFFALSE 24570
// zbran = us_double_gun ;
24562: LD_ADDR_VAR 0 4
24566: PUSH
24567: LD_INT 5
24569: ST_TO_ADDR
// end ; if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_computer , zbran ) and zbran = us_heavy_gun then
24570: LD_VAR 0 1
24574: PPUSH
24575: LD_VAR 0 3
24579: PPUSH
24580: LD_INT 1
24582: PPUSH
24583: LD_INT 3
24585: PPUSH
24586: LD_VAR 0 4
24590: PPUSH
24591: CALL_OW 448
24595: NOT
24596: PUSH
24597: LD_VAR 0 4
24601: PUSH
24602: LD_INT 6
24604: EQUAL
24605: AND
24606: IFFALSE 24616
// zbran = us_laser ;
24608: LD_ADDR_VAR 0 4
24612: PUSH
24613: LD_INT 9
24615: ST_TO_ADDR
// if not CanBeConstructed ( tovarna , podvozek , engine_combustion , control_computer , zbran ) and zbran = us_double_gun then
24616: LD_VAR 0 1
24620: PPUSH
24621: LD_VAR 0 3
24625: PPUSH
24626: LD_INT 1
24628: PPUSH
24629: LD_INT 3
24631: PPUSH
24632: LD_VAR 0 4
24636: PPUSH
24637: CALL_OW 448
24641: NOT
24642: PUSH
24643: LD_VAR 0 4
24647: PUSH
24648: LD_INT 5
24650: EQUAL
24651: AND
24652: IFFALSE 24662
// zbran = us_rocket_launcher ;
24654: LD_ADDR_VAR 0 4
24658: PUSH
24659: LD_INT 7
24661: ST_TO_ADDR
// end else
24662: GO 24891
// begin if P < dif_auto_vyroba_sance [ 1 ] then
24664: LD_VAR 0 5
24668: PUSH
24669: LD_EXP 74
24673: PUSH
24674: LD_INT 1
24676: ARRAY
24677: LESS
24678: IFFALSE 24698
// begin zbran = ar_gun ;
24680: LD_ADDR_VAR 0 4
24684: PUSH
24685: LD_INT 27
24687: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24688: LD_ADDR_VAR 0 3
24692: PUSH
24693: LD_INT 13
24695: ST_TO_ADDR
// end else
24696: GO 24852
// if P < dif_auto_vyroba_sance [ 2 ] then
24698: LD_VAR 0 5
24702: PUSH
24703: LD_EXP 74
24707: PUSH
24708: LD_INT 2
24710: ARRAY
24711: LESS
24712: IFFALSE 24732
// begin zbran = ar_gatling_gun ;
24714: LD_ADDR_VAR 0 4
24718: PUSH
24719: LD_INT 25
24721: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24722: LD_ADDR_VAR 0 3
24726: PUSH
24727: LD_INT 13
24729: ST_TO_ADDR
// end else
24730: GO 24852
// if P < dif_auto_vyroba_sance [ 3 ] then
24732: LD_VAR 0 5
24736: PUSH
24737: LD_EXP 74
24741: PUSH
24742: LD_INT 3
24744: ARRAY
24745: LESS
24746: IFFALSE 24766
// begin zbran = ar_gun ;
24748: LD_ADDR_VAR 0 4
24752: PUSH
24753: LD_INT 27
24755: ST_TO_ADDR
// podvozek = ar_medium_trike ;
24756: LD_ADDR_VAR 0 3
24760: PUSH
24761: LD_INT 13
24763: ST_TO_ADDR
// end else
24764: GO 24852
// if P < dif_auto_vyroba_sance [ 4 ] then
24766: LD_VAR 0 5
24770: PUSH
24771: LD_EXP 74
24775: PUSH
24776: LD_INT 4
24778: ARRAY
24779: LESS
24780: IFFALSE 24800
// begin zbran = ar_rocket_launcher ;
24782: LD_ADDR_VAR 0 4
24786: PUSH
24787: LD_INT 28
24789: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24790: LD_ADDR_VAR 0 3
24794: PUSH
24795: LD_INT 14
24797: ST_TO_ADDR
// end else
24798: GO 24852
// begin if ar_samohybka_naposled_stavba >= 2 then
24800: LD_EXP 41
24804: PUSH
24805: LD_INT 2
24807: GREATEREQUAL
24808: IFFALSE 24836
// begin zbran = ar_selfpropelled_bomb ;
24810: LD_ADDR_VAR 0 4
24814: PUSH
24815: LD_INT 29
24817: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24818: LD_ADDR_VAR 0 3
24822: PUSH
24823: LD_INT 14
24825: ST_TO_ADDR
// ar_samohybka_naposled_stavba = 0 ;
24826: LD_ADDR_EXP 41
24830: PUSH
24831: LD_INT 0
24833: ST_TO_ADDR
// end else
24834: GO 24852
// begin zbran = ar_rocket_launcher ;
24836: LD_ADDR_VAR 0 4
24840: PUSH
24841: LD_INT 28
24843: ST_TO_ADDR
// podvozek = ar_half_tracked ;
24844: LD_ADDR_VAR 0 3
24848: PUSH
24849: LD_INT 14
24851: ST_TO_ADDR
// end ; end ; if not pasovy_pristavek then
24852: LD_VAR 0 7
24856: NOT
24857: IFFALSE 24877
// begin if podvozek = ar_half_tracked then
24859: LD_VAR 0 3
24863: PUSH
24864: LD_INT 14
24866: EQUAL
24867: IFFALSE 24877
// podvozek = ar_medium_trike ;
24869: LD_ADDR_VAR 0 3
24873: PUSH
24874: LD_INT 13
24876: ST_TO_ADDR
// end ; ar_samohybka_naposled_stavba = ar_samohybka_naposled_stavba + 1 ;
24877: LD_ADDR_EXP 41
24881: PUSH
24882: LD_EXP 41
24886: PUSH
24887: LD_INT 1
24889: PLUS
24890: ST_TO_ADDR
// end ; if Prob ( dif_auto_lepsi_podvozek_sance ) and pasovy_pristavek then
24891: LD_EXP 73
24895: PPUSH
24896: CALL_OW 13
24900: PUSH
24901: LD_VAR 0 7
24905: AND
24906: IFFALSE 24986
// begin if narod = nation_american then
24908: LD_VAR 0 6
24912: PUSH
24913: LD_INT 1
24915: EQUAL
24916: IFFALSE 24938
// podvozek = Rand ( podvozek , us_morphling ) else
24918: LD_ADDR_VAR 0 3
24922: PUSH
24923: LD_VAR 0 3
24927: PPUSH
24928: LD_INT 5
24930: PPUSH
24931: CALL_OW 12
24935: ST_TO_ADDR
24936: GO 24986
// if narod = nation_russian then
24938: LD_VAR 0 6
24942: PUSH
24943: LD_INT 3
24945: EQUAL
24946: IFFALSE 24968
// podvozek = Rand ( podvozek , ru_heavy_tracked ) else
24948: LD_ADDR_VAR 0 3
24952: PUSH
24953: LD_VAR 0 3
24957: PPUSH
24958: LD_INT 24
24960: PPUSH
24961: CALL_OW 12
24965: ST_TO_ADDR
24966: GO 24986
// podvozek = Rand ( podvozek , ar_half_tracked ) ;
24968: LD_ADDR_VAR 0 3
24972: PUSH
24973: LD_VAR 0 3
24977: PPUSH
24978: LD_INT 14
24980: PPUSH
24981: CALL_OW 12
24985: ST_TO_ADDR
// end ; if GetSide ( tovarna ) = arab then
24986: LD_VAR 0 1
24990: PPUSH
24991: CALL_OW 255
24995: PUSH
24996: LD_EXP 23
25000: EQUAL
25001: IFFALSE 25030
// AddComConstruct ( tovarna , podvozek , engine_siberite , control_apeman , zbran ) else
25003: LD_VAR 0 1
25007: PPUSH
25008: LD_VAR 0 3
25012: PPUSH
25013: LD_INT 3
25015: PPUSH
25016: LD_INT 5
25018: PPUSH
25019: LD_VAR 0 4
25023: PPUSH
25024: CALL_OW 185
25028: GO 25099
// if GetSide ( tovarna ) = purple then
25030: LD_VAR 0 1
25034: PPUSH
25035: CALL_OW 255
25039: PUSH
25040: LD_EXP 22
25044: EQUAL
25045: IFFALSE 25074
// AddComConstruct ( tovarna , podvozek , engine_combustion , control_remote , zbran ) else
25047: LD_VAR 0 1
25051: PPUSH
25052: LD_VAR 0 3
25056: PPUSH
25057: LD_INT 1
25059: PPUSH
25060: LD_INT 2
25062: PPUSH
25063: LD_VAR 0 4
25067: PPUSH
25068: CALL_OW 185
25072: GO 25099
// AddComConstruct ( tovarna , podvozek , engine_combustion , control_computer , zbran ) end ; end_of_file
25074: LD_VAR 0 1
25078: PPUSH
25079: LD_VAR 0 3
25083: PPUSH
25084: LD_INT 1
25086: PPUSH
25087: LD_INT 3
25089: PPUSH
25090: LD_VAR 0 4
25094: PPUSH
25095: CALL_OW 185
25099: LD_VAR 0 2
25103: RET
// export researchtalk ; var buildingtalk ; on ResearchComplete ( research , building ) do var doktor ;
25104: LD_INT 0
25106: PPUSH
// begin if research = tech_virus and not researchtalk then
25107: LD_VAR 0 1
25111: PUSH
25112: LD_INT 33
25114: EQUAL
25115: PUSH
25116: LD_EXP 82
25120: NOT
25121: AND
25122: IFFALSE 25205
// begin researchtalk = true ;
25124: LD_ADDR_EXP 82
25128: PUSH
25129: LD_INT 1
25131: ST_TO_ADDR
// DialogueOn ;
25132: CALL_OW 6
// doktor = NajdiVedce ;
25136: LD_ADDR_VAR 0 3
25140: PUSH
25141: CALL 12727 0 0
25145: ST_TO_ADDR
// ChangeMissionObjectives ( M04 ) ;
25146: LD_STRING M04
25148: PPUSH
25149: CALL_OW 337
// Say ( doktor , D2sci-2 ) ;
25153: LD_VAR 0 3
25157: PPUSH
25158: LD_STRING D2sci-2
25160: PPUSH
25161: CALL_OW 88
// Say ( vsevolod , D2vse-2 ) ;
25165: LD_EXP 1
25169: PPUSH
25170: LD_STRING D2vse-2
25172: PPUSH
25173: CALL_OW 88
// Say ( doktor , D2sci-3 ) ;
25177: LD_VAR 0 3
25181: PPUSH
25182: LD_STRING D2sci-3
25184: PPUSH
25185: CALL_OW 88
// Say ( vsevolod , D2vse-3 ) ;
25189: LD_EXP 1
25193: PPUSH
25194: LD_STRING D2vse-3
25196: PPUSH
25197: CALL_OW 88
// DialogueOff ;
25201: CALL_OW 7
// end ; if research = tech_behemoth then
25205: LD_VAR 0 1
25209: PUSH
25210: LD_INT 23
25212: EQUAL
25213: IFFALSE 25283
// begin DialogueOn ;
25215: CALL_OW 6
// Say ( NajdiVedce , D2nekdo-6 ) ;
25219: CALL 12727 0 0
25223: PPUSH
25224: LD_STRING D2nekdo-6
25226: PPUSH
25227: CALL_OW 88
// if IsOk ( mikhail ) and IsPlaced ( mikhail ) then
25231: LD_EXP 14
25235: PPUSH
25236: CALL_OW 302
25240: PUSH
25241: LD_EXP 14
25245: PPUSH
25246: CALL_OW 305
25250: AND
25251: IFFALSE 25267
// Say ( mikhail , D2nekdo-7 ) else
25253: LD_EXP 14
25257: PPUSH
25258: LD_STRING D2nekdo-7
25260: PPUSH
25261: CALL_OW 88
25265: GO 25279
// Say ( NajdiMechanika , D2nekdo-7 ) ;
25267: CALL 12953 0 0
25271: PPUSH
25272: LD_STRING D2nekdo-7
25274: PPUSH
25275: CALL_OW 88
// DialogueOff ;
25279: CALL_OW 7
// end ; end ;
25283: PPOPN 3
25285: 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 ;
25286: LD_INT 22
25288: PUSH
25289: LD_EXP 21
25293: PUSH
25294: EMPTY
25295: LIST
25296: LIST
25297: PUSH
25298: LD_INT 2
25300: PUSH
25301: LD_INT 30
25303: PUSH
25304: LD_INT 7
25306: PUSH
25307: EMPTY
25308: LIST
25309: LIST
25310: PUSH
25311: LD_INT 30
25313: PUSH
25314: LD_INT 8
25316: PUSH
25317: EMPTY
25318: LIST
25319: LIST
25320: PUSH
25321: LD_INT 30
25323: PUSH
25324: LD_INT 6
25326: PUSH
25327: EMPTY
25328: LIST
25329: LIST
25330: PUSH
25331: EMPTY
25332: LIST
25333: LIST
25334: LIST
25335: LIST
25336: PUSH
25337: EMPTY
25338: LIST
25339: LIST
25340: PPUSH
25341: CALL_OW 69
25345: PUSH
25346: LD_INT 0
25348: GREATER
25349: IFFALSE 25369
25351: GO 25353
25353: DISABLE
25354: LD_INT 0
25356: PPUSH
25357: PPUSH
// begin Wait ( 0 0$2 ) ;
25358: LD_INT 70
25360: PPUSH
25361: CALL_OW 67
// VirusDialog ;
25365: CALL 25480 0 0
// end ;
25369: PPOPN 2
25371: END
// every 0 0$1 trigger FilterUnitsInArea ( ZaklArea , [ [ f_side , You ] , [ f_type , unit_human ] ] ) and not buildingtalk do
25372: LD_INT 47
25374: PPUSH
25375: LD_INT 22
25377: PUSH
25378: LD_EXP 21
25382: PUSH
25383: EMPTY
25384: LIST
25385: LIST
25386: PUSH
25387: LD_INT 21
25389: PUSH
25390: LD_INT 1
25392: PUSH
25393: EMPTY
25394: LIST
25395: LIST
25396: PUSH
25397: EMPTY
25398: LIST
25399: LIST
25400: PPUSH
25401: CALL_OW 70
25405: PUSH
25406: LD_LOC 5
25410: NOT
25411: AND
25412: IFFALSE 25479
25414: GO 25416
25416: DISABLE
// begin Wait ( 0 0$2 ) ;
25417: LD_INT 70
25419: PPUSH
25420: CALL_OW 67
// if not FilterAllUnits ( [ [ f_side , You ] , [ f_type , unit_building ] ] ) then
25424: LD_INT 22
25426: PUSH
25427: LD_EXP 21
25431: PUSH
25432: EMPTY
25433: LIST
25434: LIST
25435: PUSH
25436: LD_INT 21
25438: PUSH
25439: LD_INT 3
25441: PUSH
25442: EMPTY
25443: LIST
25444: LIST
25445: PUSH
25446: EMPTY
25447: LIST
25448: LIST
25449: PPUSH
25450: CALL_OW 69
25454: NOT
25455: IFFALSE 25479
// begin CenterOnXY ( 78 , 40 ) ;
25457: LD_INT 78
25459: PPUSH
25460: LD_INT 40
25462: PPUSH
25463: CALL_OW 84
// Say ( vsevolod , D2vse-0-2 ) ;
25467: LD_EXP 1
25471: PPUSH
25472: LD_STRING D2vse-0-2
25474: PPUSH
25475: CALL_OW 88
// end ; end ;
25479: END
// function VirusDialog ; var doktor ; begin
25480: LD_INT 0
25482: PPUSH
25483: PPUSH
// if not buildingtalk then
25484: LD_LOC 5
25488: NOT
25489: IFFALSE 25570
// begin buildingtalk = true ;
25491: LD_ADDR_LOC 5
25495: PUSH
25496: LD_INT 1
25498: ST_TO_ADDR
// doktor = NajdiVedce ;
25499: LD_ADDR_VAR 0 2
25503: PUSH
25504: CALL 12727 0 0
25508: ST_TO_ADDR
// SetTech ( tech_virus , you , state_enabled ) ;
25509: LD_INT 33
25511: PPUSH
25512: LD_EXP 21
25516: PPUSH
25517: LD_INT 1
25519: PPUSH
25520: CALL_OW 322
// Say ( doktor , D2sci-1 ) ;
25524: LD_VAR 0 2
25528: PPUSH
25529: LD_STRING D2sci-1
25531: PPUSH
25532: CALL_OW 88
// Say ( vsevolod , D2vse-1 ) ;
25536: LD_EXP 1
25540: PPUSH
25541: LD_STRING D2vse-1
25543: PPUSH
25544: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
25548: LD_INT 7
25550: PPUSH
25551: CALL_OW 67
// ChangeMissionObjectives ( M02 ) ;
25555: LD_STRING M02
25557: PPUSH
25558: CALL_OW 337
// buildtalk2 = true ;
25562: LD_ADDR_EXP 18
25566: PUSH
25567: LD_INT 1
25569: ST_TO_ADDR
// end ; end ;
25570: LD_VAR 0 1
25574: 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 ;
25575: LD_INT 22
25577: PUSH
25578: LD_EXP 21
25582: PUSH
25583: EMPTY
25584: LIST
25585: LIST
25586: PUSH
25587: LD_INT 21
25589: PUSH
25590: LD_INT 2
25592: PUSH
25593: EMPTY
25594: LIST
25595: LIST
25596: PUSH
25597: LD_INT 23
25599: PUSH
25600: LD_INT 1
25602: PUSH
25603: EMPTY
25604: LIST
25605: LIST
25606: PUSH
25607: LD_INT 33
25609: PUSH
25610: LD_INT 3
25612: PUSH
25613: EMPTY
25614: LIST
25615: LIST
25616: PUSH
25617: EMPTY
25618: LIST
25619: LIST
25620: LIST
25621: LIST
25622: PPUSH
25623: CALL_OW 69
25627: IFFALSE 25765
25629: GO 25631
25631: DISABLE
25632: LD_INT 0
25634: PPUSH
// begin hackingPerformed = true ;
25635: LD_ADDR_EXP 17
25639: PUSH
25640: LD_INT 1
25642: 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 ] ) ;
25643: LD_ADDR_VAR 0 1
25647: PUSH
25648: LD_INT 22
25650: PUSH
25651: LD_EXP 21
25655: PUSH
25656: EMPTY
25657: LIST
25658: LIST
25659: PUSH
25660: LD_INT 25
25662: PUSH
25663: LD_INT 4
25665: PUSH
25666: EMPTY
25667: LIST
25668: LIST
25669: PUSH
25670: EMPTY
25671: LIST
25672: LIST
25673: PPUSH
25674: CALL_OW 69
25678: PPUSH
25679: LD_INT 22
25681: PUSH
25682: LD_EXP 21
25686: PUSH
25687: EMPTY
25688: LIST
25689: LIST
25690: PUSH
25691: LD_INT 21
25693: PUSH
25694: LD_INT 2
25696: PUSH
25697: EMPTY
25698: LIST
25699: LIST
25700: PUSH
25701: LD_INT 23
25703: PUSH
25704: LD_INT 1
25706: PUSH
25707: EMPTY
25708: LIST
25709: LIST
25710: PUSH
25711: LD_INT 33
25713: PUSH
25714: LD_INT 3
25716: PUSH
25717: EMPTY
25718: LIST
25719: LIST
25720: PUSH
25721: EMPTY
25722: LIST
25723: LIST
25724: LIST
25725: LIST
25726: PPUSH
25727: CALL_OW 69
25731: PUSH
25732: LD_INT 1
25734: ARRAY
25735: PPUSH
25736: CALL_OW 74
25740: ST_TO_ADDR
// Say ( hacker , D2sci-4 ) ;
25741: LD_VAR 0 1
25745: PPUSH
25746: LD_STRING D2sci-4
25748: PPUSH
25749: CALL_OW 88
// Say ( vsevolod , D2vse-4 ) ;
25753: LD_EXP 1
25757: PPUSH
25758: LD_STRING D2vse-4
25760: PPUSH
25761: CALL_OW 88
// end ;
25765: PPOPN 1
25767: END
// every 0 0$1 trigger See ( you , forest_dul ) and not wasDialogOMiste and not AlianceSAraby do var sci , del ;
25768: LD_EXP 21
25772: PPUSH
25773: LD_INT 89
25775: PPUSH
25776: CALL_OW 292
25780: PUSH
25781: LD_EXP 32
25785: NOT
25786: AND
25787: PUSH
25788: CALL 2247 0 0
25792: NOT
25793: AND
25794: IFFALSE 25895
25796: GO 25798
25798: DISABLE
25799: LD_INT 0
25801: PPUSH
25802: PPUSH
// begin CenterNowOnUnits ( forest_dul ) ;
25803: LD_INT 89
25805: PPUSH
25806: CALL_OW 87
// DialogueOn ;
25810: CALL_OW 6
// sci = NajdiVedce ;
25814: LD_ADDR_VAR 0 1
25818: PUSH
25819: CALL 12727 0 0
25823: ST_TO_ADDR
// del = NajdiDelnika ;
25824: LD_ADDR_VAR 0 2
25828: PUSH
25829: CALL 13179 0 0
25833: ST_TO_ADDR
// Say ( sci , D2nekdo-1 ) ;
25834: LD_VAR 0 1
25838: PPUSH
25839: LD_STRING D2nekdo-1
25841: PPUSH
25842: CALL_OW 88
// if IsPlaced ( kvantovy ) then
25846: LD_EXP 12
25850: PPUSH
25851: CALL_OW 305
25855: IFFALSE 25871
// Say ( kvantovy , D2kvant-1 ) else
25857: LD_EXP 12
25861: PPUSH
25862: LD_STRING D2kvant-1
25864: PPUSH
25865: CALL_OW 88
25869: GO 25883
// Say ( del , D2kvant-1 ) ;
25871: LD_VAR 0 2
25875: PPUSH
25876: LD_STRING D2kvant-1
25878: PPUSH
25879: CALL_OW 88
// DialogueOff ;
25883: CALL_OW 7
// wasDialogOMiste = true ;
25887: LD_ADDR_EXP 32
25891: PUSH
25892: LD_INT 1
25894: ST_TO_ADDR
// end ;
25895: PPOPN 2
25897: END
// every 0 0$1 trigger GetResourceVisibility ( 82 , 23 , you ) and not wasDialogOMiste and not AlianceSAraby do var sci , mech ;
25898: LD_INT 82
25900: PPUSH
25901: LD_INT 23
25903: PPUSH
25904: LD_EXP 21
25908: PPUSH
25909: CALL_OW 440
25913: PUSH
25914: LD_EXP 32
25918: NOT
25919: AND
25920: PUSH
25921: CALL 2247 0 0
25925: NOT
25926: AND
25927: IFFALSE 26006
25929: GO 25931
25931: DISABLE
25932: LD_INT 0
25934: PPUSH
25935: PPUSH
// begin CenterNowOnXY ( 81 , 26 ) ;
25936: LD_INT 81
25938: PPUSH
25939: LD_INT 26
25941: PPUSH
25942: CALL_OW 86
// DialogueOn ;
25946: CALL_OW 6
// sci = NajdiVedce ;
25950: LD_ADDR_VAR 0 1
25954: PUSH
25955: CALL 12727 0 0
25959: ST_TO_ADDR
// mech = NajdiMechanika ;
25960: LD_ADDR_VAR 0 2
25964: PUSH
25965: CALL 12953 0 0
25969: ST_TO_ADDR
// Say ( sci , D2nekdo-2 ) ;
25970: LD_VAR 0 1
25974: PPUSH
25975: LD_STRING D2nekdo-2
25977: PPUSH
25978: CALL_OW 88
// Say ( vsevolod , D2nekdo-3 ) ;
25982: LD_EXP 1
25986: PPUSH
25987: LD_STRING D2nekdo-3
25989: PPUSH
25990: CALL_OW 88
// DialogueOff ;
25994: CALL_OW 7
// wasDialogOMiste = true ;
25998: LD_ADDR_EXP 32
26002: PUSH
26003: LD_INT 1
26005: ST_TO_ADDR
// end ;
26006: PPOPN 2
26008: END
// export function RichardDialog ( ) ; var i , un ; begin
26009: LD_INT 0
26011: PPUSH
26012: PPUSH
26013: PPUSH
// if not richard_saved then
26014: LD_EXP 40
26018: NOT
26019: IFFALSE 26023
// exit ;
26021: GO 26338
// if SideDead ( amik ) and SideDead ( purple ) then
26023: LD_EXP 24
26027: PPUSH
26028: CALL 2293 0 1
26032: PUSH
26033: LD_EXP 22
26037: PPUSH
26038: CALL 2293 0 1
26042: AND
26043: IFFALSE 26047
// exit ;
26045: GO 26338
// wasRichardDialog = true ;
26047: LD_ADDR_EXP 31
26051: PUSH
26052: LD_INT 1
26054: ST_TO_ADDR
// DialogueOn ;
26055: CALL_OW 6
// Say ( richard , D2richard ) ;
26059: LD_EXP 9
26063: PPUSH
26064: LD_STRING D2richard
26066: PPUSH
26067: CALL_OW 88
// Say ( vsevolod , D2vse-5 ) ;
26071: LD_EXP 1
26075: PPUSH
26076: LD_STRING D2vse-5
26078: PPUSH
26079: CALL_OW 88
// Say ( richard , D2richard-2 ) ;
26083: LD_EXP 9
26087: PPUSH
26088: LD_STRING D2richard-2
26090: PPUSH
26091: CALL_OW 88
// Say ( vsevolod , D2vse-6 ) ;
26095: LD_EXP 1
26099: PPUSH
26100: LD_STRING D2vse-6
26102: PPUSH
26103: CALL_OW 88
// Say ( richard , D2richard-3 ) ;
26107: LD_EXP 9
26111: PPUSH
26112: LD_STRING D2richard-3
26114: PPUSH
26115: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
26119: LD_INT 7
26121: PPUSH
26122: CALL_OW 67
// case Query ( richardquery ) of 1 :
26126: LD_STRING richardquery
26128: PPUSH
26129: CALL_OW 97
26133: PUSH
26134: LD_INT 1
26136: DOUBLE
26137: EQUAL
26138: IFTRUE 26142
26140: GO 26173
26142: POP
// begin Say ( vsevolod , D2vse-7 ) ;
26143: LD_EXP 1
26147: PPUSH
26148: LD_STRING D2vse-7
26150: PPUSH
26151: CALL_OW 88
// Say ( richard , D2richard-4 ) ;
26155: LD_EXP 9
26159: PPUSH
26160: LD_STRING D2richard-4
26162: PPUSH
26163: CALL_OW 88
// MakeAliance ;
26167: CALL 26414 0 0
// end ; 2 :
26171: GO 26334
26173: LD_INT 2
26175: DOUBLE
26176: EQUAL
26177: IFTRUE 26181
26179: GO 26208
26181: POP
// begin Say ( vsevolod , D2vse-8 ) ;
26182: LD_EXP 1
26186: PPUSH
26187: LD_STRING D2vse-8
26189: PPUSH
26190: CALL_OW 88
// Say ( richard , D2richard-5 ) ;
26194: LD_EXP 9
26198: PPUSH
26199: LD_STRING D2richard-5
26201: PPUSH
26202: CALL_OW 88
// end ; 3 :
26206: GO 26334
26208: LD_INT 3
26210: DOUBLE
26211: EQUAL
26212: IFTRUE 26216
26214: GO 26333
26216: POP
// begin Say ( vsevolod , D2vse-8-2 ) ;
26217: LD_EXP 1
26221: PPUSH
26222: LD_STRING D2vse-8-2
26224: PPUSH
26225: CALL_OW 88
// SayRadio ( platonov , D2plat-2-2 ) ;
26229: LD_EXP 13
26233: PPUSH
26234: LD_STRING D2plat-2-2
26236: PPUSH
26237: CALL_OW 94
// Wait ( 0 0$0.2 ) ;
26241: LD_INT 7
26243: PPUSH
26244: CALL_OW 67
// case Query ( richardqueryagain ) of 1 :
26248: LD_STRING richardqueryagain
26250: PPUSH
26251: CALL_OW 97
26255: PUSH
26256: LD_INT 1
26258: DOUBLE
26259: EQUAL
26260: IFTRUE 26264
26262: GO 26295
26264: POP
// begin Say ( vsevolod , D2vse-8-3 ) ;
26265: LD_EXP 1
26269: PPUSH
26270: LD_STRING D2vse-8-3
26272: PPUSH
26273: CALL_OW 88
// Say ( richard , D2richard-4 ) ;
26277: LD_EXP 9
26281: PPUSH
26282: LD_STRING D2richard-4
26284: PPUSH
26285: CALL_OW 88
// MakeAliance ;
26289: CALL 26414 0 0
// end ; 2 :
26293: GO 26331
26295: LD_INT 2
26297: DOUBLE
26298: EQUAL
26299: IFTRUE 26303
26301: GO 26330
26303: POP
// begin Say ( vsevolod , D2vse-8-4 ) ;
26304: LD_EXP 1
26308: PPUSH
26309: LD_STRING D2vse-8-4
26311: PPUSH
26312: CALL_OW 88
// Say ( richard , D2richard-5 ) ;
26316: LD_EXP 9
26320: PPUSH
26321: LD_STRING D2richard-5
26323: PPUSH
26324: CALL_OW 88
// end ; end ;
26328: GO 26331
26330: POP
// end ; end ;
26331: GO 26334
26333: POP
// DialogueOff ;
26334: CALL_OW 7
// end ;
26338: LD_VAR 0 1
26342: RET
// export function DieDialog ( ) ; var i , un ; begin
26343: LD_INT 0
26345: PPUSH
26346: PPUSH
26347: PPUSH
// if not richard_saved then
26348: LD_EXP 40
26352: NOT
26353: IFFALSE 26357
// exit ;
26355: GO 26409
// wasRichardDialog = true ;
26357: LD_ADDR_EXP 31
26361: PUSH
26362: LD_INT 1
26364: ST_TO_ADDR
// DialogueOn ;
26365: CALL_OW 6
// Say ( vsevolod , D2vse-14 ) ;
26369: LD_EXP 1
26373: PPUSH
26374: LD_STRING D2vse-14
26376: PPUSH
26377: CALL_OW 88
// Say ( richard , D2richard-6 ) ;
26381: LD_EXP 9
26385: PPUSH
26386: LD_STRING D2richard-6
26388: PPUSH
26389: CALL_OW 88
// Say ( vsevolod , D2vse-15 ) ;
26393: LD_EXP 1
26397: PPUSH
26398: LD_STRING D2vse-15
26400: PPUSH
26401: CALL_OW 88
// DialogueOff ;
26405: CALL_OW 7
// end ;
26409: LD_VAR 0 1
26413: RET
// function makeAliance ( ) ; var un , i , del , ved ; begin
26414: LD_INT 0
26416: PPUSH
26417: PPUSH
26418: PPUSH
26419: PPUSH
26420: PPUSH
// SetAttitude ( you , arab , att_friend , true ) ;
26421: LD_EXP 21
26425: PPUSH
26426: LD_EXP 23
26430: PPUSH
26431: LD_INT 1
26433: PPUSH
26434: LD_INT 1
26436: PPUSH
26437: CALL_OW 80
// ChangeSideFog ( arab , you ) ;
26441: LD_EXP 23
26445: PPUSH
26446: LD_EXP 21
26450: PPUSH
26451: CALL_OW 343
// ViewMineAtPos ( 117 , 63 , you ) ;
26455: LD_INT 117
26457: PPUSH
26458: LD_INT 63
26460: PPUSH
26461: LD_EXP 21
26465: PPUSH
26466: CALL_OW 457
// del = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_class , 2 ] ] ) + 0 ;
26470: LD_ADDR_VAR 0 4
26474: PUSH
26475: LD_INT 52
26477: PUSH
26478: EMPTY
26479: LIST
26480: PUSH
26481: LD_INT 22
26483: PUSH
26484: LD_EXP 23
26488: PUSH
26489: EMPTY
26490: LIST
26491: LIST
26492: PUSH
26493: LD_INT 25
26495: PUSH
26496: LD_INT 2
26498: PUSH
26499: EMPTY
26500: LIST
26501: LIST
26502: PUSH
26503: EMPTY
26504: LIST
26505: LIST
26506: LIST
26507: PPUSH
26508: CALL_OW 69
26512: PUSH
26513: LD_INT 0
26515: PLUS
26516: ST_TO_ADDR
// ved = FilterAllUnits ( [ [ f_placed ] , [ f_side , arab ] , [ f_class , class_scientistic ] ] ) + 0 ;
26517: LD_ADDR_VAR 0 5
26521: PUSH
26522: LD_INT 52
26524: PUSH
26525: EMPTY
26526: LIST
26527: PUSH
26528: LD_INT 22
26530: PUSH
26531: LD_EXP 23
26535: PUSH
26536: EMPTY
26537: LIST
26538: LIST
26539: PUSH
26540: LD_INT 25
26542: PUSH
26543: LD_INT 4
26545: PUSH
26546: EMPTY
26547: LIST
26548: LIST
26549: PUSH
26550: EMPTY
26551: LIST
26552: LIST
26553: LIST
26554: PPUSH
26555: CALL_OW 69
26559: PUSH
26560: LD_INT 0
26562: PLUS
26563: ST_TO_ADDR
// if ved < 3 then
26564: LD_VAR 0 5
26568: PUSH
26569: LD_INT 3
26571: LESS
26572: IFFALSE 26745
// begin for i = 1 to 5 - ved do
26574: LD_ADDR_VAR 0 3
26578: PUSH
26579: DOUBLE
26580: LD_INT 1
26582: DEC
26583: ST_TO_ADDR
26584: LD_INT 5
26586: PUSH
26587: LD_VAR 0 5
26591: MINUS
26592: PUSH
26593: FOR_TO
26594: IFFALSE 26743
// begin uc_side = arab ;
26596: LD_ADDR_OWVAR 20
26600: PUSH
26601: LD_EXP 23
26605: ST_TO_ADDR
// uc_nation = nation_arabian ;
26606: LD_ADDR_OWVAR 21
26610: PUSH
26611: LD_INT 2
26613: ST_TO_ADDR
// hc_attr = [ 10 , 11 ] ;
26614: LD_ADDR_OWVAR 29
26618: PUSH
26619: LD_INT 10
26621: PUSH
26622: LD_INT 11
26624: PUSH
26625: EMPTY
26626: LIST
26627: LIST
26628: ST_TO_ADDR
// hc_class = 4 ;
26629: LD_ADDR_OWVAR 28
26633: PUSH
26634: LD_INT 4
26636: ST_TO_ADDR
// hc_importance = 10 ;
26637: LD_ADDR_OWVAR 32
26641: PUSH
26642: LD_INT 10
26644: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
26645: LD_ADDR_OWVAR 27
26649: PUSH
26650: LD_INT 1
26652: PPUSH
26653: LD_INT 2
26655: PPUSH
26656: CALL_OW 12
26660: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 4 , 7 ) ] ;
26661: LD_ADDR_OWVAR 31
26665: PUSH
26666: LD_INT 0
26668: PPUSH
26669: LD_INT 4
26671: PPUSH
26672: CALL_OW 12
26676: PUSH
26677: LD_INT 0
26679: PPUSH
26680: LD_INT 4
26682: PPUSH
26683: CALL_OW 12
26687: PUSH
26688: LD_INT 0
26690: PPUSH
26691: LD_INT 4
26693: PPUSH
26694: CALL_OW 12
26698: PUSH
26699: LD_INT 4
26701: PPUSH
26702: LD_INT 7
26704: PPUSH
26705: CALL_OW 12
26709: PUSH
26710: EMPTY
26711: LIST
26712: LIST
26713: LIST
26714: LIST
26715: ST_TO_ADDR
// un = CreateHuman ;
26716: LD_ADDR_VAR 0 2
26720: PUSH
26721: CALL_OW 44
26725: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
26726: LD_VAR 0 2
26730: PPUSH
26731: LD_INT 33
26733: PPUSH
26734: LD_INT 0
26736: PPUSH
26737: CALL_OW 49
// end ;
26741: GO 26593
26743: POP
26744: POP
// end ; if del <= 3 then
26745: LD_VAR 0 4
26749: PUSH
26750: LD_INT 3
26752: LESSEQUAL
26753: IFFALSE 26926
// begin for i = 1 to 5 - del do
26755: LD_ADDR_VAR 0 3
26759: PUSH
26760: DOUBLE
26761: LD_INT 1
26763: DEC
26764: ST_TO_ADDR
26765: LD_INT 5
26767: PUSH
26768: LD_VAR 0 4
26772: MINUS
26773: PUSH
26774: FOR_TO
26775: IFFALSE 26924
// begin uc_side = arab ;
26777: LD_ADDR_OWVAR 20
26781: PUSH
26782: LD_EXP 23
26786: ST_TO_ADDR
// uc_nation = nation_arabian ;
26787: LD_ADDR_OWVAR 21
26791: PUSH
26792: LD_INT 2
26794: ST_TO_ADDR
// hc_attr = [ 10 , 11 ] ;
26795: LD_ADDR_OWVAR 29
26799: PUSH
26800: LD_INT 10
26802: PUSH
26803: LD_INT 11
26805: PUSH
26806: EMPTY
26807: LIST
26808: LIST
26809: ST_TO_ADDR
// hc_class = class_engineer ;
26810: LD_ADDR_OWVAR 28
26814: PUSH
26815: LD_INT 2
26817: ST_TO_ADDR
// hc_importance = 10 ;
26818: LD_ADDR_OWVAR 32
26822: PUSH
26823: LD_INT 10
26825: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
26826: LD_ADDR_OWVAR 27
26830: PUSH
26831: LD_INT 1
26833: PPUSH
26834: LD_INT 2
26836: PPUSH
26837: CALL_OW 12
26841: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 4 , 7 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
26842: LD_ADDR_OWVAR 31
26846: PUSH
26847: LD_INT 0
26849: PPUSH
26850: LD_INT 4
26852: PPUSH
26853: CALL_OW 12
26857: PUSH
26858: LD_INT 4
26860: PPUSH
26861: LD_INT 7
26863: PPUSH
26864: CALL_OW 12
26868: PUSH
26869: LD_INT 0
26871: PPUSH
26872: LD_INT 4
26874: PPUSH
26875: CALL_OW 12
26879: PUSH
26880: LD_INT 0
26882: PPUSH
26883: LD_INT 4
26885: PPUSH
26886: CALL_OW 12
26890: PUSH
26891: EMPTY
26892: LIST
26893: LIST
26894: LIST
26895: LIST
26896: ST_TO_ADDR
// un = CreateHuman ;
26897: LD_ADDR_VAR 0 2
26901: PUSH
26902: CALL_OW 44
26906: ST_TO_ADDR
// PlaceUnitArea ( un , CyanSpawn , false ) ;
26907: LD_VAR 0 2
26911: PPUSH
26912: LD_INT 33
26914: PPUSH
26915: LD_INT 0
26917: PPUSH
26918: CALL_OW 49
// end ;
26922: GO 26774
26924: POP
26925: POP
// end ; for i in arab_attack_list do
26926: LD_ADDR_VAR 0 3
26930: PUSH
26931: LD_EXP 28
26935: PUSH
26936: FOR_IN
26937: IFFALSE 26950
// ComStop ( i ) ;
26939: LD_VAR 0 3
26943: PPUSH
26944: CALL_OW 141
26948: GO 26936
26950: POP
26951: POP
// dif_arab_vyroba_utok_wait = 6 6$00 ;
26952: LD_ADDR_EXP 70
26956: PUSH
26957: LD_INT 12600
26959: ST_TO_ADDR
// dif_auto_vyroba_sance = [ 10 , 30 , 50 , 85 ] ;
26960: LD_ADDR_EXP 74
26964: PUSH
26965: LD_INT 10
26967: PUSH
26968: LD_INT 30
26970: PUSH
26971: LD_INT 50
26973: PUSH
26974: LD_INT 85
26976: PUSH
26977: EMPTY
26978: LIST
26979: LIST
26980: LIST
26981: LIST
26982: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , arab ] , [ f_placed ] ] ) do
26983: LD_ADDR_VAR 0 3
26987: PUSH
26988: LD_INT 22
26990: PUSH
26991: LD_EXP 23
26995: PUSH
26996: EMPTY
26997: LIST
26998: LIST
26999: PUSH
27000: LD_INT 52
27002: PUSH
27003: EMPTY
27004: LIST
27005: PUSH
27006: EMPTY
27007: LIST
27008: LIST
27009: PPUSH
27010: CALL_OW 69
27014: PUSH
27015: FOR_IN
27016: IFFALSE 27034
// NormalAttack ( you , i ) ;
27018: LD_EXP 21
27022: PPUSH
27023: LD_VAR 0 3
27027: PPUSH
27028: CALL_OW 472
27032: GO 27015
27034: POP
27035: POP
// if IsOk ( ar_lab2 ) and not GetTech ( tech_opto3 , arab ) = state_researched then
27036: LD_INT 100
27038: PPUSH
27039: CALL_OW 302
27043: PUSH
27044: LD_INT 62
27046: PPUSH
27047: LD_EXP 23
27051: PPUSH
27052: CALL_OW 321
27056: PUSH
27057: LD_INT 2
27059: EQUAL
27060: NOT
27061: AND
27062: IFFALSE 27133
// begin if GetSide ( ar_lab2 ) = arab and UnitsInside ( ar_lab2 ) = 0 then
27064: LD_INT 100
27066: PPUSH
27067: CALL_OW 255
27071: PUSH
27072: LD_EXP 23
27076: EQUAL
27077: PUSH
27078: LD_INT 100
27080: PPUSH
27081: CALL_OW 313
27085: PUSH
27086: LD_INT 0
27088: EQUAL
27089: AND
27090: IFFALSE 27133
// PlaceHumanInUnit ( VytvorCloveka ( 4 , dif_enemy_min_skill , dif_enemy_max_skill , GetNation ( ar_lab2 ) , GetSide ( ar_lab2 ) ) , ar_lab2 ) ;
27092: LD_INT 4
27094: PPUSH
27095: LD_EXP 64
27099: PPUSH
27100: LD_EXP 65
27104: PPUSH
27105: LD_INT 100
27107: PPUSH
27108: CALL_OW 248
27112: PPUSH
27113: LD_INT 100
27115: PPUSH
27116: CALL_OW 255
27120: PPUSH
27121: CALL 2566 0 5
27125: PPUSH
27126: LD_INT 100
27128: PPUSH
27129: CALL_OW 52
// end ; if IsInUnit ( richard ) then
27133: LD_EXP 9
27137: PPUSH
27138: CALL_OW 310
27142: IFFALSE 27153
// ComExitBuilding ( richard ) ;
27144: LD_EXP 9
27148: PPUSH
27149: CALL_OW 122
// end ;
27153: LD_VAR 0 1
27157: RET
// every 0 0$2 trigger startAttackCountdown and buildtalk2 do
27158: LD_EXP 33
27162: PUSH
27163: LD_EXP 18
27167: AND
27168: IFFALSE 27551
27170: GO 27172
27172: DISABLE
// begin Wait ( Rand ( 0 0$30 , 0 0$45 ) ) ;
27173: LD_INT 1050
27175: PPUSH
27176: LD_INT 1575
27178: PPUSH
27179: CALL_OW 12
27183: PPUSH
27184: CALL_OW 67
// DialogueOn ;
27188: CALL_OW 6
// SayRadio ( platonov , D2plat-1-2 ) ;
27192: LD_EXP 13
27196: PPUSH
27197: LD_STRING D2plat-1-2
27199: PPUSH
27200: CALL_OW 94
// if videlNepritele then
27204: LD_EXP 34
27208: IFFALSE 27224
// Say ( vsevolod , D2vse-10 ) else
27210: LD_EXP 1
27214: PPUSH
27215: LD_STRING D2vse-10
27217: PPUSH
27218: CALL_OW 88
27222: GO 27236
// Say ( vsevolod , D2vse-9 ) ;
27224: LD_EXP 1
27228: PPUSH
27229: LD_STRING D2vse-9
27231: PPUSH
27232: CALL_OW 88
// SayRadio ( platonov , D2plat-2 ) ;
27236: LD_EXP 13
27240: PPUSH
27241: LD_STRING D2plat-2
27243: PPUSH
27244: CALL_OW 94
// if IsOk ( karamazov ) and IsPlaced ( karamazov ) then
27248: LD_EXP 5
27252: PPUSH
27253: CALL_OW 302
27257: PUSH
27258: LD_EXP 5
27262: PPUSH
27263: CALL_OW 305
27267: AND
27268: IFFALSE 27284
// Say ( karamazov , D2-karam-1 ) else
27270: LD_EXP 5
27274: PPUSH
27275: LD_STRING D2-karam-1
27277: PPUSH
27278: CALL_OW 88
27282: GO 27296
// Say ( NajdiDelnika , D2-karam-1 ) ;
27284: CALL 13179 0 0
27288: PPUSH
27289: LD_STRING D2-karam-1
27291: PPUSH
27292: CALL_OW 88
// Wait ( 0 0$0.2 ) ;
27296: LD_INT 7
27298: PPUSH
27299: CALL_OW 67
// case Query ( materialquery ) of 1 :
27303: LD_STRING materialquery
27305: PPUSH
27306: CALL_OW 97
27310: PUSH
27311: LD_INT 1
27313: DOUBLE
27314: EQUAL
27315: IFTRUE 27319
27317: GO 27367
27319: POP
// begin Say ( vsevolod , D2vse-11 ) ;
27320: LD_EXP 1
27324: PPUSH
27325: LD_STRING D2vse-11
27327: PPUSH
27328: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27332: LD_EXP 13
27336: PPUSH
27337: LD_STRING D2plat-3
27339: PPUSH
27340: CALL_OW 94
// potrebovalMaterial = true ;
27344: LD_ADDR_EXP 35
27348: PUSH
27349: LD_INT 1
27351: ST_TO_ADDR
// SetCargo ( platCargo , mat_cans , 100 ) ;
27352: LD_INT 106
27354: PPUSH
27355: LD_INT 1
27357: PPUSH
27358: LD_INT 100
27360: PPUSH
27361: CALL_OW 290
// end ; 2 :
27365: GO 27516
27367: LD_INT 2
27369: DOUBLE
27370: EQUAL
27371: IFTRUE 27375
27373: GO 27423
27375: POP
// begin Say ( vsevolod , D2vse-12 ) ;
27376: LD_EXP 1
27380: PPUSH
27381: LD_STRING D2vse-12
27383: PPUSH
27384: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27388: LD_EXP 13
27392: PPUSH
27393: LD_STRING D2plat-3
27395: PPUSH
27396: CALL_OW 94
// potrebovalMaterial = true ;
27400: LD_ADDR_EXP 35
27404: PUSH
27405: LD_INT 1
27407: ST_TO_ADDR
// SetCargo ( platCargo , mat_oil , 100 ) ;
27408: LD_INT 106
27410: PPUSH
27411: LD_INT 2
27413: PPUSH
27414: LD_INT 100
27416: PPUSH
27417: CALL_OW 290
// end ; 3 :
27421: GO 27516
27423: LD_INT 3
27425: DOUBLE
27426: EQUAL
27427: IFTRUE 27431
27429: GO 27492
27431: POP
// begin Say ( vsevolod , D2vse-13 ) ;
27432: LD_EXP 1
27436: PPUSH
27437: LD_STRING D2vse-13
27439: PPUSH
27440: CALL_OW 88
// SayRadio ( platonov , D2plat-3 ) ;
27444: LD_EXP 13
27448: PPUSH
27449: LD_STRING D2plat-3
27451: PPUSH
27452: CALL_OW 94
// potrebovalMaterial = true ;
27456: LD_ADDR_EXP 35
27460: PUSH
27461: LD_INT 1
27463: ST_TO_ADDR
// SetCargo ( platCargo , mat_siberit , 60 ) ;
27464: LD_INT 106
27466: PPUSH
27467: LD_INT 3
27469: PPUSH
27470: LD_INT 60
27472: PPUSH
27473: CALL_OW 290
// AddCargo ( platCargo , mat_cans , 40 ) ;
27477: LD_INT 106
27479: PPUSH
27480: LD_INT 1
27482: PPUSH
27483: LD_INT 40
27485: PPUSH
27486: CALL_OW 291
// end ; 4 :
27490: GO 27516
27492: LD_INT 4
27494: DOUBLE
27495: EQUAL
27496: IFTRUE 27500
27498: GO 27515
27500: POP
// begin Say ( vsevolod , D2vse-10-2 ) ;
27501: LD_EXP 1
27505: PPUSH
27506: LD_STRING D2vse-10-2
27508: PPUSH
27509: CALL_OW 88
// end ; end ;
27513: GO 27516
27515: POP
// Wait ( 0 0$0.2 ) ;
27516: LD_INT 7
27518: PPUSH
27519: CALL_OW 67
// DialogueOff ;
27523: CALL_OW 7
// ChangeMissionObjectives ( M05 ) ;
27527: LD_STRING M05
27529: PPUSH
27530: CALL_OW 337
// if potrebovalMaterial then
27534: LD_EXP 35
27538: IFFALSE 27551
// begin Wait ( 0 0$50 ) ;
27540: LD_INT 1750
27542: PPUSH
27543: CALL_OW 67
// placePlatonovCargo ( ) ;
27547: CALL 31183 0 0
// end ; end ;
27551: END
// export bylVAmBazi ; every 0 0$1 trigger FilterAllUnits ( [ [ f_inarea , AmikBazaDetect ] , [ f_side , you ] ] ) do
27552: LD_INT 95
27554: PUSH
27555: LD_INT 44
27557: PUSH
27558: EMPTY
27559: LIST
27560: LIST
27561: PUSH
27562: LD_INT 22
27564: PUSH
27565: LD_EXP 21
27569: PUSH
27570: EMPTY
27571: LIST
27572: LIST
27573: PUSH
27574: EMPTY
27575: LIST
27576: LIST
27577: PPUSH
27578: CALL_OW 69
27582: IFFALSE 27595
27584: GO 27586
27586: DISABLE
// begin bylVAmBazi = true ;
27587: LD_ADDR_EXP 83
27591: PUSH
27592: LD_INT 1
27594: ST_TO_ADDR
// end ;
27595: END
// every 0 0$1 trigger SeeXY ( you , 245 , 111 ) and not bylVAmBazi do
27596: LD_EXP 21
27600: PPUSH
27601: LD_INT 245
27603: PPUSH
27604: LD_INT 111
27606: PPUSH
27607: CALL_OW 293
27611: PUSH
27612: LD_EXP 83
27616: NOT
27617: AND
27618: IFFALSE 27731
27620: GO 27622
27622: DISABLE
// begin Say ( NearestUnitToXY ( FilterAllUnits ( [ [ f_side , you ] , [ f_nation , nation_russian ] , [ f_type , unit_human ] ] ) , 245 , 111 ) , D2nekdo-4 ) ;
27623: LD_INT 22
27625: PUSH
27626: LD_EXP 21
27630: PUSH
27631: EMPTY
27632: LIST
27633: LIST
27634: PUSH
27635: LD_INT 23
27637: PUSH
27638: LD_INT 3
27640: PUSH
27641: EMPTY
27642: LIST
27643: LIST
27644: PUSH
27645: LD_INT 21
27647: PUSH
27648: LD_INT 1
27650: PUSH
27651: EMPTY
27652: LIST
27653: LIST
27654: PUSH
27655: EMPTY
27656: LIST
27657: LIST
27658: LIST
27659: PPUSH
27660: CALL_OW 69
27664: PPUSH
27665: LD_INT 245
27667: PPUSH
27668: LD_INT 111
27670: PPUSH
27671: CALL_OW 73
27675: PPUSH
27676: LD_STRING D2nekdo-4
27678: PPUSH
27679: CALL_OW 88
// if IsOk ( Kvantovy ) and IsPlaced ( Kvantovy ) then
27683: LD_EXP 12
27687: PPUSH
27688: CALL_OW 302
27692: PUSH
27693: LD_EXP 12
27697: PPUSH
27698: CALL_OW 305
27702: AND
27703: IFFALSE 27719
// Say ( kvantovy , D2kvant-2 ) else
27705: LD_EXP 12
27709: PPUSH
27710: LD_STRING D2kvant-2
27712: PPUSH
27713: CALL_OW 88
27717: GO 27731
// Say ( NajdiVojaka , D2kvant-2 ) ;
27719: CALL 12465 0 0
27723: PPUSH
27724: LD_STRING D2kvant-2
27726: PPUSH
27727: CALL_OW 88
// end ;
27731: END
// every 0 0$1 trigger AlianceSAraby do var solBlue , solPurple ;
27732: CALL 2247 0 0
27736: IFFALSE 27896
27738: GO 27740
27740: DISABLE
27741: LD_INT 0
27743: PPUSH
27744: PPUSH
// begin Wait ( 3 3$00 ) ;
27745: LD_INT 6300
27747: PPUSH
27748: CALL_OW 67
// if AlianceSAraby then
27752: CALL 2247 0 0
27756: IFFALSE 27896
// begin solBlue = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_human ] , [ f_class , class_soldier ] ] ) ;
27758: LD_ADDR_VAR 0 1
27762: PUSH
27763: LD_INT 22
27765: PUSH
27766: LD_EXP 24
27770: PUSH
27771: EMPTY
27772: LIST
27773: LIST
27774: PUSH
27775: LD_INT 21
27777: PUSH
27778: LD_INT 1
27780: PUSH
27781: EMPTY
27782: LIST
27783: LIST
27784: PUSH
27785: LD_INT 25
27787: PUSH
27788: LD_INT 1
27790: PUSH
27791: EMPTY
27792: LIST
27793: LIST
27794: PUSH
27795: EMPTY
27796: LIST
27797: LIST
27798: LIST
27799: PPUSH
27800: CALL_OW 69
27804: ST_TO_ADDR
// solPurple = FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_human ] , [ f_class , class_soldier ] ] ) ;
27805: LD_ADDR_VAR 0 2
27809: PUSH
27810: LD_INT 22
27812: PUSH
27813: LD_EXP 22
27817: PUSH
27818: EMPTY
27819: LIST
27820: LIST
27821: PUSH
27822: LD_INT 21
27824: PUSH
27825: LD_INT 1
27827: PUSH
27828: EMPTY
27829: LIST
27830: LIST
27831: PUSH
27832: LD_INT 25
27834: PUSH
27835: LD_INT 1
27837: PUSH
27838: EMPTY
27839: LIST
27840: LIST
27841: PUSH
27842: EMPTY
27843: LIST
27844: LIST
27845: LIST
27846: PPUSH
27847: CALL_OW 69
27851: ST_TO_ADDR
// if solBlue and solPurple then
27852: LD_VAR 0 1
27856: PUSH
27857: LD_VAR 0 2
27861: AND
27862: IFFALSE 27896
// begin SayRadio ( solPurple [ 1 ] , D2amik-1 ) ;
27864: LD_VAR 0 2
27868: PUSH
27869: LD_INT 1
27871: ARRAY
27872: PPUSH
27873: LD_STRING D2amik-1
27875: PPUSH
27876: CALL_OW 94
// SayRadio ( solBlue [ 1 ] , D2amik-2 ) ;
27880: LD_VAR 0 1
27884: PUSH
27885: LD_INT 1
27887: ARRAY
27888: PPUSH
27889: LD_STRING D2amik-2
27891: PPUSH
27892: CALL_OW 94
// end ; end ; end ;
27896: PPOPN 2
27898: END
// export wasBehemotBuildTalk ; export function BehemotBuildTalk ; begin
27899: LD_INT 0
27901: PPUSH
// if not wasBehemotBuildTalk then
27902: LD_EXP 84
27906: NOT
27907: IFFALSE 27949
// begin wasBehemotBuildTalk = true ;
27909: LD_ADDR_EXP 84
27913: PUSH
27914: LD_INT 1
27916: ST_TO_ADDR
// DialogueOn ;
27917: CALL_OW 6
// Say ( NajdiDelnika , D2nekdo-8 ) ;
27921: CALL 13179 0 0
27925: PPUSH
27926: LD_STRING D2nekdo-8
27928: PPUSH
27929: CALL_OW 88
// Say ( vsevolod , D2vse-17 ) ;
27933: LD_EXP 1
27937: PPUSH
27938: LD_STRING D2vse-17
27940: PPUSH
27941: CALL_OW 88
// DialogueOff ;
27945: CALL_OW 7
// end ; end ; end_of_file
27949: LD_VAR 0 1
27953: RET
// export ar_vznasedlo , ar_miner ; var readyToSneak ; var sneakType ; var checkpoint ; every 0 0$1 do
27954: GO 27956
27956: DISABLE
// begin readyToSneak = false ;
27957: LD_ADDR_LOC 6
27961: PUSH
27962: LD_INT 0
27964: ST_TO_ADDR
// checkpoint = false ;
27965: LD_ADDR_LOC 8
27969: PUSH
27970: LD_INT 0
27972: ST_TO_ADDR
// end ;
27973: END
// every 0 0$10 trigger FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) do
27974: LD_INT 22
27976: PUSH
27977: LD_EXP 21
27981: PUSH
27982: EMPTY
27983: LIST
27984: LIST
27985: PUSH
27986: LD_INT 21
27988: PUSH
27989: LD_INT 3
27991: PUSH
27992: EMPTY
27993: LIST
27994: LIST
27995: PUSH
27996: EMPTY
27997: LIST
27998: LIST
27999: PPUSH
28000: CALL_OW 69
28004: IFFALSE 28027
28006: GO 28008
28008: DISABLE
// begin Wait ( 3 3$50 ) ;
28009: LD_INT 8050
28011: PPUSH
28012: CALL_OW 67
// if not AlianceSAraby then
28016: CALL 2247 0 0
28020: NOT
28021: IFFALSE 28027
// StartArMiner ( ) ;
28023: CALL 28028 0 0
// end ;
28027: END
// function StartArMiner ( ) ; var r ; begin
28028: LD_INT 0
28030: PPUSH
28031: PPUSH
// uc_side = arab ;
28032: LD_ADDR_OWVAR 20
28036: PUSH
28037: LD_EXP 23
28041: ST_TO_ADDR
// uc_nation = nation_arabian ;
28042: LD_ADDR_OWVAR 21
28046: PUSH
28047: LD_INT 2
28049: ST_TO_ADDR
// vc_chassis = ar_hovercraft ;
28050: LD_ADDR_OWVAR 37
28054: PUSH
28055: LD_INT 11
28057: ST_TO_ADDR
// vc_control = control_manual ;
28058: LD_ADDR_OWVAR 38
28062: PUSH
28063: LD_INT 1
28065: ST_TO_ADDR
// vc_engine = engine_solar ;
28066: LD_ADDR_OWVAR 39
28070: PUSH
28071: LD_INT 2
28073: ST_TO_ADDR
// vc_fuel_battery = 100 ;
28074: LD_ADDR_OWVAR 41
28078: PUSH
28079: LD_INT 100
28081: ST_TO_ADDR
// vc_weapon = ar_radar ;
28082: LD_ADDR_OWVAR 40
28086: PUSH
28087: LD_INT 30
28089: ST_TO_ADDR
// ar_vznasedlo = CreateVehicle ;
28090: LD_ADDR_EXP 85
28094: PUSH
28095: CALL_OW 45
28099: ST_TO_ADDR
// PlaceUnitArea ( ar_vznasedlo , arcarpark , false ) ;
28100: LD_EXP 85
28104: PPUSH
28105: LD_INT 30
28107: PPUSH
28108: LD_INT 0
28110: PPUSH
28111: CALL_OW 49
// uc_side = arab ;
28115: LD_ADDR_OWVAR 20
28119: PUSH
28120: LD_EXP 23
28124: ST_TO_ADDR
// uc_nation = nation_arabian ;
28125: LD_ADDR_OWVAR 21
28129: PUSH
28130: LD_INT 2
28132: ST_TO_ADDR
// hc_attr = [ 11 , 12 ] ;
28133: LD_ADDR_OWVAR 29
28137: PUSH
28138: LD_INT 11
28140: PUSH
28141: LD_INT 12
28143: PUSH
28144: EMPTY
28145: LIST
28146: LIST
28147: ST_TO_ADDR
// hc_class = class_soldier ;
28148: LD_ADDR_OWVAR 28
28152: PUSH
28153: LD_INT 1
28155: ST_TO_ADDR
// hc_sex = sex_male ;
28156: LD_ADDR_OWVAR 27
28160: PUSH
28161: LD_INT 1
28163: ST_TO_ADDR
// hc_gallery := 02 ;
28164: LD_ADDR_OWVAR 33
28168: PUSH
28169: LD_STRING 02
28171: ST_TO_ADDR
// hc_face_number := 2 ;
28172: LD_ADDR_OWVAR 34
28176: PUSH
28177: LD_INT 2
28179: ST_TO_ADDR
// hc_name = Don Tworry ;
28180: LD_ADDR_OWVAR 26
28184: PUSH
28185: LD_STRING Don Tworry
28187: ST_TO_ADDR
// hc_skills = [ ( rand ( 5 , 6 + difficulty ) ) , ( rand ( 1 , 5 ) ) , ( rand ( 8 , 10 ) ) , ( rand ( 1 , 4 ) ) ] ;
28188: LD_ADDR_OWVAR 31
28192: PUSH
28193: LD_INT 5
28195: PPUSH
28196: LD_INT 6
28198: PUSH
28199: LD_OWVAR 67
28203: PLUS
28204: PPUSH
28205: CALL_OW 12
28209: PUSH
28210: LD_INT 1
28212: PPUSH
28213: LD_INT 5
28215: PPUSH
28216: CALL_OW 12
28220: PUSH
28221: LD_INT 8
28223: PPUSH
28224: LD_INT 10
28226: PPUSH
28227: CALL_OW 12
28231: PUSH
28232: LD_INT 1
28234: PPUSH
28235: LD_INT 4
28237: PPUSH
28238: CALL_OW 12
28242: PUSH
28243: EMPTY
28244: LIST
28245: LIST
28246: LIST
28247: LIST
28248: ST_TO_ADDR
// ar_miner = CreateHuman ;
28249: LD_ADDR_EXP 86
28253: PUSH
28254: CALL_OW 44
28258: ST_TO_ADDR
// PlaceHumanInUnit ( ar_miner , ar_vznasedlo ) ;
28259: LD_EXP 86
28263: PPUSH
28264: LD_EXP 85
28268: PPUSH
28269: CALL_OW 52
// Cesta ;
28273: CALL 28282 0 0
// end ;
28277: LD_VAR 0 1
28281: RET
// function Cesta ; var Target ; begin
28282: LD_INT 0
28284: PPUSH
28285: PPUSH
// Wait ( 0 0$3 ) ;
28286: LD_INT 105
28288: PPUSH
28289: CALL_OW 67
// ComMoveXY ( Ar_vznasedlo , 122 , 89 ) ;
28293: LD_EXP 85
28297: PPUSH
28298: LD_INT 122
28300: PPUSH
28301: LD_INT 89
28303: PPUSH
28304: CALL_OW 111
// AddComMoveXY ( Ar_vznasedlo , 87 , 86 ) ;
28308: LD_EXP 85
28312: PPUSH
28313: LD_INT 87
28315: PPUSH
28316: LD_INT 86
28318: PPUSH
28319: CALL_OW 171
// AddComMoveXY ( Ar_vznasedlo , 47 , 71 ) ;
28323: LD_EXP 85
28327: PPUSH
28328: LD_INT 47
28330: PPUSH
28331: LD_INT 71
28333: PPUSH
28334: CALL_OW 171
// if FilterAllUnits ( [ [ f_inarea , RuBaza2 ] , [ f_side , you ] , [ f_type , unit_building ] ] ) >= 2 then
28338: LD_INT 95
28340: PUSH
28341: LD_INT 38
28343: PUSH
28344: EMPTY
28345: LIST
28346: LIST
28347: PUSH
28348: LD_INT 22
28350: PUSH
28351: LD_EXP 21
28355: PUSH
28356: EMPTY
28357: LIST
28358: LIST
28359: PUSH
28360: LD_INT 21
28362: PUSH
28363: LD_INT 3
28365: PUSH
28366: EMPTY
28367: LIST
28368: LIST
28369: PUSH
28370: EMPTY
28371: LIST
28372: LIST
28373: LIST
28374: PPUSH
28375: CALL_OW 69
28379: PUSH
28380: LD_INT 2
28382: GREATEREQUAL
28383: IFFALSE 28410
// begin AddComMoveXY ( Ar_vznasedlo , 51 , 93 ) ;
28385: LD_EXP 85
28389: PPUSH
28390: LD_INT 51
28392: PPUSH
28393: LD_INT 93
28395: PPUSH
28396: CALL_OW 171
// sneakType = 2 ;
28400: LD_ADDR_LOC 7
28404: PUSH
28405: LD_INT 2
28407: ST_TO_ADDR
// end else
28408: GO 28495
// if FilterAllUnits ( [ [ f_inarea , RuBaza1 ] , [ f_side , you ] , [ f_type , unit_building ] ] ) >= 2 then
28410: LD_INT 95
28412: PUSH
28413: LD_INT 37
28415: PUSH
28416: EMPTY
28417: LIST
28418: LIST
28419: PUSH
28420: LD_INT 22
28422: PUSH
28423: LD_EXP 21
28427: PUSH
28428: EMPTY
28429: LIST
28430: LIST
28431: PUSH
28432: LD_INT 21
28434: PUSH
28435: LD_INT 3
28437: PUSH
28438: EMPTY
28439: LIST
28440: LIST
28441: PUSH
28442: EMPTY
28443: LIST
28444: LIST
28445: LIST
28446: PPUSH
28447: CALL_OW 69
28451: PUSH
28452: LD_INT 2
28454: GREATEREQUAL
28455: IFFALSE 28495
// begin AddComMoveXY ( Ar_vznasedlo , 10 , 10 ) ;
28457: LD_EXP 85
28461: PPUSH
28462: LD_INT 10
28464: PPUSH
28465: LD_INT 10
28467: PPUSH
28468: CALL_OW 171
// AddComMoveXY ( Ar_vznasedlo , 44 , 7 ) ;
28472: LD_EXP 85
28476: PPUSH
28477: LD_INT 44
28479: PPUSH
28480: LD_INT 7
28482: PPUSH
28483: CALL_OW 171
// sneakType = 1 ;
28487: LD_ADDR_LOC 7
28491: PUSH
28492: LD_INT 1
28494: ST_TO_ADDR
// end ; Wait ( 0 0$8 ) ;
28495: LD_INT 280
28497: PPUSH
28498: CALL_OW 67
// SetFuel ( ar_vznasedlo , 100 ) ;
28502: LD_EXP 85
28506: PPUSH
28507: LD_INT 100
28509: PPUSH
28510: CALL_OW 240
// repeat begin Wait ( 0 0$1 ) ;
28514: LD_INT 35
28516: PPUSH
28517: CALL_OW 67
// if checkpoint and not HasTask ( ar_vznasedlo ) then
28521: LD_LOC 8
28525: PUSH
28526: LD_EXP 85
28530: PPUSH
28531: CALL_OW 314
28535: NOT
28536: AND
28537: IFFALSE 28547
// readyToSneak = true ;
28539: LD_ADDR_LOC 6
28543: PUSH
28544: LD_INT 1
28546: ST_TO_ADDR
// end until readyToSneak = true ;
28547: LD_LOC 6
28551: PUSH
28552: LD_INT 1
28554: EQUAL
28555: IFFALSE 28514
// end ;
28557: LD_VAR 0 1
28561: RET
// every 0 0$0.5 trigger IsInArea ( ar_vznasedlo , ArCheckpoint ) do
28562: LD_EXP 85
28566: PPUSH
28567: LD_INT 46
28569: PPUSH
28570: CALL_OW 308
28574: IFFALSE 28587
28576: GO 28578
28578: DISABLE
// checkpoint = true ;
28579: LD_ADDR_LOC 8
28583: PUSH
28584: LD_INT 1
28586: ST_TO_ADDR
28587: END
// every 0 0$0.6 trigger readyToSneak do
28588: LD_LOC 6
28592: IFFALSE 28633
28594: GO 28596
28596: DISABLE
// begin if IsInUnit ( Ar_miner ) then
28597: LD_EXP 86
28601: PPUSH
28602: CALL_OW 310
28606: IFFALSE 28617
// ComExitVehicle ( Ar_miner ) ;
28608: LD_EXP 86
28612: PPUSH
28613: CALL_OW 121
// Wait ( 0 0$0.6 ) ;
28617: LD_INT 21
28619: PPUSH
28620: CALL_OW 67
// Sneak ( Ar_miner ) ;
28624: LD_EXP 86
28628: PPUSH
28629: CALL 28634 0 1
// end ;
28633: END
// function Sneak ( kdo ) ; var list , a , letsBomb ; begin
28634: LD_INT 0
28636: PPUSH
28637: PPUSH
28638: PPUSH
28639: PPUSH
// letsBomb = 0 ;
28640: LD_ADDR_VAR 0 5
28644: PUSH
28645: LD_INT 0
28647: ST_TO_ADDR
// if not sneaktype then
28648: LD_LOC 7
28652: NOT
28653: IFFALSE 28663
// sneaktype = 1 ;
28655: LD_ADDR_LOC 7
28659: PUSH
28660: LD_INT 1
28662: ST_TO_ADDR
// AddComCrawl ( kdo ) ;
28663: LD_VAR 0 1
28667: PPUSH
28668: CALL_OW 197
// Wait ( 0 0$0.6 ) ;
28672: LD_INT 21
28674: PPUSH
28675: CALL_OW 67
// if sneakType = 1 then
28679: LD_LOC 7
28683: PUSH
28684: LD_INT 1
28686: EQUAL
28687: IFFALSE 28806
// begin List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28689: LD_ADDR_VAR 0 3
28693: PUSH
28694: LD_INT 22
28696: PUSH
28697: LD_EXP 21
28701: PUSH
28702: EMPTY
28703: LIST
28704: LIST
28705: PUSH
28706: LD_INT 21
28708: PUSH
28709: LD_INT 3
28711: PUSH
28712: EMPTY
28713: LIST
28714: LIST
28715: PUSH
28716: EMPTY
28717: LIST
28718: LIST
28719: PPUSH
28720: CALL_OW 69
28724: ST_TO_ADDR
// if not list then
28725: LD_VAR 0 3
28729: NOT
28730: IFFALSE 28770
// begin if IsInUnit ( vsevolod ) then
28732: LD_EXP 1
28736: PPUSH
28737: CALL_OW 310
28741: IFFALSE 28760
// list = IsInUnit ( vsevolod ) else
28743: LD_ADDR_VAR 0 3
28747: PUSH
28748: LD_EXP 1
28752: PPUSH
28753: CALL_OW 310
28757: ST_TO_ADDR
28758: GO 28770
// list = vsevolod ;
28760: LD_ADDR_VAR 0 3
28764: PUSH
28765: LD_EXP 1
28769: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
28770: LD_ADDR_VAR 0 4
28774: PUSH
28775: LD_VAR 0 3
28779: PPUSH
28780: LD_EXP 86
28784: PPUSH
28785: CALL_OW 74
28789: ST_TO_ADDR
// ComMoveUnit ( kdo , a ) ;
28790: LD_VAR 0 1
28794: PPUSH
28795: LD_VAR 0 4
28799: PPUSH
28800: CALL_OW 112
// end else
28804: GO 28952
// begin ComMoveXY ( kdo , 67 , 113 ) ;
28806: LD_VAR 0 1
28810: PPUSH
28811: LD_INT 67
28813: PPUSH
28814: LD_INT 113
28816: PPUSH
28817: CALL_OW 111
// AddComMoveXY ( kdo , 68 , 124 ) ;
28821: LD_VAR 0 1
28825: PPUSH
28826: LD_INT 68
28828: PPUSH
28829: LD_INT 124
28831: PPUSH
28832: CALL_OW 171
// List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28836: LD_ADDR_VAR 0 3
28840: PUSH
28841: LD_INT 22
28843: PUSH
28844: LD_EXP 21
28848: PUSH
28849: EMPTY
28850: LIST
28851: LIST
28852: PUSH
28853: LD_INT 21
28855: PUSH
28856: LD_INT 3
28858: PUSH
28859: EMPTY
28860: LIST
28861: LIST
28862: PUSH
28863: EMPTY
28864: LIST
28865: LIST
28866: PPUSH
28867: CALL_OW 69
28871: ST_TO_ADDR
// if not list then
28872: LD_VAR 0 3
28876: NOT
28877: IFFALSE 28917
// begin if IsInUnit ( vsevolod ) then
28879: LD_EXP 1
28883: PPUSH
28884: CALL_OW 310
28888: IFFALSE 28907
// list = IsInUnit ( vsevolod ) else
28890: LD_ADDR_VAR 0 3
28894: PUSH
28895: LD_EXP 1
28899: PPUSH
28900: CALL_OW 310
28904: ST_TO_ADDR
28905: GO 28917
// list = vsevolod ;
28907: LD_ADDR_VAR 0 3
28911: PUSH
28912: LD_EXP 1
28916: ST_TO_ADDR
// end ; A = NearestUnitToXY ( list , 71 , 136 ) ;
28917: LD_ADDR_VAR 0 4
28921: PUSH
28922: LD_VAR 0 3
28926: PPUSH
28927: LD_INT 71
28929: PPUSH
28930: LD_INT 136
28932: PPUSH
28933: CALL_OW 73
28937: ST_TO_ADDR
// AddComMoveUnit ( kdo , a ) ;
28938: LD_VAR 0 1
28942: PPUSH
28943: LD_VAR 0 4
28947: PPUSH
28948: CALL_OW 172
// end ; repeat begin List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
28952: LD_ADDR_VAR 0 3
28956: PUSH
28957: LD_INT 22
28959: PUSH
28960: LD_EXP 21
28964: PUSH
28965: EMPTY
28966: LIST
28967: LIST
28968: PUSH
28969: LD_INT 21
28971: PUSH
28972: LD_INT 3
28974: PUSH
28975: EMPTY
28976: LIST
28977: LIST
28978: PUSH
28979: EMPTY
28980: LIST
28981: LIST
28982: PPUSH
28983: CALL_OW 69
28987: ST_TO_ADDR
// if not list then
28988: LD_VAR 0 3
28992: NOT
28993: IFFALSE 29033
// begin if IsInUnit ( vsevolod ) then
28995: LD_EXP 1
28999: PPUSH
29000: CALL_OW 310
29004: IFFALSE 29023
// list = IsInUnit ( vsevolod ) else
29006: LD_ADDR_VAR 0 3
29010: PUSH
29011: LD_EXP 1
29015: PPUSH
29016: CALL_OW 310
29020: ST_TO_ADDR
29021: GO 29033
// list = vsevolod ;
29023: LD_ADDR_VAR 0 3
29027: PUSH
29028: LD_EXP 1
29032: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
29033: LD_ADDR_VAR 0 4
29037: PUSH
29038: LD_VAR 0 3
29042: PPUSH
29043: LD_EXP 86
29047: PPUSH
29048: CALL_OW 74
29052: ST_TO_ADDR
// if GetDistUnits ( ar_miner , a ) < 9 then
29053: LD_EXP 86
29057: PPUSH
29058: LD_VAR 0 4
29062: PPUSH
29063: CALL_OW 296
29067: PUSH
29068: LD_INT 9
29070: LESS
29071: IFFALSE 29108
// begin ComWalk ( ar_miner ) ;
29073: LD_EXP 86
29077: PPUSH
29078: CALL_OW 138
// Wait ( 0 0$0.8 ) ;
29082: LD_INT 28
29084: PPUSH
29085: CALL_OW 67
// letsBomb = 1 ;
29089: LD_ADDR_VAR 0 5
29093: PUSH
29094: LD_INT 1
29096: ST_TO_ADDR
// Podminuj ( ar_miner ) ;
29097: LD_EXP 86
29101: PPUSH
29102: CALL 29130 0 1
// end else
29106: GO 29115
// begin Wait ( 0 0$3 ) ;
29108: LD_INT 105
29110: PPUSH
29111: CALL_OW 67
// end ; end ; until letsBomb = 1 ;
29115: LD_VAR 0 5
29119: PUSH
29120: LD_INT 1
29122: EQUAL
29123: IFFALSE 28952
// end ;
29125: LD_VAR 0 2
29129: RET
// function Podminuj ( kdo ) ; var List , A ; begin
29130: LD_INT 0
29132: PPUSH
29133: PPUSH
29134: PPUSH
// repeat ; List := FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
29135: LD_ADDR_VAR 0 3
29139: PUSH
29140: LD_INT 22
29142: PUSH
29143: LD_EXP 21
29147: PUSH
29148: EMPTY
29149: LIST
29150: LIST
29151: PUSH
29152: LD_INT 21
29154: PUSH
29155: LD_INT 3
29157: PUSH
29158: EMPTY
29159: LIST
29160: LIST
29161: PUSH
29162: EMPTY
29163: LIST
29164: LIST
29165: PPUSH
29166: CALL_OW 69
29170: ST_TO_ADDR
// if not list then
29171: LD_VAR 0 3
29175: NOT
29176: IFFALSE 29216
// begin if IsInUnit ( vsevolod ) then
29178: LD_EXP 1
29182: PPUSH
29183: CALL_OW 310
29187: IFFALSE 29206
// list = IsInUnit ( vsevolod ) else
29189: LD_ADDR_VAR 0 3
29193: PUSH
29194: LD_EXP 1
29198: PPUSH
29199: CALL_OW 310
29203: ST_TO_ADDR
29204: GO 29216
// list = vsevolod ;
29206: LD_ADDR_VAR 0 3
29210: PUSH
29211: LD_EXP 1
29215: ST_TO_ADDR
// end ; A = NearestUnitToUnit ( List , Ar_miner ) ;
29216: LD_ADDR_VAR 0 4
29220: PUSH
29221: LD_VAR 0 3
29225: PPUSH
29226: LD_EXP 86
29230: PPUSH
29231: CALL_OW 74
29235: ST_TO_ADDR
// ComPlaceDelayedCharge ( Ar_miner , 1 , 1 , A ) ;
29236: LD_EXP 86
29240: PPUSH
29241: LD_INT 1
29243: PPUSH
29244: LD_INT 1
29246: PPUSH
29247: LD_VAR 0 4
29251: PPUSH
29252: CALL_OW 132
// Wait ( 0 0$5 ) ;
29256: LD_INT 175
29258: PPUSH
29259: CALL_OW 67
// until IsDead ( Ar_miner ) or IsPlaced ( Ar_miner ) = false ;
29263: LD_EXP 86
29267: PPUSH
29268: CALL_OW 301
29272: PUSH
29273: LD_EXP 86
29277: PPUSH
29278: CALL_OW 305
29282: PUSH
29283: LD_INT 0
29285: EQUAL
29286: OR
29287: IFFALSE 29135
// end ;
29289: LD_VAR 0 2
29293: RET
// every 0 0$1 trigger IsOk ( Ar_vznasedlo ) and readyToSneak and GetDistUnits ( ar_miner , ar_vznasedlo ) > 4 do
29294: LD_EXP 85
29298: PPUSH
29299: CALL_OW 302
29303: PUSH
29304: LD_LOC 6
29308: AND
29309: PUSH
29310: LD_EXP 86
29314: PPUSH
29315: LD_EXP 85
29319: PPUSH
29320: CALL_OW 296
29324: PUSH
29325: LD_INT 4
29327: GREATER
29328: AND
29329: IFFALSE 29362
29331: GO 29333
29333: DISABLE
// begin if GetSide ( ar_vznasedlo ) <> arab then
29334: LD_EXP 85
29338: PPUSH
29339: CALL_OW 255
29343: PUSH
29344: LD_EXP 23
29348: NONEQUAL
29349: IFFALSE 29353
// exit ;
29351: GO 29362
// KillUnit ( Ar_vznasedlo ) ;
29353: LD_EXP 85
29357: PPUSH
29358: CALL_OW 66
// end ; end_of_file
29362: END
// every 0 0$1 do var nakl , bedny ;
29363: GO 29365
29365: DISABLE
29366: LD_INT 0
29368: PPUSH
29369: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
29370: LD_ADDR_VAR 0 1
29374: PUSH
29375: LD_INT 22
29377: PUSH
29378: LD_EXP 22
29382: PUSH
29383: EMPTY
29384: LIST
29385: LIST
29386: PUSH
29387: LD_INT 21
29389: PUSH
29390: LD_INT 2
29392: PUSH
29393: EMPTY
29394: LIST
29395: LIST
29396: PUSH
29397: LD_INT 34
29399: PUSH
29400: LD_INT 12
29402: PUSH
29403: EMPTY
29404: LIST
29405: LIST
29406: PUSH
29407: EMPTY
29408: LIST
29409: LIST
29410: LIST
29411: PPUSH
29412: CALL_OW 69
29416: ST_TO_ADDR
// if nakl then
29417: LD_VAR 0 1
29421: IFFALSE 29594
// begin nakl = nakl [ 1 ] ;
29423: LD_ADDR_VAR 0 1
29427: PUSH
29428: LD_VAR 0 1
29432: PUSH
29433: LD_INT 1
29435: ARRAY
29436: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
29437: LD_VAR 0 1
29441: PPUSH
29442: CALL_OW 256
29446: PUSH
29447: LD_EXP 56
29451: LESS
29452: IFFALSE 29475
// begin ComMoveToArea ( nakl , PurpleRepair ) ;
29454: LD_VAR 0 1
29458: PPUSH
29459: LD_INT 26
29461: PPUSH
29462: CALL_OW 113
// Wait ( 2 2$20 ) ;
29466: LD_INT 4900
29468: PPUSH
29469: CALL_OW 67
// end else
29473: GO 29594
// if GetFuel ( nakl ) < 30 and GetDistUnitXY ( nakl , 119 , 8 ) and GetSide ( purple_ware ) = purple then
29475: LD_VAR 0 1
29479: PPUSH
29480: CALL_OW 261
29484: PUSH
29485: LD_INT 30
29487: LESS
29488: PUSH
29489: LD_VAR 0 1
29493: PPUSH
29494: LD_INT 119
29496: PPUSH
29497: LD_INT 8
29499: PPUSH
29500: CALL_OW 297
29504: AND
29505: PUSH
29506: LD_INT 105
29508: PPUSH
29509: CALL_OW 255
29513: PUSH
29514: LD_EXP 22
29518: EQUAL
29519: AND
29520: IFFALSE 29548
// begin ComMoveUnit ( nakl , purple_ware ) ;
29522: LD_VAR 0 1
29526: PPUSH
29527: LD_INT 105
29529: PPUSH
29530: CALL_OW 112
// AddComRefuel ( nakl , purple_ware ) ;
29534: LD_VAR 0 1
29538: PPUSH
29539: LD_INT 105
29541: PPUSH
29542: CALL_OW 210
// end else
29546: GO 29594
// begin bedny = GetListOfCratesInArea ( PurpleBazeOkoli ) ;
29548: LD_ADDR_VAR 0 2
29552: PUSH
29553: LD_INT 40
29555: PPUSH
29556: CALL_OW 435
29560: ST_TO_ADDR
// if bedny then
29561: LD_VAR 0 2
29565: IFFALSE 29594
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
29567: LD_VAR 0 1
29571: PPUSH
29572: LD_VAR 0 2
29576: PUSH
29577: LD_INT 1
29579: ARRAY
29580: PPUSH
29581: LD_VAR 0 2
29585: PUSH
29586: LD_INT 2
29588: ARRAY
29589: PPUSH
29590: CALL_OW 117
// end ; end ; enable ;
29594: ENABLE
// end ;
29595: PPOPN 2
29597: END
// function LinkVehicle ( Veh ) ; var mechs , un ; begin
29598: LD_INT 0
29600: PPUSH
29601: PPUSH
29602: PPUSH
// mechs = UnitsInside ( purple_contr ) ;
29603: LD_ADDR_VAR 0 3
29607: PUSH
29608: LD_INT 91
29610: PPUSH
29611: CALL_OW 313
29615: ST_TO_ADDR
// MechLink ( Veh , mechs ) ;
29616: LD_VAR 0 1
29620: PPUSH
29621: LD_VAR 0 3
29625: PPUSH
29626: CALL 29635 0 2
// end ;
29630: LD_VAR 0 2
29634: RET
// export function MechLink ( Veh , Mechs ) ; begin
29635: LD_INT 0
29637: PPUSH
// case mechs + 0 of 1 :
29638: LD_VAR 0 2
29642: PUSH
29643: LD_INT 0
29645: PLUS
29646: PUSH
29647: LD_INT 1
29649: DOUBLE
29650: EQUAL
29651: IFTRUE 29655
29653: GO 29676
29655: POP
// ComLinkTo ( Veh , Mechs [ 1 ] ) ; 2 :
29656: LD_VAR 0 1
29660: PPUSH
29661: LD_VAR 0 2
29665: PUSH
29666: LD_INT 1
29668: ARRAY
29669: PPUSH
29670: CALL_OW 135
29674: GO 30025
29676: LD_INT 2
29678: DOUBLE
29679: EQUAL
29680: IFTRUE 29684
29682: GO 29755
29684: POP
// begin if UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 2 ] ) then
29685: LD_VAR 0 2
29689: PUSH
29690: LD_INT 1
29692: ARRAY
29693: PPUSH
29694: CALL_OW 432
29698: PUSH
29699: LD_VAR 0 2
29703: PUSH
29704: LD_INT 2
29706: ARRAY
29707: PPUSH
29708: CALL_OW 432
29712: LESS
29713: IFFALSE 29735
// ComLinkTo ( Veh , Mechs [ 1 ] ) else
29715: LD_VAR 0 1
29719: PPUSH
29720: LD_VAR 0 2
29724: PUSH
29725: LD_INT 1
29727: ARRAY
29728: PPUSH
29729: CALL_OW 135
29733: GO 29753
// ComLinkTo ( Veh , Mechs [ 2 ] ) ;
29735: LD_VAR 0 1
29739: PPUSH
29740: LD_VAR 0 2
29744: PUSH
29745: LD_INT 2
29747: ARRAY
29748: PPUSH
29749: CALL_OW 135
// end ; 3 :
29753: GO 30025
29755: LD_INT 3
29757: DOUBLE
29758: EQUAL
29759: IFTRUE 29763
29761: GO 30024
29763: POP
// begin if UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 2 ] ) or UnitsLinked ( mechs [ 1 ] ) < UnitsLinked ( mechs [ 3 ] ) then
29764: LD_VAR 0 2
29768: PUSH
29769: LD_INT 1
29771: ARRAY
29772: PPUSH
29773: CALL_OW 432
29777: PUSH
29778: LD_VAR 0 2
29782: PUSH
29783: LD_INT 2
29785: ARRAY
29786: PPUSH
29787: CALL_OW 432
29791: LESS
29792: PUSH
29793: LD_VAR 0 2
29797: PUSH
29798: LD_INT 1
29800: ARRAY
29801: PPUSH
29802: CALL_OW 432
29806: PUSH
29807: LD_VAR 0 2
29811: PUSH
29812: LD_INT 3
29814: ARRAY
29815: PPUSH
29816: CALL_OW 432
29820: LESS
29821: OR
29822: IFFALSE 29844
// ComLinkTo ( Veh , Mechs [ 1 ] ) else
29824: LD_VAR 0 1
29828: PPUSH
29829: LD_VAR 0 2
29833: PUSH
29834: LD_INT 1
29836: ARRAY
29837: PPUSH
29838: CALL_OW 135
29842: GO 30022
// if UnitsLinked ( mechs [ 2 ] ) < UnitsLinked ( mechs [ 1 ] ) or UnitsLinked ( mechs [ 2 ] ) < UnitsLinked ( mechs [ 3 ] ) then
29844: LD_VAR 0 2
29848: PUSH
29849: LD_INT 2
29851: ARRAY
29852: PPUSH
29853: CALL_OW 432
29857: PUSH
29858: LD_VAR 0 2
29862: PUSH
29863: LD_INT 1
29865: ARRAY
29866: PPUSH
29867: CALL_OW 432
29871: LESS
29872: PUSH
29873: LD_VAR 0 2
29877: PUSH
29878: LD_INT 2
29880: ARRAY
29881: PPUSH
29882: CALL_OW 432
29886: PUSH
29887: LD_VAR 0 2
29891: PUSH
29892: LD_INT 3
29894: ARRAY
29895: PPUSH
29896: CALL_OW 432
29900: LESS
29901: OR
29902: IFFALSE 29924
// ComLinkTo ( Veh , Mechs [ 2 ] ) else
29904: LD_VAR 0 1
29908: PPUSH
29909: LD_VAR 0 2
29913: PUSH
29914: LD_INT 2
29916: ARRAY
29917: PPUSH
29918: CALL_OW 135
29922: GO 30022
// if UnitsLinked ( mechs [ 3 ] ) < UnitsLinked ( mechs [ 1 ] ) or UnitsLinked ( mechs [ 3 ] ) < UnitsLinked ( mechs [ 2 ] ) then
29924: LD_VAR 0 2
29928: PUSH
29929: LD_INT 3
29931: ARRAY
29932: PPUSH
29933: CALL_OW 432
29937: PUSH
29938: LD_VAR 0 2
29942: PUSH
29943: LD_INT 1
29945: ARRAY
29946: PPUSH
29947: CALL_OW 432
29951: LESS
29952: PUSH
29953: LD_VAR 0 2
29957: PUSH
29958: LD_INT 3
29960: ARRAY
29961: PPUSH
29962: CALL_OW 432
29966: PUSH
29967: LD_VAR 0 2
29971: PUSH
29972: LD_INT 2
29974: ARRAY
29975: PPUSH
29976: CALL_OW 432
29980: LESS
29981: OR
29982: IFFALSE 30004
// ComLinkTo ( Veh , Mechs [ 3 ] ) else
29984: LD_VAR 0 1
29988: PPUSH
29989: LD_VAR 0 2
29993: PUSH
29994: LD_INT 3
29996: ARRAY
29997: PPUSH
29998: CALL_OW 135
30002: GO 30022
// ComLinkTo ( Veh , Mechs [ 1 ] ) ;
30004: LD_VAR 0 1
30008: PPUSH
30009: LD_VAR 0 2
30013: PUSH
30014: LD_INT 1
30016: ARRAY
30017: PPUSH
30018: CALL_OW 135
// end ; end ;
30022: GO 30025
30024: POP
// end ;
30025: LD_VAR 0 3
30029: RET
// every 0 0$0.8 trigger FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) do
30030: LD_INT 22
30032: PUSH
30033: LD_EXP 22
30037: PUSH
30038: EMPTY
30039: LIST
30040: LIST
30041: PUSH
30042: LD_INT 21
30044: PUSH
30045: LD_INT 2
30047: PUSH
30048: EMPTY
30049: LIST
30050: LIST
30051: PUSH
30052: LD_INT 3
30054: PUSH
30055: LD_INT 61
30057: PUSH
30058: EMPTY
30059: LIST
30060: PUSH
30061: EMPTY
30062: LIST
30063: LIST
30064: PUSH
30065: LD_INT 50
30067: PUSH
30068: EMPTY
30069: LIST
30070: PUSH
30071: EMPTY
30072: LIST
30073: LIST
30074: LIST
30075: LIST
30076: PPUSH
30077: CALL_OW 69
30081: IFFALSE 30147
30083: GO 30085
30085: DISABLE
// begin LinkVehicle ( FilterAllUnits ( [ [ f_side , purple ] , [ f_type , unit_vehicle ] , [ f_not , [ f_linked ] ] , [ f_ok ] ] ) [ 1 ] ) ;
30086: LD_INT 22
30088: PUSH
30089: LD_EXP 22
30093: PUSH
30094: EMPTY
30095: LIST
30096: LIST
30097: PUSH
30098: LD_INT 21
30100: PUSH
30101: LD_INT 2
30103: PUSH
30104: EMPTY
30105: LIST
30106: LIST
30107: PUSH
30108: LD_INT 3
30110: PUSH
30111: LD_INT 61
30113: PUSH
30114: EMPTY
30115: LIST
30116: PUSH
30117: EMPTY
30118: LIST
30119: LIST
30120: PUSH
30121: LD_INT 50
30123: PUSH
30124: EMPTY
30125: LIST
30126: PUSH
30127: EMPTY
30128: LIST
30129: LIST
30130: LIST
30131: LIST
30132: PPUSH
30133: CALL_OW 69
30137: PUSH
30138: LD_INT 1
30140: ARRAY
30141: PPUSH
30142: CALL 29598 0 1
// enable ;
30146: ENABLE
// end ;
30147: END
// export Tech_list_Purple ; every 0 0$1 do
30148: GO 30150
30150: 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 ] ;
30151: LD_ADDR_EXP 87
30155: PUSH
30156: LD_INT 48
30158: PUSH
30159: LD_INT 49
30161: PUSH
30162: LD_INT 50
30164: PUSH
30165: LD_INT 51
30167: PUSH
30168: LD_INT 52
30170: PUSH
30171: LD_INT 13
30173: PUSH
30174: LD_INT 53
30176: PUSH
30177: LD_INT 60
30179: PUSH
30180: LD_INT 61
30182: PUSH
30183: LD_INT 62
30185: PUSH
30186: EMPTY
30187: LIST
30188: LIST
30189: LIST
30190: LIST
30191: LIST
30192: LIST
30193: LIST
30194: LIST
30195: LIST
30196: LIST
30197: ST_TO_ADDR
// end ;
30198: END
// every 0 0$1 do
30199: GO 30201
30201: DISABLE
// begin if IsOk ( pur_lab ) and GetSide ( pur_lab ) = purple and tick > dif_research_wait then
30202: LD_INT 96
30204: PPUSH
30205: CALL_OW 302
30209: PUSH
30210: LD_INT 96
30212: PPUSH
30213: CALL_OW 255
30217: PUSH
30218: LD_EXP 22
30222: EQUAL
30223: AND
30224: PUSH
30225: LD_OWVAR 1
30229: PUSH
30230: LD_EXP 75
30234: GREATER
30235: AND
30236: IFFALSE 30248
// Zkoumej ( 1 , pur_lab ) ;
30238: LD_INT 1
30240: PPUSH
30241: LD_INT 96
30243: PPUSH
30244: CALL 30250 0 2
// enable ;
30248: ENABLE
// end ;
30249: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
30250: LD_INT 0
30252: PPUSH
// if Tech_list_Purple + 0 >= 1 then
30253: LD_EXP 87
30257: PUSH
30258: LD_INT 0
30260: PLUS
30261: PUSH
30262: LD_INT 1
30264: GREATEREQUAL
30265: IFFALSE 30305
// if Researched ( purple , Tech_list_Purple [ 1 ] ) then
30267: LD_EXP 22
30271: PPUSH
30272: LD_EXP 87
30276: PUSH
30277: LD_INT 1
30279: ARRAY
30280: PPUSH
30281: CALL_OW 325
30285: IFFALSE 30305
// Tech_list_Purple = Delete ( Tech_list_Purple , 1 ) ;
30287: LD_ADDR_EXP 87
30291: PUSH
30292: LD_EXP 87
30296: PPUSH
30297: LD_INT 1
30299: PPUSH
30300: CALL_OW 3
30304: ST_TO_ADDR
// if Tech_list_Purple and not GetActResearch ( laborator ) then
30305: LD_EXP 87
30309: PUSH
30310: LD_VAR 0 2
30314: PPUSH
30315: CALL_OW 485
30319: NOT
30320: AND
30321: IFFALSE 30341
// ComResearch ( laborator , Tech_list_Purple [ 1 ] ) ;
30323: LD_VAR 0 2
30327: PPUSH
30328: LD_EXP 87
30332: PUSH
30333: LD_INT 1
30335: ARRAY
30336: PPUSH
30337: CALL_OW 124
// end ; end_of_file
30341: LD_VAR 0 3
30345: RET
// every 0 0$1 do var nakl , bedny ;
30346: GO 30348
30348: DISABLE
30349: LD_INT 0
30351: PPUSH
30352: PPUSH
// begin nakl = FilterAllUnits ( [ [ f_side , amik ] , [ f_type , unit_vehicle ] , [ f_weapon , us_cargo_bay ] ] ) ;
30353: LD_ADDR_VAR 0 1
30357: PUSH
30358: LD_INT 22
30360: PUSH
30361: LD_EXP 24
30365: PUSH
30366: EMPTY
30367: LIST
30368: LIST
30369: PUSH
30370: LD_INT 21
30372: PUSH
30373: LD_INT 2
30375: PUSH
30376: EMPTY
30377: LIST
30378: LIST
30379: PUSH
30380: LD_INT 34
30382: PUSH
30383: LD_INT 12
30385: PUSH
30386: EMPTY
30387: LIST
30388: LIST
30389: PUSH
30390: EMPTY
30391: LIST
30392: LIST
30393: LIST
30394: PPUSH
30395: CALL_OW 69
30399: ST_TO_ADDR
// if nakl then
30400: LD_VAR 0 1
30404: IFFALSE 30504
// begin nakl = nakl [ 1 ] ;
30406: LD_ADDR_VAR 0 1
30410: PUSH
30411: LD_VAR 0 1
30415: PUSH
30416: LD_INT 1
30418: ARRAY
30419: ST_TO_ADDR
// if GetLives ( nakl ) < hranice_utok_repair_utek then
30420: LD_VAR 0 1
30424: PPUSH
30425: CALL_OW 256
30429: PUSH
30430: LD_EXP 56
30434: LESS
30435: IFFALSE 30458
// begin ComMoveToArea ( nakl , AmikRepair ) ;
30437: LD_VAR 0 1
30441: PPUSH
30442: LD_INT 28
30444: PPUSH
30445: CALL_OW 113
// Wait ( 2 2$20 ) ;
30449: LD_INT 4900
30451: PPUSH
30452: CALL_OW 67
// end else
30456: GO 30504
// begin bedny = GetListOfCratesInArea ( AmikBazeOkoli ) ;
30458: LD_ADDR_VAR 0 2
30462: PUSH
30463: LD_INT 41
30465: PPUSH
30466: CALL_OW 435
30470: ST_TO_ADDR
// if bedny then
30471: LD_VAR 0 2
30475: IFFALSE 30504
// ComCollect ( nakl , bedny [ 1 ] , bedny [ 2 ] ) ;
30477: LD_VAR 0 1
30481: PPUSH
30482: LD_VAR 0 2
30486: PUSH
30487: LD_INT 1
30489: ARRAY
30490: PPUSH
30491: LD_VAR 0 2
30495: PUSH
30496: LD_INT 2
30498: ARRAY
30499: PPUSH
30500: CALL_OW 117
// end ; end ; enable ;
30504: ENABLE
// end ;
30505: PPOPN 2
30507: END
// export Tech_list_Amik ; every 0 0$1 do
30508: GO 30510
30510: 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 ] ;
30511: LD_ADDR_EXP 88
30515: PUSH
30516: LD_INT 48
30518: PUSH
30519: LD_INT 57
30521: PUSH
30522: LD_INT 49
30524: PUSH
30525: LD_INT 58
30527: PUSH
30528: LD_INT 50
30530: PUSH
30531: LD_INT 51
30533: PUSH
30534: LD_INT 52
30536: PUSH
30537: LD_INT 59
30539: PUSH
30540: LD_INT 53
30542: PUSH
30543: LD_INT 60
30545: PUSH
30546: LD_INT 61
30548: PUSH
30549: LD_INT 62
30551: PUSH
30552: LD_INT 54
30554: PUSH
30555: LD_INT 55
30557: PUSH
30558: LD_INT 56
30560: PUSH
30561: EMPTY
30562: LIST
30563: LIST
30564: LIST
30565: LIST
30566: LIST
30567: LIST
30568: LIST
30569: LIST
30570: LIST
30571: LIST
30572: LIST
30573: LIST
30574: LIST
30575: LIST
30576: LIST
30577: ST_TO_ADDR
// end ;
30578: END
// every 0 0$1 do
30579: GO 30581
30581: DISABLE
// begin if IsOk ( amik_lab ) and GetSide ( amik_lab ) = amik and tick > dif_research_wait then
30582: LD_INT 97
30584: PPUSH
30585: CALL_OW 302
30589: PUSH
30590: LD_INT 97
30592: PPUSH
30593: CALL_OW 255
30597: PUSH
30598: LD_EXP 24
30602: EQUAL
30603: AND
30604: PUSH
30605: LD_OWVAR 1
30609: PUSH
30610: LD_EXP 75
30614: GREATER
30615: AND
30616: IFFALSE 30628
// Zkoumej ( 1 , amik_lab ) ;
30618: LD_INT 1
30620: PPUSH
30621: LD_INT 97
30623: PPUSH
30624: CALL 30676 0 2
// if IsOk ( amik_lab2 ) and GetSide ( amik_lab2 ) = amik and tick > dif_research_wait then
30628: LD_INT 98
30630: PPUSH
30631: CALL_OW 302
30635: PUSH
30636: LD_INT 98
30638: PPUSH
30639: CALL_OW 255
30643: PUSH
30644: LD_EXP 24
30648: EQUAL
30649: AND
30650: PUSH
30651: LD_OWVAR 1
30655: PUSH
30656: LD_EXP 75
30660: GREATER
30661: AND
30662: IFFALSE 30674
// Zkoumej ( 1 , amik_lab2 ) ;
30664: LD_INT 1
30666: PPUSH
30667: LD_INT 98
30669: PPUSH
30670: CALL 30676 0 2
// enable ;
30674: ENABLE
// end ;
30675: END
// function Zkoumej ( cislo_vyzkumu , laborator ) ; begin
30676: LD_INT 0
30678: PPUSH
// if Tech_list_Amik + 0 >= 1 then
30679: LD_EXP 88
30683: PUSH
30684: LD_INT 0
30686: PLUS
30687: PUSH
30688: LD_INT 1
30690: GREATEREQUAL
30691: IFFALSE 30731
// if Researched ( amik , Tech_list_Amik [ 1 ] ) then
30693: LD_EXP 24
30697: PPUSH
30698: LD_EXP 88
30702: PUSH
30703: LD_INT 1
30705: ARRAY
30706: PPUSH
30707: CALL_OW 325
30711: IFFALSE 30731
// Tech_list_Amik = Delete ( Tech_list_Amik , 1 ) ;
30713: LD_ADDR_EXP 88
30717: PUSH
30718: LD_EXP 88
30722: PPUSH
30723: LD_INT 1
30725: PPUSH
30726: CALL_OW 3
30730: ST_TO_ADDR
// if Tech_list_Amik and not GetActResearch ( laborator ) then
30731: LD_EXP 88
30735: PUSH
30736: LD_VAR 0 2
30740: PPUSH
30741: CALL_OW 485
30745: NOT
30746: AND
30747: IFFALSE 30767
// ComResearch ( laborator , Tech_list_Amik [ 1 ] ) ;
30749: LD_VAR 0 2
30753: PPUSH
30754: LD_EXP 88
30758: PUSH
30759: LD_INT 1
30761: ARRAY
30762: PPUSH
30763: CALL_OW 124
// end ;
30767: LD_VAR 0 3
30771: 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
30772: LD_INT 50
30774: PUSH
30775: EMPTY
30776: LIST
30777: PUSH
30778: LD_INT 23
30780: PUSH
30781: LD_INT 1
30783: PUSH
30784: EMPTY
30785: LIST
30786: LIST
30787: PUSH
30788: LD_INT 21
30790: PUSH
30791: LD_INT 1
30793: PUSH
30794: EMPTY
30795: LIST
30796: LIST
30797: PUSH
30798: LD_INT 22
30800: PUSH
30801: LD_EXP 24
30805: PUSH
30806: EMPTY
30807: LIST
30808: LIST
30809: PUSH
30810: EMPTY
30811: LIST
30812: LIST
30813: LIST
30814: LIST
30815: PPUSH
30816: CALL_OW 69
30820: PUSH
30821: LD_INT 13
30823: LESS
30824: PUSH
30825: LD_INT 108
30827: PPUSH
30828: CALL_OW 301
30832: PUSH
30833: LD_INT 108
30835: PPUSH
30836: CALL_OW 255
30840: PUSH
30841: LD_EXP 21
30845: EQUAL
30846: OR
30847: AND
30848: IFFALSE 30861
30850: GO 30852
30852: DISABLE
// begin stopBlueAI = true ;
30853: LD_ADDR_EXP 19
30857: PUSH
30858: LD_INT 1
30860: ST_TO_ADDR
// end ;
30861: END
// export zdrhejte ; every 0 0$1 trigger stopBlueAI do
30862: LD_EXP 19
30866: IFFALSE 30976
30868: GO 30870
30870: DISABLE
// begin ComExitBuilding ( ( FilterAllUnits ( [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) ) ;
30871: LD_INT 50
30873: PUSH
30874: EMPTY
30875: LIST
30876: PUSH
30877: LD_INT 22
30879: PUSH
30880: LD_EXP 24
30884: PUSH
30885: EMPTY
30886: LIST
30887: LIST
30888: PUSH
30889: LD_INT 21
30891: PUSH
30892: LD_INT 1
30894: PUSH
30895: EMPTY
30896: LIST
30897: LIST
30898: PUSH
30899: EMPTY
30900: LIST
30901: LIST
30902: LIST
30903: PPUSH
30904: CALL_OW 69
30908: PPUSH
30909: CALL_OW 122
// AddComMoveToArea ( ( FilterUnitsInArea ( AmikBaza , [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) , pryc ) ;
30913: LD_INT 17
30915: PPUSH
30916: LD_INT 50
30918: PUSH
30919: EMPTY
30920: LIST
30921: PUSH
30922: LD_INT 22
30924: PUSH
30925: LD_EXP 24
30929: PUSH
30930: EMPTY
30931: LIST
30932: LIST
30933: PUSH
30934: LD_INT 21
30936: PUSH
30937: LD_INT 1
30939: PUSH
30940: EMPTY
30941: LIST
30942: LIST
30943: PUSH
30944: EMPTY
30945: LIST
30946: LIST
30947: LIST
30948: PPUSH
30949: CALL_OW 70
30953: PPUSH
30954: LD_INT 45
30956: PPUSH
30957: CALL_OW 173
// Wait ( 0 0$0.5 ) ;
30961: LD_INT 18
30963: PPUSH
30964: CALL_OW 67
// zdrhejte = true ;
30968: LD_ADDR_EXP 89
30972: PUSH
30973: LD_INT 1
30975: ST_TO_ADDR
// end ;
30976: END
// export moji ; every 0 0$1 trigger zdrhejte = true do
30977: LD_EXP 89
30981: PUSH
30982: LD_INT 1
30984: EQUAL
30985: IFFALSE 31039
30987: GO 30989
30989: DISABLE
// begin ComMoveToArea ( ( FilterUnitsInArea ( AmikBaza , [ [ f_ok ] , [ f_side , amik ] , [ f_type , unit_human ] ] ) ) , pryc ) ;
30990: LD_INT 17
30992: PPUSH
30993: LD_INT 50
30995: PUSH
30996: EMPTY
30997: LIST
30998: PUSH
30999: LD_INT 22
31001: PUSH
31002: LD_EXP 24
31006: PUSH
31007: EMPTY
31008: LIST
31009: LIST
31010: PUSH
31011: LD_INT 21
31013: PUSH
31014: LD_INT 1
31016: PUSH
31017: EMPTY
31018: LIST
31019: LIST
31020: PUSH
31021: EMPTY
31022: LIST
31023: LIST
31024: LIST
31025: PPUSH
31026: CALL_OW 70
31030: PPUSH
31031: LD_INT 45
31033: PPUSH
31034: CALL_OW 113
// enable ;
31038: ENABLE
// end ;
31039: END
// every 0 0$0.5 trigger FilterUnitsInArea ( pryc , ( [ [ [ f_side , amik ] , [ f_type , unit_human ] ] ] ) ) > 0 and zdrhejte = true do var un ;
31040: LD_INT 45
31042: PPUSH
31043: LD_INT 22
31045: PUSH
31046: LD_EXP 24
31050: PUSH
31051: EMPTY
31052: LIST
31053: LIST
31054: PUSH
31055: LD_INT 21
31057: PUSH
31058: LD_INT 1
31060: PUSH
31061: EMPTY
31062: LIST
31063: LIST
31064: PUSH
31065: EMPTY
31066: LIST
31067: LIST
31068: PUSH
31069: EMPTY
31070: LIST
31071: PPUSH
31072: CALL_OW 70
31076: PUSH
31077: LD_INT 0
31079: GREATER
31080: PUSH
31081: LD_EXP 89
31085: PUSH
31086: LD_INT 1
31088: EQUAL
31089: AND
31090: IFFALSE 31157
31092: GO 31094
31094: DISABLE
31095: LD_INT 0
31097: PPUSH
// begin for un in FilterUnitsInArea ( pryc , ( [ [ [ f_side , amik ] , [ f_type , unit_human ] ] ] ) ) do
31098: LD_ADDR_VAR 0 1
31102: PUSH
31103: LD_INT 45
31105: PPUSH
31106: LD_INT 22
31108: PUSH
31109: LD_EXP 24
31113: PUSH
31114: EMPTY
31115: LIST
31116: LIST
31117: PUSH
31118: LD_INT 21
31120: PUSH
31121: LD_INT 1
31123: PUSH
31124: EMPTY
31125: LIST
31126: LIST
31127: PUSH
31128: EMPTY
31129: LIST
31130: LIST
31131: PUSH
31132: EMPTY
31133: LIST
31134: PPUSH
31135: CALL_OW 70
31139: PUSH
31140: FOR_IN
31141: IFFALSE 31154
// begin RemoveUnit ( un ) ;
31143: LD_VAR 0 1
31147: PPUSH
31148: CALL_OW 64
// end ;
31152: GO 31140
31154: POP
31155: POP
// enable ;
31156: ENABLE
// end ; end_of_file
31157: PPOPN 1
31159: END
// export matCargo , rem ; export function RemoveCargo ; begin
31160: LD_INT 0
31162: PPUSH
// RemoveUnit ( platCargo ) ;
31163: LD_INT 106
31165: PPUSH
31166: CALL_OW 64
// rem = false ;
31170: LD_ADDR_EXP 92
31174: PUSH
31175: LD_INT 0
31177: ST_TO_ADDR
// end ;
31178: LD_VAR 0 1
31182: RET
// export function placePlatonovCargo ( ) ; var depot , budovy ; begin
31183: LD_INT 0
31185: PPUSH
31186: PPUSH
31187: PPUSH
// PlaceUnitXYR ( platCargo , 27 , 50 , 3 , false ) ;
31188: LD_INT 106
31190: PPUSH
31191: LD_INT 27
31193: PPUSH
31194: LD_INT 50
31196: PPUSH
31197: LD_INT 3
31199: PPUSH
31200: LD_INT 0
31202: PPUSH
31203: CALL_OW 50
// PlaceHumanInUnit ( VytvorCloveka ( 3 , 5 , 6 , 3 , 5 ) , platCargo ) ;
31207: LD_INT 3
31209: PPUSH
31210: LD_INT 5
31212: PPUSH
31213: LD_INT 6
31215: PPUSH
31216: LD_INT 3
31218: PPUSH
31219: LD_INT 5
31221: PPUSH
31222: CALL 2566 0 5
31226: PPUSH
31227: LD_INT 106
31229: PPUSH
31230: CALL_OW 52
// Wait ( 0 0$0.5 ) ;
31234: LD_INT 18
31236: PPUSH
31237: CALL_OW 67
// depot = FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
31241: LD_ADDR_VAR 0 2
31245: PUSH
31246: LD_INT 22
31248: PUSH
31249: LD_EXP 21
31253: PUSH
31254: EMPTY
31255: LIST
31256: LIST
31257: PUSH
31258: LD_INT 2
31260: PUSH
31261: LD_INT 30
31263: PUSH
31264: LD_INT 0
31266: PUSH
31267: EMPTY
31268: LIST
31269: LIST
31270: PUSH
31271: LD_INT 30
31273: PUSH
31274: LD_INT 1
31276: PUSH
31277: EMPTY
31278: LIST
31279: LIST
31280: PUSH
31281: EMPTY
31282: LIST
31283: LIST
31284: LIST
31285: PUSH
31286: EMPTY
31287: LIST
31288: LIST
31289: PPUSH
31290: CALL_OW 69
31294: ST_TO_ADDR
// budovy = FilterAllUnits ( [ [ f_side , you ] , [ f_type , unit_building ] ] ) ;
31295: LD_ADDR_VAR 0 3
31299: PUSH
31300: LD_INT 22
31302: PUSH
31303: LD_EXP 21
31307: PUSH
31308: EMPTY
31309: LIST
31310: LIST
31311: PUSH
31312: LD_INT 21
31314: PUSH
31315: LD_INT 3
31317: PUSH
31318: EMPTY
31319: LIST
31320: LIST
31321: PUSH
31322: EMPTY
31323: LIST
31324: LIST
31325: PPUSH
31326: CALL_OW 69
31330: ST_TO_ADDR
// begin if depot then
31331: LD_VAR 0 2
31335: IFFALSE 31409
// begin MoveAreaXY ( transformArea , GetX ( depot [ 1 ] ) - 3 , GetY ( depot [ 1 ] ) - 3 ) ;
31337: LD_INT 42
31339: PPUSH
31340: LD_VAR 0 2
31344: PUSH
31345: LD_INT 1
31347: ARRAY
31348: PPUSH
31349: CALL_OW 250
31353: PUSH
31354: LD_INT 3
31356: MINUS
31357: PPUSH
31358: LD_VAR 0 2
31362: PUSH
31363: LD_INT 1
31365: ARRAY
31366: PPUSH
31367: CALL_OW 251
31371: PUSH
31372: LD_INT 3
31374: MINUS
31375: PPUSH
31376: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31380: LD_INT 106
31382: PPUSH
31383: LD_INT 42
31385: PPUSH
31386: CALL_OW 113
// AddComUnload ( platcargo ) ;
31390: LD_INT 106
31392: PPUSH
31393: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31397: LD_INT 106
31399: PPUSH
31400: LD_INT 7
31402: PPUSH
31403: CALL_OW 173
// end else
31407: GO 31549
// if budovy then
31409: LD_VAR 0 3
31413: IFFALSE 31487
// begin MoveAreaXY ( transformArea , GetX ( budovy [ 1 ] ) - 3 , GetY ( budovy [ 1 ] ) - 3 ) ;
31415: LD_INT 42
31417: PPUSH
31418: LD_VAR 0 3
31422: PUSH
31423: LD_INT 1
31425: ARRAY
31426: PPUSH
31427: CALL_OW 250
31431: PUSH
31432: LD_INT 3
31434: MINUS
31435: PPUSH
31436: LD_VAR 0 3
31440: PUSH
31441: LD_INT 1
31443: ARRAY
31444: PPUSH
31445: CALL_OW 251
31449: PUSH
31450: LD_INT 3
31452: MINUS
31453: PPUSH
31454: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31458: LD_INT 106
31460: PPUSH
31461: LD_INT 42
31463: PPUSH
31464: CALL_OW 113
// AddComUnload ( platcargo ) ;
31468: LD_INT 106
31470: PPUSH
31471: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31475: LD_INT 106
31477: PPUSH
31478: LD_INT 7
31480: PPUSH
31481: CALL_OW 173
// end else
31485: GO 31549
// begin MoveAreaXY ( transformArea , GetX ( vsevolod ) - 3 , GetY ( vsevolod ) - 3 ) ;
31487: LD_INT 42
31489: PPUSH
31490: LD_EXP 1
31494: PPUSH
31495: CALL_OW 250
31499: PUSH
31500: LD_INT 3
31502: MINUS
31503: PPUSH
31504: LD_EXP 1
31508: PPUSH
31509: CALL_OW 251
31513: PUSH
31514: LD_INT 3
31516: MINUS
31517: PPUSH
31518: CALL_OW 425
// ComMoveToArea ( platCargo , transformArea ) ;
31522: LD_INT 106
31524: PPUSH
31525: LD_INT 42
31527: PPUSH
31528: CALL_OW 113
// AddComUnload ( platcargo ) ;
31532: LD_INT 106
31534: PPUSH
31535: CALL_OW 219
// AddComMoveToArea ( platcargo , start ) ;
31539: LD_INT 106
31541: PPUSH
31542: LD_INT 7
31544: PPUSH
31545: CALL_OW 173
// end ; Wait ( 0 0$1 ) ;
31549: LD_INT 35
31551: PPUSH
31552: CALL_OW 67
// end ; Wait ( 0 0$5 ) ;
31556: LD_INT 175
31558: PPUSH
31559: CALL_OW 67
// rem = true ;
31563: LD_ADDR_EXP 92
31567: PUSH
31568: LD_INT 1
31570: ST_TO_ADDR
// end ;
31571: LD_VAR 0 1
31575: RET
// every 0 0$1 trigger rem and IsInArea ( platCargo , startShrink ) do
31576: LD_EXP 92
31580: PUSH
31581: LD_INT 106
31583: PPUSH
31584: LD_INT 43
31586: PPUSH
31587: CALL_OW 308
31591: AND
31592: IFFALSE 31625
31594: GO 31596
31596: DISABLE
// begin if IsInUnit ( platCargo ) then
31597: LD_INT 106
31599: PPUSH
31600: CALL_OW 310
31604: IFFALSE 31618
// RemoveUnit ( IsInUnit ( platCargo ) ) ;
31606: LD_INT 106
31608: PPUSH
31609: CALL_OW 310
31613: PPUSH
31614: CALL_OW 64
// RemoveUnit ( platCargo ) ;
31618: LD_INT 106
31620: PPUSH
31621: CALL_OW 64
// end ;
31625: END
// every 0 0$1 trigger Carry ( platCargo ) = false and HasTask ( platCargo ) = false and IsPlaced ( platCargo ) do
31626: LD_INT 106
31628: PPUSH
31629: CALL_OW 281
31633: PUSH
31634: LD_INT 0
31636: EQUAL
31637: PUSH
31638: LD_INT 106
31640: PPUSH
31641: CALL_OW 314
31645: PUSH
31646: LD_INT 0
31648: EQUAL
31649: AND
31650: PUSH
31651: LD_INT 106
31653: PPUSH
31654: CALL_OW 305
31658: AND
31659: IFFALSE 31675
31661: GO 31663
31663: DISABLE
// begin ComMoveToArea ( platcargo , startShrink ) ;
31664: LD_INT 106
31666: PPUSH
31667: LD_INT 43
31669: PPUSH
31670: CALL_OW 113
// enable ;
31674: ENABLE
// end ;
31675: END
// every 0 0$1 trigger Carry ( platCargo ) and HasTask ( platCargo ) = false and IsPlaced ( platCargo ) and rem do
31676: LD_INT 106
31678: PPUSH
31679: CALL_OW 281
31683: PUSH
31684: LD_INT 106
31686: PPUSH
31687: CALL_OW 314
31691: PUSH
31692: LD_INT 0
31694: EQUAL
31695: AND
31696: PUSH
31697: LD_INT 106
31699: PPUSH
31700: CALL_OW 305
31704: AND
31705: PUSH
31706: LD_EXP 92
31710: AND
31711: IFFALSE 31724
31713: GO 31715
31715: DISABLE
// begin ComUnload ( platcargo ) ;
31716: LD_INT 106
31718: PPUSH
31719: CALL_OW 159
// enable ;
31723: ENABLE
// end ;
31724: END
