// export Antoine , Bojan , S1 , Tarpan ; export ArOther ; export Grit ; export function PrepareOurs ; var i , h ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
// uc_side = 2 ;
   5: LD_ADDR_OWVAR 20
   9: PUSH
  10: LD_INT 2
  12: ST_TO_ADDR
// uc_nation = 2 ;
  13: LD_ADDR_OWVAR 21
  17: PUSH
  18: LD_INT 2
  20: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 3 , 0 ) ;
  21: LD_ADDR_EXP 1
  25: PUSH
  26: LD_STRING Antoine
  28: PPUSH
  29: LD_INT 3
  31: PPUSH
  32: LD_INT 0
  34: PPUSH
  35: CALL_OW 527
  39: ST_TO_ADDR
// PlaceHumanInUnit ( Antoine , v1 ) ;
  40: LD_EXP 1
  44: PPUSH
  45: LD_INT 62
  47: PPUSH
  48: CALL_OW 52
// Tarpan = NewCharacter ( Tarpan ) ;
  52: LD_ADDR_EXP 4
  56: PUSH
  57: LD_STRING Tarpan
  59: PPUSH
  60: CALL_OW 25
  64: ST_TO_ADDR
// PlaceHumanInUnit ( Tarpan , v2 ) ;
  65: LD_EXP 4
  69: PPUSH
  70: LD_INT 60
  72: PPUSH
  73: CALL_OW 52
// InitHc ;
  77: CALL_OW 19
// PrepareScientist ( 1 , 3 ) ;
  81: LD_INT 1
  83: PPUSH
  84: LD_INT 3
  86: PPUSH
  87: CALL_OW 384
// S1 = CreateHuman ;
  91: LD_ADDR_EXP 3
  95: PUSH
  96: CALL_OW 44
 100: ST_TO_ADDR
// PlaceHumanInUnit ( S1 , v3 ) ;
 101: LD_EXP 3
 105: PPUSH
 106: LD_INT 69
 108: PPUSH
 109: CALL_OW 52
// for i = 1 to 2 do
 113: LD_ADDR_VAR 0 2
 117: PUSH
 118: DOUBLE
 119: LD_INT 1
 121: DEC
 122: ST_TO_ADDR
 123: LD_INT 2
 125: PUSH
 126: FOR_TO
 127: IFFALSE 200
// begin InitHc ;
 129: CALL_OW 19
// PrepareSoldier ( 1 , Rand ( 2 , 3 ) ) ;
 133: LD_INT 1
 135: PPUSH
 136: LD_INT 2
 138: PPUSH
 139: LD_INT 3
 141: PPUSH
 142: CALL_OW 12
 146: PPUSH
 147: CALL_OW 381
// h = CreateHuman ;
 151: LD_ADDR_VAR 0 3
 155: PUSH
 156: CALL_OW 44
 160: ST_TO_ADDR
// PlaceUnitXYR ( h , 133 , 8 , 2 , false ) ;
 161: LD_VAR 0 3
 165: PPUSH
 166: LD_INT 133
 168: PPUSH
 169: LD_INT 8
 171: PPUSH
 172: LD_INT 2
 174: PPUSH
 175: LD_INT 0
 177: PPUSH
 178: CALL_OW 50
// ArOther = ArOther ^ h ;
 182: LD_ADDR_EXP 5
 186: PUSH
 187: LD_EXP 5
 191: PUSH
 192: LD_VAR 0 3
 196: ADD
 197: ST_TO_ADDR
// end ;
 198: GO 126
 200: POP
 201: POP
// SetCargo ( v3 , mat_oil , 100 ) ;
 202: LD_INT 69
 204: PPUSH
 205: LD_INT 2
 207: PPUSH
 208: LD_INT 100
 210: PPUSH
 211: CALL_OW 290
// uc_side = 5 ;
 215: LD_ADDR_OWVAR 20
 219: PUSH
 220: LD_INT 5
 222: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
 223: LD_ADDR_EXP 2
 227: PUSH
 228: LD_STRING Bojan
 230: PPUSH
 231: CALL_OW 25
 235: ST_TO_ADDR
// end ;
 236: LD_VAR 0 1
 240: RET
// export function LoadTechs ; var SolarAllowed ; begin
 241: LD_INT 0
 243: PPUSH
 244: PPUSH
// SolarAllowed = LoadVariable ( SolarAvailableToArabs , 0 ) ;
 245: LD_ADDR_VAR 0 2
 249: PUSH
 250: LD_STRING SolarAvailableToArabs
 252: PPUSH
 253: LD_INT 0
 255: PPUSH
 256: CALL_OW 30
 260: ST_TO_ADDR
// if SolarAllowed = 1 then
 261: LD_VAR 0 2
 265: PUSH
 266: LD_INT 1
 268: EQUAL
 269: IFFALSE 323
// begin SetTech ( tech_SolPow , 2 , state_enabled ) ;
 271: LD_INT 35
 273: PPUSH
 274: LD_INT 2
 276: PPUSH
 277: LD_INT 1
 279: PPUSH
 280: CALL_OW 322
// SetTech ( tech_SolEng , 2 , state_enabled ) ;
 284: LD_INT 45
 286: PPUSH
 287: LD_INT 2
 289: PPUSH
 290: LD_INT 1
 292: PPUSH
 293: CALL_OW 322
// SetRestrict ( b_solar_power , 2 , true ) ;
 297: LD_INT 27
 299: PPUSH
 300: LD_INT 2
 302: PPUSH
 303: LD_INT 1
 305: PPUSH
 306: CALL_OW 324
// SetRestrict ( 23 , 2 , true ) ;
 310: LD_INT 23
 312: PPUSH
 313: LD_INT 2
 315: PPUSH
 316: LD_INT 1
 318: PPUSH
 319: CALL_OW 324
// end ; end ;
 323: LD_VAR 0 1
 327: RET
// starting begin PrepareOurs ;
 328: CALL 0 0 0
// LoadTechs ;
 332: CALL 241 0 0
// InGameOn ;
 336: CALL_OW 8
// CenterNowOnXY ( 134 , 6 ) ;
 340: LD_INT 134
 342: PPUSH
 343: LD_INT 6
 345: PPUSH
 346: CALL_OW 86
// ComMoveXY ( [ v1 , v2 , v3 , ArOther [ 1 ] , ArOther [ 2 ] ] , 130 , 12 ) ;
 350: LD_INT 62
 352: PUSH
 353: LD_INT 60
 355: PUSH
 356: LD_INT 69
 358: PUSH
 359: LD_EXP 5
 363: PUSH
 364: LD_INT 1
 366: ARRAY
 367: PUSH
 368: LD_EXP 5
 372: PUSH
 373: LD_INT 2
 375: ARRAY
 376: PUSH
 377: EMPTY
 378: LIST
 379: LIST
 380: LIST
 381: LIST
 382: LIST
 383: PPUSH
 384: LD_INT 130
 386: PPUSH
 387: LD_INT 12
 389: PPUSH
 390: CALL_OW 111
// Wait ( 0 0$2 ) ;
 394: LD_INT 70
 396: PPUSH
 397: CALL_OW 67
// CenterOnXY ( 130 , 12 ) ;
 401: LD_INT 130
 403: PPUSH
 404: LD_INT 12
 406: PPUSH
 407: CALL_OW 84
// Say ( Antoine , da-a-1 ) ;
 411: LD_EXP 1
 415: PPUSH
 416: LD_STRING da-a-1
 418: PPUSH
 419: CALL_OW 88
// Wait ( 0 0$1 ) ;
 423: LD_INT 35
 425: PPUSH
 426: CALL_OW 67
// InGameOff ;
 430: CALL_OW 9
// SaveForQuickRestart ;
 434: CALL_OW 22
// ChangeMissionObjectives ( ODestroy ) ;
 438: LD_STRING ODestroy
 440: PPUSH
 441: CALL_OW 337
// Wait ( 0 0$10 ) ;
 445: LD_INT 350
 447: PPUSH
 448: CALL_OW 67
// InGameOn ;
 452: CALL_OW 8
// DialogueOn ;
 456: CALL_OW 6
// SayRadio ( Bojan , dc-b-1 ) ;
 460: LD_EXP 2
 464: PPUSH
 465: LD_STRING dc-b-1
 467: PPUSH
 468: CALL_OW 94
// Say ( Antoine , dc-a-1 ) ;
 472: LD_EXP 1
 476: PPUSH
 477: LD_STRING dc-a-1
 479: PPUSH
 480: CALL_OW 88
// SayRadio ( Bojan , dc-b-2 ) ;
 484: LD_EXP 2
 488: PPUSH
 489: LD_STRING dc-b-2
 491: PPUSH
 492: CALL_OW 94
// Say ( Antoine , dc-a-2 ) ;
 496: LD_EXP 1
 500: PPUSH
 501: LD_STRING dc-a-2
 503: PPUSH
 504: CALL_OW 88
// SayRadio ( Bojan , dc-b-3 ) ;
 508: LD_EXP 2
 512: PPUSH
 513: LD_STRING dc-b-3
 515: PPUSH
 516: CALL_OW 94
// SayRadio ( Bojan , dc-b-4 ) ;
 520: LD_EXP 2
 524: PPUSH
 525: LD_STRING dc-b-4
 527: PPUSH
 528: CALL_OW 94
// Say ( Antoine , dc-a-3 ) ;
 532: LD_EXP 1
 536: PPUSH
 537: LD_STRING dc-a-3
 539: PPUSH
 540: CALL_OW 88
// SayRadio ( Bojan , dc-b-5 ) ;
 544: LD_EXP 2
 548: PPUSH
 549: LD_STRING dc-b-5
 551: PPUSH
 552: CALL_OW 94
// Wait ( 0 0$1 ) ;
 556: LD_INT 35
 558: PPUSH
 559: CALL_OW 67
// DialogueOff ;
 563: CALL_OW 7
// InGameOff ;
 567: CALL_OW 9
// ChangeMissionObjectives ( OSneak ) ;
 571: LD_STRING OSneak
 573: PPUSH
 574: CALL_OW 337
// end ;
 578: END
// on UnitGoesToRed ( u ) do begin if GetSide ( u ) = 1 then
 579: LD_VAR 0 1
 583: PPUSH
 584: CALL_OW 255
 588: PUSH
 589: LD_INT 1
 591: EQUAL
 592: IFFALSE 713
// begin if not u in Grit then
 594: LD_VAR 0 1
 598: PUSH
 599: LD_EXP 6
 603: IN
 604: NOT
 605: IFFALSE 623
// Grit = Grit ^ u ;
 607: LD_ADDR_EXP 6
 611: PUSH
 612: LD_EXP 6
 616: PUSH
 617: LD_VAR 0 1
 621: ADD
 622: ST_TO_ADDR
// if GetType ( u ) = unit_vehicle then
 623: LD_VAR 0 1
 627: PPUSH
 628: CALL_OW 247
 632: PUSH
 633: LD_INT 2
 635: EQUAL
 636: IFFALSE 684
// ComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_mechanic ] ] ) , u ) , am_w ) ;
 638: LD_INT 22
 640: PUSH
 641: LD_INT 1
 643: PUSH
 644: EMPTY
 645: LIST
 646: LIST
 647: PUSH
 648: LD_INT 25
 650: PUSH
 651: LD_INT 3
 653: PUSH
 654: EMPTY
 655: LIST
 656: LIST
 657: PUSH
 658: EMPTY
 659: LIST
 660: LIST
 661: PPUSH
 662: CALL_OW 69
 666: PPUSH
 667: LD_VAR 0 1
 671: PPUSH
 672: CALL_OW 74
 676: PPUSH
 677: LD_INT 8
 679: PPUSH
 680: CALL_OW 120
// if GetType ( u ) = unit_building then
 684: LD_VAR 0 1
 688: PPUSH
 689: CALL_OW 247
 693: PUSH
 694: LD_INT 3
 696: EQUAL
 697: IFFALSE 713
// AddMcUnits ( AmDefenceStrategy , u ) ;
 699: LD_EXP 18
 703: PPUSH
 704: LD_VAR 0 1
 708: PPUSH
 709: CALL_OW 390
// end ; end ; end_of_file
 713: PPOPN 1
 715: END
// export Negotiation ; every 0 0$1 trigger FilterAllUnits ( [ [ [ f_side , 1 ] , [ f_type , unit_building ] ] , [ f_see , 2 ] ] ) do
 716: LD_INT 22
 718: PUSH
 719: LD_INT 1
 721: PUSH
 722: EMPTY
 723: LIST
 724: LIST
 725: PUSH
 726: LD_INT 21
 728: PUSH
 729: LD_INT 3
 731: PUSH
 732: EMPTY
 733: LIST
 734: LIST
 735: PUSH
 736: EMPTY
 737: LIST
 738: LIST
 739: PUSH
 740: LD_INT 101
 742: PUSH
 743: LD_INT 2
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: PUSH
 750: EMPTY
 751: LIST
 752: LIST
 753: PPUSH
 754: CALL_OW 69
 758: IFFALSE 995
 760: GO 762
 762: DISABLE
// begin DialogueOn ;
 763: CALL_OW 6
// CenterOnUnits ( FilterAllUnits ( [ [ [ f_side , 1 ] , [ f_type , unit_building ] ] , [ f_see , 2 ] ] ) ) ;
 767: LD_INT 22
 769: PUSH
 770: LD_INT 1
 772: PUSH
 773: EMPTY
 774: LIST
 775: LIST
 776: PUSH
 777: LD_INT 21
 779: PUSH
 780: LD_INT 3
 782: PUSH
 783: EMPTY
 784: LIST
 785: LIST
 786: PUSH
 787: EMPTY
 788: LIST
 789: LIST
 790: PUSH
 791: LD_INT 101
 793: PUSH
 794: LD_INT 2
 796: PUSH
 797: EMPTY
 798: LIST
 799: LIST
 800: PUSH
 801: EMPTY
 802: LIST
 803: LIST
 804: PPUSH
 805: CALL_OW 69
 809: PPUSH
 810: CALL_OW 85
// Say ( Antoine , dy-a-1 ) ;
 814: LD_EXP 1
 818: PPUSH
 819: LD_STRING dy-a-1
 821: PPUSH
 822: CALL_OW 88
// Say ( Tarpan , dy-t-1 ) ;
 826: LD_EXP 4
 830: PPUSH
 831: LD_STRING dy-t-1
 833: PPUSH
 834: CALL_OW 88
// case Query ( QAsk ) of 1 :
 838: LD_STRING QAsk
 840: PPUSH
 841: CALL_OW 97
 845: PUSH
 846: LD_INT 1
 848: DOUBLE
 849: EQUAL
 850: IFTRUE 854
 852: GO 967
 854: POP
// begin Say ( Antoine , dy-a-2 ) ;
 855: LD_EXP 1
 859: PPUSH
 860: LD_STRING dy-a-2
 862: PPUSH
 863: CALL_OW 88
// Say ( Tarpan , dy-t-2 ) ;
 867: LD_EXP 4
 871: PPUSH
 872: LD_STRING dy-t-2
 874: PPUSH
 875: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
 879: LD_INT 18
 881: PPUSH
 882: CALL_OW 67
// SayRadio ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_soldier ] ] ) [ 1 ] , dy-x-1 ) ;
 886: LD_INT 22
 888: PUSH
 889: LD_INT 1
 891: PUSH
 892: EMPTY
 893: LIST
 894: LIST
 895: PUSH
 896: LD_INT 25
 898: PUSH
 899: LD_INT 1
 901: PUSH
 902: EMPTY
 903: LIST
 904: LIST
 905: PUSH
 906: EMPTY
 907: LIST
 908: LIST
 909: PPUSH
 910: CALL_OW 69
 914: PUSH
 915: LD_INT 1
 917: ARRAY
 918: PPUSH
 919: LD_STRING dy-x-1
 921: PPUSH
 922: CALL_OW 94
// Wait ( 0 0$0.5 ) ;
 926: LD_INT 18
 928: PPUSH
 929: CALL_OW 67
// Say ( Tarpan , dy-t-3 ) ;
 933: LD_EXP 4
 937: PPUSH
 938: LD_STRING dy-t-3
 940: PPUSH
 941: CALL_OW 88
// Say ( Antoine , dy-a-3 ) ;
 945: LD_EXP 1
 949: PPUSH
 950: LD_STRING dy-a-3
 952: PPUSH
 953: CALL_OW 88
// Negotiation = true ;
 957: LD_ADDR_EXP 7
 961: PUSH
 962: LD_INT 1
 964: ST_TO_ADDR
// end ; 2 :
 965: GO 991
 967: LD_INT 2
 969: DOUBLE
 970: EQUAL
 971: IFTRUE 975
 973: GO 990
 975: POP
// begin Say ( Antoine , dy-a-2a ) ;
 976: LD_EXP 1
 980: PPUSH
 981: LD_STRING dy-a-2a
 983: PPUSH
 984: CALL_OW 88
// end ; end ;
 988: GO 991
 990: POP
// DialogueOff ;
 991: CALL_OW 7
// end ;
 995: END
// var AmericanBaseCaptured ; every 0 0$1 trigger Grit do var g ;
 996: LD_EXP 6
1000: IFFALSE 1198
1002: GO 1004
1004: DISABLE
1005: LD_INT 0
1007: PPUSH
// begin enable ;
1008: ENABLE
// if Negotiation then
1009: LD_EXP 7
1013: IFFALSE 1042
// g = [ 6 , 8 , 10 ] [ difficulty ] else
1015: LD_ADDR_VAR 0 1
1019: PUSH
1020: LD_INT 6
1022: PUSH
1023: LD_INT 8
1025: PUSH
1026: LD_INT 10
1028: PUSH
1029: EMPTY
1030: LIST
1031: LIST
1032: LIST
1033: PUSH
1034: LD_OWVAR 67
1038: ARRAY
1039: ST_TO_ADDR
1040: GO 1067
// g = [ 10 , 12 , 14 ] [ difficulty ] ;
1042: LD_ADDR_VAR 0 1
1046: PUSH
1047: LD_INT 10
1049: PUSH
1050: LD_INT 12
1052: PUSH
1053: LD_INT 14
1055: PUSH
1056: EMPTY
1057: LIST
1058: LIST
1059: LIST
1060: PUSH
1061: LD_OWVAR 67
1065: ARRAY
1066: ST_TO_ADDR
// if Grit >= g or FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) = 0 then
1067: LD_EXP 6
1071: PUSH
1072: LD_VAR 0 1
1076: GREATEREQUAL
1077: PUSH
1078: LD_INT 22
1080: PUSH
1081: LD_INT 1
1083: PUSH
1084: EMPTY
1085: LIST
1086: LIST
1087: PUSH
1088: LD_INT 21
1090: PUSH
1091: LD_INT 2
1093: PUSH
1094: EMPTY
1095: LIST
1096: LIST
1097: PUSH
1098: LD_INT 50
1100: PUSH
1101: EMPTY
1102: LIST
1103: PUSH
1104: EMPTY
1105: LIST
1106: LIST
1107: LIST
1108: PPUSH
1109: CALL_OW 69
1113: PUSH
1114: LD_INT 0
1116: EQUAL
1117: OR
1118: IFFALSE 1198
// begin disable ;
1120: DISABLE
// if Negotiation then
1121: LD_EXP 7
1125: IFFALSE 1194
// begin DialogueOn ;
1127: CALL_OW 6
// Say ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] , dt-x-1 ) ;
1131: LD_INT 22
1133: PUSH
1134: LD_INT 1
1136: PUSH
1137: EMPTY
1138: LIST
1139: LIST
1140: PUSH
1141: LD_INT 21
1143: PUSH
1144: LD_INT 1
1146: PUSH
1147: EMPTY
1148: LIST
1149: LIST
1150: PUSH
1151: LD_INT 50
1153: PUSH
1154: EMPTY
1155: LIST
1156: PUSH
1157: EMPTY
1158: LIST
1159: LIST
1160: LIST
1161: PPUSH
1162: CALL_OW 69
1166: PUSH
1167: LD_INT 1
1169: ARRAY
1170: PPUSH
1171: LD_STRING dt-x-1
1173: PPUSH
1174: CALL_OW 88
// Say ( Tarpan , dt-t-1 ) ;
1178: LD_EXP 4
1182: PPUSH
1183: LD_STRING dt-t-1
1185: PPUSH
1186: CALL_OW 88
// DialogueOff ;
1190: CALL_OW 7
// end ; AmericansOut ;
1194: CALL 1201 0 0
// end ; end ;
1198: PPOPN 1
1200: END
// export function AmericansOut ; var i ; begin
1201: LD_INT 0
1203: PPUSH
1204: PPUSH
// AmericanBaseCaptured = true ;
1205: LD_ADDR_LOC 1
1209: PUSH
1210: LD_INT 1
1212: ST_TO_ADDR
// if Negotiation = true then
1213: LD_EXP 7
1217: PUSH
1218: LD_INT 1
1220: EQUAL
1221: IFFALSE 1245
// begin SetAttitude ( 1 , 2 , att_friend , true ) ;
1223: LD_INT 1
1225: PPUSH
1226: LD_INT 2
1228: PPUSH
1229: LD_INT 1
1231: PPUSH
1232: LD_INT 1
1234: PPUSH
1235: CALL_OW 80
// InGameOn ;
1239: CALL_OW 8
// end else
1243: GO 1292
// Say ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] , dt-x-1a ) ;
1245: LD_INT 22
1247: PUSH
1248: LD_INT 1
1250: PUSH
1251: EMPTY
1252: LIST
1253: LIST
1254: PUSH
1255: LD_INT 21
1257: PUSH
1258: LD_INT 1
1260: PUSH
1261: EMPTY
1262: LIST
1263: LIST
1264: PUSH
1265: LD_INT 50
1267: PUSH
1268: EMPTY
1269: LIST
1270: PUSH
1271: EMPTY
1272: LIST
1273: LIST
1274: LIST
1275: PPUSH
1276: CALL_OW 69
1280: PUSH
1281: LD_INT 1
1283: ARRAY
1284: PPUSH
1285: LD_STRING dt-x-1a
1287: PPUSH
1288: CALL_OW 88
// CenterOnXY ( 81 , 85 ) ;
1292: LD_INT 81
1294: PPUSH
1295: LD_INT 85
1297: PPUSH
1298: CALL_OW 84
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) do
1302: LD_ADDR_VAR 0 2
1306: PUSH
1307: LD_INT 22
1309: PUSH
1310: LD_INT 1
1312: PUSH
1313: EMPTY
1314: LIST
1315: LIST
1316: PUSH
1317: LD_INT 21
1319: PUSH
1320: LD_INT 1
1322: PUSH
1323: EMPTY
1324: LIST
1325: LIST
1326: PUSH
1327: LD_INT 50
1329: PUSH
1330: EMPTY
1331: LIST
1332: PUSH
1333: EMPTY
1334: LIST
1335: LIST
1336: LIST
1337: PPUSH
1338: CALL_OW 69
1342: PUSH
1343: FOR_IN
1344: IFFALSE 1389
// begin if IsInUnit ( i ) then
1346: LD_VAR 0 2
1350: PPUSH
1351: CALL_OW 310
1355: IFFALSE 1375
// begin ComExitBuilding ( i ) ;
1357: LD_VAR 0 2
1361: PPUSH
1362: CALL_OW 122
// ComExitVehicle ( i ) ;
1366: LD_VAR 0 2
1370: PPUSH
1371: CALL_OW 121
// end ; ComMoveToArea ( i , AmericanExit ) ;
1375: LD_VAR 0 2
1379: PPUSH
1380: LD_INT 1
1382: PPUSH
1383: CALL_OW 113
// end ;
1387: GO 1343
1389: POP
1390: POP
// for i in FilterAllUnits ( [ f_side , 2 ] ) do
1391: LD_ADDR_VAR 0 2
1395: PUSH
1396: LD_INT 22
1398: PUSH
1399: LD_INT 2
1401: PUSH
1402: EMPTY
1403: LIST
1404: LIST
1405: PPUSH
1406: CALL_OW 69
1410: PUSH
1411: FOR_IN
1412: IFFALSE 1431
// ComMoveXY ( i , 78 , 89 ) ;
1414: LD_VAR 0 2
1418: PPUSH
1419: LD_INT 78
1421: PPUSH
1422: LD_INT 89
1424: PPUSH
1425: CALL_OW 111
1429: GO 1411
1431: POP
1432: POP
// Wait ( 0 0$0.5 ) ;
1433: LD_INT 18
1435: PPUSH
1436: CALL_OW 67
// RevealFogArea ( 2 , RevealArea ) ;
1440: LD_INT 2
1442: PPUSH
1443: LD_INT 5
1445: PPUSH
1446: CALL_OW 332
// SetSide ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_not , [ f_type , unit_human ] ] ] ) , 2 ) ;
1450: LD_INT 22
1452: PUSH
1453: LD_INT 1
1455: PUSH
1456: EMPTY
1457: LIST
1458: LIST
1459: PUSH
1460: LD_INT 3
1462: PUSH
1463: LD_INT 21
1465: PUSH
1466: LD_INT 1
1468: PUSH
1469: EMPTY
1470: LIST
1471: LIST
1472: PUSH
1473: EMPTY
1474: LIST
1475: LIST
1476: PUSH
1477: EMPTY
1478: LIST
1479: LIST
1480: PPUSH
1481: CALL_OW 69
1485: PPUSH
1486: LD_INT 2
1488: PPUSH
1489: CALL_OW 235
// Wait ( 0 0$3 ) ;
1493: LD_INT 105
1495: PPUSH
1496: CALL_OW 67
// if IsOK ( Tarpan ) then
1500: LD_EXP 4
1504: PPUSH
1505: CALL_OW 302
1509: IFFALSE 1537
// begin Say ( Antoine , dt-a-1 ) ;
1511: LD_EXP 1
1515: PPUSH
1516: LD_STRING dt-a-1
1518: PPUSH
1519: CALL_OW 88
// Say ( Tarpan , dt-t-2 ) ;
1523: LD_EXP 4
1527: PPUSH
1528: LD_STRING dt-t-2
1530: PPUSH
1531: CALL_OW 88
// end else
1535: GO 1549
// Say ( Antoine , dt-a-1a ) ;
1537: LD_EXP 1
1541: PPUSH
1542: LD_STRING dt-a-1a
1544: PPUSH
1545: CALL_OW 88
// if ingame_video then
1549: LD_OWVAR 52
1553: IFFALSE 1559
// InGameOff ;
1555: CALL_OW 9
// end ;
1559: LD_VAR 0 1
1563: RET
// every 0 0$1 trigger AmericanBaseCaptured do var i ;
1564: LD_LOC 1
1568: IFFALSE 1616
1570: GO 1572
1572: DISABLE
1573: LD_INT 0
1575: PPUSH
// begin enable ;
1576: ENABLE
// for i in FilterUnitsInArea ( AmericanExit , [ f_side , 1 ] ) do
1577: LD_ADDR_VAR 0 1
1581: PUSH
1582: LD_INT 1
1584: PPUSH
1585: LD_INT 22
1587: PUSH
1588: LD_INT 1
1590: PUSH
1591: EMPTY
1592: LIST
1593: LIST
1594: PPUSH
1595: CALL_OW 70
1599: PUSH
1600: FOR_IN
1601: IFFALSE 1614
// RemoveUnit ( i ) ;
1603: LD_VAR 0 1
1607: PPUSH
1608: CALL_OW 64
1612: GO 1600
1614: POP
1615: POP
// end ;
1616: PPOPN 1
1618: END
// export Early , CountTime , Faked ; export NotFaked ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 2 ] ] ) do var a ;
1619: LD_INT 22
1621: PUSH
1622: LD_INT 7
1624: PUSH
1625: EMPTY
1626: LIST
1627: LIST
1628: PUSH
1629: LD_INT 101
1631: PUSH
1632: LD_INT 2
1634: PUSH
1635: EMPTY
1636: LIST
1637: LIST
1638: PUSH
1639: EMPTY
1640: LIST
1641: LIST
1642: PPUSH
1643: CALL_OW 69
1647: IFFALSE 2142
1649: GO 1651
1651: DISABLE
1652: LD_INT 0
1654: PPUSH
// begin a = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 2 ] ) , FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 2 ] ] ) [ 1 ] ) ;
1655: LD_ADDR_VAR 0 1
1659: PUSH
1660: LD_INT 22
1662: PUSH
1663: LD_INT 2
1665: PUSH
1666: EMPTY
1667: LIST
1668: LIST
1669: PPUSH
1670: CALL_OW 69
1674: PPUSH
1675: LD_INT 22
1677: PUSH
1678: LD_INT 7
1680: PUSH
1681: EMPTY
1682: LIST
1683: LIST
1684: PUSH
1685: LD_INT 101
1687: PUSH
1688: LD_INT 2
1690: PUSH
1691: EMPTY
1692: LIST
1693: LIST
1694: PUSH
1695: EMPTY
1696: LIST
1697: LIST
1698: PPUSH
1699: CALL_OW 69
1703: PUSH
1704: LD_INT 1
1706: ARRAY
1707: PPUSH
1708: CALL_OW 74
1712: ST_TO_ADDR
// if GetType ( a ) = unit_vehicle then
1713: LD_VAR 0 1
1717: PPUSH
1718: CALL_OW 247
1722: PUSH
1723: LD_INT 2
1725: EQUAL
1726: IFFALSE 1743
// a = IsDrivenBy ( a ) ;
1728: LD_ADDR_VAR 0 1
1732: PUSH
1733: LD_VAR 0 1
1737: PPUSH
1738: CALL_OW 311
1742: ST_TO_ADDR
// enable ;
1743: ENABLE
// if not FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] ] ) and not Early then
1744: LD_INT 22
1746: PUSH
1747: LD_INT 2
1749: PUSH
1750: EMPTY
1751: LIST
1752: LIST
1753: PUSH
1754: LD_INT 21
1756: PUSH
1757: LD_INT 2
1759: PUSH
1760: EMPTY
1761: LIST
1762: LIST
1763: PUSH
1764: LD_INT 23
1766: PUSH
1767: LD_INT 1
1769: PUSH
1770: EMPTY
1771: LIST
1772: LIST
1773: PUSH
1774: EMPTY
1775: LIST
1776: LIST
1777: LIST
1778: PPUSH
1779: CALL_OW 69
1783: NOT
1784: PUSH
1785: LD_EXP 8
1789: NOT
1790: AND
1791: IFFALSE 1899
// begin disable ;
1793: DISABLE
// DialogueOn ;
1794: CALL_OW 6
// if a = Antoine then
1798: LD_VAR 0 1
1802: PUSH
1803: LD_EXP 1
1807: EQUAL
1808: IFFALSE 1824
// Say ( Antoine , dr-a-1b ) else
1810: LD_EXP 1
1814: PPUSH
1815: LD_STRING dr-a-1b
1817: PPUSH
1818: CALL_OW 88
1822: GO 1848
// begin Say ( a , dr-s-1 ) ;
1824: LD_VAR 0 1
1828: PPUSH
1829: LD_STRING dr-s-1
1831: PPUSH
1832: CALL_OW 88
// Say ( Antoine , dr-a-1a ) ;
1836: LD_EXP 1
1840: PPUSH
1841: LD_STRING dr-a-1a
1843: PPUSH
1844: CALL_OW 88
// end ; Early = true ;
1848: LD_ADDR_EXP 8
1852: PUSH
1853: LD_INT 1
1855: ST_TO_ADDR
// DialogueOff ;
1856: CALL_OW 7
// repeat Wait ( 0 0$1 ) until not FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 2 ] ] ) ;
1860: LD_INT 35
1862: PPUSH
1863: CALL_OW 67
1867: LD_INT 22
1869: PUSH
1870: LD_INT 7
1872: PUSH
1873: EMPTY
1874: LIST
1875: LIST
1876: PUSH
1877: LD_INT 101
1879: PUSH
1880: LD_INT 2
1882: PUSH
1883: EMPTY
1884: LIST
1885: LIST
1886: PUSH
1887: EMPTY
1888: LIST
1889: LIST
1890: PPUSH
1891: CALL_OW 69
1895: NOT
1896: IFFALSE 1860
// enable ;
1898: ENABLE
// end ; if not FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] ] ) and Early then
1899: LD_INT 22
1901: PUSH
1902: LD_INT 2
1904: PUSH
1905: EMPTY
1906: LIST
1907: LIST
1908: PUSH
1909: LD_INT 21
1911: PUSH
1912: LD_INT 2
1914: PUSH
1915: EMPTY
1916: LIST
1917: LIST
1918: PUSH
1919: LD_INT 23
1921: PUSH
1922: LD_INT 1
1924: PUSH
1925: EMPTY
1926: LIST
1927: LIST
1928: PUSH
1929: EMPTY
1930: LIST
1931: LIST
1932: LIST
1933: PPUSH
1934: CALL_OW 69
1938: NOT
1939: PUSH
1940: LD_EXP 8
1944: AND
1945: IFFALSE 1949
// exit ;
1947: GO 2142
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] ] ) then
1949: LD_INT 22
1951: PUSH
1952: LD_INT 2
1954: PUSH
1955: EMPTY
1956: LIST
1957: LIST
1958: PUSH
1959: LD_INT 21
1961: PUSH
1962: LD_INT 2
1964: PUSH
1965: EMPTY
1966: LIST
1967: LIST
1968: PUSH
1969: LD_INT 23
1971: PUSH
1972: LD_INT 1
1974: PUSH
1975: EMPTY
1976: LIST
1977: LIST
1978: PUSH
1979: EMPTY
1980: LIST
1981: LIST
1982: LIST
1983: PPUSH
1984: CALL_OW 69
1988: IFFALSE 2142
// begin disable ;
1990: DISABLE
// DialogueOn ;
1991: CALL_OW 6
// if not Early then
1995: LD_EXP 8
1999: NOT
2000: IFFALSE 2014
// Say ( a , dr-s-1 ) ;
2002: LD_VAR 0 1
2006: PPUSH
2007: LD_STRING dr-s-1
2009: PPUSH
2010: CALL_OW 88
// SayRadio ( Bojan , dr-b-1 ) ;
2014: LD_EXP 2
2018: PPUSH
2019: LD_STRING dr-b-1
2021: PPUSH
2022: CALL_OW 94
// Say ( Antoine , dr-a-1 ) ;
2026: LD_EXP 1
2030: PPUSH
2031: LD_STRING dr-a-1
2033: PPUSH
2034: CALL_OW 88
// SayRadio ( Bojan , dr-b-2 ) ;
2038: LD_EXP 2
2042: PPUSH
2043: LD_STRING dr-b-2
2045: PPUSH
2046: CALL_OW 94
// ChangeMissionObjectives ( OAttack ) ;
2050: LD_STRING OAttack
2052: PPUSH
2053: CALL_OW 337
// SetAreaMapShow ( ArabExit , 1 ) ;
2057: LD_INT 2
2059: PPUSH
2060: LD_INT 1
2062: PPUSH
2063: CALL_OW 424
// if UnitFilter ( ArOther , [ f_ok ] ) then
2067: LD_EXP 5
2071: PPUSH
2072: LD_INT 50
2074: PUSH
2075: EMPTY
2076: LIST
2077: PPUSH
2078: CALL_OW 72
2082: IFFALSE 2130
// begin Say ( UnitFilter ( ArOther , [ f_ok ] ) [ 1 ] , dr-t-1 ) ;
2084: LD_EXP 5
2088: PPUSH
2089: LD_INT 50
2091: PUSH
2092: EMPTY
2093: LIST
2094: PPUSH
2095: CALL_OW 72
2099: PUSH
2100: LD_INT 1
2102: ARRAY
2103: PPUSH
2104: LD_STRING dr-t-1
2106: PPUSH
2107: CALL_OW 88
// Say ( Antoine , dr-a-2 ) ;
2111: LD_EXP 1
2115: PPUSH
2116: LD_STRING dr-a-2
2118: PPUSH
2119: CALL_OW 88
// ChangeMissionObjectives ( OStrike ) ;
2123: LD_STRING OStrike
2125: PPUSH
2126: CALL_OW 337
// end ; DialogueOff ;
2130: CALL_OW 7
// CountTime = true ;
2134: LD_ADDR_EXP 9
2138: PUSH
2139: LD_INT 1
2141: ST_TO_ADDR
// end ; end ;
2142: PPOPN 1
2144: END
// export Timer ; every 0 0$1 trigger CountTime do
2145: LD_EXP 9
2149: IFFALSE 2169
2151: GO 2153
2153: DISABLE
// begin enable ;
2154: ENABLE
// Timer = Timer + 0 0$1 ;
2155: LD_ADDR_EXP 12
2159: PUSH
2160: LD_EXP 12
2164: PUSH
2165: LD_INT 35
2167: PLUS
2168: ST_TO_ADDR
// end ;
2169: END
// every 0 0$1 trigger GreensDestroyed >= 2 do var u ;
2170: LD_EXP 25
2174: PUSH
2175: LD_INT 2
2177: GREATEREQUAL
2178: IFFALSE 2472
2180: GO 2182
2182: DISABLE
2183: LD_INT 0
2185: PPUSH
// begin enable ;
2186: ENABLE
// u = FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] ;
2187: LD_ADDR_VAR 0 1
2191: PUSH
2192: LD_INT 22
2194: PUSH
2195: LD_INT 7
2197: PUSH
2198: EMPTY
2199: LIST
2200: LIST
2201: PUSH
2202: LD_INT 21
2204: PUSH
2205: LD_INT 1
2207: PUSH
2208: EMPTY
2209: LIST
2210: LIST
2211: PUSH
2212: LD_INT 50
2214: PUSH
2215: EMPTY
2216: LIST
2217: PUSH
2218: EMPTY
2219: LIST
2220: LIST
2221: LIST
2222: PPUSH
2223: CALL_OW 69
2227: PUSH
2228: LD_INT 1
2230: ARRAY
2231: ST_TO_ADDR
// if FilterAllUnits ( [ [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_nation , nation_arabian ] ] , [ f_see , 7 ] ] ) then
2232: LD_INT 22
2234: PUSH
2235: LD_INT 2
2237: PUSH
2238: EMPTY
2239: LIST
2240: LIST
2241: PUSH
2242: LD_INT 21
2244: PUSH
2245: LD_INT 2
2247: PUSH
2248: EMPTY
2249: LIST
2250: LIST
2251: PUSH
2252: LD_INT 23
2254: PUSH
2255: LD_INT 2
2257: PUSH
2258: EMPTY
2259: LIST
2260: LIST
2261: PUSH
2262: EMPTY
2263: LIST
2264: LIST
2265: LIST
2266: PUSH
2267: LD_INT 101
2269: PUSH
2270: LD_INT 7
2272: PUSH
2273: EMPTY
2274: LIST
2275: LIST
2276: PUSH
2277: EMPTY
2278: LIST
2279: LIST
2280: PPUSH
2281: CALL_OW 69
2285: IFFALSE 2356
// begin disable ;
2287: DISABLE
// if not NotFaked then
2288: LD_EXP 11
2292: NOT
2293: IFFALSE 2315
// begin Say ( u , df-x-1a ) ;
2295: LD_VAR 0 1
2299: PPUSH
2300: LD_STRING df-x-1a
2302: PPUSH
2303: CALL_OW 88
// NotFaked = true ;
2307: LD_ADDR_EXP 11
2311: PUSH
2312: LD_INT 1
2314: ST_TO_ADDR
// end ; repeat Wait ( 0 0$1 ) until not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 7 ] ] ) ;
2315: LD_INT 35
2317: PPUSH
2318: CALL_OW 67
2322: LD_INT 22
2324: PUSH
2325: LD_INT 2
2327: PUSH
2328: EMPTY
2329: LIST
2330: LIST
2331: PUSH
2332: LD_INT 101
2334: PUSH
2335: LD_INT 7
2337: PUSH
2338: EMPTY
2339: LIST
2340: LIST
2341: PUSH
2342: EMPTY
2343: LIST
2344: LIST
2345: PPUSH
2346: CALL_OW 69
2350: NOT
2351: IFFALSE 2315
// enable ;
2353: ENABLE
// end else
2354: GO 2472
// if FilterAllUnits ( [ [ [ f_side , 2 ] , [ f_type , unit_vehicle ] , [ f_nation , nation_american ] ] , [ f_see , 7 ] ] ) then
2356: LD_INT 22
2358: PUSH
2359: LD_INT 2
2361: PUSH
2362: EMPTY
2363: LIST
2364: LIST
2365: PUSH
2366: LD_INT 21
2368: PUSH
2369: LD_INT 2
2371: PUSH
2372: EMPTY
2373: LIST
2374: LIST
2375: PUSH
2376: LD_INT 23
2378: PUSH
2379: LD_INT 1
2381: PUSH
2382: EMPTY
2383: LIST
2384: LIST
2385: PUSH
2386: EMPTY
2387: LIST
2388: LIST
2389: LIST
2390: PUSH
2391: LD_INT 101
2393: PUSH
2394: LD_INT 7
2396: PUSH
2397: EMPTY
2398: LIST
2399: LIST
2400: PUSH
2401: EMPTY
2402: LIST
2403: LIST
2404: PPUSH
2405: CALL_OW 69
2409: IFFALSE 2472
// begin disable ;
2411: DISABLE
// if not NotFaked then
2412: LD_EXP 11
2416: NOT
2417: IFFALSE 2433
// Say ( u , df-x-1 ) else
2419: LD_VAR 0 1
2423: PPUSH
2424: LD_STRING df-x-1
2426: PPUSH
2427: CALL_OW 88
2431: GO 2445
// Say ( u , df-x-1b ) ;
2433: LD_VAR 0 1
2437: PPUSH
2438: LD_STRING df-x-1b
2440: PPUSH
2441: CALL_OW 88
// Say ( Antoine , df-a-1 ) ;
2445: LD_EXP 1
2449: PPUSH
2450: LD_STRING df-a-1
2452: PPUSH
2453: CALL_OW 88
// ChangeMissionObjectives ( OTrickOut ) ;
2457: LD_STRING OTrickOut
2459: PPUSH
2460: CALL_OW 337
// Faked = true ;
2464: LD_ADDR_EXP 10
2468: PUSH
2469: LD_INT 1
2471: ST_TO_ADDR
// end ; end ;
2472: PPOPN 1
2474: END
// every 0 0$1 trigger GreensDestroyed = 6 do
2475: LD_EXP 25
2479: PUSH
2480: LD_INT 6
2482: EQUAL
2483: IFFALSE 2495
2485: GO 2487
2487: DISABLE
// ChangeMissionObjectives ( OQuickOut ) ;
2488: LD_STRING OQuickOut
2490: PPUSH
2491: CALL_OW 337
2495: END
// every 0 0$1 trigger Faked and CountTime do
2496: LD_EXP 10
2500: PUSH
2501: LD_EXP 9
2505: AND
2506: IFFALSE 2755
2508: GO 2510
2510: DISABLE
// begin enable ;
2511: ENABLE
// if FilterUnitsExceptArea ( ArabExit , [ [ f_side , 2 ] , [ f_or , [ f_type , unit_human ] , [ [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] ] ] ) = 0 then
2512: LD_INT 2
2514: PPUSH
2515: LD_INT 22
2517: PUSH
2518: LD_INT 2
2520: PUSH
2521: EMPTY
2522: LIST
2523: LIST
2524: PUSH
2525: LD_INT 2
2527: PUSH
2528: LD_INT 21
2530: PUSH
2531: LD_INT 1
2533: PUSH
2534: EMPTY
2535: LIST
2536: LIST
2537: PUSH
2538: LD_INT 21
2540: PUSH
2541: LD_INT 2
2543: PUSH
2544: EMPTY
2545: LIST
2546: LIST
2547: PUSH
2548: LD_INT 3
2550: PUSH
2551: LD_INT 58
2553: PUSH
2554: EMPTY
2555: LIST
2556: PUSH
2557: EMPTY
2558: LIST
2559: LIST
2560: PUSH
2561: EMPTY
2562: LIST
2563: LIST
2564: PUSH
2565: EMPTY
2566: LIST
2567: LIST
2568: LIST
2569: PUSH
2570: EMPTY
2571: LIST
2572: LIST
2573: PPUSH
2574: CALL_OW 71
2578: PUSH
2579: LD_INT 0
2581: EQUAL
2582: IFFALSE 2755
// begin disable ;
2584: DISABLE
// InGameOn ;
2585: CALL_OW 8
// CenterOnXY ( 132 , 6 ) ;
2589: LD_INT 132
2591: PPUSH
2592: LD_INT 6
2594: PPUSH
2595: CALL_OW 84
// SayRadio ( Bojan , de-b-1 ) ;
2599: LD_EXP 2
2603: PPUSH
2604: LD_STRING de-b-1
2606: PPUSH
2607: CALL_OW 94
// if IsOK ( Tarpan ) or UnitFilter ( ArOther , [ f_ok ] ) then
2611: LD_EXP 4
2615: PPUSH
2616: CALL_OW 302
2620: PUSH
2621: LD_EXP 5
2625: PPUSH
2626: LD_INT 50
2628: PUSH
2629: EMPTY
2630: LIST
2631: PPUSH
2632: CALL_OW 72
2636: OR
2637: IFFALSE 2727
// begin Say ( Antoine , de-a-1 ) ;
2639: LD_EXP 1
2643: PPUSH
2644: LD_STRING de-a-1
2646: PPUSH
2647: CALL_OW 88
// if IsOK ( Tarpan ) then
2651: LD_EXP 4
2655: PPUSH
2656: CALL_OW 302
2660: IFFALSE 2676
// Say ( Tarpan , de-t-1 ) else
2662: LD_EXP 4
2666: PPUSH
2667: LD_STRING de-t-1
2669: PPUSH
2670: CALL_OW 88
2674: GO 2703
// Say ( UnitFilter ( ArOther , [ f_ok ] ) [ 1 ] , de-s-1 ) ;
2676: LD_EXP 5
2680: PPUSH
2681: LD_INT 50
2683: PUSH
2684: EMPTY
2685: LIST
2686: PPUSH
2687: CALL_OW 72
2691: PUSH
2692: LD_INT 1
2694: ARRAY
2695: PPUSH
2696: LD_STRING de-s-1
2698: PPUSH
2699: CALL_OW 88
// SayRadio ( Bojan , de-b-2 ) ;
2703: LD_EXP 2
2707: PPUSH
2708: LD_STRING de-b-2
2710: PPUSH
2711: CALL_OW 94
// Say ( Antoine , de-a-2 ) ;
2715: LD_EXP 1
2719: PPUSH
2720: LD_STRING de-a-2
2722: PPUSH
2723: CALL_OW 88
// end ; SayRadio ( Bojan , de-b-3 ) ;
2727: LD_EXP 2
2731: PPUSH
2732: LD_STRING de-b-3
2734: PPUSH
2735: CALL_OW 94
// Say ( Antoine , de-a-3 ) ;
2739: LD_EXP 1
2743: PPUSH
2744: LD_STRING de-a-3
2746: PPUSH
2747: CALL_OW 88
// SaveAndEnd ;
2751: CALL 2756 0 0
// end ; end ;
2755: END
// export function SaveAndEnd ; var i , v , ArVehs ; begin
2756: LD_INT 0
2758: PPUSH
2759: PPUSH
2760: PPUSH
2761: PPUSH
// if Negotiation then
2762: LD_EXP 7
2766: IFFALSE 2780
// AddMedal ( MDiplomacy , 1 ) else
2768: LD_STRING MDiplomacy
2770: PPUSH
2771: LD_INT 1
2773: PPUSH
2774: CALL_OW 101
2778: GO 2791
// AddMedal ( MDiplomacy , - 1 ) ;
2780: LD_STRING MDiplomacy
2782: PPUSH
2783: LD_INT 1
2785: NEG
2786: PPUSH
2787: CALL_OW 101
// if Timer < 6 6$0 then
2791: LD_EXP 12
2795: PUSH
2796: LD_INT 12600
2798: LESS
2799: IFFALSE 2813
// AddMedal ( MReturn , 1 ) else
2801: LD_STRING MReturn
2803: PPUSH
2804: LD_INT 1
2806: PPUSH
2807: CALL_OW 101
2811: GO 2824
// AddMedal ( MReturn , - 1 ) ;
2813: LD_STRING MReturn
2815: PPUSH
2816: LD_INT 1
2818: NEG
2819: PPUSH
2820: CALL_OW 101
// if GreensDestroyed > 5 then
2824: LD_EXP 25
2828: PUSH
2829: LD_INT 5
2831: GREATER
2832: IFFALSE 2846
// AddMedal ( MKills , 1 ) else
2834: LD_STRING MKills
2836: PPUSH
2837: LD_INT 1
2839: PPUSH
2840: CALL_OW 101
2844: GO 2857
// AddMedal ( MKills , - 1 ) ;
2846: LD_STRING MKills
2848: PPUSH
2849: LD_INT 1
2851: NEG
2852: PPUSH
2853: CALL_OW 101
// GiveMedals ( Main ) ;
2857: LD_STRING Main
2859: PPUSH
2860: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) ) ;
2864: LD_INT 22
2866: PUSH
2867: LD_INT 2
2869: PUSH
2870: EMPTY
2871: LIST
2872: LIST
2873: PUSH
2874: LD_INT 21
2876: PUSH
2877: LD_INT 1
2879: PUSH
2880: EMPTY
2881: LIST
2882: LIST
2883: PUSH
2884: EMPTY
2885: LIST
2886: LIST
2887: PPUSH
2888: CALL_OW 69
2892: PPUSH
2893: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
2897: LD_EXP 1
2901: PPUSH
2902: LD_STRING Antoine
2904: PPUSH
2905: CALL_OW 38
// if Tarpan then
2909: LD_EXP 4
2913: IFFALSE 2927
// SaveCharacters ( Tarpan , Tarpan ) ;
2915: LD_EXP 4
2919: PPUSH
2920: LD_STRING Tarpan
2922: PPUSH
2923: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) diff [ Antoine , Tarpan ] , TeamTarpan ) ;
2927: LD_INT 22
2929: PUSH
2930: LD_INT 2
2932: PUSH
2933: EMPTY
2934: LIST
2935: LIST
2936: PUSH
2937: LD_INT 21
2939: PUSH
2940: LD_INT 1
2942: PUSH
2943: EMPTY
2944: LIST
2945: LIST
2946: PUSH
2947: EMPTY
2948: LIST
2949: LIST
2950: PPUSH
2951: CALL_OW 69
2955: PUSH
2956: LD_EXP 1
2960: PUSH
2961: LD_EXP 4
2965: PUSH
2966: EMPTY
2967: LIST
2968: LIST
2969: DIFF
2970: PPUSH
2971: LD_STRING TeamTarpan
2973: PPUSH
2974: CALL_OW 38
// v = FilterUnitsInArea ( ArabExit , [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) ;
2978: LD_ADDR_VAR 0 3
2982: PUSH
2983: LD_INT 2
2985: PPUSH
2986: LD_INT 22
2988: PUSH
2989: LD_INT 2
2991: PUSH
2992: EMPTY
2993: LIST
2994: LIST
2995: PUSH
2996: LD_INT 21
2998: PUSH
2999: LD_INT 2
3001: PUSH
3002: EMPTY
3003: LIST
3004: LIST
3005: PUSH
3006: EMPTY
3007: LIST
3008: LIST
3009: PPUSH
3010: CALL_OW 70
3014: ST_TO_ADDR
// ArVehs = [ ] ;
3015: LD_ADDR_VAR 0 4
3019: PUSH
3020: EMPTY
3021: ST_TO_ADDR
// for i in v do
3022: LD_ADDR_VAR 0 2
3026: PUSH
3027: LD_VAR 0 3
3031: PUSH
3032: FOR_IN
3033: IFFALSE 3108
// ArVehs = ArVehs ^ [ [ GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) , GetNation ( i ) ] ] ;
3035: LD_ADDR_VAR 0 4
3039: PUSH
3040: LD_VAR 0 4
3044: PUSH
3045: LD_VAR 0 2
3049: PPUSH
3050: CALL_OW 265
3054: PUSH
3055: LD_VAR 0 2
3059: PPUSH
3060: CALL_OW 262
3064: PUSH
3065: LD_VAR 0 2
3069: PPUSH
3070: CALL_OW 263
3074: PUSH
3075: LD_VAR 0 2
3079: PPUSH
3080: CALL_OW 264
3084: PUSH
3085: LD_VAR 0 2
3089: PPUSH
3090: CALL_OW 248
3094: PUSH
3095: EMPTY
3096: LIST
3097: LIST
3098: LIST
3099: LIST
3100: LIST
3101: PUSH
3102: EMPTY
3103: LIST
3104: ADD
3105: ST_TO_ADDR
3106: GO 3032
3108: POP
3109: POP
// SaveVariable ( ArVehs , ArVehs ) ;
3110: LD_VAR 0 4
3114: PPUSH
3115: LD_STRING ArVehs
3117: PPUSH
3118: CALL_OW 39
// YouWin ;
3122: CALL_OW 103
// end ; end_of_file
3126: LD_VAR 0 1
3130: RET
// export AmEngineer , AmDefences , AmRepairStrategy ; export AmDefenders , AmEnemies , AmDefenceStrategy ; function PrepareAmericanBase ; var i , h , s ; begin
3131: LD_INT 0
3133: PPUSH
3134: PPUSH
3135: PPUSH
3136: PPUSH
// uc_side = 1 ;
3137: LD_ADDR_OWVAR 20
3141: PUSH
3142: LD_INT 1
3144: ST_TO_ADDR
// uc_nation = 1 ;
3145: LD_ADDR_OWVAR 21
3149: PUSH
3150: LD_INT 1
3152: ST_TO_ADDR
// s = [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ;
3153: LD_ADDR_VAR 0 4
3157: PUSH
3158: LD_INT 3
3160: PPUSH
3161: LD_INT 4
3163: PPUSH
3164: CALL_OW 12
3168: PUSH
3169: LD_INT 3
3171: PPUSH
3172: LD_INT 5
3174: PPUSH
3175: CALL_OW 12
3179: PUSH
3180: LD_INT 4
3182: PPUSH
3183: LD_INT 5
3185: PPUSH
3186: CALL_OW 12
3190: PUSH
3191: EMPTY
3192: LIST
3193: LIST
3194: LIST
3195: PUSH
3196: LD_OWVAR 67
3200: ARRAY
3201: ST_TO_ADDR
// AmDefences = FilterUnitsInArea ( AmericanBaseArea , [ [ f_side , 1 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
3202: LD_ADDR_EXP 14
3206: PUSH
3207: LD_INT 3
3209: PPUSH
3210: LD_INT 22
3212: PUSH
3213: LD_INT 1
3215: PUSH
3216: EMPTY
3217: LIST
3218: LIST
3219: PUSH
3220: LD_INT 2
3222: PUSH
3223: LD_INT 30
3225: PUSH
3226: LD_INT 31
3228: PUSH
3229: EMPTY
3230: LIST
3231: LIST
3232: PUSH
3233: LD_INT 30
3235: PUSH
3236: LD_INT 32
3238: PUSH
3239: EMPTY
3240: LIST
3241: LIST
3242: PUSH
3243: EMPTY
3244: LIST
3245: LIST
3246: LIST
3247: PUSH
3248: EMPTY
3249: LIST
3250: LIST
3251: PPUSH
3252: CALL_OW 70
3256: ST_TO_ADDR
// for i in AmDefences do
3257: LD_ADDR_VAR 0 2
3261: PUSH
3262: LD_EXP 14
3266: PUSH
3267: FOR_IN
3268: IFFALSE 3312
// begin InitHc ;
3270: CALL_OW 19
// PrepareSoldier ( 0 , s ) ;
3274: LD_INT 0
3276: PPUSH
3277: LD_VAR 0 4
3281: PPUSH
3282: CALL_OW 381
// h = CreateHuman ;
3286: LD_ADDR_VAR 0 3
3290: PUSH
3291: CALL_OW 44
3295: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
3296: LD_VAR 0 3
3300: PPUSH
3301: LD_VAR 0 2
3305: PPUSH
3306: CALL_OW 52
// end ;
3310: GO 3267
3312: POP
3313: POP
// AmDefenders = FilterUnitsInArea ( RevealArea , [ [ f_side , 1 ] , [ f_type , unit_vehicle ] ] ) ;
3314: LD_ADDR_EXP 16
3318: PUSH
3319: LD_INT 5
3321: PPUSH
3322: LD_INT 22
3324: PUSH
3325: LD_INT 1
3327: PUSH
3328: EMPTY
3329: LIST
3330: LIST
3331: PUSH
3332: LD_INT 21
3334: PUSH
3335: LD_INT 2
3337: PUSH
3338: EMPTY
3339: LIST
3340: LIST
3341: PUSH
3342: EMPTY
3343: LIST
3344: LIST
3345: PPUSH
3346: CALL_OW 70
3350: ST_TO_ADDR
// for i in AmDefenders do
3351: LD_ADDR_VAR 0 2
3355: PUSH
3356: LD_EXP 16
3360: PUSH
3361: FOR_IN
3362: IFFALSE 3406
// begin InitHc ;
3364: CALL_OW 19
// PrepareMechanic ( 0 , s ) ;
3368: LD_INT 0
3370: PPUSH
3371: LD_VAR 0 4
3375: PPUSH
3376: CALL_OW 383
// h = CreateHuman ;
3380: LD_ADDR_VAR 0 3
3384: PUSH
3385: CALL_OW 44
3389: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
3390: LD_VAR 0 3
3394: PPUSH
3395: LD_VAR 0 2
3399: PPUSH
3400: CALL_OW 52
// end ;
3404: GO 3361
3406: POP
3407: POP
// InitHc ;
3408: CALL_OW 19
// PrepareEngineer ( 0 , s ) ;
3412: LD_INT 0
3414: PPUSH
3415: LD_VAR 0 4
3419: PPUSH
3420: CALL_OW 382
// AmEngineer = CreateHuman ;
3424: LD_ADDR_EXP 13
3428: PUSH
3429: CALL_OW 44
3433: ST_TO_ADDR
// PlaceUnitXY ( AmEngineer , 78 , 91 , false ) ;
3434: LD_EXP 13
3438: PPUSH
3439: LD_INT 78
3441: PPUSH
3442: LD_INT 91
3444: PPUSH
3445: LD_INT 0
3447: PPUSH
3448: CALL_OW 48
// end ;
3452: LD_VAR 0 1
3456: RET
// every 0 0$1 do
3457: GO 3459
3459: DISABLE
// PrepareAmericanBase ;
3460: CALL 3131 0 0
3464: END
// every 0 0$1 trigger AmEngineer do var i ;
3465: LD_EXP 13
3469: IFFALSE 3632
3471: GO 3473
3473: DISABLE
3474: LD_INT 0
3476: PPUSH
// begin enable ;
3477: ENABLE
// if ExistMc ( AmRepairStrategy ) and FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3478: LD_EXP 15
3482: PPUSH
3483: CALL_OW 386
3487: PUSH
3488: LD_INT 22
3490: PUSH
3491: LD_INT 2
3493: PUSH
3494: EMPTY
3495: LIST
3496: LIST
3497: PUSH
3498: LD_INT 101
3500: PUSH
3501: LD_INT 1
3503: PUSH
3504: EMPTY
3505: LIST
3506: LIST
3507: PUSH
3508: EMPTY
3509: LIST
3510: LIST
3511: PPUSH
3512: CALL_OW 69
3516: AND
3517: IFFALSE 3540
// begin KillMc ( AmRepairStrategy ) ;
3519: LD_EXP 15
3523: PPUSH
3524: CALL_OW 387
// ComEnterUnit ( AmEngineer , am_d ) ;
3528: LD_EXP 13
3532: PPUSH
3533: LD_INT 6
3535: PPUSH
3536: CALL_OW 120
// end ; if not ExistMc ( AmRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3540: LD_EXP 15
3544: PPUSH
3545: CALL_OW 386
3549: NOT
3550: PUSH
3551: LD_INT 22
3553: PUSH
3554: LD_INT 2
3556: PUSH
3557: EMPTY
3558: LIST
3559: LIST
3560: PUSH
3561: LD_INT 101
3563: PUSH
3564: LD_INT 1
3566: PUSH
3567: EMPTY
3568: LIST
3569: LIST
3570: PUSH
3571: EMPTY
3572: LIST
3573: LIST
3574: PPUSH
3575: CALL_OW 69
3579: NOT
3580: AND
3581: IFFALSE 3632
// begin ComExitBuilding ( AmEngineer ) ;
3583: LD_EXP 13
3587: PPUSH
3588: CALL_OW 122
// AmRepairStrategy = McRepair ( 1 , AmEngineer , AmDefences , [ [ mcr_bui_limit , 1000 ] , mcr_area_only ] ) ;
3592: LD_ADDR_EXP 15
3596: PUSH
3597: LD_INT 1
3599: PPUSH
3600: LD_EXP 13
3604: PPUSH
3605: LD_EXP 14
3609: PPUSH
3610: LD_INT 6
3612: PUSH
3613: LD_INT 1000
3615: PUSH
3616: EMPTY
3617: LIST
3618: LIST
3619: PUSH
3620: LD_INT 3
3622: PUSH
3623: EMPTY
3624: LIST
3625: LIST
3626: PPUSH
3627: CALL_OW 414
3631: ST_TO_ADDR
// end ; end ;
3632: PPOPN 1
3634: END
// every 0 0$1 trigger not AmEngineer do
3635: LD_EXP 13
3639: NOT
3640: IFFALSE 3654
3642: GO 3644
3644: DISABLE
// KillMc ( AmRepairStrategy ) ;
3645: LD_EXP 15
3649: PPUSH
3650: CALL_OW 387
3654: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do var i , m ;
3655: LD_INT 22
3657: PUSH
3658: LD_INT 1
3660: PUSH
3661: EMPTY
3662: LIST
3663: LIST
3664: PUSH
3665: LD_INT 21
3667: PUSH
3668: LD_INT 2
3670: PUSH
3671: EMPTY
3672: LIST
3673: LIST
3674: PUSH
3675: LD_INT 50
3677: PUSH
3678: EMPTY
3679: LIST
3680: PUSH
3681: EMPTY
3682: LIST
3683: LIST
3684: LIST
3685: PPUSH
3686: CALL_OW 69
3690: IFFALSE 4010
3692: GO 3694
3694: DISABLE
3695: LD_INT 0
3697: PPUSH
3698: PPUSH
// begin enable ;
3699: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do
3700: LD_ADDR_VAR 0 1
3704: PUSH
3705: LD_INT 22
3707: PUSH
3708: LD_INT 1
3710: PUSH
3711: EMPTY
3712: LIST
3713: LIST
3714: PUSH
3715: LD_INT 21
3717: PUSH
3718: LD_INT 2
3720: PUSH
3721: EMPTY
3722: LIST
3723: LIST
3724: PUSH
3725: LD_INT 50
3727: PUSH
3728: EMPTY
3729: LIST
3730: PUSH
3731: EMPTY
3732: LIST
3733: LIST
3734: LIST
3735: PPUSH
3736: CALL_OW 69
3740: PUSH
3741: FOR_IN
3742: IFFALSE 4008
// begin if GetLives ( i ) < 500 then
3744: LD_VAR 0 1
3748: PPUSH
3749: CALL_OW 256
3753: PUSH
3754: LD_INT 500
3756: LESS
3757: IFFALSE 3823
// begin m = IsDrivenBy ( i ) ;
3759: LD_ADDR_VAR 0 2
3763: PUSH
3764: LD_VAR 0 1
3768: PPUSH
3769: CALL_OW 311
3773: ST_TO_ADDR
// ComMoveToArea ( i , AmericanRepairs ) ;
3774: LD_VAR 0 1
3778: PPUSH
3779: LD_INT 7
3781: PPUSH
3782: CALL_OW 113
// AddComExitVehicle ( m ) ;
3786: LD_VAR 0 2
3790: PPUSH
3791: CALL_OW 181
// AddComRepairVehicle ( m , i ) ;
3795: LD_VAR 0 2
3799: PPUSH
3800: LD_VAR 0 1
3804: PPUSH
3805: CALL_OW 189
// AddComEnterUnit ( m , i ) ;
3809: LD_VAR 0 2
3813: PPUSH
3814: LD_VAR 0 1
3818: PPUSH
3819: CALL_OW 180
// end ; if not IsDrivenBy ( i ) and GetLives ( i ) = 1000 then
3823: LD_VAR 0 1
3827: PPUSH
3828: CALL_OW 311
3832: NOT
3833: PUSH
3834: LD_VAR 0 1
3838: PPUSH
3839: CALL_OW 256
3843: PUSH
3844: LD_INT 1000
3846: EQUAL
3847: AND
3848: IFFALSE 3915
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3850: LD_ADDR_VAR 0 2
3854: PUSH
3855: LD_INT 22
3857: PUSH
3858: LD_VAR 0 1
3862: PPUSH
3863: CALL_OW 255
3867: PUSH
3868: EMPTY
3869: LIST
3870: LIST
3871: PUSH
3872: LD_INT 25
3874: PUSH
3875: LD_INT 3
3877: PUSH
3878: EMPTY
3879: LIST
3880: LIST
3881: PUSH
3882: EMPTY
3883: LIST
3884: LIST
3885: PPUSH
3886: CALL_OW 69
3890: PPUSH
3891: LD_VAR 0 1
3895: PPUSH
3896: CALL_OW 74
3900: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3901: LD_VAR 0 2
3905: PPUSH
3906: LD_VAR 0 1
3910: PPUSH
3911: CALL_OW 120
// end ; if not IsDrivenBy ( i ) and See ( 2 , i ) then
3915: LD_VAR 0 1
3919: PPUSH
3920: CALL_OW 311
3924: NOT
3925: PUSH
3926: LD_INT 2
3928: PPUSH
3929: LD_VAR 0 1
3933: PPUSH
3934: CALL_OW 292
3938: AND
3939: IFFALSE 4006
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3941: LD_ADDR_VAR 0 2
3945: PUSH
3946: LD_INT 22
3948: PUSH
3949: LD_VAR 0 1
3953: PPUSH
3954: CALL_OW 255
3958: PUSH
3959: EMPTY
3960: LIST
3961: LIST
3962: PUSH
3963: LD_INT 25
3965: PUSH
3966: LD_INT 3
3968: PUSH
3969: EMPTY
3970: LIST
3971: LIST
3972: PUSH
3973: EMPTY
3974: LIST
3975: LIST
3976: PPUSH
3977: CALL_OW 69
3981: PPUSH
3982: LD_VAR 0 1
3986: PPUSH
3987: CALL_OW 74
3991: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3992: LD_VAR 0 2
3996: PPUSH
3997: LD_VAR 0 1
4001: PPUSH
4002: CALL_OW 120
// end ; end ;
4006: GO 3741
4008: POP
4009: POP
// end ;
4010: PPOPN 2
4012: END
// every 0 0$1 do
4013: GO 4015
4015: DISABLE
// AmEnemies = McRegistry ( 1 , [ [ mc_reg_area_to_protect , RevealArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
4016: LD_ADDR_EXP 17
4020: PUSH
4021: LD_INT 1
4023: PPUSH
4024: LD_INT 3
4026: PUSH
4027: LD_INT 5
4029: PUSH
4030: EMPTY
4031: LIST
4032: LIST
4033: PUSH
4034: LD_INT 1
4036: PUSH
4037: LD_INT 35
4039: PUSH
4040: EMPTY
4041: LIST
4042: LIST
4043: PUSH
4044: EMPTY
4045: LIST
4046: LIST
4047: PPUSH
4048: CALL_OW 399
4052: ST_TO_ADDR
4053: END
// every 0 0$1 do var i , t ;
4054: GO 4056
4056: DISABLE
4057: LD_INT 0
4059: PPUSH
4060: PPUSH
// begin enable ;
4061: ENABLE
// if not ExistMc ( AmDefenceStrategy ) and FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
4062: LD_EXP 18
4066: PPUSH
4067: CALL_OW 386
4071: NOT
4072: PUSH
4073: LD_INT 22
4075: PUSH
4076: LD_INT 2
4078: PUSH
4079: EMPTY
4080: LIST
4081: LIST
4082: PUSH
4083: LD_INT 101
4085: PUSH
4086: LD_INT 1
4088: PUSH
4089: EMPTY
4090: LIST
4091: LIST
4092: PUSH
4093: EMPTY
4094: LIST
4095: LIST
4096: PPUSH
4097: CALL_OW 69
4101: AND
4102: IFFALSE 4206
// begin AmDefenders = FilterUnitsInArea ( RevealArea , [ [ f_side , 1 ] , [ f_or , [ f_type , unit_vehicle ] , [ f_class , class_soldier ] ] ] ) ;
4104: LD_ADDR_EXP 16
4108: PUSH
4109: LD_INT 5
4111: PPUSH
4112: LD_INT 22
4114: PUSH
4115: LD_INT 1
4117: PUSH
4118: EMPTY
4119: LIST
4120: LIST
4121: PUSH
4122: LD_INT 2
4124: PUSH
4125: LD_INT 21
4127: PUSH
4128: LD_INT 2
4130: PUSH
4131: EMPTY
4132: LIST
4133: LIST
4134: PUSH
4135: LD_INT 25
4137: PUSH
4138: LD_INT 1
4140: PUSH
4141: EMPTY
4142: LIST
4143: LIST
4144: PUSH
4145: EMPTY
4146: LIST
4147: LIST
4148: LIST
4149: PUSH
4150: EMPTY
4151: LIST
4152: LIST
4153: PPUSH
4154: CALL_OW 70
4158: ST_TO_ADDR
// AmDefenceStrategy = McDefend ( 1 , AmEnemies , AmDefenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , AmericanBaseArea ] ] ) ;
4159: LD_ADDR_EXP 18
4163: PUSH
4164: LD_INT 1
4166: PPUSH
4167: LD_EXP 17
4171: PPUSH
4172: LD_EXP 16
4176: PPUSH
4177: LD_INT 1
4179: PUSH
4180: LD_INT 200
4182: PUSH
4183: EMPTY
4184: LIST
4185: LIST
4186: PUSH
4187: LD_INT 2
4189: PUSH
4190: LD_INT 3
4192: PUSH
4193: EMPTY
4194: LIST
4195: LIST
4196: PUSH
4197: EMPTY
4198: LIST
4199: LIST
4200: PPUSH
4201: CALL_OW 401
4205: ST_TO_ADDR
// end ; if ExistMc ( AmDefenceStrategy ) and not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
4206: LD_EXP 18
4210: PPUSH
4211: CALL_OW 386
4215: PUSH
4216: LD_INT 22
4218: PUSH
4219: LD_INT 2
4221: PUSH
4222: EMPTY
4223: LIST
4224: LIST
4225: PUSH
4226: LD_INT 101
4228: PUSH
4229: LD_INT 1
4231: PUSH
4232: EMPTY
4233: LIST
4234: LIST
4235: PUSH
4236: EMPTY
4237: LIST
4238: LIST
4239: PPUSH
4240: CALL_OW 69
4244: NOT
4245: AND
4246: IFFALSE 4289
// begin KillMc ( AmDefenceStrategy ) ;
4248: LD_EXP 18
4252: PPUSH
4253: CALL_OW 387
// for i in AmDefenders do
4257: LD_ADDR_VAR 0 1
4261: PUSH
4262: LD_EXP 16
4266: PUSH
4267: FOR_IN
4268: IFFALSE 4287
// ComMoveXY ( i , 80 , 83 ) ;
4270: LD_VAR 0 1
4274: PPUSH
4275: LD_INT 80
4277: PPUSH
4278: LD_INT 83
4280: PPUSH
4281: CALL_OW 111
4285: GO 4267
4287: POP
4288: POP
// end ; for i in AmDefenders do
4289: LD_ADDR_VAR 0 1
4293: PUSH
4294: LD_EXP 16
4298: PUSH
4299: FOR_IN
4300: IFFALSE 4374
// begin if not IsInArea ( i , AmericanBaseArea ) then
4302: LD_VAR 0 1
4306: PPUSH
4307: LD_INT 3
4309: PPUSH
4310: CALL_OW 308
4314: NOT
4315: IFFALSE 4329
// ComMoveToArea ( i , AmericanBaseArea ) ;
4317: LD_VAR 0 1
4321: PPUSH
4322: LD_INT 3
4324: PPUSH
4325: CALL_OW 113
// if not IsOK ( i ) or GetSide ( i ) <> 1 then
4329: LD_VAR 0 1
4333: PPUSH
4334: CALL_OW 302
4338: NOT
4339: PUSH
4340: LD_VAR 0 1
4344: PPUSH
4345: CALL_OW 255
4349: PUSH
4350: LD_INT 1
4352: NONEQUAL
4353: OR
4354: IFFALSE 4372
// AmDefenders = AmDefenders diff i ;
4356: LD_ADDR_EXP 16
4360: PUSH
4361: LD_EXP 16
4365: PUSH
4366: LD_VAR 0 1
4370: DIFF
4371: ST_TO_ADDR
// end ;
4372: GO 4299
4374: POP
4375: POP
// end ; end_of_file
4376: PPOPN 2
4378: END
// export GreenEngineer , GreenDefences , GreenRepairStrategy ; function PrepareGreenBase ; var i , h , s ; var a ; begin
4379: LD_INT 0
4381: PPUSH
4382: PPUSH
4383: PPUSH
4384: PPUSH
4385: PPUSH
// uc_side = 7 ;
4386: LD_ADDR_OWVAR 20
4390: PUSH
4391: LD_INT 7
4393: ST_TO_ADDR
// uc_nation = 1 ;
4394: LD_ADDR_OWVAR 21
4398: PUSH
4399: LD_INT 1
4401: ST_TO_ADDR
// s = [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ;
4402: LD_ADDR_VAR 0 4
4406: PUSH
4407: LD_INT 3
4409: PPUSH
4410: LD_INT 4
4412: PPUSH
4413: CALL_OW 12
4417: PUSH
4418: LD_INT 3
4420: PPUSH
4421: LD_INT 5
4423: PPUSH
4424: CALL_OW 12
4428: PUSH
4429: LD_INT 4
4431: PPUSH
4432: LD_INT 5
4434: PPUSH
4435: CALL_OW 12
4439: PUSH
4440: EMPTY
4441: LIST
4442: LIST
4443: LIST
4444: PUSH
4445: LD_OWVAR 67
4449: ARRAY
4450: ST_TO_ADDR
// GreenDefences = FilterUnitsInArea ( GreenBaseArea , [ [ f_side , 7 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
4451: LD_ADDR_EXP 20
4455: PUSH
4456: LD_INT 4
4458: PPUSH
4459: LD_INT 22
4461: PUSH
4462: LD_INT 7
4464: PUSH
4465: EMPTY
4466: LIST
4467: LIST
4468: PUSH
4469: LD_INT 2
4471: PUSH
4472: LD_INT 30
4474: PUSH
4475: LD_INT 31
4477: PUSH
4478: EMPTY
4479: LIST
4480: LIST
4481: PUSH
4482: LD_INT 30
4484: PUSH
4485: LD_INT 32
4487: PUSH
4488: EMPTY
4489: LIST
4490: LIST
4491: PUSH
4492: EMPTY
4493: LIST
4494: LIST
4495: LIST
4496: PUSH
4497: EMPTY
4498: LIST
4499: LIST
4500: PPUSH
4501: CALL_OW 70
4505: ST_TO_ADDR
// for i in GreenDefences do
4506: LD_ADDR_VAR 0 2
4510: PUSH
4511: LD_EXP 20
4515: PUSH
4516: FOR_IN
4517: IFFALSE 4569
// begin InitHc ;
4519: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
4523: LD_INT 1
4525: PPUSH
4526: LD_INT 2
4528: PPUSH
4529: CALL_OW 12
4533: PPUSH
4534: LD_VAR 0 4
4538: PPUSH
4539: CALL_OW 381
// h = CreateHuman ;
4543: LD_ADDR_VAR 0 3
4547: PUSH
4548: CALL_OW 44
4552: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
4553: LD_VAR 0 3
4557: PPUSH
4558: LD_VAR 0 2
4562: PPUSH
4563: CALL_OW 52
// end ;
4567: GO 4516
4569: POP
4570: POP
// PrepareMechanic ( 0 , s ) ;
4571: LD_INT 0
4573: PPUSH
4574: LD_VAR 0 4
4578: PPUSH
4579: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , gv1 ) ;
4583: CALL_OW 44
4587: PPUSH
4588: LD_INT 105
4590: PPUSH
4591: CALL_OW 52
// PrepareScientist ( 0 , s ) ;
4595: LD_INT 0
4597: PPUSH
4598: LD_VAR 0 4
4602: PPUSH
4603: CALL_OW 384
// PlaceHumanInUnit ( CreateHuman , gl ) ;
4607: CALL_OW 44
4611: PPUSH
4612: LD_INT 44
4614: PPUSH
4615: CALL_OW 52
// PrepareEngineer ( 0 , s ) ;
4619: LD_INT 0
4621: PPUSH
4622: LD_VAR 0 4
4626: PPUSH
4627: CALL_OW 382
// GreenEngineer = CreateHuman ;
4631: LD_ADDR_EXP 19
4635: PUSH
4636: CALL_OW 44
4640: ST_TO_ADDR
// PlaceUnitXY ( GreenEngineer , 20 , 14 , false ) ;
4641: LD_EXP 19
4645: PPUSH
4646: LD_INT 20
4648: PPUSH
4649: LD_INT 14
4651: PPUSH
4652: LD_INT 0
4654: PPUSH
4655: CALL_OW 48
// ComResearch ( gl , tech_SolPow ) ;
4659: LD_INT 44
4661: PPUSH
4662: LD_INT 35
4664: PPUSH
4665: CALL_OW 124
// AddComResearch ( gl , tech_SolEng ) ;
4669: LD_INT 44
4671: PPUSH
4672: LD_INT 45
4674: PPUSH
4675: CALL_OW 184
// AddComResearch ( gl , tech_Tech1 ) ;
4679: LD_INT 44
4681: PPUSH
4682: LD_INT 48
4684: PPUSH
4685: CALL_OW 184
// AddComResearch ( gl , tech_Opto1 ) ;
4689: LD_INT 44
4691: PPUSH
4692: LD_INT 60
4694: PPUSH
4695: CALL_OW 184
// AddComResearch ( gl , tech_Opto2 ) ;
4699: LD_INT 44
4701: PPUSH
4702: LD_INT 61
4704: PPUSH
4705: CALL_OW 184
// end ;
4709: LD_VAR 0 1
4713: RET
// every 0 0$1 do
4714: GO 4716
4716: DISABLE
// PrepareGreenBase ;
4717: CALL 4379 0 0
4721: END
// every 0 0$1 trigger GreenEngineer do var i ;
4722: LD_EXP 19
4726: IFFALSE 4889
4728: GO 4730
4730: DISABLE
4731: LD_INT 0
4733: PPUSH
// begin enable ;
4734: ENABLE
// if ExistMc ( GreenRepairStrategy ) and FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 7 ] ] ) then
4735: LD_EXP 21
4739: PPUSH
4740: CALL_OW 386
4744: PUSH
4745: LD_INT 22
4747: PUSH
4748: LD_INT 2
4750: PUSH
4751: EMPTY
4752: LIST
4753: LIST
4754: PUSH
4755: LD_INT 101
4757: PUSH
4758: LD_INT 7
4760: PUSH
4761: EMPTY
4762: LIST
4763: LIST
4764: PUSH
4765: EMPTY
4766: LIST
4767: LIST
4768: PPUSH
4769: CALL_OW 69
4773: AND
4774: IFFALSE 4797
// begin KillMc ( GreenRepairStrategy ) ;
4776: LD_EXP 21
4780: PPUSH
4781: CALL_OW 387
// ComEnterUnit ( GreenEngineer , gr_d ) ;
4785: LD_EXP 19
4789: PPUSH
4790: LD_INT 113
4792: PPUSH
4793: CALL_OW 120
// end ; if not ExistMc ( GreenRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 7 ] ] ) then
4797: LD_EXP 21
4801: PPUSH
4802: CALL_OW 386
4806: NOT
4807: PUSH
4808: LD_INT 22
4810: PUSH
4811: LD_INT 2
4813: PUSH
4814: EMPTY
4815: LIST
4816: LIST
4817: PUSH
4818: LD_INT 101
4820: PUSH
4821: LD_INT 7
4823: PUSH
4824: EMPTY
4825: LIST
4826: LIST
4827: PUSH
4828: EMPTY
4829: LIST
4830: LIST
4831: PPUSH
4832: CALL_OW 69
4836: NOT
4837: AND
4838: IFFALSE 4889
// begin ComExitBuilding ( GreenEngineer ) ;
4840: LD_EXP 19
4844: PPUSH
4845: CALL_OW 122
// GreenRepairStrategy = McRepair ( 1 , GreenEngineer , GreenDefences , [ [ mcr_bui_limit , 1000 ] , mcr_area_only ] ) ;
4849: LD_ADDR_EXP 21
4853: PUSH
4854: LD_INT 1
4856: PPUSH
4857: LD_EXP 19
4861: PPUSH
4862: LD_EXP 20
4866: PPUSH
4867: LD_INT 6
4869: PUSH
4870: LD_INT 1000
4872: PUSH
4873: EMPTY
4874: LIST
4875: LIST
4876: PUSH
4877: LD_INT 3
4879: PUSH
4880: EMPTY
4881: LIST
4882: LIST
4883: PPUSH
4884: CALL_OW 414
4888: ST_TO_ADDR
// end ; end ;
4889: PPOPN 1
4891: END
// every 0 0$1 trigger not GreenEngineer do
4892: LD_EXP 19
4896: NOT
4897: IFFALSE 4911
4899: GO 4901
4901: DISABLE
// KillMc ( GreenRepairStrategy ) ;
4902: LD_EXP 21
4906: PPUSH
4907: CALL_OW 387
4911: END
// export GreenDefenders , GreenEnemies , GreenDefenceStrategy ; every 0 0$1 do
4912: GO 4914
4914: DISABLE
// GreenEnemies = McRegistry ( 7 , [ [ mc_reg_area_to_protect , GreenBaseArea ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
4915: LD_ADDR_EXP 23
4919: PUSH
4920: LD_INT 7
4922: PPUSH
4923: LD_INT 3
4925: PUSH
4926: LD_INT 4
4928: PUSH
4929: EMPTY
4930: LIST
4931: LIST
4932: PUSH
4933: LD_INT 1
4935: PUSH
4936: LD_INT 35
4938: PUSH
4939: EMPTY
4940: LIST
4941: LIST
4942: PUSH
4943: EMPTY
4944: LIST
4945: LIST
4946: PPUSH
4947: CALL_OW 399
4951: ST_TO_ADDR
4952: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 7 ] ] ) do var i , t ;
4953: LD_INT 22
4955: PUSH
4956: LD_INT 2
4958: PUSH
4959: EMPTY
4960: LIST
4961: LIST
4962: PUSH
4963: LD_INT 101
4965: PUSH
4966: LD_INT 7
4968: PUSH
4969: EMPTY
4970: LIST
4971: LIST
4972: PUSH
4973: EMPTY
4974: LIST
4975: LIST
4976: PPUSH
4977: CALL_OW 69
4981: IFFALSE 5109
4983: GO 4985
4985: DISABLE
4986: LD_INT 0
4988: PPUSH
4989: PPUSH
// begin enable ;
4990: ENABLE
// if not ExistMc ( GreenDefenceStrategy ) then
4991: LD_EXP 24
4995: PPUSH
4996: CALL_OW 386
5000: NOT
5001: IFFALSE 5065
// begin GreenDefenders = [ gv1 , gs1 ] ;
5003: LD_ADDR_EXP 22
5007: PUSH
5008: LD_INT 105
5010: PUSH
5011: LD_INT 108
5013: PUSH
5014: EMPTY
5015: LIST
5016: LIST
5017: ST_TO_ADDR
// GreenDefenceStrategy = McDefend ( 1 , GreenEnemies , GreenDefenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , GreenDefenceArea ] ] ) ;
5018: LD_ADDR_EXP 24
5022: PUSH
5023: LD_INT 1
5025: PPUSH
5026: LD_EXP 23
5030: PPUSH
5031: LD_EXP 22
5035: PPUSH
5036: LD_INT 1
5038: PUSH
5039: LD_INT 200
5041: PUSH
5042: EMPTY
5043: LIST
5044: LIST
5045: PUSH
5046: LD_INT 2
5048: PUSH
5049: LD_INT 6
5051: PUSH
5052: EMPTY
5053: LIST
5054: LIST
5055: PUSH
5056: EMPTY
5057: LIST
5058: LIST
5059: PPUSH
5060: CALL_OW 401
5064: ST_TO_ADDR
// end ; for i in GreenDefenders do
5065: LD_ADDR_VAR 0 1
5069: PUSH
5070: LD_EXP 22
5074: PUSH
5075: FOR_IN
5076: IFFALSE 5107
// if not IsInArea ( i , GreenDefenceArea ) then
5078: LD_VAR 0 1
5082: PPUSH
5083: LD_INT 6
5085: PPUSH
5086: CALL_OW 308
5090: NOT
5091: IFFALSE 5105
// ComMoveToArea ( i , GreenDefenceArea ) ;
5093: LD_VAR 0 1
5097: PPUSH
5098: LD_INT 6
5100: PPUSH
5101: CALL_OW 113
5105: GO 5075
5107: POP
5108: POP
// end ;
5109: PPOPN 2
5111: END
// every 0 0$1 trigger not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 7 ] ] ) do var i ;
5112: LD_INT 22
5114: PUSH
5115: LD_INT 2
5117: PUSH
5118: EMPTY
5119: LIST
5120: LIST
5121: PUSH
5122: LD_INT 101
5124: PUSH
5125: LD_INT 7
5127: PUSH
5128: EMPTY
5129: LIST
5130: LIST
5131: PUSH
5132: EMPTY
5133: LIST
5134: LIST
5135: PPUSH
5136: CALL_OW 69
5140: NOT
5141: IFFALSE 5202
5143: GO 5145
5145: DISABLE
5146: LD_INT 0
5148: PPUSH
// begin enable ;
5149: ENABLE
// if ExistMc ( GreenDefenceStrategy ) then
5150: LD_EXP 24
5154: PPUSH
5155: CALL_OW 386
5159: IFFALSE 5170
// KillMc ( GreenDefenceStrategy ) ;
5161: LD_EXP 24
5165: PPUSH
5166: CALL_OW 387
// for i in GreenDefenders do
5170: LD_ADDR_VAR 0 1
5174: PUSH
5175: LD_EXP 22
5179: PUSH
5180: FOR_IN
5181: IFFALSE 5200
// ComMoveXY ( i , 30 , 22 ) ;
5183: LD_VAR 0 1
5187: PPUSH
5188: LD_INT 30
5190: PPUSH
5191: LD_INT 22
5193: PPUSH
5194: CALL_OW 111
5198: GO 5180
5200: POP
5201: POP
// end ; end_of_file
5202: PPOPN 1
5204: END
// every 2 2$30 do
5205: GO 5207
5207: DISABLE
// begin enable ;
5208: ENABLE
// Wait ( Rand ( 0 0$5 , 0 0$30 ) ) ;
5209: LD_INT 175
5211: PPUSH
5212: LD_INT 1050
5214: PPUSH
5215: CALL_OW 12
5219: PPUSH
5220: CALL_OW 67
// CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
5224: LD_INT 2
5226: PPUSH
5227: LD_INT 5
5229: PPUSH
5230: CALL_OW 12
5234: PPUSH
5235: LD_INT 1
5237: PPUSH
5238: CALL_OW 57
// end ;
5242: END
// every 1 1$40 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_btype , b_depot ] ] ) do var d ;
5243: LD_INT 22
5245: PUSH
5246: LD_INT 2
5248: PUSH
5249: EMPTY
5250: LIST
5251: LIST
5252: PUSH
5253: LD_INT 30
5255: PUSH
5256: LD_INT 0
5258: PUSH
5259: EMPTY
5260: LIST
5261: LIST
5262: PUSH
5263: EMPTY
5264: LIST
5265: LIST
5266: PPUSH
5267: CALL_OW 69
5271: IFFALSE 5362
5273: GO 5275
5275: DISABLE
5276: LD_INT 0
5278: PPUSH
// begin d = FilterAllUnits ( [ [ f_side , 2 ] , [ f_btype , b_depot ] ] ) [ 1 ] ;
5279: LD_ADDR_VAR 0 1
5283: PUSH
5284: LD_INT 22
5286: PUSH
5287: LD_INT 2
5289: PUSH
5290: EMPTY
5291: LIST
5292: LIST
5293: PUSH
5294: LD_INT 30
5296: PUSH
5297: LD_INT 0
5299: PUSH
5300: EMPTY
5301: LIST
5302: LIST
5303: PUSH
5304: EMPTY
5305: LIST
5306: LIST
5307: PPUSH
5308: CALL_OW 69
5312: PUSH
5313: LD_INT 1
5315: ARRAY
5316: ST_TO_ADDR
// enable ;
5317: ENABLE
// if GetResourceType ( GetBase ( d ) , mat_cans ) < 100 then
5318: LD_VAR 0 1
5322: PPUSH
5323: CALL_OW 274
5327: PPUSH
5328: LD_INT 1
5330: PPUSH
5331: CALL_OW 275
5335: PUSH
5336: LD_INT 100
5338: LESS
5339: IFFALSE 5362
// CreateCratesArea ( Rand ( 3 , 5 ) , AmericanBaseArea , true ) ;
5341: LD_INT 3
5343: PPUSH
5344: LD_INT 5
5346: PPUSH
5347: CALL_OW 12
5351: PPUSH
5352: LD_INT 3
5354: PPUSH
5355: LD_INT 1
5357: PPUSH
5358: CALL_OW 55
// end ;
5362: PPOPN 1
5364: END
// export GreensDestroyed ; on UnitDestroyed ( u ) do begin if u = Antoine then
5365: LD_VAR 0 1
5369: PUSH
5370: LD_EXP 1
5374: EQUAL
5375: IFFALSE 5384
// YouLost ( AntoineDead ) ;
5377: LD_STRING AntoineDead
5379: PPUSH
5380: CALL_OW 104
// if GetSide ( u ) = 7 then
5384: LD_VAR 0 1
5388: PPUSH
5389: CALL_OW 255
5393: PUSH
5394: LD_INT 7
5396: EQUAL
5397: IFFALSE 5413
// GreensDestroyed = GreensDestroyed + 1 ;
5399: LD_ADDR_EXP 25
5403: PUSH
5404: LD_EXP 25
5408: PUSH
5409: LD_INT 1
5411: PLUS
5412: ST_TO_ADDR
// end ;
5413: PPOPN 1
5415: END
// every 0 0$1 trigger not FilterAllUnits ( [ [ f_nation , nation_american ] , [ f_type , unit_vehicle ] ] ) = 0 and FilterAllUnits ( [ [ f_nation , nation_american ] , [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ] ) = 0 do
5416: LD_INT 23
5418: PUSH
5419: LD_INT 1
5421: PUSH
5422: EMPTY
5423: LIST
5424: LIST
5425: PUSH
5426: LD_INT 21
5428: PUSH
5429: LD_INT 2
5431: PUSH
5432: EMPTY
5433: LIST
5434: LIST
5435: PUSH
5436: EMPTY
5437: LIST
5438: LIST
5439: PPUSH
5440: CALL_OW 69
5444: PUSH
5445: LD_INT 0
5447: EQUAL
5448: NOT
5449: PUSH
5450: LD_INT 23
5452: PUSH
5453: LD_INT 1
5455: PUSH
5456: EMPTY
5457: LIST
5458: LIST
5459: PUSH
5460: LD_INT 2
5462: PUSH
5463: LD_INT 30
5465: PUSH
5466: LD_INT 2
5468: PUSH
5469: EMPTY
5470: LIST
5471: LIST
5472: PUSH
5473: LD_INT 30
5475: PUSH
5476: LD_INT 3
5478: PUSH
5479: EMPTY
5480: LIST
5481: LIST
5482: PUSH
5483: EMPTY
5484: LIST
5485: LIST
5486: LIST
5487: PUSH
5488: EMPTY
5489: LIST
5490: LIST
5491: PPUSH
5492: CALL_OW 69
5496: PUSH
5497: LD_INT 0
5499: EQUAL
5500: AND
5501: IFFALSE 5513
5503: GO 5505
5505: DISABLE
// YouLost ( NoFactory ) ;
5506: LD_STRING NoFactory
5508: PPUSH
5509: CALL_OW 104
5513: END
// every 0 0$1 trigger not FilterAllUnits ( [ f_side , 7 ] ) and not Faked do
5514: LD_INT 22
5516: PUSH
5517: LD_INT 7
5519: PUSH
5520: EMPTY
5521: LIST
5522: LIST
5523: PPUSH
5524: CALL_OW 69
5528: NOT
5529: PUSH
5530: LD_EXP 10
5534: NOT
5535: AND
5536: IFFALSE 5548
5538: GO 5540
5540: DISABLE
// YouLost ( GreenDestroyedTooSoon ) ; end_of_file
5541: LD_STRING GreenDestroyedTooSoon
5543: PPUSH
5544: CALL_OW 104
5548: END
// export function PrepareBase ( side , area , skill , workshop , lab , armoury , engineers ) ; var i , j , h ; begin
5549: LD_INT 0
5551: PPUSH
5552: PPUSH
5553: PPUSH
5554: PPUSH
// InitHc ;
5555: CALL_OW 19
// for i in FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_building ] ] ) do
5559: LD_ADDR_VAR 0 9
5563: PUSH
5564: LD_VAR 0 2
5568: PPUSH
5569: LD_INT 22
5571: PUSH
5572: LD_VAR 0 1
5576: PUSH
5577: EMPTY
5578: LIST
5579: LIST
5580: PUSH
5581: LD_INT 21
5583: PUSH
5584: LD_INT 3
5586: PUSH
5587: EMPTY
5588: LIST
5589: LIST
5590: PUSH
5591: EMPTY
5592: LIST
5593: LIST
5594: PPUSH
5595: CALL_OW 70
5599: PUSH
5600: FOR_IN
5601: IFFALSE 6088
// case GetBType ( i ) of b_depot , b_warehouse :
5603: LD_VAR 0 9
5607: PPUSH
5608: CALL_OW 266
5612: PUSH
5613: LD_INT 0
5615: DOUBLE
5616: EQUAL
5617: IFTRUE 5627
5619: LD_INT 1
5621: DOUBLE
5622: EQUAL
5623: IFTRUE 5627
5625: GO 5769
5627: POP
// for j = 1 to engineers do
5628: LD_ADDR_VAR 0 10
5632: PUSH
5633: DOUBLE
5634: LD_INT 1
5636: DEC
5637: ST_TO_ADDR
5638: LD_VAR 0 7
5642: PUSH
5643: FOR_TO
5644: IFFALSE 5765
// begin PrepareEngineer ( Rand ( 1 , 2 ) , skill ) ;
5646: LD_INT 1
5648: PPUSH
5649: LD_INT 2
5651: PPUSH
5652: CALL_OW 12
5656: PPUSH
5657: LD_VAR 0 3
5661: PPUSH
5662: CALL_OW 382
// h = CreateHuman ;
5666: LD_ADDR_VAR 0 11
5670: PUSH
5671: CALL_OW 44
5675: ST_TO_ADDR
// PlaceUnitXYR ( h , ShiftX ( GetX ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , ShiftY ( GetY ( i ) , GetDir ( i ) , Rand ( 4 , 10 ) ) , 8 , false ) ;
5676: LD_VAR 0 11
5680: PPUSH
5681: LD_VAR 0 9
5685: PPUSH
5686: CALL_OW 250
5690: PPUSH
5691: LD_VAR 0 9
5695: PPUSH
5696: CALL_OW 254
5700: PPUSH
5701: LD_INT 4
5703: PPUSH
5704: LD_INT 10
5706: PPUSH
5707: CALL_OW 12
5711: PPUSH
5712: CALL_OW 272
5716: PPUSH
5717: LD_VAR 0 9
5721: PPUSH
5722: CALL_OW 251
5726: PPUSH
5727: LD_VAR 0 9
5731: PPUSH
5732: CALL_OW 254
5736: PPUSH
5737: LD_INT 4
5739: PPUSH
5740: LD_INT 10
5742: PPUSH
5743: CALL_OW 12
5747: PPUSH
5748: CALL_OW 273
5752: PPUSH
5753: LD_INT 8
5755: PPUSH
5756: LD_INT 0
5758: PPUSH
5759: CALL_OW 50
// end ; b_armoury , b_barracks :
5763: GO 5643
5765: POP
5766: POP
5767: GO 6086
5769: LD_INT 4
5771: DOUBLE
5772: EQUAL
5773: IFTRUE 5783
5775: LD_INT 5
5777: DOUBLE
5778: EQUAL
5779: IFTRUE 5783
5781: GO 5852
5783: POP
// for j = 1 to armoury do
5784: LD_ADDR_VAR 0 10
5788: PUSH
5789: DOUBLE
5790: LD_INT 1
5792: DEC
5793: ST_TO_ADDR
5794: LD_VAR 0 6
5798: PUSH
5799: FOR_TO
5800: IFFALSE 5848
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
5802: LD_INT 1
5804: PPUSH
5805: LD_INT 2
5807: PPUSH
5808: CALL_OW 12
5812: PPUSH
5813: LD_VAR 0 3
5817: PPUSH
5818: CALL_OW 381
// h = CreateHuman ;
5822: LD_ADDR_VAR 0 11
5826: PUSH
5827: CALL_OW 44
5831: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
5832: LD_VAR 0 11
5836: PPUSH
5837: LD_VAR 0 9
5841: PPUSH
5842: CALL_OW 52
// end ; b_lab_basic , b_lab_half , b_lab_full :
5846: GO 5799
5848: POP
5849: POP
5850: GO 6086
5852: LD_INT 9
5854: DOUBLE
5855: EQUAL
5856: IFTRUE 5872
5858: LD_INT 7
5860: DOUBLE
5861: EQUAL
5862: IFTRUE 5872
5864: LD_INT 8
5866: DOUBLE
5867: EQUAL
5868: IFTRUE 5872
5870: GO 5941
5872: POP
// for j = 1 to lab do
5873: LD_ADDR_VAR 0 10
5877: PUSH
5878: DOUBLE
5879: LD_INT 1
5881: DEC
5882: ST_TO_ADDR
5883: LD_VAR 0 5
5887: PUSH
5888: FOR_TO
5889: IFFALSE 5937
// begin PrepareScientist ( Rand ( 1 , 2 ) , skill ) ;
5891: LD_INT 1
5893: PPUSH
5894: LD_INT 2
5896: PPUSH
5897: CALL_OW 12
5901: PPUSH
5902: LD_VAR 0 3
5906: PPUSH
5907: CALL_OW 384
// h = CreateHuman ;
5911: LD_ADDR_VAR 0 11
5915: PUSH
5916: CALL_OW 44
5920: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
5921: LD_VAR 0 11
5925: PPUSH
5926: LD_VAR 0 9
5930: PPUSH
5931: CALL_OW 52
// end ; b_workshop , b_factory :
5935: GO 5888
5937: POP
5938: POP
5939: GO 6086
5941: LD_INT 2
5943: DOUBLE
5944: EQUAL
5945: IFTRUE 5955
5947: LD_INT 3
5949: DOUBLE
5950: EQUAL
5951: IFTRUE 5955
5953: GO 6024
5955: POP
// for j = 1 to workshop do
5956: LD_ADDR_VAR 0 10
5960: PUSH
5961: DOUBLE
5962: LD_INT 1
5964: DEC
5965: ST_TO_ADDR
5966: LD_VAR 0 4
5970: PUSH
5971: FOR_TO
5972: IFFALSE 6020
// begin PrepareMechanic ( Rand ( 1 , 2 ) , skill ) ;
5974: LD_INT 1
5976: PPUSH
5977: LD_INT 2
5979: PPUSH
5980: CALL_OW 12
5984: PPUSH
5985: LD_VAR 0 3
5989: PPUSH
5990: CALL_OW 383
// h = CreateHuman ;
5994: LD_ADDR_VAR 0 11
5998: PUSH
5999: CALL_OW 44
6003: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
6004: LD_VAR 0 11
6008: PPUSH
6009: LD_VAR 0 9
6013: PPUSH
6014: CALL_OW 52
// end ; b_breastwork , b_bunker :
6018: GO 5971
6020: POP
6021: POP
6022: GO 6086
6024: LD_INT 31
6026: DOUBLE
6027: EQUAL
6028: IFTRUE 6038
6030: LD_INT 32
6032: DOUBLE
6033: EQUAL
6034: IFTRUE 6038
6036: GO 6085
6038: POP
// begin PrepareSoldier ( Rand ( 1 , 2 ) , skill ) ;
6039: LD_INT 1
6041: PPUSH
6042: LD_INT 2
6044: PPUSH
6045: CALL_OW 12
6049: PPUSH
6050: LD_VAR 0 3
6054: PPUSH
6055: CALL_OW 381
// h = CreateHuman ;
6059: LD_ADDR_VAR 0 11
6063: PUSH
6064: CALL_OW 44
6068: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
6069: LD_VAR 0 11
6073: PPUSH
6074: LD_VAR 0 9
6078: PPUSH
6079: CALL_OW 52
// end ; end ;
6083: GO 6086
6085: POP
6086: GO 5600
6088: POP
6089: POP
// end ;
6090: LD_VAR 0 8
6094: RET
// export function WhoDiscovered ( side , target ) ; var i ; begin
6095: LD_INT 0
6097: PPUSH
6098: PPUSH
// i = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , side ] , [ f_not , [ f_nation , nation_nature ] ] ] ) , target [ 1 ] ) ;
6099: LD_ADDR_VAR 0 4
6103: PUSH
6104: LD_INT 22
6106: PUSH
6107: LD_VAR 0 1
6111: PUSH
6112: EMPTY
6113: LIST
6114: LIST
6115: PUSH
6116: LD_INT 3
6118: PUSH
6119: LD_INT 23
6121: PUSH
6122: LD_INT 0
6124: PUSH
6125: EMPTY
6126: LIST
6127: LIST
6128: PUSH
6129: EMPTY
6130: LIST
6131: LIST
6132: PUSH
6133: EMPTY
6134: LIST
6135: LIST
6136: PPUSH
6137: CALL_OW 69
6141: PPUSH
6142: LD_VAR 0 2
6146: PUSH
6147: LD_INT 1
6149: ARRAY
6150: PPUSH
6151: CALL_OW 74
6155: ST_TO_ADDR
// if GetType ( i ) = unit_vehicle then
6156: LD_VAR 0 4
6160: PPUSH
6161: CALL_OW 247
6165: PUSH
6166: LD_INT 2
6168: EQUAL
6169: IFFALSE 6233
// if GetControl ( i ) = control_manual then
6171: LD_VAR 0 4
6175: PPUSH
6176: CALL_OW 263
6180: PUSH
6181: LD_INT 1
6183: EQUAL
6184: IFFALSE 6203
// i = IsDrivenBy ( i ) else
6186: LD_ADDR_VAR 0 4
6190: PUSH
6191: LD_VAR 0 4
6195: PPUSH
6196: CALL_OW 311
6200: ST_TO_ADDR
6201: GO 6233
// if GetControl ( i ) = control_remote then
6203: LD_VAR 0 4
6207: PPUSH
6208: CALL_OW 263
6212: PUSH
6213: LD_INT 2
6215: EQUAL
6216: IFFALSE 6233
// i = IsControledBy ( i ) ;
6218: LD_ADDR_VAR 0 4
6222: PUSH
6223: LD_VAR 0 4
6227: PPUSH
6228: CALL_OW 312
6232: ST_TO_ADDR
// if GetType ( i ) = unit_building then
6233: LD_VAR 0 4
6237: PPUSH
6238: CALL_OW 247
6242: PUSH
6243: LD_INT 3
6245: EQUAL
6246: IFFALSE 6289
// i = UnitFilter ( UnitsInside ( i ) , [ f_not , [ f_nation , nation_nature ] ] ) [ 1 ] ;
6248: LD_ADDR_VAR 0 4
6252: PUSH
6253: LD_VAR 0 4
6257: PPUSH
6258: CALL_OW 313
6262: PPUSH
6263: LD_INT 3
6265: PUSH
6266: LD_INT 23
6268: PUSH
6269: LD_INT 0
6271: PUSH
6272: EMPTY
6273: LIST
6274: LIST
6275: PUSH
6276: EMPTY
6277: LIST
6278: LIST
6279: PPUSH
6280: CALL_OW 72
6284: PUSH
6285: LD_INT 1
6287: ARRAY
6288: ST_TO_ADDR
// if not GetType ( i ) = unit_human then
6289: LD_VAR 0 4
6293: PPUSH
6294: CALL_OW 247
6298: PUSH
6299: LD_INT 1
6301: EQUAL
6302: NOT
6303: IFFALSE 6363
// i = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_nation , nation_nature ] ] ] ) [ 1 ] ;
6305: LD_ADDR_VAR 0 4
6309: PUSH
6310: LD_INT 22
6312: PUSH
6313: LD_VAR 0 1
6317: PUSH
6318: EMPTY
6319: LIST
6320: LIST
6321: PUSH
6322: LD_INT 21
6324: PUSH
6325: LD_INT 1
6327: PUSH
6328: EMPTY
6329: LIST
6330: LIST
6331: PUSH
6332: LD_INT 3
6334: PUSH
6335: LD_INT 23
6337: PUSH
6338: LD_INT 0
6340: PUSH
6341: EMPTY
6342: LIST
6343: LIST
6344: PUSH
6345: EMPTY
6346: LIST
6347: LIST
6348: PUSH
6349: EMPTY
6350: LIST
6351: LIST
6352: LIST
6353: PPUSH
6354: CALL_OW 69
6358: PUSH
6359: LD_INT 1
6361: ARRAY
6362: ST_TO_ADDR
// result = i ;
6363: LD_ADDR_VAR 0 3
6367: PUSH
6368: LD_VAR 0 4
6372: ST_TO_ADDR
// end ;
6373: LD_VAR 0 3
6377: RET
