// export Timer , LegionEvacOrder , cameraabuse , FirstContact , SafetySwitch , RuTaunt ; every 0 0$1 do
   0: GO 2
   2: DISABLE
// begin enable ;
   3: ENABLE
// timer = timer + 1 ;
   4: LD_ADDR_EXP 1
   8: PUSH
   9: LD_EXP 1
  13: PUSH
  14: LD_INT 1
  16: PLUS
  17: ST_TO_ADDR
// end ;
  18: END
// starting begin SafetySwitch = 1 ;
  19: LD_ADDR_EXP 5
  23: PUSH
  24: LD_INT 1
  26: ST_TO_ADDR
// CameraAbuse = 1 ;
  27: LD_ADDR_EXP 3
  31: PUSH
  32: LD_INT 1
  34: ST_TO_ADDR
// if CameraAbuse = 1 then
  35: LD_EXP 3
  39: PUSH
  40: LD_INT 1
  42: EQUAL
  43: IFFALSE 49
// Ingameon ;
  45: CALL_OW 8
// UniformGet = 0 ;
  49: LD_ADDR_EXP 35
  53: PUSH
  54: LD_INT 0
  56: ST_TO_ADDR
// RuTaunt = 0 ;
  57: LD_ADDR_EXP 6
  61: PUSH
  62: LD_INT 0
  64: ST_TO_ADDR
// Offering = 0 ;
  65: LD_ADDR_EXP 36
  69: PUSH
  70: LD_INT 0
  72: ST_TO_ADDR
// FirstContact = 0 ;
  73: LD_ADDR_EXP 4
  77: PUSH
  78: LD_INT 0
  80: ST_TO_ADDR
// DriverBodyHot = 0 ;
  81: LD_ADDR_EXP 46
  85: PUSH
  86: LD_INT 0
  88: ST_TO_ADDR
// Timer = 0 ;
  89: LD_ADDR_EXP 1
  93: PUSH
  94: LD_INT 0
  96: ST_TO_ADDR
// LegionEvacOrder = 0 ;
  97: LD_ADDR_EXP 2
 101: PUSH
 102: LD_INT 0
 104: ST_TO_ADDR
// Morale = 100 ;
 105: LD_ADDR_EXP 50
 109: PUSH
 110: LD_INT 100
 112: ST_TO_ADDR
// AttackIntensity = 0 ;
 113: LD_ADDR_EXP 51
 117: PUSH
 118: LD_INT 0
 120: ST_TO_ADDR
// RuAlliance = 0 ;
 121: LD_ADDR_EXP 52
 125: PUSH
 126: LD_INT 0
 128: ST_TO_ADDR
// RandomizeAll ( ) ;
 129: CALL_OW 11
// ResetFog ;
 133: CALL_OW 335
// if CameraAbuse = 1 then
 137: LD_EXP 3
 141: PUSH
 142: LD_INT 1
 144: EQUAL
 145: IFFALSE 154
// CenterOnUnits ( Madison ) ;
 147: LD_INT 98
 149: PPUSH
 150: CALL_OW 85
// ComMoveXY ( [ Greene , Madison ] , 79 , 92 ) ;
 154: LD_INT 96
 156: PUSH
 157: LD_INT 98
 159: PUSH
 160: EMPTY
 161: LIST
 162: LIST
 163: PPUSH
 164: LD_INT 79
 166: PPUSH
 167: LD_INT 92
 169: PPUSH
 170: CALL_OW 111
// if CameraAbuse = 1 then
 174: LD_EXP 3
 178: PUSH
 179: LD_INT 1
 181: EQUAL
 182: IFFALSE 191
// CenterOnUnits ( Madison ) ;
 184: LD_INT 98
 186: PPUSH
 187: CALL_OW 85
// Say ( Madison , Intro1 ) ;
 191: LD_INT 98
 193: PPUSH
 194: LD_STRING Intro1
 196: PPUSH
 197: CALL_OW 88
// if CameraAbuse = 1 then
 201: LD_EXP 3
 205: PUSH
 206: LD_INT 1
 208: EQUAL
 209: IFFALSE 218
// CenterOnUnits ( Greene ) ;
 211: LD_INT 96
 213: PPUSH
 214: CALL_OW 85
// Say ( Greene , Intro2 ) ;
 218: LD_INT 96
 220: PPUSH
 221: LD_STRING Intro2
 223: PPUSH
 224: CALL_OW 88
// if CameraAbuse = 1 then
 228: LD_EXP 3
 232: PUSH
 233: LD_INT 1
 235: EQUAL
 236: IFFALSE 245
// CenterOnUnits ( Greene ) ;
 238: LD_INT 96
 240: PPUSH
 241: CALL_OW 85
// Say ( Madison , Intro3 ) ;
 245: LD_INT 98
 247: PPUSH
 248: LD_STRING Intro3
 250: PPUSH
 251: CALL_OW 88
// if CameraAbuse = 1 then
 255: LD_EXP 3
 259: PUSH
 260: LD_INT 1
 262: EQUAL
 263: IFFALSE 272
// CenterOnUnits ( Madison ) ;
 265: LD_INT 98
 267: PPUSH
 268: CALL_OW 85
// Say ( Greene , Intro4 ) ;
 272: LD_INT 96
 274: PPUSH
 275: LD_STRING Intro4
 277: PPUSH
 278: CALL_OW 88
// if CameraAbuse = 1 then
 282: LD_EXP 3
 286: PUSH
 287: LD_INT 1
 289: EQUAL
 290: IFFALSE 299
// CenterOnUnits ( Greene ) ;
 292: LD_INT 96
 294: PPUSH
 295: CALL_OW 85
// LoyalPeople ;
 299: CALL 15240 0 0
// if CameraAbuse = 1 then
 303: LD_EXP 3
 307: PUSH
 308: LD_INT 1
 310: EQUAL
 311: IFFALSE 320
// CenterOnUnits ( Madison ) ;
 313: LD_INT 98
 315: PPUSH
 316: CALL_OW 85
// LoyalBuildings ;
 320: CALL 16456 0 0
// if CameraAbuse = 1 then
 324: LD_EXP 3
 328: PUSH
 329: LD_INT 1
 331: EQUAL
 332: IFFALSE 341
// CenterOnUnits ( Madison ) ;
 334: LD_INT 98
 336: PPUSH
 337: CALL_OW 85
// LegionSetup ;
 341: CALL 2084 0 0
// if CameraAbuse = 1 then
 345: LD_EXP 3
 349: PUSH
 350: LD_INT 1
 352: EQUAL
 353: IFFALSE 362
// CenterOnUnits ( Madison ) ;
 355: LD_INT 98
 357: PPUSH
 358: CALL_OW 85
// CowardSetup ;
 362: CALL 2745 0 0
// if CameraAbuse = 1 then
 366: LD_EXP 3
 370: PUSH
 371: LD_INT 1
 373: EQUAL
 374: IFFALSE 383
// CenterOnUnits ( Madison ) ;
 376: LD_INT 98
 378: PPUSH
 379: CALL_OW 85
// RuBuildings ;
 383: CALL 18132 0 0
// if CameraAbuse = 1 then
 387: LD_EXP 3
 391: PUSH
 392: LD_INT 1
 394: EQUAL
 395: IFFALSE 404
// CenterOnUnits ( Madison ) ;
 397: LD_INT 98
 399: PPUSH
 400: CALL_OW 85
// RuSetup ;
 404: CALL 1015 0 0
// if CameraAbuse = 1 then
 408: LD_EXP 3
 412: PUSH
 413: LD_INT 1
 415: EQUAL
 416: IFFALSE 425
// CenterOnUnits ( Madison ) ;
 418: LD_INT 98
 420: PPUSH
 421: CALL_OW 85
// Say ( Madison , Intro5 ) ;
 425: LD_INT 98
 427: PPUSH
 428: LD_STRING Intro5
 430: PPUSH
 431: CALL_OW 88
// if CameraAbuse = 1 then
 435: LD_EXP 3
 439: PUSH
 440: LD_INT 1
 442: EQUAL
 443: IFFALSE 452
// CenterOnUnits ( Madison ) ;
 445: LD_INT 98
 447: PPUSH
 448: CALL_OW 85
// Say ( Greene , Intro6 ) ;
 452: LD_INT 96
 454: PPUSH
 455: LD_STRING Intro6
 457: PPUSH
 458: CALL_OW 88
// if CameraAbuse = 1 then
 462: LD_EXP 3
 466: PUSH
 467: LD_INT 1
 469: EQUAL
 470: IFFALSE 479
// CenterOnUnits ( Madison ) ;
 472: LD_INT 98
 474: PPUSH
 475: CALL_OW 85
// ComBuild ( Greene , 0 , 82 , 96 , 1 ) ;
 479: LD_INT 96
 481: PPUSH
 482: LD_INT 0
 484: PPUSH
 485: LD_INT 82
 487: PPUSH
 488: LD_INT 96
 490: PPUSH
 491: LD_INT 1
 493: PPUSH
 494: CALL_OW 145
// StartingTech ( ) ;
 498: CALL 18700 0 0
// SpawnKarp ;
 502: CALL 4217 0 0
// end ;
 506: END
// on BuildingStarted ( un , hum ) do if ( getbtype ( un ) = b_depot ) and ( getside ( un ) = 4 ) then
 507: LD_VAR 0 1
 511: PPUSH
 512: CALL_OW 266
 516: PUSH
 517: LD_INT 0
 519: EQUAL
 520: PUSH
 521: LD_VAR 0 1
 525: PPUSH
 526: CALL_OW 255
 530: PUSH
 531: LD_INT 4
 533: EQUAL
 534: AND
 535: IFFALSE 661
// begin ingameoff ;
 537: CALL_OW 9
// timer = 0 ;
 541: LD_ADDR_EXP 1
 545: PUSH
 546: LD_INT 0
 548: ST_TO_ADDR
// if CameraAbuse = 1 then
 549: LD_EXP 3
 553: PUSH
 554: LD_INT 1
 556: EQUAL
 557: IFFALSE 568
// CenterOnUnits ( un ) ;
 559: LD_VAR 0 1
 563: PPUSH
 564: CALL_OW 85
// CreateResourcesXY ( 1 , 6 - difficulty , 76 , 85 , true ) ;
 568: LD_INT 1
 570: PPUSH
 571: LD_INT 6
 573: PUSH
 574: LD_OWVAR 67
 578: MINUS
 579: PPUSH
 580: LD_INT 76
 582: PPUSH
 583: LD_INT 85
 585: PPUSH
 586: LD_INT 1
 588: PPUSH
 589: CALL_OW 58
// CreateResourcesXY ( 1 , 6 - difficulty , 77 , 86 , true ) ;
 593: LD_INT 1
 595: PPUSH
 596: LD_INT 6
 598: PUSH
 599: LD_OWVAR 67
 603: MINUS
 604: PPUSH
 605: LD_INT 77
 607: PPUSH
 608: LD_INT 86
 610: PPUSH
 611: LD_INT 1
 613: PPUSH
 614: CALL_OW 58
// dwait ( 0 0$15 ) ;
 618: LD_INT 525
 620: PPUSH
 621: CALL_OW 68
// Say ( Madison , Crates1 ) ;
 625: LD_INT 98
 627: PPUSH
 628: LD_STRING Crates1
 630: PPUSH
 631: CALL_OW 88
// Say ( Greene , Crates2 ) ;
 635: LD_INT 96
 637: PPUSH
 638: LD_STRING Crates2
 640: PPUSH
 641: CALL_OW 88
// SetWorkingProgress ( un , 95 ) ;
 645: LD_VAR 0 1
 649: PPUSH
 650: LD_INT 95
 652: PPUSH
 653: CALL_OW 329
// PlaceWeapons ;
 657: CALL 17764 0 0
// end ;
 661: PPOPN 2
 663: END
// on BuildingComplete ( un ) do begin BuildingComplete_USDefenseAI ( un ) ;
 664: LD_VAR 0 1
 668: PPUSH
 669: CALL 14123 0 1
// if ( getbtype ( un ) = b_depot ) and ( getside ( un ) = 4 ) then
 673: LD_VAR 0 1
 677: PPUSH
 678: CALL_OW 266
 682: PUSH
 683: LD_INT 0
 685: EQUAL
 686: PUSH
 687: LD_VAR 0 1
 691: PPUSH
 692: CALL_OW 255
 696: PUSH
 697: LD_INT 4
 699: EQUAL
 700: AND
 701: IFFALSE 835
// begin SetLives ( un , 1000 ) ;
 703: LD_VAR 0 1
 707: PPUSH
 708: LD_INT 1000
 710: PPUSH
 711: CALL_OW 234
// Timer = 0 ;
 715: LD_ADDR_EXP 1
 719: PUSH
 720: LD_INT 0
 722: ST_TO_ADDR
// safetyswitch = 0 ;
 723: LD_ADDR_EXP 5
 727: PUSH
 728: LD_INT 0
 730: ST_TO_ADDR
// SaveForQuickRestart ;
 731: CALL_OW 22
// Say ( Madison , Baza1 ) ;
 735: LD_INT 98
 737: PPUSH
 738: LD_STRING Baza1
 740: PPUSH
 741: CALL_OW 88
// Say ( Greene , Baza2 ) ;
 745: LD_INT 96
 747: PPUSH
 748: LD_STRING Baza2
 750: PPUSH
 751: CALL_OW 88
// Say ( Greene , Baza3 ) ;
 755: LD_INT 96
 757: PPUSH
 758: LD_STRING Baza3
 760: PPUSH
 761: CALL_OW 88
// Say ( Greene , Baza4 ) ;
 765: LD_INT 96
 767: PPUSH
 768: LD_STRING Baza4
 770: PPUSH
 771: CALL_OW 88
// Say ( Madison , Baza5 ) ;
 775: LD_INT 98
 777: PPUSH
 778: LD_STRING Baza5
 780: PPUSH
 781: CALL_OW 88
// Say ( Greene , Baza6 ) ;
 785: LD_INT 96
 787: PPUSH
 788: LD_STRING Baza6
 790: PPUSH
 791: CALL_OW 88
// Say ( Madison , Baza7 ) ;
 795: LD_INT 98
 797: PPUSH
 798: LD_STRING Baza7
 800: PPUSH
 801: CALL_OW 88
// Say ( Greene , Baza8 ) ;
 805: LD_INT 96
 807: PPUSH
 808: LD_STRING Baza8
 810: PPUSH
 811: CALL_OW 88
// Say ( Madison , Baza9 ) ;
 815: LD_INT 98
 817: PPUSH
 818: LD_STRING Baza9
 820: PPUSH
 821: CALL_OW 88
// Say ( Greene , Baza10 ) ;
 825: LD_INT 96
 827: PPUSH
 828: LD_STRING Baza10
 830: PPUSH
 831: CALL_OW 88
// end ; if GetBtype ( un ) = b_armoury and getside ( un ) = 4 then
 835: LD_VAR 0 1
 839: PPUSH
 840: CALL_OW 266
 844: PUSH
 845: LD_INT 4
 847: EQUAL
 848: PUSH
 849: LD_VAR 0 1
 853: PPUSH
 854: CALL_OW 255
 858: PUSH
 859: LD_INT 4
 861: EQUAL
 862: AND
 863: IFFALSE 888
// begin SetTech ( tech_weap1 , 4 , 2 ) ;
 865: LD_INT 51
 867: PPUSH
 868: LD_INT 4
 870: PPUSH
 871: LD_INT 2
 873: PPUSH
 874: CALL_OW 322
// Say ( Greene , BazaBarak ) ;
 878: LD_INT 96
 880: PPUSH
 881: LD_STRING BazaBarak
 883: PPUSH
 884: CALL_OW 88
// end ; if GetBtype ( un ) = b_lab and getside ( un ) = 4 then
 888: LD_VAR 0 1
 892: PPUSH
 893: CALL_OW 266
 897: PUSH
 898: LD_INT 6
 900: EQUAL
 901: PUSH
 902: LD_VAR 0 1
 906: PPUSH
 907: CALL_OW 255
 911: PUSH
 912: LD_INT 4
 914: EQUAL
 915: AND
 916: IFFALSE 928
// begin Say ( Greene , BazaLab ) ;
 918: LD_INT 96
 920: PPUSH
 921: LD_STRING BazaLab
 923: PPUSH
 924: CALL_OW 88
// end ; if GetBtype ( un ) = b_factory and getside ( un ) = 4 then
 928: LD_VAR 0 1
 932: PPUSH
 933: CALL_OW 266
 937: PUSH
 938: LD_INT 3
 940: EQUAL
 941: PUSH
 942: LD_VAR 0 1
 946: PPUSH
 947: CALL_OW 255
 951: PUSH
 952: LD_INT 4
 954: EQUAL
 955: AND
 956: IFFALSE 981
// begin SetTech ( tech_tech1 , 4 , 2 ) ;
 958: LD_INT 48
 960: PPUSH
 961: LD_INT 4
 963: PPUSH
 964: LD_INT 2
 966: PPUSH
 967: CALL_OW 322
// Say ( Greene , BazaWarsztat ) ;
 971: LD_INT 96
 973: PPUSH
 974: LD_STRING BazaWarsztat
 976: PPUSH
 977: CALL_OW 88
// end ; end ;
 981: PPOPN 1
 983: END
// on Contact ( side1 , side2 ) do if Side1 = 3 and side2 = 8 then
 984: LD_VAR 0 1
 988: PUSH
 989: LD_INT 3
 991: EQUAL
 992: PUSH
 993: LD_VAR 0 2
 997: PUSH
 998: LD_INT 8
1000: EQUAL
1001: AND
1002: IFFALSE 1012
// FirstContact = 1 ; end_of_file
1004: LD_ADDR_EXP 4
1008: PUSH
1009: LD_INT 1
1011: ST_TO_ADDR
1012: PPOPN 2
1014: END
// export RuBoss , RuSol1 , RuSol2 , RuSol3 , RuSol4 , RuEng1 , Rueng2 , RuMech , RuDoc ; export function RuSetup ; begin
1015: LD_INT 0
1017: PPUSH
// uc_side = 3 ;
1018: LD_ADDR_OWVAR 20
1022: PUSH
1023: LD_INT 3
1025: ST_TO_ADDR
// Uc_nation = 3 ;
1026: LD_ADDR_OWVAR 21
1030: PUSH
1031: LD_INT 3
1033: ST_TO_ADDR
// hc_attr = [ 8 + ( difficulty * 4 ) , 10 ] ;
1034: LD_ADDR_OWVAR 29
1038: PUSH
1039: LD_INT 8
1041: PUSH
1042: LD_OWVAR 67
1046: PUSH
1047: LD_INT 4
1049: MUL
1050: PLUS
1051: PUSH
1052: LD_INT 10
1054: PUSH
1055: EMPTY
1056: LIST
1057: LIST
1058: ST_TO_ADDR
// hc_basic_skills = [ 10 , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
1059: LD_ADDR_OWVAR 30
1063: PUSH
1064: LD_INT 10
1066: PUSH
1067: LD_INT 3
1069: PPUSH
1070: LD_INT 6
1072: PPUSH
1073: CALL_OW 12
1077: PUSH
1078: LD_INT 3
1080: PPUSH
1081: LD_INT 6
1083: PPUSH
1084: CALL_OW 12
1088: PUSH
1089: LD_INT 1
1091: PPUSH
1092: LD_INT 5
1094: PPUSH
1095: CALL_OW 12
1099: PUSH
1100: EMPTY
1101: LIST
1102: LIST
1103: LIST
1104: LIST
1105: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1106: LD_ADDR_OWVAR 27
1110: PUSH
1111: LD_INT 1
1113: PPUSH
1114: LD_INT 2
1116: PPUSH
1117: CALL_OW 12
1121: ST_TO_ADDR
// Hc_class = 9 ;
1122: LD_ADDR_OWVAR 28
1126: PUSH
1127: LD_INT 9
1129: ST_TO_ADDR
// RuBoss = CreateHuman ;
1130: LD_ADDR_EXP 7
1134: PUSH
1135: CALL_OW 44
1139: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
1140: LD_ADDR_OWVAR 30
1144: PUSH
1145: LD_INT 4
1147: PPUSH
1148: LD_INT 10
1150: PUSH
1151: LD_OWVAR 67
1155: MINUS
1156: PPUSH
1157: CALL_OW 12
1161: PUSH
1162: LD_INT 3
1164: PPUSH
1165: LD_INT 6
1167: PPUSH
1168: CALL_OW 12
1172: PUSH
1173: LD_INT 3
1175: PPUSH
1176: LD_INT 6
1178: PPUSH
1179: CALL_OW 12
1183: PUSH
1184: LD_INT 1
1186: PPUSH
1187: LD_INT 5
1189: PPUSH
1190: CALL_OW 12
1194: PUSH
1195: EMPTY
1196: LIST
1197: LIST
1198: LIST
1199: LIST
1200: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1201: LD_ADDR_OWVAR 27
1205: PUSH
1206: LD_INT 1
1208: PPUSH
1209: LD_INT 2
1211: PPUSH
1212: CALL_OW 12
1216: ST_TO_ADDR
// Hc_class = 1 ;
1217: LD_ADDR_OWVAR 28
1221: PUSH
1222: LD_INT 1
1224: ST_TO_ADDR
// RuSol1 = CreateHuman ;
1225: LD_ADDR_EXP 8
1229: PUSH
1230: CALL_OW 44
1234: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
1235: LD_ADDR_OWVAR 30
1239: PUSH
1240: LD_INT 4
1242: PPUSH
1243: LD_INT 10
1245: PUSH
1246: LD_OWVAR 67
1250: MINUS
1251: PPUSH
1252: CALL_OW 12
1256: PUSH
1257: LD_INT 3
1259: PPUSH
1260: LD_INT 6
1262: PPUSH
1263: CALL_OW 12
1267: PUSH
1268: LD_INT 3
1270: PPUSH
1271: LD_INT 6
1273: PPUSH
1274: CALL_OW 12
1278: PUSH
1279: LD_INT 1
1281: PPUSH
1282: LD_INT 5
1284: PPUSH
1285: CALL_OW 12
1289: PUSH
1290: EMPTY
1291: LIST
1292: LIST
1293: LIST
1294: LIST
1295: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1296: LD_ADDR_OWVAR 27
1300: PUSH
1301: LD_INT 1
1303: PPUSH
1304: LD_INT 2
1306: PPUSH
1307: CALL_OW 12
1311: ST_TO_ADDR
// RuSol2 = CreateHuman ;
1312: LD_ADDR_EXP 9
1316: PUSH
1317: CALL_OW 44
1321: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
1322: LD_ADDR_OWVAR 30
1326: PUSH
1327: LD_INT 4
1329: PPUSH
1330: LD_INT 10
1332: PUSH
1333: LD_OWVAR 67
1337: MINUS
1338: PPUSH
1339: CALL_OW 12
1343: PUSH
1344: LD_INT 3
1346: PPUSH
1347: LD_INT 6
1349: PPUSH
1350: CALL_OW 12
1354: PUSH
1355: LD_INT 3
1357: PPUSH
1358: LD_INT 6
1360: PPUSH
1361: CALL_OW 12
1365: PUSH
1366: LD_INT 1
1368: PPUSH
1369: LD_INT 5
1371: PPUSH
1372: CALL_OW 12
1376: PUSH
1377: EMPTY
1378: LIST
1379: LIST
1380: LIST
1381: LIST
1382: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1383: LD_ADDR_OWVAR 27
1387: PUSH
1388: LD_INT 1
1390: PPUSH
1391: LD_INT 2
1393: PPUSH
1394: CALL_OW 12
1398: ST_TO_ADDR
// RuSol3 = CreateHuman ;
1399: LD_ADDR_EXP 10
1403: PUSH
1404: CALL_OW 44
1408: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 7 , 10 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
1409: LD_ADDR_OWVAR 30
1413: PUSH
1414: LD_INT 4
1416: PPUSH
1417: LD_INT 10
1419: PUSH
1420: LD_OWVAR 67
1424: MINUS
1425: PPUSH
1426: CALL_OW 12
1430: PUSH
1431: LD_INT 7
1433: PPUSH
1434: LD_INT 10
1436: PPUSH
1437: CALL_OW 12
1441: PUSH
1442: LD_INT 3
1444: PPUSH
1445: LD_INT 6
1447: PPUSH
1448: CALL_OW 12
1452: PUSH
1453: LD_INT 1
1455: PPUSH
1456: LD_INT 5
1458: PPUSH
1459: CALL_OW 12
1463: PUSH
1464: EMPTY
1465: LIST
1466: LIST
1467: LIST
1468: LIST
1469: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1470: LD_ADDR_OWVAR 27
1474: PUSH
1475: LD_INT 1
1477: PPUSH
1478: LD_INT 2
1480: PPUSH
1481: CALL_OW 12
1485: ST_TO_ADDR
// RuSol4 = CreateHuman ;
1486: LD_ADDR_EXP 11
1490: PUSH
1491: CALL_OW 44
1495: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , 10 , rand ( 3 , 6 ) , rand ( 3 , 6 ) ] ;
1496: LD_ADDR_OWVAR 30
1500: PUSH
1501: LD_INT 3
1503: PPUSH
1504: LD_INT 6
1506: PPUSH
1507: CALL_OW 12
1511: PUSH
1512: LD_INT 10
1514: PUSH
1515: LD_INT 3
1517: PPUSH
1518: LD_INT 6
1520: PPUSH
1521: CALL_OW 12
1525: PUSH
1526: LD_INT 3
1528: PPUSH
1529: LD_INT 6
1531: PPUSH
1532: CALL_OW 12
1536: PUSH
1537: EMPTY
1538: LIST
1539: LIST
1540: LIST
1541: LIST
1542: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1543: LD_ADDR_OWVAR 27
1547: PUSH
1548: LD_INT 1
1550: PPUSH
1551: LD_INT 2
1553: PPUSH
1554: CALL_OW 12
1558: ST_TO_ADDR
// hc_class = 2 ;
1559: LD_ADDR_OWVAR 28
1563: PUSH
1564: LD_INT 2
1566: ST_TO_ADDR
// RuEng1 = CreateHuman ;
1567: LD_ADDR_EXP 12
1571: PUSH
1572: CALL_OW 44
1576: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , 10 , rand ( 3 , 6 ) , rand ( 3 , 6 ) ] ;
1577: LD_ADDR_OWVAR 30
1581: PUSH
1582: LD_INT 3
1584: PPUSH
1585: LD_INT 6
1587: PPUSH
1588: CALL_OW 12
1592: PUSH
1593: LD_INT 10
1595: PUSH
1596: LD_INT 3
1598: PPUSH
1599: LD_INT 6
1601: PPUSH
1602: CALL_OW 12
1606: PUSH
1607: LD_INT 3
1609: PPUSH
1610: LD_INT 6
1612: PPUSH
1613: CALL_OW 12
1617: PUSH
1618: EMPTY
1619: LIST
1620: LIST
1621: LIST
1622: LIST
1623: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1624: LD_ADDR_OWVAR 27
1628: PUSH
1629: LD_INT 1
1631: PPUSH
1632: LD_INT 2
1634: PPUSH
1635: CALL_OW 12
1639: ST_TO_ADDR
// hc_class = 2 ;
1640: LD_ADDR_OWVAR 28
1644: PUSH
1645: LD_INT 2
1647: ST_TO_ADDR
// RuEng2 = CreateHuman ;
1648: LD_ADDR_EXP 13
1652: PUSH
1653: CALL_OW 44
1657: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , rand ( 3 , 6 ) , 10 , rand ( 3 , 6 ) ] ;
1658: LD_ADDR_OWVAR 30
1662: PUSH
1663: LD_INT 3
1665: PPUSH
1666: LD_INT 6
1668: PPUSH
1669: CALL_OW 12
1673: PUSH
1674: LD_INT 3
1676: PPUSH
1677: LD_INT 6
1679: PPUSH
1680: CALL_OW 12
1684: PUSH
1685: LD_INT 10
1687: PUSH
1688: LD_INT 3
1690: PPUSH
1691: LD_INT 6
1693: PPUSH
1694: CALL_OW 12
1698: PUSH
1699: EMPTY
1700: LIST
1701: LIST
1702: LIST
1703: LIST
1704: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1705: LD_ADDR_OWVAR 27
1709: PUSH
1710: LD_INT 1
1712: PPUSH
1713: LD_INT 2
1715: PPUSH
1716: CALL_OW 12
1720: ST_TO_ADDR
// hc_class = 3 ;
1721: LD_ADDR_OWVAR 28
1725: PUSH
1726: LD_INT 3
1728: ST_TO_ADDR
// RuMech = CreateHuman ;
1729: LD_ADDR_EXP 14
1733: PUSH
1734: CALL_OW 44
1738: ST_TO_ADDR
// hc_basic_skills = [ rand ( 1 , 3 ) , rand ( 3 , 7 ) , rand ( 3 , 7 ) , 10 ] ;
1739: LD_ADDR_OWVAR 30
1743: PUSH
1744: LD_INT 1
1746: PPUSH
1747: LD_INT 3
1749: PPUSH
1750: CALL_OW 12
1754: PUSH
1755: LD_INT 3
1757: PPUSH
1758: LD_INT 7
1760: PPUSH
1761: CALL_OW 12
1765: PUSH
1766: LD_INT 3
1768: PPUSH
1769: LD_INT 7
1771: PPUSH
1772: CALL_OW 12
1776: PUSH
1777: LD_INT 10
1779: PUSH
1780: EMPTY
1781: LIST
1782: LIST
1783: LIST
1784: LIST
1785: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
1786: LD_ADDR_OWVAR 27
1790: PUSH
1791: LD_INT 1
1793: PPUSH
1794: LD_INT 2
1796: PPUSH
1797: CALL_OW 12
1801: ST_TO_ADDR
// hc_class = 4 ;
1802: LD_ADDR_OWVAR 28
1806: PUSH
1807: LD_INT 4
1809: ST_TO_ADDR
// RuDoc = CreateHuman ;
1810: LD_ADDR_EXP 15
1814: PUSH
1815: CALL_OW 44
1819: ST_TO_ADDR
// Dwait ( 0 0$1 ) ;
1820: LD_INT 35
1822: PPUSH
1823: CALL_OW 68
// PlaceUnitArea ( RuDoc , RuSpawn , false ) ;
1827: LD_EXP 15
1831: PPUSH
1832: LD_INT 3
1834: PPUSH
1835: LD_INT 0
1837: PPUSH
1838: CALL_OW 49
// PlaceUnitArea ( RuBoss , RuSpawn , false ) ;
1842: LD_EXP 7
1846: PPUSH
1847: LD_INT 3
1849: PPUSH
1850: LD_INT 0
1852: PPUSH
1853: CALL_OW 49
// PlaceUnitArea ( RuSol1 , RuSpawn , false ) ;
1857: LD_EXP 8
1861: PPUSH
1862: LD_INT 3
1864: PPUSH
1865: LD_INT 0
1867: PPUSH
1868: CALL_OW 49
// PlaceUnitArea ( RuSol2 , RuSpawn , false ) ;
1872: LD_EXP 9
1876: PPUSH
1877: LD_INT 3
1879: PPUSH
1880: LD_INT 0
1882: PPUSH
1883: CALL_OW 49
// PlaceUnitArea ( RuSol3 , RuSpawn , false ) ;
1887: LD_EXP 10
1891: PPUSH
1892: LD_INT 3
1894: PPUSH
1895: LD_INT 0
1897: PPUSH
1898: CALL_OW 49
// PlaceUnitArea ( RuSol4 , RuSpawn , false ) ;
1902: LD_EXP 11
1906: PPUSH
1907: LD_INT 3
1909: PPUSH
1910: LD_INT 0
1912: PPUSH
1913: CALL_OW 49
// PlaceUnitArea ( RuEng1 , RuSpawn , false ) ;
1917: LD_EXP 12
1921: PPUSH
1922: LD_INT 3
1924: PPUSH
1925: LD_INT 0
1927: PPUSH
1928: CALL_OW 49
// PlaceUnitArea ( RuEng2 , RuSpawn , false ) ;
1932: LD_EXP 13
1936: PPUSH
1937: LD_INT 3
1939: PPUSH
1940: LD_INT 0
1942: PPUSH
1943: CALL_OW 49
// PlaceUnitArea ( RuMech , RuSpawn , false ) ;
1947: LD_EXP 14
1951: PPUSH
1952: LD_INT 3
1954: PPUSH
1955: LD_INT 0
1957: PPUSH
1958: CALL_OW 49
// Dwait ( 0 0$5 ) ;
1962: LD_INT 175
1964: PPUSH
1965: CALL_OW 68
// SetLives ( RuEng2 , 990 ) ;
1969: LD_EXP 13
1973: PPUSH
1974: LD_INT 990
1976: PPUSH
1977: CALL_OW 234
// ComEnterUnit ( RuDoc , RuLab ) ;
1981: LD_EXP 15
1985: PPUSH
1986: LD_EXP 87
1990: PPUSH
1991: CALL_OW 120
// ComEnterUnit ( RuMech , RuFac ) ;
1995: LD_EXP 14
1999: PPUSH
2000: LD_EXP 86
2004: PPUSH
2005: CALL_OW 120
// ComEnterUnit ( RuBoss , RuBar ) ;
2009: LD_EXP 7
2013: PPUSH
2014: LD_EXP 84
2018: PPUSH
2019: CALL_OW 120
// ComEnterUnit ( RuSol1 , RuGun1 ) ;
2023: LD_EXP 8
2027: PPUSH
2028: LD_EXP 81
2032: PPUSH
2033: CALL_OW 120
// ComEnterUnit ( RuSol2 , RuGun2 ) ;
2037: LD_EXP 9
2041: PPUSH
2042: LD_EXP 82
2046: PPUSH
2047: CALL_OW 120
// ComEnterUnit ( RuSol3 , RuGun3 ) ;
2051: LD_EXP 10
2055: PPUSH
2056: LD_EXP 83
2060: PPUSH
2061: CALL_OW 120
// ComEnterUnit ( RuSol4 , RuBar ) ;
2065: LD_EXP 11
2069: PPUSH
2070: LD_EXP 84
2074: PPUSH
2075: CALL_OW 120
// end ;
2079: LD_VAR 0 1
2083: RET
// export LegS1 , Legs2 , Legs3 , LegMo , LegMech , LegDoc ; export function LegionSetup ; begin
2084: LD_INT 0
2086: PPUSH
// SetTech ( 60 , 8 , 2 ) ;
2087: LD_INT 60
2089: PPUSH
2090: LD_INT 8
2092: PPUSH
2093: LD_INT 2
2095: PPUSH
2096: CALL_OW 322
// if difficulty > 1 then
2100: LD_OWVAR 67
2104: PUSH
2105: LD_INT 1
2107: GREATER
2108: IFFALSE 2123
// SetTech ( 61 , 8 , 2 ) ;
2110: LD_INT 61
2112: PPUSH
2113: LD_INT 8
2115: PPUSH
2116: LD_INT 2
2118: PPUSH
2119: CALL_OW 322
// if difficulty = 3 then
2123: LD_OWVAR 67
2127: PUSH
2128: LD_INT 3
2130: EQUAL
2131: IFFALSE 2146
// SetTech ( 62 , 8 , 2 ) ;
2133: LD_INT 62
2135: PPUSH
2136: LD_INT 8
2138: PPUSH
2139: LD_INT 2
2141: PPUSH
2142: CALL_OW 322
// uc_side = 8 ;
2146: LD_ADDR_OWVAR 20
2150: PUSH
2151: LD_INT 8
2153: ST_TO_ADDR
// uc_nation = 2 ;
2154: LD_ADDR_OWVAR 21
2158: PUSH
2159: LD_INT 2
2161: ST_TO_ADDR
// hc_attr = [ 8 + ( difficulty * 4 ) , 10 ] ;
2162: LD_ADDR_OWVAR 29
2166: PUSH
2167: LD_INT 8
2169: PUSH
2170: LD_OWVAR 67
2174: PUSH
2175: LD_INT 4
2177: MUL
2178: PLUS
2179: PUSH
2180: LD_INT 10
2182: PUSH
2183: EMPTY
2184: LIST
2185: LIST
2186: ST_TO_ADDR
// hc_class = 1 ;
2187: LD_ADDR_OWVAR 28
2191: PUSH
2192: LD_INT 1
2194: ST_TO_ADDR
// hc_basic_skills = [ 4 + difficulty , 2 , 4 , 4 ] ;
2195: LD_ADDR_OWVAR 30
2199: PUSH
2200: LD_INT 4
2202: PUSH
2203: LD_OWVAR 67
2207: PLUS
2208: PUSH
2209: LD_INT 2
2211: PUSH
2212: LD_INT 4
2214: PUSH
2215: LD_INT 4
2217: PUSH
2218: EMPTY
2219: LIST
2220: LIST
2221: LIST
2222: LIST
2223: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2224: LD_ADDR_OWVAR 27
2228: PUSH
2229: LD_INT 1
2231: PPUSH
2232: LD_INT 2
2234: PPUSH
2235: CALL_OW 12
2239: ST_TO_ADDR
// LegS1 = CreateHuman ;
2240: LD_ADDR_EXP 16
2244: PUSH
2245: CALL_OW 44
2249: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2250: LD_ADDR_OWVAR 27
2254: PUSH
2255: LD_INT 1
2257: PPUSH
2258: LD_INT 2
2260: PPUSH
2261: CALL_OW 12
2265: ST_TO_ADDR
// LegS2 = CreateHuman ;
2266: LD_ADDR_EXP 17
2270: PUSH
2271: CALL_OW 44
2275: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2276: LD_ADDR_OWVAR 27
2280: PUSH
2281: LD_INT 1
2283: PPUSH
2284: LD_INT 2
2286: PPUSH
2287: CALL_OW 12
2291: ST_TO_ADDR
// LegS3 = CreateHuman ;
2292: LD_ADDR_EXP 18
2296: PUSH
2297: CALL_OW 44
2301: ST_TO_ADDR
// hc_basic_skills = [ 7 , 2 , 4 , 4 ] ;
2302: LD_ADDR_OWVAR 30
2306: PUSH
2307: LD_INT 7
2309: PUSH
2310: LD_INT 2
2312: PUSH
2313: LD_INT 4
2315: PUSH
2316: LD_INT 4
2318: PUSH
2319: EMPTY
2320: LIST
2321: LIST
2322: LIST
2323: LIST
2324: ST_TO_ADDR
// hc_class = class_mortar ;
2325: LD_ADDR_OWVAR 28
2329: PUSH
2330: LD_INT 8
2332: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2333: LD_ADDR_OWVAR 27
2337: PUSH
2338: LD_INT 1
2340: PPUSH
2341: LD_INT 2
2343: PPUSH
2344: CALL_OW 12
2348: ST_TO_ADDR
// LegMo = CreateHuman ;
2349: LD_ADDR_EXP 19
2353: PUSH
2354: CALL_OW 44
2358: ST_TO_ADDR
// hc_basic_skills = [ 9 , 1 , 7 + difficulty , 0 ] ;
2359: LD_ADDR_OWVAR 30
2363: PUSH
2364: LD_INT 9
2366: PUSH
2367: LD_INT 1
2369: PUSH
2370: LD_INT 7
2372: PUSH
2373: LD_OWVAR 67
2377: PLUS
2378: PUSH
2379: LD_INT 0
2381: PUSH
2382: EMPTY
2383: LIST
2384: LIST
2385: LIST
2386: LIST
2387: ST_TO_ADDR
// hc_class = 3 ;
2388: LD_ADDR_OWVAR 28
2392: PUSH
2393: LD_INT 3
2395: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2396: LD_ADDR_OWVAR 27
2400: PUSH
2401: LD_INT 1
2403: PPUSH
2404: LD_INT 2
2406: PPUSH
2407: CALL_OW 12
2411: ST_TO_ADDR
// LegMech = CreateHuman ;
2412: LD_ADDR_EXP 20
2416: PUSH
2417: CALL_OW 44
2421: ST_TO_ADDR
// PlaceUnitArea ( LegS1 , LegionSetupZone , false ) ;
2422: LD_EXP 16
2426: PPUSH
2427: LD_INT 4
2429: PPUSH
2430: LD_INT 0
2432: PPUSH
2433: CALL_OW 49
// PlaceUnitArea ( LegS2 , LegionSetupZone , false ) ;
2437: LD_EXP 17
2441: PPUSH
2442: LD_INT 4
2444: PPUSH
2445: LD_INT 0
2447: PPUSH
2448: CALL_OW 49
// PlaceUnitArea ( LegS3 , LegionSetupZone , false ) ;
2452: LD_EXP 18
2456: PPUSH
2457: LD_INT 4
2459: PPUSH
2460: LD_INT 0
2462: PPUSH
2463: CALL_OW 49
// PlaceUnitArea ( LegMo , LegionSetupZone , false ) ;
2467: LD_EXP 19
2471: PPUSH
2472: LD_INT 4
2474: PPUSH
2475: LD_INT 0
2477: PPUSH
2478: CALL_OW 49
// PlaceUnitArea ( LegMech , LegionSetupZone , false ) ;
2482: LD_EXP 20
2486: PPUSH
2487: LD_INT 4
2489: PPUSH
2490: LD_INT 0
2492: PPUSH
2493: CALL_OW 49
// hc_attr = [ 10 + ( difficulty * 2 ) , 12 ] ;
2497: LD_ADDR_OWVAR 29
2501: PUSH
2502: LD_INT 10
2504: PUSH
2505: LD_OWVAR 67
2509: PUSH
2510: LD_INT 2
2512: MUL
2513: PLUS
2514: PUSH
2515: LD_INT 12
2517: PUSH
2518: EMPTY
2519: LIST
2520: LIST
2521: ST_TO_ADDR
// hc_basic_skills = [ 10 , 10 , 10 , 7 + difficulty ] ;
2522: LD_ADDR_OWVAR 30
2526: PUSH
2527: LD_INT 10
2529: PUSH
2530: LD_INT 10
2532: PUSH
2533: LD_INT 10
2535: PUSH
2536: LD_INT 7
2538: PUSH
2539: LD_OWVAR 67
2543: PLUS
2544: PUSH
2545: EMPTY
2546: LIST
2547: LIST
2548: LIST
2549: LIST
2550: ST_TO_ADDR
// hc_class = 4 ;
2551: LD_ADDR_OWVAR 28
2555: PUSH
2556: LD_INT 4
2558: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2559: LD_ADDR_OWVAR 27
2563: PUSH
2564: LD_INT 1
2566: PPUSH
2567: LD_INT 2
2569: PPUSH
2570: CALL_OW 12
2574: ST_TO_ADDR
// LegDoc = CreateHuman ;
2575: LD_ADDR_EXP 21
2579: PUSH
2580: CALL_OW 44
2584: ST_TO_ADDR
// PlaceUnitArea ( LegDoc , LegionSetupZone , false ) ;
2585: LD_EXP 21
2589: PPUSH
2590: LD_INT 4
2592: PPUSH
2593: LD_INT 0
2595: PPUSH
2596: CALL_OW 49
// dWait ( 0 0$1 ) ;
2600: LD_INT 35
2602: PPUSH
2603: CALL_OW 68
// ComEnterUnit ( LegMech , LegRadio2 ) ;
2607: LD_EXP 20
2611: PPUSH
2612: LD_INT 71
2614: PPUSH
2615: CALL_OW 120
// ComMoveXY ( LegMo , 146 , 80 ) ;
2619: LD_EXP 19
2623: PPUSH
2624: LD_INT 146
2626: PPUSH
2627: LD_INT 80
2629: PPUSH
2630: CALL_OW 111
// end ;
2634: LD_VAR 0 1
2638: RET
// export Coward1 , Coward2 , Coward3 , Coward4 , Coward5 , Coward6 , Coward7 , Coward8 , Coward9 , Coward10 , Coward11 , Coward12 ; export function LoyalPosts ( ) ; begin
2639: LD_INT 0
2641: PPUSH
// AddComEnterUnit ( Loyal1 , LoyalGun1 ) ;
2642: LD_EXP 70
2646: PPUSH
2647: LD_EXP 53
2651: PPUSH
2652: CALL_OW 180
// AddComEnterUnit ( Loyal2 , LoyalGun2 ) ;
2656: LD_EXP 71
2660: PPUSH
2661: LD_EXP 54
2665: PPUSH
2666: CALL_OW 180
// AddComEnterUnit ( Loyal4 , LoyalGun3 ) ;
2670: LD_EXP 73
2674: PPUSH
2675: LD_EXP 55
2679: PPUSH
2680: CALL_OW 180
// AddComEnterUnit ( Loyal3 , AmBar ) ;
2684: LD_EXP 72
2688: PPUSH
2689: LD_EXP 57
2693: PPUSH
2694: CALL_OW 180
// AddComEnterUnit ( LoyalMech1 , AmFac1 ) ;
2698: LD_EXP 74
2702: PPUSH
2703: LD_EXP 64
2707: PPUSH
2708: CALL_OW 180
// AddComEnterUnit ( LoyalMech2 , AmFac2 ) ;
2712: LD_EXP 75
2716: PPUSH
2717: LD_EXP 65
2721: PPUSH
2722: CALL_OW 180
// AddComEnterUnit ( LoyalDoc , AmLAb1 ) ;
2726: LD_EXP 76
2730: PPUSH
2731: LD_EXP 62
2735: PPUSH
2736: CALL_OW 180
// end ;
2740: LD_VAR 0 1
2744: RET
// export function CowardSetup ( ) ; begin
2745: LD_INT 0
2747: PPUSH
// uc_side = 1 ;
2748: LD_ADDR_OWVAR 20
2752: PUSH
2753: LD_INT 1
2755: ST_TO_ADDR
// uc_nation = 1 ;
2756: LD_ADDR_OWVAR 21
2760: PUSH
2761: LD_INT 1
2763: ST_TO_ADDR
// hc_class = 1 ;
2764: LD_ADDR_OWVAR 28
2768: PUSH
2769: LD_INT 1
2771: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
2772: LD_ADDR_OWVAR 30
2776: PUSH
2777: LD_INT 4
2779: PPUSH
2780: LD_INT 10
2782: PUSH
2783: LD_OWVAR 67
2787: MINUS
2788: PPUSH
2789: CALL_OW 12
2793: PUSH
2794: LD_INT 3
2796: PPUSH
2797: LD_INT 6
2799: PPUSH
2800: CALL_OW 12
2804: PUSH
2805: LD_INT 3
2807: PPUSH
2808: LD_INT 6
2810: PPUSH
2811: CALL_OW 12
2815: PUSH
2816: LD_INT 1
2818: PPUSH
2819: LD_INT 5
2821: PPUSH
2822: CALL_OW 12
2826: PUSH
2827: EMPTY
2828: LIST
2829: LIST
2830: LIST
2831: LIST
2832: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2833: LD_ADDR_OWVAR 27
2837: PUSH
2838: LD_INT 1
2840: PPUSH
2841: LD_INT 2
2843: PPUSH
2844: CALL_OW 12
2848: ST_TO_ADDR
// Coward1 = CreateHuman ;
2849: LD_ADDR_EXP 22
2853: PUSH
2854: CALL_OW 44
2858: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , rand ( 6 , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) ] ;
2859: LD_ADDR_OWVAR 30
2863: PUSH
2864: LD_INT 3
2866: PPUSH
2867: LD_INT 6
2869: PPUSH
2870: CALL_OW 12
2874: PUSH
2875: LD_INT 6
2877: PPUSH
2878: LD_INT 10
2880: PPUSH
2881: CALL_OW 12
2885: PUSH
2886: LD_INT 3
2888: PPUSH
2889: LD_INT 6
2891: PPUSH
2892: CALL_OW 12
2896: PUSH
2897: LD_INT 3
2899: PPUSH
2900: LD_INT 6
2902: PPUSH
2903: CALL_OW 12
2907: PUSH
2908: EMPTY
2909: LIST
2910: LIST
2911: LIST
2912: LIST
2913: ST_TO_ADDR
// hc_class = 2 ;
2914: LD_ADDR_OWVAR 28
2918: PUSH
2919: LD_INT 2
2921: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2922: LD_ADDR_OWVAR 27
2926: PUSH
2927: LD_INT 1
2929: PPUSH
2930: LD_INT 2
2932: PPUSH
2933: CALL_OW 12
2937: ST_TO_ADDR
// Coward2 = CreateHuman ;
2938: LD_ADDR_EXP 23
2942: PUSH
2943: CALL_OW 44
2947: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , rand ( 3 , 7 ) , rand ( 8 - difficulty , 10 ) , rand ( 5 , 6 ) ] ;
2948: LD_ADDR_OWVAR 30
2952: PUSH
2953: LD_INT 3
2955: PPUSH
2956: LD_INT 6
2958: PPUSH
2959: CALL_OW 12
2963: PUSH
2964: LD_INT 3
2966: PPUSH
2967: LD_INT 7
2969: PPUSH
2970: CALL_OW 12
2974: PUSH
2975: LD_INT 8
2977: PUSH
2978: LD_OWVAR 67
2982: MINUS
2983: PPUSH
2984: LD_INT 10
2986: PPUSH
2987: CALL_OW 12
2991: PUSH
2992: LD_INT 5
2994: PPUSH
2995: LD_INT 6
2997: PPUSH
2998: CALL_OW 12
3002: PUSH
3003: EMPTY
3004: LIST
3005: LIST
3006: LIST
3007: LIST
3008: ST_TO_ADDR
// hc_class = 3 ;
3009: LD_ADDR_OWVAR 28
3013: PUSH
3014: LD_INT 3
3016: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3017: LD_ADDR_OWVAR 27
3021: PUSH
3022: LD_INT 1
3024: PPUSH
3025: LD_INT 2
3027: PPUSH
3028: CALL_OW 12
3032: ST_TO_ADDR
// Coward3 = CreateHuman ;
3033: LD_ADDR_EXP 24
3037: PUSH
3038: CALL_OW 44
3042: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3043: LD_ADDR_OWVAR 27
3047: PUSH
3048: LD_INT 1
3050: PPUSH
3051: LD_INT 2
3053: PPUSH
3054: CALL_OW 12
3058: ST_TO_ADDR
// hc_basic_skills = [ rand ( 1 , 4 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 7 , 10 ) ] ;
3059: LD_ADDR_OWVAR 30
3063: PUSH
3064: LD_INT 1
3066: PPUSH
3067: LD_INT 4
3069: PPUSH
3070: CALL_OW 12
3074: PUSH
3075: LD_INT 3
3077: PPUSH
3078: LD_INT 6
3080: PPUSH
3081: CALL_OW 12
3085: PUSH
3086: LD_INT 3
3088: PPUSH
3089: LD_INT 6
3091: PPUSH
3092: CALL_OW 12
3096: PUSH
3097: LD_INT 7
3099: PPUSH
3100: LD_INT 10
3102: PPUSH
3103: CALL_OW 12
3107: PUSH
3108: EMPTY
3109: LIST
3110: LIST
3111: LIST
3112: LIST
3113: ST_TO_ADDR
// hc_class = 4 ;
3114: LD_ADDR_OWVAR 28
3118: PUSH
3119: LD_INT 4
3121: ST_TO_ADDR
// Coward4 = CreateHuman ;
3122: LD_ADDR_EXP 25
3126: PUSH
3127: CALL_OW 44
3131: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3132: LD_ADDR_OWVAR 27
3136: PUSH
3137: LD_INT 1
3139: PPUSH
3140: LD_INT 2
3142: PPUSH
3143: CALL_OW 12
3147: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
3148: LD_ADDR_OWVAR 30
3152: PUSH
3153: LD_INT 4
3155: PPUSH
3156: LD_INT 10
3158: PUSH
3159: LD_OWVAR 67
3163: MINUS
3164: PPUSH
3165: CALL_OW 12
3169: PUSH
3170: LD_INT 3
3172: PPUSH
3173: LD_INT 6
3175: PPUSH
3176: CALL_OW 12
3180: PUSH
3181: LD_INT 3
3183: PPUSH
3184: LD_INT 6
3186: PPUSH
3187: CALL_OW 12
3191: PUSH
3192: LD_INT 1
3194: PPUSH
3195: LD_INT 5
3197: PPUSH
3198: CALL_OW 12
3202: PUSH
3203: EMPTY
3204: LIST
3205: LIST
3206: LIST
3207: LIST
3208: ST_TO_ADDR
// hc_class = 1 ;
3209: LD_ADDR_OWVAR 28
3213: PUSH
3214: LD_INT 1
3216: ST_TO_ADDR
// Coward5 = CreateHuman ;
3217: LD_ADDR_EXP 26
3221: PUSH
3222: CALL_OW 44
3226: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3227: LD_ADDR_OWVAR 27
3231: PUSH
3232: LD_INT 1
3234: PPUSH
3235: LD_INT 2
3237: PPUSH
3238: CALL_OW 12
3242: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , rand ( 3 , 7 ) , rand ( 8 - difficulty , 10 ) , rand ( 5 , 6 ) ] ;
3243: LD_ADDR_OWVAR 30
3247: PUSH
3248: LD_INT 3
3250: PPUSH
3251: LD_INT 6
3253: PPUSH
3254: CALL_OW 12
3258: PUSH
3259: LD_INT 3
3261: PPUSH
3262: LD_INT 7
3264: PPUSH
3265: CALL_OW 12
3269: PUSH
3270: LD_INT 8
3272: PUSH
3273: LD_OWVAR 67
3277: MINUS
3278: PPUSH
3279: LD_INT 10
3281: PPUSH
3282: CALL_OW 12
3286: PUSH
3287: LD_INT 5
3289: PPUSH
3290: LD_INT 6
3292: PPUSH
3293: CALL_OW 12
3297: PUSH
3298: EMPTY
3299: LIST
3300: LIST
3301: LIST
3302: LIST
3303: ST_TO_ADDR
// hc_class = 3 ;
3304: LD_ADDR_OWVAR 28
3308: PUSH
3309: LD_INT 3
3311: ST_TO_ADDR
// Coward6 = CreateHuman ;
3312: LD_ADDR_EXP 27
3316: PUSH
3317: CALL_OW 44
3321: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3322: LD_ADDR_OWVAR 27
3326: PUSH
3327: LD_INT 1
3329: PPUSH
3330: LD_INT 2
3332: PPUSH
3333: CALL_OW 12
3337: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
3338: LD_ADDR_OWVAR 30
3342: PUSH
3343: LD_INT 4
3345: PPUSH
3346: LD_INT 10
3348: PUSH
3349: LD_OWVAR 67
3353: MINUS
3354: PPUSH
3355: CALL_OW 12
3359: PUSH
3360: LD_INT 3
3362: PPUSH
3363: LD_INT 6
3365: PPUSH
3366: CALL_OW 12
3370: PUSH
3371: LD_INT 3
3373: PPUSH
3374: LD_INT 6
3376: PPUSH
3377: CALL_OW 12
3381: PUSH
3382: LD_INT 1
3384: PPUSH
3385: LD_INT 5
3387: PPUSH
3388: CALL_OW 12
3392: PUSH
3393: EMPTY
3394: LIST
3395: LIST
3396: LIST
3397: LIST
3398: ST_TO_ADDR
// hc_class = 1 ;
3399: LD_ADDR_OWVAR 28
3403: PUSH
3404: LD_INT 1
3406: ST_TO_ADDR
// Coward7 = CreateHuman ;
3407: LD_ADDR_EXP 28
3411: PUSH
3412: CALL_OW 44
3416: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3417: LD_ADDR_OWVAR 27
3421: PUSH
3422: LD_INT 1
3424: PPUSH
3425: LD_INT 2
3427: PPUSH
3428: CALL_OW 12
3432: ST_TO_ADDR
// hc_basic_skills = [ rand ( 3 , 6 ) , rand ( 6 , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) ] ;
3433: LD_ADDR_OWVAR 30
3437: PUSH
3438: LD_INT 3
3440: PPUSH
3441: LD_INT 6
3443: PPUSH
3444: CALL_OW 12
3448: PUSH
3449: LD_INT 6
3451: PPUSH
3452: LD_INT 10
3454: PPUSH
3455: CALL_OW 12
3459: PUSH
3460: LD_INT 3
3462: PPUSH
3463: LD_INT 6
3465: PPUSH
3466: CALL_OW 12
3470: PUSH
3471: LD_INT 3
3473: PPUSH
3474: LD_INT 6
3476: PPUSH
3477: CALL_OW 12
3481: PUSH
3482: EMPTY
3483: LIST
3484: LIST
3485: LIST
3486: LIST
3487: ST_TO_ADDR
// hc_class = 2 ;
3488: LD_ADDR_OWVAR 28
3492: PUSH
3493: LD_INT 2
3495: ST_TO_ADDR
// Coward8 = CreateHuman ;
3496: LD_ADDR_EXP 29
3500: PUSH
3501: CALL_OW 44
3505: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3506: LD_ADDR_OWVAR 27
3510: PUSH
3511: LD_INT 1
3513: PPUSH
3514: LD_INT 2
3516: PPUSH
3517: CALL_OW 12
3521: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
3522: LD_ADDR_OWVAR 30
3526: PUSH
3527: LD_INT 4
3529: PPUSH
3530: LD_INT 10
3532: PUSH
3533: LD_OWVAR 67
3537: MINUS
3538: PPUSH
3539: CALL_OW 12
3543: PUSH
3544: LD_INT 3
3546: PPUSH
3547: LD_INT 6
3549: PPUSH
3550: CALL_OW 12
3554: PUSH
3555: LD_INT 3
3557: PPUSH
3558: LD_INT 6
3560: PPUSH
3561: CALL_OW 12
3565: PUSH
3566: LD_INT 1
3568: PPUSH
3569: LD_INT 5
3571: PPUSH
3572: CALL_OW 12
3576: PUSH
3577: EMPTY
3578: LIST
3579: LIST
3580: LIST
3581: LIST
3582: ST_TO_ADDR
// hc_class = 1 ;
3583: LD_ADDR_OWVAR 28
3587: PUSH
3588: LD_INT 1
3590: ST_TO_ADDR
// Coward9 = CreateHuman ;
3591: LD_ADDR_EXP 30
3595: PUSH
3596: CALL_OW 44
3600: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3601: LD_ADDR_OWVAR 27
3605: PUSH
3606: LD_INT 1
3608: PPUSH
3609: LD_INT 2
3611: PPUSH
3612: CALL_OW 12
3616: ST_TO_ADDR
// hc_basic_skills = [ rand ( 1 , 4 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 7 , 10 ) ] ;
3617: LD_ADDR_OWVAR 30
3621: PUSH
3622: LD_INT 1
3624: PPUSH
3625: LD_INT 4
3627: PPUSH
3628: CALL_OW 12
3632: PUSH
3633: LD_INT 3
3635: PPUSH
3636: LD_INT 6
3638: PPUSH
3639: CALL_OW 12
3643: PUSH
3644: LD_INT 3
3646: PPUSH
3647: LD_INT 6
3649: PPUSH
3650: CALL_OW 12
3654: PUSH
3655: LD_INT 7
3657: PPUSH
3658: LD_INT 10
3660: PPUSH
3661: CALL_OW 12
3665: PUSH
3666: EMPTY
3667: LIST
3668: LIST
3669: LIST
3670: LIST
3671: ST_TO_ADDR
// hc_class = 4 ;
3672: LD_ADDR_OWVAR 28
3676: PUSH
3677: LD_INT 4
3679: ST_TO_ADDR
// Coward10 = CreateHuman ;
3680: LD_ADDR_EXP 31
3684: PUSH
3685: CALL_OW 44
3689: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3690: LD_ADDR_OWVAR 27
3694: PUSH
3695: LD_INT 1
3697: PPUSH
3698: LD_INT 2
3700: PPUSH
3701: CALL_OW 12
3705: ST_TO_ADDR
// hc_class = 1 ;
3706: LD_ADDR_OWVAR 28
3710: PUSH
3711: LD_INT 1
3713: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 , 10 - difficulty ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
3714: LD_ADDR_OWVAR 30
3718: PUSH
3719: LD_INT 4
3721: PPUSH
3722: LD_INT 10
3724: PUSH
3725: LD_OWVAR 67
3729: MINUS
3730: PPUSH
3731: CALL_OW 12
3735: PUSH
3736: LD_INT 3
3738: PPUSH
3739: LD_INT 6
3741: PPUSH
3742: CALL_OW 12
3746: PUSH
3747: LD_INT 3
3749: PPUSH
3750: LD_INT 6
3752: PPUSH
3753: CALL_OW 12
3757: PUSH
3758: LD_INT 1
3760: PPUSH
3761: LD_INT 5
3763: PPUSH
3764: CALL_OW 12
3768: PUSH
3769: EMPTY
3770: LIST
3771: LIST
3772: LIST
3773: LIST
3774: ST_TO_ADDR
// Coward11 = CreateHuman ;
3775: LD_ADDR_EXP 32
3779: PUSH
3780: CALL_OW 44
3784: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
3785: LD_ADDR_OWVAR 27
3789: PUSH
3790: LD_INT 1
3792: PPUSH
3793: LD_INT 2
3795: PPUSH
3796: CALL_OW 12
3800: ST_TO_ADDR
// hc_basic_skills = [ rand ( 1 , 10 ) , rand ( 1 , 10 ) , rand ( 1 , 10 ) , rand ( 1 , 10 ) ] ;
3801: LD_ADDR_OWVAR 30
3805: PUSH
3806: LD_INT 1
3808: PPUSH
3809: LD_INT 10
3811: PPUSH
3812: CALL_OW 12
3816: PUSH
3817: LD_INT 1
3819: PPUSH
3820: LD_INT 10
3822: PPUSH
3823: CALL_OW 12
3827: PUSH
3828: LD_INT 1
3830: PPUSH
3831: LD_INT 10
3833: PPUSH
3834: CALL_OW 12
3838: PUSH
3839: LD_INT 1
3841: PPUSH
3842: LD_INT 10
3844: PPUSH
3845: CALL_OW 12
3849: PUSH
3850: EMPTY
3851: LIST
3852: LIST
3853: LIST
3854: LIST
3855: ST_TO_ADDR
// hc_class = 1 ;
3856: LD_ADDR_OWVAR 28
3860: PUSH
3861: LD_INT 1
3863: ST_TO_ADDR
// Coward12 = CreateHuman ;
3864: LD_ADDR_EXP 33
3868: PUSH
3869: CALL_OW 44
3873: ST_TO_ADDR
// PlaceUnitArea ( Coward1 , CowardSetupZone , false ) ;
3874: LD_EXP 22
3878: PPUSH
3879: LD_INT 8
3881: PPUSH
3882: LD_INT 0
3884: PPUSH
3885: CALL_OW 49
// PlaceUnitArea ( Coward2 , CowardSetupZone , false ) ;
3889: LD_EXP 23
3893: PPUSH
3894: LD_INT 8
3896: PPUSH
3897: LD_INT 0
3899: PPUSH
3900: CALL_OW 49
// PlaceUnitArea ( Coward3 , CowardSetupZone , false ) ;
3904: LD_EXP 24
3908: PPUSH
3909: LD_INT 8
3911: PPUSH
3912: LD_INT 0
3914: PPUSH
3915: CALL_OW 49
// PlaceUnitArea ( Coward4 , CowardSetupZone , false ) ;
3919: LD_EXP 25
3923: PPUSH
3924: LD_INT 8
3926: PPUSH
3927: LD_INT 0
3929: PPUSH
3930: CALL_OW 49
// PlaceUnitArea ( Coward5 , CowardSetupZone , false ) ;
3934: LD_EXP 26
3938: PPUSH
3939: LD_INT 8
3941: PPUSH
3942: LD_INT 0
3944: PPUSH
3945: CALL_OW 49
// PlaceUnitArea ( Coward6 , CowardSetupZone , false ) ;
3949: LD_EXP 27
3953: PPUSH
3954: LD_INT 8
3956: PPUSH
3957: LD_INT 0
3959: PPUSH
3960: CALL_OW 49
// PlaceUnitArea ( Coward7 , CowardSetupZone , false ) ;
3964: LD_EXP 28
3968: PPUSH
3969: LD_INT 8
3971: PPUSH
3972: LD_INT 0
3974: PPUSH
3975: CALL_OW 49
// PlaceUnitArea ( Coward8 , CowardSetupZone , false ) ;
3979: LD_EXP 29
3983: PPUSH
3984: LD_INT 8
3986: PPUSH
3987: LD_INT 0
3989: PPUSH
3990: CALL_OW 49
// PlaceUnitArea ( Coward9 , CowardSetupZone , false ) ;
3994: LD_EXP 30
3998: PPUSH
3999: LD_INT 8
4001: PPUSH
4002: LD_INT 0
4004: PPUSH
4005: CALL_OW 49
// PlaceUnitArea ( Coward11 , CowardSetupZone , false ) ;
4009: LD_EXP 32
4013: PPUSH
4014: LD_INT 8
4016: PPUSH
4017: LD_INT 0
4019: PPUSH
4020: CALL_OW 49
// PlaceUnitArea ( Coward12 , CowardSetupZone , false ) ;
4024: LD_EXP 33
4028: PPUSH
4029: LD_INT 8
4031: PPUSH
4032: LD_INT 0
4034: PPUSH
4035: CALL_OW 49
// PlaceUnitArea ( Coward10 , CowardSetupZone , false ) ;
4039: LD_EXP 31
4043: PPUSH
4044: LD_INT 8
4046: PPUSH
4047: LD_INT 0
4049: PPUSH
4050: CALL_OW 49
// wait ( 0 0$01 ) ;
4054: LD_INT 35
4056: PPUSH
4057: CALL_OW 67
// LoyalPosts ;
4061: CALL 2639 0 0
// wait ( 0 0$01 ) ;
4065: LD_INT 35
4067: PPUSH
4068: CALL_OW 67
// ComEnterUnit ( Coward1 , CowardGun1 ) ;
4072: LD_EXP 22
4076: PPUSH
4077: LD_EXP 58
4081: PPUSH
4082: CALL_OW 120
// ComEnterUnit ( Coward5 , CowardGun2 ) ;
4086: LD_EXP 26
4090: PPUSH
4091: LD_EXP 59
4095: PPUSH
4096: CALL_OW 120
// ComEnterUnit ( Coward7 , CowardGun3 ) ;
4100: LD_EXP 28
4104: PPUSH
4105: LD_EXP 60
4109: PPUSH
4110: CALL_OW 120
// ComEnterUnit ( Coward9 , CowardGun4 ) ;
4114: LD_EXP 30
4118: PPUSH
4119: LD_EXP 61
4123: PPUSH
4124: CALL_OW 120
// ComEnterUnit ( Coward11 , Ambar ) ;
4128: LD_EXP 32
4132: PPUSH
4133: LD_EXP 57
4137: PPUSH
4138: CALL_OW 120
// ComEnterUnit ( Coward12 , AmBar ) ;
4142: LD_EXP 33
4146: PPUSH
4147: LD_EXP 57
4151: PPUSH
4152: CALL_OW 120
// ComEnterUnit ( Coward3 , AmFac1 ) ;
4156: LD_EXP 24
4160: PPUSH
4161: LD_EXP 64
4165: PPUSH
4166: CALL_OW 120
// ComEnterUnit ( Coward4 , AmLab2 ) ;
4170: LD_EXP 25
4174: PPUSH
4175: LD_EXP 63
4179: PPUSH
4180: CALL_OW 120
// ComEnterUnit ( Coward6 , AmFac2 ) ;
4184: LD_EXP 27
4188: PPUSH
4189: LD_EXP 65
4193: PPUSH
4194: CALL_OW 120
// ComEnterUnit ( Coward10 , AmLab2 ) ;
4198: LD_EXP 31
4202: PPUSH
4203: LD_EXP 63
4207: PPUSH
4208: CALL_OW 120
// end ; end_of_file
4212: LD_VAR 0 1
4216: RET
// export KARP ; export function SpawnKarp ( ) ; begin
4217: LD_INT 0
4219: PPUSH
// uc_nation = 0 ;
4220: LD_ADDR_OWVAR 21
4224: PUSH
4225: LD_INT 0
4227: ST_TO_ADDR
// uc_side = 0 ;
4228: LD_ADDR_OWVAR 20
4232: PUSH
4233: LD_INT 0
4235: ST_TO_ADDR
// hc_class = 20 ;
4236: LD_ADDR_OWVAR 28
4240: PUSH
4241: LD_INT 20
4243: ST_TO_ADDR
// hc_attr = [ 25 , 5 ] ;
4244: LD_ADDR_OWVAR 29
4248: PUSH
4249: LD_INT 25
4251: PUSH
4252: LD_INT 5
4254: PUSH
4255: EMPTY
4256: LIST
4257: LIST
4258: ST_TO_ADDR
// hc_importance = 100 ;
4259: LD_ADDR_OWVAR 32
4263: PUSH
4264: LD_INT 100
4266: ST_TO_ADDR
// KARP = CreateHuman ;
4267: LD_ADDR_EXP 34
4271: PUSH
4272: CALL_OW 44
4276: ST_TO_ADDR
// wait ( 0 0$0.75 ) ;
4277: LD_INT 26
4279: PPUSH
4280: CALL_OW 67
// PlaceUnitXY ( KARP , 139 , 69 , false ) ;
4284: LD_EXP 34
4288: PPUSH
4289: LD_INT 139
4291: PPUSH
4292: LD_INT 69
4294: PPUSH
4295: LD_INT 0
4297: PPUSH
4298: CALL_OW 48
// end ;
4302: LD_VAR 0 1
4306: RET
// every 1 1$30 do
4307: GO 4309
4309: DISABLE
// begin enable ;
4310: ENABLE
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , CrateDrop , true ) ;
4311: LD_INT 1
4313: PPUSH
4314: LD_INT 4
4316: PUSH
4317: LD_OWVAR 67
4321: MINUS
4322: PPUSH
4323: LD_INT 5
4325: PPUSH
4326: CALL_OW 12
4330: PPUSH
4331: LD_INT 9
4333: PPUSH
4334: LD_INT 1
4336: PPUSH
4337: CALL_OW 59
// end ;
4341: END
// every 5 5$0 do
4342: GO 4344
4344: DISABLE
// begin enable ;
4345: ENABLE
// CreateResourcesArea ( 1 , rand ( 1 , 5 - difficulty ) , CratesDrop , true ) ;
4346: LD_INT 1
4348: PPUSH
4349: LD_INT 1
4351: PPUSH
4352: LD_INT 5
4354: PUSH
4355: LD_OWVAR 67
4359: MINUS
4360: PPUSH
4361: CALL_OW 12
4365: PPUSH
4366: LD_INT 10
4368: PPUSH
4369: LD_INT 1
4371: PPUSH
4372: CALL_OW 59
// dWait ( 0 0$01 ) ;
4376: LD_INT 35
4378: PPUSH
4379: CALL_OW 68
// CreateResourcesArea ( 1 , rand ( 1 , 5 - difficulty ) , CratesDrop , true ) ;
4383: LD_INT 1
4385: PPUSH
4386: LD_INT 1
4388: PPUSH
4389: LD_INT 5
4391: PUSH
4392: LD_OWVAR 67
4396: MINUS
4397: PPUSH
4398: CALL_OW 12
4402: PPUSH
4403: LD_INT 10
4405: PPUSH
4406: LD_INT 1
4408: PPUSH
4409: CALL_OW 59
// dWait ( 0 0$01 ) ;
4413: LD_INT 35
4415: PPUSH
4416: CALL_OW 68
// CreateResourcesArea ( 1 , rand ( 1 , 5 - difficulty ) , CratesDrop , true ) ;
4420: LD_INT 1
4422: PPUSH
4423: LD_INT 1
4425: PPUSH
4426: LD_INT 5
4428: PUSH
4429: LD_OWVAR 67
4433: MINUS
4434: PPUSH
4435: CALL_OW 12
4439: PPUSH
4440: LD_INT 10
4442: PPUSH
4443: LD_INT 1
4445: PPUSH
4446: CALL_OW 59
// dWait ( 0 0$5 ) ;
4450: LD_INT 175
4452: PPUSH
4453: CALL_OW 68
// CreateResourcesArea ( 1 , rand ( 1 , 5 - difficulty ) , CratesDrop , true ) ;
4457: LD_INT 1
4459: PPUSH
4460: LD_INT 1
4462: PPUSH
4463: LD_INT 5
4465: PUSH
4466: LD_OWVAR 67
4470: MINUS
4471: PPUSH
4472: CALL_OW 12
4476: PPUSH
4477: LD_INT 10
4479: PPUSH
4480: LD_INT 1
4482: PPUSH
4483: CALL_OW 59
// dWait ( 0 0$0.5 ) ;
4487: LD_INT 18
4489: PPUSH
4490: CALL_OW 68
// CreateResourcesArea ( 1 , rand ( 1 , 5 - difficulty ) , CratesDrop , true ) ;
4494: LD_INT 1
4496: PPUSH
4497: LD_INT 1
4499: PPUSH
4500: LD_INT 5
4502: PUSH
4503: LD_OWVAR 67
4507: MINUS
4508: PPUSH
4509: CALL_OW 12
4513: PPUSH
4514: LD_INT 10
4516: PPUSH
4517: LD_INT 1
4519: PPUSH
4520: CALL_OW 59
// dWait ( 0 0$7 ) ;
4524: LD_INT 245
4526: PPUSH
4527: CALL_OW 68
// CreateResourcesArea ( 1 , 5 , CratesDrop , true ) ;
4531: LD_INT 1
4533: PPUSH
4534: LD_INT 5
4536: PPUSH
4537: LD_INT 10
4539: PPUSH
4540: LD_INT 1
4542: PPUSH
4543: CALL_OW 59
// end ;
4547: END
// every 0 0$01 trigger See ( 4 , KARP ) do
4548: LD_INT 4
4550: PPUSH
4551: LD_EXP 34
4555: PPUSH
4556: CALL_OW 292
4560: IFFALSE 4584
4562: GO 4564
4564: DISABLE
// begin CenterOnUnits ( KARP ) ;
4565: LD_EXP 34
4569: PPUSH
4570: CALL_OW 85
// Say ( Greene , Fish ) ;
4574: LD_INT 96
4576: PPUSH
4577: LD_STRING Fish
4579: PPUSH
4580: CALL_OW 88
// end ;
4584: END
// every 0 0$01 trigger See ( 4 , GreenDepo ) do
4585: LD_INT 4
4587: PPUSH
4588: LD_INT 79
4590: PPUSH
4591: CALL_OW 292
4595: IFFALSE 4637
4597: GO 4599
4599: DISABLE
// begin CenterOnUnits ( GreenDepo ) ;
4600: LD_INT 79
4602: PPUSH
4603: CALL_OW 85
// Say ( Madison , GreenSpotted1 ) ;
4607: LD_INT 98
4609: PPUSH
4610: LD_STRING GreenSpotted1
4612: PPUSH
4613: CALL_OW 88
// Say ( Greene , GreenSpotted2 ) ;
4617: LD_INT 96
4619: PPUSH
4620: LD_STRING GreenSpotted2
4622: PPUSH
4623: CALL_OW 88
// Say ( Madison , GreenSpotted3 ) ;
4627: LD_INT 98
4629: PPUSH
4630: LD_STRING GreenSpotted3
4632: PPUSH
4633: CALL_OW 88
// end ;
4637: END
// every 10 10$00 trigger IsOK ( BlueBase ) do
4638: LD_EXP 66
4642: PPUSH
4643: CALL_OW 302
4647: IFFALSE 4691
4649: GO 4651
4651: DISABLE
// SetResourceType ( GetBase ( BlueBase ) , mat_cans , GetResourceType ( GetBase ( BlueBase ) , 1 ) + 500 ) ; end_of_file
4652: LD_EXP 66
4656: PPUSH
4657: CALL_OW 274
4661: PPUSH
4662: LD_INT 1
4664: PPUSH
4665: LD_EXP 66
4669: PPUSH
4670: CALL_OW 274
4674: PPUSH
4675: LD_INT 1
4677: PPUSH
4678: CALL_OW 275
4682: PUSH
4683: LD_INT 500
4685: PLUS
4686: PPUSH
4687: CALL_OW 277
4691: END
// export UniformGet ; var List , UnitsInList , i , noticemesenpai ; function Spottedamericans ( ) ; begin
4692: LD_INT 0
4694: PPUSH
// result = false ;
4695: LD_ADDR_VAR 0 1
4699: PUSH
4700: LD_INT 0
4702: ST_TO_ADDR
// List = FilterAllUnits ( [ f_side , 1 ] ) ;
4703: LD_ADDR_LOC 1
4707: PUSH
4708: LD_INT 22
4710: PUSH
4711: LD_INT 1
4713: PUSH
4714: EMPTY
4715: LIST
4716: LIST
4717: PPUSH
4718: CALL_OW 69
4722: ST_TO_ADDR
// for UnitsInList in List do
4723: LD_ADDR_LOC 2
4727: PUSH
4728: LD_LOC 1
4732: PUSH
4733: FOR_IN
4734: IFFALSE 4770
// if See ( UnitsInList , 4 ) then
4736: LD_LOC 2
4740: PPUSH
4741: LD_INT 4
4743: PPUSH
4744: CALL_OW 292
4748: IFFALSE 4768
// begin result = true ;
4750: LD_ADDR_VAR 0 1
4754: PUSH
4755: LD_INT 1
4757: ST_TO_ADDR
// noticemesenpai = UnitsInList ;
4758: LD_ADDR_LOC 4
4762: PUSH
4763: LD_LOC 2
4767: ST_TO_ADDR
// end ;
4768: GO 4733
4770: POP
4771: POP
// end ;
4772: LD_VAR 0 1
4776: RET
// every 0 0$0.76 trigger GetDistXY ( GetX ( Greene ) , GetY ( Greene ) , LegDX , LegDY ) < 2 or GetDistXY ( GetX ( Madison ) , GetY ( Madison ) , LegDX , LegDY ) < 2 do
4777: LD_INT 96
4779: PPUSH
4780: CALL_OW 250
4784: PPUSH
4785: LD_INT 96
4787: PPUSH
4788: CALL_OW 251
4792: PPUSH
4793: LD_EXP 47
4797: PPUSH
4798: LD_EXP 48
4802: PPUSH
4803: CALL_OW 298
4807: PUSH
4808: LD_INT 2
4810: LESS
4811: PUSH
4812: LD_INT 98
4814: PPUSH
4815: CALL_OW 250
4819: PPUSH
4820: LD_INT 98
4822: PPUSH
4823: CALL_OW 251
4827: PPUSH
4828: LD_EXP 47
4832: PPUSH
4833: LD_EXP 48
4837: PPUSH
4838: CALL_OW 298
4842: PUSH
4843: LD_INT 2
4845: LESS
4846: OR
4847: IFFALSE 4948
4849: GO 4851
4851: DISABLE
// begin UniformGet = 1 ;
4852: LD_ADDR_EXP 35
4856: PUSH
4857: LD_INT 1
4859: ST_TO_ADDR
// if GetDistXY ( GetX ( Madison ) , GetY ( Madison ) , LegDX , LegDY ) < 2 then
4860: LD_INT 98
4862: PPUSH
4863: CALL_OW 250
4867: PPUSH
4868: LD_INT 98
4870: PPUSH
4871: CALL_OW 251
4875: PPUSH
4876: LD_EXP 47
4880: PPUSH
4881: LD_EXP 48
4885: PPUSH
4886: CALL_OW 298
4890: PUSH
4891: LD_INT 2
4893: LESS
4894: IFFALSE 4908
// say ( MAdison , Mun1 ) else
4896: LD_INT 98
4898: PPUSH
4899: LD_STRING Mun1
4901: PPUSH
4902: CALL_OW 88
4906: GO 4918
// Say ( Greene , Mun1 ) ;
4908: LD_INT 96
4910: PPUSH
4911: LD_STRING Mun1
4913: PPUSH
4914: CALL_OW 88
// say ( MAdison , Mun2 ) ;
4918: LD_INT 98
4920: PPUSH
4921: LD_STRING Mun2
4923: PPUSH
4924: CALL_OW 88
// Say ( Greene , Mun3 ) ;
4928: LD_INT 96
4930: PPUSH
4931: LD_STRING Mun3
4933: PPUSH
4934: CALL_OW 88
// say ( MAdison , Mun4 ) ;
4938: LD_INT 98
4940: PPUSH
4941: LD_STRING Mun4
4943: PPUSH
4944: CALL_OW 88
// end ;
4948: END
// every 0 0$05 trigger SpottedAmericans = true do
4949: CALL 4692 0 0
4953: PUSH
4954: LD_INT 1
4956: EQUAL
4957: IFFALSE 4986
4959: GO 4961
4961: DISABLE
// begin Dialogueon ;
4962: CALL_OW 6
// CenterNowOnUnits ( Noticemesenpai ) ;
4966: LD_LOC 4
4970: PPUSH
4971: CALL_OW 87
// Dwait ( 0 0$1 ) ;
4975: LD_INT 35
4977: PPUSH
4978: CALL_OW 68
// Dialogueoff ;
4982: CALL_OW 7
// end ; end_of_file
4986: END
// every 0 0$05 trigger timer > 10 do
4987: LD_EXP 1
4991: PUSH
4992: LD_INT 10
4994: GREATER
4995: IFFALSE 5036
4997: GO 4999
4999: DISABLE
// begin AddComResearch ( RuLab , tech_oilpow ) ;
5000: LD_EXP 87
5004: PPUSH
5005: LD_INT 46
5007: PPUSH
5008: CALL_OW 184
// AddComResearch ( RuLab , tech_oilEng ) ;
5012: LD_EXP 87
5016: PPUSH
5017: LD_INT 47
5019: PPUSH
5020: CALL_OW 184
// AddComResearch ( RuLab , tech_tech1 ) ;
5024: LD_EXP 87
5028: PPUSH
5029: LD_INT 48
5031: PPUSH
5032: CALL_OW 184
// end ;
5036: END
// every 0 0$05 trigger timer > 70 do
5037: LD_EXP 1
5041: PUSH
5042: LD_INT 70
5044: GREATER
5045: IFFALSE 5071
5047: GO 5049
5049: DISABLE
// begin ComUpgrade ( RuFac ) ;
5050: LD_EXP 86
5054: PPUSH
5055: CALL_OW 146
// AddComUpgradeLab ( RuLab , b_lab_weapon ) ;
5059: LD_EXP 87
5063: PPUSH
5064: LD_INT 10
5066: PPUSH
5067: CALL_OW 207
// end ;
5071: END
// every 0 0$05 trigger timer > 120 do
5072: LD_EXP 1
5076: PUSH
5077: LD_INT 120
5079: GREATER
5080: IFFALSE 5097
5082: GO 5084
5084: DISABLE
// begin AddComResearch ( RuLab , tech_gun ) ;
5085: LD_EXP 87
5089: PPUSH
5090: LD_INT 39
5092: PPUSH
5093: CALL_OW 184
// end ;
5097: END
// every 0 0$05 trigger timer > 200 do
5098: LD_EXP 1
5102: PUSH
5103: LD_INT 200
5105: GREATER
5106: IFFALSE 5153
5108: GO 5110
5110: DISABLE
// begin AddComBuild ( [ RuEng1 , RuEng2 ] , b_ext_gun , 32 , 5 , 1 ) ;
5111: LD_EXP 12
5115: PUSH
5116: LD_EXP 13
5120: PUSH
5121: EMPTY
5122: LIST
5123: LIST
5124: PPUSH
5125: LD_INT 17
5127: PPUSH
5128: LD_INT 32
5130: PPUSH
5131: LD_INT 5
5133: PPUSH
5134: LD_INT 1
5136: PPUSH
5137: CALL_OW 205
// AddComUpgradeLab ( RuLab , 12 ) ;
5141: LD_EXP 87
5145: PPUSH
5146: LD_INT 12
5148: PPUSH
5149: CALL_OW 207
// end ;
5153: END
// every 0 0$05 trigger timer > 300 do
5154: LD_EXP 1
5158: PUSH
5159: LD_INT 300
5161: GREATER
5162: IFFALSE 5209
5164: GO 5166
5166: DISABLE
// begin AddComResearch ( RuLab , tech_AdvMet ) ;
5167: LD_EXP 87
5171: PPUSH
5172: LD_INT 34
5174: PPUSH
5175: CALL_OW 184
// AddComBuild ( [ RuEng1 , RuEng2 ] , b_ext_computer , 35 , 9 , 0 ) ;
5179: LD_EXP 12
5183: PUSH
5184: LD_EXP 13
5188: PUSH
5189: EMPTY
5190: LIST
5191: LIST
5192: PPUSH
5193: LD_INT 24
5195: PPUSH
5196: LD_INT 35
5198: PPUSH
5199: LD_INT 9
5201: PPUSH
5202: LD_INT 0
5204: PPUSH
5205: CALL_OW 205
// end ;
5209: END
// every 0 0$05 trigger timer > 600 do
5210: LD_EXP 1
5214: PUSH
5215: LD_INT 600
5217: GREATER
5218: IFFALSE 5235
5220: GO 5222
5222: DISABLE
// begin AddComPlaceWeapon ( RuGun2 , ru_gun ) ;
5223: LD_EXP 82
5227: PPUSH
5228: LD_INT 44
5230: PPUSH
5231: CALL_OW 208
// end ;
5235: END
// every 0 0$05 trigger timer > 640 do
5236: LD_EXP 1
5240: PUSH
5241: LD_INT 640
5243: GREATER
5244: IFFALSE 5261
5246: GO 5248
5248: DISABLE
// begin AddComPlaceWeapon ( RuGun3 , ru_gun ) ;
5249: LD_EXP 83
5253: PPUSH
5254: LD_INT 44
5256: PPUSH
5257: CALL_OW 208
// end ;
5261: END
// every 0 0$05 trigger timer > 680 do
5262: LD_EXP 1
5266: PUSH
5267: LD_INT 680
5269: GREATER
5270: IFFALSE 5287
5272: GO 5274
5274: DISABLE
// begin AddComPlaceWeapon ( RuGun1 , ru_gun ) ;
5275: LD_EXP 81
5279: PPUSH
5280: LD_INT 44
5282: PPUSH
5283: CALL_OW 208
// end ;
5287: END
// every 0 0$05 trigger timer > 720 do
5288: LD_EXP 1
5292: PUSH
5293: LD_INT 720
5295: GREATER
5296: IFFALSE 5313
5298: GO 5300
5300: DISABLE
// begin AddComPlaceWeapon ( RuGun2 , ru_heavy_gun ) ;
5301: LD_EXP 82
5305: PPUSH
5306: LD_INT 46
5308: PPUSH
5309: CALL_OW 208
// end ;
5313: END
// every 0 0$05 trigger timer > 800 do
5314: LD_EXP 1
5318: PUSH
5319: LD_INT 800
5321: GREATER
5322: IFFALSE 5339
5324: GO 5326
5326: DISABLE
// begin AddComPlaceWeapon ( RuGun3 , ru_heavy_gun ) ;
5327: LD_EXP 83
5331: PPUSH
5332: LD_INT 46
5334: PPUSH
5335: CALL_OW 208
// end ;
5339: END
// every 0 0$05 trigger timer > 880 do
5340: LD_EXP 1
5344: PUSH
5345: LD_INT 880
5347: GREATER
5348: IFFALSE 5365
5350: GO 5352
5352: DISABLE
// begin AddComPlaceWeapon ( RuGun1 , ru_heavy_gun ) ;
5353: LD_EXP 81
5357: PPUSH
5358: LD_INT 46
5360: PPUSH
5361: CALL_OW 208
// end ;
5365: END
// var list , RuHeal , RuNeedsHeal ; var LegSpot , SpotList ; export Offering ; every 0 0$01 trigger Getlives ( RuDoc ) > 250 do
5366: LD_EXP 15
5370: PPUSH
5371: CALL_OW 256
5375: PUSH
5376: LD_INT 250
5378: GREATER
5379: IFFALSE 5656
5381: GO 5383
5383: DISABLE
// begin enable ;
5384: ENABLE
// RuNeedsHeal = 0 ;
5385: LD_ADDR_LOC 7
5389: PUSH
5390: LD_INT 0
5392: ST_TO_ADDR
// List = [ RuSol1 , RuSol2 , Rusol3 , Rusol4 , RuBoss , Rumech , Rueng2 , Rueng1 ] ;
5393: LD_ADDR_LOC 5
5397: PUSH
5398: LD_EXP 8
5402: PUSH
5403: LD_EXP 9
5407: PUSH
5408: LD_EXP 10
5412: PUSH
5413: LD_EXP 11
5417: PUSH
5418: LD_EXP 7
5422: PUSH
5423: LD_EXP 14
5427: PUSH
5428: LD_EXP 13
5432: PUSH
5433: LD_EXP 12
5437: PUSH
5438: EMPTY
5439: LIST
5440: LIST
5441: LIST
5442: LIST
5443: LIST
5444: LIST
5445: LIST
5446: LIST
5447: ST_TO_ADDR
// if List then
5448: LD_LOC 5
5452: IFFALSE 5600
// for RuHeal in List do
5454: LD_ADDR_LOC 6
5458: PUSH
5459: LD_LOC 5
5463: PUSH
5464: FOR_IN
5465: IFFALSE 5598
// begin if getLives ( RuHeal ) < 650 then
5467: LD_LOC 6
5471: PPUSH
5472: CALL_OW 256
5476: PUSH
5477: LD_INT 650
5479: LESS
5480: IFFALSE 5549
// begin RuNeedsHeal = 1 ;
5482: LD_ADDR_LOC 7
5486: PUSH
5487: LD_INT 1
5489: ST_TO_ADDR
// AddComExitBuilding ( RuDoc ) ;
5490: LD_EXP 15
5494: PPUSH
5495: CALL_OW 182
// if not GetDistUnits ( RuHeal , RuDoc ) < 4 then
5499: LD_LOC 6
5503: PPUSH
5504: LD_EXP 15
5508: PPUSH
5509: CALL_OW 296
5513: PUSH
5514: LD_INT 4
5516: LESS
5517: NOT
5518: IFFALSE 5549
// ComMoveXY ( RuHeal , Getx ( RuDoc ) , GetY ( RuDoc ) ) ;
5520: LD_LOC 6
5524: PPUSH
5525: LD_EXP 15
5529: PPUSH
5530: CALL_OW 250
5534: PPUSH
5535: LD_EXP 15
5539: PPUSH
5540: CALL_OW 251
5544: PPUSH
5545: CALL_OW 111
// end ; if GetLives ( RuHeal ) > 900 and not ( IsBusy ( RuHeal ) or HasTask ( RuHeal ) ) then
5549: LD_LOC 6
5553: PPUSH
5554: CALL_OW 256
5558: PUSH
5559: LD_INT 900
5561: GREATER
5562: PUSH
5563: LD_LOC 6
5567: PPUSH
5568: CALL_OW 315
5572: PUSH
5573: LD_LOC 6
5577: PPUSH
5578: CALL_OW 314
5582: OR
5583: NOT
5584: AND
5585: IFFALSE 5596
// RuGetToPosts ( RuHeal ) ;
5587: LD_LOC 6
5591: PPUSH
5592: CALL 7314 0 1
// end ;
5596: GO 5464
5598: POP
5599: POP
// if RuNeedsHeal = 0 then
5600: LD_LOC 7
5604: PUSH
5605: LD_INT 0
5607: EQUAL
5608: IFFALSE 5656
// begin dwait ( 0 0$10 ) ;
5610: LD_INT 350
5612: PPUSH
5613: CALL_OW 68
// if RuNeedsHeal = 0 and IsInUnit ( RuDoc ) = 0 then
5617: LD_LOC 7
5621: PUSH
5622: LD_INT 0
5624: EQUAL
5625: PUSH
5626: LD_EXP 15
5630: PPUSH
5631: CALL_OW 310
5635: PUSH
5636: LD_INT 0
5638: EQUAL
5639: AND
5640: IFFALSE 5656
// AddComEnterUnit ( RuDoc , RuLab ) ;
5642: LD_EXP 15
5646: PPUSH
5647: LD_EXP 87
5651: PPUSH
5652: CALL_OW 180
// end ; end ;
5656: END
// var RuFix ; every 0 0$01 trigger not ( IsDead ( RuEng1 ) and IsDead ( RuEng2 ) ) do
5657: LD_EXP 12
5661: PPUSH
5662: CALL_OW 301
5666: PUSH
5667: LD_EXP 13
5671: PPUSH
5672: CALL_OW 301
5676: AND
5677: NOT
5678: IFFALSE 5807
5680: GO 5682
5682: DISABLE
// begin enable ;
5683: ENABLE
// List = FilterAllUnits ( [ [ f_side , 3 ] ] ) ;
5684: LD_ADDR_LOC 5
5688: PUSH
5689: LD_INT 22
5691: PUSH
5692: LD_INT 3
5694: PUSH
5695: EMPTY
5696: LIST
5697: LIST
5698: PUSH
5699: EMPTY
5700: LIST
5701: PPUSH
5702: CALL_OW 69
5706: ST_TO_ADDR
// for Rufix in List do
5707: LD_ADDR_LOC 10
5711: PUSH
5712: LD_LOC 5
5716: PUSH
5717: FOR_IN
5718: IFFALSE 5805
// if getLives ( RuFix ) < 900 and GetBType ( RuFix ) > - 1 then
5720: LD_LOC 10
5724: PPUSH
5725: CALL_OW 256
5729: PUSH
5730: LD_INT 900
5732: LESS
5733: PUSH
5734: LD_LOC 10
5738: PPUSH
5739: CALL_OW 266
5743: PUSH
5744: LD_INT 1
5746: NEG
5747: GREATER
5748: AND
5749: IFFALSE 5803
// begin if not HasTask ( RuEng1 ) then
5751: LD_EXP 12
5755: PPUSH
5756: CALL_OW 314
5760: NOT
5761: IFFALSE 5777
// AddComRepairBuilding ( RuEng1 , RuFix ) ;
5763: LD_EXP 12
5767: PPUSH
5768: LD_LOC 10
5772: PPUSH
5773: CALL_OW 190
// if not HasTask ( RuEng2 ) then
5777: LD_EXP 13
5781: PPUSH
5782: CALL_OW 314
5786: NOT
5787: IFFALSE 5803
// AddComRepairBuilding ( RuEng2 , RuFix ) ;
5789: LD_EXP 13
5793: PPUSH
5794: LD_LOC 10
5798: PPUSH
5799: CALL_OW 190
// end ;
5803: GO 5717
5805: POP
5806: POP
// end ;
5807: END
// function RuSeesLegion ( ) ; begin
5808: LD_INT 0
5810: PPUSH
// result = 0 ;
5811: LD_ADDR_VAR 0 1
5815: PUSH
5816: LD_INT 0
5818: ST_TO_ADDR
// SpotList = FilterAllUnits ( [ f_side , 8 ] ) ;
5819: LD_ADDR_LOC 9
5823: PUSH
5824: LD_INT 22
5826: PUSH
5827: LD_INT 8
5829: PUSH
5830: EMPTY
5831: LIST
5832: LIST
5833: PPUSH
5834: CALL_OW 69
5838: ST_TO_ADDR
// for LegSpot in Spotlist do
5839: LD_ADDR_LOC 8
5843: PUSH
5844: LD_LOC 9
5848: PUSH
5849: FOR_IN
5850: IFFALSE 5897
// if See ( 3 , LegSpot ) and GetLives ( LegSpot ) > 400 then
5852: LD_INT 3
5854: PPUSH
5855: LD_LOC 8
5859: PPUSH
5860: CALL_OW 292
5864: PUSH
5865: LD_LOC 8
5869: PPUSH
5870: CALL_OW 256
5874: PUSH
5875: LD_INT 400
5877: GREATER
5878: AND
5879: IFFALSE 5895
// result = result + 1 ;
5881: LD_ADDR_VAR 0 1
5885: PUSH
5886: LD_VAR 0 1
5890: PUSH
5891: LD_INT 1
5893: PLUS
5894: ST_TO_ADDR
5895: GO 5849
5897: POP
5898: POP
// end ;
5899: LD_VAR 0 1
5903: RET
// every 0 0$01 + 0 0$0.3 trigger GetLives ( RuMech ) > 649 and not isDead ( RuHeavy ) and Offering = 0 and RuTaunt = 0 and getside ( RuHeavy ) = 3 do
5904: LD_EXP 14
5908: PPUSH
5909: CALL_OW 256
5913: PUSH
5914: LD_INT 649
5916: GREATER
5917: PUSH
5918: LD_INT 169
5920: PPUSH
5921: CALL_OW 301
5925: NOT
5926: AND
5927: PUSH
5928: LD_EXP 36
5932: PUSH
5933: LD_INT 0
5935: EQUAL
5936: AND
5937: PUSH
5938: LD_EXP 6
5942: PUSH
5943: LD_INT 0
5945: EQUAL
5946: AND
5947: PUSH
5948: LD_INT 169
5950: PPUSH
5951: CALL_OW 255
5955: PUSH
5956: LD_INT 3
5958: EQUAL
5959: AND
5960: IFFALSE 6292
5962: GO 5964
5964: DISABLE
// begin enable ;
5965: ENABLE
// if ( not RuSeesLegion ) and ( not isOK ( RuHEavy ) ) then
5966: CALL 5808 0 0
5970: NOT
5971: PUSH
5972: LD_INT 169
5974: PPUSH
5975: CALL_OW 302
5979: NOT
5980: AND
5981: IFFALSE 6006
// begin ComExitBuilding ( RuMech ) ;
5983: LD_EXP 14
5987: PPUSH
5988: CALL_OW 122
// AddComRepairVehicle ( RuMech , RuHeavy ) ;
5992: LD_EXP 14
5996: PPUSH
5997: LD_INT 169
5999: PPUSH
6000: CALL_OW 189
// end else
6004: GO 6292
// if ( not IsOK ( RuHeavy ) ) and RuSeesLegion then
6006: LD_INT 169
6008: PPUSH
6009: CALL_OW 302
6013: NOT
6014: PUSH
6015: CALL 5808 0 0
6019: AND
6020: IFFALSE 6038
// begin ComEnterUnit ( RuMEch , RuFac ) ;
6022: LD_EXP 14
6026: PPUSH
6027: LD_EXP 86
6031: PPUSH
6032: CALL_OW 120
// end else
6036: GO 6292
// if RuSeesLegion and isOK ( RuHEavy ) then
6038: CALL 5808 0 0
6042: PUSH
6043: LD_INT 169
6045: PPUSH
6046: CALL_OW 302
6050: AND
6051: IFFALSE 6123
// begin if IsInUnit ( RuMech ) = RuFac then
6053: LD_EXP 14
6057: PPUSH
6058: CALL_OW 310
6062: PUSH
6063: LD_EXP 86
6067: EQUAL
6068: IFFALSE 6079
// ComExitBuilding ( RuMech ) ;
6070: LD_EXP 14
6074: PPUSH
6075: CALL_OW 122
// AddComEnterUnit ( RuMEch , RuHEavy ) ;
6079: LD_EXP 14
6083: PPUSH
6084: LD_INT 169
6086: PPUSH
6087: CALL_OW 180
// AddComAgressiveMove ( RuMech , 41 , 20 ) ;
6091: LD_EXP 14
6095: PPUSH
6096: LD_INT 41
6098: PPUSH
6099: LD_INT 20
6101: PPUSH
6102: CALL_OW 174
// AddComAgressiveMove ( RuMech , 38 , 9 ) ;
6106: LD_EXP 14
6110: PPUSH
6111: LD_INT 38
6113: PPUSH
6114: LD_INT 9
6116: PPUSH
6117: CALL_OW 174
// end else
6121: GO 6292
// if GetLives ( RuHEavy ) < 1000 then
6123: LD_INT 169
6125: PPUSH
6126: CALL_OW 256
6130: PUSH
6131: LD_INT 1000
6133: LESS
6134: IFFALSE 6233
// begin if IsInUnit ( RuMech ) = RuFac then
6136: LD_EXP 14
6140: PPUSH
6141: CALL_OW 310
6145: PUSH
6146: LD_EXP 86
6150: EQUAL
6151: IFFALSE 6162
// AddComExitBuilding ( RuMech ) ;
6153: LD_EXP 14
6157: PPUSH
6158: CALL_OW 182
// AddComMoveXY ( IsDrivenBy ( RuHeavy ) , 45 , 2 ) ;
6162: LD_INT 169
6164: PPUSH
6165: CALL_OW 311
6169: PPUSH
6170: LD_INT 45
6172: PPUSH
6173: LD_INT 2
6175: PPUSH
6176: CALL_OW 171
// AddComExitVehicle ( IsDrivenBy ( RuHeavy ) ) ;
6180: LD_INT 169
6182: PPUSH
6183: CALL_OW 311
6187: PPUSH
6188: CALL_OW 181
// AddComRepairVehicle ( RuMech , RuHeavy ) ;
6192: LD_EXP 14
6196: PPUSH
6197: LD_INT 169
6199: PPUSH
6200: CALL_OW 189
// AddComEnterUnit ( RuMEch , RuHEavy ) ;
6204: LD_EXP 14
6208: PPUSH
6209: LD_INT 169
6211: PPUSH
6212: CALL_OW 180
// AddComMoveXY ( RuMech , 44 , 2 ) ;
6216: LD_EXP 14
6220: PPUSH
6221: LD_INT 44
6223: PPUSH
6224: LD_INT 2
6226: PPUSH
6227: CALL_OW 171
// end else
6231: GO 6292
// if IsInUnit ( RuMech ) = RuHeavy then
6233: LD_EXP 14
6237: PPUSH
6238: CALL_OW 310
6242: PUSH
6243: LD_INT 169
6245: EQUAL
6246: IFFALSE 6292
// begin AddComMoveXY ( IsDrivenBy ( RuHeavy ) , 44 , 2 ) ;
6248: LD_INT 169
6250: PPUSH
6251: CALL_OW 311
6255: PPUSH
6256: LD_INT 44
6258: PPUSH
6259: LD_INT 2
6261: PPUSH
6262: CALL_OW 171
// AddComExitVehicle ( IsDrivenBy ( RuHeavy ) ) ;
6266: LD_INT 169
6268: PPUSH
6269: CALL_OW 311
6273: PPUSH
6274: CALL_OW 181
// AddComEnterUnit ( RuMEch , RuFac ) ;
6278: LD_EXP 14
6282: PPUSH
6283: LD_EXP 86
6287: PPUSH
6288: CALL_OW 180
// end ; end ;
6292: END
// var AttackTimer ; every 0 0$10 trigger RuSeesLegion = 0 and FirstContact = 1 and RuTaunt = 0 do
6293: CALL 5808 0 0
6297: PUSH
6298: LD_INT 0
6300: EQUAL
6301: PUSH
6302: LD_EXP 4
6306: PUSH
6307: LD_INT 1
6309: EQUAL
6310: AND
6311: PUSH
6312: LD_EXP 6
6316: PUSH
6317: LD_INT 0
6319: EQUAL
6320: AND
6321: IFFALSE 6478
6323: GO 6325
6325: DISABLE
// begin if RuSeesLegion = 0 then
6326: CALL 5808 0 0
6330: PUSH
6331: LD_INT 0
6333: EQUAL
6334: IFFALSE 6478
// begin RuTaunt = 1 ;
6336: LD_ADDR_EXP 6
6340: PUSH
6341: LD_INT 1
6343: ST_TO_ADDR
// ComExitBuilding ( [ RuBoss , Rumech ] ) ;
6344: LD_EXP 7
6348: PUSH
6349: LD_EXP 14
6353: PUSH
6354: EMPTY
6355: LIST
6356: LIST
6357: PPUSH
6358: CALL_OW 122
// AddComUpgrade ( RuBar ) ;
6362: LD_EXP 84
6366: PPUSH
6367: CALL_OW 206
// if not isDead ( RuGatling ) then
6371: LD_INT 32
6373: PPUSH
6374: CALL_OW 301
6378: NOT
6379: IFFALSE 6393
// AddComEnterUnit ( RuBoss , RuGatling ) ;
6381: LD_EXP 7
6385: PPUSH
6386: LD_INT 32
6388: PPUSH
6389: CALL_OW 180
// if not isDead ( RuHeavy ) then
6393: LD_INT 169
6395: PPUSH
6396: CALL_OW 301
6400: NOT
6401: IFFALSE 6415
// AddComEnterUnit ( RuMech , RuHeavy ) ;
6403: LD_EXP 14
6407: PPUSH
6408: LD_INT 169
6410: PPUSH
6411: CALL_OW 180
// AddComMoveXY ( RuMech , 80 , 48 ) ;
6415: LD_EXP 14
6419: PPUSH
6420: LD_INT 80
6422: PPUSH
6423: LD_INT 48
6425: PPUSH
6426: CALL_OW 171
// AddComMoveXY ( RuBoss , 70 , 48 ) ;
6430: LD_EXP 7
6434: PPUSH
6435: LD_INT 70
6437: PPUSH
6438: LD_INT 48
6440: PPUSH
6441: CALL_OW 171
// if isOK ( RuGatling ) then
6445: LD_INT 32
6447: PPUSH
6448: CALL_OW 302
6452: IFFALSE 6463
// AddComExitVehicle ( RuBoss ) ;
6454: LD_EXP 7
6458: PPUSH
6459: CALL_OW 181
// AddComMoveXY ( RuBoss , 65 , 50 ) ;
6463: LD_EXP 7
6467: PPUSH
6468: LD_INT 65
6470: PPUSH
6471: LD_INT 50
6473: PPUSH
6474: CALL_OW 171
// end ; end ;
6478: END
// every 0 0$1 trigger ( IsInArea ( RuBoss , RuCallout2 ) and ( not IsInUnit ( RuBoss ) ) ) or see ( 4 , Ruboss ) do
6479: LD_EXP 7
6483: PPUSH
6484: LD_INT 12
6486: PPUSH
6487: CALL_OW 308
6491: PUSH
6492: LD_EXP 7
6496: PPUSH
6497: CALL_OW 310
6501: NOT
6502: AND
6503: PUSH
6504: LD_INT 4
6506: PPUSH
6507: LD_EXP 7
6511: PPUSH
6512: CALL_OW 292
6516: OR
6517: IFFALSE 6871
6519: GO 6521
6521: DISABLE
// begin CenterOnUnits ( RuBoss ) ;
6522: LD_EXP 7
6526: PPUSH
6527: CALL_OW 85
// ComStop ( RuBoss ) ;
6531: LD_EXP 7
6535: PPUSH
6536: CALL_OW 141
// wait ( 0 0$0.5 ) ;
6540: LD_INT 18
6542: PPUSH
6543: CALL_OW 67
// PlaceSeeing ( getX ( Ruboss ) , GetY ( Ruboss ) , 4 , 5 ) ;
6547: LD_EXP 7
6551: PPUSH
6552: CALL_OW 250
6556: PPUSH
6557: LD_EXP 7
6561: PPUSH
6562: CALL_OW 251
6566: PPUSH
6567: LD_INT 4
6569: PPUSH
6570: LD_INT 5
6572: PPUSH
6573: CALL_OW 330
// DialogueOn ;
6577: CALL_OW 6
// Say ( RuBoss , RusTaunt1 ) ;
6581: LD_EXP 7
6585: PPUSH
6586: LD_STRING RusTaunt1
6588: PPUSH
6589: CALL_OW 88
// Say ( Greene , RusTaunt2 ) ;
6593: LD_INT 96
6595: PPUSH
6596: LD_STRING RusTaunt2
6598: PPUSH
6599: CALL_OW 88
// Say ( MAdison , RusTaunt3 ) ;
6603: LD_INT 98
6605: PPUSH
6606: LD_STRING RusTaunt3
6608: PPUSH
6609: CALL_OW 88
// Say ( Greene , RusTaunt4 ) ;
6613: LD_INT 96
6615: PPUSH
6616: LD_STRING RusTaunt4
6618: PPUSH
6619: CALL_OW 88
// Say ( Madison , RusTaunt5 ) ;
6623: LD_INT 98
6625: PPUSH
6626: LD_STRING RusTaunt5
6628: PPUSH
6629: CALL_OW 88
// Say ( Greene , RusTaunt6 ) ;
6633: LD_INT 96
6635: PPUSH
6636: LD_STRING RusTaunt6
6638: PPUSH
6639: CALL_OW 88
// Say ( RuBoss , RusTaunt7 ) ;
6643: LD_EXP 7
6647: PPUSH
6648: LD_STRING RusTaunt7
6650: PPUSH
6651: CALL_OW 88
// AttackTimer = 60 * ( 30 - ( 5 * difficulty ) ) + Timer ;
6655: LD_ADDR_LOC 11
6659: PUSH
6660: LD_INT 60
6662: PUSH
6663: LD_INT 30
6665: PUSH
6666: LD_INT 5
6668: PUSH
6669: LD_OWVAR 67
6673: MUL
6674: MINUS
6675: MUL
6676: PUSH
6677: LD_EXP 1
6681: PLUS
6682: ST_TO_ADDR
// if not isDead ( RuGatling ) then
6683: LD_INT 32
6685: PPUSH
6686: CALL_OW 301
6690: NOT
6691: IFFALSE 6720
// begin AddComAgressiveMove ( RuBoss , 68 , 49 ) ;
6693: LD_EXP 7
6697: PPUSH
6698: LD_INT 68
6700: PPUSH
6701: LD_INT 49
6703: PPUSH
6704: CALL_OW 174
// AddComEnterUnit ( RuBoss , RuGatling ) ;
6708: LD_EXP 7
6712: PPUSH
6713: LD_INT 32
6715: PPUSH
6716: CALL_OW 180
// end ; DialogueOff ;
6720: CALL_OW 7
// RuTaunt = 0 ;
6724: LD_ADDR_EXP 6
6728: PUSH
6729: LD_INT 0
6731: ST_TO_ADDR
// RemoveSeeing ( 65 , 50 , 4 ) ;
6732: LD_INT 65
6734: PPUSH
6735: LD_INT 50
6737: PPUSH
6738: LD_INT 4
6740: PPUSH
6741: CALL_OW 331
// AddComMoveXY ( RuBoss , 53 , 10 ) ;
6745: LD_EXP 7
6749: PPUSH
6750: LD_INT 53
6752: PPUSH
6753: LD_INT 10
6755: PPUSH
6756: CALL_OW 171
// AddComMoveXY ( RuBoss , 53 , 9 ) ;
6760: LD_EXP 7
6764: PPUSH
6765: LD_INT 53
6767: PPUSH
6768: LD_INT 9
6770: PPUSH
6771: CALL_OW 171
// AddComExitVehicle ( RuBoss ) ;
6775: LD_EXP 7
6779: PPUSH
6780: CALL_OW 181
// AddComEnterUnit ( RuBoss , RuBar ) ;
6784: LD_EXP 7
6788: PPUSH
6789: LD_EXP 84
6793: PPUSH
6794: CALL_OW 180
// Wait ( 0 0$5 ) ;
6798: LD_INT 175
6800: PPUSH
6801: CALL_OW 67
// AddComMoveXY ( IsDrivenBy ( RuHEavy ) , 45 , 3 ) ;
6805: LD_INT 169
6807: PPUSH
6808: CALL_OW 311
6812: PPUSH
6813: LD_INT 45
6815: PPUSH
6816: LD_INT 3
6818: PPUSH
6819: CALL_OW 171
// AddComMoveXY ( IsDrivenBy ( RuHEavy ) , 44 , 2 ) ;
6823: LD_INT 169
6825: PPUSH
6826: CALL_OW 311
6830: PPUSH
6831: LD_INT 44
6833: PPUSH
6834: LD_INT 2
6836: PPUSH
6837: CALL_OW 171
// AddComExitVehicle ( RuMech ) ;
6841: LD_EXP 14
6845: PPUSH
6846: CALL_OW 181
// AddComEnterUnit ( RuBoss , RuBar ) ;
6850: LD_EXP 7
6854: PPUSH
6855: LD_EXP 84
6859: PPUSH
6860: CALL_OW 180
// wait ( 0 0$10 ) ;
6864: LD_INT 350
6866: PPUSH
6867: CALL_OW 67
// end ;
6871: END
// every 0 0$01 + 0 0$0.5 trigger GetLives ( RuMech ) > 649 and IsOK ( RuHeavy ) and RuTaunt = 1 and getside ( RuHeavy ) = 3 do
6872: LD_EXP 14
6876: PPUSH
6877: CALL_OW 256
6881: PUSH
6882: LD_INT 649
6884: GREATER
6885: PUSH
6886: LD_INT 169
6888: PPUSH
6889: CALL_OW 302
6893: AND
6894: PUSH
6895: LD_EXP 6
6899: PUSH
6900: LD_INT 1
6902: EQUAL
6903: AND
6904: PUSH
6905: LD_INT 169
6907: PPUSH
6908: CALL_OW 255
6912: PUSH
6913: LD_INT 3
6915: EQUAL
6916: AND
6917: IFFALSE 6971
6919: GO 6921
6921: DISABLE
// begin enable ;
6922: ENABLE
// if not IsDrivenBy ( RuHEavy ) = RuMech then
6923: LD_INT 169
6925: PPUSH
6926: CALL_OW 311
6930: PUSH
6931: LD_EXP 14
6935: EQUAL
6936: NOT
6937: IFFALSE 6953
// ComEnterUnit ( RuMech , RuHeavy ) else
6939: LD_EXP 14
6943: PPUSH
6944: LD_INT 169
6946: PPUSH
6947: CALL_OW 120
6951: GO 6971
// ComAgressiveMove ( IsDrivenBy ( RuHEavy ) , 77 , 45 ) ;
6953: LD_INT 169
6955: PPUSH
6956: CALL_OW 311
6960: PPUSH
6961: LD_INT 77
6963: PPUSH
6964: LD_INT 45
6966: PPUSH
6967: CALL_OW 114
// end ;
6971: END
// var RuUn , RuList ; on UnitGoesFromRed ( un ) do begin if ( GetSide ( un ) = 3 and GetBtype ( un ) = b_bunker ) or un = RuBar then
6972: LD_VAR 0 1
6976: PPUSH
6977: CALL_OW 255
6981: PUSH
6982: LD_INT 3
6984: EQUAL
6985: PUSH
6986: LD_VAR 0 1
6990: PPUSH
6991: CALL_OW 266
6995: PUSH
6996: LD_INT 32
6998: EQUAL
6999: AND
7000: PUSH
7001: LD_VAR 0 1
7005: PUSH
7006: LD_EXP 84
7010: EQUAL
7011: OR
7012: IFFALSE 7311
// begin RuList = FilterAllUnits ( [ [ f_side , 3 ] , [ f_or , [ f_class , 1 ] , [ f_class , 9 ] ] ] ) ;
7014: LD_ADDR_LOC 13
7018: PUSH
7019: LD_INT 22
7021: PUSH
7022: LD_INT 3
7024: PUSH
7025: EMPTY
7026: LIST
7027: LIST
7028: PUSH
7029: LD_INT 2
7031: PUSH
7032: LD_INT 25
7034: PUSH
7035: LD_INT 1
7037: PUSH
7038: EMPTY
7039: LIST
7040: LIST
7041: PUSH
7042: LD_INT 25
7044: PUSH
7045: LD_INT 9
7047: PUSH
7048: EMPTY
7049: LIST
7050: LIST
7051: PUSH
7052: EMPTY
7053: LIST
7054: LIST
7055: LIST
7056: PUSH
7057: EMPTY
7058: LIST
7059: LIST
7060: PPUSH
7061: CALL_OW 69
7065: ST_TO_ADDR
// for RuUn in RuList do
7066: LD_ADDR_LOC 12
7070: PUSH
7071: LD_LOC 13
7075: PUSH
7076: FOR_IN
7077: IFFALSE 7309
// begin if GetLives ( RuUn ) > 900 and not ( IsBusy ( Ruun ) or HasTask ( Ruun ) ) then
7079: LD_LOC 12
7083: PPUSH
7084: CALL_OW 256
7088: PUSH
7089: LD_INT 900
7091: GREATER
7092: PUSH
7093: LD_LOC 12
7097: PPUSH
7098: CALL_OW 315
7102: PUSH
7103: LD_LOC 12
7107: PPUSH
7108: CALL_OW 314
7112: OR
7113: NOT
7114: AND
7115: IFFALSE 7307
// begin if RuUn = RuSol1 and un = Rugun1 then
7117: LD_LOC 12
7121: PUSH
7122: LD_EXP 8
7126: EQUAL
7127: PUSH
7128: LD_VAR 0 1
7132: PUSH
7133: LD_EXP 81
7137: EQUAL
7138: AND
7139: IFFALSE 7155
// AddComEnterUnit ( RuSol1 , Rugun1 ) ;
7141: LD_EXP 8
7145: PPUSH
7146: LD_EXP 81
7150: PPUSH
7151: CALL_OW 180
// if RuUn = RuSol2 and un = Rugun2 then
7155: LD_LOC 12
7159: PUSH
7160: LD_EXP 9
7164: EQUAL
7165: PUSH
7166: LD_VAR 0 1
7170: PUSH
7171: LD_EXP 82
7175: EQUAL
7176: AND
7177: IFFALSE 7193
// AddComEnterUnit ( RuSol2 , Rugun2 ) ;
7179: LD_EXP 9
7183: PPUSH
7184: LD_EXP 82
7188: PPUSH
7189: CALL_OW 180
// if RuUn = RuSol3 and un = Rugun3 then
7193: LD_LOC 12
7197: PUSH
7198: LD_EXP 10
7202: EQUAL
7203: PUSH
7204: LD_VAR 0 1
7208: PUSH
7209: LD_EXP 83
7213: EQUAL
7214: AND
7215: IFFALSE 7231
// AddComEnterUnit ( RuSol3 , Rugun3 ) ;
7217: LD_EXP 10
7221: PPUSH
7222: LD_EXP 83
7226: PPUSH
7227: CALL_OW 180
// if RuUn = RuSol4 and un = RuBar then
7231: LD_LOC 12
7235: PUSH
7236: LD_EXP 11
7240: EQUAL
7241: PUSH
7242: LD_VAR 0 1
7246: PUSH
7247: LD_EXP 84
7251: EQUAL
7252: AND
7253: IFFALSE 7269
// AddComEnterUnit ( RuSol4 , RuBar ) ;
7255: LD_EXP 11
7259: PPUSH
7260: LD_EXP 84
7264: PPUSH
7265: CALL_OW 180
// if RuUn = RuBoss and un = RuBar then
7269: LD_LOC 12
7273: PUSH
7274: LD_EXP 7
7278: EQUAL
7279: PUSH
7280: LD_VAR 0 1
7284: PUSH
7285: LD_EXP 84
7289: EQUAL
7290: AND
7291: IFFALSE 7307
// AddComEnterUnit ( RuBoss , RuBar ) ;
7293: LD_EXP 7
7297: PPUSH
7298: LD_EXP 84
7302: PPUSH
7303: CALL_OW 180
// end ; end ;
7307: GO 7076
7309: POP
7310: POP
// end ; end ;
7311: PPOPN 1
7313: END
// function RuGetToPosts ( RuUn ) ; begin
7314: LD_INT 0
7316: PPUSH
// if RuUn = RuSol1 and IsInUnit ( Rusol1 ) = 0 then
7317: LD_VAR 0 1
7321: PUSH
7322: LD_EXP 8
7326: EQUAL
7327: PUSH
7328: LD_EXP 8
7332: PPUSH
7333: CALL_OW 310
7337: PUSH
7338: LD_INT 0
7340: EQUAL
7341: AND
7342: IFFALSE 7358
// AddComEnterUnit ( RuSol1 , Rugun1 ) ;
7344: LD_EXP 8
7348: PPUSH
7349: LD_EXP 81
7353: PPUSH
7354: CALL_OW 180
// if RuUn = RuSol2 and IsInUnit ( Rusol2 ) = 0 then
7358: LD_VAR 0 1
7362: PUSH
7363: LD_EXP 9
7367: EQUAL
7368: PUSH
7369: LD_EXP 9
7373: PPUSH
7374: CALL_OW 310
7378: PUSH
7379: LD_INT 0
7381: EQUAL
7382: AND
7383: IFFALSE 7399
// AddComEnterUnit ( RuSol2 , Rugun2 ) ;
7385: LD_EXP 9
7389: PPUSH
7390: LD_EXP 82
7394: PPUSH
7395: CALL_OW 180
// if RuUn = RuSol3 and IsInUnit ( Rusol3 ) = 0 then
7399: LD_VAR 0 1
7403: PUSH
7404: LD_EXP 10
7408: EQUAL
7409: PUSH
7410: LD_EXP 10
7414: PPUSH
7415: CALL_OW 310
7419: PUSH
7420: LD_INT 0
7422: EQUAL
7423: AND
7424: IFFALSE 7440
// AddComEnterUnit ( RuSol3 , Rugun3 ) ;
7426: LD_EXP 10
7430: PPUSH
7431: LD_EXP 83
7435: PPUSH
7436: CALL_OW 180
// if RuUn = RuSol4 and IsInUnit ( Rusol4 ) = 0 then
7440: LD_VAR 0 1
7444: PUSH
7445: LD_EXP 11
7449: EQUAL
7450: PUSH
7451: LD_EXP 11
7455: PPUSH
7456: CALL_OW 310
7460: PUSH
7461: LD_INT 0
7463: EQUAL
7464: AND
7465: IFFALSE 7481
// AddComEnterUnit ( RuSol4 , RuBar ) ;
7467: LD_EXP 11
7471: PPUSH
7472: LD_EXP 84
7476: PPUSH
7477: CALL_OW 180
// if RuUn = RuBoss and IsInUnit ( RuBoss ) = 0 and RuTaunt = 0 then
7481: LD_VAR 0 1
7485: PUSH
7486: LD_EXP 7
7490: EQUAL
7491: PUSH
7492: LD_EXP 7
7496: PPUSH
7497: CALL_OW 310
7501: PUSH
7502: LD_INT 0
7504: EQUAL
7505: AND
7506: PUSH
7507: LD_EXP 6
7511: PUSH
7512: LD_INT 0
7514: EQUAL
7515: AND
7516: IFFALSE 7532
// AddComEnterUnit ( RuBoss , RuBar ) ;
7518: LD_EXP 7
7522: PPUSH
7523: LD_EXP 84
7527: PPUSH
7528: CALL_OW 180
// end ; end_of_file
7532: LD_VAR 0 2
7536: RET
// export LegDriver , LegLaser , LegA1 , LegA2 , LegA3 , LegA4 , LegA5 , LegA6 , LegA7 ; var LegAttacker , LAttackWave ; every 3 3$00 trigger LegionEvacOrder = 0 and not isDead ( RuBoss ) do
7537: LD_EXP 2
7541: PUSH
7542: LD_INT 0
7544: EQUAL
7545: PUSH
7546: LD_EXP 7
7550: PPUSH
7551: CALL_OW 301
7555: NOT
7556: AND
7557: IFFALSE 8566
7559: GO 7561
7561: DISABLE
// begin enable ;
7562: ENABLE
// uc_side = 8 ;
7563: LD_ADDR_OWVAR 20
7567: PUSH
7568: LD_INT 8
7570: ST_TO_ADDR
// uc_nation = 2 ;
7571: LD_ADDR_OWVAR 21
7575: PUSH
7576: LD_INT 2
7578: ST_TO_ADDR
// uc_direction = 5 ;
7579: LD_ADDR_OWVAR 24
7583: PUSH
7584: LD_INT 5
7586: ST_TO_ADDR
// vc_control = control_remote ;
7587: LD_ADDR_OWVAR 38
7591: PUSH
7592: LD_INT 2
7594: ST_TO_ADDR
// vc_chassis = 14 ;
7595: LD_ADDR_OWVAR 37
7599: PUSH
7600: LD_INT 14
7602: ST_TO_ADDR
// vc_engine = engine_combustion ;
7603: LD_ADDR_OWVAR 39
7607: PUSH
7608: LD_INT 1
7610: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_gun , ar_flame_thrower ] [ rand ( 1 , 3 ) ] ;
7611: LD_ADDR_OWVAR 40
7615: PUSH
7616: LD_INT 25
7618: PUSH
7619: LD_INT 27
7621: PUSH
7622: LD_INT 26
7624: PUSH
7625: EMPTY
7626: LIST
7627: LIST
7628: LIST
7629: PUSH
7630: LD_INT 1
7632: PPUSH
7633: LD_INT 3
7635: PPUSH
7636: CALL_OW 12
7640: ARRAY
7641: ST_TO_ADDR
// LegA1 = CreateVehicle ( ) ;
7642: LD_ADDR_EXP 39
7646: PUSH
7647: CALL_OW 45
7651: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_gun , ar_flame_thrower ] [ rand ( 1 , 3 ) ] ;
7652: LD_ADDR_OWVAR 40
7656: PUSH
7657: LD_INT 25
7659: PUSH
7660: LD_INT 27
7662: PUSH
7663: LD_INT 26
7665: PUSH
7666: EMPTY
7667: LIST
7668: LIST
7669: LIST
7670: PUSH
7671: LD_INT 1
7673: PPUSH
7674: LD_INT 3
7676: PPUSH
7677: CALL_OW 12
7681: ARRAY
7682: ST_TO_ADDR
// LegA2 = CreateVehicle ( ) ;
7683: LD_ADDR_EXP 40
7687: PUSH
7688: CALL_OW 45
7692: ST_TO_ADDR
// vc_weapon = [ ar_gatling_gun , ar_gun , ar_flame_thrower ] [ rand ( 1 , 3 ) ] ;
7693: LD_ADDR_OWVAR 40
7697: PUSH
7698: LD_INT 25
7700: PUSH
7701: LD_INT 27
7703: PUSH
7704: LD_INT 26
7706: PUSH
7707: EMPTY
7708: LIST
7709: LIST
7710: LIST
7711: PUSH
7712: LD_INT 1
7714: PPUSH
7715: LD_INT 3
7717: PPUSH
7718: CALL_OW 12
7722: ARRAY
7723: ST_TO_ADDR
// LegA3 = CreateVehicle ( ) ;
7724: LD_ADDR_EXP 41
7728: PUSH
7729: CALL_OW 45
7733: ST_TO_ADDR
// vc_weapon = [ 24 , 23 , 23 , 27 ] [ rand ( 1 , 1 + difficulty ) ] ;
7734: LD_ADDR_OWVAR 40
7738: PUSH
7739: LD_INT 24
7741: PUSH
7742: LD_INT 23
7744: PUSH
7745: LD_INT 23
7747: PUSH
7748: LD_INT 27
7750: PUSH
7751: EMPTY
7752: LIST
7753: LIST
7754: LIST
7755: LIST
7756: PUSH
7757: LD_INT 1
7759: PPUSH
7760: LD_INT 1
7762: PUSH
7763: LD_OWVAR 67
7767: PLUS
7768: PPUSH
7769: CALL_OW 12
7773: ARRAY
7774: ST_TO_ADDR
// LegA4 = CreateVehicle ( ) ;
7775: LD_ADDR_EXP 42
7779: PUSH
7780: CALL_OW 45
7784: ST_TO_ADDR
// vc_weapon = [ 24 , 23 , 23 , 27 ] [ rand ( 1 , 1 + difficulty ) ] ;
7785: LD_ADDR_OWVAR 40
7789: PUSH
7790: LD_INT 24
7792: PUSH
7793: LD_INT 23
7795: PUSH
7796: LD_INT 23
7798: PUSH
7799: LD_INT 27
7801: PUSH
7802: EMPTY
7803: LIST
7804: LIST
7805: LIST
7806: LIST
7807: PUSH
7808: LD_INT 1
7810: PPUSH
7811: LD_INT 1
7813: PUSH
7814: LD_OWVAR 67
7818: PLUS
7819: PPUSH
7820: CALL_OW 12
7824: ARRAY
7825: ST_TO_ADDR
// LegA5 = CreateVehicle ( ) ;
7826: LD_ADDR_EXP 43
7830: PUSH
7831: CALL_OW 45
7835: ST_TO_ADDR
// vc_weapon = [ 24 , 24 , 23 , 23 , ar_radar ] [ rand ( 1 , 5 ) ] ;
7836: LD_ADDR_OWVAR 40
7840: PUSH
7841: LD_INT 24
7843: PUSH
7844: LD_INT 24
7846: PUSH
7847: LD_INT 23
7849: PUSH
7850: LD_INT 23
7852: PUSH
7853: LD_INT 30
7855: PUSH
7856: EMPTY
7857: LIST
7858: LIST
7859: LIST
7860: LIST
7861: LIST
7862: PUSH
7863: LD_INT 1
7865: PPUSH
7866: LD_INT 5
7868: PPUSH
7869: CALL_OW 12
7873: ARRAY
7874: ST_TO_ADDR
// LegA6 = CreateVehicle ( ) ;
7875: LD_ADDR_EXP 44
7879: PUSH
7880: CALL_OW 45
7884: ST_TO_ADDR
// vc_weapon = [ ar_gun , ar_rocket_launcher ] [ rand ( 1 , 2 ) ] ;
7885: LD_ADDR_OWVAR 40
7889: PUSH
7890: LD_INT 27
7892: PUSH
7893: LD_INT 28
7895: PUSH
7896: EMPTY
7897: LIST
7898: LIST
7899: PUSH
7900: LD_INT 1
7902: PPUSH
7903: LD_INT 2
7905: PPUSH
7906: CALL_OW 12
7910: ARRAY
7911: ST_TO_ADDR
// LegA7 = CreateVehicle ( ) ;
7912: LD_ADDR_EXP 45
7916: PUSH
7917: CALL_OW 45
7921: ST_TO_ADDR
// hc_class = class_mechanic ;
7922: LD_ADDR_OWVAR 28
7926: PUSH
7927: LD_INT 3
7929: ST_TO_ADDR
// hc_basic_skills = [ 5 , rand ( 3 , 6 ) , 7 + difficulty , rand ( 1 , 5 ) ] ;
7930: LD_ADDR_OWVAR 30
7934: PUSH
7935: LD_INT 5
7937: PUSH
7938: LD_INT 3
7940: PPUSH
7941: LD_INT 6
7943: PPUSH
7944: CALL_OW 12
7948: PUSH
7949: LD_INT 7
7951: PUSH
7952: LD_OWVAR 67
7956: PLUS
7957: PUSH
7958: LD_INT 1
7960: PPUSH
7961: LD_INT 5
7963: PPUSH
7964: CALL_OW 12
7968: PUSH
7969: EMPTY
7970: LIST
7971: LIST
7972: LIST
7973: LIST
7974: ST_TO_ADDR
// LegDriver = CreateHuman ;
7975: LD_ADDR_EXP 37
7979: PUSH
7980: CALL_OW 44
7984: ST_TO_ADDR
// uc_nation = 1 ;
7985: LD_ADDR_OWVAR 21
7989: PUSH
7990: LD_INT 1
7992: ST_TO_ADDR
// vc_control = 1 ;
7993: LD_ADDR_OWVAR 38
7997: PUSH
7998: LD_INT 1
8000: ST_TO_ADDR
// vc_chassis = [ 3 , 3 , 4 ] [ difficulty ] ;
8001: LD_ADDR_OWVAR 37
8005: PUSH
8006: LD_INT 3
8008: PUSH
8009: LD_INT 3
8011: PUSH
8012: LD_INT 4
8014: PUSH
8015: EMPTY
8016: LIST
8017: LIST
8018: LIST
8019: PUSH
8020: LD_OWVAR 67
8024: ARRAY
8025: ST_TO_ADDR
// vc_weapon = us_laser ;
8026: LD_ADDR_OWVAR 40
8030: PUSH
8031: LD_INT 9
8033: ST_TO_ADDR
// LegLaser = CreateVehicle ;
8034: LD_ADDR_EXP 38
8038: PUSH
8039: CALL_OW 45
8043: ST_TO_ADDR
// PlaceHumanInUnit ( LegDriver , LegLaser ) ;
8044: LD_EXP 37
8048: PPUSH
8049: LD_EXP 38
8053: PPUSH
8054: CALL_OW 52
// DriverBodyHot = 0 ;
8058: LD_ADDR_EXP 46
8062: PUSH
8063: LD_INT 0
8065: ST_TO_ADDR
// PlaceUnitArea ( LegA1 , LegionAttackZone , false ) ;
8066: LD_EXP 39
8070: PPUSH
8071: LD_INT 6
8073: PPUSH
8074: LD_INT 0
8076: PPUSH
8077: CALL_OW 49
// PlaceUnitArea ( LegA2 , LegionAttackZone , false ) ;
8081: LD_EXP 40
8085: PPUSH
8086: LD_INT 6
8088: PPUSH
8089: LD_INT 0
8091: PPUSH
8092: CALL_OW 49
// wait ( 0 0$0.1 ) ;
8096: LD_INT 4
8098: PPUSH
8099: CALL_OW 67
// ComLinkTo ( [ LegA1 , LegA2 ] , LegMech ) ;
8103: LD_EXP 39
8107: PUSH
8108: LD_EXP 40
8112: PUSH
8113: EMPTY
8114: LIST
8115: LIST
8116: PPUSH
8117: LD_EXP 20
8121: PPUSH
8122: CALL_OW 135
// wait ( 0 0$0.3 ) ;
8126: LD_INT 10
8128: PPUSH
8129: CALL_OW 67
// ComMoveXY ( [ LegA1 , LegA2 ] , 180 , 71 ) ;
8133: LD_EXP 39
8137: PUSH
8138: LD_EXP 40
8142: PUSH
8143: EMPTY
8144: LIST
8145: LIST
8146: PPUSH
8147: LD_INT 180
8149: PPUSH
8150: LD_INT 71
8152: PPUSH
8153: CALL_OW 111
// wait ( 0 0$01 ) ;
8157: LD_INT 35
8159: PPUSH
8160: CALL_OW 67
// PlaceUnitArea ( LegA3 , LegionAttackZone , false ) ;
8164: LD_EXP 41
8168: PPUSH
8169: LD_INT 6
8171: PPUSH
8172: LD_INT 0
8174: PPUSH
8175: CALL_OW 49
// PlaceUnitArea ( LegLaser , LegionAttackZone , false ) ;
8179: LD_EXP 38
8183: PPUSH
8184: LD_INT 6
8186: PPUSH
8187: LD_INT 0
8189: PPUSH
8190: CALL_OW 49
// wait ( 0 0$0.1 ) ;
8194: LD_INT 4
8196: PPUSH
8197: CALL_OW 67
// ComLinkTo ( [ LegA3 ] , LegMech ) ;
8201: LD_EXP 41
8205: PUSH
8206: EMPTY
8207: LIST
8208: PPUSH
8209: LD_EXP 20
8213: PPUSH
8214: CALL_OW 135
// wait ( 0 0$0.3 ) ;
8218: LD_INT 10
8220: PPUSH
8221: CALL_OW 67
// ComMoveXY ( [ LegA3 , LegLaser ] , 180 , 71 ) ;
8225: LD_EXP 41
8229: PUSH
8230: LD_EXP 38
8234: PUSH
8235: EMPTY
8236: LIST
8237: LIST
8238: PPUSH
8239: LD_INT 180
8241: PPUSH
8242: LD_INT 71
8244: PPUSH
8245: CALL_OW 111
// wait ( 0 0$01 ) ;
8249: LD_INT 35
8251: PPUSH
8252: CALL_OW 67
// if difficulty > 1 then
8256: LD_OWVAR 67
8260: PUSH
8261: LD_INT 1
8263: GREATER
8264: IFFALSE 8364
// begin PlaceUnitArea ( LegA4 , LegionAttackZone , false ) ;
8266: LD_EXP 42
8270: PPUSH
8271: LD_INT 6
8273: PPUSH
8274: LD_INT 0
8276: PPUSH
8277: CALL_OW 49
// PlaceUnitArea ( LegA5 , LegionAttackZone , false ) ;
8281: LD_EXP 43
8285: PPUSH
8286: LD_INT 6
8288: PPUSH
8289: LD_INT 0
8291: PPUSH
8292: CALL_OW 49
// wait ( 0 0$0.1 ) ;
8296: LD_INT 4
8298: PPUSH
8299: CALL_OW 67
// ComLinkTo ( [ LegA4 , LegA5 ] , LegMech ) ;
8303: LD_EXP 42
8307: PUSH
8308: LD_EXP 43
8312: PUSH
8313: EMPTY
8314: LIST
8315: LIST
8316: PPUSH
8317: LD_EXP 20
8321: PPUSH
8322: CALL_OW 135
// wait ( 0 0$0.3 ) ;
8326: LD_INT 10
8328: PPUSH
8329: CALL_OW 67
// ComMoveXY ( [ LegA4 , LegA5 ] , 180 , 71 ) ;
8333: LD_EXP 42
8337: PUSH
8338: LD_EXP 43
8342: PUSH
8343: EMPTY
8344: LIST
8345: LIST
8346: PPUSH
8347: LD_INT 180
8349: PPUSH
8350: LD_INT 71
8352: PPUSH
8353: CALL_OW 111
// wait ( 0 0$01 ) ;
8357: LD_INT 35
8359: PPUSH
8360: CALL_OW 67
// end ; if difficulty = 3 then
8364: LD_OWVAR 67
8368: PUSH
8369: LD_INT 3
8371: EQUAL
8372: IFFALSE 8472
// begin PlaceUnitArea ( LegA6 , LegionAttackZone , false ) ;
8374: LD_EXP 44
8378: PPUSH
8379: LD_INT 6
8381: PPUSH
8382: LD_INT 0
8384: PPUSH
8385: CALL_OW 49
// PlaceUnitArea ( LegA7 , LegionAttackZone , false ) ;
8389: LD_EXP 45
8393: PPUSH
8394: LD_INT 6
8396: PPUSH
8397: LD_INT 0
8399: PPUSH
8400: CALL_OW 49
// wait ( 0 0$0.1 ) ;
8404: LD_INT 4
8406: PPUSH
8407: CALL_OW 67
// ComLinkTo ( [ LegA6 , LegA7 ] , LegMech ) ;
8411: LD_EXP 44
8415: PUSH
8416: LD_EXP 45
8420: PUSH
8421: EMPTY
8422: LIST
8423: LIST
8424: PPUSH
8425: LD_EXP 20
8429: PPUSH
8430: CALL_OW 135
// wait ( 0 0$0.3 ) ;
8434: LD_INT 10
8436: PPUSH
8437: CALL_OW 67
// ComMoveXY ( [ LegA6 , LegA7 ] , 180 , 71 ) ;
8441: LD_EXP 44
8445: PUSH
8446: LD_EXP 45
8450: PUSH
8451: EMPTY
8452: LIST
8453: LIST
8454: PPUSH
8455: LD_INT 180
8457: PPUSH
8458: LD_INT 71
8460: PPUSH
8461: CALL_OW 111
// wait ( 0 0$01 ) ;
8465: LD_INT 35
8467: PPUSH
8468: CALL_OW 67
// end ; LAttackWave = FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , 2 ] ] ) ^ LegLaser ;
8472: LD_ADDR_LOC 15
8476: PUSH
8477: LD_INT 22
8479: PUSH
8480: LD_INT 8
8482: PUSH
8483: EMPTY
8484: LIST
8485: LIST
8486: PUSH
8487: LD_INT 33
8489: PUSH
8490: LD_INT 2
8492: PUSH
8493: EMPTY
8494: LIST
8495: LIST
8496: PUSH
8497: EMPTY
8498: LIST
8499: LIST
8500: PPUSH
8501: CALL_OW 69
8505: PUSH
8506: LD_EXP 38
8510: ADD
8511: ST_TO_ADDR
// wait ( 0 0$10 ) ;
8512: LD_INT 350
8514: PPUSH
8515: CALL_OW 67
// for LegAttacker in LAttackWave do
8519: LD_ADDR_LOC 14
8523: PUSH
8524: LD_LOC 15
8528: PUSH
8529: FOR_IN
8530: IFFALSE 8564
// begin AddComAgressiveMove ( LegAttacker , 155 , 88 ) ;
8532: LD_LOC 14
8536: PPUSH
8537: LD_INT 155
8539: PPUSH
8540: LD_INT 88
8542: PPUSH
8543: CALL_OW 174
// AddComAgressiveMove ( LegAttacker , 85 , 36 ) ;
8547: LD_LOC 14
8551: PPUSH
8552: LD_INT 85
8554: PPUSH
8555: LD_INT 36
8557: PPUSH
8558: CALL_OW 174
// end ;
8562: GO 8529
8564: POP
8565: POP
// end ; end_of_file
8566: END
// export DriverBodyHot , LegDX , LegDY , RadioGet ; var AttackerList , Attacker ; every 0 0$1 trigger ( GetDistUnitXY ( Madison , LegDX , LegDY ) < 3 or GetDistUnitXY ( Madison , LegDX , LegDY ) < 3 ) and RadioGet = 0 do
8567: LD_INT 98
8569: PPUSH
8570: LD_EXP 47
8574: PPUSH
8575: LD_EXP 48
8579: PPUSH
8580: CALL_OW 297
8584: PUSH
8585: LD_INT 3
8587: LESS
8588: PUSH
8589: LD_INT 98
8591: PPUSH
8592: LD_EXP 47
8596: PPUSH
8597: LD_EXP 48
8601: PPUSH
8602: CALL_OW 297
8606: PUSH
8607: LD_INT 3
8609: LESS
8610: OR
8611: PUSH
8612: LD_EXP 49
8616: PUSH
8617: LD_INT 0
8619: EQUAL
8620: AND
8621: IFFALSE 8742
8623: GO 8625
8625: DISABLE
// begin if GetDistUnitXY ( Madison , LegDX , LegDY ) < GetDistUnitXY ( Greene , LegDX , LegDY ) then
8626: LD_INT 98
8628: PPUSH
8629: LD_EXP 47
8633: PPUSH
8634: LD_EXP 48
8638: PPUSH
8639: CALL_OW 297
8643: PUSH
8644: LD_INT 96
8646: PPUSH
8647: LD_EXP 47
8651: PPUSH
8652: LD_EXP 48
8656: PPUSH
8657: CALL_OW 297
8661: LESS
8662: IFFALSE 8704
// begin RadioGet = 1 ;
8664: LD_ADDR_EXP 49
8668: PUSH
8669: LD_INT 1
8671: ST_TO_ADDR
// Say ( Madison , Mun1 ) ;
8672: LD_INT 98
8674: PPUSH
8675: LD_STRING Mun1
8677: PPUSH
8678: CALL_OW 88
// Say ( Madison , dotdotdot ) ;
8682: LD_INT 98
8684: PPUSH
8685: LD_STRING dotdotdot
8687: PPUSH
8688: CALL_OW 88
// Say ( Madison , Mun2 ) ;
8692: LD_INT 98
8694: PPUSH
8695: LD_STRING Mun2
8697: PPUSH
8698: CALL_OW 88
// end else
8702: GO 8742
// begin RadioGet = 2 ;
8704: LD_ADDR_EXP 49
8708: PUSH
8709: LD_INT 2
8711: ST_TO_ADDR
// Say ( Greene , Mun1 ) ;
8712: LD_INT 96
8714: PPUSH
8715: LD_STRING Mun1
8717: PPUSH
8718: CALL_OW 88
// Say ( Greene , dotdotdot ) ;
8722: LD_INT 96
8724: PPUSH
8725: LD_STRING dotdotdot
8727: PPUSH
8728: CALL_OW 88
// Say ( Greene , Mun2 ) ;
8732: LD_INT 96
8734: PPUSH
8735: LD_STRING Mun2
8737: PPUSH
8738: CALL_OW 88
// end ; end ;
8742: END
// var list , LegionInList , LegionCarsAlive , LegionCarsReady ; every 0 0$0.5 do
8743: GO 8745
8745: DISABLE
// begin enable ;
8746: ENABLE
// list = FilterAllUnits ( [ f_side , 8 ] ) ;
8747: LD_ADDR_LOC 18
8751: PUSH
8752: LD_INT 22
8754: PUSH
8755: LD_INT 8
8757: PUSH
8758: EMPTY
8759: LIST
8760: LIST
8761: PPUSH
8762: CALL_OW 69
8766: ST_TO_ADDR
// for LegionInList in list do
8767: LD_ADDR_LOC 19
8771: PUSH
8772: LD_LOC 18
8776: PUSH
8777: FOR_IN
8778: IFFALSE 8805
// begin if IsInArea ( LegionInList , LegionEvacZone ) then
8780: LD_LOC 19
8784: PPUSH
8785: LD_INT 5
8787: PPUSH
8788: CALL_OW 308
8792: IFFALSE 8803
// RemoveUnit ( LEgionInList ) ;
8794: LD_LOC 19
8798: PPUSH
8799: CALL_OW 64
// end ;
8803: GO 8777
8805: POP
8806: POP
// end ;
8807: END
// every 0 0$1.2 trigger LegionEvacOrder = 0 do
8808: LD_EXP 2
8812: PUSH
8813: LD_INT 0
8815: EQUAL
8816: IFFALSE 9177
8818: GO 8820
8820: DISABLE
// begin enable ;
8821: ENABLE
// LegionCarsAlive = 0 ;
8822: LD_ADDR_LOC 20
8826: PUSH
8827: LD_INT 0
8829: ST_TO_ADDR
// LegionCarsReady = 0 ;
8830: LD_ADDR_LOC 21
8834: PUSH
8835: LD_INT 0
8837: ST_TO_ADDR
// list = FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , control_remote ] ] ) ;
8838: LD_ADDR_LOC 18
8842: PUSH
8843: LD_INT 22
8845: PUSH
8846: LD_INT 8
8848: PUSH
8849: EMPTY
8850: LIST
8851: LIST
8852: PUSH
8853: LD_INT 33
8855: PUSH
8856: LD_INT 2
8858: PUSH
8859: EMPTY
8860: LIST
8861: LIST
8862: PUSH
8863: EMPTY
8864: LIST
8865: LIST
8866: PPUSH
8867: CALL_OW 69
8871: ST_TO_ADDR
// for LegionInList in list do
8872: LD_ADDR_LOC 19
8876: PUSH
8877: LD_LOC 18
8881: PUSH
8882: FOR_IN
8883: IFFALSE 9033
// begin if IsOK ( LegioninList ) then
8885: LD_LOC 19
8889: PPUSH
8890: CALL_OW 302
8894: IFFALSE 8910
// LegionCarsAlive = LegionCarsAlive + 1 ;
8896: LD_ADDR_LOC 20
8900: PUSH
8901: LD_LOC 20
8905: PUSH
8906: LD_INT 1
8908: PLUS
8909: ST_TO_ADDR
// if GetLives ( LegioninList ) > 499 and IsInArea ( LegionInList , LegionAttackRally ) then
8910: LD_LOC 19
8914: PPUSH
8915: CALL_OW 256
8919: PUSH
8920: LD_INT 499
8922: GREATER
8923: PUSH
8924: LD_LOC 19
8928: PPUSH
8929: LD_INT 13
8931: PPUSH
8932: CALL_OW 308
8936: AND
8937: IFFALSE 8953
// LegionCarsReady = LegionCarsREady + 1 ;
8939: LD_ADDR_LOC 21
8943: PUSH
8944: LD_LOC 21
8948: PUSH
8949: LD_INT 1
8951: PLUS
8952: ST_TO_ADDR
// if Getlives ( LegionInList ) < 500 then
8953: LD_LOC 19
8957: PPUSH
8958: CALL_OW 256
8962: PUSH
8963: LD_INT 500
8965: LESS
8966: IFFALSE 8980
// begin ComMovetoArea ( LegionInList , LegionEvacZone ) ;
8968: LD_LOC 19
8972: PPUSH
8973: LD_INT 5
8975: PPUSH
8976: CALL_OW 113
// end ; if Getlives ( LegionInList ) < 250 then
8980: LD_LOC 19
8984: PPUSH
8985: CALL_OW 256
8989: PUSH
8990: LD_INT 250
8992: LESS
8993: IFFALSE 9004
// begin ComUnlink ( LegionInList ) ;
8995: LD_LOC 19
8999: PPUSH
9000: CALL_OW 136
// end ; if GetLives ( LegDriver ) < 700 then
9004: LD_EXP 37
9008: PPUSH
9009: CALL_OW 256
9013: PUSH
9014: LD_INT 700
9016: LESS
9017: IFFALSE 9031
// ComMovetoArea ( Legdriver , LegionEvacZone ) ;
9019: LD_EXP 37
9023: PPUSH
9024: LD_INT 5
9026: PPUSH
9027: CALL_OW 113
// end ;
9031: GO 8882
9033: POP
9034: POP
// if LegionCarsReady > 2 then
9035: LD_LOC 21
9039: PUSH
9040: LD_INT 2
9042: GREATER
9043: IFFALSE 9177
// begin AttackerList = FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , 2 ] ] ) ^ LegLaser ;
9045: LD_ADDR_LOC 16
9049: PUSH
9050: LD_INT 22
9052: PUSH
9053: LD_INT 8
9055: PUSH
9056: EMPTY
9057: LIST
9058: LIST
9059: PUSH
9060: LD_INT 33
9062: PUSH
9063: LD_INT 2
9065: PUSH
9066: EMPTY
9067: LIST
9068: LIST
9069: PUSH
9070: EMPTY
9071: LIST
9072: LIST
9073: PPUSH
9074: CALL_OW 69
9078: PUSH
9079: LD_EXP 38
9083: ADD
9084: ST_TO_ADDR
// for Attacker in AttackerList do
9085: LD_ADDR_LOC 17
9089: PUSH
9090: LD_LOC 16
9094: PUSH
9095: FOR_IN
9096: IFFALSE 9175
// begin ComAgressiveMove ( Attacker , 50 , 17 ) ;
9098: LD_LOC 17
9102: PPUSH
9103: LD_INT 50
9105: PPUSH
9106: LD_INT 17
9108: PPUSH
9109: CALL_OW 114
// AddComAgressiveMove ( Attacker , 50 , 13 ) ;
9113: LD_LOC 17
9117: PPUSH
9118: LD_INT 50
9120: PPUSH
9121: LD_INT 13
9123: PPUSH
9124: CALL_OW 174
// AddComAgressiveMove ( Attacker , 51 , 10 ) ;
9128: LD_LOC 17
9132: PPUSH
9133: LD_INT 51
9135: PPUSH
9136: LD_INT 10
9138: PPUSH
9139: CALL_OW 174
// AddComAgressiveMove ( Attacker , 48 , 7 ) ;
9143: LD_LOC 17
9147: PPUSH
9148: LD_INT 48
9150: PPUSH
9151: LD_INT 7
9153: PPUSH
9154: CALL_OW 174
// AddComAgressiveMove ( Attacker , 39 , 9 ) ;
9158: LD_LOC 17
9162: PPUSH
9163: LD_INT 39
9165: PPUSH
9166: LD_INT 9
9168: PPUSH
9169: CALL_OW 174
// end ;
9173: GO 9095
9175: POP
9176: POP
// end ; end ;
9177: END
// var LeHealList , LeHeal ; every 0 0$01 trigger Getlives ( LegDoc ) > 250 do
9178: LD_EXP 21
9182: PPUSH
9183: CALL_OW 256
9187: PUSH
9188: LD_INT 250
9190: GREATER
9191: IFFALSE 9325
9193: GO 9195
9195: DISABLE
// begin enable ;
9196: ENABLE
// LeHealList = FilterAllUnits ( [ [ f_side , 8 ] , [ f_class , 1 ] ] ) ^ LegMo ;
9197: LD_ADDR_LOC 22
9201: PUSH
9202: LD_INT 22
9204: PUSH
9205: LD_INT 8
9207: PUSH
9208: EMPTY
9209: LIST
9210: LIST
9211: PUSH
9212: LD_INT 25
9214: PUSH
9215: LD_INT 1
9217: PUSH
9218: EMPTY
9219: LIST
9220: LIST
9221: PUSH
9222: EMPTY
9223: LIST
9224: LIST
9225: PPUSH
9226: CALL_OW 69
9230: PUSH
9231: LD_EXP 19
9235: ADD
9236: ST_TO_ADDR
// if LeHealList then
9237: LD_LOC 22
9241: IFFALSE 9325
// for LeHeal in LeHealList do
9243: LD_ADDR_LOC 23
9247: PUSH
9248: LD_LOC 22
9252: PUSH
9253: FOR_IN
9254: IFFALSE 9323
// begin if getLives ( LeHeal ) < 650 then
9256: LD_LOC 23
9260: PPUSH
9261: CALL_OW 256
9265: PUSH
9266: LD_INT 650
9268: LESS
9269: IFFALSE 9321
// begin if not GetDistUnits ( LeHeal , LegDoc ) < 4 then
9271: LD_LOC 23
9275: PPUSH
9276: LD_EXP 21
9280: PPUSH
9281: CALL_OW 296
9285: PUSH
9286: LD_INT 4
9288: LESS
9289: NOT
9290: IFFALSE 9321
// ComMoveXY ( LeHeal , Getx ( LegDoc ) , GetY ( LegDoc ) ) ;
9292: LD_LOC 23
9296: PPUSH
9297: LD_EXP 21
9301: PPUSH
9302: CALL_OW 250
9306: PPUSH
9307: LD_EXP 21
9311: PPUSH
9312: CALL_OW 251
9316: PPUSH
9317: CALL_OW 111
// end ; end ;
9321: GO 9253
9323: POP
9324: POP
// end ; end_of_file
9325: END
// every 0 0$5 trigger ( isdead ( LegS1 ) and isdead ( LegS2 ) and isdead ( LegS3 ) and isdead ( LegMo ) ) or isdead ( LegMech ) do
9326: LD_EXP 16
9330: PPUSH
9331: CALL_OW 301
9335: PUSH
9336: LD_EXP 17
9340: PPUSH
9341: CALL_OW 301
9345: AND
9346: PUSH
9347: LD_EXP 18
9351: PPUSH
9352: CALL_OW 301
9356: AND
9357: PUSH
9358: LD_EXP 19
9362: PPUSH
9363: CALL_OW 301
9367: AND
9368: PUSH
9369: LD_EXP 20
9373: PPUSH
9374: CALL_OW 301
9378: OR
9379: IFFALSE 9392
9381: GO 9383
9383: DISABLE
// begin LegionEvacOrder = 1 ;
9384: LD_ADDR_EXP 2
9388: PUSH
9389: LD_INT 1
9391: ST_TO_ADDR
// end ;
9392: END
// var LegUn , LegList ; every 0 0$5.7 trigger LegionEvacOrder = 1 do
9393: LD_EXP 2
9397: PUSH
9398: LD_INT 1
9400: EQUAL
9401: IFFALSE 9459
9403: GO 9405
9405: DISABLE
// begin enable ;
9406: ENABLE
// LegList = FilterAllUnits ( [ f_side , 8 ] ) ;
9407: LD_ADDR_LOC 25
9411: PUSH
9412: LD_INT 22
9414: PUSH
9415: LD_INT 8
9417: PUSH
9418: EMPTY
9419: LIST
9420: LIST
9421: PPUSH
9422: CALL_OW 69
9426: ST_TO_ADDR
// for LegUn in LegList do
9427: LD_ADDR_LOC 24
9431: PUSH
9432: LD_LOC 25
9436: PUSH
9437: FOR_IN
9438: IFFALSE 9457
// ComMoveXY ( LegUn , 206 , 97 ) ;
9440: LD_LOC 24
9444: PPUSH
9445: LD_INT 206
9447: PPUSH
9448: LD_INT 97
9450: PPUSH
9451: CALL_OW 111
9455: GO 9437
9457: POP
9458: POP
// end ; end_of_file
9459: END
// every 0 0$30 trigger morale < 100 do
9460: LD_EXP 50
9464: PUSH
9465: LD_INT 100
9467: LESS
9468: IFFALSE 9603
9470: GO 9472
9472: DISABLE
// begin ComUpgrade ( IsInUnit ( Coward1 ) ) ;
9473: LD_EXP 22
9477: PPUSH
9478: CALL_OW 310
9482: PPUSH
9483: CALL_OW 146
// ComExitBuilding ( [ Coward1 , Coward2 , Coward3 ] ) ;
9487: LD_EXP 22
9491: PUSH
9492: LD_EXP 23
9496: PUSH
9497: LD_EXP 24
9501: PUSH
9502: EMPTY
9503: LIST
9504: LIST
9505: LIST
9506: PPUSH
9507: CALL_OW 122
// wait ( 0 0$0.3 ) ;
9511: LD_INT 10
9513: PPUSH
9514: CALL_OW 67
// SetSide ( [ Coward1 , Coward2 , Coward3 ] , 7 ) ;
9518: LD_EXP 22
9522: PUSH
9523: LD_EXP 23
9527: PUSH
9528: LD_EXP 24
9532: PUSH
9533: EMPTY
9534: LIST
9535: LIST
9536: LIST
9537: PPUSH
9538: LD_INT 7
9540: PPUSH
9541: CALL_OW 235
// wait ( 0 0$0.3 ) ;
9545: LD_INT 10
9547: PPUSH
9548: CALL_OW 67
// AddComMoveToArea ( [ Coward1 , Coward2 , Coward3 ] , PlayerBase ) ;
9552: LD_EXP 22
9556: PUSH
9557: LD_EXP 23
9561: PUSH
9562: LD_EXP 24
9566: PUSH
9567: EMPTY
9568: LIST
9569: LIST
9570: LIST
9571: PPUSH
9572: LD_INT 14
9574: PPUSH
9575: CALL_OW 173
// wait ( 0 0$5 ) ;
9579: LD_INT 175
9581: PPUSH
9582: CALL_OW 67
// ComUpgrade ( CowardGun1 ) ;
9586: LD_EXP 58
9590: PPUSH
9591: CALL_OW 146
// AttackIntensity = 2 ;
9595: LD_ADDR_EXP 51
9599: PUSH
9600: LD_INT 2
9602: ST_TO_ADDR
// end ;
9603: END
// every 0 0$30 trigger morale < 91 do
9604: LD_EXP 50
9608: PUSH
9609: LD_INT 91
9611: LESS
9612: IFFALSE 9747
9614: GO 9616
9616: DISABLE
// begin ComUpgrade ( IsInUnit ( Coward5 ) ) ;
9617: LD_EXP 26
9621: PPUSH
9622: CALL_OW 310
9626: PPUSH
9627: CALL_OW 146
// ComExitBuilding ( [ Coward4 , Coward5 , Coward6 ] ) ;
9631: LD_EXP 25
9635: PUSH
9636: LD_EXP 26
9640: PUSH
9641: LD_EXP 27
9645: PUSH
9646: EMPTY
9647: LIST
9648: LIST
9649: LIST
9650: PPUSH
9651: CALL_OW 122
// wait ( 0 0$0.3 ) ;
9655: LD_INT 10
9657: PPUSH
9658: CALL_OW 67
// SetSide ( [ Coward4 , Coward5 , Coward6 ] , 7 ) ;
9662: LD_EXP 25
9666: PUSH
9667: LD_EXP 26
9671: PUSH
9672: LD_EXP 27
9676: PUSH
9677: EMPTY
9678: LIST
9679: LIST
9680: LIST
9681: PPUSH
9682: LD_INT 7
9684: PPUSH
9685: CALL_OW 235
// wait ( 0 0$0.3 ) ;
9689: LD_INT 10
9691: PPUSH
9692: CALL_OW 67
// AddComMoveToArea ( [ Coward4 , Coward5 , Coward6 ] , PlayerBase ) ;
9696: LD_EXP 25
9700: PUSH
9701: LD_EXP 26
9705: PUSH
9706: LD_EXP 27
9710: PUSH
9711: EMPTY
9712: LIST
9713: LIST
9714: LIST
9715: PPUSH
9716: LD_INT 14
9718: PPUSH
9719: CALL_OW 173
// wait ( 0 0$5 ) ;
9723: LD_INT 175
9725: PPUSH
9726: CALL_OW 67
// ComUpgrade ( CowardGun2 ) ;
9730: LD_EXP 59
9734: PPUSH
9735: CALL_OW 146
// AttackIntensity = 3 ;
9739: LD_ADDR_EXP 51
9743: PUSH
9744: LD_INT 3
9746: ST_TO_ADDR
// end ;
9747: END
// every 0 0$30 trigger morale < 76 do
9748: LD_EXP 50
9752: PUSH
9753: LD_INT 76
9755: LESS
9756: IFFALSE 9873
9758: GO 9760
9760: DISABLE
// begin ComUpgrade ( IsInUnit ( Coward7 ) ) ;
9761: LD_EXP 28
9765: PPUSH
9766: CALL_OW 310
9770: PPUSH
9771: CALL_OW 146
// ComExitBuilding ( [ Coward7 , Coward8 ] ) ;
9775: LD_EXP 28
9779: PUSH
9780: LD_EXP 29
9784: PUSH
9785: EMPTY
9786: LIST
9787: LIST
9788: PPUSH
9789: CALL_OW 122
// wait ( 0 0$0.3 ) ;
9793: LD_INT 10
9795: PPUSH
9796: CALL_OW 67
// SetSide ( [ Coward7 , Coward8 ] , 7 ) ;
9800: LD_EXP 28
9804: PUSH
9805: LD_EXP 29
9809: PUSH
9810: EMPTY
9811: LIST
9812: LIST
9813: PPUSH
9814: LD_INT 7
9816: PPUSH
9817: CALL_OW 235
// wait ( 0 0$0.3 ) ;
9821: LD_INT 10
9823: PPUSH
9824: CALL_OW 67
// AddComMoveToArea ( [ Coward7 , Coward8 ] , PlayerBase ) ;
9828: LD_EXP 28
9832: PUSH
9833: LD_EXP 29
9837: PUSH
9838: EMPTY
9839: LIST
9840: LIST
9841: PPUSH
9842: LD_INT 14
9844: PPUSH
9845: CALL_OW 173
// wait ( 0 0$5 ) ;
9849: LD_INT 175
9851: PPUSH
9852: CALL_OW 67
// ComUpgrade ( CowardGun3 ) ;
9856: LD_EXP 60
9860: PPUSH
9861: CALL_OW 146
// AttackIntensity = 4 ;
9865: LD_ADDR_EXP 51
9869: PUSH
9870: LD_INT 4
9872: ST_TO_ADDR
// end ;
9873: END
// every 0 0$30 trigger morale < 50 do
9874: LD_EXP 50
9878: PUSH
9879: LD_INT 50
9881: LESS
9882: IFFALSE 9999
9884: GO 9886
9886: DISABLE
// begin ComUpgrade ( IsInUnit ( Coward9 ) ) ;
9887: LD_EXP 30
9891: PPUSH
9892: CALL_OW 310
9896: PPUSH
9897: CALL_OW 146
// ComExitBuilding ( [ Coward9 , Coward10 ] ) ;
9901: LD_EXP 30
9905: PUSH
9906: LD_EXP 31
9910: PUSH
9911: EMPTY
9912: LIST
9913: LIST
9914: PPUSH
9915: CALL_OW 122
// wait ( 0 0$0.3 ) ;
9919: LD_INT 10
9921: PPUSH
9922: CALL_OW 67
// SetSide ( [ Coward9 , Coward10 ] , 7 ) ;
9926: LD_EXP 30
9930: PUSH
9931: LD_EXP 31
9935: PUSH
9936: EMPTY
9937: LIST
9938: LIST
9939: PPUSH
9940: LD_INT 7
9942: PPUSH
9943: CALL_OW 235
// wait ( 0 0$0.3 ) ;
9947: LD_INT 10
9949: PPUSH
9950: CALL_OW 67
// AddComMoveToArea ( [ Coward9 , Coward10 ] , PlayerBase ) ;
9954: LD_EXP 30
9958: PUSH
9959: LD_EXP 31
9963: PUSH
9964: EMPTY
9965: LIST
9966: LIST
9967: PPUSH
9968: LD_INT 14
9970: PPUSH
9971: CALL_OW 173
// wait ( 0 0$5 ) ;
9975: LD_INT 175
9977: PPUSH
9978: CALL_OW 67
// ComUpgrade ( CowardGun4 ) ;
9982: LD_EXP 61
9986: PPUSH
9987: CALL_OW 146
// AttackIntensity = 5 ;
9991: LD_ADDR_EXP 51
9995: PUSH
9996: LD_INT 5
9998: ST_TO_ADDR
// end ;
9999: END
// every 0 0$30 trigger morale < 20 do
10000: LD_EXP 50
10004: PUSH
10005: LD_INT 20
10007: LESS
10008: IFFALSE 10102
10010: GO 10012
10012: DISABLE
// begin ComExitBuilding ( [ Coward11 , Coward12 ] ) ;
10013: LD_EXP 32
10017: PUSH
10018: LD_EXP 33
10022: PUSH
10023: EMPTY
10024: LIST
10025: LIST
10026: PPUSH
10027: CALL_OW 122
// wait ( 0 0$0.3 ) ;
10031: LD_INT 10
10033: PPUSH
10034: CALL_OW 67
// SetSide ( [ Coward11 , Coward12 ] , 7 ) ;
10038: LD_EXP 32
10042: PUSH
10043: LD_EXP 33
10047: PUSH
10048: EMPTY
10049: LIST
10050: LIST
10051: PPUSH
10052: LD_INT 7
10054: PPUSH
10055: CALL_OW 235
// wait ( 0 0$0.3 ) ;
10059: LD_INT 10
10061: PPUSH
10062: CALL_OW 67
// AddComMoveToArea ( [ Coward11 , Coward12 ] , PlayerBase ) ;
10066: LD_EXP 32
10070: PUSH
10071: LD_EXP 33
10075: PUSH
10076: EMPTY
10077: LIST
10078: LIST
10079: PPUSH
10080: LD_INT 14
10082: PPUSH
10083: CALL_OW 173
// wait ( 0 0$5 ) ;
10087: LD_INT 175
10089: PPUSH
10090: CALL_OW 67
// AttackIntensity = 6 ;
10094: LD_ADDR_EXP 51
10098: PUSH
10099: LD_INT 6
10101: ST_TO_ADDR
// end ;
10102: END
// every 0 0$01 trigger See ( 4 , Coward1 ) or See ( 4 , Coward2 ) or See ( 4 , Coward3 ) do
10103: LD_INT 4
10105: PPUSH
10106: LD_EXP 22
10110: PPUSH
10111: CALL_OW 292
10115: PUSH
10116: LD_INT 4
10118: PPUSH
10119: LD_EXP 23
10123: PPUSH
10124: CALL_OW 292
10128: OR
10129: PUSH
10130: LD_INT 4
10132: PPUSH
10133: LD_EXP 24
10137: PPUSH
10138: CALL_OW 292
10142: OR
10143: IFFALSE 10333
10145: GO 10147
10147: DISABLE
// begin TechTier1 ;
10148: CALL 10780 0 0
// if See ( 4 , Coward1 ) then
10152: LD_INT 4
10154: PPUSH
10155: LD_EXP 22
10159: PPUSH
10160: CALL_OW 292
10164: IFFALSE 10175
// CenteronUnits ( Coward1 ) ;
10166: LD_EXP 22
10170: PPUSH
10171: CALL_OW 85
// if See ( 4 , Coward2 ) then
10175: LD_INT 4
10177: PPUSH
10178: LD_EXP 23
10182: PPUSH
10183: CALL_OW 292
10187: IFFALSE 10198
// CenteronUnits ( Coward2 ) ;
10189: LD_EXP 23
10193: PPUSH
10194: CALL_OW 85
// if See ( 4 , Coward3 ) then
10198: LD_INT 4
10200: PPUSH
10201: LD_EXP 24
10205: PPUSH
10206: CALL_OW 292
10210: IFFALSE 10221
// CenteronUnits ( Coward3 ) ;
10212: LD_EXP 24
10216: PPUSH
10217: CALL_OW 85
// SetSide ( [ Coward1 , Coward2 , Coward3 ] , 4 ) ;
10221: LD_EXP 22
10225: PUSH
10226: LD_EXP 23
10230: PUSH
10231: LD_EXP 24
10235: PUSH
10236: EMPTY
10237: LIST
10238: LIST
10239: LIST
10240: PPUSH
10241: LD_INT 4
10243: PPUSH
10244: CALL_OW 235
// wait ( 0 0$0.1 ) ;
10248: LD_INT 4
10250: PPUSH
10251: CALL_OW 67
// DialogueOn ;
10255: CALL_OW 6
// wait ( 0 0$01 ) ;
10259: LD_INT 35
10261: PPUSH
10262: CALL_OW 67
// Say ( Madison , Dez1 ) ;
10266: LD_INT 98
10268: PPUSH
10269: LD_STRING Dez1
10271: PPUSH
10272: CALL_OW 88
// Say ( Coward1 , Dez2 ) ;
10276: LD_EXP 22
10280: PPUSH
10281: LD_STRING Dez2
10283: PPUSH
10284: CALL_OW 88
// Say ( Madison , Dez3 ) ;
10288: LD_INT 98
10290: PPUSH
10291: LD_STRING Dez3
10293: PPUSH
10294: CALL_OW 88
// Say ( Coward1 , Dez4 ) ;
10298: LD_EXP 22
10302: PPUSH
10303: LD_STRING Dez4
10305: PPUSH
10306: CALL_OW 88
// Say ( Coward1 , Dez5 ) ;
10310: LD_EXP 22
10314: PPUSH
10315: LD_STRING Dez5
10317: PPUSH
10318: CALL_OW 88
// dialogueoff ;
10322: CALL_OW 7
// Query ( NewTech ) ;
10326: LD_STRING NewTech
10328: PPUSH
10329: CALL_OW 97
// end ;
10333: END
// every 0 0$01 trigger See ( 4 , Coward4 ) or See ( 4 , Coward5 ) or See ( 4 , Coward6 ) do
10334: LD_INT 4
10336: PPUSH
10337: LD_EXP 25
10341: PPUSH
10342: CALL_OW 292
10346: PUSH
10347: LD_INT 4
10349: PPUSH
10350: LD_EXP 26
10354: PPUSH
10355: CALL_OW 292
10359: OR
10360: PUSH
10361: LD_INT 4
10363: PPUSH
10364: LD_EXP 27
10368: PPUSH
10369: CALL_OW 292
10373: OR
10374: IFFALSE 10575
10376: GO 10378
10378: DISABLE
// begin TechTier2 ;
10379: CALL 10957 0 0
// if See ( 4 , Coward4 ) then
10383: LD_INT 4
10385: PPUSH
10386: LD_EXP 25
10390: PPUSH
10391: CALL_OW 292
10395: IFFALSE 10406
// CenteronUnits ( Coward4 ) ;
10397: LD_EXP 25
10401: PPUSH
10402: CALL_OW 85
// if See ( 4 , Coward5 ) then
10406: LD_INT 4
10408: PPUSH
10409: LD_EXP 26
10413: PPUSH
10414: CALL_OW 292
10418: IFFALSE 10429
// CenteronUnits ( Coward5 ) ;
10420: LD_EXP 26
10424: PPUSH
10425: CALL_OW 85
// if See ( 4 , Coward6 ) then
10429: LD_INT 4
10431: PPUSH
10432: LD_EXP 27
10436: PPUSH
10437: CALL_OW 292
10441: IFFALSE 10452
// CenteronUnits ( Coward6 ) ;
10443: LD_EXP 27
10447: PPUSH
10448: CALL_OW 85
// SetSide ( [ Coward4 , Coward5 , Coward6 ] , 4 ) ;
10452: LD_EXP 25
10456: PUSH
10457: LD_EXP 26
10461: PUSH
10462: LD_EXP 27
10466: PUSH
10467: EMPTY
10468: LIST
10469: LIST
10470: LIST
10471: PPUSH
10472: LD_INT 4
10474: PPUSH
10475: CALL_OW 235
// wait ( 0 0$0.1 ) ;
10479: LD_INT 4
10481: PPUSH
10482: CALL_OW 67
// Say ( Madison , Dez11 ) ;
10486: LD_INT 98
10488: PPUSH
10489: LD_STRING Dez11
10491: PPUSH
10492: CALL_OW 88
// Say ( [ Coward4 , Coward5 , Coward6 ] [ rand ( 1 , 3 ) ] , Dez12 ) ;
10496: LD_EXP 25
10500: PUSH
10501: LD_EXP 26
10505: PUSH
10506: LD_EXP 27
10510: PUSH
10511: EMPTY
10512: LIST
10513: LIST
10514: LIST
10515: PUSH
10516: LD_INT 1
10518: PPUSH
10519: LD_INT 3
10521: PPUSH
10522: CALL_OW 12
10526: ARRAY
10527: PPUSH
10528: LD_STRING Dez12
10530: PPUSH
10531: CALL_OW 88
// if isDead ( KARP ) then
10535: LD_EXP 34
10539: PPUSH
10540: CALL_OW 301
10544: IFFALSE 10558
// Say ( Madison , Dez13b ) else
10546: LD_INT 98
10548: PPUSH
10549: LD_STRING Dez13b
10551: PPUSH
10552: CALL_OW 88
10556: GO 10568
// Say ( Madison , Dez13a ) ;
10558: LD_INT 98
10560: PPUSH
10561: LD_STRING Dez13a
10563: PPUSH
10564: CALL_OW 88
// Query ( NewTech ) ;
10568: LD_STRING NewTech
10570: PPUSH
10571: CALL_OW 97
// end ;
10575: END
// every 0 0$01 trigger See ( 4 , Coward7 ) or See ( 4 , Coward8 ) do
10576: LD_INT 4
10578: PPUSH
10579: LD_EXP 28
10583: PPUSH
10584: CALL_OW 292
10588: PUSH
10589: LD_INT 4
10591: PPUSH
10592: LD_EXP 29
10596: PPUSH
10597: CALL_OW 292
10601: OR
10602: IFFALSE 10628
10604: GO 10606
10606: DISABLE
// begin SetSide ( [ Coward7 , Coward8 ] , 4 ) ;
10607: LD_EXP 28
10611: PUSH
10612: LD_EXP 29
10616: PUSH
10617: EMPTY
10618: LIST
10619: LIST
10620: PPUSH
10621: LD_INT 4
10623: PPUSH
10624: CALL_OW 235
// end ;
10628: END
// every 0 0$01 trigger See ( 4 , Coward9 ) or See ( 4 , Coward10 ) do
10629: LD_INT 4
10631: PPUSH
10632: LD_EXP 30
10636: PPUSH
10637: CALL_OW 292
10641: PUSH
10642: LD_INT 4
10644: PPUSH
10645: LD_EXP 31
10649: PPUSH
10650: CALL_OW 292
10654: OR
10655: IFFALSE 10681
10657: GO 10659
10659: DISABLE
// begin SetSide ( [ Coward9 , Coward10 ] , 4 ) ;
10660: LD_EXP 30
10664: PUSH
10665: LD_EXP 31
10669: PUSH
10670: EMPTY
10671: LIST
10672: LIST
10673: PPUSH
10674: LD_INT 4
10676: PPUSH
10677: CALL_OW 235
// end ;
10681: END
// every 0 0$01 trigger See ( 4 , Coward11 ) or See ( 4 , Coward12 ) do
10682: LD_INT 4
10684: PPUSH
10685: LD_EXP 32
10689: PPUSH
10690: CALL_OW 292
10694: PUSH
10695: LD_INT 4
10697: PPUSH
10698: LD_EXP 33
10702: PPUSH
10703: CALL_OW 292
10707: OR
10708: IFFALSE 10779
10710: GO 10712
10712: DISABLE
// begin TechTier3 ;
10713: CALL 11186 0 0
// SetSide ( [ Coward11 , Coward12 ] , 4 ) ;
10717: LD_EXP 32
10721: PUSH
10722: LD_EXP 33
10726: PUSH
10727: EMPTY
10728: LIST
10729: LIST
10730: PPUSH
10731: LD_INT 4
10733: PPUSH
10734: CALL_OW 235
// Say ( Coward11 , Dez21 ) ;
10738: LD_EXP 32
10742: PPUSH
10743: LD_STRING Dez21
10745: PPUSH
10746: CALL_OW 88
// Say ( Coward12 , Dez22 ) ;
10750: LD_EXP 33
10754: PPUSH
10755: LD_STRING Dez22
10757: PPUSH
10758: CALL_OW 88
// Say ( Madison , Dez23 ) ;
10762: LD_INT 98
10764: PPUSH
10765: LD_STRING Dez23
10767: PPUSH
10768: CALL_OW 88
// Query ( NewTech ) ;
10772: LD_STRING NewTech
10774: PPUSH
10775: CALL_OW 97
// end ;
10779: END
// function TechTier1 ( ) ; begin
10780: LD_INT 0
10782: PPUSH
// SetTech ( 6 , 4 , 1 ) ;
10783: LD_INT 6
10785: PPUSH
10786: LD_INT 4
10788: PPUSH
10789: LD_INT 1
10791: PPUSH
10792: CALL_OW 322
// SetTech ( 15 , 4 , 1 ) ;
10796: LD_INT 15
10798: PPUSH
10799: LD_INT 4
10801: PPUSH
10802: LD_INT 1
10804: PPUSH
10805: CALL_OW 322
// SetTech ( 7 , 4 , 1 ) ;
10809: LD_INT 7
10811: PPUSH
10812: LD_INT 4
10814: PPUSH
10815: LD_INT 1
10817: PPUSH
10818: CALL_OW 322
// SetTech ( 39 , 4 , 1 ) ;
10822: LD_INT 39
10824: PPUSH
10825: LD_INT 4
10827: PPUSH
10828: LD_INT 1
10830: PPUSH
10831: CALL_OW 322
// SetTech ( tech_sibDet , 4 , 0 ) ;
10835: LD_INT 20
10837: PPUSH
10838: LD_INT 4
10840: PPUSH
10841: LD_INT 0
10843: PPUSH
10844: CALL_OW 322
// SetTech ( 52 , 4 , 1 ) ;
10848: LD_INT 52
10850: PPUSH
10851: LD_INT 4
10853: PPUSH
10854: LD_INT 1
10856: PPUSH
10857: CALL_OW 322
// SetTech ( 60 , 4 , 1 ) ;
10861: LD_INT 60
10863: PPUSH
10864: LD_INT 4
10866: PPUSH
10867: LD_INT 1
10869: PPUSH
10870: CALL_OW 322
// SetTech ( 61 , 4 , 1 ) ;
10874: LD_INT 61
10876: PPUSH
10877: LD_INT 4
10879: PPUSH
10880: LD_INT 1
10882: PPUSH
10883: CALL_OW 322
// SetRestrict ( b_siberite_Mine , 4 , true ) ;
10887: LD_INT 30
10889: PPUSH
10890: LD_INT 4
10892: PPUSH
10893: LD_INT 1
10895: PPUSH
10896: CALL_OW 324
// SetRestrict ( 17 , 4 , true ) ;
10900: LD_INT 17
10902: PPUSH
10903: LD_INT 4
10905: PPUSH
10906: LD_INT 1
10908: PPUSH
10909: CALL_OW 324
// SetRestrict ( 22 , 4 , true ) ;
10913: LD_INT 22
10915: PPUSH
10916: LD_INT 4
10918: PPUSH
10919: LD_INT 1
10921: PPUSH
10922: CALL_OW 324
// SetRestrict ( 20 , 4 , true ) ;
10926: LD_INT 20
10928: PPUSH
10929: LD_INT 4
10931: PPUSH
10932: LD_INT 1
10934: PPUSH
10935: CALL_OW 324
// SetRestrict ( 36 , 4 , true ) ;
10939: LD_INT 36
10941: PPUSH
10942: LD_INT 4
10944: PPUSH
10945: LD_INT 1
10947: PPUSH
10948: CALL_OW 324
// end ;
10952: LD_VAR 0 1
10956: RET
// function TechTier2 ( ) ; begin
10957: LD_INT 0
10959: PPUSH
// SetTech ( 32 , 4 , 1 ) ;
10960: LD_INT 32
10962: PPUSH
10963: LD_INT 4
10965: PPUSH
10966: LD_INT 1
10968: PPUSH
10969: CALL_OW 322
// SetTech ( 27 , 4 , 1 ) ;
10973: LD_INT 27
10975: PPUSH
10976: LD_INT 4
10978: PPUSH
10979: LD_INT 1
10981: PPUSH
10982: CALL_OW 322
// SetTech ( 10 , 4 , 1 ) ;
10986: LD_INT 10
10988: PPUSH
10989: LD_INT 4
10991: PPUSH
10992: LD_INT 1
10994: PPUSH
10995: CALL_OW 322
// SetTech ( 21 , 4 , 1 ) ;
10999: LD_INT 21
11001: PPUSH
11002: LD_INT 4
11004: PPUSH
11005: LD_INT 1
11007: PPUSH
11008: CALL_OW 322
// SetTech ( 22 , 4 , 1 ) ;
11012: LD_INT 22
11014: PPUSH
11015: LD_INT 4
11017: PPUSH
11018: LD_INT 1
11020: PPUSH
11021: CALL_OW 322
// SetTech ( 50 , 4 , 1 ) ;
11025: LD_INT 50
11027: PPUSH
11028: LD_INT 4
11030: PPUSH
11031: LD_INT 1
11033: PPUSH
11034: CALL_OW 322
// SetTech ( 53 , 4 , 1 ) ;
11038: LD_INT 53
11040: PPUSH
11041: LD_INT 4
11043: PPUSH
11044: LD_INT 1
11046: PPUSH
11047: CALL_OW 322
// SetTech ( 62 , 4 , 1 ) ;
11051: LD_INT 62
11053: PPUSH
11054: LD_INT 4
11056: PPUSH
11057: LD_INT 1
11059: PPUSH
11060: CALL_OW 322
// SetTech ( 57 , 4 , 1 ) ;
11064: LD_INT 57
11066: PPUSH
11067: LD_INT 4
11069: PPUSH
11070: LD_INT 1
11072: PPUSH
11073: CALL_OW 322
// SetTech ( 54 , 4 , 1 ) ;
11077: LD_INT 54
11079: PPUSH
11080: LD_INT 4
11082: PPUSH
11083: LD_INT 1
11085: PPUSH
11086: CALL_OW 322
// SetRestrict ( 11 , 4 , true ) ;
11090: LD_INT 11
11092: PPUSH
11093: LD_INT 4
11095: PPUSH
11096: LD_INT 1
11098: PPUSH
11099: CALL_OW 324
// SetRestrict ( 21 , 4 , true ) ;
11103: LD_INT 21
11105: PPUSH
11106: LD_INT 4
11108: PPUSH
11109: LD_INT 1
11111: PPUSH
11112: CALL_OW 324
// SetRestrict ( 12 , 4 , true ) ;
11116: LD_INT 12
11118: PPUSH
11119: LD_INT 4
11121: PPUSH
11122: LD_INT 1
11124: PPUSH
11125: CALL_OW 324
// SetRestrict ( 24 , 4 , true ) ;
11129: LD_INT 24
11131: PPUSH
11132: LD_INT 4
11134: PPUSH
11135: LD_INT 1
11137: PPUSH
11138: CALL_OW 324
// SetRestrict ( 25 , 4 , true ) ;
11142: LD_INT 25
11144: PPUSH
11145: LD_INT 4
11147: PPUSH
11148: LD_INT 1
11150: PPUSH
11151: CALL_OW 324
// SetRestrict ( 28 , 4 , true ) ;
11155: LD_INT 28
11157: PPUSH
11158: LD_INT 4
11160: PPUSH
11161: LD_INT 1
11163: PPUSH
11164: CALL_OW 324
// SetRestrict ( 33 , 4 , true ) ;
11168: LD_INT 33
11170: PPUSH
11171: LD_INT 4
11173: PPUSH
11174: LD_INT 1
11176: PPUSH
11177: CALL_OW 324
// end ;
11181: LD_VAR 0 1
11185: RET
// function TechTier3 ( ) ; begin
11186: LD_INT 0
11188: PPUSH
// SetTech ( 36 , 4 , 1 ) ;
11189: LD_INT 36
11191: PPUSH
11192: LD_INT 4
11194: PPUSH
11195: LD_INT 1
11197: PPUSH
11198: CALL_OW 322
// SetTech ( 14 , 4 , 1 ) ;
11202: LD_INT 14
11204: PPUSH
11205: LD_INT 4
11207: PPUSH
11208: LD_INT 1
11210: PPUSH
11211: CALL_OW 322
// SetTech ( 34 , 4 , 1 ) ;
11215: LD_INT 34
11217: PPUSH
11218: LD_INT 4
11220: PPUSH
11221: LD_INT 1
11223: PPUSH
11224: CALL_OW 322
// SetTech ( 40 , 4 , 1 ) ;
11228: LD_INT 40
11230: PPUSH
11231: LD_INT 4
11233: PPUSH
11234: LD_INT 1
11236: PPUSH
11237: CALL_OW 322
// SetTech ( 16 , 4 , 1 ) ;
11241: LD_INT 16
11243: PPUSH
11244: LD_INT 4
11246: PPUSH
11247: LD_INT 1
11249: PPUSH
11250: CALL_OW 322
// SetTech ( 58 , 4 , 1 ) ;
11254: LD_INT 58
11256: PPUSH
11257: LD_INT 4
11259: PPUSH
11260: LD_INT 1
11262: PPUSH
11263: CALL_OW 322
// SetTech ( 59 , 4 , 1 ) ;
11267: LD_INT 59
11269: PPUSH
11270: LD_INT 4
11272: PPUSH
11273: LD_INT 1
11275: PPUSH
11276: CALL_OW 322
// SetTech ( 55 , 4 , 1 ) ;
11280: LD_INT 55
11282: PPUSH
11283: LD_INT 4
11285: PPUSH
11286: LD_INT 1
11288: PPUSH
11289: CALL_OW 322
// SetTech ( 56 , 4 , 1 ) ;
11293: LD_INT 56
11295: PPUSH
11296: LD_INT 4
11298: PPUSH
11299: LD_INT 1
11301: PPUSH
11302: CALL_OW 322
// SetRestrict ( 18 , 4 , true ) ;
11306: LD_INT 18
11308: PPUSH
11309: LD_INT 4
11311: PPUSH
11312: LD_INT 1
11314: PPUSH
11315: CALL_OW 324
// end ; end_of_file
11319: LD_VAR 0 1
11323: RET
// export Morale , AttackIntensity ; var AttackReady , i , randomAttack , USReadyList , USReadyUnit ; on UnitGoesToRed ( un ) do begin UnitGoesToRed_USDefenseAI ( un ) ;
11324: LD_VAR 0 1
11328: PPUSH
11329: CALL 14248 0 1
// if ( GetControl ( un ) > 0 and GetSide ( un ) = 1 ) then
11333: LD_VAR 0 1
11337: PPUSH
11338: CALL_OW 263
11342: PUSH
11343: LD_INT 0
11345: GREATER
11346: PUSH
11347: LD_VAR 0 1
11351: PPUSH
11352: CALL_OW 255
11356: PUSH
11357: LD_INT 1
11359: EQUAL
11360: AND
11361: IFFALSE 11612
// begin if GetChassis ( un ) = us_light_wheeled and GetSide ( un ) = 1 then
11363: LD_VAR 0 1
11367: PPUSH
11368: CALL_OW 265
11372: PUSH
11373: LD_INT 1
11375: EQUAL
11376: PUSH
11377: LD_VAR 0 1
11381: PPUSH
11382: CALL_OW 255
11386: PUSH
11387: LD_INT 1
11389: EQUAL
11390: AND
11391: IFFALSE 11407
// Morale = Morale - 1 ;
11393: LD_ADDR_EXP 50
11397: PUSH
11398: LD_EXP 50
11402: PUSH
11403: LD_INT 1
11405: MINUS
11406: ST_TO_ADDR
// if GetChassis ( un ) = us_Medium_wheeled and GetSide ( un ) = 1 then
11407: LD_VAR 0 1
11411: PPUSH
11412: CALL_OW 265
11416: PUSH
11417: LD_INT 2
11419: EQUAL
11420: PUSH
11421: LD_VAR 0 1
11425: PPUSH
11426: CALL_OW 255
11430: PUSH
11431: LD_INT 1
11433: EQUAL
11434: AND
11435: IFFALSE 11451
// Morale = Morale - 2 ;
11437: LD_ADDR_EXP 50
11441: PUSH
11442: LD_EXP 50
11446: PUSH
11447: LD_INT 2
11449: MINUS
11450: ST_TO_ADDR
// if GetChassis ( un ) = us_Medium_Tracked and GetSide ( un ) = 1 then
11451: LD_VAR 0 1
11455: PPUSH
11456: CALL_OW 265
11460: PUSH
11461: LD_INT 3
11463: EQUAL
11464: PUSH
11465: LD_VAR 0 1
11469: PPUSH
11470: CALL_OW 255
11474: PUSH
11475: LD_INT 1
11477: EQUAL
11478: AND
11479: IFFALSE 11495
// Morale = Morale - 2 ;
11481: LD_ADDR_EXP 50
11485: PUSH
11486: LD_EXP 50
11490: PUSH
11491: LD_INT 2
11493: MINUS
11494: ST_TO_ADDR
// if GetChassis ( un ) = us_Heavy_tracked and GetSide ( un ) = 1 then
11495: LD_VAR 0 1
11499: PPUSH
11500: CALL_OW 265
11504: PUSH
11505: LD_INT 4
11507: EQUAL
11508: PUSH
11509: LD_VAR 0 1
11513: PPUSH
11514: CALL_OW 255
11518: PUSH
11519: LD_INT 1
11521: EQUAL
11522: AND
11523: IFFALSE 11539
// Morale = Morale - 4 ;
11525: LD_ADDR_EXP 50
11529: PUSH
11530: LD_EXP 50
11534: PUSH
11535: LD_INT 4
11537: MINUS
11538: ST_TO_ADDR
// if GetChassis ( un ) = us_Morphling and GetSide ( un ) = 1 then
11539: LD_VAR 0 1
11543: PPUSH
11544: CALL_OW 265
11548: PUSH
11549: LD_INT 5
11551: EQUAL
11552: PUSH
11553: LD_VAR 0 1
11557: PPUSH
11558: CALL_OW 255
11562: PUSH
11563: LD_INT 1
11565: EQUAL
11566: AND
11567: IFFALSE 11583
// Morale = Morale - 5 ;
11569: LD_ADDR_EXP 50
11573: PUSH
11574: LD_EXP 50
11578: PUSH
11579: LD_INT 5
11581: MINUS
11582: ST_TO_ADDR
// if GetSide ( un ) = 4 then
11583: LD_VAR 0 1
11587: PPUSH
11588: CALL_OW 255
11592: PUSH
11593: LD_INT 4
11595: EQUAL
11596: IFFALSE 11612
// Morale = Morale + 1 ;
11598: LD_ADDR_EXP 50
11602: PUSH
11603: LD_EXP 50
11607: PUSH
11608: LD_INT 1
11610: PLUS
11611: ST_TO_ADDR
// end ; if un = LegDriver then
11612: LD_VAR 0 1
11616: PUSH
11617: LD_EXP 37
11621: EQUAL
11622: IFFALSE 11662
// begin DriverBodyHot = 1 ;
11624: LD_ADDR_EXP 46
11628: PUSH
11629: LD_INT 1
11631: ST_TO_ADDR
// LegDX = getX ( LegDriver ) ;
11632: LD_ADDR_EXP 47
11636: PUSH
11637: LD_EXP 37
11641: PPUSH
11642: CALL_OW 250
11646: ST_TO_ADDR
// LegDY = GetY ( LegDriver ) ;
11647: LD_ADDR_EXP 48
11651: PUSH
11652: LD_EXP 37
11656: PPUSH
11657: CALL_OW 251
11661: ST_TO_ADDR
// end ; end ;
11662: PPOPN 1
11664: END
// var USList , USUnitsInList ; function USAttackerCount ( List ) ; begin
11665: LD_INT 0
11667: PPUSH
// result = 0 ;
11668: LD_ADDR_VAR 0 2
11672: PUSH
11673: LD_INT 0
11675: ST_TO_ADDR
// for USUnitsInList in List do
11676: LD_ADDR_LOC 32
11680: PUSH
11681: LD_VAR 0 1
11685: PUSH
11686: FOR_IN
11687: IFFALSE 11705
// result = result + 1 ;
11689: LD_ADDR_VAR 0 2
11693: PUSH
11694: LD_VAR 0 2
11698: PUSH
11699: LD_INT 1
11701: PLUS
11702: ST_TO_ADDR
11703: GO 11686
11705: POP
11706: POP
// end ;
11707: LD_VAR 0 2
11711: RET
// var Weapon , Chassis , Engine , FacSelect , Fac ; every 0 0$10 trigger AttackIntensity > 0 do
11712: LD_EXP 51
11716: PUSH
11717: LD_INT 0
11719: GREATER
11720: IFFALSE 13292
11722: GO 11724
11724: DISABLE
// begin enable ;
11725: ENABLE
// FacSelect = FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_factory ] ] ) ;
11726: LD_ADDR_LOC 36
11730: PUSH
11731: LD_INT 22
11733: PUSH
11734: LD_INT 1
11736: PUSH
11737: EMPTY
11738: LIST
11739: LIST
11740: PUSH
11741: LD_INT 30
11743: PUSH
11744: LD_INT 3
11746: PUSH
11747: EMPTY
11748: LIST
11749: LIST
11750: PUSH
11751: EMPTY
11752: LIST
11753: LIST
11754: PPUSH
11755: CALL_OW 69
11759: ST_TO_ADDR
// for Fac in FacSelect do
11760: LD_ADDR_LOC 37
11764: PUSH
11765: LD_LOC 36
11769: PUSH
11770: FOR_IN
11771: IFFALSE 11855
// begin if GetX ( Fac ) = 148 and GetY ( Fac ) = 7 then
11773: LD_LOC 37
11777: PPUSH
11778: CALL_OW 250
11782: PUSH
11783: LD_INT 148
11785: EQUAL
11786: PUSH
11787: LD_LOC 37
11791: PPUSH
11792: CALL_OW 251
11796: PUSH
11797: LD_INT 7
11799: EQUAL
11800: AND
11801: IFFALSE 11813
// AmFac1 = Fac ;
11803: LD_ADDR_EXP 64
11807: PUSH
11808: LD_LOC 37
11812: ST_TO_ADDR
// if GetX ( Fac ) = 151 and GetY ( Fac ) = 38 then
11813: LD_LOC 37
11817: PPUSH
11818: CALL_OW 250
11822: PUSH
11823: LD_INT 151
11825: EQUAL
11826: PUSH
11827: LD_LOC 37
11831: PPUSH
11832: CALL_OW 251
11836: PUSH
11837: LD_INT 38
11839: EQUAL
11840: AND
11841: IFFALSE 11853
// AmFac2 = Fac ;
11843: LD_ADDR_EXP 65
11847: PUSH
11848: LD_LOC 37
11852: ST_TO_ADDR
// end ;
11853: GO 11770
11855: POP
11856: POP
// if AttackIntensity = 1 then
11857: LD_EXP 51
11861: PUSH
11862: LD_INT 1
11864: EQUAL
11865: IFFALSE 11934
// begin weapon = [ us_machine_gun , us_light_gun ] [ Rand ( 1 , 2 ) ] ;
11867: LD_ADDR_LOC 33
11871: PUSH
11872: LD_INT 2
11874: PUSH
11875: LD_INT 3
11877: PUSH
11878: EMPTY
11879: LIST
11880: LIST
11881: PUSH
11882: LD_INT 1
11884: PPUSH
11885: LD_INT 2
11887: PPUSH
11888: CALL_OW 12
11892: ARRAY
11893: ST_TO_ADDR
// Chassis = us_light_wheeled ;
11894: LD_ADDR_LOC 34
11898: PUSH
11899: LD_INT 1
11901: ST_TO_ADDR
// Engine = 2 ;
11902: LD_ADDR_LOC 35
11906: PUSH
11907: LD_INT 2
11909: ST_TO_ADDR
// AddComResearch ( AmLab1 , tech_tech1 ) ;
11910: LD_EXP 62
11914: PPUSH
11915: LD_INT 48
11917: PPUSH
11918: CALL_OW 184
// AddComResearch ( AmLab1 , tech_tech2 ) ;
11922: LD_EXP 62
11926: PPUSH
11927: LD_INT 49
11929: PPUSH
11930: CALL_OW 184
// end ; if AttackIntensity = 2 then
11934: LD_EXP 51
11938: PUSH
11939: LD_INT 2
11941: EQUAL
11942: IFFALSE 11999
// begin weapon = [ us_double_gun , 5 , us_gatling_gun , 4 , us_light_gun ] [ Rand ( 1 , 5 ) ] ;
11944: LD_ADDR_LOC 33
11948: PUSH
11949: LD_INT 5
11951: PUSH
11952: LD_INT 5
11954: PUSH
11955: LD_INT 4
11957: PUSH
11958: LD_INT 4
11960: PUSH
11961: LD_INT 3
11963: PUSH
11964: EMPTY
11965: LIST
11966: LIST
11967: LIST
11968: LIST
11969: LIST
11970: PUSH
11971: LD_INT 1
11973: PPUSH
11974: LD_INT 5
11976: PPUSH
11977: CALL_OW 12
11981: ARRAY
11982: ST_TO_ADDR
// Chassis = us_medium_wheeled ;
11983: LD_ADDR_LOC 34
11987: PUSH
11988: LD_INT 2
11990: ST_TO_ADDR
// Engine = 3 ;
11991: LD_ADDR_LOC 35
11995: PUSH
11996: LD_INT 3
11998: ST_TO_ADDR
// end ; if AttackIntensity = 3 then
11999: LD_EXP 51
12003: PUSH
12004: LD_INT 3
12006: EQUAL
12007: IFFALSE 12068
// begin weapon = [ us_double_gun , 5 , 5 , us_laser , 4 , us_rocket_launcher ] [ Rand ( 1 , 6 ) ] ;
12009: LD_ADDR_LOC 33
12013: PUSH
12014: LD_INT 5
12016: PUSH
12017: LD_INT 5
12019: PUSH
12020: LD_INT 5
12022: PUSH
12023: LD_INT 9
12025: PUSH
12026: LD_INT 4
12028: PUSH
12029: LD_INT 7
12031: PUSH
12032: EMPTY
12033: LIST
12034: LIST
12035: LIST
12036: LIST
12037: LIST
12038: LIST
12039: PUSH
12040: LD_INT 1
12042: PPUSH
12043: LD_INT 6
12045: PPUSH
12046: CALL_OW 12
12050: ARRAY
12051: ST_TO_ADDR
// Chassis = us_medium_tracked ;
12052: LD_ADDR_LOC 34
12056: PUSH
12057: LD_INT 3
12059: ST_TO_ADDR
// Engine = 3 ;
12060: LD_ADDR_LOC 35
12064: PUSH
12065: LD_INT 3
12067: ST_TO_ADDR
// end ; if AttackIntensity = 4 then
12068: LD_EXP 51
12072: PUSH
12073: LD_INT 4
12075: EQUAL
12076: IFFALSE 12216
// begin weapon = [ us_heavy_gun , 6 , 6 , 6 , us_laser , 5 , 4 , 7 , 7 , us_rocket_launcher ] [ Rand ( 1 , 10 ) ] ;
12078: LD_ADDR_LOC 33
12082: PUSH
12083: LD_INT 6
12085: PUSH
12086: LD_INT 6
12088: PUSH
12089: LD_INT 6
12091: PUSH
12092: LD_INT 6
12094: PUSH
12095: LD_INT 9
12097: PUSH
12098: LD_INT 5
12100: PUSH
12101: LD_INT 4
12103: PUSH
12104: LD_INT 7
12106: PUSH
12107: LD_INT 7
12109: PUSH
12110: LD_INT 7
12112: PUSH
12113: EMPTY
12114: LIST
12115: LIST
12116: LIST
12117: LIST
12118: LIST
12119: LIST
12120: LIST
12121: LIST
12122: LIST
12123: LIST
12124: PUSH
12125: LD_INT 1
12127: PPUSH
12128: LD_INT 10
12130: PPUSH
12131: CALL_OW 12
12135: ARRAY
12136: ST_TO_ADDR
// Chassis = [ us_heavy_tracked , 4 , 4 , 4 , 4 , 4 , us_morphling ] [ Rand ( 1 , 7 ) ] ;
12137: LD_ADDR_LOC 34
12141: PUSH
12142: LD_INT 4
12144: PUSH
12145: LD_INT 4
12147: PUSH
12148: LD_INT 4
12150: PUSH
12151: LD_INT 4
12153: PUSH
12154: LD_INT 4
12156: PUSH
12157: LD_INT 4
12159: PUSH
12160: LD_INT 5
12162: PUSH
12163: EMPTY
12164: LIST
12165: LIST
12166: LIST
12167: LIST
12168: LIST
12169: LIST
12170: LIST
12171: PUSH
12172: LD_INT 1
12174: PPUSH
12175: LD_INT 7
12177: PPUSH
12178: CALL_OW 12
12182: ARRAY
12183: ST_TO_ADDR
// Engine = 3 ;
12184: LD_ADDR_LOC 35
12188: PUSH
12189: LD_INT 3
12191: ST_TO_ADDR
// AddComResearch ( AmLab1 , tech_weap1 ) ;
12192: LD_EXP 62
12196: PPUSH
12197: LD_INT 51
12199: PPUSH
12200: CALL_OW 184
// AddComResearch ( AmLab1 , tech_comp1 ) ;
12204: LD_EXP 62
12208: PPUSH
12209: LD_INT 57
12211: PPUSH
12212: CALL_OW 184
// end ; if AttackIntensity > 4 then
12216: LD_EXP 51
12220: PUSH
12221: LD_INT 4
12223: GREATER
12224: IFFALSE 12325
// begin weapon = [ us_heavy_gun , 6 , 6 , 6 , us_double_laser , 10 , 10 , us_rocket_launcher , 7 , 7 ] [ Rand ( 1 , 10 ) ] ;
12226: LD_ADDR_LOC 33
12230: PUSH
12231: LD_INT 6
12233: PUSH
12234: LD_INT 6
12236: PUSH
12237: LD_INT 6
12239: PUSH
12240: LD_INT 6
12242: PUSH
12243: LD_INT 10
12245: PUSH
12246: LD_INT 10
12248: PUSH
12249: LD_INT 10
12251: PUSH
12252: LD_INT 7
12254: PUSH
12255: LD_INT 7
12257: PUSH
12258: LD_INT 7
12260: PUSH
12261: EMPTY
12262: LIST
12263: LIST
12264: LIST
12265: LIST
12266: LIST
12267: LIST
12268: LIST
12269: LIST
12270: LIST
12271: LIST
12272: PUSH
12273: LD_INT 1
12275: PPUSH
12276: LD_INT 10
12278: PPUSH
12279: CALL_OW 12
12283: ARRAY
12284: ST_TO_ADDR
// Chassis = us_morphling ;
12285: LD_ADDR_LOC 34
12289: PUSH
12290: LD_INT 5
12292: ST_TO_ADDR
// Engine = 3 ;
12293: LD_ADDR_LOC 35
12297: PUSH
12298: LD_INT 3
12300: ST_TO_ADDR
// AddComResearch ( AmLab1 , tech_weap2 ) ;
12301: LD_EXP 62
12305: PPUSH
12306: LD_INT 52
12308: PPUSH
12309: CALL_OW 184
// AddComResearch ( AmLab1 , tech_comp2 ) ;
12313: LD_EXP 62
12317: PPUSH
12318: LD_INT 58
12320: PPUSH
12321: CALL_OW 184
// end ; if AttackIntensity = 6 then
12325: LD_EXP 51
12329: PUSH
12330: LD_INT 6
12332: EQUAL
12333: IFFALSE 12443
// begin AddComResearch ( AmLab1 , tech_tech1 ) ;
12335: LD_EXP 62
12339: PPUSH
12340: LD_INT 48
12342: PPUSH
12343: CALL_OW 184
// AddComResearch ( AmLab1 , tech_tech2 ) ;
12347: LD_EXP 62
12351: PPUSH
12352: LD_INT 49
12354: PPUSH
12355: CALL_OW 184
// AddComResearch ( AmLab1 , tech_tech3 ) ;
12359: LD_EXP 62
12363: PPUSH
12364: LD_INT 50
12366: PPUSH
12367: CALL_OW 184
// AddComResearch ( AmLab1 , tech_weap1 ) ;
12371: LD_EXP 62
12375: PPUSH
12376: LD_INT 51
12378: PPUSH
12379: CALL_OW 184
// AddComResearch ( AmLab1 , tech_weap2 ) ;
12383: LD_EXP 62
12387: PPUSH
12388: LD_INT 52
12390: PPUSH
12391: CALL_OW 184
// AddComResearch ( AmLab1 , tech_weap3 ) ;
12395: LD_EXP 62
12399: PPUSH
12400: LD_INT 53
12402: PPUSH
12403: CALL_OW 184
// AddComResearch ( AmLab1 , tech_comp1 ) ;
12407: LD_EXP 62
12411: PPUSH
12412: LD_INT 57
12414: PPUSH
12415: CALL_OW 184
// AddComResearch ( AmLab1 , tech_comp2 ) ;
12419: LD_EXP 62
12423: PPUSH
12424: LD_INT 58
12426: PPUSH
12427: CALL_OW 184
// AddComResearch ( AmLab1 , tech_comp3 ) ;
12431: LD_EXP 62
12435: PPUSH
12436: LD_INT 59
12438: PPUSH
12439: CALL_OW 184
// end ; if isOK ( AmFac1 ) and ( not isbusy ( AmFac1 ) ) and ( not Hastask ( AmFac1 ) ) and GetSide ( AmFac1 ) = 1 and not CanBeConstructed ( AmFac2 , chassis , engine , 3 , weapon ) and CanBeConstructed ( AmFac1 , chassis , engine , 3 , weapon ) then
12443: LD_EXP 64
12447: PPUSH
12448: CALL_OW 302
12452: PUSH
12453: LD_EXP 64
12457: PPUSH
12458: CALL_OW 315
12462: NOT
12463: AND
12464: PUSH
12465: LD_EXP 64
12469: PPUSH
12470: CALL_OW 314
12474: NOT
12475: AND
12476: PUSH
12477: LD_EXP 64
12481: PPUSH
12482: CALL_OW 255
12486: PUSH
12487: LD_INT 1
12489: EQUAL
12490: AND
12491: PUSH
12492: LD_EXP 65
12496: PPUSH
12497: LD_LOC 34
12501: PPUSH
12502: LD_LOC 35
12506: PPUSH
12507: LD_INT 3
12509: PPUSH
12510: LD_LOC 33
12514: PPUSH
12515: CALL_OW 448
12519: NOT
12520: AND
12521: PUSH
12522: LD_EXP 64
12526: PPUSH
12527: LD_LOC 34
12531: PPUSH
12532: LD_LOC 35
12536: PPUSH
12537: LD_INT 3
12539: PPUSH
12540: LD_LOC 33
12544: PPUSH
12545: CALL_OW 448
12549: AND
12550: IFFALSE 12581
// begin AddComConstruct ( AmFac1 , chassis , engine , 3 , weapon ) ;
12552: LD_EXP 64
12556: PPUSH
12557: LD_LOC 34
12561: PPUSH
12562: LD_LOC 35
12566: PPUSH
12567: LD_INT 3
12569: PPUSH
12570: LD_LOC 33
12574: PPUSH
12575: CALL_OW 185
// end else
12579: GO 12687
// begin if isOK ( AmFac2 ) and ( not isbusy ( AmFac2 ) ) and ( not Hastask ( AmFac2 ) ) and GetSide ( AmFac2 ) = 1 and CanBeConstructed ( AmFac2 , chassis , engine , 3 , weapon ) then
12581: LD_EXP 65
12585: PPUSH
12586: CALL_OW 302
12590: PUSH
12591: LD_EXP 65
12595: PPUSH
12596: CALL_OW 315
12600: NOT
12601: AND
12602: PUSH
12603: LD_EXP 65
12607: PPUSH
12608: CALL_OW 314
12612: NOT
12613: AND
12614: PUSH
12615: LD_EXP 65
12619: PPUSH
12620: CALL_OW 255
12624: PUSH
12625: LD_INT 1
12627: EQUAL
12628: AND
12629: PUSH
12630: LD_EXP 65
12634: PPUSH
12635: LD_LOC 34
12639: PPUSH
12640: LD_LOC 35
12644: PPUSH
12645: LD_INT 3
12647: PPUSH
12648: LD_LOC 33
12652: PPUSH
12653: CALL_OW 448
12657: AND
12658: IFFALSE 12687
// AddComConstruct ( AmFac2 , chassis , engine , 3 , weapon ) ;
12660: LD_EXP 65
12664: PPUSH
12665: LD_LOC 34
12669: PPUSH
12670: LD_LOC 35
12674: PPUSH
12675: LD_INT 3
12677: PPUSH
12678: LD_LOC 33
12682: PPUSH
12683: CALL_OW 185
// end ; wait ( [ 0 0$1.0 , 0 0$1.1 , 0 0$1.2 , 0 0$1.3 , 0 0$1.4 , 0 0$1.5 ] [ rand ( 1 , 6 ) ] ) ;
12687: LD_INT 35
12689: PUSH
12690: LD_INT 39
12692: PUSH
12693: LD_INT 42
12695: PUSH
12696: LD_INT 46
12698: PUSH
12699: LD_INT 49
12701: PUSH
12702: LD_INT 52
12704: PUSH
12705: EMPTY
12706: LIST
12707: LIST
12708: LIST
12709: LIST
12710: LIST
12711: LIST
12712: PUSH
12713: LD_INT 1
12715: PPUSH
12716: LD_INT 6
12718: PPUSH
12719: CALL_OW 12
12723: ARRAY
12724: PPUSH
12725: CALL_OW 67
// USList = FilterAllUnits ( [ [ f_side , 1 ] , [ f_control , control_computer ] , [ f_not , [ f_weapon , us_crane ] ] ] ) ;
12729: LD_ADDR_LOC 31
12733: PUSH
12734: LD_INT 22
12736: PUSH
12737: LD_INT 1
12739: PUSH
12740: EMPTY
12741: LIST
12742: LIST
12743: PUSH
12744: LD_INT 33
12746: PUSH
12747: LD_INT 3
12749: PUSH
12750: EMPTY
12751: LIST
12752: LIST
12753: PUSH
12754: LD_INT 3
12756: PUSH
12757: LD_INT 34
12759: PUSH
12760: LD_INT 13
12762: PUSH
12763: EMPTY
12764: LIST
12765: LIST
12766: PUSH
12767: EMPTY
12768: LIST
12769: LIST
12770: PUSH
12771: EMPTY
12772: LIST
12773: LIST
12774: LIST
12775: PPUSH
12776: CALL_OW 69
12780: ST_TO_ADDR
// if USAttackerCount ( USList ) > 2 + difficulty then
12781: LD_LOC 31
12785: PPUSH
12786: CALL 11665 0 1
12790: PUSH
12791: LD_INT 2
12793: PUSH
12794: LD_OWVAR 67
12798: PLUS
12799: GREATER
12800: IFFALSE 13292
// begin randomAttack = rand ( 1 , 3 ) ;
12802: LD_ADDR_LOC 28
12806: PUSH
12807: LD_INT 1
12809: PPUSH
12810: LD_INT 3
12812: PPUSH
12813: CALL_OW 12
12817: ST_TO_ADDR
// if RandomAttack = 1 then
12818: LD_LOC 28
12822: PUSH
12823: LD_INT 1
12825: EQUAL
12826: IFFALSE 12976
// for USReadyUnit in USList do
12828: LD_ADDR_LOC 30
12832: PUSH
12833: LD_LOC 31
12837: PUSH
12838: FOR_IN
12839: IFFALSE 12974
// if not HasTask ( USREadyUnit ) and GetChassis ( USReadyUnit ) > 0 then
12841: LD_LOC 30
12845: PPUSH
12846: CALL_OW 314
12850: NOT
12851: PUSH
12852: LD_LOC 30
12856: PPUSH
12857: CALL_OW 265
12861: PUSH
12862: LD_INT 0
12864: GREATER
12865: AND
12866: IFFALSE 12972
// begin if not IsInArea ( USReadyUnit , PlayerBase ) then
12868: LD_LOC 30
12872: PPUSH
12873: LD_INT 14
12875: PPUSH
12876: CALL_OW 308
12880: NOT
12881: IFFALSE 12924
// AddComMoveXY ( USReadyUnit , 35 + rand ( - 8 , 8 ) , 43 + rand ( - 8 , 8 ) ) ;
12883: LD_LOC 30
12887: PPUSH
12888: LD_INT 35
12890: PUSH
12891: LD_INT 8
12893: NEG
12894: PPUSH
12895: LD_INT 8
12897: PPUSH
12898: CALL_OW 12
12902: PLUS
12903: PPUSH
12904: LD_INT 43
12906: PUSH
12907: LD_INT 8
12909: NEG
12910: PPUSH
12911: LD_INT 8
12913: PPUSH
12914: CALL_OW 12
12918: PLUS
12919: PPUSH
12920: CALL_OW 171
// wait ( 1 1$30 ) ;
12924: LD_INT 3150
12926: PPUSH
12927: CALL_OW 67
// AddComAgressiveMove ( USReadyUnit , 71 + rand ( - 15 , 15 ) , 81 + rand ( - 15 , 15 ) ) ;
12931: LD_LOC 30
12935: PPUSH
12936: LD_INT 71
12938: PUSH
12939: LD_INT 15
12941: NEG
12942: PPUSH
12943: LD_INT 15
12945: PPUSH
12946: CALL_OW 12
12950: PLUS
12951: PPUSH
12952: LD_INT 81
12954: PUSH
12955: LD_INT 15
12957: NEG
12958: PPUSH
12959: LD_INT 15
12961: PPUSH
12962: CALL_OW 12
12966: PLUS
12967: PPUSH
12968: CALL_OW 174
// end ;
12972: GO 12838
12974: POP
12975: POP
// if RandomAttack = 2 then
12976: LD_LOC 28
12980: PUSH
12981: LD_INT 2
12983: EQUAL
12984: IFFALSE 13134
// for USReadyUnit in USList do
12986: LD_ADDR_LOC 30
12990: PUSH
12991: LD_LOC 31
12995: PUSH
12996: FOR_IN
12997: IFFALSE 13132
// if not HasTask ( USREadyUnit ) and GetChassis ( USReadyUnit ) > 0 then
12999: LD_LOC 30
13003: PPUSH
13004: CALL_OW 314
13008: NOT
13009: PUSH
13010: LD_LOC 30
13014: PPUSH
13015: CALL_OW 265
13019: PUSH
13020: LD_INT 0
13022: GREATER
13023: AND
13024: IFFALSE 13130
// begin if not IsInArea ( USReadyUnit , PlayerBase ) then
13026: LD_LOC 30
13030: PPUSH
13031: LD_INT 14
13033: PPUSH
13034: CALL_OW 308
13038: NOT
13039: IFFALSE 13082
// AddComMoveXY ( USReadyUnit , 82 + rand ( - 8 , 8 ) , 31 + rand ( - 8 , 8 ) ) ;
13041: LD_LOC 30
13045: PPUSH
13046: LD_INT 82
13048: PUSH
13049: LD_INT 8
13051: NEG
13052: PPUSH
13053: LD_INT 8
13055: PPUSH
13056: CALL_OW 12
13060: PLUS
13061: PPUSH
13062: LD_INT 31
13064: PUSH
13065: LD_INT 8
13067: NEG
13068: PPUSH
13069: LD_INT 8
13071: PPUSH
13072: CALL_OW 12
13076: PLUS
13077: PPUSH
13078: CALL_OW 171
// wait ( 1 1$30 ) ;
13082: LD_INT 3150
13084: PPUSH
13085: CALL_OW 67
// AddComAgressiveMove ( USReadyUnit , 71 + rand ( - 15 , 15 ) , 81 + rand ( - 15 , 15 ) ) ;
13089: LD_LOC 30
13093: PPUSH
13094: LD_INT 71
13096: PUSH
13097: LD_INT 15
13099: NEG
13100: PPUSH
13101: LD_INT 15
13103: PPUSH
13104: CALL_OW 12
13108: PLUS
13109: PPUSH
13110: LD_INT 81
13112: PUSH
13113: LD_INT 15
13115: NEG
13116: PPUSH
13117: LD_INT 15
13119: PPUSH
13120: CALL_OW 12
13124: PLUS
13125: PPUSH
13126: CALL_OW 174
// end ;
13130: GO 12996
13132: POP
13133: POP
// if RandomAttack = 3 then
13134: LD_LOC 28
13138: PUSH
13139: LD_INT 3
13141: EQUAL
13142: IFFALSE 13292
// for USReadyUnit in USList do
13144: LD_ADDR_LOC 30
13148: PUSH
13149: LD_LOC 31
13153: PUSH
13154: FOR_IN
13155: IFFALSE 13290
// if not HasTask ( USREadyUnit ) and GetChassis ( USReadyUnit ) > 0 then
13157: LD_LOC 30
13161: PPUSH
13162: CALL_OW 314
13166: NOT
13167: PUSH
13168: LD_LOC 30
13172: PPUSH
13173: CALL_OW 265
13177: PUSH
13178: LD_INT 0
13180: GREATER
13181: AND
13182: IFFALSE 13288
// begin if not IsInArea ( USReadyUnit , PlayerBase ) then
13184: LD_LOC 30
13188: PPUSH
13189: LD_INT 14
13191: PPUSH
13192: CALL_OW 308
13196: NOT
13197: IFFALSE 13240
// AddComMoveXY ( USReadyUnit , 117 + rand ( - 8 , 8 ) , 81 + rand ( - 8 , 8 ) ) ;
13199: LD_LOC 30
13203: PPUSH
13204: LD_INT 117
13206: PUSH
13207: LD_INT 8
13209: NEG
13210: PPUSH
13211: LD_INT 8
13213: PPUSH
13214: CALL_OW 12
13218: PLUS
13219: PPUSH
13220: LD_INT 81
13222: PUSH
13223: LD_INT 8
13225: NEG
13226: PPUSH
13227: LD_INT 8
13229: PPUSH
13230: CALL_OW 12
13234: PLUS
13235: PPUSH
13236: CALL_OW 171
// wait ( 1 1$30 ) ;
13240: LD_INT 3150
13242: PPUSH
13243: CALL_OW 67
// AddComAgressiveMove ( USReadyUnit , 71 + rand ( - 15 , 15 ) , 81 + rand ( - 15 , 15 ) ) ;
13247: LD_LOC 30
13251: PPUSH
13252: LD_INT 71
13254: PUSH
13255: LD_INT 15
13257: NEG
13258: PPUSH
13259: LD_INT 15
13261: PPUSH
13262: CALL_OW 12
13266: PLUS
13267: PPUSH
13268: LD_INT 81
13270: PUSH
13271: LD_INT 15
13273: NEG
13274: PPUSH
13275: LD_INT 15
13277: PPUSH
13278: CALL_OW 12
13282: PLUS
13283: PPUSH
13284: CALL_OW 174
// end ;
13288: GO 13154
13290: POP
13291: POP
// end ; end ; end_of_file
13292: END
// export RuAlliance ; on VehicleCaptured ( vehnew , vehold , OrigSide , hum ) do begin if VehOld = LegRadio1 and RadioGet = 0 then
13293: LD_VAR 0 2
13297: PUSH
13298: LD_INT 64
13300: EQUAL
13301: PUSH
13302: LD_EXP 49
13306: PUSH
13307: LD_INT 0
13309: EQUAL
13310: AND
13311: IFFALSE 13369
// begin if hum = Madison then
13313: LD_VAR 0 4
13317: PUSH
13318: LD_INT 98
13320: EQUAL
13321: IFFALSE 13341
// begin RadioGet = 1 ;
13323: LD_ADDR_EXP 49
13327: PUSH
13328: LD_INT 1
13330: ST_TO_ADDR
// Say ( Madison , GreenSearched ) ;
13331: LD_INT 98
13333: PPUSH
13334: LD_STRING GreenSearched
13336: PPUSH
13337: CALL_OW 88
// end ; if hum = Greene then
13341: LD_VAR 0 4
13345: PUSH
13346: LD_INT 96
13348: EQUAL
13349: IFFALSE 13369
// begin RadioGet = 2 ;
13351: LD_ADDR_EXP 49
13355: PUSH
13356: LD_INT 2
13358: ST_TO_ADDR
// Say ( Greene , GreenSearched ) ;
13359: LD_INT 96
13361: PPUSH
13362: LD_STRING GreenSearched
13364: PPUSH
13365: CALL_OW 88
// end ; end ; end ;
13369: PPOPN 4
13371: END
// on BuildingCaptured ( build , origside , eng ) do begin if build = GreenDepo and origside = 7 and Radioget = 0 then
13372: LD_VAR 0 1
13376: PUSH
13377: LD_INT 79
13379: EQUAL
13380: PUSH
13381: LD_VAR 0 2
13385: PUSH
13386: LD_INT 7
13388: EQUAL
13389: AND
13390: PUSH
13391: LD_EXP 49
13395: PUSH
13396: LD_INT 0
13398: EQUAL
13399: AND
13400: IFFALSE 13430
// if eng = Madison then
13402: LD_VAR 0 3
13406: PUSH
13407: LD_INT 98
13409: EQUAL
13410: IFFALSE 13430
// begin RadioGet = 1 ;
13412: LD_ADDR_EXP 49
13416: PUSH
13417: LD_INT 1
13419: ST_TO_ADDR
// Say ( Madison , GreenSearched ) ;
13420: LD_INT 98
13422: PPUSH
13423: LD_STRING GreenSearched
13425: PPUSH
13426: CALL_OW 88
// end ; if eng = Greene then
13430: LD_VAR 0 3
13434: PUSH
13435: LD_INT 96
13437: EQUAL
13438: IFFALSE 13458
// begin RadioGet = 2 ;
13440: LD_ADDR_EXP 49
13444: PUSH
13445: LD_INT 2
13447: ST_TO_ADDR
// Say ( Greene , GreenSearched ) ;
13448: LD_INT 96
13450: PPUSH
13451: LD_STRING GreenSearched
13453: PPUSH
13454: CALL_OW 88
// end ; end ;
13458: PPOPN 3
13460: END
// on EnterBuilding ( build , un ) do begin if ( getBtype ( build ) = b_factory or getBtype ( build ) = b_workshop ) and ( ( un = Greene and RadioGet = 2 ) or ( un = Madison and RadioGet = 1 ) ) then
13461: LD_VAR 0 1
13465: PPUSH
13466: CALL_OW 266
13470: PUSH
13471: LD_INT 3
13473: EQUAL
13474: PUSH
13475: LD_VAR 0 1
13479: PPUSH
13480: CALL_OW 266
13484: PUSH
13485: LD_INT 2
13487: EQUAL
13488: OR
13489: PUSH
13490: LD_VAR 0 2
13494: PUSH
13495: LD_INT 96
13497: EQUAL
13498: PUSH
13499: LD_EXP 49
13503: PUSH
13504: LD_INT 2
13506: EQUAL
13507: AND
13508: PUSH
13509: LD_VAR 0 2
13513: PUSH
13514: LD_INT 98
13516: EQUAL
13517: PUSH
13518: LD_EXP 49
13522: PUSH
13523: LD_INT 1
13525: EQUAL
13526: AND
13527: OR
13528: AND
13529: IFFALSE 13535
// LetTheShitstormBegin ;
13531: CALL 13538 0 0
// end ;
13535: PPOPN 2
13537: END
// function LetTheShitstormBegin ( ) ; begin
13538: LD_INT 0
13540: PPUSH
// RadioGet = - 1 ;
13541: LD_ADDR_EXP 49
13545: PUSH
13546: LD_INT 1
13548: NEG
13549: ST_TO_ADDR
// dialogueon ;
13550: CALL_OW 6
// SayRadio ( Madison , RadioAttempt1 ) ;
13554: LD_INT 98
13556: PPUSH
13557: LD_STRING RadioAttempt1
13559: PPUSH
13560: CALL_OW 94
// SayRadio ( RuBoss , RadioAttempt2 ) ;
13564: LD_EXP 7
13568: PPUSH
13569: LD_STRING RadioAttempt2
13571: PPUSH
13572: CALL_OW 94
// SayRadio ( USBoss , Boss1 ) ;
13576: LD_INT 28
13578: PPUSH
13579: LD_STRING Boss1
13581: PPUSH
13582: CALL_OW 94
// SayRadio ( Madison , RadioAttempt3 ) ;
13586: LD_INT 98
13588: PPUSH
13589: LD_STRING RadioAttempt3
13591: PPUSH
13592: CALL_OW 94
// SayRadio ( Madison , Boss2 ) ;
13596: LD_INT 98
13598: PPUSH
13599: LD_STRING Boss2
13601: PPUSH
13602: CALL_OW 94
// SayRadio ( Madison , Boss3 ) ;
13606: LD_INT 98
13608: PPUSH
13609: LD_STRING Boss3
13611: PPUSH
13612: CALL_OW 94
// SayRadio ( USBoss , Boss4 ) ;
13616: LD_INT 28
13618: PPUSH
13619: LD_STRING Boss4
13621: PPUSH
13622: CALL_OW 94
// SayRadio ( Madison , Boss5 ) ;
13626: LD_INT 98
13628: PPUSH
13629: LD_STRING Boss5
13631: PPUSH
13632: CALL_OW 94
// SayRadio ( USBoss , Boss6 ) ;
13636: LD_INT 28
13638: PPUSH
13639: LD_STRING Boss6
13641: PPUSH
13642: CALL_OW 94
// if not IsDead ( RuBoss ) then
13646: LD_EXP 7
13650: PPUSH
13651: CALL_OW 301
13655: NOT
13656: IFFALSE 13668
// Say ( Madison , Boss7a ) ;
13658: LD_INT 98
13660: PPUSH
13661: LD_STRING Boss7a
13663: PPUSH
13664: CALL_OW 88
// if not IsDead ( RuBoss ) then
13668: LD_EXP 7
13672: PPUSH
13673: CALL_OW 301
13677: NOT
13678: IFFALSE 13928
// case Query ( ContactRussians ) of 1 :
13680: LD_STRING ContactRussians
13682: PPUSH
13683: CALL_OW 97
13687: PUSH
13688: LD_INT 1
13690: DOUBLE
13691: EQUAL
13692: IFTRUE 13696
13694: GO 13927
13696: POP
// begin SetAttitude ( 3 , 4 , att_neutral , true ) ;
13697: LD_INT 3
13699: PPUSH
13700: LD_INT 4
13702: PPUSH
13703: LD_INT 0
13705: PPUSH
13706: LD_INT 1
13708: PPUSH
13709: CALL_OW 80
// SayRadio ( Madison , RuAlliance1 ) ;
13713: LD_INT 98
13715: PPUSH
13716: LD_STRING RuAlliance1
13718: PPUSH
13719: CALL_OW 94
// SayRadio ( RuBoss , RuAlliance2 ) ;
13723: LD_EXP 7
13727: PPUSH
13728: LD_STRING RuAlliance2
13730: PPUSH
13731: CALL_OW 94
// SayRadio ( Madison , RuAlliance3 ) ;
13735: LD_INT 98
13737: PPUSH
13738: LD_STRING RuAlliance3
13740: PPUSH
13741: CALL_OW 94
// SayRadio ( RuBoss , RuAlliance4 ) ;
13745: LD_EXP 7
13749: PPUSH
13750: LD_STRING RuAlliance4
13752: PPUSH
13753: CALL_OW 94
// if not isDead ( RuHeavy ) then
13757: LD_INT 169
13759: PPUSH
13760: CALL_OW 301
13764: NOT
13765: IFFALSE 13779
// AddComEnterUnit ( RuMech , RuHeavy ) ;
13767: LD_EXP 14
13771: PPUSH
13772: LD_INT 169
13774: PPUSH
13775: CALL_OW 180
// AddComMoveXY ( RuMech , 82 + rand ( - 4 , 4 ) , 89 + rand ( - 4 , 4 ) ) ;
13779: LD_EXP 14
13783: PPUSH
13784: LD_INT 82
13786: PUSH
13787: LD_INT 4
13789: NEG
13790: PPUSH
13791: LD_INT 4
13793: PPUSH
13794: CALL_OW 12
13798: PLUS
13799: PPUSH
13800: LD_INT 89
13802: PUSH
13803: LD_INT 4
13805: NEG
13806: PPUSH
13807: LD_INT 4
13809: PPUSH
13810: CALL_OW 12
13814: PLUS
13815: PPUSH
13816: CALL_OW 171
// AddComMoveXY ( RuMech , 62 + rand ( - 5 , 5 ) , 80 + rand ( - 5 , 5 ) ) ;
13820: LD_EXP 14
13824: PPUSH
13825: LD_INT 62
13827: PUSH
13828: LD_INT 5
13830: NEG
13831: PPUSH
13832: LD_INT 5
13834: PPUSH
13835: CALL_OW 12
13839: PLUS
13840: PPUSH
13841: LD_INT 80
13843: PUSH
13844: LD_INT 5
13846: NEG
13847: PPUSH
13848: LD_INT 5
13850: PPUSH
13851: CALL_OW 12
13855: PLUS
13856: PPUSH
13857: CALL_OW 171
// AddComMoveXY ( RuMech , 94 + rand ( - 5 , 5 ) , 88 + rand ( - 5 , 5 ) ) ;
13861: LD_EXP 14
13865: PPUSH
13866: LD_INT 94
13868: PUSH
13869: LD_INT 5
13871: NEG
13872: PPUSH
13873: LD_INT 5
13875: PPUSH
13876: CALL_OW 12
13880: PLUS
13881: PPUSH
13882: LD_INT 88
13884: PUSH
13885: LD_INT 5
13887: NEG
13888: PPUSH
13889: LD_INT 5
13891: PPUSH
13892: CALL_OW 12
13896: PLUS
13897: PPUSH
13898: CALL_OW 171
// AddComExitVehicle ( RuMech ) ;
13902: LD_EXP 14
13906: PPUSH
13907: CALL_OW 181
// AddComEnterUnit ( RuMech , RuFac ) ;
13911: LD_EXP 14
13915: PPUSH
13916: LD_EXP 86
13920: PPUSH
13921: CALL_OW 180
// end ; end ;
13925: GO 13928
13927: POP
// dialogueoff ;
13928: CALL_OW 7
// LegionEvacOrder = 1 ;
13932: LD_ADDR_EXP 2
13936: PUSH
13937: LD_INT 1
13939: ST_TO_ADDR
// AttackIntensity = 1 ;
13940: LD_ADDR_EXP 51
13944: PUSH
13945: LD_INT 1
13947: ST_TO_ADDR
// RemoveUnit ( USBoss ) ;
13948: LD_INT 28
13950: PPUSH
13951: CALL_OW 64
// end ; end_of_file
13955: LD_VAR 0 1
13959: RET
// every 0 0$5 trigger SafetySwitch = 0 and isDead ( Loyal1 ) and isDead ( Loyal2 ) and isDead ( Loyal3 ) and isDead ( Loyal4 ) and isDead ( LoyalMech1 ) and isDead ( LoyalMech2 ) and isDead ( LoyalEng1 ) and isDead ( LoyalEng2 ) and isDead ( LoyalEng3 ) and isDead ( LoyalEng4 ) and isDead ( LoyalDoc ) do
13960: LD_EXP 5
13964: PUSH
13965: LD_INT 0
13967: EQUAL
13968: PUSH
13969: LD_EXP 70
13973: PPUSH
13974: CALL_OW 301
13978: AND
13979: PUSH
13980: LD_EXP 71
13984: PPUSH
13985: CALL_OW 301
13989: AND
13990: PUSH
13991: LD_EXP 72
13995: PPUSH
13996: CALL_OW 301
14000: AND
14001: PUSH
14002: LD_EXP 73
14006: PPUSH
14007: CALL_OW 301
14011: AND
14012: PUSH
14013: LD_EXP 74
14017: PPUSH
14018: CALL_OW 301
14022: AND
14023: PUSH
14024: LD_EXP 75
14028: PPUSH
14029: CALL_OW 301
14033: AND
14034: PUSH
14035: LD_EXP 77
14039: PPUSH
14040: CALL_OW 301
14044: AND
14045: PUSH
14046: LD_EXP 78
14050: PPUSH
14051: CALL_OW 301
14055: AND
14056: PUSH
14057: LD_EXP 79
14061: PPUSH
14062: CALL_OW 301
14066: AND
14067: PUSH
14068: LD_EXP 80
14072: PPUSH
14073: CALL_OW 301
14077: AND
14078: PUSH
14079: LD_EXP 76
14083: PPUSH
14084: CALL_OW 301
14088: AND
14089: IFFALSE 14122
14091: GO 14093
14093: DISABLE
// begin AwardMedals ;
14094: CALL 19475 0 0
// Say ( Madison , Win1 ) ;
14098: LD_INT 98
14100: PPUSH
14101: LD_STRING Win1
14103: PPUSH
14104: CALL_OW 88
// Say ( Madison , Win2 ) ;
14108: LD_INT 98
14110: PPUSH
14111: LD_STRING Win2
14113: PPUSH
14114: CALL_OW 88
// YouWin ;
14118: CALL_OW 103
// end ; end_of_file
14122: END
// var NewUn , UnName ; export function BuildingComplete_USDefenseAI ( un ) ; begin
14123: LD_INT 0
14125: PPUSH
// if getBtype ( un ) = b_turret and GetSide ( un ) = 1 then
14126: LD_VAR 0 1
14130: PPUSH
14131: CALL_OW 266
14135: PUSH
14136: LD_INT 33
14138: EQUAL
14139: PUSH
14140: LD_VAR 0 1
14144: PPUSH
14145: CALL_OW 255
14149: PUSH
14150: LD_INT 1
14152: EQUAL
14153: AND
14154: IFFALSE 14180
// begin AddComPlaceWeapon ( un , Us_machine_gun ) ;
14156: LD_VAR 0 1
14160: PPUSH
14161: LD_INT 2
14163: PPUSH
14164: CALL_OW 208
// AddComPlaceWeapon ( un , Us_rocket_launcher ) ;
14168: LD_VAR 0 1
14172: PPUSH
14173: LD_INT 7
14175: PPUSH
14176: CALL_OW 208
// end ; if getBtype ( un ) = b_bunker and GetSide ( un ) = 1 then
14180: LD_VAR 0 1
14184: PPUSH
14185: CALL_OW 266
14189: PUSH
14190: LD_INT 32
14192: EQUAL
14193: PUSH
14194: LD_VAR 0 1
14198: PPUSH
14199: CALL_OW 255
14203: PUSH
14204: LD_INT 1
14206: EQUAL
14207: AND
14208: IFFALSE 14234
// begin AddComPlaceWeapon ( un , Us_machine_gun ) ;
14210: LD_VAR 0 1
14214: PPUSH
14215: LD_INT 2
14217: PPUSH
14218: CALL_OW 208
// AddComPlaceWeapon ( un , Us_heavy_gun ) ;
14222: LD_VAR 0 1
14226: PPUSH
14227: LD_INT 6
14229: PPUSH
14230: CALL_OW 208
// end ; ReassignID ( un ) ;
14234: LD_VAR 0 1
14238: PPUSH
14239: CALL 14970 0 1
// end ;
14243: LD_VAR 0 2
14247: RET
// export function UnitGoesToRed_USDefenseAI ( un ) ; begin
14248: LD_INT 0
14250: PPUSH
// if un = BlueBase then
14251: LD_VAR 0 1
14255: PUSH
14256: LD_EXP 66
14260: EQUAL
14261: IFFALSE 14331
// begin ComEnterUnit ( [ Loyal1 , Loyal2 , Loyal3 , Loyal4 , LoyalMech1 , LoyalMech2 ] , AmBar ) ;
14263: LD_EXP 70
14267: PUSH
14268: LD_EXP 71
14272: PUSH
14273: LD_EXP 72
14277: PUSH
14278: LD_EXP 73
14282: PUSH
14283: LD_EXP 74
14287: PUSH
14288: LD_EXP 75
14292: PUSH
14293: EMPTY
14294: LIST
14295: LIST
14296: LIST
14297: LIST
14298: LIST
14299: LIST
14300: PPUSH
14301: LD_EXP 57
14305: PPUSH
14306: CALL_OW 120
// AddComChangeProfession ( [ LoyalMech1 , LoyalMech2 ] , class_Soldier ) ;
14310: LD_EXP 74
14314: PUSH
14315: LD_EXP 75
14319: PUSH
14320: EMPTY
14321: LIST
14322: LIST
14323: PPUSH
14324: LD_INT 1
14326: PPUSH
14327: CALL_OW 183
// end ; if Getside ( un ) = 1 and not IsInArea ( un , IgnoreUs ) then
14331: LD_VAR 0 1
14335: PPUSH
14336: CALL_OW 255
14340: PUSH
14341: LD_INT 1
14343: EQUAL
14344: PUSH
14345: LD_VAR 0 1
14349: PPUSH
14350: LD_INT 15
14352: PPUSH
14353: CALL_OW 308
14357: NOT
14358: AND
14359: IFFALSE 14406
// AddComRepairBuilding ( NearestUnitToUnit ( [ LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ] , un ) , un ) ;
14361: LD_EXP 77
14365: PUSH
14366: LD_EXP 78
14370: PUSH
14371: LD_EXP 79
14375: PUSH
14376: LD_EXP 80
14380: PUSH
14381: EMPTY
14382: LIST
14383: LIST
14384: LIST
14385: LIST
14386: PPUSH
14387: LD_VAR 0 1
14391: PPUSH
14392: CALL_OW 74
14396: PPUSH
14397: LD_VAR 0 1
14401: PPUSH
14402: CALL_OW 190
// end ;
14406: LD_VAR 0 2
14410: RET
// on UnitDestroyed ( un ) do begin if Getside ( un ) = 1 and GetBtype ( un ) > - 1 then
14411: LD_VAR 0 1
14415: PPUSH
14416: CALL_OW 255
14420: PUSH
14421: LD_INT 1
14423: EQUAL
14424: PUSH
14425: LD_VAR 0 1
14429: PPUSH
14430: CALL_OW 266
14434: PUSH
14435: LD_INT 1
14437: NEG
14438: GREATER
14439: AND
14440: IFFALSE 14837
// begin if getBtype ( un ) = b_factory then
14442: LD_VAR 0 1
14446: PPUSH
14447: CALL_OW 266
14451: PUSH
14452: LD_INT 3
14454: EQUAL
14455: IFFALSE 14532
// AddComBuild ( NearestUnitToUnit ( [ LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ] , un ) , b_workshop , GetX ( un ) , GetY ( un ) , GetDir ( un ) ) else
14457: LD_EXP 77
14461: PUSH
14462: LD_EXP 78
14466: PUSH
14467: LD_EXP 79
14471: PUSH
14472: LD_EXP 80
14476: PUSH
14477: EMPTY
14478: LIST
14479: LIST
14480: LIST
14481: LIST
14482: PPUSH
14483: LD_VAR 0 1
14487: PPUSH
14488: CALL_OW 74
14492: PPUSH
14493: LD_INT 2
14495: PPUSH
14496: LD_VAR 0 1
14500: PPUSH
14501: CALL_OW 250
14505: PPUSH
14506: LD_VAR 0 1
14510: PPUSH
14511: CALL_OW 251
14515: PPUSH
14516: LD_VAR 0 1
14520: PPUSH
14521: CALL_OW 254
14525: PPUSH
14526: CALL_OW 205
14530: GO 14837
// if getBType ( un ) = b_lab_full or getBType ( un ) = b_lab_half then
14532: LD_VAR 0 1
14536: PPUSH
14537: CALL_OW 266
14541: PUSH
14542: LD_INT 8
14544: EQUAL
14545: PUSH
14546: LD_VAR 0 1
14550: PPUSH
14551: CALL_OW 266
14555: PUSH
14556: LD_INT 7
14558: EQUAL
14559: OR
14560: IFFALSE 14637
// AddComBuild ( NearestUnitToUnit ( [ LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ] , un ) , b_lab , GetX ( un ) , GetY ( un ) , GetDir ( un ) ) else
14562: LD_EXP 77
14566: PUSH
14567: LD_EXP 78
14571: PUSH
14572: LD_EXP 79
14576: PUSH
14577: LD_EXP 80
14581: PUSH
14582: EMPTY
14583: LIST
14584: LIST
14585: LIST
14586: LIST
14587: PPUSH
14588: LD_VAR 0 1
14592: PPUSH
14593: CALL_OW 74
14597: PPUSH
14598: LD_INT 6
14600: PPUSH
14601: LD_VAR 0 1
14605: PPUSH
14606: CALL_OW 250
14610: PPUSH
14611: LD_VAR 0 1
14615: PPUSH
14616: CALL_OW 251
14620: PPUSH
14621: LD_VAR 0 1
14625: PPUSH
14626: CALL_OW 254
14630: PPUSH
14631: CALL_OW 205
14635: GO 14837
// if getBType ( un ) = b_depot or getBType ( un ) = b_warehouse then
14637: LD_VAR 0 1
14641: PPUSH
14642: CALL_OW 266
14646: PUSH
14647: LD_INT 0
14649: EQUAL
14650: PUSH
14651: LD_VAR 0 1
14655: PPUSH
14656: CALL_OW 266
14660: PUSH
14661: LD_INT 1
14663: EQUAL
14664: OR
14665: IFFALSE 14742
// AddComBuild ( NearestUnitToUnit ( [ LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ] , un ) , 0 , GetX ( un ) , GetY ( un ) , GetDir ( un ) ) else
14667: LD_EXP 77
14671: PUSH
14672: LD_EXP 78
14676: PUSH
14677: LD_EXP 79
14681: PUSH
14682: LD_EXP 80
14686: PUSH
14687: EMPTY
14688: LIST
14689: LIST
14690: LIST
14691: LIST
14692: PPUSH
14693: LD_VAR 0 1
14697: PPUSH
14698: CALL_OW 74
14702: PPUSH
14703: LD_INT 0
14705: PPUSH
14706: LD_VAR 0 1
14710: PPUSH
14711: CALL_OW 250
14715: PPUSH
14716: LD_VAR 0 1
14720: PPUSH
14721: CALL_OW 251
14725: PPUSH
14726: LD_VAR 0 1
14730: PPUSH
14731: CALL_OW 254
14735: PPUSH
14736: CALL_OW 205
14740: GO 14837
// if GetBType ( un ) > 1 then
14742: LD_VAR 0 1
14746: PPUSH
14747: CALL_OW 266
14751: PUSH
14752: LD_INT 1
14754: GREATER
14755: IFFALSE 14837
// AddComBuild ( NearestUnitToUnit ( [ LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ] , un ) , GetBtype ( un ) , GetX ( un ) , GetY ( un ) , GetDir ( un ) ) ;
14757: LD_EXP 77
14761: PUSH
14762: LD_EXP 78
14766: PUSH
14767: LD_EXP 79
14771: PUSH
14772: LD_EXP 80
14776: PUSH
14777: EMPTY
14778: LIST
14779: LIST
14780: LIST
14781: LIST
14782: PPUSH
14783: LD_VAR 0 1
14787: PPUSH
14788: CALL_OW 74
14792: PPUSH
14793: LD_VAR 0 1
14797: PPUSH
14798: CALL_OW 266
14802: PPUSH
14803: LD_VAR 0 1
14807: PPUSH
14808: CALL_OW 250
14812: PPUSH
14813: LD_VAR 0 1
14817: PPUSH
14818: CALL_OW 251
14822: PPUSH
14823: LD_VAR 0 1
14827: PPUSH
14828: CALL_OW 254
14832: PPUSH
14833: CALL_OW 205
// end ; end ;
14837: PPOPN 1
14839: END
// var BuildList , BuildInList ; every 0 0$9.6 do
14840: GO 14842
14842: DISABLE
// begin BuildList = FilterAllUnits ( [ f_side , 1 ] ) ;
14843: LD_ADDR_LOC 40
14847: PUSH
14848: LD_INT 22
14850: PUSH
14851: LD_INT 1
14853: PUSH
14854: EMPTY
14855: LIST
14856: LIST
14857: PPUSH
14858: CALL_OW 69
14862: ST_TO_ADDR
// for BuildInList in BuildList do
14863: LD_ADDR_LOC 41
14867: PUSH
14868: LD_LOC 40
14872: PUSH
14873: FOR_IN
14874: IFFALSE 14967
// begin if GetSide ( BuildInList ) = 1 and ( GetBtype ( BuildInList ) = b_workshop or GetBtype ( BuildInList ) = b_depot or GetBtype ( BuildInList ) = b_armoury ) and ContactTime ( [ 1 , 4 ] ) > 0 0$5 then
14876: LD_LOC 41
14880: PPUSH
14881: CALL_OW 255
14885: PUSH
14886: LD_INT 1
14888: EQUAL
14889: PUSH
14890: LD_LOC 41
14894: PPUSH
14895: CALL_OW 266
14899: PUSH
14900: LD_INT 2
14902: EQUAL
14903: PUSH
14904: LD_LOC 41
14908: PPUSH
14909: CALL_OW 266
14913: PUSH
14914: LD_INT 0
14916: EQUAL
14917: OR
14918: PUSH
14919: LD_LOC 41
14923: PPUSH
14924: CALL_OW 266
14928: PUSH
14929: LD_INT 4
14931: EQUAL
14932: OR
14933: AND
14934: PUSH
14935: LD_INT 1
14937: PUSH
14938: LD_INT 4
14940: PUSH
14941: EMPTY
14942: LIST
14943: LIST
14944: PPUSH
14945: CALL_OW 462
14949: PUSH
14950: LD_INT 175
14952: GREATER
14953: AND
14954: IFFALSE 14965
// ComUpgrade ( BuildInList ) ;
14956: LD_LOC 41
14960: PPUSH
14961: CALL_OW 146
// end ;
14965: GO 14873
14967: POP
14968: POP
// end ; end_of_file
14969: END
// var list , UnitInList ; export function ReAssignID ( un ) ; begin
14970: LD_INT 0
14972: PPUSH
// List = FilterAllUnits ( [ f_side , 1 ] ) ;
14973: LD_ADDR_LOC 42
14977: PUSH
14978: LD_INT 22
14980: PUSH
14981: LD_INT 1
14983: PUSH
14984: EMPTY
14985: LIST
14986: LIST
14987: PPUSH
14988: CALL_OW 69
14992: ST_TO_ADDR
// for UnitInList in List do
14993: LD_ADDR_LOC 43
14997: PUSH
14998: LD_LOC 42
15002: PUSH
15003: FOR_IN
15004: IFFALSE 15233
// begin if getX ( UnitInList ) = 132 and GetY ( UnitInList ) = 24 then
15006: LD_LOC 43
15010: PPUSH
15011: CALL_OW 250
15015: PUSH
15016: LD_INT 132
15018: EQUAL
15019: PUSH
15020: LD_LOC 43
15024: PPUSH
15025: CALL_OW 251
15029: PUSH
15030: LD_INT 24
15032: EQUAL
15033: AND
15034: IFFALSE 15046
// LoyalGun1 = un ;
15036: LD_ADDR_EXP 53
15040: PUSH
15041: LD_VAR 0 1
15045: ST_TO_ADDR
// if getX ( UnitInList ) = 132 and GetY ( UnitInList ) = 27 then
15046: LD_LOC 43
15050: PPUSH
15051: CALL_OW 250
15055: PUSH
15056: LD_INT 132
15058: EQUAL
15059: PUSH
15060: LD_LOC 43
15064: PPUSH
15065: CALL_OW 251
15069: PUSH
15070: LD_INT 27
15072: EQUAL
15073: AND
15074: IFFALSE 15086
// LoyalGun2 = un ;
15076: LD_ADDR_EXP 54
15080: PUSH
15081: LD_VAR 0 1
15085: ST_TO_ADDR
// if getX ( UnitInList ) = 134 and GetY ( UnitInList ) = 30 then
15086: LD_LOC 43
15090: PPUSH
15091: CALL_OW 250
15095: PUSH
15096: LD_INT 134
15098: EQUAL
15099: PUSH
15100: LD_LOC 43
15104: PPUSH
15105: CALL_OW 251
15109: PUSH
15110: LD_INT 30
15112: EQUAL
15113: AND
15114: IFFALSE 15126
// LoyalGun3 = un ;
15116: LD_ADDR_EXP 55
15120: PUSH
15121: LD_VAR 0 1
15125: ST_TO_ADDR
// if getbType ( UnitInList ) = b_armoury then
15126: LD_LOC 43
15130: PPUSH
15131: CALL_OW 266
15135: PUSH
15136: LD_INT 4
15138: EQUAL
15139: IFFALSE 15151
// AmBar = un ;
15141: LD_ADDR_EXP 57
15145: PUSH
15146: LD_VAR 0 1
15150: ST_TO_ADDR
// if getX ( UnitInList ) = 148 and GetY ( UnitInList ) = 7 then
15151: LD_LOC 43
15155: PPUSH
15156: CALL_OW 250
15160: PUSH
15161: LD_INT 148
15163: EQUAL
15164: PUSH
15165: LD_LOC 43
15169: PPUSH
15170: CALL_OW 251
15174: PUSH
15175: LD_INT 7
15177: EQUAL
15178: AND
15179: IFFALSE 15191
// AmFac1 = un ;
15181: LD_ADDR_EXP 64
15185: PUSH
15186: LD_VAR 0 1
15190: ST_TO_ADDR
// if getX ( UnitInList ) = 151 and GetY ( UnitInList ) = 38 then
15191: LD_LOC 43
15195: PPUSH
15196: CALL_OW 250
15200: PUSH
15201: LD_INT 151
15203: EQUAL
15204: PUSH
15205: LD_LOC 43
15209: PPUSH
15210: CALL_OW 251
15214: PUSH
15215: LD_INT 38
15217: EQUAL
15218: AND
15219: IFFALSE 15231
// AmFac2 = un ;
15221: LD_ADDR_EXP 65
15225: PUSH
15226: LD_VAR 0 1
15230: ST_TO_ADDR
// end ;
15231: GO 15003
15233: POP
15234: POP
// end ; end_of_file
15235: LD_VAR 0 2
15239: RET
// export LoyalGun1 , LoyalGun2 , LoyalGun3 , Autogun , AmBar , CowardGun1 , CowardGun2 , CowardGun3 , CowardGun4 , AmLab1 , AmLab2 , AmFac1 , AmFac2 , BlueBase , ExtUnit , PowerUnit , MiscUnit , Loyal1 , Loyal2 , Loyal3 , Loyal4 , LoyalMech1 , LoyalMech2 , LoyalDoc , LoyalEng1 , LoyalEng2 , LoyalEng3 , LoyalEng4 ; export function LoyalPeople ; begin
15240: LD_INT 0
15242: PPUSH
// uc_side = 1 ;
15243: LD_ADDR_OWVAR 20
15247: PUSH
15248: LD_INT 1
15250: ST_TO_ADDR
// uc_nation = 1 ;
15251: LD_ADDR_OWVAR 21
15255: PUSH
15256: LD_INT 1
15258: ST_TO_ADDR
// hc_class = 1 ;
15259: LD_ADDR_OWVAR 28
15263: PUSH
15264: LD_INT 1
15266: ST_TO_ADDR
// hc_attr = [ 15 , 10 ] ;
15267: LD_ADDR_OWVAR 29
15271: PUSH
15272: LD_INT 15
15274: PUSH
15275: LD_INT 10
15277: PUSH
15278: EMPTY
15279: LIST
15280: LIST
15281: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15282: LD_ADDR_OWVAR 30
15286: PUSH
15287: LD_INT 4
15289: PUSH
15290: LD_OWVAR 67
15294: PLUS
15295: PPUSH
15296: LD_INT 10
15298: PPUSH
15299: CALL_OW 12
15303: PUSH
15304: LD_INT 3
15306: PPUSH
15307: LD_INT 6
15309: PPUSH
15310: CALL_OW 12
15314: PUSH
15315: LD_INT 3
15317: PPUSH
15318: LD_INT 6
15320: PPUSH
15321: CALL_OW 12
15325: PUSH
15326: LD_INT 1
15328: PPUSH
15329: LD_INT 5
15331: PPUSH
15332: CALL_OW 12
15336: PUSH
15337: EMPTY
15338: LIST
15339: LIST
15340: LIST
15341: LIST
15342: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15343: LD_ADDR_OWVAR 27
15347: PUSH
15348: LD_INT 1
15350: PPUSH
15351: LD_INT 2
15353: PPUSH
15354: CALL_OW 12
15358: ST_TO_ADDR
// Loyal1 = CreateHuman ;
15359: LD_ADDR_EXP 70
15363: PUSH
15364: CALL_OW 44
15368: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15369: LD_ADDR_OWVAR 30
15373: PUSH
15374: LD_INT 4
15376: PUSH
15377: LD_OWVAR 67
15381: PLUS
15382: PPUSH
15383: LD_INT 10
15385: PPUSH
15386: CALL_OW 12
15390: PUSH
15391: LD_INT 3
15393: PPUSH
15394: LD_INT 6
15396: PPUSH
15397: CALL_OW 12
15401: PUSH
15402: LD_INT 3
15404: PPUSH
15405: LD_INT 6
15407: PPUSH
15408: CALL_OW 12
15412: PUSH
15413: LD_INT 1
15415: PPUSH
15416: LD_INT 5
15418: PPUSH
15419: CALL_OW 12
15423: PUSH
15424: EMPTY
15425: LIST
15426: LIST
15427: LIST
15428: LIST
15429: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15430: LD_ADDR_OWVAR 27
15434: PUSH
15435: LD_INT 1
15437: PPUSH
15438: LD_INT 2
15440: PPUSH
15441: CALL_OW 12
15445: ST_TO_ADDR
// Loyal2 = CreateHuman ;
15446: LD_ADDR_EXP 71
15450: PUSH
15451: CALL_OW 44
15455: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15456: LD_ADDR_OWVAR 30
15460: PUSH
15461: LD_INT 4
15463: PUSH
15464: LD_OWVAR 67
15468: PLUS
15469: PPUSH
15470: LD_INT 10
15472: PPUSH
15473: CALL_OW 12
15477: PUSH
15478: LD_INT 3
15480: PPUSH
15481: LD_INT 6
15483: PPUSH
15484: CALL_OW 12
15488: PUSH
15489: LD_INT 3
15491: PPUSH
15492: LD_INT 6
15494: PPUSH
15495: CALL_OW 12
15499: PUSH
15500: LD_INT 1
15502: PPUSH
15503: LD_INT 5
15505: PPUSH
15506: CALL_OW 12
15510: PUSH
15511: EMPTY
15512: LIST
15513: LIST
15514: LIST
15515: LIST
15516: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15517: LD_ADDR_OWVAR 27
15521: PUSH
15522: LD_INT 1
15524: PPUSH
15525: LD_INT 2
15527: PPUSH
15528: CALL_OW 12
15532: ST_TO_ADDR
// Loyal3 = CreateHuman ;
15533: LD_ADDR_EXP 72
15537: PUSH
15538: CALL_OW 44
15542: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15543: LD_ADDR_OWVAR 30
15547: PUSH
15548: LD_INT 4
15550: PUSH
15551: LD_OWVAR 67
15555: PLUS
15556: PPUSH
15557: LD_INT 10
15559: PPUSH
15560: CALL_OW 12
15564: PUSH
15565: LD_INT 3
15567: PPUSH
15568: LD_INT 6
15570: PPUSH
15571: CALL_OW 12
15575: PUSH
15576: LD_INT 3
15578: PPUSH
15579: LD_INT 6
15581: PPUSH
15582: CALL_OW 12
15586: PUSH
15587: LD_INT 1
15589: PPUSH
15590: LD_INT 5
15592: PPUSH
15593: CALL_OW 12
15597: PUSH
15598: EMPTY
15599: LIST
15600: LIST
15601: LIST
15602: LIST
15603: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15604: LD_ADDR_OWVAR 27
15608: PUSH
15609: LD_INT 1
15611: PPUSH
15612: LD_INT 2
15614: PPUSH
15615: CALL_OW 12
15619: ST_TO_ADDR
// Loyal4 = CreateHuman ;
15620: LD_ADDR_EXP 73
15624: PUSH
15625: CALL_OW 44
15629: ST_TO_ADDR
// hc_class = 2 ;
15630: LD_ADDR_OWVAR 28
15634: PUSH
15635: LD_INT 2
15637: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , 9 , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15638: LD_ADDR_OWVAR 30
15642: PUSH
15643: LD_INT 4
15645: PUSH
15646: LD_OWVAR 67
15650: PLUS
15651: PPUSH
15652: LD_INT 10
15654: PPUSH
15655: CALL_OW 12
15659: PUSH
15660: LD_INT 9
15662: PUSH
15663: LD_INT 3
15665: PPUSH
15666: LD_INT 6
15668: PPUSH
15669: CALL_OW 12
15673: PUSH
15674: LD_INT 1
15676: PPUSH
15677: LD_INT 5
15679: PPUSH
15680: CALL_OW 12
15684: PUSH
15685: EMPTY
15686: LIST
15687: LIST
15688: LIST
15689: LIST
15690: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15691: LD_ADDR_OWVAR 27
15695: PUSH
15696: LD_INT 1
15698: PPUSH
15699: LD_INT 2
15701: PPUSH
15702: CALL_OW 12
15706: ST_TO_ADDR
// LoyalEng1 = CreateHuman ;
15707: LD_ADDR_EXP 77
15711: PUSH
15712: CALL_OW 44
15716: ST_TO_ADDR
// hc_attr = [ 35 , 7 ] ;
15717: LD_ADDR_OWVAR 29
15721: PUSH
15722: LD_INT 35
15724: PUSH
15725: LD_INT 7
15727: PUSH
15728: EMPTY
15729: LIST
15730: LIST
15731: ST_TO_ADDR
// hc_basic_skills = [ 10 , 10 , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15732: LD_ADDR_OWVAR 30
15736: PUSH
15737: LD_INT 10
15739: PUSH
15740: LD_INT 10
15742: PUSH
15743: LD_INT 3
15745: PPUSH
15746: LD_INT 6
15748: PPUSH
15749: CALL_OW 12
15753: PUSH
15754: LD_INT 1
15756: PPUSH
15757: LD_INT 5
15759: PPUSH
15760: CALL_OW 12
15764: PUSH
15765: EMPTY
15766: LIST
15767: LIST
15768: LIST
15769: LIST
15770: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15771: LD_ADDR_OWVAR 27
15775: PUSH
15776: LD_INT 1
15778: PPUSH
15779: LD_INT 2
15781: PPUSH
15782: CALL_OW 12
15786: ST_TO_ADDR
// LoyalEng2 = CreateHuman ;
15787: LD_ADDR_EXP 78
15791: PUSH
15792: CALL_OW 44
15796: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
15797: LD_ADDR_OWVAR 29
15801: PUSH
15802: LD_INT 10
15804: PUSH
15805: LD_INT 12
15807: PUSH
15808: EMPTY
15809: LIST
15810: LIST
15811: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , 9 , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15812: LD_ADDR_OWVAR 30
15816: PUSH
15817: LD_INT 4
15819: PUSH
15820: LD_OWVAR 67
15824: PLUS
15825: PPUSH
15826: LD_INT 10
15828: PPUSH
15829: CALL_OW 12
15833: PUSH
15834: LD_INT 9
15836: PUSH
15837: LD_INT 3
15839: PPUSH
15840: LD_INT 6
15842: PPUSH
15843: CALL_OW 12
15847: PUSH
15848: LD_INT 1
15850: PPUSH
15851: LD_INT 5
15853: PPUSH
15854: CALL_OW 12
15858: PUSH
15859: EMPTY
15860: LIST
15861: LIST
15862: LIST
15863: LIST
15864: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15865: LD_ADDR_OWVAR 27
15869: PUSH
15870: LD_INT 1
15872: PPUSH
15873: LD_INT 2
15875: PPUSH
15876: CALL_OW 12
15880: ST_TO_ADDR
// LoyalEng3 = CreateHuman ;
15881: LD_ADDR_EXP 79
15885: PUSH
15886: CALL_OW 44
15890: ST_TO_ADDR
// hc_attr = [ 3 , 14 ] ;
15891: LD_ADDR_OWVAR 29
15895: PUSH
15896: LD_INT 3
15898: PUSH
15899: LD_INT 14
15901: PUSH
15902: EMPTY
15903: LIST
15904: LIST
15905: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , 9 , rand ( 3 , 6 ) , rand ( 1 , 5 ) ] ;
15906: LD_ADDR_OWVAR 30
15910: PUSH
15911: LD_INT 4
15913: PUSH
15914: LD_OWVAR 67
15918: PLUS
15919: PPUSH
15920: LD_INT 10
15922: PPUSH
15923: CALL_OW 12
15927: PUSH
15928: LD_INT 9
15930: PUSH
15931: LD_INT 3
15933: PPUSH
15934: LD_INT 6
15936: PPUSH
15937: CALL_OW 12
15941: PUSH
15942: LD_INT 1
15944: PPUSH
15945: LD_INT 5
15947: PPUSH
15948: CALL_OW 12
15952: PUSH
15953: EMPTY
15954: LIST
15955: LIST
15956: LIST
15957: LIST
15958: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
15959: LD_ADDR_OWVAR 27
15963: PUSH
15964: LD_INT 1
15966: PPUSH
15967: LD_INT 2
15969: PPUSH
15970: CALL_OW 12
15974: ST_TO_ADDR
// LoyalEng4 = CreateHuman ;
15975: LD_ADDR_EXP 80
15979: PUSH
15980: CALL_OW 44
15984: ST_TO_ADDR
// hc_attr = [ 15 , 10 ] ;
15985: LD_ADDR_OWVAR 29
15989: PUSH
15990: LD_INT 15
15992: PUSH
15993: LD_INT 10
15995: PUSH
15996: EMPTY
15997: LIST
15998: LIST
15999: ST_TO_ADDR
// hc_class = 3 ;
16000: LD_ADDR_OWVAR 28
16004: PUSH
16005: LD_INT 3
16007: ST_TO_ADDR
// hc_basic_skills = [ rand ( difficulty , 3 + difficulty ) , rand ( 3 , 6 ) , rand ( 7 , 10 ) , rand ( 1 , 5 ) ] ;
16008: LD_ADDR_OWVAR 30
16012: PUSH
16013: LD_OWVAR 67
16017: PPUSH
16018: LD_INT 3
16020: PUSH
16021: LD_OWVAR 67
16025: PLUS
16026: PPUSH
16027: CALL_OW 12
16031: PUSH
16032: LD_INT 3
16034: PPUSH
16035: LD_INT 6
16037: PPUSH
16038: CALL_OW 12
16042: PUSH
16043: LD_INT 7
16045: PPUSH
16046: LD_INT 10
16048: PPUSH
16049: CALL_OW 12
16053: PUSH
16054: LD_INT 1
16056: PPUSH
16057: LD_INT 5
16059: PPUSH
16060: CALL_OW 12
16064: PUSH
16065: EMPTY
16066: LIST
16067: LIST
16068: LIST
16069: LIST
16070: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
16071: LD_ADDR_OWVAR 27
16075: PUSH
16076: LD_INT 1
16078: PPUSH
16079: LD_INT 2
16081: PPUSH
16082: CALL_OW 12
16086: ST_TO_ADDR
// LoyalMech1 = CreateHuman ;
16087: LD_ADDR_EXP 74
16091: PUSH
16092: CALL_OW 44
16096: ST_TO_ADDR
// hc_basic_skills = [ rand ( difficulty , 3 + difficulty ) , rand ( 3 , 6 ) , rand ( 7 , 10 ) , rand ( 1 , 5 ) ] ;
16097: LD_ADDR_OWVAR 30
16101: PUSH
16102: LD_OWVAR 67
16106: PPUSH
16107: LD_INT 3
16109: PUSH
16110: LD_OWVAR 67
16114: PLUS
16115: PPUSH
16116: CALL_OW 12
16120: PUSH
16121: LD_INT 3
16123: PPUSH
16124: LD_INT 6
16126: PPUSH
16127: CALL_OW 12
16131: PUSH
16132: LD_INT 7
16134: PPUSH
16135: LD_INT 10
16137: PPUSH
16138: CALL_OW 12
16142: PUSH
16143: LD_INT 1
16145: PPUSH
16146: LD_INT 5
16148: PPUSH
16149: CALL_OW 12
16153: PUSH
16154: EMPTY
16155: LIST
16156: LIST
16157: LIST
16158: LIST
16159: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
16160: LD_ADDR_OWVAR 27
16164: PUSH
16165: LD_INT 1
16167: PPUSH
16168: LD_INT 2
16170: PPUSH
16171: CALL_OW 12
16175: ST_TO_ADDR
// LoyalMech2 = CreateHuman ;
16176: LD_ADDR_EXP 75
16180: PUSH
16181: CALL_OW 44
16185: ST_TO_ADDR
// hc_class = 4 ;
16186: LD_ADDR_OWVAR 28
16190: PUSH
16191: LD_INT 4
16193: ST_TO_ADDR
// hc_basic_skills = [ rand ( 4 + difficulty , 10 ) , rand ( 3 , 6 ) , rand ( 3 , 6 ) , 7 + difficulty ] ;
16194: LD_ADDR_OWVAR 30
16198: PUSH
16199: LD_INT 4
16201: PUSH
16202: LD_OWVAR 67
16206: PLUS
16207: PPUSH
16208: LD_INT 10
16210: PPUSH
16211: CALL_OW 12
16215: PUSH
16216: LD_INT 3
16218: PPUSH
16219: LD_INT 6
16221: PPUSH
16222: CALL_OW 12
16226: PUSH
16227: LD_INT 3
16229: PPUSH
16230: LD_INT 6
16232: PPUSH
16233: CALL_OW 12
16237: PUSH
16238: LD_INT 7
16240: PUSH
16241: LD_OWVAR 67
16245: PLUS
16246: PUSH
16247: EMPTY
16248: LIST
16249: LIST
16250: LIST
16251: LIST
16252: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
16253: LD_ADDR_OWVAR 27
16257: PUSH
16258: LD_INT 1
16260: PPUSH
16261: LD_INT 2
16263: PPUSH
16264: CALL_OW 12
16268: ST_TO_ADDR
// LoyalDoc = CreateHuman ;
16269: LD_ADDR_EXP 76
16273: PUSH
16274: CALL_OW 44
16278: ST_TO_ADDR
// wait ( 0 0$1 ) ;
16279: LD_INT 35
16281: PPUSH
16282: CALL_OW 67
// PlaceUnitArea ( Loyal1 , LoyalSetupZone , false ) ;
16286: LD_EXP 70
16290: PPUSH
16291: LD_INT 7
16293: PPUSH
16294: LD_INT 0
16296: PPUSH
16297: CALL_OW 49
// PlaceUnitArea ( Loyal2 , LoyalSetupZone , false ) ;
16301: LD_EXP 71
16305: PPUSH
16306: LD_INT 7
16308: PPUSH
16309: LD_INT 0
16311: PPUSH
16312: CALL_OW 49
// PlaceUnitArea ( Loyal3 , LoyalSetupZone , false ) ;
16316: LD_EXP 72
16320: PPUSH
16321: LD_INT 7
16323: PPUSH
16324: LD_INT 0
16326: PPUSH
16327: CALL_OW 49
// PlaceUnitArea ( Loyal4 , LoyalSetupZone , false ) ;
16331: LD_EXP 73
16335: PPUSH
16336: LD_INT 7
16338: PPUSH
16339: LD_INT 0
16341: PPUSH
16342: CALL_OW 49
// PlaceUnitArea ( LoyalEng1 , LoyalSetupZone , false ) ;
16346: LD_EXP 77
16350: PPUSH
16351: LD_INT 7
16353: PPUSH
16354: LD_INT 0
16356: PPUSH
16357: CALL_OW 49
// PlaceUnitArea ( LoyalEng2 , LoyalSetupZone , false ) ;
16361: LD_EXP 78
16365: PPUSH
16366: LD_INT 7
16368: PPUSH
16369: LD_INT 0
16371: PPUSH
16372: CALL_OW 49
// PlaceUnitArea ( LoyalEng3 , LoyalSetupZone , false ) ;
16376: LD_EXP 79
16380: PPUSH
16381: LD_INT 7
16383: PPUSH
16384: LD_INT 0
16386: PPUSH
16387: CALL_OW 49
// PlaceUnitArea ( LoyalEng4 , LoyalSetupZone , false ) ;
16391: LD_EXP 80
16395: PPUSH
16396: LD_INT 7
16398: PPUSH
16399: LD_INT 0
16401: PPUSH
16402: CALL_OW 49
// PlaceUnitArea ( LoyalMech1 , LoyalSetupZone , false ) ;
16406: LD_EXP 74
16410: PPUSH
16411: LD_INT 7
16413: PPUSH
16414: LD_INT 0
16416: PPUSH
16417: CALL_OW 49
// PlaceUnitArea ( LoyalMech2 , LoyalSetupZone , false ) ;
16421: LD_EXP 75
16425: PPUSH
16426: LD_INT 7
16428: PPUSH
16429: LD_INT 0
16431: PPUSH
16432: CALL_OW 49
// PlaceUnitArea ( LoyalDoc , LoyalSetupZone , false ) ;
16436: LD_EXP 76
16440: PPUSH
16441: LD_INT 7
16443: PPUSH
16444: LD_INT 0
16446: PPUSH
16447: CALL_OW 49
// end ;
16451: LD_VAR 0 1
16455: RET
// export function LoyalBuildings ; begin
16456: LD_INT 0
16458: PPUSH
// uc_nation = 1 ;
16459: LD_ADDR_OWVAR 21
16463: PUSH
16464: LD_INT 1
16466: ST_TO_ADDR
// uc_side = 1 ;
16467: LD_ADDR_OWVAR 20
16471: PUSH
16472: LD_INT 1
16474: ST_TO_ADDR
// uc_direction = 5 ;
16475: LD_ADDR_OWVAR 24
16479: PUSH
16480: LD_INT 5
16482: ST_TO_ADDR
// bc_level = 10 ;
16483: LD_ADDR_OWVAR 43
16487: PUSH
16488: LD_INT 10
16490: ST_TO_ADDR
// bc_type = 1 ;
16491: LD_ADDR_OWVAR 42
16495: PUSH
16496: LD_INT 1
16498: ST_TO_ADDR
// BlueBase = CreateAndPlaceBuildingXYD ( 146 , 22 , 5 ) ;
16499: LD_ADDR_EXP 66
16503: PUSH
16504: LD_INT 146
16506: PPUSH
16507: LD_INT 22
16509: PPUSH
16510: LD_INT 5
16512: PPUSH
16513: CALL_OW 47
16517: ST_TO_ADDR
// bc_type = b_lab_full ;
16518: LD_ADDR_OWVAR 42
16522: PUSH
16523: LD_INT 8
16525: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
16526: LD_ADDR_OWVAR 44
16530: PUSH
16531: LD_INT 10
16533: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
16534: LD_ADDR_OWVAR 45
16538: PUSH
16539: LD_INT 12
16541: ST_TO_ADDR
// uc_direction = 3 ;
16542: LD_ADDR_OWVAR 24
16546: PUSH
16547: LD_INT 3
16549: ST_TO_ADDR
// AmLab1 = CreateAndPlaceBuildingXYD ( 143 , 11 , 2 ) ;
16550: LD_ADDR_EXP 62
16554: PUSH
16555: LD_INT 143
16557: PPUSH
16558: LD_INT 11
16560: PPUSH
16561: LD_INT 2
16563: PPUSH
16564: CALL_OW 47
16568: ST_TO_ADDR
// bc_kind1 = b_lab_opto ;
16569: LD_ADDR_OWVAR 44
16573: PUSH
16574: LD_INT 15
16576: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
16577: LD_ADDR_OWVAR 45
16581: PUSH
16582: LD_INT 11
16584: ST_TO_ADDR
// uc_direction = 4 ;
16585: LD_ADDR_OWVAR 24
16589: PUSH
16590: LD_INT 4
16592: ST_TO_ADDR
// AmLab2 = CreateAndPlaceBuildingXYD ( 139 , 4 , 4 ) ;
16593: LD_ADDR_EXP 63
16597: PUSH
16598: LD_INT 139
16600: PPUSH
16601: LD_INT 4
16603: PPUSH
16604: LD_INT 4
16606: PPUSH
16607: CALL_OW 47
16611: ST_TO_ADDR
// bc_type = b_ext_track ;
16612: LD_ADDR_OWVAR 42
16616: PUSH
16617: LD_INT 16
16619: ST_TO_ADDR
// uc_direction = 3 ;
16620: LD_ADDR_OWVAR 24
16624: PUSH
16625: LD_INT 3
16627: ST_TO_ADDR
// uc_direction = 3 ;
16628: LD_ADDR_OWVAR 24
16632: PUSH
16633: LD_INT 3
16635: ST_TO_ADDR
// bc_level = 20 ;
16636: LD_ADDR_OWVAR 43
16640: PUSH
16641: LD_INT 20
16643: ST_TO_ADDR
// bc_type = b_barracks ;
16644: LD_ADDR_OWVAR 42
16648: PUSH
16649: LD_INT 5
16651: ST_TO_ADDR
// AmBar = CreateAndPlaceBuildingXYD ( 141 , 29 , 3 ) ;
16652: LD_ADDR_EXP 57
16656: PUSH
16657: LD_INT 141
16659: PPUSH
16660: LD_INT 29
16662: PPUSH
16663: LD_INT 3
16665: PPUSH
16666: CALL_OW 47
16670: ST_TO_ADDR
// bc_type = b_factory ;
16671: LD_ADDR_OWVAR 42
16675: PUSH
16676: LD_INT 3
16678: ST_TO_ADDR
// AmFac1 = CreateAndPlaceBuildingXYD ( 148 , 7 , 3 ) ;
16679: LD_ADDR_EXP 64
16683: PUSH
16684: LD_INT 148
16686: PPUSH
16687: LD_INT 7
16689: PPUSH
16690: LD_INT 3
16692: PPUSH
16693: CALL_OW 47
16697: ST_TO_ADDR
// AmFac2 = CreateAndPlaceBuildingXYD ( 151 , 38 , 4 ) ;
16698: LD_ADDR_EXP 65
16702: PUSH
16703: LD_INT 151
16705: PPUSH
16706: LD_INT 38
16708: PPUSH
16709: LD_INT 4
16711: PPUSH
16712: CALL_OW 47
16716: ST_TO_ADDR
// bc_type = b_ext_siberium ;
16717: LD_ADDR_OWVAR 42
16721: PUSH
16722: LD_INT 21
16724: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 152 , 11 , 5 ) ;
16725: LD_ADDR_EXP 67
16729: PUSH
16730: LD_INT 152
16732: PPUSH
16733: LD_INT 11
16735: PPUSH
16736: LD_INT 5
16738: PPUSH
16739: CALL_OW 47
16743: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 151 , 35 , 3 ) ;
16744: LD_ADDR_EXP 67
16748: PUSH
16749: LD_INT 151
16751: PPUSH
16752: LD_INT 35
16754: PPUSH
16755: LD_INT 3
16757: PPUSH
16758: CALL_OW 47
16762: ST_TO_ADDR
// bc_type = b_ext_computer ;
16763: LD_ADDR_OWVAR 42
16767: PUSH
16768: LD_INT 24
16770: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 151 , 7 , 4 ) ;
16771: LD_ADDR_EXP 67
16775: PUSH
16776: LD_INT 151
16778: PPUSH
16779: LD_INT 7
16781: PPUSH
16782: LD_INT 4
16784: PPUSH
16785: CALL_OW 47
16789: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 155 , 38 , 4 ) ;
16790: LD_ADDR_EXP 67
16794: PUSH
16795: LD_INT 155
16797: PPUSH
16798: LD_INT 38
16800: PPUSH
16801: LD_INT 4
16803: PPUSH
16804: CALL_OW 47
16808: ST_TO_ADDR
// bc_type = b_ext_track ;
16809: LD_ADDR_OWVAR 42
16813: PUSH
16814: LD_INT 16
16816: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 145 , 4 , 2 ) ;
16817: LD_ADDR_EXP 67
16821: PUSH
16822: LD_INT 145
16824: PPUSH
16825: LD_INT 4
16827: PPUSH
16828: LD_INT 2
16830: PPUSH
16831: CALL_OW 47
16835: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 151 , 42 , 0 ) ;
16836: LD_ADDR_EXP 67
16840: PUSH
16841: LD_INT 151
16843: PPUSH
16844: LD_INT 42
16846: PPUSH
16847: LD_INT 0
16849: PPUSH
16850: CALL_OW 47
16854: ST_TO_ADDR
// bc_type = b_ext_rocket ;
16855: LD_ADDR_OWVAR 42
16859: PUSH
16860: LD_INT 18
16862: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 154 , 41 , 5 ) ;
16863: LD_ADDR_EXP 67
16867: PUSH
16868: LD_INT 154
16870: PPUSH
16871: LD_INT 41
16873: PPUSH
16874: LD_INT 5
16876: PPUSH
16877: CALL_OW 47
16881: ST_TO_ADDR
// bc_type = b_ext_laser ;
16882: LD_ADDR_OWVAR 42
16886: PUSH
16887: LD_INT 25
16889: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 144 , 7 , 1 ) ;
16890: LD_ADDR_EXP 67
16894: PUSH
16895: LD_INT 144
16897: PPUSH
16898: LD_INT 7
16900: PPUSH
16901: LD_INT 1
16903: PPUSH
16904: CALL_OW 47
16908: ST_TO_ADDR
// bc_type = b_ext_gun ;
16909: LD_ADDR_OWVAR 42
16913: PUSH
16914: LD_INT 17
16916: ST_TO_ADDR
// ExtUnit = CreateAndPlaceBuildingXYD ( 148 , 3 , 3 ) ;
16917: LD_ADDR_EXP 67
16921: PUSH
16922: LD_INT 148
16924: PPUSH
16925: LD_INT 3
16927: PPUSH
16928: LD_INT 3
16930: PPUSH
16931: CALL_OW 47
16935: ST_TO_ADDR
// uc_direction = 5 ;
16936: LD_ADDR_OWVAR 24
16940: PUSH
16941: LD_INT 5
16943: ST_TO_ADDR
// bc_level = 10 ;
16944: LD_ADDR_OWVAR 43
16948: PUSH
16949: LD_INT 10
16951: ST_TO_ADDR
// bc_type = b_bunker ;
16952: LD_ADDR_OWVAR 42
16956: PUSH
16957: LD_INT 32
16959: ST_TO_ADDR
// CowardGun1 = CreateAndPlaceBuildingXYD ( 158 , 20 , 5 ) ;
16960: LD_ADDR_EXP 58
16964: PUSH
16965: LD_INT 158
16967: PPUSH
16968: LD_INT 20
16970: PPUSH
16971: LD_INT 5
16973: PPUSH
16974: CALL_OW 47
16978: ST_TO_ADDR
// CowardGun2 = CreateAndPlaceBuildingXYD ( 155 , 22 , 5 ) ;
16979: LD_ADDR_EXP 59
16983: PUSH
16984: LD_INT 155
16986: PPUSH
16987: LD_INT 22
16989: PPUSH
16990: LD_INT 5
16992: PPUSH
16993: CALL_OW 47
16997: ST_TO_ADDR
// CowardGun3 = CreateAndPlaceBuildingXYD ( 134 , 11 , 1 ) ;
16998: LD_ADDR_EXP 60
17002: PUSH
17003: LD_INT 134
17005: PPUSH
17006: LD_INT 11
17008: PPUSH
17009: LD_INT 1
17011: PPUSH
17012: CALL_OW 47
17016: ST_TO_ADDR
// CowardGun4 = CreateAndPlaceBuildingXYD ( 140 , 21 , 1 ) ;
17017: LD_ADDR_EXP 61
17021: PUSH
17022: LD_INT 140
17024: PPUSH
17025: LD_INT 21
17027: PPUSH
17028: LD_INT 1
17030: PPUSH
17031: CALL_OW 47
17035: ST_TO_ADDR
// bc_level = 15 ;
17036: LD_ADDR_OWVAR 43
17040: PUSH
17041: LD_INT 15
17043: ST_TO_ADDR
// LoyalGun1 = CreateAndPlaceBuildingXYD ( 132 , 24 , 2 ) ;
17044: LD_ADDR_EXP 53
17048: PUSH
17049: LD_INT 132
17051: PPUSH
17052: LD_INT 24
17054: PPUSH
17055: LD_INT 2
17057: PPUSH
17058: CALL_OW 47
17062: ST_TO_ADDR
// LoyalGun2 = CreateAndPlaceBuildingXYD ( 132 , 27 , 1 ) ;
17063: LD_ADDR_EXP 54
17067: PUSH
17068: LD_INT 132
17070: PPUSH
17071: LD_INT 27
17073: PPUSH
17074: LD_INT 1
17076: PPUSH
17077: CALL_OW 47
17081: ST_TO_ADDR
// LoyalGun3 = CreateAndPlaceBuildingXYD ( 134 , 30 , 1 ) ;
17082: LD_ADDR_EXP 55
17086: PUSH
17087: LD_INT 134
17089: PPUSH
17090: LD_INT 30
17092: PPUSH
17093: LD_INT 1
17095: PPUSH
17096: CALL_OW 47
17100: ST_TO_ADDR
// bc_type = b_turret ;
17101: LD_ADDR_OWVAR 42
17105: PUSH
17106: LD_INT 33
17108: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 142 , 40 , 0 ) ;
17109: LD_ADDR_EXP 56
17113: PUSH
17114: LD_INT 142
17116: PPUSH
17117: LD_INT 40
17119: PPUSH
17120: LD_INT 0
17122: PPUSH
17123: CALL_OW 47
17127: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 147 , 45 , 0 ) ;
17128: LD_ADDR_EXP 56
17132: PUSH
17133: LD_INT 147
17135: PPUSH
17136: LD_INT 45
17138: PPUSH
17139: LD_INT 0
17141: PPUSH
17142: CALL_OW 47
17146: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 149 , 48 , 0 ) ;
17147: LD_ADDR_EXP 56
17151: PUSH
17152: LD_INT 149
17154: PPUSH
17155: LD_INT 48
17157: PPUSH
17158: LD_INT 0
17160: PPUSH
17161: CALL_OW 47
17165: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 155 , 17 , 0 ) ;
17166: LD_ADDR_EXP 56
17170: PUSH
17171: LD_INT 155
17173: PPUSH
17174: LD_INT 17
17176: PPUSH
17177: LD_INT 0
17179: PPUSH
17180: CALL_OW 47
17184: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 152 , 21 , 4 ) ;
17185: LD_ADDR_EXP 56
17189: PUSH
17190: LD_INT 152
17192: PPUSH
17193: LD_INT 21
17195: PPUSH
17196: LD_INT 4
17198: PPUSH
17199: CALL_OW 47
17203: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 137 , 14 , 1 ) ;
17204: LD_ADDR_EXP 56
17208: PUSH
17209: LD_INT 137
17211: PPUSH
17212: LD_INT 14
17214: PPUSH
17215: LD_INT 1
17217: PPUSH
17218: CALL_OW 47
17222: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 180 , 52 , 0 ) ;
17223: LD_ADDR_EXP 56
17227: PUSH
17228: LD_INT 180
17230: PPUSH
17231: LD_INT 52
17233: PPUSH
17234: LD_INT 0
17236: PPUSH
17237: CALL_OW 47
17241: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 179 , 49 , 0 ) ;
17242: LD_ADDR_EXP 56
17246: PUSH
17247: LD_INT 179
17249: PPUSH
17250: LD_INT 49
17252: PPUSH
17253: LD_INT 0
17255: PPUSH
17256: CALL_OW 47
17260: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 142 , 40 , 0 ) ;
17261: LD_ADDR_EXP 56
17265: PUSH
17266: LD_INT 142
17268: PPUSH
17269: LD_INT 40
17271: PPUSH
17272: LD_INT 0
17274: PPUSH
17275: CALL_OW 47
17279: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 172 , 48 , 0 ) ;
17280: LD_ADDR_EXP 56
17284: PUSH
17285: LD_INT 172
17287: PPUSH
17288: LD_INT 48
17290: PPUSH
17291: LD_INT 0
17293: PPUSH
17294: CALL_OW 47
17298: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 170 , 50 , 0 ) ;
17299: LD_ADDR_EXP 56
17303: PUSH
17304: LD_INT 170
17306: PPUSH
17307: LD_INT 50
17309: PPUSH
17310: LD_INT 0
17312: PPUSH
17313: CALL_OW 47
17317: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 173 , 51 , 0 ) ;
17318: LD_ADDR_EXP 56
17322: PUSH
17323: LD_INT 173
17325: PPUSH
17326: LD_INT 51
17328: PPUSH
17329: LD_INT 0
17331: PPUSH
17332: CALL_OW 47
17336: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 180 , 55 , 0 ) ;
17337: LD_ADDR_EXP 56
17341: PUSH
17342: LD_INT 180
17344: PPUSH
17345: LD_INT 55
17347: PPUSH
17348: LD_INT 0
17350: PPUSH
17351: CALL_OW 47
17355: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 149 , 21 , 5 ) ;
17356: LD_ADDR_EXP 56
17360: PUSH
17361: LD_INT 149
17363: PPUSH
17364: LD_INT 21
17366: PPUSH
17367: LD_INT 5
17369: PPUSH
17370: CALL_OW 47
17374: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 167 , 19 , 5 ) ;
17375: LD_ADDR_EXP 56
17379: PUSH
17380: LD_INT 167
17382: PPUSH
17383: LD_INT 19
17385: PPUSH
17386: LD_INT 5
17388: PPUSH
17389: CALL_OW 47
17393: ST_TO_ADDR
// Autogun = CreateAndPlaceBuildingXYD ( 129 , 24 , 2 ) ;
17394: LD_ADDR_EXP 56
17398: PUSH
17399: LD_INT 129
17401: PPUSH
17402: LD_INT 24
17404: PPUSH
17405: LD_INT 2
17407: PPUSH
17408: CALL_OW 47
17412: ST_TO_ADDR
// bc_type = b_oil_mine ;
17413: LD_ADDR_OWVAR 42
17417: PUSH
17418: LD_INT 29
17420: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 166 , 46 , rand ( 0 , 5 ) ) ;
17421: LD_ADDR_EXP 69
17425: PUSH
17426: LD_INT 166
17428: PPUSH
17429: LD_INT 46
17431: PPUSH
17432: LD_INT 0
17434: PPUSH
17435: LD_INT 5
17437: PPUSH
17438: CALL_OW 12
17442: PPUSH
17443: CALL_OW 47
17447: ST_TO_ADDR
// bc_type = b_oil_power ;
17448: LD_ADDR_OWVAR 42
17452: PUSH
17453: LD_INT 26
17455: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 167 , 49 , rand ( 0 , 5 ) ) ;
17456: LD_ADDR_EXP 69
17460: PUSH
17461: LD_INT 167
17463: PPUSH
17464: LD_INT 49
17466: PPUSH
17467: LD_INT 0
17469: PPUSH
17470: LD_INT 5
17472: PPUSH
17473: CALL_OW 12
17477: PPUSH
17478: CALL_OW 47
17482: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 169 , 47 , rand ( 0 , 5 ) ) ;
17483: LD_ADDR_EXP 69
17487: PUSH
17488: LD_INT 169
17490: PPUSH
17491: LD_INT 47
17493: PPUSH
17494: LD_INT 0
17496: PPUSH
17497: LD_INT 5
17499: PPUSH
17500: CALL_OW 12
17504: PPUSH
17505: CALL_OW 47
17509: ST_TO_ADDR
// bc_type = b_siberite_mine ;
17510: LD_ADDR_OWVAR 42
17514: PUSH
17515: LD_INT 30
17517: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 150 , 32 , rand ( 0 , 5 ) ) ;
17518: LD_ADDR_EXP 69
17522: PUSH
17523: LD_INT 150
17525: PPUSH
17526: LD_INT 32
17528: PPUSH
17529: LD_INT 0
17531: PPUSH
17532: LD_INT 5
17534: PPUSH
17535: CALL_OW 12
17539: PPUSH
17540: CALL_OW 47
17544: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 154 , 14 , rand ( 0 , 5 ) ) ;
17545: LD_ADDR_EXP 69
17549: PUSH
17550: LD_INT 154
17552: PPUSH
17553: LD_INT 14
17555: PPUSH
17556: LD_INT 0
17558: PPUSH
17559: LD_INT 5
17561: PPUSH
17562: CALL_OW 12
17566: PPUSH
17567: CALL_OW 47
17571: ST_TO_ADDR
// bc_type = b_siberite_power ;
17572: LD_ADDR_OWVAR 42
17576: PUSH
17577: LD_INT 28
17579: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 129 , 2 , rand ( 0 , 5 ) ) ;
17580: LD_ADDR_EXP 69
17584: PUSH
17585: LD_INT 129
17587: PPUSH
17588: LD_INT 2
17590: PPUSH
17591: LD_INT 0
17593: PPUSH
17594: LD_INT 5
17596: PPUSH
17597: CALL_OW 12
17601: PPUSH
17602: CALL_OW 47
17606: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 132 , 4 , rand ( 0 , 5 ) ) ;
17607: LD_ADDR_EXP 69
17611: PUSH
17612: LD_INT 132
17614: PPUSH
17615: LD_INT 4
17617: PPUSH
17618: LD_INT 0
17620: PPUSH
17621: LD_INT 5
17623: PPUSH
17624: CALL_OW 12
17628: PPUSH
17629: CALL_OW 47
17633: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 142 , 3 , rand ( 0 , 5 ) ) ;
17634: LD_ADDR_EXP 69
17638: PUSH
17639: LD_INT 142
17641: PPUSH
17642: LD_INT 3
17644: PPUSH
17645: LD_INT 0
17647: PPUSH
17648: LD_INT 5
17650: PPUSH
17651: CALL_OW 12
17655: PPUSH
17656: CALL_OW 47
17660: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 150 , 2 , rand ( 0 , 5 ) ) ;
17661: LD_ADDR_EXP 69
17665: PUSH
17666: LD_INT 150
17668: PPUSH
17669: LD_INT 2
17671: PPUSH
17672: LD_INT 0
17674: PPUSH
17675: LD_INT 5
17677: PPUSH
17678: CALL_OW 12
17682: PPUSH
17683: CALL_OW 47
17687: ST_TO_ADDR
// MiscUnit = CreateAndPlaceBuildingXYD ( 152 , 45 , rand ( 0 , 5 ) ) ;
17688: LD_ADDR_EXP 69
17692: PUSH
17693: LD_INT 152
17695: PPUSH
17696: LD_INT 45
17698: PPUSH
17699: LD_INT 0
17701: PPUSH
17702: LD_INT 5
17704: PPUSH
17705: CALL_OW 12
17709: PPUSH
17710: CALL_OW 47
17714: ST_TO_ADDR
// wait ( 0 0$0.5 ) ;
17715: LD_INT 18
17717: PPUSH
17718: CALL_OW 67
// SetResourceType ( GetBase ( BlueBase ) , mat_cans , 3500 + ( 1500 * difficulty ) ) ;
17722: LD_EXP 66
17726: PPUSH
17727: CALL_OW 274
17731: PPUSH
17732: LD_INT 1
17734: PPUSH
17735: LD_INT 3500
17737: PUSH
17738: LD_INT 1500
17740: PUSH
17741: LD_OWVAR 67
17745: MUL
17746: PLUS
17747: PPUSH
17748: CALL_OW 277
// wait ( 0 0$0.5 ) ;
17752: LD_INT 18
17754: PPUSH
17755: CALL_OW 67
// end ;
17759: LD_VAR 0 1
17763: RET
// export function PlaceWeapons ( ) ; begin
17764: LD_INT 0
17766: PPUSH
// AddComPlaceWeapon ( LoyalGun3 , us_rocket_launcher ) ;
17767: LD_EXP 55
17771: PPUSH
17772: LD_INT 7
17774: PPUSH
17775: CALL_OW 208
// AddComPlaceWeapon ( [ LoyalGun1 , LoyalGun2 , CowardGun1 , CowardGun2 , CowardGun3 , CowardGun4 ] , us_heavy_gun ) ;
17779: LD_EXP 53
17783: PUSH
17784: LD_EXP 54
17788: PUSH
17789: LD_EXP 58
17793: PUSH
17794: LD_EXP 59
17798: PUSH
17799: LD_EXP 60
17803: PUSH
17804: LD_EXP 61
17808: PUSH
17809: EMPTY
17810: LIST
17811: LIST
17812: LIST
17813: LIST
17814: LIST
17815: LIST
17816: PPUSH
17817: LD_INT 6
17819: PPUSH
17820: CALL_OW 208
// wait ( 0 0$30 ) ;
17824: LD_INT 1050
17826: PPUSH
17827: CALL_OW 67
// PlaceWeaponsAutoGun ( ) ;
17831: CALL 17840 0 0
// end ;
17835: LD_VAR 0 1
17839: RET
// var TurretList , Turret , i ; function PlaceWeaponsAutogun ( ) ; begin
17840: LD_INT 0
17842: PPUSH
// i = 0 ;
17843: LD_ADDR_LOC 46
17847: PUSH
17848: LD_INT 0
17850: ST_TO_ADDR
// TurretList = filterAllUnits ( [ [ f_side , 1 ] , [ f_btype = b_turret ] , [ f_bWeapon , 0 ] ] ) ;
17851: LD_ADDR_LOC 44
17855: PUSH
17856: LD_INT 22
17858: PUSH
17859: LD_INT 1
17861: PUSH
17862: EMPTY
17863: LIST
17864: LIST
17865: PUSH
17866: LD_INT 30
17868: PUSH
17869: LD_INT 33
17871: EQUAL
17872: PUSH
17873: EMPTY
17874: LIST
17875: PUSH
17876: LD_INT 35
17878: PUSH
17879: LD_INT 0
17881: PUSH
17882: EMPTY
17883: LIST
17884: LIST
17885: PUSH
17886: EMPTY
17887: LIST
17888: LIST
17889: LIST
17890: PPUSH
17891: CALL_OW 69
17895: ST_TO_ADDR
// for Turret in TurretList do
17896: LD_ADDR_LOC 45
17900: PUSH
17901: LD_LOC 44
17905: PUSH
17906: FOR_IN
17907: IFFALSE 18058
// if GetBtype ( Turret ) = b_turret and GetBWeapon ( Turret ) = 0 and i < 4 then
17909: LD_LOC 45
17913: PPUSH
17914: CALL_OW 266
17918: PUSH
17919: LD_INT 33
17921: EQUAL
17922: PUSH
17923: LD_LOC 45
17927: PPUSH
17928: CALL_OW 269
17932: PUSH
17933: LD_INT 0
17935: EQUAL
17936: AND
17937: PUSH
17938: LD_LOC 46
17942: PUSH
17943: LD_INT 4
17945: LESS
17946: AND
17947: IFFALSE 18056
// begin begin if isInArea ( Turret , ApplyLaser ) then
17949: LD_LOC 45
17953: PPUSH
17954: LD_INT 16
17956: PPUSH
17957: CALL_OW 308
17961: IFFALSE 17975
// AddComPlaceWeapon ( Turret , us_double_laser ) ;
17963: LD_LOC 45
17967: PPUSH
17968: LD_INT 10
17970: PPUSH
17971: CALL_OW 208
// if isInArea ( Turret , Applygun ) then
17975: LD_LOC 45
17979: PPUSH
17980: LD_INT 17
17982: PPUSH
17983: CALL_OW 308
17987: IFFALSE 18001
// AddComPlaceWeapon ( Turret , us_heavy_gun ) ;
17989: LD_LOC 45
17993: PPUSH
17994: LD_INT 6
17996: PPUSH
17997: CALL_OW 208
// if not ( isInArea ( Turret , Applygun ) or isInArea ( Turret , ApplyLAser ) ) then
18001: LD_LOC 45
18005: PPUSH
18006: LD_INT 17
18008: PPUSH
18009: CALL_OW 308
18013: PUSH
18014: LD_LOC 45
18018: PPUSH
18019: LD_INT 16
18021: PPUSH
18022: CALL_OW 308
18026: OR
18027: NOT
18028: IFFALSE 18042
// AddComPlaceWeapon ( Turret , us_rocket_launcher ) ;
18030: LD_LOC 45
18034: PPUSH
18035: LD_INT 7
18037: PPUSH
18038: CALL_OW 208
// end ; i = i + 1 ;
18042: LD_ADDR_LOC 46
18046: PUSH
18047: LD_LOC 46
18051: PUSH
18052: LD_INT 1
18054: PLUS
18055: ST_TO_ADDR
// end ;
18056: GO 17906
18058: POP
18059: POP
// wait ( 1 1$30 ) ;
18060: LD_INT 3150
18062: PPUSH
18063: CALL_OW 67
// TurretList = filterAllUnits ( [ [ f_side , 1 ] , [ f_btype = b_turret ] , [ f_bWeapon , 0 ] ] ) ;
18067: LD_ADDR_LOC 44
18071: PUSH
18072: LD_INT 22
18074: PUSH
18075: LD_INT 1
18077: PUSH
18078: EMPTY
18079: LIST
18080: LIST
18081: PUSH
18082: LD_INT 30
18084: PUSH
18085: LD_INT 33
18087: EQUAL
18088: PUSH
18089: EMPTY
18090: LIST
18091: PUSH
18092: LD_INT 35
18094: PUSH
18095: LD_INT 0
18097: PUSH
18098: EMPTY
18099: LIST
18100: LIST
18101: PUSH
18102: EMPTY
18103: LIST
18104: LIST
18105: LIST
18106: PPUSH
18107: CALL_OW 69
18111: ST_TO_ADDR
// if not TurretList = 0 then
18112: LD_LOC 44
18116: PUSH
18117: LD_INT 0
18119: EQUAL
18120: NOT
18121: IFFALSE 18127
// PlaceWeaponsAutogun ( ) ;
18123: CALL 17840 0 0
// end ; end_of_file
18127: LD_VAR 0 1
18131: RET
// export RuGun1 , RuGun2 , RuGun3 , RuBar , RuBase , RuFac , RuLab , RuExt , RuOil ; export function RuBuildings ( ) ; begin
18132: LD_INT 0
18134: PPUSH
// uc_side = 3 ;
18135: LD_ADDR_OWVAR 20
18139: PUSH
18140: LD_INT 3
18142: ST_TO_ADDR
// uc_nation = 3 ;
18143: LD_ADDR_OWVAR 21
18147: PUSH
18148: LD_INT 3
18150: ST_TO_ADDR
// bc_level = 20 ;
18151: LD_ADDR_OWVAR 43
18155: PUSH
18156: LD_INT 20
18158: ST_TO_ADDR
// bc_type = 0 ;
18159: LD_ADDR_OWVAR 42
18163: PUSH
18164: LD_INT 0
18166: ST_TO_ADDR
// RuBase = CreateAndPlaceBuildingXYD ( 41 , 3 , 2 ) ;
18167: LD_ADDR_EXP 85
18171: PUSH
18172: LD_INT 41
18174: PPUSH
18175: LD_INT 3
18177: PPUSH
18178: LD_INT 2
18180: PPUSH
18181: CALL_OW 47
18185: ST_TO_ADDR
// bc_type = b_Lab ;
18186: LD_ADDR_OWVAR 42
18190: PUSH
18191: LD_INT 6
18193: ST_TO_ADDR
// RuLab = CreateAndPlaceBuildingXYD ( 41 , 16 , 4 ) ;
18194: LD_ADDR_EXP 87
18198: PUSH
18199: LD_INT 41
18201: PPUSH
18202: LD_INT 16
18204: PPUSH
18205: LD_INT 4
18207: PPUSH
18208: CALL_OW 47
18212: ST_TO_ADDR
// bc_type = b_workshop ;
18213: LD_ADDR_OWVAR 42
18217: PUSH
18218: LD_INT 2
18220: ST_TO_ADDR
// RuFac = CreateAndPlaceBuildingXYD ( 35 , 5 , 2 ) ;
18221: LD_ADDR_EXP 86
18225: PUSH
18226: LD_INT 35
18228: PPUSH
18229: LD_INT 5
18231: PPUSH
18232: LD_INT 2
18234: PPUSH
18235: CALL_OW 47
18239: ST_TO_ADDR
// bc_type = b_armoury ;
18240: LD_ADDR_OWVAR 42
18244: PUSH
18245: LD_INT 4
18247: ST_TO_ADDR
// RuBar = CreateAndPlaceBuildingXYD ( 52 , 5 , 4 ) ;
18248: LD_ADDR_EXP 84
18252: PUSH
18253: LD_INT 52
18255: PPUSH
18256: LD_INT 5
18258: PPUSH
18259: LD_INT 4
18261: PPUSH
18262: CALL_OW 47
18266: ST_TO_ADDR
// bc_type = b_bunker ;
18267: LD_ADDR_OWVAR 42
18271: PUSH
18272: LD_INT 32
18274: ST_TO_ADDR
// RuGun1 = CreateAndPlaceBuildingXYD ( 48 , 2 , 3 ) ;
18275: LD_ADDR_EXP 81
18279: PUSH
18280: LD_INT 48
18282: PPUSH
18283: LD_INT 2
18285: PPUSH
18286: LD_INT 3
18288: PPUSH
18289: CALL_OW 47
18293: ST_TO_ADDR
// RuGun2 = CreateAndPlaceBuildingXYD ( 42 , 24 , 0 ) ;
18294: LD_ADDR_EXP 82
18298: PUSH
18299: LD_INT 42
18301: PPUSH
18302: LD_INT 24
18304: PPUSH
18305: LD_INT 0
18307: PPUSH
18308: CALL_OW 47
18312: ST_TO_ADDR
// RuGun3 = CreateAndPlaceBuildingXYD ( 45 , 24 , 5 ) ;
18313: LD_ADDR_EXP 83
18317: PUSH
18318: LD_INT 45
18320: PPUSH
18321: LD_INT 24
18323: PPUSH
18324: LD_INT 5
18326: PPUSH
18327: CALL_OW 47
18331: ST_TO_ADDR
// bc_type = B_oil_power ;
18332: LD_ADDR_OWVAR 42
18336: PUSH
18337: LD_INT 26
18339: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 39 , 5 , rand ( 0 , 5 ) ) ;
18340: LD_ADDR_EXP 89
18344: PUSH
18345: LD_INT 39
18347: PPUSH
18348: LD_INT 5
18350: PPUSH
18351: LD_INT 0
18353: PPUSH
18354: LD_INT 5
18356: PPUSH
18357: CALL_OW 12
18361: PPUSH
18362: CALL_OW 47
18366: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 47 , 3 , rand ( 0 , 5 ) ) ;
18367: LD_ADDR_EXP 89
18371: PUSH
18372: LD_INT 47
18374: PPUSH
18375: LD_INT 3
18377: PPUSH
18378: LD_INT 0
18380: PPUSH
18381: LD_INT 5
18383: PPUSH
18384: CALL_OW 12
18388: PPUSH
18389: CALL_OW 47
18393: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 19 , 3 , rand ( 0 , 5 ) ) ;
18394: LD_ADDR_EXP 89
18398: PUSH
18399: LD_INT 19
18401: PPUSH
18402: LD_INT 3
18404: PPUSH
18405: LD_INT 0
18407: PPUSH
18408: LD_INT 5
18410: PPUSH
18411: CALL_OW 12
18415: PPUSH
18416: CALL_OW 47
18420: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 27 , 11 , rand ( 0 , 5 ) ) ;
18421: LD_ADDR_EXP 89
18425: PUSH
18426: LD_INT 27
18428: PPUSH
18429: LD_INT 11
18431: PPUSH
18432: LD_INT 0
18434: PPUSH
18435: LD_INT 5
18437: PPUSH
18438: CALL_OW 12
18442: PPUSH
18443: CALL_OW 47
18447: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 19 , 3 , rand ( 0 , 5 ) ) ;
18448: LD_ADDR_EXP 89
18452: PUSH
18453: LD_INT 19
18455: PPUSH
18456: LD_INT 3
18458: PPUSH
18459: LD_INT 0
18461: PPUSH
18462: LD_INT 5
18464: PPUSH
18465: CALL_OW 12
18469: PPUSH
18470: CALL_OW 47
18474: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 30 , 18 , rand ( 0 , 5 ) ) ;
18475: LD_ADDR_EXP 89
18479: PUSH
18480: LD_INT 30
18482: PPUSH
18483: LD_INT 18
18485: PPUSH
18486: LD_INT 0
18488: PPUSH
18489: LD_INT 5
18491: PPUSH
18492: CALL_OW 12
18496: PPUSH
18497: CALL_OW 47
18501: ST_TO_ADDR
// RuOil = CreateAndPlaceBuildingXYD ( 44 , 21 , rand ( 0 , 5 ) ) ;
18502: LD_ADDR_EXP 89
18506: PUSH
18507: LD_INT 44
18509: PPUSH
18510: LD_INT 21
18512: PPUSH
18513: LD_INT 0
18515: PPUSH
18516: LD_INT 5
18518: PPUSH
18519: CALL_OW 12
18523: PPUSH
18524: CALL_OW 47
18528: ST_TO_ADDR
// bc_type = b_ext_Track ;
18529: LD_ADDR_OWVAR 42
18533: PUSH
18534: LD_INT 16
18536: ST_TO_ADDR
// RuExt = CreateAndPlaceBuildingXYD ( 35 , 2 , 3 ) ;
18537: LD_ADDR_EXP 88
18541: PUSH
18542: LD_INT 35
18544: PPUSH
18545: LD_INT 2
18547: PPUSH
18548: LD_INT 3
18550: PPUSH
18551: CALL_OW 47
18555: ST_TO_ADDR
// wait ( 0 0$0.5 ) ;
18556: LD_INT 18
18558: PPUSH
18559: CALL_OW 67
// SetResourceType ( GetBase ( RuBase ) , mat_cans , 500 ) ;
18563: LD_EXP 85
18567: PPUSH
18568: CALL_OW 274
18572: PPUSH
18573: LD_INT 1
18575: PPUSH
18576: LD_INT 500
18578: PPUSH
18579: CALL_OW 277
// wait ( 0 0$0.5 ) ;
18583: LD_INT 18
18585: PPUSH
18586: CALL_OW 67
// SetLives ( RuFac , 500 ) ;
18590: LD_EXP 86
18594: PPUSH
18595: LD_INT 500
18597: PPUSH
18598: CALL_OW 234
// AddComPlaceWeapon ( [ RuGun1 , RuGun2 , RuGun3 ] , ru_heavy_machine_gun ) ;
18602: LD_EXP 81
18606: PUSH
18607: LD_EXP 82
18611: PUSH
18612: LD_EXP 83
18616: PUSH
18617: EMPTY
18618: LIST
18619: LIST
18620: LIST
18621: PPUSH
18622: LD_INT 42
18624: PPUSH
18625: CALL_OW 208
// end ;
18629: LD_VAR 0 1
18633: RET
// on UpgradeComplete ( build ) do if build = RuFac then
18634: LD_VAR 0 1
18638: PUSH
18639: LD_EXP 86
18643: EQUAL
18644: IFFALSE 18697
// begin uc_side = 3 ;
18646: LD_ADDR_OWVAR 20
18650: PUSH
18651: LD_INT 3
18653: ST_TO_ADDR
// uc_nation = 3 ;
18654: LD_ADDR_OWVAR 21
18658: PUSH
18659: LD_INT 3
18661: ST_TO_ADDR
// bc_level = 20 ;
18662: LD_ADDR_OWVAR 43
18666: PUSH
18667: LD_INT 20
18669: ST_TO_ADDR
// bc_type = b_ext_Track ;
18670: LD_ADDR_OWVAR 42
18674: PUSH
18675: LD_INT 16
18677: ST_TO_ADDR
// RuExt = CreateAndPlaceBuildingXYD ( 35 , 2 , 3 ) ;
18678: LD_ADDR_EXP 88
18682: PUSH
18683: LD_INT 35
18685: PPUSH
18686: LD_INT 2
18688: PPUSH
18689: LD_INT 3
18691: PPUSH
18692: CALL_OW 47
18696: ST_TO_ADDR
// end ; end_of_file
18697: PPOPN 1
18699: END
// export function StartingTech ( ) ; begin
18700: LD_INT 0
18702: PPUSH
// SetTech ( tech_solpow , 4 , 1 ) ;
18703: LD_INT 35
18705: PPUSH
18706: LD_INT 4
18708: PPUSH
18709: LD_INT 1
18711: PPUSH
18712: CALL_OW 322
// SetTech ( tech_soleng , 4 , 1 ) ;
18716: LD_INT 45
18718: PPUSH
18719: LD_INT 4
18721: PPUSH
18722: LD_INT 1
18724: PPUSH
18725: CALL_OW 322
// SetTech ( tech_oilpow , 4 , 1 ) ;
18729: LD_INT 46
18731: PPUSH
18732: LD_INT 4
18734: PPUSH
18735: LD_INT 1
18737: PPUSH
18738: CALL_OW 322
// SetTech ( 12 , 4 , 1 ) ;
18742: LD_INT 12
18744: PPUSH
18745: LD_INT 4
18747: PPUSH
18748: LD_INT 1
18750: PPUSH
18751: CALL_OW 322
// SetTech ( 13 , 4 , 1 ) ;
18755: LD_INT 13
18757: PPUSH
18758: LD_INT 4
18760: PPUSH
18761: LD_INT 1
18763: PPUSH
18764: CALL_OW 322
// SetTech ( 20 , 4 , 1 ) ;
18768: LD_INT 20
18770: PPUSH
18771: LD_INT 4
18773: PPUSH
18774: LD_INT 1
18776: PPUSH
18777: CALL_OW 322
// SetTech ( 69 , 4 , 1 ) ;
18781: LD_INT 69
18783: PPUSH
18784: LD_INT 4
18786: PPUSH
18787: LD_INT 1
18789: PPUSH
18790: CALL_OW 322
// SetRestrict ( 6 , 4 , true ) ;
18794: LD_INT 6
18796: PPUSH
18797: LD_INT 4
18799: PPUSH
18800: LD_INT 1
18802: PPUSH
18803: CALL_OW 324
// SetRestrict ( 7 , 4 , true ) ;
18807: LD_INT 7
18809: PPUSH
18810: LD_INT 4
18812: PPUSH
18813: LD_INT 1
18815: PPUSH
18816: CALL_OW 324
// SetRestrict ( 8 , 4 , true ) ;
18820: LD_INT 8
18822: PPUSH
18823: LD_INT 4
18825: PPUSH
18826: LD_INT 1
18828: PPUSH
18829: CALL_OW 324
// SetRestrict ( 9 , 4 , true ) ;
18833: LD_INT 9
18835: PPUSH
18836: LD_INT 4
18838: PPUSH
18839: LD_INT 1
18841: PPUSH
18842: CALL_OW 324
// SetRestrict ( 10 , 4 , true ) ;
18846: LD_INT 10
18848: PPUSH
18849: LD_INT 4
18851: PPUSH
18852: LD_INT 1
18854: PPUSH
18855: CALL_OW 324
// SetRestrict ( 15 , 4 , true ) ;
18859: LD_INT 15
18861: PPUSH
18862: LD_INT 4
18864: PPUSH
18865: LD_INT 1
18867: PPUSH
18868: CALL_OW 324
// SetRestrict ( 16 , 4 , true ) ;
18872: LD_INT 16
18874: PPUSH
18875: LD_INT 4
18877: PPUSH
18878: LD_INT 1
18880: PPUSH
18881: CALL_OW 324
// SetRestrict ( 19 , 4 , true ) ;
18885: LD_INT 19
18887: PPUSH
18888: LD_INT 4
18890: PPUSH
18891: LD_INT 1
18893: PPUSH
18894: CALL_OW 324
// SetTech ( 6 , 4 , 0 ) ;
18898: LD_INT 6
18900: PPUSH
18901: LD_INT 4
18903: PPUSH
18904: LD_INT 0
18906: PPUSH
18907: CALL_OW 322
// SetTech ( 15 , 4 , 0 ) ;
18911: LD_INT 15
18913: PPUSH
18914: LD_INT 4
18916: PPUSH
18917: LD_INT 0
18919: PPUSH
18920: CALL_OW 322
// SetTech ( 7 , 4 , 0 ) ;
18924: LD_INT 7
18926: PPUSH
18927: LD_INT 4
18929: PPUSH
18930: LD_INT 0
18932: PPUSH
18933: CALL_OW 322
// SetTech ( 39 , 4 , 0 ) ;
18937: LD_INT 39
18939: PPUSH
18940: LD_INT 4
18942: PPUSH
18943: LD_INT 0
18945: PPUSH
18946: CALL_OW 322
// SetTech ( 1 , 4 , 0 ) ;
18950: LD_INT 1
18952: PPUSH
18953: LD_INT 4
18955: PPUSH
18956: LD_INT 0
18958: PPUSH
18959: CALL_OW 322
// SetTech ( 2 , 4 , 0 ) ;
18963: LD_INT 2
18965: PPUSH
18966: LD_INT 4
18968: PPUSH
18969: LD_INT 0
18971: PPUSH
18972: CALL_OW 322
// SetTech ( 24 , 4 , 0 ) ;
18976: LD_INT 24
18978: PPUSH
18979: LD_INT 4
18981: PPUSH
18982: LD_INT 0
18984: PPUSH
18985: CALL_OW 322
// SetTech ( 25 , 4 , 0 ) ;
18989: LD_INT 25
18991: PPUSH
18992: LD_INT 4
18994: PPUSH
18995: LD_INT 0
18997: PPUSH
18998: CALL_OW 322
// SetTech ( 52 , 4 , 0 ) ;
19002: LD_INT 52
19004: PPUSH
19005: LD_INT 4
19007: PPUSH
19008: LD_INT 0
19010: PPUSH
19011: CALL_OW 322
// SetTech ( 60 , 4 , 0 ) ;
19015: LD_INT 60
19017: PPUSH
19018: LD_INT 4
19020: PPUSH
19021: LD_INT 0
19023: PPUSH
19024: CALL_OW 322
// SetTech ( 61 , 4 , 0 ) ;
19028: LD_INT 61
19030: PPUSH
19031: LD_INT 4
19033: PPUSH
19034: LD_INT 0
19036: PPUSH
19037: CALL_OW 322
// SetTech ( 32 , 4 , 0 ) ;
19041: LD_INT 32
19043: PPUSH
19044: LD_INT 4
19046: PPUSH
19047: LD_INT 0
19049: PPUSH
19050: CALL_OW 322
// SetTech ( 27 , 4 , 0 ) ;
19054: LD_INT 27
19056: PPUSH
19057: LD_INT 4
19059: PPUSH
19060: LD_INT 0
19062: PPUSH
19063: CALL_OW 322
// SetTech ( 10 , 4 , 0 ) ;
19067: LD_INT 10
19069: PPUSH
19070: LD_INT 4
19072: PPUSH
19073: LD_INT 0
19075: PPUSH
19076: CALL_OW 322
// SetTech ( 21 , 4 , 0 ) ;
19080: LD_INT 21
19082: PPUSH
19083: LD_INT 4
19085: PPUSH
19086: LD_INT 0
19088: PPUSH
19089: CALL_OW 322
// SetTech ( 22 , 4 , 0 ) ;
19093: LD_INT 22
19095: PPUSH
19096: LD_INT 4
19098: PPUSH
19099: LD_INT 0
19101: PPUSH
19102: CALL_OW 322
// SetTech ( 50 , 4 , 0 ) ;
19106: LD_INT 50
19108: PPUSH
19109: LD_INT 4
19111: PPUSH
19112: LD_INT 0
19114: PPUSH
19115: CALL_OW 322
// SetTech ( 53 , 4 , 0 ) ;
19119: LD_INT 53
19121: PPUSH
19122: LD_INT 4
19124: PPUSH
19125: LD_INT 0
19127: PPUSH
19128: CALL_OW 322
// SetTech ( 62 , 4 , 0 ) ;
19132: LD_INT 62
19134: PPUSH
19135: LD_INT 4
19137: PPUSH
19138: LD_INT 0
19140: PPUSH
19141: CALL_OW 322
// SetTech ( 57 , 4 , 0 ) ;
19145: LD_INT 57
19147: PPUSH
19148: LD_INT 4
19150: PPUSH
19151: LD_INT 0
19153: PPUSH
19154: CALL_OW 322
// SetTech ( 54 , 4 , 0 ) ;
19158: LD_INT 54
19160: PPUSH
19161: LD_INT 4
19163: PPUSH
19164: LD_INT 0
19166: PPUSH
19167: CALL_OW 322
// SetTech ( 31 , 4 , 0 ) ;
19171: LD_INT 31
19173: PPUSH
19174: LD_INT 4
19176: PPUSH
19177: LD_INT 0
19179: PPUSH
19180: CALL_OW 322
// SetTech ( 36 , 4 , 0 ) ;
19184: LD_INT 36
19186: PPUSH
19187: LD_INT 4
19189: PPUSH
19190: LD_INT 0
19192: PPUSH
19193: CALL_OW 322
// SetTech ( 14 , 4 , 0 ) ;
19197: LD_INT 14
19199: PPUSH
19200: LD_INT 4
19202: PPUSH
19203: LD_INT 0
19205: PPUSH
19206: CALL_OW 322
// SetTech ( 34 , 4 , 0 ) ;
19210: LD_INT 34
19212: PPUSH
19213: LD_INT 4
19215: PPUSH
19216: LD_INT 0
19218: PPUSH
19219: CALL_OW 322
// SetTech ( 40 , 4 , 0 ) ;
19223: LD_INT 40
19225: PPUSH
19226: LD_INT 4
19228: PPUSH
19229: LD_INT 0
19231: PPUSH
19232: CALL_OW 322
// SetTech ( 16 , 4 , 0 ) ;
19236: LD_INT 16
19238: PPUSH
19239: LD_INT 4
19241: PPUSH
19242: LD_INT 0
19244: PPUSH
19245: CALL_OW 322
// SetTech ( 58 , 4 , 0 ) ;
19249: LD_INT 58
19251: PPUSH
19252: LD_INT 4
19254: PPUSH
19255: LD_INT 0
19257: PPUSH
19258: CALL_OW 322
// SetTech ( 59 , 4 , 0 ) ;
19262: LD_INT 59
19264: PPUSH
19265: LD_INT 4
19267: PPUSH
19268: LD_INT 0
19270: PPUSH
19271: CALL_OW 322
// SetTech ( 55 , 4 , 0 ) ;
19275: LD_INT 55
19277: PPUSH
19278: LD_INT 4
19280: PPUSH
19281: LD_INT 0
19283: PPUSH
19284: CALL_OW 322
// SetTech ( 56 , 4 , 0 ) ;
19288: LD_INT 56
19290: PPUSH
19291: LD_INT 4
19293: PPUSH
19294: LD_INT 0
19296: PPUSH
19297: CALL_OW 322
// SetRestrict ( b_siberite_Mine , 4 , false ) ;
19301: LD_INT 30
19303: PPUSH
19304: LD_INT 4
19306: PPUSH
19307: LD_INT 0
19309: PPUSH
19310: CALL_OW 324
// SetRestrict ( 0 , 4 , false ) ;
19314: LD_INT 0
19316: PPUSH
19317: LD_INT 4
19319: PPUSH
19320: LD_INT 0
19322: PPUSH
19323: CALL_OW 324
// SetRestrict ( 12 , 4 , false ) ;
19327: LD_INT 12
19329: PPUSH
19330: LD_INT 4
19332: PPUSH
19333: LD_INT 0
19335: PPUSH
19336: CALL_OW 324
// SetRestrict ( 17 , 4 , false ) ;
19340: LD_INT 17
19342: PPUSH
19343: LD_INT 4
19345: PPUSH
19346: LD_INT 0
19348: PPUSH
19349: CALL_OW 324
// SetRestrict ( 18 , 4 , false ) ;
19353: LD_INT 18
19355: PPUSH
19356: LD_INT 4
19358: PPUSH
19359: LD_INT 0
19361: PPUSH
19362: CALL_OW 324
// SetRestrict ( 20 , 4 , false ) ;
19366: LD_INT 20
19368: PPUSH
19369: LD_INT 4
19371: PPUSH
19372: LD_INT 0
19374: PPUSH
19375: CALL_OW 324
// SetRestrict ( 21 , 4 , false ) ;
19379: LD_INT 21
19381: PPUSH
19382: LD_INT 4
19384: PPUSH
19385: LD_INT 0
19387: PPUSH
19388: CALL_OW 324
// SetRestrict ( 22 , 4 , false ) ;
19392: LD_INT 22
19394: PPUSH
19395: LD_INT 4
19397: PPUSH
19398: LD_INT 0
19400: PPUSH
19401: CALL_OW 324
// SetRestrict ( 24 , 4 , false ) ;
19405: LD_INT 24
19407: PPUSH
19408: LD_INT 4
19410: PPUSH
19411: LD_INT 0
19413: PPUSH
19414: CALL_OW 324
// SetRestrict ( 25 , 4 , false ) ;
19418: LD_INT 25
19420: PPUSH
19421: LD_INT 4
19423: PPUSH
19424: LD_INT 0
19426: PPUSH
19427: CALL_OW 324
// SetRestrict ( 28 , 4 , false ) ;
19431: LD_INT 28
19433: PPUSH
19434: LD_INT 4
19436: PPUSH
19437: LD_INT 0
19439: PPUSH
19440: CALL_OW 324
// SetRestrict ( 33 , 4 , false ) ;
19444: LD_INT 33
19446: PPUSH
19447: LD_INT 4
19449: PPUSH
19450: LD_INT 0
19452: PPUSH
19453: CALL_OW 324
// SetRestrict ( 36 , 4 , false ) ;
19457: LD_INT 36
19459: PPUSH
19460: LD_INT 4
19462: PPUSH
19463: LD_INT 0
19465: PPUSH
19466: CALL_OW 324
// end ; end_of_file
19470: LD_VAR 0 1
19474: RET
// var haslab , hasfac , hasbar ; export function AwardMedals ; begin
19475: LD_INT 0
19477: PPUSH
// CheckBuildings ;
19478: CALL 19621 0 0
// if haslab = 1 and hasbar = 1 and hasfac = 1 then
19482: LD_LOC 47
19486: PUSH
19487: LD_INT 1
19489: EQUAL
19490: PUSH
19491: LD_LOC 49
19495: PUSH
19496: LD_INT 1
19498: EQUAL
19499: AND
19500: PUSH
19501: LD_LOC 48
19505: PUSH
19506: LD_INT 1
19508: EQUAL
19509: AND
19510: IFFALSE 19524
// AddMedal ( medal1 , 1 ) else
19512: LD_STRING medal1
19514: PPUSH
19515: LD_INT 1
19517: PPUSH
19518: CALL_OW 101
19522: GO 19535
// AddMedal ( medal1 , - 1 ) ;
19524: LD_STRING medal1
19526: PPUSH
19527: LD_INT 1
19529: NEG
19530: PPUSH
19531: CALL_OW 101
// if not GetAttitude ( 3 , 4 ) = att_enemy then
19535: LD_INT 3
19537: PPUSH
19538: LD_INT 4
19540: PPUSH
19541: CALL_OW 81
19545: PUSH
19546: LD_INT 2
19548: EQUAL
19549: NOT
19550: IFFALSE 19564
// AddMedal ( medal2 , 1 ) else
19552: LD_STRING medal2
19554: PPUSH
19555: LD_INT 1
19557: PPUSH
19558: CALL_OW 101
19562: GO 19575
// AddMedal ( medal2 , - 1 ) ;
19564: LD_STRING medal2
19566: PPUSH
19567: LD_INT 1
19569: NEG
19570: PPUSH
19571: CALL_OW 101
// if IsDead ( KARP ) then
19575: LD_EXP 34
19579: PPUSH
19580: CALL_OW 301
19584: IFFALSE 19598
// AddMedal ( medal3 , 1 ) else
19586: LD_STRING medal3
19588: PPUSH
19589: LD_INT 1
19591: PPUSH
19592: CALL_OW 101
19596: GO 19609
// AddMedal ( medal3 , - 1 ) ;
19598: LD_STRING medal3
19600: PPUSH
19601: LD_INT 1
19603: NEG
19604: PPUSH
19605: CALL_OW 101
// GiveMedals ( MAIN ) ;
19609: LD_STRING MAIN
19611: PPUSH
19612: CALL_OW 102
// end ;
19616: LD_VAR 0 1
19620: RET
// var CheckList , BuildCheck ; function CheckBuildings ( ) ; begin
19621: LD_INT 0
19623: PPUSH
// haslab = 0 ;
19624: LD_ADDR_LOC 47
19628: PUSH
19629: LD_INT 0
19631: ST_TO_ADDR
// hasbar = 0 ;
19632: LD_ADDR_LOC 49
19636: PUSH
19637: LD_INT 0
19639: ST_TO_ADDR
// hasfac = 0 ;
19640: LD_ADDR_LOC 48
19644: PUSH
19645: LD_INT 0
19647: ST_TO_ADDR
// CheckList = FilterAllUnits ( [ [ f_side , 4 ] ] ) ;
19648: LD_ADDR_LOC 50
19652: PUSH
19653: LD_INT 22
19655: PUSH
19656: LD_INT 4
19658: PUSH
19659: EMPTY
19660: LIST
19661: LIST
19662: PUSH
19663: EMPTY
19664: LIST
19665: PPUSH
19666: CALL_OW 69
19670: ST_TO_ADDR
// for BuildCheck in Checklist do
19671: LD_ADDR_LOC 51
19675: PUSH
19676: LD_LOC 50
19680: PUSH
19681: FOR_IN
19682: IFFALSE 19815
// begin if GetBtype ( BuildCheck ) = b_factory or GetBtype ( BuildCheck ) = b_workshop then
19684: LD_LOC 51
19688: PPUSH
19689: CALL_OW 266
19693: PUSH
19694: LD_INT 3
19696: EQUAL
19697: PUSH
19698: LD_LOC 51
19702: PPUSH
19703: CALL_OW 266
19707: PUSH
19708: LD_INT 2
19710: EQUAL
19711: OR
19712: IFFALSE 19722
// hasfac = 1 ;
19714: LD_ADDR_LOC 48
19718: PUSH
19719: LD_INT 1
19721: ST_TO_ADDR
// if GetBtype ( BuildCheck ) = b_lab or GetBtype ( BuildCheck ) = b_lab_half or GetBtype ( BuildCheck ) = b_lab_full then
19722: LD_LOC 51
19726: PPUSH
19727: CALL_OW 266
19731: PUSH
19732: LD_INT 6
19734: EQUAL
19735: PUSH
19736: LD_LOC 51
19740: PPUSH
19741: CALL_OW 266
19745: PUSH
19746: LD_INT 7
19748: EQUAL
19749: OR
19750: PUSH
19751: LD_LOC 51
19755: PPUSH
19756: CALL_OW 266
19760: PUSH
19761: LD_INT 8
19763: EQUAL
19764: OR
19765: IFFALSE 19775
// haslab = 1 ;
19767: LD_ADDR_LOC 47
19771: PUSH
19772: LD_INT 1
19774: ST_TO_ADDR
// if GetBtype ( BuildCheck ) = b_barracks or GetBtype ( BuildCheck ) = b_armoury then
19775: LD_LOC 51
19779: PPUSH
19780: CALL_OW 266
19784: PUSH
19785: LD_INT 5
19787: EQUAL
19788: PUSH
19789: LD_LOC 51
19793: PPUSH
19794: CALL_OW 266
19798: PUSH
19799: LD_INT 4
19801: EQUAL
19802: OR
19803: IFFALSE 19813
// hasbar = 1 ;
19805: LD_ADDR_LOC 49
19809: PUSH
19810: LD_INT 1
19812: ST_TO_ADDR
// end ;
19813: GO 19681
19815: POP
19816: POP
// end ;
19817: LD_VAR 0 1
19821: RET
