// export Antoine , Ende , Others ; export Bojan ; function PrepareOurs ; var AntoineHealth ; var h , s ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
// s = [ 3 , 2 , 2 ] [ difficulty ] ;
   6: LD_ADDR_VAR 0 4
  10: PUSH
  11: LD_INT 3
  13: PUSH
  14: LD_INT 2
  16: PUSH
  17: LD_INT 2
  19: PUSH
  20: EMPTY
  21: LIST
  22: LIST
  23: LIST
  24: PUSH
  25: LD_OWVAR 67
  29: ARRAY
  30: ST_TO_ADDR
// uc_side = 2 ;
  31: LD_ADDR_OWVAR 20
  35: PUSH
  36: LD_INT 2
  38: ST_TO_ADDR
// uc_nation = 2 ;
  39: LD_ADDR_OWVAR 21
  43: PUSH
  44: LD_INT 2
  46: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 0 , 0 ) ;
  47: LD_ADDR_EXP 1
  51: PUSH
  52: LD_STRING Antoine
  54: PPUSH
  55: LD_INT 0
  57: PPUSH
  58: LD_INT 0
  60: PPUSH
  61: CALL_OW 527
  65: ST_TO_ADDR
// AntoineHealth = LoadVariable ( AntoineHealth , 1000 ) ;
  66: LD_ADDR_VAR 0 2
  70: PUSH
  71: LD_STRING AntoineHealth
  73: PPUSH
  74: LD_INT 1000
  76: PPUSH
  77: CALL_OW 30
  81: ST_TO_ADDR
// SetLives ( Antoine , AntoineHealth ) ;
  82: LD_EXP 1
  86: PPUSH
  87: LD_VAR 0 2
  91: PPUSH
  92: CALL_OW 234
// uc_side = 5 ;
  96: LD_ADDR_OWVAR 20
 100: PUSH
 101: LD_INT 5
 103: ST_TO_ADDR
// Ende = NewCharacter ( Ende ) ;
 104: LD_ADDR_EXP 2
 108: PUSH
 109: LD_STRING Ende
 111: PPUSH
 112: CALL_OW 25
 116: ST_TO_ADDR
// PlaceUnitXY ( Ende , 89 , 53 , false ) ;
 117: LD_EXP 2
 121: PPUSH
 122: LD_INT 89
 124: PPUSH
 125: LD_INT 53
 127: PPUSH
 128: LD_INT 0
 130: PPUSH
 131: CALL_OW 48
// InitHc ;
 135: CALL_OW 19
// PrepareSoldier ( 1 , s ) ;
 139: LD_INT 1
 141: PPUSH
 142: LD_VAR 0 4
 146: PPUSH
 147: CALL_OW 381
// h = CreateHuman ;
 151: LD_ADDR_VAR 0 3
 155: PUSH
 156: CALL_OW 44
 160: ST_TO_ADDR
// PlaceUnitXY ( h , 96 , 52 , false ) ;
 161: LD_VAR 0 3
 165: PPUSH
 166: LD_INT 96
 168: PPUSH
 169: LD_INT 52
 171: PPUSH
 172: LD_INT 0
 174: PPUSH
 175: CALL_OW 48
// ComCrawl ( h ) ;
 179: LD_VAR 0 3
 183: PPUSH
 184: CALL_OW 137
// Others = Others ^ h ;
 188: LD_ADDR_EXP 3
 192: PUSH
 193: LD_EXP 3
 197: PUSH
 198: LD_VAR 0 3
 202: ADD
 203: ST_TO_ADDR
// InitHc ;
 204: CALL_OW 19
// PrepareEngineer ( false , 3 ) ;
 208: LD_INT 0
 210: PPUSH
 211: LD_INT 3
 213: PPUSH
 214: CALL_OW 382
// h = CreateHuman ;
 218: LD_ADDR_VAR 0 3
 222: PUSH
 223: CALL_OW 44
 227: ST_TO_ADDR
// PlaceUnitXYR ( h , 90 , 52 , 3 , false ) ;
 228: LD_VAR 0 3
 232: PPUSH
 233: LD_INT 90
 235: PPUSH
 236: LD_INT 52
 238: PPUSH
 239: LD_INT 3
 241: PPUSH
 242: LD_INT 0
 244: PPUSH
 245: CALL_OW 50
// Others = Others ^ h ;
 249: LD_ADDR_EXP 3
 253: PUSH
 254: LD_EXP 3
 258: PUSH
 259: LD_VAR 0 3
 263: ADD
 264: ST_TO_ADDR
// Bojan = NewCharacter ( Bojan ) ;
 265: LD_ADDR_EXP 4
 269: PUSH
 270: LD_STRING Bojan
 272: PPUSH
 273: CALL_OW 25
 277: ST_TO_ADDR
// end ;
 278: LD_VAR 0 1
 282: RET
// starting begin Randomize ;
 283: CALL_OW 10
// InGameOn ;
 287: CALL_OW 8
// CenterNowOnXY ( 84 , 96 ) ;
 291: LD_INT 84
 293: PPUSH
 294: LD_INT 96
 296: PPUSH
 297: CALL_OW 86
// PrepareOurs ;
 301: CALL 0 0 0
// PlaceUnitXY ( Antoine , 84 , 98 , false ) ;
 305: LD_EXP 1
 309: PPUSH
 310: LD_INT 84
 312: PPUSH
 313: LD_INT 98
 315: PPUSH
 316: LD_INT 0
 318: PPUSH
 319: CALL_OW 48
// AddComMoveXY ( Antoine , 81 , 92 ) ;
 323: LD_EXP 1
 327: PPUSH
 328: LD_INT 81
 330: PPUSH
 331: LD_INT 92
 333: PPUSH
 334: CALL_OW 171
// Wait ( 0 0$2 ) ;
 338: LD_INT 70
 340: PPUSH
 341: CALL_OW 67
// Say ( Antoine , di-a-1 ) ;
 345: LD_EXP 1
 349: PPUSH
 350: LD_STRING di-a-1
 352: PPUSH
 353: CALL_OW 88
// AddComMoveXY ( Antoine , 77 , 83 ) ;
 357: LD_EXP 1
 361: PPUSH
 362: LD_INT 77
 364: PPUSH
 365: LD_INT 83
 367: PPUSH
 368: CALL_OW 171
// Wait ( 0 0$2 ) ;
 372: LD_INT 70
 374: PPUSH
 375: CALL_OW 67
// CenterOnUnits ( Antoine ) ;
 379: LD_EXP 1
 383: PPUSH
 384: CALL_OW 85
// Say ( Antoine , di-a-2 ) ;
 388: LD_EXP 1
 392: PPUSH
 393: LD_STRING di-a-2
 395: PPUSH
 396: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
 400: LD_INT 18
 402: PPUSH
 403: CALL_OW 67
// SayRadio ( Ende , di-e-1 ) ;
 407: LD_EXP 2
 411: PPUSH
 412: LD_STRING di-e-1
 414: PPUSH
 415: CALL_OW 94
// Say ( Antoine , di-a-3 ) ;
 419: LD_EXP 1
 423: PPUSH
 424: LD_STRING di-a-3
 426: PPUSH
 427: CALL_OW 88
// Wait ( 0 0$1 ) ;
 431: LD_INT 35
 433: PPUSH
 434: CALL_OW 67
// SaveForQuickRestart ;
 438: CALL_OW 22
// InGameOff ;
 442: CALL_OW 9
// ChangeMissionObjectives ( OFind ) ;
 446: LD_STRING OFind
 448: PPUSH
 449: CALL_OW 337
// end ; end_of_file
 453: END
// export AmericansFoundEarly , OutpostCaptured ; export FirstVehicleDone ; every 0 0$1 trigger SeeXY ( 2 , 71 , 57 ) and not GetSide ( Ende ) = 2 do
 454: LD_INT 2
 456: PPUSH
 457: LD_INT 71
 459: PPUSH
 460: LD_INT 57
 462: PPUSH
 463: CALL_OW 293
 467: PUSH
 468: LD_EXP 2
 472: PPUSH
 473: CALL_OW 255
 477: PUSH
 478: LD_INT 2
 480: EQUAL
 481: NOT
 482: AND
 483: IFFALSE 517
 485: GO 487
 487: DISABLE
// begin CenterOnXY ( 71 , 57 ) ;
 488: LD_INT 71
 490: PPUSH
 491: LD_INT 57
 493: PPUSH
 494: CALL_OW 84
// Wait ( 0 0$0.5 ) ;
 498: LD_INT 18
 500: PPUSH
 501: CALL_OW 67
// Say ( Antoine , ds-a-1 ) ;
 505: LD_EXP 1
 509: PPUSH
 510: LD_STRING ds-a-1
 512: PPUSH
 513: CALL_OW 88
// end ;
 517: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) and not GetSide ( Ende ) = 2 do
 518: LD_INT 22
 520: PUSH
 521: LD_INT 1
 523: PUSH
 524: EMPTY
 525: LIST
 526: LIST
 527: PUSH
 528: LD_INT 101
 530: PUSH
 531: LD_INT 2
 533: PUSH
 534: EMPTY
 535: LIST
 536: LIST
 537: PUSH
 538: EMPTY
 539: LIST
 540: LIST
 541: PPUSH
 542: CALL_OW 69
 546: PUSH
 547: LD_EXP 2
 551: PPUSH
 552: CALL_OW 255
 556: PUSH
 557: LD_INT 2
 559: EQUAL
 560: NOT
 561: AND
 562: IFFALSE 575
 564: GO 566
 566: DISABLE
// AmericansFoundEarly = true ;
 567: LD_ADDR_EXP 5
 571: PUSH
 572: LD_INT 1
 574: ST_TO_ADDR
 575: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 5 ] , [ f_see , 2 ] ] ) do
 576: LD_INT 22
 578: PUSH
 579: LD_INT 5
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: PUSH
 586: LD_INT 101
 588: PUSH
 589: LD_INT 2
 591: PUSH
 592: EMPTY
 593: LIST
 594: LIST
 595: PUSH
 596: EMPTY
 597: LIST
 598: LIST
 599: PPUSH
 600: CALL_OW 69
 604: IFFALSE 845
 606: GO 608
 608: DISABLE
// begin InGameOn ;
 609: CALL_OW 8
// ComWalk ( Antoine ) ;
 613: LD_EXP 1
 617: PPUSH
 618: CALL_OW 138
// ComMoveUnit ( Antoine , Ende ) ;
 622: LD_EXP 1
 626: PPUSH
 627: LD_EXP 2
 631: PPUSH
 632: CALL_OW 112
// ComTurnUnit ( Ende , Antoine ) ;
 636: LD_EXP 2
 640: PPUSH
 641: LD_EXP 1
 645: PPUSH
 646: CALL_OW 119
// Wait ( 0 0$2 ) ;
 650: LD_INT 70
 652: PPUSH
 653: CALL_OW 67
// DialogueOn ;
 657: CALL_OW 6
// Say ( Ende , dm-e-1 ) ;
 661: LD_EXP 2
 665: PPUSH
 666: LD_STRING dm-e-1
 668: PPUSH
 669: CALL_OW 88
// Say ( Antoine , dm-a-1 ) ;
 673: LD_EXP 1
 677: PPUSH
 678: LD_STRING dm-a-1
 680: PPUSH
 681: CALL_OW 88
// Say ( Ende , dm-e-2 ) ;
 685: LD_EXP 2
 689: PPUSH
 690: LD_STRING dm-e-2
 692: PPUSH
 693: CALL_OW 88
// Say ( Antoine , dm-a-2 ) ;
 697: LD_EXP 1
 701: PPUSH
 702: LD_STRING dm-a-2
 704: PPUSH
 705: CALL_OW 88
// Say ( Ende , dm-e-3 ) ;
 709: LD_EXP 2
 713: PPUSH
 714: LD_STRING dm-e-3
 716: PPUSH
 717: CALL_OW 88
// Say ( Ende , dm-e-4 ) ;
 721: LD_EXP 2
 725: PPUSH
 726: LD_STRING dm-e-4
 728: PPUSH
 729: CALL_OW 88
// if AmericansFoundEarly then
 733: LD_EXP 5
 737: IFFALSE 753
// Say ( Antoine , dm-a-3a ) else
 739: LD_EXP 1
 743: PPUSH
 744: LD_STRING dm-a-3a
 746: PPUSH
 747: CALL_OW 88
 751: GO 789
// begin Say ( Antoine , dm-a-3 ) ;
 753: LD_EXP 1
 757: PPUSH
 758: LD_STRING dm-a-3
 760: PPUSH
 761: CALL_OW 88
// Say ( Ende , dm-e-5 ) ;
 765: LD_EXP 2
 769: PPUSH
 770: LD_STRING dm-e-5
 772: PPUSH
 773: CALL_OW 88
// Say ( Antoine , dm-a-4 ) ;
 777: LD_EXP 1
 781: PPUSH
 782: LD_STRING dm-a-4
 784: PPUSH
 785: CALL_OW 88
// end ; Say ( Ende , dm-e-6 ) ;
 789: LD_EXP 2
 793: PPUSH
 794: LD_STRING dm-e-6
 796: PPUSH
 797: CALL_OW 88
// SetSide ( FilterAllUnits ( [ f_side , 5 ] ) , 2 ) ;
 801: LD_INT 22
 803: PUSH
 804: LD_INT 5
 806: PUSH
 807: EMPTY
 808: LIST
 809: LIST
 810: PPUSH
 811: CALL_OW 69
 815: PPUSH
 816: LD_INT 2
 818: PPUSH
 819: CALL_OW 235
// Wait ( 0 0$1 ) ;
 823: LD_INT 35
 825: PPUSH
 826: CALL_OW 67
// DialogueOff ;
 830: CALL_OW 7
// InGameOff ;
 834: CALL_OW 9
// ChangeMissionObjectives ( OTake ) ;
 838: LD_STRING OTake
 840: PPUSH
 841: CALL_OW 337
// end ;
 845: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) and GetSide ( Ende ) = 2 do var a ;
 846: LD_INT 22
 848: PUSH
 849: LD_INT 1
 851: PUSH
 852: EMPTY
 853: LIST
 854: LIST
 855: PUSH
 856: LD_INT 101
 858: PUSH
 859: LD_INT 2
 861: PUSH
 862: EMPTY
 863: LIST
 864: LIST
 865: PUSH
 866: EMPTY
 867: LIST
 868: LIST
 869: PPUSH
 870: CALL_OW 69
 874: PUSH
 875: LD_EXP 2
 879: PPUSH
 880: CALL_OW 255
 884: PUSH
 885: LD_INT 2
 887: EQUAL
 888: AND
 889: IFFALSE 971
 891: GO 893
 893: DISABLE
 894: LD_INT 0
 896: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 2 ] ] ) ;
 897: LD_ADDR_VAR 0 1
 901: PUSH
 902: LD_INT 22
 904: PUSH
 905: LD_INT 1
 907: PUSH
 908: EMPTY
 909: LIST
 910: LIST
 911: PUSH
 912: LD_INT 101
 914: PUSH
 915: LD_INT 2
 917: PUSH
 918: EMPTY
 919: LIST
 920: LIST
 921: PUSH
 922: EMPTY
 923: LIST
 924: LIST
 925: PPUSH
 926: CALL_OW 69
 930: ST_TO_ADDR
// CenterOnUnits ( a ) ;
 931: LD_VAR 0 1
 935: PPUSH
 936: CALL_OW 85
// Wait ( 0 0$0.5 ) ;
 940: LD_INT 18
 942: PPUSH
 943: CALL_OW 67
// Say ( Ende , df-e-1 ) ;
 947: LD_EXP 2
 951: PPUSH
 952: LD_STRING df-e-1
 954: PPUSH
 955: CALL_OW 88
// Say ( Antoine , df-a-1 ) ;
 959: LD_EXP 1
 963: PPUSH
 964: LD_STRING df-a-1
 966: PPUSH
 967: CALL_OW 88
// end ;
 971: PPOPN 1
 973: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_breastwork ] , [ f_ok ] ] ) < 2 do var n ;
 974: LD_INT 22
 976: PUSH
 977: LD_INT 1
 979: PUSH
 980: EMPTY
 981: LIST
 982: LIST
 983: PUSH
 984: LD_INT 30
 986: PUSH
 987: LD_INT 31
 989: PUSH
 990: EMPTY
 991: LIST
 992: LIST
 993: PUSH
 994: LD_INT 50
 996: PUSH
 997: EMPTY
 998: LIST
 999: PUSH
1000: EMPTY
1001: LIST
1002: LIST
1003: LIST
1004: PPUSH
1005: CALL_OW 69
1009: PUSH
1010: LD_INT 2
1012: LESS
1013: IFFALSE 1117
1015: GO 1017
1017: DISABLE
1018: LD_INT 0
1020: PPUSH
// begin AmericansEscape ;
1021: CALL 2476 0 0
// n = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) , am_d ) ;
1025: LD_ADDR_VAR 0 1
1029: PUSH
1030: LD_INT 22
1032: PUSH
1033: LD_INT 2
1035: PUSH
1036: EMPTY
1037: LIST
1038: LIST
1039: PUSH
1040: LD_INT 21
1042: PUSH
1043: LD_INT 1
1045: PUSH
1046: EMPTY
1047: LIST
1048: LIST
1049: PUSH
1050: EMPTY
1051: LIST
1052: LIST
1053: PPUSH
1054: CALL_OW 69
1058: PPUSH
1059: LD_INT 1
1061: PPUSH
1062: CALL_OW 74
1066: ST_TO_ADDR
// if n = Antoine then
1067: LD_VAR 0 1
1071: PUSH
1072: LD_EXP 1
1076: EQUAL
1077: IFFALSE 1093
// Say ( Antoine , dr-a-1b ) else
1079: LD_EXP 1
1083: PPUSH
1084: LD_STRING dr-a-1b
1086: PPUSH
1087: CALL_OW 88
1091: GO 1117
// begin Say ( n , dr-s-1 ) ;
1093: LD_VAR 0 1
1097: PPUSH
1098: LD_STRING dr-s-1
1100: PPUSH
1101: CALL_OW 88
// Say ( Antoine , dr-a-1a ) ;
1105: LD_EXP 1
1109: PPUSH
1110: LD_STRING dr-a-1a
1112: PPUSH
1113: CALL_OW 88
// end ; end ;
1117: PPOPN 1
1119: END
// every 0 0$1 trigger AmericansEscaped or AmericansKilled do var n ;
1120: LD_EXP 8
1124: PUSH
1125: LD_EXP 9
1129: OR
1130: IFFALSE 1296
1132: GO 1134
1134: DISABLE
1135: LD_INT 0
1137: PPUSH
// begin n = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) diff Antoine , am_d ) ;
1138: LD_ADDR_VAR 0 1
1142: PUSH
1143: LD_INT 22
1145: PUSH
1146: LD_INT 2
1148: PUSH
1149: EMPTY
1150: LIST
1151: LIST
1152: PUSH
1153: LD_INT 21
1155: PUSH
1156: LD_INT 1
1158: PUSH
1159: EMPTY
1160: LIST
1161: LIST
1162: PUSH
1163: EMPTY
1164: LIST
1165: LIST
1166: PPUSH
1167: CALL_OW 69
1171: PUSH
1172: LD_EXP 1
1176: DIFF
1177: PPUSH
1178: LD_INT 1
1180: PPUSH
1181: CALL_OW 74
1185: ST_TO_ADDR
// if AmericansEscaped then
1186: LD_EXP 8
1190: IFFALSE 1230
// begin Say ( Antoine , dra-a-1 ) ;
1192: LD_EXP 1
1196: PPUSH
1197: LD_STRING dra-a-1
1199: PPUSH
1200: CALL_OW 88
// Say ( n , dra-s-1 ) ;
1204: LD_VAR 0 1
1208: PPUSH
1209: LD_STRING dra-s-1
1211: PPUSH
1212: CALL_OW 88
// Say ( Antoine , dra-a-2 ) ;
1216: LD_EXP 1
1220: PPUSH
1221: LD_STRING dra-a-2
1223: PPUSH
1224: CALL_OW 88
// end else
1228: GO 1242
// Say ( Antoine , drb-a-1 ) ;
1230: LD_EXP 1
1234: PPUSH
1235: LD_STRING drb-a-1
1237: PPUSH
1238: CALL_OW 88
// ChangeMissionObjectives ( ODefend ) ;
1242: LD_STRING ODefend
1244: PPUSH
1245: CALL_OW 337
// OutpostCaptured = true ;
1249: LD_ADDR_EXP 6
1253: PUSH
1254: LD_INT 1
1256: ST_TO_ADDR
// SetRestrict ( b_workshop , 2 , true ) ;
1257: LD_INT 2
1259: PPUSH
1260: LD_INT 2
1262: PPUSH
1263: LD_INT 1
1265: PPUSH
1266: CALL_OW 324
// SetRestrict ( b_armoury , 2 , true ) ;
1270: LD_INT 4
1272: PPUSH
1273: LD_INT 2
1275: PPUSH
1276: LD_INT 1
1278: PPUSH
1279: CALL_OW 324
// SetRestrict ( b_breastwork , 2 , true ) ;
1283: LD_INT 31
1285: PPUSH
1286: LD_INT 2
1288: PPUSH
1289: LD_INT 1
1291: PPUSH
1292: CALL_OW 324
// end ;
1296: PPOPN 1
1298: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_btype , b_workshop ] , [ f_ready ] ] ) do var a ;
1299: LD_INT 22
1301: PUSH
1302: LD_INT 2
1304: PUSH
1305: EMPTY
1306: LIST
1307: LIST
1308: PUSH
1309: LD_INT 30
1311: PUSH
1312: LD_INT 2
1314: PUSH
1315: EMPTY
1316: LIST
1317: LIST
1318: PUSH
1319: LD_INT 53
1321: PUSH
1322: EMPTY
1323: LIST
1324: PUSH
1325: EMPTY
1326: LIST
1327: LIST
1328: LIST
1329: PPUSH
1330: CALL_OW 69
1334: IFFALSE 1464
1336: GO 1338
1338: DISABLE
1339: LD_INT 0
1341: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_engineer ] ] ) ;
1342: LD_ADDR_VAR 0 1
1346: PUSH
1347: LD_INT 22
1349: PUSH
1350: LD_INT 2
1352: PUSH
1353: EMPTY
1354: LIST
1355: LIST
1356: PUSH
1357: LD_INT 25
1359: PUSH
1360: LD_INT 2
1362: PUSH
1363: EMPTY
1364: LIST
1365: LIST
1366: PUSH
1367: EMPTY
1368: LIST
1369: LIST
1370: PPUSH
1371: CALL_OW 69
1375: ST_TO_ADDR
// if a [ 1 ] = Antoine or not a then
1376: LD_VAR 0 1
1380: PUSH
1381: LD_INT 1
1383: ARRAY
1384: PUSH
1385: LD_EXP 1
1389: EQUAL
1390: PUSH
1391: LD_VAR 0 1
1395: NOT
1396: OR
1397: IFFALSE 1413
// Say ( Antoine , dt-a-1a ) else
1399: LD_EXP 1
1403: PPUSH
1404: LD_STRING dt-a-1a
1406: PPUSH
1407: CALL_OW 88
1411: GO 1457
// begin Say ( a [ 1 ] , dt-s-1 ) ;
1413: LD_VAR 0 1
1417: PUSH
1418: LD_INT 1
1420: ARRAY
1421: PPUSH
1422: LD_STRING dt-s-1
1424: PPUSH
1425: CALL_OW 88
// Say ( Antoine , dt-a-1 ) ;
1429: LD_EXP 1
1433: PPUSH
1434: LD_STRING dt-a-1
1436: PPUSH
1437: CALL_OW 88
// Say ( a [ 1 ] , dt-s-2 ) ;
1441: LD_VAR 0 1
1445: PUSH
1446: LD_INT 1
1448: ARRAY
1449: PPUSH
1450: LD_STRING dt-s-2
1452: PPUSH
1453: CALL_OW 88
// end ; ChangeMissionObjectives ( OVehs ) ;
1457: LD_STRING OVehs
1459: PPUSH
1460: CALL_OW 337
// end ;
1464: PPOPN 1
1466: END
// on VehicleConstructed ( v , b ) do begin if FirstVehicleDone then
1467: LD_EXP 7
1471: IFFALSE 1477
// exit else
1473: GO 1561
1475: GO 1561
// begin CenterOnUnits ( v ) ;
1477: LD_VAR 0 1
1481: PPUSH
1482: CALL_OW 85
// Wait ( 0 0$1 ) ;
1486: LD_INT 35
1488: PPUSH
1489: CALL_OW 67
// if IsDrivenBy ( v ) = Antoine then
1493: LD_VAR 0 1
1497: PPUSH
1498: CALL_OW 311
1502: PUSH
1503: LD_EXP 1
1507: EQUAL
1508: IFFALSE 1524
// Say ( Antoine , dv-a-1a ) else
1510: LD_EXP 1
1514: PPUSH
1515: LD_STRING dv-a-1a
1517: PPUSH
1518: CALL_OW 88
1522: GO 1553
// begin Say ( Antoine , dv-a-1 ) ;
1524: LD_EXP 1
1528: PPUSH
1529: LD_STRING dv-a-1
1531: PPUSH
1532: CALL_OW 88
// Say ( IsDrivenBy ( v ) , dv-m-1 ) ;
1536: LD_VAR 0 1
1540: PPUSH
1541: CALL_OW 311
1545: PPUSH
1546: LD_STRING dv-m-1
1548: PPUSH
1549: CALL_OW 88
// end ; FirstVehicleDone = true ;
1553: LD_ADDR_EXP 7
1557: PUSH
1558: LD_INT 1
1560: ST_TO_ADDR
// end ; end ;
1561: PPOPN 2
1563: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) = 3 do var i , v , ArVehs ;
1564: LD_INT 22
1566: PUSH
1567: LD_INT 2
1569: PUSH
1570: EMPTY
1571: LIST
1572: LIST
1573: PUSH
1574: LD_INT 21
1576: PUSH
1577: LD_INT 2
1579: PUSH
1580: EMPTY
1581: LIST
1582: LIST
1583: PUSH
1584: EMPTY
1585: LIST
1586: LIST
1587: PPUSH
1588: CALL_OW 69
1592: PUSH
1593: LD_INT 3
1595: EQUAL
1596: IFFALSE 2265
1598: GO 1600
1600: DISABLE
1601: LD_INT 0
1603: PPUSH
1604: PPUSH
1605: PPUSH
// begin if not Losses then
1606: LD_EXP 14
1610: NOT
1611: IFFALSE 1654
// repeat Wait ( 0 0$1 ) until FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) = 4 ;
1613: LD_INT 35
1615: PPUSH
1616: CALL_OW 67
1620: LD_INT 22
1622: PUSH
1623: LD_INT 2
1625: PUSH
1626: EMPTY
1627: LIST
1628: LIST
1629: PUSH
1630: LD_INT 21
1632: PUSH
1633: LD_INT 2
1635: PUSH
1636: EMPTY
1637: LIST
1638: LIST
1639: PUSH
1640: EMPTY
1641: LIST
1642: LIST
1643: PPUSH
1644: CALL_OW 69
1648: PUSH
1649: LD_INT 4
1651: EQUAL
1652: IFFALSE 1613
// InGameOn ;
1654: CALL_OW 8
// CenterOnXY ( 53 , 14 ) ;
1658: LD_INT 53
1660: PPUSH
1661: LD_INT 14
1663: PPUSH
1664: CALL_OW 84
// Wait ( 0 0$2 ) ;
1668: LD_INT 70
1670: PPUSH
1671: CALL_OW 67
// SayRadio ( Bojan , dc-b-1 ) ;
1675: LD_EXP 4
1679: PPUSH
1680: LD_STRING dc-b-1
1682: PPUSH
1683: CALL_OW 94
// if IsOK ( Ende ) then
1687: LD_EXP 2
1691: PPUSH
1692: CALL_OW 302
1696: IFFALSE 1803
// begin Say ( Ende , dc-e-1 ) ;
1698: LD_EXP 2
1702: PPUSH
1703: LD_STRING dc-e-1
1705: PPUSH
1706: CALL_OW 88
// Say ( Antoine , dc-a-1a ) ;
1710: LD_EXP 1
1714: PPUSH
1715: LD_STRING dc-a-1a
1717: PPUSH
1718: CALL_OW 88
// Say ( Ende , dc-e-2 ) ;
1722: LD_EXP 2
1726: PPUSH
1727: LD_STRING dc-e-2
1729: PPUSH
1730: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1734: LD_INT 18
1736: PPUSH
1737: CALL_OW 67
// SayRadio ( Bojan , dc-b-2a ) ;
1741: LD_EXP 4
1745: PPUSH
1746: LD_STRING dc-b-2a
1748: PPUSH
1749: CALL_OW 94
// Say ( Ende , dc-e-3 ) ;
1753: LD_EXP 2
1757: PPUSH
1758: LD_STRING dc-e-3
1760: PPUSH
1761: CALL_OW 88
// Say ( Ende , dc-e-4 ) ;
1765: LD_EXP 2
1769: PPUSH
1770: LD_STRING dc-e-4
1772: PPUSH
1773: CALL_OW 88
// SayRadio ( Bojan , dc-b-3a ) ;
1777: LD_EXP 4
1781: PPUSH
1782: LD_STRING dc-b-3a
1784: PPUSH
1785: CALL_OW 94
// Say ( Antoine , dc-a-2 ) ;
1789: LD_EXP 1
1793: PPUSH
1794: LD_STRING dc-a-2
1796: PPUSH
1797: CALL_OW 88
// end else
1801: GO 1889
// begin Say ( Antoine , dc-a-1b ) ;
1803: LD_EXP 1
1807: PPUSH
1808: LD_STRING dc-a-1b
1810: PPUSH
1811: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1815: LD_INT 18
1817: PPUSH
1818: CALL_OW 67
// SayRadio ( Bojan , dc-b-2b ) ;
1822: LD_EXP 4
1826: PPUSH
1827: LD_STRING dc-b-2b
1829: PPUSH
1830: CALL_OW 94
// SayRadio ( Bojan , dc-b-3b ) ;
1834: LD_EXP 4
1838: PPUSH
1839: LD_STRING dc-b-3b
1841: PPUSH
1842: CALL_OW 94
// Say ( Antoine , dc-a-2b ) ;
1846: LD_EXP 1
1850: PPUSH
1851: LD_STRING dc-a-2b
1853: PPUSH
1854: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1858: LD_INT 18
1860: PPUSH
1861: CALL_OW 67
// SayRadio ( Bojan , dc-b-4b ) ;
1865: LD_EXP 4
1869: PPUSH
1870: LD_STRING dc-b-4b
1872: PPUSH
1873: CALL_OW 94
// Say ( Antoine , dc-a-3b ) ;
1877: LD_EXP 1
1881: PPUSH
1882: LD_STRING dc-a-3b
1884: PPUSH
1885: CALL_OW 88
// end ; if not AmericansEscaped then
1889: LD_EXP 8
1893: NOT
1894: IFFALSE 1908
// AddMedal ( MAmericans , 1 ) else
1896: LD_STRING MAmericans
1898: PPUSH
1899: LD_INT 1
1901: PPUSH
1902: CALL_OW 101
1906: GO 1919
// AddMedal ( MAmericans , - 1 ) ;
1908: LD_STRING MAmericans
1910: PPUSH
1911: LD_INT 1
1913: NEG
1914: PPUSH
1915: CALL_OW 101
// if not Losses then
1919: LD_EXP 14
1923: NOT
1924: IFFALSE 1938
// AddMedal ( MLosses , 1 ) else
1926: LD_STRING MLosses
1928: PPUSH
1929: LD_INT 1
1931: PPUSH
1932: CALL_OW 101
1936: GO 1949
// AddMedal ( MLosses , - 1 ) ;
1938: LD_STRING MLosses
1940: PPUSH
1941: LD_INT 1
1943: NEG
1944: PPUSH
1945: CALL_OW 101
// if Time < [ 45 45$0 , 35 35$0 , 25 25$0 ] [ difficulty ] then
1949: LD_EXP 13
1953: PUSH
1954: LD_INT 94500
1956: PUSH
1957: LD_INT 73500
1959: PUSH
1960: LD_INT 52500
1962: PUSH
1963: EMPTY
1964: LIST
1965: LIST
1966: LIST
1967: PUSH
1968: LD_OWVAR 67
1972: ARRAY
1973: LESS
1974: IFFALSE 1988
// AddMedal ( MTime , 1 ) else
1976: LD_STRING MTime
1978: PPUSH
1979: LD_INT 1
1981: PPUSH
1982: CALL_OW 101
1986: GO 1999
// AddMedal ( MTime , - 1 ) ;
1988: LD_STRING MTime
1990: PPUSH
1991: LD_INT 1
1993: NEG
1994: PPUSH
1995: CALL_OW 101
// GiveMedals ( Main ) ;
1999: LD_STRING Main
2001: PPUSH
2002: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) ) ;
2006: LD_INT 22
2008: PUSH
2009: LD_INT 2
2011: PUSH
2012: EMPTY
2013: LIST
2014: LIST
2015: PUSH
2016: LD_INT 21
2018: PUSH
2019: LD_INT 1
2021: PUSH
2022: EMPTY
2023: LIST
2024: LIST
2025: PUSH
2026: EMPTY
2027: LIST
2028: LIST
2029: PPUSH
2030: CALL_OW 69
2034: PPUSH
2035: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
2039: LD_EXP 1
2043: PPUSH
2044: LD_STRING Antoine
2046: PPUSH
2047: CALL_OW 38
// if Ende then
2051: LD_EXP 2
2055: IFFALSE 2069
// SaveCharacters ( Ende , Ende ) ;
2057: LD_EXP 2
2061: PPUSH
2062: LD_STRING Ende
2064: PPUSH
2065: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) diff [ Antoine , Ende ] , ArOthers ) ;
2069: LD_INT 22
2071: PUSH
2072: LD_INT 2
2074: PUSH
2075: EMPTY
2076: LIST
2077: LIST
2078: PUSH
2079: LD_INT 21
2081: PUSH
2082: LD_INT 1
2084: PUSH
2085: EMPTY
2086: LIST
2087: LIST
2088: PUSH
2089: EMPTY
2090: LIST
2091: LIST
2092: PPUSH
2093: CALL_OW 69
2097: PUSH
2098: LD_EXP 1
2102: PUSH
2103: LD_EXP 2
2107: PUSH
2108: EMPTY
2109: LIST
2110: LIST
2111: DIFF
2112: PPUSH
2113: LD_STRING ArOthers
2115: PPUSH
2116: CALL_OW 38
// v = FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) ;
2120: LD_ADDR_VAR 0 2
2124: PUSH
2125: LD_INT 22
2127: PUSH
2128: LD_INT 2
2130: PUSH
2131: EMPTY
2132: LIST
2133: LIST
2134: PUSH
2135: LD_INT 21
2137: PUSH
2138: LD_INT 2
2140: PUSH
2141: EMPTY
2142: LIST
2143: LIST
2144: PUSH
2145: EMPTY
2146: LIST
2147: LIST
2148: PPUSH
2149: CALL_OW 69
2153: ST_TO_ADDR
// ArVehs = [ ] ;
2154: LD_ADDR_VAR 0 3
2158: PUSH
2159: EMPTY
2160: ST_TO_ADDR
// for i in v do
2161: LD_ADDR_VAR 0 1
2165: PUSH
2166: LD_VAR 0 2
2170: PUSH
2171: FOR_IN
2172: IFFALSE 2247
// ArVehs = ArVehs ^ [ [ GetChassis ( i ) , GetEngine ( i ) , GetControl ( i ) , GetWeapon ( i ) , GetNation ( i ) ] ] ;
2174: LD_ADDR_VAR 0 3
2178: PUSH
2179: LD_VAR 0 3
2183: PUSH
2184: LD_VAR 0 1
2188: PPUSH
2189: CALL_OW 265
2193: PUSH
2194: LD_VAR 0 1
2198: PPUSH
2199: CALL_OW 262
2203: PUSH
2204: LD_VAR 0 1
2208: PPUSH
2209: CALL_OW 263
2213: PUSH
2214: LD_VAR 0 1
2218: PPUSH
2219: CALL_OW 264
2223: PUSH
2224: LD_VAR 0 1
2228: PPUSH
2229: CALL_OW 248
2233: PUSH
2234: EMPTY
2235: LIST
2236: LIST
2237: LIST
2238: LIST
2239: LIST
2240: PUSH
2241: EMPTY
2242: LIST
2243: ADD
2244: ST_TO_ADDR
2245: GO 2171
2247: POP
2248: POP
// SaveVariable ( ArVehs , ArVehs ) ;
2249: LD_VAR 0 3
2253: PPUSH
2254: LD_STRING ArVehs
2256: PPUSH
2257: CALL_OW 39
// YouWin ;
2261: CALL_OW 103
// end ; end_of_file
2265: PPOPN 3
2267: END
// export AmericansEscaped , AmericansKilled ; export Engineer ; every 0 0$1 do var a , i ;
2268: GO 2270
2270: DISABLE
2271: LD_INT 0
2273: PPUSH
2274: PPUSH
// begin uc_side = 1 ;
2275: LD_ADDR_OWVAR 20
2279: PUSH
2280: LD_INT 1
2282: ST_TO_ADDR
// uc_nation = 1 ;
2283: LD_ADDR_OWVAR 21
2287: PUSH
2288: LD_INT 1
2290: ST_TO_ADDR
// InitHc ;
2291: CALL_OW 19
// a = FilterAllUnits ( [ [ f_side , 1 ] , [ f_btype , b_breastwork ] ] ) ;
2295: LD_ADDR_VAR 0 1
2299: PUSH
2300: LD_INT 22
2302: PUSH
2303: LD_INT 1
2305: PUSH
2306: EMPTY
2307: LIST
2308: LIST
2309: PUSH
2310: LD_INT 30
2312: PUSH
2313: LD_INT 31
2315: PUSH
2316: EMPTY
2317: LIST
2318: LIST
2319: PUSH
2320: EMPTY
2321: LIST
2322: LIST
2323: PPUSH
2324: CALL_OW 69
2328: ST_TO_ADDR
// for i in a do
2329: LD_ADDR_VAR 0 2
2333: PUSH
2334: LD_VAR 0 1
2338: PUSH
2339: FOR_IN
2340: IFFALSE 2401
// begin PrepareSoldier ( false , [ Rand ( 1 , 2 ) , Rand ( 2 , 3 ) , 3 ] [ difficulty ] ) ;
2342: LD_INT 0
2344: PPUSH
2345: LD_INT 1
2347: PPUSH
2348: LD_INT 2
2350: PPUSH
2351: CALL_OW 12
2355: PUSH
2356: LD_INT 2
2358: PPUSH
2359: LD_INT 3
2361: PPUSH
2362: CALL_OW 12
2366: PUSH
2367: LD_INT 3
2369: PUSH
2370: EMPTY
2371: LIST
2372: LIST
2373: LIST
2374: PUSH
2375: LD_OWVAR 67
2379: ARRAY
2380: PPUSH
2381: CALL_OW 381
// PlaceHumanInUnit ( CreateHuman , i ) ;
2385: CALL_OW 44
2389: PPUSH
2390: LD_VAR 0 2
2394: PPUSH
2395: CALL_OW 52
// end ;
2399: GO 2339
2401: POP
2402: POP
// PrepareEngineer ( 2 , 2 ) ;
2403: LD_INT 2
2405: PPUSH
2406: LD_INT 2
2408: PPUSH
2409: CALL_OW 382
// Engineer = CreateHuman ;
2413: LD_ADDR_EXP 10
2417: PUSH
2418: CALL_OW 44
2422: ST_TO_ADDR
// PlaceUnitXY ( Engineer , 50 , 8 , false ) ;
2423: LD_EXP 10
2427: PPUSH
2428: LD_INT 50
2430: PPUSH
2431: LD_INT 8
2433: PPUSH
2434: LD_INT 0
2436: PPUSH
2437: CALL_OW 48
// end ;
2441: PPOPN 2
2443: END
// every 0 0$1 marked 40 do
2444: GO 2446
2446: DISABLE
// begin enable ;
2447: ENABLE
// if not IsInArea ( Engineer , AmericanBaseArea ) then
2448: LD_EXP 10
2452: PPUSH
2453: LD_INT 3
2455: PPUSH
2456: CALL_OW 308
2460: NOT
2461: IFFALSE 2475
// ComMoveToArea ( Engineer , AmericanBaseArea ) ;
2463: LD_EXP 10
2467: PPUSH
2468: LD_INT 3
2470: PPUSH
2471: CALL_OW 113
// end ;
2475: END
// export function AmericansEscape ; var i , a ; begin
2476: LD_INT 0
2478: PPUSH
2479: PPUSH
2480: PPUSH
// a = FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] ] ) ;
2481: LD_ADDR_VAR 0 3
2485: PUSH
2486: LD_INT 22
2488: PUSH
2489: LD_INT 1
2491: PUSH
2492: EMPTY
2493: LIST
2494: LIST
2495: PUSH
2496: LD_INT 21
2498: PUSH
2499: LD_INT 1
2501: PUSH
2502: EMPTY
2503: LIST
2504: LIST
2505: PUSH
2506: EMPTY
2507: LIST
2508: LIST
2509: PPUSH
2510: CALL_OW 69
2514: ST_TO_ADDR
// disable ( 40 ) ;
2515: LD_INT 40
2517: DISABLE_MARKED
// for i in a do
2518: LD_ADDR_VAR 0 2
2522: PUSH
2523: LD_VAR 0 3
2527: PUSH
2528: FOR_IN
2529: IFFALSE 2554
// begin ComExitBuilding ( a ) ;
2531: LD_VAR 0 3
2535: PPUSH
2536: CALL_OW 122
// ComMoveToArea ( a , AmericansEscapeArea ) ;
2540: LD_VAR 0 3
2544: PPUSH
2545: LD_INT 1
2547: PPUSH
2548: CALL_OW 113
// end ;
2552: GO 2528
2554: POP
2555: POP
// end ;
2556: LD_VAR 0 1
2560: RET
// every 0 0$1 trigger FilterUnitsInArea ( AmericansEscapeArea , [ [ f_side , 1 ] , [ f_ok ] ] ) or FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) = 0 do var i , a ;
2561: LD_INT 1
2563: PPUSH
2564: LD_INT 22
2566: PUSH
2567: LD_INT 1
2569: PUSH
2570: EMPTY
2571: LIST
2572: LIST
2573: PUSH
2574: LD_INT 50
2576: PUSH
2577: EMPTY
2578: LIST
2579: PUSH
2580: EMPTY
2581: LIST
2582: LIST
2583: PPUSH
2584: CALL_OW 70
2588: PUSH
2589: LD_INT 22
2591: PUSH
2592: LD_INT 1
2594: PUSH
2595: EMPTY
2596: LIST
2597: LIST
2598: PUSH
2599: LD_INT 21
2601: PUSH
2602: LD_INT 1
2604: PUSH
2605: EMPTY
2606: LIST
2607: LIST
2608: PUSH
2609: LD_INT 50
2611: PUSH
2612: EMPTY
2613: LIST
2614: PUSH
2615: EMPTY
2616: LIST
2617: LIST
2618: LIST
2619: PPUSH
2620: CALL_OW 69
2624: PUSH
2625: LD_INT 0
2627: EQUAL
2628: OR
2629: IFFALSE 2791
2631: GO 2633
2633: DISABLE
2634: LD_INT 0
2636: PPUSH
2637: PPUSH
// begin enable ;
2638: ENABLE
// a = FilterUnitsInArea ( AmericansEscapeArea , [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) ;
2639: LD_ADDR_VAR 0 2
2643: PUSH
2644: LD_INT 1
2646: PPUSH
2647: LD_INT 22
2649: PUSH
2650: LD_INT 1
2652: PUSH
2653: EMPTY
2654: LIST
2655: LIST
2656: PUSH
2657: LD_INT 21
2659: PUSH
2660: LD_INT 1
2662: PUSH
2663: EMPTY
2664: LIST
2665: LIST
2666: PUSH
2667: LD_INT 50
2669: PUSH
2670: EMPTY
2671: LIST
2672: PUSH
2673: EMPTY
2674: LIST
2675: LIST
2676: LIST
2677: PPUSH
2678: CALL_OW 70
2682: ST_TO_ADDR
// if a then
2683: LD_VAR 0 2
2687: IFFALSE 2731
// for i in a do
2689: LD_ADDR_VAR 0 1
2693: PUSH
2694: LD_VAR 0 2
2698: PUSH
2699: FOR_IN
2700: IFFALSE 2729
// begin RemoveUnit ( i ) ;
2702: LD_VAR 0 1
2706: PPUSH
2707: CALL_OW 64
// AmericansEscaped = AmericansEscaped ^ i ;
2711: LD_ADDR_EXP 8
2715: PUSH
2716: LD_EXP 8
2720: PUSH
2721: LD_VAR 0 1
2725: ADD
2726: ST_TO_ADDR
// end ;
2727: GO 2699
2729: POP
2730: POP
// if a = 0 and FilterAllUnits ( [ [ f_side , 1 ] , [ f_type , unit_human ] , [ f_ok ] ] ) = 0 then
2731: LD_VAR 0 2
2735: PUSH
2736: LD_INT 0
2738: EQUAL
2739: PUSH
2740: LD_INT 22
2742: PUSH
2743: LD_INT 1
2745: PUSH
2746: EMPTY
2747: LIST
2748: LIST
2749: PUSH
2750: LD_INT 21
2752: PUSH
2753: LD_INT 1
2755: PUSH
2756: EMPTY
2757: LIST
2758: LIST
2759: PUSH
2760: LD_INT 50
2762: PUSH
2763: EMPTY
2764: LIST
2765: PUSH
2766: EMPTY
2767: LIST
2768: LIST
2769: LIST
2770: PPUSH
2771: CALL_OW 69
2775: PUSH
2776: LD_INT 0
2778: EQUAL
2779: AND
2780: IFFALSE 2791
// begin disable ;
2782: DISABLE
// AmericansKilled = true ;
2783: LD_ADDR_EXP 9
2787: PUSH
2788: LD_INT 1
2790: ST_TO_ADDR
// end ; end ;
2791: PPOPN 2
2793: END
// export Targets , AttackStrategy ; every 0 0$1 do
2794: GO 2796
2796: DISABLE
// Targets = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , NorthArea ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
2797: LD_ADDR_EXP 11
2801: PUSH
2802: LD_INT 1
2804: PPUSH
2805: LD_INT 1
2807: PUSH
2808: LD_INT 105
2810: PUSH
2811: EMPTY
2812: LIST
2813: LIST
2814: PUSH
2815: LD_INT 2
2817: PUSH
2818: LD_INT 2
2820: PUSH
2821: EMPTY
2822: LIST
2823: LIST
2824: PUSH
2825: LD_INT 7
2827: PUSH
2828: LD_INT 9
2830: PUSH
2831: EMPTY
2832: LIST
2833: LIST
2834: LIST
2835: LIST
2836: PPUSH
2837: CALL_OW 399
2841: ST_TO_ADDR
2842: END
// export function PrepareAttack ( h , v ) ; var i , tmp ; begin
2843: LD_INT 0
2845: PPUSH
2846: PPUSH
2847: PPUSH
// for i = 1 to h do
2848: LD_ADDR_VAR 0 4
2852: PUSH
2853: DOUBLE
2854: LD_INT 1
2856: DEC
2857: ST_TO_ADDR
2858: LD_VAR 0 1
2862: PUSH
2863: FOR_TO
2864: IFFALSE 2902
// begin PrepareSoldier ( false , Rand ( 2 , 3 ) ) ;
2866: LD_INT 0
2868: PPUSH
2869: LD_INT 2
2871: PPUSH
2872: LD_INT 3
2874: PPUSH
2875: CALL_OW 12
2879: PPUSH
2880: CALL_OW 381
// tmp = tmp ^ CreateHuman ;
2884: LD_ADDR_VAR 0 5
2888: PUSH
2889: LD_VAR 0 5
2893: PUSH
2894: CALL_OW 44
2898: ADD
2899: ST_TO_ADDR
// end ;
2900: GO 2863
2902: POP
2903: POP
// for i = 1 to v do
2904: LD_ADDR_VAR 0 4
2908: PUSH
2909: DOUBLE
2910: LD_INT 1
2912: DEC
2913: ST_TO_ADDR
2914: LD_VAR 0 2
2918: PUSH
2919: FOR_TO
2920: IFFALSE 2972
// begin vc_chassis = us_light_wheeled ;
2922: LD_ADDR_OWVAR 37
2926: PUSH
2927: LD_INT 1
2929: ST_TO_ADDR
// vc_engine = engine_combustion ;
2930: LD_ADDR_OWVAR 39
2934: PUSH
2935: LD_INT 1
2937: ST_TO_ADDR
// vc_control = control_manual ;
2938: LD_ADDR_OWVAR 38
2942: PUSH
2943: LD_INT 1
2945: ST_TO_ADDR
// vc_weapon = us_machine_gun ;
2946: LD_ADDR_OWVAR 40
2950: PUSH
2951: LD_INT 2
2953: ST_TO_ADDR
// tmp = tmp ^ CreateVehicle ;
2954: LD_ADDR_VAR 0 5
2958: PUSH
2959: LD_VAR 0 5
2963: PUSH
2964: CALL_OW 45
2968: ADD
2969: ST_TO_ADDR
// end ;
2970: GO 2919
2972: POP
2973: POP
// for i in tmp do
2974: LD_ADDR_VAR 0 4
2978: PUSH
2979: LD_VAR 0 5
2983: PUSH
2984: FOR_IN
2985: IFFALSE 3103
// begin PlaceUnitArea ( i , AmericanEnter , false ) ;
2987: LD_VAR 0 4
2991: PPUSH
2992: LD_INT 5
2994: PPUSH
2995: LD_INT 0
2997: PPUSH
2998: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
3002: LD_VAR 0 4
3006: PPUSH
3007: CALL_OW 247
3011: PUSH
3012: LD_INT 2
3014: EQUAL
3015: IFFALSE 3049
// begin PrepareMechanic ( false , Rand ( 2 , 3 ) ) ;
3017: LD_INT 0
3019: PPUSH
3020: LD_INT 2
3022: PPUSH
3023: LD_INT 3
3025: PPUSH
3026: CALL_OW 12
3030: PPUSH
3031: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
3035: CALL_OW 44
3039: PPUSH
3040: LD_VAR 0 4
3044: PPUSH
3045: CALL_OW 52
// end ; if ExistMc ( AttackStrategy ) then
3049: LD_EXP 12
3053: PPUSH
3054: CALL_OW 386
3058: IFFALSE 3076
// AddMcUnits ( AttackStrategy , i ) else
3060: LD_EXP 12
3064: PPUSH
3065: LD_VAR 0 4
3069: PPUSH
3070: CALL_OW 390
3074: GO 3101
// AttackStrategy = McAttack ( 1 , Targets , i , [ ] ) ;
3076: LD_ADDR_EXP 12
3080: PUSH
3081: LD_INT 1
3083: PPUSH
3084: LD_EXP 11
3088: PPUSH
3089: LD_VAR 0 4
3093: PPUSH
3094: EMPTY
3095: PPUSH
3096: CALL_OW 402
3100: ST_TO_ADDR
// end ;
3101: GO 2984
3103: POP
3104: POP
// end ;
3105: LD_VAR 0 3
3109: RET
// every 0 0$1 trigger OutpostCaptured do var i ;
3110: LD_EXP 6
3114: IFFALSE 3242
3116: GO 3118
3118: DISABLE
3119: LD_INT 0
3121: PPUSH
// begin Wait ( 2 2$30 ) ;
3122: LD_INT 5250
3124: PPUSH
3125: CALL_OW 67
// if AmericansEscaped then
3129: LD_EXP 8
3133: IFFALSE 3191
// begin PrepareAttack ( 2 , 0 ) ;
3135: LD_INT 2
3137: PPUSH
3138: LD_INT 0
3140: PPUSH
3141: CALL 2843 0 2
// for i in AmericansEscaped do
3145: LD_ADDR_VAR 0 1
3149: PUSH
3150: LD_EXP 8
3154: PUSH
3155: FOR_IN
3156: IFFALSE 3189
// begin PlaceUnitArea ( i , AmericanEnter , false ) ;
3158: LD_VAR 0 1
3162: PPUSH
3163: LD_INT 5
3165: PPUSH
3166: LD_INT 0
3168: PPUSH
3169: CALL_OW 49
// AddMcUnits ( AttackStrategy , i ) ;
3173: LD_EXP 12
3177: PPUSH
3178: LD_VAR 0 1
3182: PPUSH
3183: CALL_OW 390
// end ;
3187: GO 3155
3189: POP
3190: POP
// end ; Wait ( 3 3$0 ) ;
3191: LD_INT 6300
3193: PPUSH
3194: CALL_OW 67
// PrepareAttack ( [ 2 , 3 , 3 ] [ difficulty ] , 1 ) ;
3198: LD_INT 2
3200: PUSH
3201: LD_INT 3
3203: PUSH
3204: LD_INT 3
3206: PUSH
3207: EMPTY
3208: LIST
3209: LIST
3210: LIST
3211: PUSH
3212: LD_OWVAR 67
3216: ARRAY
3217: PPUSH
3218: LD_INT 1
3220: PPUSH
3221: CALL 2843 0 2
// Wait ( 2 2$0 ) ;
3225: LD_INT 4200
3227: PPUSH
3228: CALL_OW 67
// PrepareAttack ( 2 , 0 ) ;
3232: LD_INT 2
3234: PPUSH
3235: LD_INT 0
3237: PPUSH
3238: CALL 2843 0 2
// end ; end_of_file
3242: PPOPN 1
3244: END
// export Time , Losses ; every 1 1$45 do
3245: GO 3247
3247: DISABLE
// begin enable ;
3248: ENABLE
// CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
3249: LD_INT 2
3251: PPUSH
3252: LD_INT 5
3254: PPUSH
3255: CALL_OW 12
3259: PPUSH
3260: LD_INT 1
3262: PPUSH
3263: CALL_OW 57
// end ;
3267: END
// every 4 4$20 do
3268: GO 3270
3270: DISABLE
// begin enable ;
3271: ENABLE
// CreateCratesArea ( Rand ( 2 , 5 ) , CratesArea , true ) ;
3272: LD_INT 2
3274: PPUSH
3275: LD_INT 5
3277: PPUSH
3278: CALL_OW 12
3282: PPUSH
3283: LD_INT 6
3285: PPUSH
3286: LD_INT 1
3288: PPUSH
3289: CALL_OW 55
// end ;
3293: END
// every 0 0$1 do
3294: GO 3296
3296: DISABLE
// begin enable ;
3297: ENABLE
// Time = Time + 0 0$1 ;
3298: LD_ADDR_EXP 13
3302: PUSH
3303: LD_EXP 13
3307: PUSH
3308: LD_INT 35
3310: PLUS
3311: ST_TO_ADDR
// end ;
3312: END
// on UnitDestroyed ( u ) do begin if u = Antoine then
3313: LD_VAR 0 1
3317: PUSH
3318: LD_EXP 1
3322: EQUAL
3323: IFFALSE 3332
// YouLost ( AntoineDead ) ;
3325: LD_STRING AntoineDead
3327: PPUSH
3328: CALL_OW 104
// if GetSide ( u ) = 2 and GetType ( u ) = unit_human then
3332: LD_VAR 0 1
3336: PPUSH
3337: CALL_OW 255
3341: PUSH
3342: LD_INT 2
3344: EQUAL
3345: PUSH
3346: LD_VAR 0 1
3350: PPUSH
3351: CALL_OW 247
3355: PUSH
3356: LD_INT 1
3358: EQUAL
3359: AND
3360: IFFALSE 3386
// if not Losses then
3362: LD_EXP 14
3366: NOT
3367: IFFALSE 3379
// Losses = true else
3369: LD_ADDR_EXP 14
3373: PUSH
3374: LD_INT 1
3376: ST_TO_ADDR
3377: GO 3386
// YouLost ( TooManyDead ) ;
3379: LD_STRING TooManyDead
3381: PPUSH
3382: CALL_OW 104
// if GetClass ( u ) = class_engineer and GetSide ( u ) = 2 and not OutpostCaptured then
3386: LD_VAR 0 1
3390: PPUSH
3391: CALL_OW 257
3395: PUSH
3396: LD_INT 2
3398: EQUAL
3399: PUSH
3400: LD_VAR 0 1
3404: PPUSH
3405: CALL_OW 255
3409: PUSH
3410: LD_INT 2
3412: EQUAL
3413: AND
3414: PUSH
3415: LD_EXP 6
3419: NOT
3420: AND
3421: IFFALSE 3430
// YouLost ( NoEngineer ) ;
3423: LD_STRING NoEngineer
3425: PPUSH
3426: CALL_OW 104
// end ; end_of_file
3430: PPOPN 1
3432: END
// export PatrolDriver , PatrolVehicle ; export APatrol ; every 0 0$1 do
3433: GO 3435
3435: DISABLE
// begin uc_side = 1 ;
3436: LD_ADDR_OWVAR 20
3440: PUSH
3441: LD_INT 1
3443: ST_TO_ADDR
// uc_nation = 1 ;
3444: LD_ADDR_OWVAR 21
3448: PUSH
3449: LD_INT 1
3451: ST_TO_ADDR
// InitHc ;
3452: CALL_OW 19
// PrepareMechanic ( false , 3 ) ;
3456: LD_INT 0
3458: PPUSH
3459: LD_INT 3
3461: PPUSH
3462: CALL_OW 383
// PatrolDriver = CreateHuman ;
3466: LD_ADDR_EXP 15
3470: PUSH
3471: CALL_OW 44
3475: ST_TO_ADDR
// end ;
3476: END
// every 2 2$30 trigger OutpostCaptured marked 10 do
3477: LD_EXP 6
3481: IFFALSE 3592
3483: GO 3485
3485: DISABLE
// begin enable ;
3486: ENABLE
// uc_side = 1 ;
3487: LD_ADDR_OWVAR 20
3491: PUSH
3492: LD_INT 1
3494: ST_TO_ADDR
// uc_nation = 1 ;
3495: LD_ADDR_OWVAR 21
3499: PUSH
3500: LD_INT 1
3502: ST_TO_ADDR
// vc_chassis = us_light_wheeled ;
3503: LD_ADDR_OWVAR 37
3507: PUSH
3508: LD_INT 1
3510: ST_TO_ADDR
// vc_control = control_manual ;
3511: LD_ADDR_OWVAR 38
3515: PUSH
3516: LD_INT 1
3518: ST_TO_ADDR
// vc_engine = engine_combustion ;
3519: LD_ADDR_OWVAR 39
3523: PUSH
3524: LD_INT 1
3526: ST_TO_ADDR
// vc_weapon = us_machine_gun ;
3527: LD_ADDR_OWVAR 40
3531: PUSH
3532: LD_INT 2
3534: ST_TO_ADDR
// if IsPlaced ( PatrolVehicle ) then
3535: LD_EXP 16
3539: PPUSH
3540: CALL_OW 305
3544: IFFALSE 3550
// exit else
3546: GO 3592
3548: GO 3592
// begin PatrolVehicle = CreateVehicle ;
3550: LD_ADDR_EXP 16
3554: PUSH
3555: CALL_OW 45
3559: ST_TO_ADDR
// PlaceUnitXY ( PatrolVehicle , 164 , 96 , false ) ;
3560: LD_EXP 16
3564: PPUSH
3565: LD_INT 164
3567: PPUSH
3568: LD_INT 96
3570: PPUSH
3571: LD_INT 0
3573: PPUSH
3574: CALL_OW 48
// PlaceHumanInUnit ( PatrolDriver , PatrolVehicle ) ;
3578: LD_EXP 15
3582: PPUSH
3583: LD_EXP 16
3587: PPUSH
3588: CALL_OW 52
// end ; end ;
3592: END
// every 0 0$1 trigger IsOK ( PatrolVehicle ) do var i ;
3593: LD_EXP 16
3597: PPUSH
3598: CALL_OW 302
3602: IFFALSE 3731
3604: GO 3606
3606: DISABLE
3607: LD_INT 0
3609: PPUSH
// begin enable ;
3610: ENABLE
// if GetFuel ( PatrolVehicle ) > 40 then
3611: LD_EXP 16
3615: PPUSH
3616: CALL_OW 261
3620: PUSH
3621: LD_INT 40
3623: GREATER
3624: IFFALSE 3719
// begin if not HasTask ( PatrolVehicle ) then
3626: LD_EXP 16
3630: PPUSH
3631: CALL_OW 314
3635: NOT
3636: IFFALSE 3717
// begin i = [ [ 62 , 59 ] , [ 84 , 31 ] , [ 147 , 78 ] ] [ Rand ( 1 , 3 ) ] ;
3638: LD_ADDR_VAR 0 1
3642: PUSH
3643: LD_INT 62
3645: PUSH
3646: LD_INT 59
3648: PUSH
3649: EMPTY
3650: LIST
3651: LIST
3652: PUSH
3653: LD_INT 84
3655: PUSH
3656: LD_INT 31
3658: PUSH
3659: EMPTY
3660: LIST
3661: LIST
3662: PUSH
3663: LD_INT 147
3665: PUSH
3666: LD_INT 78
3668: PUSH
3669: EMPTY
3670: LIST
3671: LIST
3672: PUSH
3673: EMPTY
3674: LIST
3675: LIST
3676: LIST
3677: PUSH
3678: LD_INT 1
3680: PPUSH
3681: LD_INT 3
3683: PPUSH
3684: CALL_OW 12
3688: ARRAY
3689: ST_TO_ADDR
// ComAgressiveMove ( PatrolVehicle , i [ 1 ] , i [ 2 ] ) ;
3690: LD_EXP 16
3694: PPUSH
3695: LD_VAR 0 1
3699: PUSH
3700: LD_INT 1
3702: ARRAY
3703: PPUSH
3704: LD_VAR 0 1
3708: PUSH
3709: LD_INT 2
3711: ARRAY
3712: PPUSH
3713: CALL_OW 114
// end ; end else
3717: GO 3731
// ComMoveToArea ( PatrolVehicle , PatrolExit ) ;
3719: LD_EXP 16
3723: PPUSH
3724: LD_INT 4
3726: PPUSH
3727: CALL_OW 113
// end ;
3731: PPOPN 1
3733: END
// every 0 0$1 trigger IsDying ( PatrolVehicle ) do
3734: LD_EXP 16
3738: PPUSH
3739: CALL_OW 303
3743: IFFALSE 3751
3745: GO 3747
3747: DISABLE
// disable ( 10 ) ;
3748: LD_INT 10
3750: DISABLE_MARKED
3751: END
// every 0 0$1 trigger IsInArea ( PatrolVehicle , PatrolExit ) do
3752: LD_EXP 16
3756: PPUSH
3757: LD_INT 4
3759: PPUSH
3760: CALL_OW 308
3764: IFFALSE 3797
3766: GO 3768
3768: DISABLE
// begin enable ;
3769: ENABLE
// KillMc ( APatrol ) ;
3770: LD_EXP 17
3774: PPUSH
3775: CALL_OW 387
// RemoveUnit ( PatrolDriver ) ;
3779: LD_EXP 15
3783: PPUSH
3784: CALL_OW 64
// RemoveUnit ( PatrolVehicle ) ;
3788: LD_EXP 16
3792: PPUSH
3793: CALL_OW 64
// end ;
3797: END
