// export Theo , Mahmoud ; export function PrepareOurs ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// uc_side = 2 ;
   4: LD_ADDR_OWVAR 20
   8: PUSH
   9: LD_INT 2
  11: ST_TO_ADDR
// uc_nation = 2 ;
  12: LD_ADDR_OWVAR 21
  16: PUSH
  17: LD_INT 2
  19: ST_TO_ADDR
// Theo = NewCharacter ( Theo ) ;
  20: LD_ADDR_EXP 1
  24: PUSH
  25: LD_STRING Theo
  27: PPUSH
  28: CALL_OW 25
  32: ST_TO_ADDR
// PlaceUnitXY ( Theo , 118 , 65 , false ) ;
  33: LD_EXP 1
  37: PPUSH
  38: LD_INT 118
  40: PPUSH
  41: LD_INT 65
  43: PPUSH
  44: LD_INT 0
  46: PPUSH
  47: CALL_OW 48
// Mahmoud = NewCharacter ( Mahmoud ) ;
  51: LD_ADDR_EXP 2
  55: PUSH
  56: LD_STRING Mahmoud
  58: PPUSH
  59: CALL_OW 25
  63: ST_TO_ADDR
// for i = 1 to 4 do
  64: LD_ADDR_VAR 0 2
  68: PUSH
  69: DOUBLE
  70: LD_INT 1
  72: DEC
  73: ST_TO_ADDR
  74: LD_INT 4
  76: PUSH
  77: FOR_TO
  78: IFFALSE 158
// begin PrepareHuman ( false , [ 1 , 8 , 15 , 15 ] [ i ] , [ 4 , 3 , 1 , 1 ] [ i ] ) ;
  80: LD_INT 0
  82: PPUSH
  83: LD_INT 1
  85: PUSH
  86: LD_INT 8
  88: PUSH
  89: LD_INT 15
  91: PUSH
  92: LD_INT 15
  94: PUSH
  95: EMPTY
  96: LIST
  97: LIST
  98: LIST
  99: LIST
 100: PUSH
 101: LD_VAR 0 2
 105: ARRAY
 106: PPUSH
 107: LD_INT 4
 109: PUSH
 110: LD_INT 3
 112: PUSH
 113: LD_INT 1
 115: PUSH
 116: LD_INT 1
 118: PUSH
 119: EMPTY
 120: LIST
 121: LIST
 122: LIST
 123: LIST
 124: PUSH
 125: LD_VAR 0 2
 129: ARRAY
 130: PPUSH
 131: CALL_OW 380
// PlaceUnitXYR ( CreateHuman , 111 , 61 , 5 , false ) ;
 135: CALL_OW 44
 139: PPUSH
 140: LD_INT 111
 142: PPUSH
 143: LD_INT 61
 145: PPUSH
 146: LD_INT 5
 148: PPUSH
 149: LD_INT 0
 151: PPUSH
 152: CALL_OW 50
// end ;
 156: GO 77
 158: POP
 159: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
 160: LD_ADDR_VAR 0 2
 164: PUSH
 165: LD_INT 22
 167: PUSH
 168: LD_INT 2
 170: PUSH
 171: EMPTY
 172: LIST
 173: LIST
 174: PUSH
 175: LD_INT 21
 177: PUSH
 178: LD_INT 1
 180: PUSH
 181: EMPTY
 182: LIST
 183: LIST
 184: PUSH
 185: EMPTY
 186: LIST
 187: LIST
 188: PPUSH
 189: CALL_OW 69
 193: PUSH
 194: FOR_IN
 195: IFFALSE 219
// SetLives ( i , Rand ( 400 , 1000 ) ) ;
 197: LD_VAR 0 2
 201: PPUSH
 202: LD_INT 400
 204: PPUSH
 205: LD_INT 1000
 207: PPUSH
 208: CALL_OW 12
 212: PPUSH
 213: CALL_OW 234
 217: GO 194
 219: POP
 220: POP
// RevealFogArea ( 5 , RevealArea ) ;
 221: LD_INT 5
 223: PPUSH
 224: LD_INT 1
 226: PPUSH
 227: CALL_OW 332
// SetBName ( ad , alhambra ) ;
 231: LD_INT 2
 233: PPUSH
 234: LD_STRING alhambra
 236: PPUSH
 237: CALL_OW 500
// end ;
 241: LD_VAR 0 1
 245: RET
// starting begin difficulty = GetMultiplayerSetting ( 0 ) + 1 ;
 246: LD_ADDR_OWVAR 67
 250: PUSH
 251: LD_INT 0
 253: PPUSH
 254: CALL_OW 426
 258: PUSH
 259: LD_INT 1
 261: PLUS
 262: ST_TO_ADDR
// InGameOn ;
 263: CALL_OW 8
// RandomizeAll ;
 267: CALL_OW 11
// Wait ( 0 0$0.5 ) ;
 271: LD_INT 18
 273: PPUSH
 274: CALL_OW 67
// PrepareOurs ;
 278: CALL 0 0 0
// PrepareAmericans ;
 282: CALL 1841 0 0
// Wait ( 0 0$1 ) ;
 286: LD_INT 35
 288: PPUSH
 289: CALL_OW 67
// ChangeSideFog ( 2 , 5 ) ;
 293: LD_INT 2
 295: PPUSH
 296: LD_INT 5
 298: PPUSH
 299: CALL_OW 343
// CenterNowOnXY ( 118 , 65 ) ;
 303: LD_INT 118
 305: PPUSH
 306: LD_INT 65
 308: PPUSH
 309: CALL_OW 86
// Wait ( 0 0$1 ) ;
 313: LD_INT 35
 315: PPUSH
 316: CALL_OW 67
// DialogueOn ;
 320: CALL_OW 6
// Say ( Theo , di-t-1 ) ;
 324: LD_EXP 1
 328: PPUSH
 329: LD_STRING di-t-1
 331: PPUSH
 332: CALL_OW 88
// SayRadio ( Mahmoud , di-m-1 ) ;
 336: LD_EXP 2
 340: PPUSH
 341: LD_STRING di-m-1
 343: PPUSH
 344: CALL_OW 94
// DWait ( 0 0$0.5 ) ;
 348: LD_INT 18
 350: PPUSH
 351: CALL_OW 68
// Say ( Theo , di-t-2 ) ;
 355: LD_EXP 1
 359: PPUSH
 360: LD_STRING di-t-2
 362: PPUSH
 363: CALL_OW 88
// SayRadio ( Mahmoud , di-m-2 ) ;
 367: LD_EXP 2
 371: PPUSH
 372: LD_STRING di-m-2
 374: PPUSH
 375: CALL_OW 94
// Say ( Theo , di-t-3 ) ;
 379: LD_EXP 1
 383: PPUSH
 384: LD_STRING di-t-3
 386: PPUSH
 387: CALL_OW 88
// SayRadio ( Mahmoud , di-m-3 ) ;
 391: LD_EXP 2
 395: PPUSH
 396: LD_STRING di-m-3
 398: PPUSH
 399: CALL_OW 94
// DialogueOff ;
 403: CALL_OW 7
// InGameOff ;
 407: CALL_OW 9
// SaveForQuickRestart ;
 411: CALL_OW 22
// ChangeMissionObjectives ( ODefend ) ;
 415: LD_STRING ODefend
 417: PPUSH
 418: CALL_OW 337
// Query ( QInfo ) ;
 422: LD_STRING QInfo
 424: PPUSH
 425: CALL_OW 97
// SetAreaMapShow ( ExitArea , 1 ) ;
 429: LD_INT 2
 431: PPUSH
 432: LD_INT 1
 434: PPUSH
 435: CALL_OW 424
// end ;
 439: END
// every 0 0$1 trigger IsDead ( Theo ) do
 440: LD_EXP 1
 444: PPUSH
 445: CALL_OW 301
 449: IFFALSE 461
 451: GO 453
 453: DISABLE
// YouLost ( TheoDead ) ;
 454: LD_STRING TheoDead
 456: PPUSH
 457: CALL_OW 104
 461: END
// every 0 0$1 trigger IsDead ( ad ) do
 462: LD_INT 2
 464: PPUSH
 465: CALL_OW 301
 469: IFFALSE 481
 471: GO 473
 473: DISABLE
// YouLost ( AlhambraDead ) ; end_of_file
 474: LD_STRING AlhambraDead
 476: PPUSH
 477: CALL_OW 104
 481: END
// export ExtraSoldier ; every 0 0$1 do var loc , waiting_time ;
 482: GO 484
 484: DISABLE
 485: LD_INT 0
 487: PPUSH
 488: PPUSH
// begin waiting_time = Rand ( 12 12$0 , 24 24$0 ) ;
 489: LD_ADDR_VAR 0 2
 493: PUSH
 494: LD_INT 25200
 496: PPUSH
 497: LD_INT 50400
 499: PPUSH
 500: CALL_OW 12
 504: ST_TO_ADDR
// Wait ( waiting_time ) ;
 505: LD_VAR 0 2
 509: PPUSH
 510: CALL_OW 67
// uc_side = 5 ;
 514: LD_ADDR_OWVAR 20
 518: PUSH
 519: LD_INT 5
 521: ST_TO_ADDR
// uc_nation = 2 ;
 522: LD_ADDR_OWVAR 21
 526: PUSH
 527: LD_INT 2
 529: ST_TO_ADDR
// loc = [ [ 55 , 95 ] , [ 131 , 139 ] , [ 61 , 15 ] ] [ Rand ( 1 , 3 ) ] ;
 530: LD_ADDR_VAR 0 1
 534: PUSH
 535: LD_INT 55
 537: PUSH
 538: LD_INT 95
 540: PUSH
 541: EMPTY
 542: LIST
 543: LIST
 544: PUSH
 545: LD_INT 131
 547: PUSH
 548: LD_INT 139
 550: PUSH
 551: EMPTY
 552: LIST
 553: LIST
 554: PUSH
 555: LD_INT 61
 557: PUSH
 558: LD_INT 15
 560: PUSH
 561: EMPTY
 562: LIST
 563: LIST
 564: PUSH
 565: EMPTY
 566: LIST
 567: LIST
 568: LIST
 569: PUSH
 570: LD_INT 1
 572: PPUSH
 573: LD_INT 3
 575: PPUSH
 576: CALL_OW 12
 580: ARRAY
 581: ST_TO_ADDR
// InitHc ;
 582: CALL_OW 19
// PrepareSoldier ( false , 2 ) ;
 586: LD_INT 0
 588: PPUSH
 589: LD_INT 2
 591: PPUSH
 592: CALL_OW 381
// ExtraSoldier = CreateHuman ;
 596: LD_ADDR_EXP 3
 600: PUSH
 601: CALL_OW 44
 605: ST_TO_ADDR
// PlaceUnitXY ( ExtraSoldier , loc [ 1 ] , loc [ 2 ] , true ) ;
 606: LD_EXP 3
 610: PPUSH
 611: LD_VAR 0 1
 615: PUSH
 616: LD_INT 1
 618: ARRAY
 619: PPUSH
 620: LD_VAR 0 1
 624: PUSH
 625: LD_INT 2
 627: ARRAY
 628: PPUSH
 629: LD_INT 1
 631: PPUSH
 632: CALL_OW 48
// Wait ( 0 0$2 ) ;
 636: LD_INT 70
 638: PPUSH
 639: CALL_OW 67
// DialogueOn ;
 643: CALL_OW 6
// CenterOnUnits ( ExtraSoldier ) ;
 647: LD_EXP 3
 651: PPUSH
 652: CALL_OW 85
// SayRadio ( ExtraSoldier , dn-s-1 ) ;
 656: LD_EXP 3
 660: PPUSH
 661: LD_STRING dn-s-1
 663: PPUSH
 664: CALL_OW 94
// Say ( Theo , dn-t-1 ) ;
 668: LD_EXP 1
 672: PPUSH
 673: LD_STRING dn-t-1
 675: PPUSH
 676: CALL_OW 88
// DialogueOff ;
 680: CALL_OW 7
// ComCrawl ( ExtraSoldier ) ;
 684: LD_EXP 3
 688: PPUSH
 689: CALL_OW 137
// ChangeMissionObjectives ( OSave ) ;
 693: LD_STRING OSave
 695: PPUSH
 696: CALL_OW 337
// end ;
 700: PPOPN 2
 702: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_dist , ExtraSoldier , 8 ] ] ) do
 703: LD_INT 22
 705: PUSH
 706: LD_INT 2
 708: PUSH
 709: EMPTY
 710: LIST
 711: LIST
 712: PUSH
 713: LD_INT 91
 715: PUSH
 716: LD_EXP 3
 720: PUSH
 721: LD_INT 8
 723: PUSH
 724: EMPTY
 725: LIST
 726: LIST
 727: LIST
 728: PUSH
 729: EMPTY
 730: LIST
 731: LIST
 732: PPUSH
 733: CALL_OW 69
 737: IFFALSE 761
 739: GO 741
 741: DISABLE
// begin SetSide ( ExtraSoldier , 2 ) ;
 742: LD_EXP 3
 746: PPUSH
 747: LD_INT 2
 749: PPUSH
 750: CALL_OW 235
// ChangeMissionObjectives ( OSaveOut ) ;
 754: LD_STRING OSaveOut
 756: PPUSH
 757: CALL_OW 337
// end ; end_of_file
 761: END
// export ATargets , AAttack ; every 0 0$1 do
 762: GO 764
 764: DISABLE
// ATargets = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , AlhambraArea ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
 765: LD_ADDR_EXP 4
 769: PUSH
 770: LD_INT 1
 772: PPUSH
 773: LD_INT 1
 775: PUSH
 776: LD_INT 105
 778: PUSH
 779: EMPTY
 780: LIST
 781: LIST
 782: PUSH
 783: LD_INT 2
 785: PUSH
 786: LD_INT 6
 788: PUSH
 789: EMPTY
 790: LIST
 791: LIST
 792: PUSH
 793: LD_INT 7
 795: PUSH
 796: LD_INT 9
 798: PUSH
 799: EMPTY
 800: LIST
 801: LIST
 802: LIST
 803: LIST
 804: PPUSH
 805: CALL_OW 399
 809: ST_TO_ADDR
 810: END
// export function PrepareAttack ( v , side ) ; var i , tmp ; begin
 811: LD_INT 0
 813: PPUSH
 814: PPUSH
 815: PPUSH
// uc_side = 1 ;
 816: LD_ADDR_OWVAR 20
 820: PUSH
 821: LD_INT 1
 823: ST_TO_ADDR
// uc_nation = 1 ;
 824: LD_ADDR_OWVAR 21
 828: PUSH
 829: LD_INT 1
 831: ST_TO_ADDR
// InitVc ;
 832: CALL_OW 20
// tmp = [ ] ;
 836: LD_ADDR_VAR 0 5
 840: PUSH
 841: EMPTY
 842: ST_TO_ADDR
// for i = 1 to v do
 843: LD_ADDR_VAR 0 4
 847: PUSH
 848: DOUBLE
 849: LD_INT 1
 851: DEC
 852: ST_TO_ADDR
 853: LD_VAR 0 1
 857: PUSH
 858: FOR_TO
 859: IFFALSE 1019
// begin case Rand ( 1 , 2 ) of 1 :
 861: LD_INT 1
 863: PPUSH
 864: LD_INT 2
 866: PPUSH
 867: CALL_OW 12
 871: PUSH
 872: LD_INT 1
 874: DOUBLE
 875: EQUAL
 876: IFTRUE 880
 878: GO 938
 880: POP
// begin vc_chassis = us_medium_tracked ;
 881: LD_ADDR_OWVAR 37
 885: PUSH
 886: LD_INT 3
 888: ST_TO_ADDR
// vc_engine = engine_combustion ;
 889: LD_ADDR_OWVAR 39
 893: PUSH
 894: LD_INT 1
 896: ST_TO_ADDR
// vc_control = control_computer ;
 897: LD_ADDR_OWVAR 38
 901: PUSH
 902: LD_INT 3
 904: ST_TO_ADDR
// vc_weapon = [ us_gatling_gun , us_light_gun , us_double_gun ] [ Rand ( 1 , 3 ) ] ;
 905: LD_ADDR_OWVAR 40
 909: PUSH
 910: LD_INT 4
 912: PUSH
 913: LD_INT 3
 915: PUSH
 916: LD_INT 5
 918: PUSH
 919: EMPTY
 920: LIST
 921: LIST
 922: LIST
 923: PUSH
 924: LD_INT 1
 926: PPUSH
 927: LD_INT 3
 929: PPUSH
 930: CALL_OW 12
 934: ARRAY
 935: ST_TO_ADDR
// end ; 2 :
 936: GO 1001
 938: LD_INT 2
 940: DOUBLE
 941: EQUAL
 942: IFTRUE 946
 944: GO 1000
 946: POP
// begin vc_chassis = us_heavy_tracked ;
 947: LD_ADDR_OWVAR 37
 951: PUSH
 952: LD_INT 4
 954: ST_TO_ADDR
// vc_engine = engine_combustion ;
 955: LD_ADDR_OWVAR 39
 959: PUSH
 960: LD_INT 1
 962: ST_TO_ADDR
// vc_control = control_computer ;
 963: LD_ADDR_OWVAR 38
 967: PUSH
 968: LD_INT 3
 970: ST_TO_ADDR
// vc_weapon = [ us_double_gun , us_rocket_launcher ] [ Rand ( 1 , 2 ) ] ;
 971: LD_ADDR_OWVAR 40
 975: PUSH
 976: LD_INT 5
 978: PUSH
 979: LD_INT 7
 981: PUSH
 982: EMPTY
 983: LIST
 984: LIST
 985: PUSH
 986: LD_INT 1
 988: PPUSH
 989: LD_INT 2
 991: PPUSH
 992: CALL_OW 12
 996: ARRAY
 997: ST_TO_ADDR
// end ; end ;
 998: GO 1001
1000: POP
// tmp = tmp ^ CreateVehicle ;
1001: LD_ADDR_VAR 0 5
1005: PUSH
1006: LD_VAR 0 5
1010: PUSH
1011: CALL_OW 45
1015: ADD
1016: ST_TO_ADDR
// end ;
1017: GO 858
1019: POP
1020: POP
// for i in tmp do
1021: LD_ADDR_VAR 0 4
1025: PUSH
1026: LD_VAR 0 5
1030: PUSH
1031: FOR_IN
1032: IFFALSE 1177
// begin case side of 1 :
1034: LD_VAR 0 2
1038: PUSH
1039: LD_INT 1
1041: DOUBLE
1042: EQUAL
1043: IFTRUE 1047
1045: GO 1065
1047: POP
// PlaceUnitArea ( i , EnterA , false ) ; 2 :
1048: LD_VAR 0 4
1052: PPUSH
1053: LD_INT 3
1055: PPUSH
1056: LD_INT 0
1058: PPUSH
1059: CALL_OW 49
1063: GO 1118
1065: LD_INT 2
1067: DOUBLE
1068: EQUAL
1069: IFTRUE 1073
1071: GO 1091
1073: POP
// PlaceUnitArea ( i , EnterB , false ) ; 3 :
1074: LD_VAR 0 4
1078: PPUSH
1079: LD_INT 4
1081: PPUSH
1082: LD_INT 0
1084: PPUSH
1085: CALL_OW 49
1089: GO 1118
1091: LD_INT 3
1093: DOUBLE
1094: EQUAL
1095: IFTRUE 1099
1097: GO 1117
1099: POP
// PlaceUnitArea ( i , EnterC , false ) ; end ;
1100: LD_VAR 0 4
1104: PPUSH
1105: LD_INT 5
1107: PPUSH
1108: LD_INT 0
1110: PPUSH
1111: CALL_OW 49
1115: GO 1118
1117: POP
// if not ExistMc ( AAttack ) then
1118: LD_EXP 5
1122: PPUSH
1123: CALL_OW 386
1127: NOT
1128: IFFALSE 1161
// AAttack = McAttack ( 1 , ATargets , i , [ mc_murder ] ) else
1130: LD_ADDR_EXP 5
1134: PUSH
1135: LD_INT 1
1137: PPUSH
1138: LD_EXP 4
1142: PPUSH
1143: LD_VAR 0 4
1147: PPUSH
1148: LD_INT 12
1150: PUSH
1151: EMPTY
1152: LIST
1153: PPUSH
1154: CALL_OW 402
1158: ST_TO_ADDR
1159: GO 1175
// AddMcUnits ( AAttack , i ) ;
1161: LD_EXP 5
1165: PPUSH
1166: LD_VAR 0 4
1170: PPUSH
1171: CALL_OW 390
// end ;
1175: GO 1031
1177: POP
1178: POP
// end ;
1179: LD_VAR 0 3
1183: RET
// export MaxVehs ; every 0 0$1 do
1184: GO 1186
1186: DISABLE
// MaxVehs = [ 2 , 3 , 3 ] [ difficulty ] ;
1187: LD_ADDR_EXP 6
1191: PUSH
1192: LD_INT 2
1194: PUSH
1195: LD_INT 3
1197: PUSH
1198: LD_INT 3
1200: PUSH
1201: EMPTY
1202: LIST
1203: LIST
1204: LIST
1205: PUSH
1206: LD_OWVAR 67
1210: ARRAY
1211: ST_TO_ADDR
1212: END
// every 0 0$1 do
1213: GO 1215
1215: DISABLE
// begin Wait ( [ Rand ( 15 15$0 , 20 20$0 ) , Rand ( 15 15$0 , 18 18$0 ) , Rand ( 10 10$0 , 15 15$0 ) ] [ difficulty ] ) ;
1216: LD_INT 31500
1218: PPUSH
1219: LD_INT 42000
1221: PPUSH
1222: CALL_OW 12
1226: PUSH
1227: LD_INT 31500
1229: PPUSH
1230: LD_INT 37800
1232: PPUSH
1233: CALL_OW 12
1237: PUSH
1238: LD_INT 21000
1240: PPUSH
1241: LD_INT 31500
1243: PPUSH
1244: CALL_OW 12
1248: PUSH
1249: EMPTY
1250: LIST
1251: LIST
1252: LIST
1253: PUSH
1254: LD_OWVAR 67
1258: ARRAY
1259: PPUSH
1260: CALL_OW 67
// MaxVehs = MaxVehs + 1 ;
1264: LD_ADDR_EXP 6
1268: PUSH
1269: LD_EXP 6
1273: PUSH
1274: LD_INT 1
1276: PLUS
1277: ST_TO_ADDR
// enable ;
1278: ENABLE
// end ;
1279: END
// every 0 0$1 do
1280: GO 1282
1282: DISABLE
// begin enable ;
1283: ENABLE
// case tick of [ 15 15$0 , 10 10$0 , 10 10$0 ] [ difficulty ] :
1284: LD_OWVAR 1
1288: PUSH
1289: LD_INT 31500
1291: PUSH
1292: LD_INT 21000
1294: PUSH
1295: LD_INT 21000
1297: PUSH
1298: EMPTY
1299: LIST
1300: LIST
1301: LIST
1302: PUSH
1303: LD_OWVAR 67
1307: ARRAY
1308: DOUBLE
1309: EQUAL
1310: IFTRUE 1314
1312: GO 1330
1314: POP
// SetTech ( tech_Comp1 , 1 , state_researched ) ; [ 30 30$0 , 25 25$0 , 25 25$0 ] [ difficulty ] :
1315: LD_INT 57
1317: PPUSH
1318: LD_INT 1
1320: PPUSH
1321: LD_INT 2
1323: PPUSH
1324: CALL_OW 322
1328: GO 1439
1330: LD_INT 63000
1332: PUSH
1333: LD_INT 52500
1335: PUSH
1336: LD_INT 52500
1338: PUSH
1339: EMPTY
1340: LIST
1341: LIST
1342: LIST
1343: PUSH
1344: LD_OWVAR 67
1348: ARRAY
1349: DOUBLE
1350: EQUAL
1351: IFTRUE 1355
1353: GO 1384
1355: POP
// begin SetTech ( tech_Weap2 , 1 , state_researched ) ;
1356: LD_INT 52
1358: PPUSH
1359: LD_INT 1
1361: PPUSH
1362: LD_INT 2
1364: PPUSH
1365: CALL_OW 322
// SetTech ( tech_Tech2 , 1 , state_researched ) ;
1369: LD_INT 49
1371: PPUSH
1372: LD_INT 1
1374: PPUSH
1375: LD_INT 2
1377: PPUSH
1378: CALL_OW 322
// end ; [ 50 50$0 , 45 45$0 , 40 40$0 ] [ difficulty ] :
1382: GO 1439
1384: LD_INT 105000
1386: PUSH
1387: LD_INT 94500
1389: PUSH
1390: LD_INT 84000
1392: PUSH
1393: EMPTY
1394: LIST
1395: LIST
1396: LIST
1397: PUSH
1398: LD_OWVAR 67
1402: ARRAY
1403: DOUBLE
1404: EQUAL
1405: IFTRUE 1409
1407: GO 1438
1409: POP
// begin SetTech ( tech_Comp2 , 1 , state_researched ) ;
1410: LD_INT 58
1412: PPUSH
1413: LD_INT 1
1415: PPUSH
1416: LD_INT 2
1418: PPUSH
1419: CALL_OW 322
// SetTech ( tech_Tech3 , 1 , state_researched ) ;
1423: LD_INT 50
1425: PPUSH
1426: LD_INT 1
1428: PPUSH
1429: LD_INT 2
1431: PPUSH
1432: CALL_OW 322
// end ; end ;
1436: GO 1439
1438: POP
// end ;
1439: END
// every 0 0$1 trigger tick > 5 5$0 do
1440: LD_OWVAR 1
1444: PUSH
1445: LD_INT 10500
1447: GREATER
1448: IFFALSE 1840
1450: GO 1452
1452: DISABLE
// begin case tick of 5 5$0 + 1 .. 20 20$0 :
1453: LD_OWVAR 1
1457: PUSH
1458: LD_INT 10500
1460: PUSH
1461: LD_INT 1
1463: PLUS
1464: DOUBLE
1465: GREATEREQUAL
1466: IFFALSE 1474
1468: LD_INT 42000
1470: DOUBLE
1471: LESSEQUAL
1472: IFTRUE 1476
1474: GO 1527
1476: POP
// Wait ( [ Rand ( 3 3$0 , 8 8$0 ) , Rand ( 3 3$0 , 6 6$0 ) , Rand ( 2 2$30 , 5 5$30 ) ] [ difficulty ] ) ; 20 20$0 + 1 .. 30 30$0 :
1477: LD_INT 6300
1479: PPUSH
1480: LD_INT 16800
1482: PPUSH
1483: CALL_OW 12
1487: PUSH
1488: LD_INT 6300
1490: PPUSH
1491: LD_INT 12600
1493: PPUSH
1494: CALL_OW 12
1498: PUSH
1499: LD_INT 5250
1501: PPUSH
1502: LD_INT 11550
1504: PPUSH
1505: CALL_OW 12
1509: PUSH
1510: EMPTY
1511: LIST
1512: LIST
1513: LIST
1514: PUSH
1515: LD_OWVAR 67
1519: ARRAY
1520: PPUSH
1521: CALL_OW 67
1525: GO 1645
1527: LD_INT 42000
1529: PUSH
1530: LD_INT 1
1532: PLUS
1533: DOUBLE
1534: GREATEREQUAL
1535: IFFALSE 1543
1537: LD_INT 63000
1539: DOUBLE
1540: LESSEQUAL
1541: IFTRUE 1545
1543: GO 1596
1545: POP
// Wait ( [ Rand ( 7 7$0 , 8 8$0 ) , Rand ( 6 6$0 , 6 6$30 ) , Rand ( 5 5$0 , 6 6$0 ) ] [ difficulty ] ) ; else
1546: LD_INT 14700
1548: PPUSH
1549: LD_INT 16800
1551: PPUSH
1552: CALL_OW 12
1556: PUSH
1557: LD_INT 12600
1559: PPUSH
1560: LD_INT 13650
1562: PPUSH
1563: CALL_OW 12
1567: PUSH
1568: LD_INT 10500
1570: PPUSH
1571: LD_INT 12600
1573: PPUSH
1574: CALL_OW 12
1578: PUSH
1579: EMPTY
1580: LIST
1581: LIST
1582: LIST
1583: PUSH
1584: LD_OWVAR 67
1588: ARRAY
1589: PPUSH
1590: CALL_OW 67
1594: GO 1645
1596: POP
// Wait ( [ Rand ( 3 3$0 , 6 6$30 ) , Rand ( 2 2$30 , 5 5$0 ) , Rand ( 2 2$0 , 5 5$0 ) ] [ difficulty ] ) ; end ;
1597: LD_INT 6300
1599: PPUSH
1600: LD_INT 13650
1602: PPUSH
1603: CALL_OW 12
1607: PUSH
1608: LD_INT 5250
1610: PPUSH
1611: LD_INT 10500
1613: PPUSH
1614: CALL_OW 12
1618: PUSH
1619: LD_INT 4200
1621: PPUSH
1622: LD_INT 10500
1624: PPUSH
1625: CALL_OW 12
1629: PUSH
1630: EMPTY
1631: LIST
1632: LIST
1633: LIST
1634: PUSH
1635: LD_OWVAR 67
1639: ARRAY
1640: PPUSH
1641: CALL_OW 67
// case Rand ( 1 , 4 ) of 1 :
1645: LD_INT 1
1647: PPUSH
1648: LD_INT 4
1650: PPUSH
1651: CALL_OW 12
1655: PUSH
1656: LD_INT 1
1658: DOUBLE
1659: EQUAL
1660: IFTRUE 1664
1662: GO 1693
1664: POP
// PrepareAttack ( Rand ( MaxVehs div 2 , MaxVehs ) , 1 ) ; 2 :
1665: LD_EXP 6
1669: PUSH
1670: LD_INT 2
1672: DIV
1673: PPUSH
1674: LD_EXP 6
1678: PPUSH
1679: CALL_OW 12
1683: PPUSH
1684: LD_INT 1
1686: PPUSH
1687: CALL 811 0 2
1691: GO 1839
1693: LD_INT 2
1695: DOUBLE
1696: EQUAL
1697: IFTRUE 1701
1699: GO 1730
1701: POP
// PrepareAttack ( Rand ( MaxVehs div 2 , MaxVehs ) , 2 ) ; 3 :
1702: LD_EXP 6
1706: PUSH
1707: LD_INT 2
1709: DIV
1710: PPUSH
1711: LD_EXP 6
1715: PPUSH
1716: CALL_OW 12
1720: PPUSH
1721: LD_INT 2
1723: PPUSH
1724: CALL 811 0 2
1728: GO 1839
1730: LD_INT 3
1732: DOUBLE
1733: EQUAL
1734: IFTRUE 1738
1736: GO 1771
1738: POP
// PrepareAttack ( Rand ( MaxVehs div 2 , MaxVehs - 1 ) , 3 ) ; 4 :
1739: LD_EXP 6
1743: PUSH
1744: LD_INT 2
1746: DIV
1747: PPUSH
1748: LD_EXP 6
1752: PUSH
1753: LD_INT 1
1755: MINUS
1756: PPUSH
1757: CALL_OW 12
1761: PPUSH
1762: LD_INT 3
1764: PPUSH
1765: CALL 811 0 2
1769: GO 1839
1771: LD_INT 4
1773: DOUBLE
1774: EQUAL
1775: IFTRUE 1779
1777: GO 1838
1779: POP
// begin PrepareAttack ( Rand ( MaxVehs div 2 , MaxVehs ) , 2 ) ;
1780: LD_EXP 6
1784: PUSH
1785: LD_INT 2
1787: DIV
1788: PPUSH
1789: LD_EXP 6
1793: PPUSH
1794: CALL_OW 12
1798: PPUSH
1799: LD_INT 2
1801: PPUSH
1802: CALL 811 0 2
// PrepareAttack ( Rand ( MaxVehs div 2 , MaxVehs - 1 ) , 3 ) ;
1806: LD_EXP 6
1810: PUSH
1811: LD_INT 2
1813: DIV
1814: PPUSH
1815: LD_EXP 6
1819: PUSH
1820: LD_INT 1
1822: MINUS
1823: PPUSH
1824: CALL_OW 12
1828: PPUSH
1829: LD_INT 3
1831: PPUSH
1832: CALL 811 0 2
// end ; end ;
1836: GO 1839
1838: POP
// enable ;
1839: ENABLE
// end ;
1840: END
// export ARepair , WaitingVehs ; export function PrepareAmericans ; var i ; begin
1841: LD_INT 0
1843: PPUSH
1844: PPUSH
// uc_side = 1 ;
1845: LD_ADDR_OWVAR 20
1849: PUSH
1850: LD_INT 1
1852: ST_TO_ADDR
// uc_nation = 1 ;
1853: LD_ADDR_OWVAR 21
1857: PUSH
1858: LD_INT 1
1860: ST_TO_ADDR
// InitHc ;
1861: CALL_OW 19
// PrepareBase ( 1 , AmericanArea , [ Rand ( 3 , 6 ) , Rand ( 4 , 6 ) , Rand ( 5 , 7 ) ] [ difficulty ] , 3 , 0 , 0 , 0 ) ;
1865: LD_INT 1
1867: PPUSH
1868: LD_INT 7
1870: PPUSH
1871: LD_INT 3
1873: PPUSH
1874: LD_INT 6
1876: PPUSH
1877: CALL_OW 12
1881: PUSH
1882: LD_INT 4
1884: PPUSH
1885: LD_INT 6
1887: PPUSH
1888: CALL_OW 12
1892: PUSH
1893: LD_INT 5
1895: PPUSH
1896: LD_INT 7
1898: PPUSH
1899: CALL_OW 12
1903: PUSH
1904: EMPTY
1905: LIST
1906: LIST
1907: LIST
1908: PUSH
1909: LD_OWVAR 67
1913: ARRAY
1914: PPUSH
1915: LD_INT 3
1917: PPUSH
1918: LD_INT 0
1920: PPUSH
1921: LD_INT 0
1923: PPUSH
1924: LD_INT 0
1926: PPUSH
1927: CALL 3594 0 7
// for i = 1 to 3 do
1931: LD_ADDR_VAR 0 2
1935: PUSH
1936: DOUBLE
1937: LD_INT 1
1939: DEC
1940: ST_TO_ADDR
1941: LD_INT 3
1943: PUSH
1944: FOR_TO
1945: IFFALSE 1988
// begin PrepareMechanic ( false , [ 3 , 4 , 5 ] [ difficulty ] ) ;
1947: LD_INT 0
1949: PPUSH
1950: LD_INT 3
1952: PUSH
1953: LD_INT 4
1955: PUSH
1956: LD_INT 5
1958: PUSH
1959: EMPTY
1960: LIST
1961: LIST
1962: LIST
1963: PUSH
1964: LD_OWVAR 67
1968: ARRAY
1969: PPUSH
1970: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , ut ) ;
1974: CALL_OW 44
1978: PPUSH
1979: LD_INT 231
1981: PPUSH
1982: CALL_OW 52
// end ;
1986: GO 1944
1988: POP
1989: POP
// end ;
1990: LD_VAR 0 1
1994: RET
// every 0 0$1 do var i , cargo , crane ;
1995: GO 1997
1997: DISABLE
1998: LD_INT 0
2000: PPUSH
2001: PPUSH
2002: PPUSH
// begin enable ;
2003: ENABLE
// if FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_crane ] , [ f_ok ] ] ) then
2004: LD_INT 22
2006: PUSH
2007: LD_INT 1
2009: PUSH
2010: EMPTY
2011: LIST
2012: LIST
2013: PUSH
2014: LD_INT 34
2016: PUSH
2017: LD_INT 13
2019: PUSH
2020: EMPTY
2021: LIST
2022: LIST
2023: PUSH
2024: LD_INT 50
2026: PUSH
2027: EMPTY
2028: LIST
2029: PUSH
2030: EMPTY
2031: LIST
2032: LIST
2033: LIST
2034: PPUSH
2035: CALL_OW 69
2039: IFFALSE 2084
// crane = FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_crane ] , [ f_ok ] ] ) else
2041: LD_ADDR_VAR 0 3
2045: PUSH
2046: LD_INT 22
2048: PUSH
2049: LD_INT 1
2051: PUSH
2052: EMPTY
2053: LIST
2054: LIST
2055: PUSH
2056: LD_INT 34
2058: PUSH
2059: LD_INT 13
2061: PUSH
2062: EMPTY
2063: LIST
2064: LIST
2065: PUSH
2066: LD_INT 50
2068: PUSH
2069: EMPTY
2070: LIST
2071: PUSH
2072: EMPTY
2073: LIST
2074: LIST
2075: LIST
2076: PPUSH
2077: CALL_OW 69
2081: ST_TO_ADDR
2082: GO 2118
// crane = FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_apeman_engineer ] ] ) ;
2084: LD_ADDR_VAR 0 3
2088: PUSH
2089: LD_INT 22
2091: PUSH
2092: LD_INT 1
2094: PUSH
2095: EMPTY
2096: LIST
2097: LIST
2098: PUSH
2099: LD_INT 25
2101: PUSH
2102: LD_INT 16
2104: PUSH
2105: EMPTY
2106: LIST
2107: LIST
2108: PUSH
2109: EMPTY
2110: LIST
2111: LIST
2112: PPUSH
2113: CALL_OW 69
2117: ST_TO_ADDR
// if crane then
2118: LD_VAR 0 3
2122: IFFALSE 2201
// begin if not ExistMc ( ARepair ) then
2124: LD_EXP 7
2128: PPUSH
2129: CALL_OW 386
2133: NOT
2134: IFFALSE 2199
// ARepair = McRepair ( 1 , crane , FilterUnitsInArea ( AmericanArea , [ [ f_side , 1 ] , [ f_type , unit_building ] ] ) , [ [ mcr_bui_limit , 1000 ] ] ) ;
2136: LD_ADDR_EXP 7
2140: PUSH
2141: LD_INT 1
2143: PPUSH
2144: LD_VAR 0 3
2148: PPUSH
2149: LD_INT 7
2151: PPUSH
2152: LD_INT 22
2154: PUSH
2155: LD_INT 1
2157: PUSH
2158: EMPTY
2159: LIST
2160: LIST
2161: PUSH
2162: LD_INT 21
2164: PUSH
2165: LD_INT 3
2167: PUSH
2168: EMPTY
2169: LIST
2170: LIST
2171: PUSH
2172: EMPTY
2173: LIST
2174: LIST
2175: PPUSH
2176: CALL_OW 70
2180: PPUSH
2181: LD_INT 6
2183: PUSH
2184: LD_INT 1000
2186: PUSH
2187: EMPTY
2188: LIST
2189: LIST
2190: PUSH
2191: EMPTY
2192: LIST
2193: PPUSH
2194: CALL_OW 414
2198: ST_TO_ADDR
// end else
2199: GO 2217
// if not crane then
2201: LD_VAR 0 3
2205: NOT
2206: IFFALSE 2217
// KillMc ( ARepair ) ;
2208: LD_EXP 7
2212: PPUSH
2213: CALL_OW 387
// if FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_cargo_bay ] , [ f_ok ] ] ) then
2217: LD_INT 22
2219: PUSH
2220: LD_INT 1
2222: PUSH
2223: EMPTY
2224: LIST
2225: LIST
2226: PUSH
2227: LD_INT 34
2229: PUSH
2230: LD_INT 12
2232: PUSH
2233: EMPTY
2234: LIST
2235: LIST
2236: PUSH
2237: LD_INT 50
2239: PUSH
2240: EMPTY
2241: LIST
2242: PUSH
2243: EMPTY
2244: LIST
2245: LIST
2246: LIST
2247: PPUSH
2248: CALL_OW 69
2252: IFFALSE 2297
// cargo = FilterAllUnits ( [ [ f_side , 1 ] , [ f_weapon , us_cargo_bay ] , [ f_ok ] ] ) else
2254: LD_ADDR_VAR 0 2
2258: PUSH
2259: LD_INT 22
2261: PUSH
2262: LD_INT 1
2264: PUSH
2265: EMPTY
2266: LIST
2267: LIST
2268: PUSH
2269: LD_INT 34
2271: PUSH
2272: LD_INT 12
2274: PUSH
2275: EMPTY
2276: LIST
2277: LIST
2278: PUSH
2279: LD_INT 50
2281: PUSH
2282: EMPTY
2283: LIST
2284: PUSH
2285: EMPTY
2286: LIST
2287: LIST
2288: LIST
2289: PPUSH
2290: CALL_OW 69
2294: ST_TO_ADDR
2295: GO 2331
// cargo = FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_apeman_engineer ] ] ) ;
2297: LD_ADDR_VAR 0 2
2301: PUSH
2302: LD_INT 22
2304: PUSH
2305: LD_INT 1
2307: PUSH
2308: EMPTY
2309: LIST
2310: LIST
2311: PUSH
2312: LD_INT 25
2314: PUSH
2315: LD_INT 16
2317: PUSH
2318: EMPTY
2319: LIST
2320: LIST
2321: PUSH
2322: EMPTY
2323: LIST
2324: LIST
2325: PPUSH
2326: CALL_OW 69
2330: ST_TO_ADDR
// if cargo then
2331: LD_VAR 0 2
2335: IFFALSE 2379
// if GetListOfCratesInArea ( AmericanCratesArea ) then
2337: LD_INT 8
2339: PPUSH
2340: CALL_OW 435
2344: IFFALSE 2379
// AddComCollect ( cargo , GetListOfCratesInArea ( AmericanCratesArea ) [ 1 ] , GetListOfCratesInArea ( AmericanCratesArea ) [ 2 ] ) ;
2346: LD_VAR 0 2
2350: PPUSH
2351: LD_INT 8
2353: PPUSH
2354: CALL_OW 435
2358: PUSH
2359: LD_INT 1
2361: ARRAY
2362: PPUSH
2363: LD_INT 8
2365: PPUSH
2366: CALL_OW 435
2370: PUSH
2371: LD_INT 2
2373: ARRAY
2374: PPUSH
2375: CALL_OW 177
// if IsOK ( ut ) then
2379: LD_INT 231
2381: PPUSH
2382: CALL_OW 302
2386: IFFALSE 2504
// begin if not UnitsInside ( ut ) then
2388: LD_INT 231
2390: PPUSH
2391: CALL_OW 313
2395: NOT
2396: IFFALSE 2417
// ComEnterUnit ( UnitsInside ( uf ) [ 1 ] , ut ) ;
2398: LD_INT 229
2400: PPUSH
2401: CALL_OW 313
2405: PUSH
2406: LD_INT 1
2408: ARRAY
2409: PPUSH
2410: LD_INT 231
2412: PPUSH
2413: CALL_OW 120
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_control , control_remote ] ] ) do
2417: LD_ADDR_VAR 0 1
2421: PUSH
2422: LD_INT 22
2424: PUSH
2425: LD_INT 1
2427: PUSH
2428: EMPTY
2429: LIST
2430: LIST
2431: PUSH
2432: LD_INT 33
2434: PUSH
2435: LD_INT 2
2437: PUSH
2438: EMPTY
2439: LIST
2440: LIST
2441: PUSH
2442: EMPTY
2443: LIST
2444: LIST
2445: PPUSH
2446: CALL_OW 69
2450: PUSH
2451: FOR_IN
2452: IFFALSE 2502
// if not IsControledBy ( i ) then
2454: LD_VAR 0 1
2458: PPUSH
2459: CALL_OW 312
2463: NOT
2464: IFFALSE 2500
// ComLinkTo ( i , UnitsInside ( ut ) [ Rand ( 1 , UnitsInside ( ut ) ) ] ) ;
2466: LD_VAR 0 1
2470: PPUSH
2471: LD_INT 231
2473: PPUSH
2474: CALL_OW 313
2478: PUSH
2479: LD_INT 1
2481: PPUSH
2482: LD_INT 231
2484: PPUSH
2485: CALL_OW 313
2489: PPUSH
2490: CALL_OW 12
2494: ARRAY
2495: PPUSH
2496: CALL_OW 135
2500: GO 2451
2502: POP
2503: POP
// end ; for i in FilterUnitsInArea ( AmericanArea , [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) do
2504: LD_ADDR_VAR 0 1
2508: PUSH
2509: LD_INT 7
2511: PPUSH
2512: LD_INT 22
2514: PUSH
2515: LD_INT 1
2517: PUSH
2518: EMPTY
2519: LIST
2520: LIST
2521: PUSH
2522: LD_INT 21
2524: PUSH
2525: LD_INT 2
2527: PUSH
2528: EMPTY
2529: LIST
2530: LIST
2531: PUSH
2532: EMPTY
2533: LIST
2534: LIST
2535: PPUSH
2536: CALL_OW 70
2540: PUSH
2541: FOR_IN
2542: IFFALSE 2585
// if GetFuel ( i ) < 25 then
2544: LD_VAR 0 1
2548: PPUSH
2549: CALL_OW 261
2553: PUSH
2554: LD_INT 25
2556: LESS
2557: IFFALSE 2583
// begin ComMoveUnit ( i , ud ) ;
2559: LD_VAR 0 1
2563: PPUSH
2564: LD_INT 227
2566: PPUSH
2567: CALL_OW 112
// AddComRefuel ( i , ud ) ;
2571: LD_VAR 0 1
2575: PPUSH
2576: LD_INT 227
2578: PPUSH
2579: CALL_OW 210
// end ;
2583: GO 2541
2585: POP
2586: POP
// end ;
2587: PPOPN 3
2589: END
// every 0 0$1 trigger tick > [ 20 20$0 , 15 15$0 , 15 15$0 ] [ difficulty ] do var i , phase , sent_vehs ;
2590: LD_OWVAR 1
2594: PUSH
2595: LD_INT 42000
2597: PUSH
2598: LD_INT 31500
2600: PUSH
2601: LD_INT 31500
2603: PUSH
2604: EMPTY
2605: LIST
2606: LIST
2607: LIST
2608: PUSH
2609: LD_OWVAR 67
2613: ARRAY
2614: GREATER
2615: IFFALSE 3050
2617: GO 2619
2619: DISABLE
2620: LD_INT 0
2622: PPUSH
2623: PPUSH
2624: PPUSH
// begin enable ;
2625: ENABLE
// case tick of 15 15$0 .. 30 30$0 :
2626: LD_OWVAR 1
2630: PUSH
2631: LD_INT 31500
2633: DOUBLE
2634: GREATEREQUAL
2635: IFFALSE 2643
2637: LD_INT 63000
2639: DOUBLE
2640: LESSEQUAL
2641: IFTRUE 2645
2643: GO 2656
2645: POP
// phase = 3 ; 30 30$0 + 1 .. 45 45$0 :
2646: LD_ADDR_VAR 0 2
2650: PUSH
2651: LD_INT 3
2653: ST_TO_ADDR
2654: GO 2694
2656: LD_INT 63000
2658: PUSH
2659: LD_INT 1
2661: PLUS
2662: DOUBLE
2663: GREATEREQUAL
2664: IFFALSE 2672
2666: LD_INT 94500
2668: DOUBLE
2669: LESSEQUAL
2670: IFTRUE 2674
2672: GO 2685
2674: POP
// phase = 2 ; else
2675: LD_ADDR_VAR 0 2
2679: PUSH
2680: LD_INT 2
2682: ST_TO_ADDR
2683: GO 2694
2685: POP
// phase = 3 ; end ;
2686: LD_ADDR_VAR 0 2
2690: PUSH
2691: LD_INT 3
2693: ST_TO_ADDR
// if not IsBusy ( uf ) and IsOK ( ut ) and GetSide ( uf ) = 1 then
2694: LD_INT 229
2696: PPUSH
2697: CALL_OW 315
2701: NOT
2702: PUSH
2703: LD_INT 231
2705: PPUSH
2706: CALL_OW 302
2710: AND
2711: PUSH
2712: LD_INT 229
2714: PPUSH
2715: CALL_OW 255
2719: PUSH
2720: LD_INT 1
2722: EQUAL
2723: AND
2724: IFFALSE 2959
// case [ Rand ( 1 , 2 ) , Rand ( 1 , 3 ) , Rand ( 2 , 3 ) ] [ phase ] of 1 :
2726: LD_INT 1
2728: PPUSH
2729: LD_INT 2
2731: PPUSH
2732: CALL_OW 12
2736: PUSH
2737: LD_INT 1
2739: PPUSH
2740: LD_INT 3
2742: PPUSH
2743: CALL_OW 12
2747: PUSH
2748: LD_INT 2
2750: PPUSH
2751: LD_INT 3
2753: PPUSH
2754: CALL_OW 12
2758: PUSH
2759: EMPTY
2760: LIST
2761: LIST
2762: LIST
2763: PUSH
2764: LD_VAR 0 2
2768: ARRAY
2769: PUSH
2770: LD_INT 1
2772: DOUBLE
2773: EQUAL
2774: IFTRUE 2778
2776: GO 2839
2778: POP
// ComConstruct ( uf , us_medium_tracked , engine_combustion , [ control_manual , control_remote ] [ IsOK ( ut ) + 1 ] , [ us_light_gun , us_double_gun ] [ Rand ( 1 , 2 ) ] ) ; 2 :
2779: LD_INT 229
2781: PPUSH
2782: LD_INT 3
2784: PPUSH
2785: LD_INT 1
2787: PPUSH
2788: LD_INT 1
2790: PUSH
2791: LD_INT 2
2793: PUSH
2794: EMPTY
2795: LIST
2796: LIST
2797: PUSH
2798: LD_INT 231
2800: PPUSH
2801: CALL_OW 302
2805: PUSH
2806: LD_INT 1
2808: PLUS
2809: ARRAY
2810: PPUSH
2811: LD_INT 3
2813: PUSH
2814: LD_INT 5
2816: PUSH
2817: EMPTY
2818: LIST
2819: LIST
2820: PUSH
2821: LD_INT 1
2823: PPUSH
2824: LD_INT 2
2826: PPUSH
2827: CALL_OW 12
2831: ARRAY
2832: PPUSH
2833: CALL_OW 125
2837: GO 2959
2839: LD_INT 2
2841: DOUBLE
2842: EQUAL
2843: IFTRUE 2847
2845: GO 2908
2847: POP
// ComConstruct ( uf , [ us_medium_tracked , us_heavy_tracked ] [ Rand ( 1 , 2 ) ] , engine_combustion , [ control_manual , control_remote ] [ IsOK ( ut ) + 1 ] , us_double_gun ) ; 3 :
2848: LD_INT 229
2850: PPUSH
2851: LD_INT 3
2853: PUSH
2854: LD_INT 4
2856: PUSH
2857: EMPTY
2858: LIST
2859: LIST
2860: PUSH
2861: LD_INT 1
2863: PPUSH
2864: LD_INT 2
2866: PPUSH
2867: CALL_OW 12
2871: ARRAY
2872: PPUSH
2873: LD_INT 1
2875: PPUSH
2876: LD_INT 1
2878: PUSH
2879: LD_INT 2
2881: PUSH
2882: EMPTY
2883: LIST
2884: LIST
2885: PUSH
2886: LD_INT 231
2888: PPUSH
2889: CALL_OW 302
2893: PUSH
2894: LD_INT 1
2896: PLUS
2897: ARRAY
2898: PPUSH
2899: LD_INT 5
2901: PPUSH
2902: CALL_OW 125
2906: GO 2959
2908: LD_INT 3
2910: DOUBLE
2911: EQUAL
2912: IFTRUE 2916
2914: GO 2958
2916: POP
// ComConstruct ( uf , us_heavy_tracked , engine_combustion , [ control_manual , control_remote ] [ IsOK ( ut ) + 1 ] , us_rocket_launcher ) ; end ;
2917: LD_INT 229
2919: PPUSH
2920: LD_INT 4
2922: PPUSH
2923: LD_INT 1
2925: PPUSH
2926: LD_INT 1
2928: PUSH
2929: LD_INT 2
2931: PUSH
2932: EMPTY
2933: LIST
2934: LIST
2935: PUSH
2936: LD_INT 231
2938: PPUSH
2939: CALL_OW 302
2943: PUSH
2944: LD_INT 1
2946: PLUS
2947: ARRAY
2948: PPUSH
2949: LD_INT 7
2951: PPUSH
2952: CALL_OW 125
2956: GO 2959
2958: POP
// if WaitingVehs > 2 then
2959: LD_EXP 8
2963: PUSH
2964: LD_INT 2
2966: GREATER
2967: IFFALSE 3050
// begin for i in WaitingVehs do
2969: LD_ADDR_VAR 0 1
2973: PUSH
2974: LD_EXP 8
2978: PUSH
2979: FOR_IN
2980: IFFALSE 3041
// if not ExistMc ( AAttack ) then
2982: LD_EXP 5
2986: PPUSH
2987: CALL_OW 386
2991: NOT
2992: IFFALSE 3025
// AAttack = McAttack ( 1 , ATargets , i , [ mc_murder ] ) else
2994: LD_ADDR_EXP 5
2998: PUSH
2999: LD_INT 1
3001: PPUSH
3002: LD_EXP 4
3006: PPUSH
3007: LD_VAR 0 1
3011: PPUSH
3012: LD_INT 12
3014: PUSH
3015: EMPTY
3016: LIST
3017: PPUSH
3018: CALL_OW 402
3022: ST_TO_ADDR
3023: GO 3039
// AddMcUnits ( AAttack , i ) ;
3025: LD_EXP 5
3029: PPUSH
3030: LD_VAR 0 1
3034: PPUSH
3035: CALL_OW 390
3039: GO 2979
3041: POP
3042: POP
// WaitingVehs = [ ] ;
3043: LD_ADDR_EXP 8
3047: PUSH
3048: EMPTY
3049: ST_TO_ADDR
// end ; end ;
3050: PPOPN 3
3052: END
// on VehicleConstructed ( v , f ) do begin if f = uf then
3053: LD_VAR 0 2
3057: PUSH
3058: LD_INT 229
3060: EQUAL
3061: IFFALSE 3079
// WaitingVehs = WaitingVehs ^ v ;
3063: LD_ADDR_EXP 8
3067: PUSH
3068: LD_EXP 8
3072: PUSH
3073: LD_VAR 0 1
3077: ADD
3078: ST_TO_ADDR
// end ;
3079: PPOPN 2
3081: END
// on UnitDestroyed ( un ) do begin if GetWeapon ( un ) = us_cargo_bay and GetSide ( un ) = 1 then
3082: LD_VAR 0 1
3086: PPUSH
3087: CALL_OW 264
3091: PUSH
3092: LD_INT 12
3094: EQUAL
3095: PUSH
3096: LD_VAR 0 1
3100: PPUSH
3101: CALL_OW 255
3105: PUSH
3106: LD_INT 1
3108: EQUAL
3109: AND
3110: IFFALSE 3151
// ComConstruct ( uf , us_medium_tracked , engine_combustion , [ control_manual , control_remote ] [ IsOK ( ut ) + 1 ] , us_cargo_bay ) ;
3112: LD_INT 229
3114: PPUSH
3115: LD_INT 3
3117: PPUSH
3118: LD_INT 1
3120: PPUSH
3121: LD_INT 1
3123: PUSH
3124: LD_INT 2
3126: PUSH
3127: EMPTY
3128: LIST
3129: LIST
3130: PUSH
3131: LD_INT 231
3133: PPUSH
3134: CALL_OW 302
3138: PUSH
3139: LD_INT 1
3141: PLUS
3142: ARRAY
3143: PPUSH
3144: LD_INT 12
3146: PPUSH
3147: CALL_OW 125
// end ; end_of_file
3151: PPOPN 1
3153: END
// every 0 0$1 do
3154: GO 3156
3156: DISABLE
// begin case tick of 1 .. 15 15$0 :
3157: LD_OWVAR 1
3161: PUSH
3162: LD_INT 1
3164: DOUBLE
3165: GREATEREQUAL
3166: IFFALSE 3174
3168: LD_INT 31500
3170: DOUBLE
3171: LESSEQUAL
3172: IFTRUE 3176
3174: GO 3194
3176: POP
// Wait ( Rand ( 1 1$30 , 3 3$30 ) ) ; 15 15$0 + 1 .. 45 45$0 :
3177: LD_INT 3150
3179: PPUSH
3180: LD_INT 7350
3182: PPUSH
3183: CALL_OW 12
3187: PPUSH
3188: CALL_OW 67
3192: GO 3246
3194: LD_INT 31500
3196: PUSH
3197: LD_INT 1
3199: PLUS
3200: DOUBLE
3201: GREATEREQUAL
3202: IFFALSE 3210
3204: LD_INT 94500
3206: DOUBLE
3207: LESSEQUAL
3208: IFTRUE 3212
3210: GO 3230
3212: POP
// Wait ( Rand ( 2 2$0 , 5 5$0 ) ) ; else
3213: LD_INT 4200
3215: PPUSH
3216: LD_INT 10500
3218: PPUSH
3219: CALL_OW 12
3223: PPUSH
3224: CALL_OW 67
3228: GO 3246
3230: POP
// Wait ( Rand ( 3 3$0 , 6 6$0 ) ) ; end ;
3231: LD_INT 6300
3233: PPUSH
3234: LD_INT 12600
3236: PPUSH
3237: CALL_OW 12
3241: PPUSH
3242: CALL_OW 67
// CreateCratesAnywhere ( Rand ( 3 , 5 ) , true ) ;
3246: LD_INT 3
3248: PPUSH
3249: LD_INT 5
3251: PPUSH
3252: CALL_OW 12
3256: PPUSH
3257: LD_INT 1
3259: PPUSH
3260: CALL_OW 57
// enable ;
3264: ENABLE
// end ;
3265: END
// export Points ; every 1 1$0 do
3266: GO 3268
3268: DISABLE
// begin Points = Points + 1 ;
3269: LD_ADDR_EXP 9
3273: PUSH
3274: LD_EXP 9
3278: PUSH
3279: LD_INT 1
3281: PLUS
3282: ST_TO_ADDR
// enable ;
3283: ENABLE
// end ;
3284: END
// every 0 0$1 trigger FilterUnitsInArea ( ExitArea , [ [ f_side , 2 ] , [ f_not , [ f_type , unit_building ] ] ] ) do var i ;
3285: LD_INT 2
3287: PPUSH
3288: LD_INT 22
3290: PUSH
3291: LD_INT 2
3293: PUSH
3294: EMPTY
3295: LIST
3296: LIST
3297: PUSH
3298: LD_INT 3
3300: PUSH
3301: LD_INT 21
3303: PUSH
3304: LD_INT 3
3306: PUSH
3307: EMPTY
3308: LIST
3309: LIST
3310: PUSH
3311: EMPTY
3312: LIST
3313: LIST
3314: PUSH
3315: EMPTY
3316: LIST
3317: LIST
3318: PPUSH
3319: CALL_OW 70
3323: IFFALSE 3559
3325: GO 3327
3327: DISABLE
3328: LD_INT 0
3330: PPUSH
// begin enable ;
3331: ENABLE
// for i in FilterUnitsInArea ( ExitArea , [ [ f_side , 2 ] , [ f_not , [ f_type , unit_building ] ] ] ) do
3332: LD_ADDR_VAR 0 1
3336: PUSH
3337: LD_INT 2
3339: PPUSH
3340: LD_INT 22
3342: PUSH
3343: LD_INT 2
3345: PUSH
3346: EMPTY
3347: LIST
3348: LIST
3349: PUSH
3350: LD_INT 3
3352: PUSH
3353: LD_INT 21
3355: PUSH
3356: LD_INT 3
3358: PUSH
3359: EMPTY
3360: LIST
3361: LIST
3362: PUSH
3363: EMPTY
3364: LIST
3365: LIST
3366: PUSH
3367: EMPTY
3368: LIST
3369: LIST
3370: PPUSH
3371: CALL_OW 70
3375: PUSH
3376: FOR_IN
3377: IFFALSE 3448
// if GetWeapon ( i ) = ar_cargo_bay or GetWeapon ( i ) = us_cargo_bay then
3379: LD_VAR 0 1
3383: PPUSH
3384: CALL_OW 264
3388: PUSH
3389: LD_INT 32
3391: EQUAL
3392: PUSH
3393: LD_VAR 0 1
3397: PPUSH
3398: CALL_OW 264
3402: PUSH
3403: LD_INT 12
3405: EQUAL
3406: OR
3407: IFFALSE 3446
// begin Points = Points + ( GetCargo ( i , mat_cans ) div 10 ) ;
3409: LD_ADDR_EXP 9
3413: PUSH
3414: LD_EXP 9
3418: PUSH
3419: LD_VAR 0 1
3423: PPUSH
3424: LD_INT 1
3426: PPUSH
3427: CALL_OW 289
3431: PUSH
3432: LD_INT 10
3434: DIV
3435: PLUS
3436: ST_TO_ADDR
// RemoveUnit ( i ) ;
3437: LD_VAR 0 1
3441: PPUSH
3442: CALL_OW 64
// end ;
3446: GO 3376
3448: POP
3449: POP
// if FilterUnitsExceptArea ( ExitArea , [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] ] ) = 0 then
3450: LD_INT 2
3452: PPUSH
3453: LD_INT 22
3455: PUSH
3456: LD_INT 2
3458: PUSH
3459: EMPTY
3460: LIST
3461: LIST
3462: PUSH
3463: LD_INT 21
3465: PUSH
3466: LD_INT 1
3468: PUSH
3469: EMPTY
3470: LIST
3471: LIST
3472: PUSH
3473: LD_INT 23
3475: PUSH
3476: LD_INT 2
3478: PUSH
3479: EMPTY
3480: LIST
3481: LIST
3482: PUSH
3483: EMPTY
3484: LIST
3485: LIST
3486: LIST
3487: PPUSH
3488: CALL_OW 71
3492: PUSH
3493: LD_INT 0
3495: EQUAL
3496: IFFALSE 3559
// begin InGameOn ;
3498: CALL_OW 8
// DialogueOn ;
3502: CALL_OW 6
// Say ( Theo , de-t-1 ) ;
3506: LD_EXP 1
3510: PPUSH
3511: LD_STRING de-t-1
3513: PPUSH
3514: CALL_OW 88
// SayRadio ( Mahmoud , de-m-1 ) ;
3518: LD_EXP 2
3522: PPUSH
3523: LD_STRING de-m-1
3525: PPUSH
3526: CALL_OW 94
// DialogueOff ;
3530: CALL_OW 7
// InGameOff ;
3534: CALL_OW 9
// ToLua ( setPointsSkirmish(2,  & Points & ); ) ;
3538: LD_STRING setPointsSkirmish(2, 
3540: PUSH
3541: LD_EXP 9
3545: STR
3546: PUSH
3547: LD_STRING );
3549: STR
3550: PPUSH
3551: CALL_OW 559
// YouWin ;
3555: CALL_OW 103
// end ; end ;
3559: PPOPN 1
3561: END
// every 0 0$1 do
3562: GO 3564
3564: DISABLE
// begin enable ;
3565: ENABLE
// display_strings = [ #Time , tick , #Points , Points ] ;
3566: LD_ADDR_OWVAR 47
3570: PUSH
3571: LD_STRING #Time
3573: PUSH
3574: LD_OWVAR 1
3578: PUSH
3579: LD_STRING #Points
3581: PUSH
3582: LD_EXP 9
3586: PUSH
3587: EMPTY
3588: LIST
3589: LIST
3590: LIST
3591: LIST
3592: ST_TO_ADDR
// end ; end_of_file
3593: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
3594: LD_INT 0
3596: PPUSH
3597: PPUSH
3598: PPUSH
3599: PPUSH
// InitHc ;
3600: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
3604: LD_ADDR_VAR 0 9
3608: PUSH
3609: LD_VAR 0 2
3613: PPUSH
3614: LD_INT 22
3616: PUSH
3617: LD_VAR 0 1
3621: PUSH
3622: EMPTY
3623: LIST
3624: LIST
3625: PUSH
3626: LD_INT 21
3628: PUSH
3629: LD_INT 3
3631: PUSH
3632: EMPTY
3633: LIST
3634: LIST
3635: PUSH
3636: EMPTY
3637: LIST
3638: LIST
3639: PPUSH
3640: CALL_OW 70
3644: PUSH
3645: FOR_IN
3646: IFFALSE 4133
// case GetBType ( i ) of b_depot , b_warehouse :
3648: LD_VAR 0 9
3652: PPUSH
3653: CALL_OW 266
3657: PUSH
3658: LD_INT 0
3660: DOUBLE
3661: EQUAL
3662: IFTRUE 3672
3664: LD_INT 1
3666: DOUBLE
3667: EQUAL
3668: IFTRUE 3672
3670: GO 3814
3672: POP
// for j = 1 to engineers do
3673: LD_ADDR_VAR 0 10
3677: PUSH
3678: DOUBLE
3679: LD_INT 1
3681: DEC
3682: ST_TO_ADDR
3683: LD_VAR 0 7
3687: PUSH
3688: FOR_TO
3689: IFFALSE 3810
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
3691: LD_INT 1
3693: PPUSH
3694: LD_INT 2
3696: PPUSH
3697: CALL_OW 12
3701: PPUSH
3702: LD_VAR 0 3
3706: PPUSH
3707: CALL_OW 382
// h = CreateHuman ;
3711: LD_ADDR_VAR 0 11
3715: PUSH
3716: CALL_OW 44
3720: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
3721: LD_VAR 0 11
3725: PPUSH
3726: LD_VAR 0 9
3730: PPUSH
3731: CALL_OW 250
3735: PPUSH
3736: LD_VAR 0 9
3740: PPUSH
3741: CALL_OW 254
3745: PPUSH
3746: LD_INT 4
3748: PPUSH
3749: LD_INT 10
3751: PPUSH
3752: CALL_OW 12
3756: PPUSH
3757: CALL_OW 272
3761: PPUSH
3762: LD_VAR 0 9
3766: PPUSH
3767: CALL_OW 251
3771: PPUSH
3772: LD_VAR 0 9
3776: PPUSH
3777: CALL_OW 254
3781: PPUSH
3782: LD_INT 4
3784: PPUSH
3785: LD_INT 10
3787: PPUSH
3788: CALL_OW 12
3792: PPUSH
3793: CALL_OW 273
3797: PPUSH
3798: LD_INT 8
3800: PPUSH
3801: LD_INT 0
3803: PPUSH
3804: CALL_OW 50
// end ; b_armoury , b_barracks :
3808: GO 3688
3810: POP
3811: POP
3812: GO 4131
3814: LD_INT 4
3816: DOUBLE
3817: EQUAL
3818: IFTRUE 3828
3820: LD_INT 5
3822: DOUBLE
3823: EQUAL
3824: IFTRUE 3828
3826: GO 3897
3828: POP
// for j = 1 to armoury do
3829: LD_ADDR_VAR 0 10
3833: PUSH
3834: DOUBLE
3835: LD_INT 1
3837: DEC
3838: ST_TO_ADDR
3839: LD_VAR 0 6
3843: PUSH
3844: FOR_TO
3845: IFFALSE 3893
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
3847: LD_INT 1
3849: PPUSH
3850: LD_INT 2
3852: PPUSH
3853: CALL_OW 12
3857: PPUSH
3858: LD_VAR 0 3
3862: PPUSH
3863: CALL_OW 381
// h = CreateHuman ;
3867: LD_ADDR_VAR 0 11
3871: PUSH
3872: CALL_OW 44
3876: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
3877: LD_VAR 0 11
3881: PPUSH
3882: LD_VAR 0 9
3886: PPUSH
3887: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
3891: GO 3844
3893: POP
3894: POP
3895: GO 4131
3897: LD_INT 9
3899: DOUBLE
3900: EQUAL
3901: IFTRUE 3917
3903: LD_INT 7
3905: DOUBLE
3906: EQUAL
3907: IFTRUE 3917
3909: LD_INT 8
3911: DOUBLE
3912: EQUAL
3913: IFTRUE 3917
3915: GO 3986
3917: POP
// for j = 1 to lab do
3918: LD_ADDR_VAR 0 10
3922: PUSH
3923: DOUBLE
3924: LD_INT 1
3926: DEC
3927: ST_TO_ADDR
3928: LD_VAR 0 5
3932: PUSH
3933: FOR_TO
3934: IFFALSE 3982
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
3936: LD_INT 1
3938: PPUSH
3939: LD_INT 2
3941: PPUSH
3942: CALL_OW 12
3946: PPUSH
3947: LD_VAR 0 3
3951: PPUSH
3952: CALL_OW 384
// h = CreateHuman ;
3956: LD_ADDR_VAR 0 11
3960: PUSH
3961: CALL_OW 44
3965: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
3966: LD_VAR 0 11
3970: PPUSH
3971: LD_VAR 0 9
3975: PPUSH
3976: CALL_OW 52
// end ; b_workshop , b_factory :
3980: GO 3933
3982: POP
3983: POP
3984: GO 4131
3986: LD_INT 2
3988: DOUBLE
3989: EQUAL
3990: IFTRUE 4000
3992: LD_INT 3
3994: DOUBLE
3995: EQUAL
3996: IFTRUE 4000
3998: GO 4069
4000: POP
// for j = 1 to workshop do
4001: LD_ADDR_VAR 0 10
4005: PUSH
4006: DOUBLE
4007: LD_INT 1
4009: DEC
4010: ST_TO_ADDR
4011: LD_VAR 0 4
4015: PUSH
4016: FOR_TO
4017: IFFALSE 4065
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
4019: LD_INT 1
4021: PPUSH
4022: LD_INT 2
4024: PPUSH
4025: CALL_OW 12
4029: PPUSH
4030: LD_VAR 0 3
4034: PPUSH
4035: CALL_OW 383
// h = CreateHuman ;
4039: LD_ADDR_VAR 0 11
4043: PUSH
4044: CALL_OW 44
4048: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4049: LD_VAR 0 11
4053: PPUSH
4054: LD_VAR 0 9
4058: PPUSH
4059: CALL_OW 52
// end ; b_breastwork , b_bunker :
4063: GO 4016
4065: POP
4066: POP
4067: GO 4131
4069: LD_INT 31
4071: DOUBLE
4072: EQUAL
4073: IFTRUE 4083
4075: LD_INT 32
4077: DOUBLE
4078: EQUAL
4079: IFTRUE 4083
4081: GO 4130
4083: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
4084: LD_INT 1
4086: PPUSH
4087: LD_INT 2
4089: PPUSH
4090: CALL_OW 12
4094: PPUSH
4095: LD_VAR 0 3
4099: PPUSH
4100: CALL_OW 381
// h = CreateHuman ;
4104: LD_ADDR_VAR 0 11
4108: PUSH
4109: CALL_OW 44
4113: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4114: LD_VAR 0 11
4118: PPUSH
4119: LD_VAR 0 9
4123: PPUSH
4124: CALL_OW 52
// end ; end ;
4128: GO 4131
4130: POP
4131: GO 3645
4133: POP
4134: POP
// end ;
4135: LD_VAR 0 8
4139: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
4140: LD_INT 0
4142: PPUSH
4143: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
4144: LD_ADDR_VAR 0 4
4148: PUSH
4149: LD_INT 22
4151: PUSH
4152: LD_VAR 0 1
4156: PUSH
4157: EMPTY
4158: LIST
4159: LIST
4160: PUSH
4161: LD_INT 3
4163: PUSH
4164: LD_INT 23
4166: PUSH
4167: LD_INT 0
4169: PUSH
4170: EMPTY
4171: LIST
4172: LIST
4173: PUSH
4174: EMPTY
4175: LIST
4176: LIST
4177: PUSH
4178: EMPTY
4179: LIST
4180: LIST
4181: PPUSH
4182: CALL_OW 69
4186: PPUSH
4187: LD_VAR 0 2
4191: PUSH
4192: LD_INT 1
4194: ARRAY
4195: PPUSH
4196: CALL_OW 74
4200: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
4201: LD_VAR 0 4
4205: PPUSH
4206: CALL_OW 247
4210: PUSH
4211: LD_INT 2
4213: EQUAL
4214: IFFALSE 4278
// if GetControl ( i ) = control_manual then
4216: LD_VAR 0 4
4220: PPUSH
4221: CALL_OW 263
4225: PUSH
4226: LD_INT 1
4228: EQUAL
4229: IFFALSE 4248
// i = IsDrivenBy ( i ) else
4231: LD_ADDR_VAR 0 4
4235: PUSH
4236: LD_VAR 0 4
4240: PPUSH
4241: CALL_OW 311
4245: ST_TO_ADDR
4246: GO 4278
// if GetControl ( i ) = control_remote then
4248: LD_VAR 0 4
4252: PPUSH
4253: CALL_OW 263
4257: PUSH
4258: LD_INT 2
4260: EQUAL
4261: IFFALSE 4278
// i = IsControledBy ( i ) ;
4263: LD_ADDR_VAR 0 4
4267: PUSH
4268: LD_VAR 0 4
4272: PPUSH
4273: CALL_OW 312
4277: ST_TO_ADDR
// if GetType ( i ) = unit_building then
4278: LD_VAR 0 4
4282: PPUSH
4283: CALL_OW 247
4287: PUSH
4288: LD_INT 3
4290: EQUAL
4291: IFFALSE 4334
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
4293: LD_ADDR_VAR 0 4
4297: PUSH
4298: LD_VAR 0 4
4302: PPUSH
4303: CALL_OW 313
4307: PPUSH
4308: LD_INT 3
4310: PUSH
4311: LD_INT 23
4313: PUSH
4314: LD_INT 0
4316: PUSH
4317: EMPTY
4318: LIST
4319: LIST
4320: PUSH
4321: EMPTY
4322: LIST
4323: LIST
4324: PPUSH
4325: CALL_OW 72
4329: PUSH
4330: LD_INT 1
4332: ARRAY
4333: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
4334: LD_VAR 0 4
4338: PPUSH
4339: CALL_OW 247
4343: PUSH
4344: LD_INT 1
4346: EQUAL
4347: NOT
4348: IFFALSE 4408
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
4350: LD_ADDR_VAR 0 4
4354: PUSH
4355: LD_INT 22
4357: PUSH
4358: LD_VAR 0 1
4362: PUSH
4363: EMPTY
4364: LIST
4365: LIST
4366: PUSH
4367: LD_INT 21
4369: PUSH
4370: LD_INT 1
4372: PUSH
4373: EMPTY
4374: LIST
4375: LIST
4376: PUSH
4377: LD_INT 3
4379: PUSH
4380: LD_INT 23
4382: PUSH
4383: LD_INT 0
4385: PUSH
4386: EMPTY
4387: LIST
4388: LIST
4389: PUSH
4390: EMPTY
4391: LIST
4392: LIST
4393: PUSH
4394: EMPTY
4395: LIST
4396: LIST
4397: LIST
4398: PPUSH
4399: CALL_OW 69
4403: PUSH
4404: LD_INT 1
4406: ARRAY
4407: ST_TO_ADDR
// result = i ;
4408: LD_ADDR_VAR 0 3
4412: PUSH
4413: LD_VAR 0 4
4417: ST_TO_ADDR
// end ;
4418: LD_VAR 0 3
4422: RET
