// export LEgionEscape , ArabEscape ; starting begin ingameon ;
   0: CALL_OW 8
// LEgionEscape = 0 ;
   4: LD_ADDR_EXP 1
   8: PUSH
   9: LD_INT 0
  11: ST_TO_ADDR
// ArabEscape = 0 ;
  12: LD_ADDR_EXP 2
  16: PUSH
  17: LD_INT 0
  19: ST_TO_ADDR
// ConvoysKilled = 0 ;
  20: LD_ADDR_EXP 14
  24: PUSH
  25: LD_INT 0
  27: ST_TO_ADDR
// CenterOnUnits ( Madison ) ;
  28: LD_INT 403
  30: PPUSH
  31: CALL_OW 85
// Say ( Greene , Intro1 ) ;
  35: LD_INT 402
  37: PPUSH
  38: LD_STRING Intro1
  40: PPUSH
  41: CALL_OW 88
// CenterOnUnits ( Madison ) ;
  45: LD_INT 403
  47: PPUSH
  48: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 143 , 126 ) ;
  52: LD_INT 403
  54: PUSH
  55: LD_INT 402
  57: PUSH
  58: EMPTY
  59: LIST
  60: LIST
  61: PPUSH
  62: LD_INT 143
  64: PPUSH
  65: LD_INT 126
  67: PPUSH
  68: CALL_OW 171
// Say ( Madison , Intro2 ) ;
  72: LD_INT 403
  74: PPUSH
  75: LD_STRING Intro2
  77: PPUSH
  78: CALL_OW 88
// CenterOnUnits ( Madison ) ;
  82: LD_INT 403
  84: PPUSH
  85: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 164 , 136 ) ;
  89: LD_INT 403
  91: PUSH
  92: LD_INT 402
  94: PUSH
  95: EMPTY
  96: LIST
  97: LIST
  98: PPUSH
  99: LD_INT 164
 101: PPUSH
 102: LD_INT 136
 104: PPUSH
 105: CALL_OW 171
// Say ( Greene , Intro3 ) ;
 109: LD_INT 402
 111: PPUSH
 112: LD_STRING Intro3
 114: PPUSH
 115: CALL_OW 88
// CenterOnUnits ( Madison ) ;
 119: LD_INT 403
 121: PPUSH
 122: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 171 , 136 ) ;
 126: LD_INT 403
 128: PUSH
 129: LD_INT 402
 131: PUSH
 132: EMPTY
 133: LIST
 134: LIST
 135: PPUSH
 136: LD_INT 171
 138: PPUSH
 139: LD_INT 136
 141: PPUSH
 142: CALL_OW 171
// Say ( Madison , Intro4 ) ;
 146: LD_INT 403
 148: PPUSH
 149: LD_STRING Intro4
 151: PPUSH
 152: CALL_OW 88
// CenterOnUnits ( Madison ) ;
 156: LD_INT 403
 158: PPUSH
 159: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 187 , 136 ) ;
 163: LD_INT 403
 165: PUSH
 166: LD_INT 402
 168: PUSH
 169: EMPTY
 170: LIST
 171: LIST
 172: PPUSH
 173: LD_INT 187
 175: PPUSH
 176: LD_INT 136
 178: PPUSH
 179: CALL_OW 171
// Say ( Greene , Intro5 ) ;
 183: LD_INT 402
 185: PPUSH
 186: LD_STRING Intro5
 188: PPUSH
 189: CALL_OW 88
// CenterOnUnits ( Madison ) ;
 193: LD_INT 403
 195: PPUSH
 196: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 202 , 129 ) ;
 200: LD_INT 403
 202: PUSH
 203: LD_INT 402
 205: PUSH
 206: EMPTY
 207: LIST
 208: LIST
 209: PPUSH
 210: LD_INT 202
 212: PPUSH
 213: LD_INT 129
 215: PPUSH
 216: CALL_OW 171
// LegionSetup ;
 220: CALL 811 0 0
// ingameoff ( ) ;
 224: CALL_OW 9
// ArabSetup ;
 228: CALL 2543 0 0
// end ;
 232: END
// var overdose ; every 0 0$1 trigger See ( 1 , Mietek ) do
 233: LD_INT 1
 235: PPUSH
 236: LD_INT 265
 238: PPUSH
 239: CALL_OW 292
 243: IFFALSE 810
 245: GO 247
 247: DISABLE
// begin ingameon ;
 248: CALL_OW 8
// overdose = 0 ;
 252: LD_ADDR_LOC 1
 256: PUSH
 257: LD_INT 0
 259: ST_TO_ADDR
// CenterOnUnits ( Madison ) ;
 260: LD_INT 403
 262: PPUSH
 263: CALL_OW 85
// if GetLives ( Mietek ) < 251 then
 267: LD_INT 265
 269: PPUSH
 270: CALL_OW 256
 274: PUSH
 275: LD_INT 251
 277: LESS
 278: IFFALSE 298
// begin say ( Zbych , NieUmieraj ) ;
 280: LD_INT 271
 282: PPUSH
 283: LD_STRING NieUmieraj
 285: PPUSH
 286: CALL_OW 88
// overdose = 1 ;
 290: LD_ADDR_LOC 1
 294: PUSH
 295: LD_INT 1
 297: ST_TO_ADDR
// end ; Say ( Madison , Baza1 ) ;
 298: LD_INT 403
 300: PPUSH
 301: LD_STRING Baza1
 303: PPUSH
 304: CALL_OW 88
// Say ( Ziutek , Baza2 ) ;
 308: LD_INT 270
 310: PPUSH
 311: LD_STRING Baza2
 313: PPUSH
 314: CALL_OW 88
// Say ( Greene , Baza3 ) ;
 318: LD_INT 402
 320: PPUSH
 321: LD_STRING Baza3
 323: PPUSH
 324: CALL_OW 88
// Say ( Ziutek , Baza4 ) ;
 328: LD_INT 270
 330: PPUSH
 331: LD_STRING Baza4
 333: PPUSH
 334: CALL_OW 88
// Say ( Madison , Baza5 ) ;
 338: LD_INT 403
 340: PPUSH
 341: LD_STRING Baza5
 343: PPUSH
 344: CALL_OW 88
// CenterOnXY ( 137 , 27 ) ;
 348: LD_INT 137
 350: PPUSH
 351: LD_INT 27
 353: PPUSH
 354: CALL_OW 84
// RevealFogArea ( 4 , OldLEgionBase ) ;
 358: LD_INT 4
 360: PPUSH
 361: LD_INT 10
 363: PPUSH
 364: CALL_OW 332
// Say ( Ziutek , Baza6 ) ;
 368: LD_INT 270
 370: PPUSH
 371: LD_STRING Baza6
 373: PPUSH
 374: CALL_OW 88
// CenterOnUnits ( Reaper ) ;
 378: LD_INT 340
 380: PPUSH
 381: CALL_OW 85
// RevealFogArea ( 4 , LegionBase ) ;
 385: LD_INT 4
 387: PPUSH
 388: LD_INT 11
 390: PPUSH
 391: CALL_OW 332
// Say ( Ziutek , Baza7 ) ;
 395: LD_INT 270
 397: PPUSH
 398: LD_STRING Baza7
 400: PPUSH
 401: CALL_OW 88
// Say ( Zbych , Baza8 ) ;
 405: LD_INT 271
 407: PPUSH
 408: LD_STRING Baza8
 410: PPUSH
 411: CALL_OW 88
// CenterOnUnits ( Ziutek ) ;
 415: LD_INT 270
 417: PPUSH
 418: CALL_OW 85
// if Overdose then
 422: LD_LOC 1
 426: IFFALSE 448
// begin Say ( Madison , Baza9 ) ;
 428: LD_INT 403
 430: PPUSH
 431: LD_STRING Baza9
 433: PPUSH
 434: CALL_OW 88
// say ( Zbych , Baza10 ) ;
 438: LD_INT 271
 440: PPUSH
 441: LD_STRING Baza10
 443: PPUSH
 444: CALL_OW 88
// end ; say ( Greene , Baza11 ) ;
 448: LD_INT 402
 450: PPUSH
 451: LD_STRING Baza11
 453: PPUSH
 454: CALL_OW 88
// Say ( Zbych , Baza12 ) ;
 458: LD_INT 271
 460: PPUSH
 461: LD_STRING Baza12
 463: PPUSH
 464: CALL_OW 88
// say ( Greene , Baza13 ) ;
 468: LD_INT 402
 470: PPUSH
 471: LD_STRING Baza13
 473: PPUSH
 474: CALL_OW 88
// ComMoveXY ( [ Greene , Madison ] , 194 , 139 ) ;
 478: LD_INT 402
 480: PUSH
 481: LD_INT 403
 483: PUSH
 484: EMPTY
 485: LIST
 486: LIST
 487: PPUSH
 488: LD_INT 194
 490: PPUSH
 491: LD_INT 139
 493: PPUSH
 494: CALL_OW 111
// wait ( 0 0$6 ) ;
 498: LD_INT 210
 500: PPUSH
 501: CALL_OW 67
// CenterOnUnits ( Greene ) ;
 505: LD_INT 402
 507: PPUSH
 508: CALL_OW 85
// Say ( Madison , Dezer1 ) ;
 512: LD_INT 403
 514: PPUSH
 515: LD_STRING Dezer1
 517: PPUSH
 518: CALL_OW 88
// Say ( Greene , Dezer2 ) ;
 522: LD_INT 402
 524: PPUSH
 525: LD_STRING Dezer2
 527: PPUSH
 528: CALL_OW 88
// Say ( Greene , Dezer3 ) ;
 532: LD_INT 402
 534: PPUSH
 535: LD_STRING Dezer3
 537: PPUSH
 538: CALL_OW 88
// Say ( Madison , Dezer4 ) ;
 542: LD_INT 403
 544: PPUSH
 545: LD_STRING Dezer4
 547: PPUSH
 548: CALL_OW 88
// Say ( Greene , Dezer5 ) ;
 552: LD_INT 402
 554: PPUSH
 555: LD_STRING Dezer5
 557: PPUSH
 558: CALL_OW 88
// Say ( Madison , Dezer6 ) ;
 562: LD_INT 403
 564: PPUSH
 565: LD_STRING Dezer6
 567: PPUSH
 568: CALL_OW 88
// Say ( Greene , Dezer7 ) ;
 572: LD_INT 402
 574: PPUSH
 575: LD_STRING Dezer7
 577: PPUSH
 578: CALL_OW 88
// CenterOnXY ( 159 , 1 ) ;
 582: LD_INT 159
 584: PPUSH
 585: LD_INT 1
 587: PPUSH
 588: CALL_OW 84
// RevealFogArea ( 4 , WinPreview ) ;
 592: LD_INT 4
 594: PPUSH
 595: LD_INT 12
 597: PPUSH
 598: CALL_OW 332
// Say ( Greene , Dezer8 ) ;
 602: LD_INT 402
 604: PPUSH
 605: LD_STRING Dezer8
 607: PPUSH
 608: CALL_OW 88
// SetAreaMapShow ( WinZone , 1 ) ;
 612: LD_INT 7
 614: PPUSH
 615: LD_INT 1
 617: PPUSH
 618: CALL_OW 424
// wait ( 0 0$03 ) ;
 622: LD_INT 105
 624: PPUSH
 625: CALL_OW 67
// ChangeMissionObjectives ( Ucieknij ) ;
 629: LD_STRING Ucieknij
 631: PPUSH
 632: CALL_OW 337
// CenterOnUnits ( Greene ) ;
 636: LD_INT 402
 638: PPUSH
 639: CALL_OW 85
// AddComMoveXY ( [ Madison , Greene ] , 202 , 129 ) ;
 643: LD_INT 403
 645: PUSH
 646: LD_INT 402
 648: PUSH
 649: EMPTY
 650: LIST
 651: LIST
 652: PPUSH
 653: LD_INT 202
 655: PPUSH
 656: LD_INT 129
 658: PPUSH
 659: CALL_OW 171
// wait ( 0 0$6 ) ;
 663: LD_INT 210
 665: PPUSH
 666: CALL_OW 67
// CenterOnUnits ( Greene ) ;
 670: LD_INT 402
 672: PPUSH
 673: CALL_OW 85
// Say ( MAdison , Help1 ) ;
 677: LD_INT 403
 679: PPUSH
 680: LD_STRING Help1
 682: PPUSH
 683: CALL_OW 88
// Say ( Ziutek , Help2 ) ;
 687: LD_INT 270
 689: PPUSH
 690: LD_STRING Help2
 692: PPUSH
 693: CALL_OW 88
// Say ( Ziutek , Help3 ) ;
 697: LD_INT 270
 699: PPUSH
 700: LD_STRING Help3
 702: PPUSH
 703: CALL_OW 88
// Say ( Zbych , Help4 ) ;
 707: LD_INT 271
 709: PPUSH
 710: LD_STRING Help4
 712: PPUSH
 713: CALL_OW 88
// Say ( Mietek , Help5 ) ;
 717: LD_INT 265
 719: PPUSH
 720: LD_STRING Help5
 722: PPUSH
 723: CALL_OW 88
// Say ( Madison , Help8 ) ;
 727: LD_INT 403
 729: PPUSH
 730: LD_STRING Help8
 732: PPUSH
 733: CALL_OW 88
// Say ( Ziutek , Help6 ) ;
 737: LD_INT 270
 739: PPUSH
 740: LD_STRING Help6
 742: PPUSH
 743: CALL_OW 88
// Say ( MAdison , Help7 ) ;
 747: LD_INT 403
 749: PPUSH
 750: LD_STRING Help7
 752: PPUSH
 753: CALL_OW 88
// Say ( Greene , Help9 ) ;
 757: LD_INT 402
 759: PPUSH
 760: LD_STRING Help9
 762: PPUSH
 763: CALL_OW 88
// Say ( Zbych , Help10 ) ;
 767: LD_INT 271
 769: PPUSH
 770: LD_STRING Help10
 772: PPUSH
 773: CALL_OW 88
// SetSide ( FilterAllUnits ( [ [ f_nation , 1 ] ] ) , 4 ) ;
 777: LD_INT 23
 779: PUSH
 780: LD_INT 1
 782: PUSH
 783: EMPTY
 784: LIST
 785: LIST
 786: PUSH
 787: EMPTY
 788: LIST
 789: PPUSH
 790: CALL_OW 69
 794: PPUSH
 795: LD_INT 4
 797: PPUSH
 798: CALL_OW 235
// ingameoff ;
 802: CALL_OW 9
// SaveForQuickRestart ;
 806: CALL_OW 22
// end ;
 810: END
// function LegionSetup ( ) ; begin
 811: LD_INT 0
 813: PPUSH
// AddComHiddenCamera ( Reaper , 176 , 72 ) ;
 814: LD_INT 340
 816: PPUSH
 817: LD_INT 176
 819: PPUSH
 820: LD_INT 72
 822: PPUSH
 823: CALL_OW 217
// AddComHiddenCamera ( Reaper , 171 , 76 ) ;
 827: LD_INT 340
 829: PPUSH
 830: LD_INT 171
 832: PPUSH
 833: LD_INT 76
 835: PPUSH
 836: CALL_OW 217
// AddComHiddenCamera ( Reaper , 163 , 61 ) ;
 840: LD_INT 340
 842: PPUSH
 843: LD_INT 163
 845: PPUSH
 846: LD_INT 61
 848: PPUSH
 849: CALL_OW 217
// AddComHiddenCamera ( Reaper , 166 , 54 ) ;
 853: LD_INT 340
 855: PPUSH
 856: LD_INT 166
 858: PPUSH
 859: LD_INT 54
 861: PPUSH
 862: CALL_OW 217
// AddComMoveToArea ( Reaper , LEgionCrate ) ;
 866: LD_INT 340
 868: PPUSH
 869: LD_INT 1
 871: PPUSH
 872: CALL_OW 173
// AddComEnterUnit ( LegSol1 , LeGT1 ) ;
 876: LD_INT 342
 878: PPUSH
 879: LD_INT 49
 881: PPUSH
 882: CALL_OW 180
// AddComEnterUnit ( LegSol2 , LeGT2 ) ;
 886: LD_INT 344
 888: PPUSH
 889: LD_INT 56
 891: PPUSH
 892: CALL_OW 180
// AddComEnterUnit ( LegSol3 , LegT3 ) ;
 896: LD_INT 346
 898: PPUSH
 899: LD_INT 57
 901: PPUSH
 902: CALL_OW 180
// AddComEnterUnit ( [ LegSol4 , LegMort ] , LegArm ) ;
 906: LD_INT 348
 908: PUSH
 909: LD_INT 349
 911: PUSH
 912: EMPTY
 913: LIST
 914: LIST
 915: PPUSH
 916: LD_INT 74
 918: PPUSH
 919: CALL_OW 180
// AddComEnterUnit ( LegMEch , LegFactory ) ;
 923: LD_INT 357
 925: PPUSH
 926: LD_INT 36
 928: PPUSH
 929: CALL_OW 180
// AddComEnterUnit ( LegControl , LegTower ) ;
 933: LD_INT 401
 935: PPUSH
 936: LD_INT 85
 938: PPUSH
 939: CALL_OW 180
// end ; end_of_file
 943: LD_VAR 0 1
 947: RET
// every 0 0$1.5 trigger See ( 4 , Reaper ) do
 948: LD_INT 4
 950: PPUSH
 951: LD_INT 340
 953: PPUSH
 954: CALL_OW 292
 958: IFFALSE 1105
 960: GO 962
 962: DISABLE
// begin dialogueon ;
 963: CALL_OW 6
// CenterOnUnits ( Reaper ) ;
 967: LD_INT 340
 969: PPUSH
 970: CALL_OW 85
// Say ( Madison , Trade1 ) ;
 974: LD_INT 403
 976: PPUSH
 977: LD_STRING Trade1
 979: PPUSH
 980: CALL_OW 88
// Say ( Reaper , trade2 ) ;
 984: LD_INT 340
 986: PPUSH
 987: LD_STRING trade2
 989: PPUSH
 990: CALL_OW 88
// Say ( Madison , Trade3 ) ;
 994: LD_INT 403
 996: PPUSH
 997: LD_STRING Trade3
 999: PPUSH
1000: CALL_OW 88
// Say ( Reaper , trade4 ) ;
1004: LD_INT 340
1006: PPUSH
1007: LD_STRING trade4
1009: PPUSH
1010: CALL_OW 88
// Say ( Madison , Trade5 ) ;
1014: LD_INT 403
1016: PPUSH
1017: LD_STRING Trade5
1019: PPUSH
1020: CALL_OW 88
// Say ( Reaper , trade6 ) ;
1024: LD_INT 340
1026: PPUSH
1027: LD_STRING trade6
1029: PPUSH
1030: CALL_OW 88
// Say ( Madison , Trade7 ) ;
1034: LD_INT 403
1036: PPUSH
1037: LD_STRING Trade7
1039: PPUSH
1040: CALL_OW 88
// Say ( Reaper , trade8 ) ;
1044: LD_INT 340
1046: PPUSH
1047: LD_STRING trade8
1049: PPUSH
1050: CALL_OW 88
// Say ( Reaper , Trade9 ) ;
1054: LD_INT 340
1056: PPUSH
1057: LD_STRING Trade9
1059: PPUSH
1060: CALL_OW 88
// Say ( Reaper , trade10 ) ;
1064: LD_INT 340
1066: PPUSH
1067: LD_STRING trade10
1069: PPUSH
1070: CALL_OW 88
// Say ( Madison , Trade11 ) ;
1074: LD_INT 403
1076: PPUSH
1077: LD_STRING Trade11
1079: PPUSH
1080: CALL_OW 88
// ChangeMissionObjectives ( DajLaser ) ;
1084: LD_STRING DajLaser
1086: PPUSH
1087: CALL_OW 337
// Say ( Greene , trade12 ) ;
1091: LD_INT 402
1093: PPUSH
1094: LD_STRING trade12
1096: PPUSH
1097: CALL_OW 88
// dialogueoff ;
1101: CALL_OW 7
// end ;
1105: END
// function CheckLaser ( ) ; var List , UnitInList ; begin
1106: LD_INT 0
1108: PPUSH
1109: PPUSH
1110: PPUSH
// result = false ;
1111: LD_ADDR_VAR 0 1
1115: PUSH
1116: LD_INT 0
1118: ST_TO_ADDR
// List = FilterUnitsInArea ( LegionCrate , [ [ f_control , 1 ] , [ f_weapon , us_laser ] , [ f_chassis , us_heavy_tracked ] ] ) ;
1119: LD_ADDR_VAR 0 2
1123: PUSH
1124: LD_INT 1
1126: PPUSH
1127: LD_INT 33
1129: PUSH
1130: LD_INT 1
1132: PUSH
1133: EMPTY
1134: LIST
1135: LIST
1136: PUSH
1137: LD_INT 34
1139: PUSH
1140: LD_INT 9
1142: PUSH
1143: EMPTY
1144: LIST
1145: LIST
1146: PUSH
1147: LD_INT 31
1149: PUSH
1150: LD_INT 4
1152: PUSH
1153: EMPTY
1154: LIST
1155: LIST
1156: PUSH
1157: EMPTY
1158: LIST
1159: LIST
1160: LIST
1161: PPUSH
1162: CALL_OW 70
1166: ST_TO_ADDR
// for UnitInList in List do
1167: LD_ADDR_VAR 0 3
1171: PUSH
1172: LD_VAR 0 2
1176: PUSH
1177: FOR_IN
1178: IFFALSE 1265
// begin AddComEnterUnit ( Reaper , UnitInList ) ;
1180: LD_INT 340
1182: PPUSH
1183: LD_VAR 0 3
1187: PPUSH
1188: CALL_OW 180
// ComExitVehicle ( FilterUnitsInArea ( LegionCrate , [ [ f_side , 4 ] ] ) ) ;
1192: LD_INT 1
1194: PPUSH
1195: LD_INT 22
1197: PUSH
1198: LD_INT 4
1200: PUSH
1201: EMPTY
1202: LIST
1203: LIST
1204: PUSH
1205: EMPTY
1206: LIST
1207: PPUSH
1208: CALL_OW 70
1212: PPUSH
1213: CALL_OW 121
// wait ( 0 0$0.3 ) ;
1217: LD_INT 10
1219: PPUSH
1220: CALL_OW 67
// ComMoveXY ( FilterUnitsInArea ( LegionCrate , [ [ f_side , 4 ] ] ) , 175 , 64 ) ;
1224: LD_INT 1
1226: PPUSH
1227: LD_INT 22
1229: PUSH
1230: LD_INT 4
1232: PUSH
1233: EMPTY
1234: LIST
1235: LIST
1236: PUSH
1237: EMPTY
1238: LIST
1239: PPUSH
1240: CALL_OW 70
1244: PPUSH
1245: LD_INT 175
1247: PPUSH
1248: LD_INT 64
1250: PPUSH
1251: CALL_OW 111
// result = true ;
1255: LD_ADDR_VAR 0 1
1259: PUSH
1260: LD_INT 1
1262: ST_TO_ADDR
// end ;
1263: GO 1177
1265: POP
1266: POP
// end ;
1267: LD_VAR 0 1
1271: RET
// every 0 0$0.3 do
1272: GO 1274
1274: DISABLE
// begin enable ;
1275: ENABLE
// if CheckLaser = true then
1276: CALL 1106 0 0
1280: PUSH
1281: LD_INT 1
1283: EQUAL
1284: IFFALSE 1349
// begin ComExitVehicle ( FilterUnitsInArea ( LegionCrate , [ [ f_side , 4 ] ] ) ) ;
1286: LD_INT 1
1288: PPUSH
1289: LD_INT 22
1291: PUSH
1292: LD_INT 4
1294: PUSH
1295: EMPTY
1296: LIST
1297: LIST
1298: PUSH
1299: EMPTY
1300: LIST
1301: PPUSH
1302: CALL_OW 70
1306: PPUSH
1307: CALL_OW 121
// wait ( 0 0$0.3 ) ;
1311: LD_INT 10
1313: PPUSH
1314: CALL_OW 67
// ComMoveXY ( FilterUnitsInArea ( LegionCrate , [ [ f_side , 4 ] ] ) , 175 , 64 ) ;
1318: LD_INT 1
1320: PPUSH
1321: LD_INT 22
1323: PUSH
1324: LD_INT 4
1326: PUSH
1327: EMPTY
1328: LIST
1329: LIST
1330: PUSH
1331: EMPTY
1332: LIST
1333: PPUSH
1334: CALL_OW 70
1338: PPUSH
1339: LD_INT 175
1341: PPUSH
1342: LD_INT 64
1344: PPUSH
1345: CALL_OW 111
// end ; end ;
1349: END
// every 0 0$03 trigger CheckLaser = true do
1350: CALL 1106 0 0
1354: PUSH
1355: LD_INT 1
1357: EQUAL
1358: IFFALSE 1367
1360: GO 1362
1362: DISABLE
// begin LegionBlowTreesUp ;
1363: CALL 1368 0 0
// end ;
1367: END
// function LegionBlowTreesUp ( ) ; begin
1368: LD_INT 0
1370: PPUSH
// LegionEscape = 1 ;
1371: LD_ADDR_EXP 1
1375: PUSH
1376: LD_INT 1
1378: ST_TO_ADDR
// ComExitBuilding ( filterAllUnits ( [ [ f_side , 8 ] ] ) ) ;
1379: LD_INT 22
1381: PUSH
1382: LD_INT 8
1384: PUSH
1385: EMPTY
1386: LIST
1387: LIST
1388: PUSH
1389: EMPTY
1390: LIST
1391: PPUSH
1392: CALL_OW 69
1396: PPUSH
1397: CALL_OW 122
// wait ( 0 0$0.5 ) ;
1401: LD_INT 18
1403: PPUSH
1404: CALL_OW 67
// ComMoveToArea ( filterAllUnits ( [ [ f_side , 8 ] ] ) , EscapeZone ) ;
1408: LD_INT 22
1410: PUSH
1411: LD_INT 8
1413: PUSH
1414: EMPTY
1415: LIST
1416: LIST
1417: PUSH
1418: EMPTY
1419: LIST
1420: PPUSH
1421: CALL_OW 69
1425: PPUSH
1426: LD_INT 8
1428: PPUSH
1429: CALL_OW 113
// ComMoveXY ( Reaper , 156 , 12 ) ;
1433: LD_INT 340
1435: PPUSH
1436: LD_INT 156
1438: PPUSH
1439: LD_INT 12
1441: PPUSH
1442: CALL_OW 111
// AddComPlaceRemoteCharge ( LegSol1 , 163 , 9 , 0 ) ;
1446: LD_INT 342
1448: PPUSH
1449: LD_INT 163
1451: PPUSH
1452: LD_INT 9
1454: PPUSH
1455: LD_INT 0
1457: PPUSH
1458: CALL_OW 193
// AddComPlaceRemoteCharge ( LegSol2 , 158 , 8 , 0 ) ;
1462: LD_INT 344
1464: PPUSH
1465: LD_INT 158
1467: PPUSH
1468: LD_INT 8
1470: PPUSH
1471: LD_INT 0
1473: PPUSH
1474: CALL_OW 193
// AddComPlaceRemoteCharge ( LegSol3 , 161 , 12 , 0 ) ;
1478: LD_INT 346
1480: PPUSH
1481: LD_INT 161
1483: PPUSH
1484: LD_INT 12
1486: PPUSH
1487: LD_INT 0
1489: PPUSH
1490: CALL_OW 193
// AddComPlaceRemoteCharge ( LegSol4 , 152 , 2 , 0 ) ;
1494: LD_INT 348
1496: PPUSH
1497: LD_INT 152
1499: PPUSH
1500: LD_INT 2
1502: PPUSH
1503: LD_INT 0
1505: PPUSH
1506: CALL_OW 193
// AddComMoveToArea ( [ Legsol1 , LEgsol2 , Legsol3 , Legsol4 ] , EscapeZone ) ;
1510: LD_INT 342
1512: PUSH
1513: LD_INT 344
1515: PUSH
1516: LD_INT 346
1518: PUSH
1519: LD_INT 348
1521: PUSH
1522: EMPTY
1523: LIST
1524: LIST
1525: LIST
1526: LIST
1527: PPUSH
1528: LD_INT 8
1530: PPUSH
1531: CALL_OW 173
// BlowMeup ( LegSol1 , EscapeZone ) ;
1535: LD_INT 342
1537: PPUSH
1538: LD_INT 8
1540: PPUSH
1541: CALL 1580 0 2
// BlowMeup ( LegSol2 , EscapeZone ) ;
1545: LD_INT 344
1547: PPUSH
1548: LD_INT 8
1550: PPUSH
1551: CALL 1580 0 2
// BlowMeup ( LegSol3 , EscapeZone ) ;
1555: LD_INT 346
1557: PPUSH
1558: LD_INT 8
1560: PPUSH
1561: CALL 1580 0 2
// BlowMeup ( LegSol4 , EscapeZone ) ;
1565: LD_INT 348
1567: PPUSH
1568: LD_INT 8
1570: PPUSH
1571: CALL 1580 0 2
// end ;
1575: LD_VAR 0 1
1579: RET
// function BlowMeUp ( Detonator , SafeZone ) ; begin
1580: LD_INT 0
1582: PPUSH
// wait ( 0 0$5 ) ;
1583: LD_INT 175
1585: PPUSH
1586: CALL_OW 67
// if IsInArea ( Detonator , SafeZone ) then
1590: LD_VAR 0 1
1594: PPUSH
1595: LD_VAR 0 2
1599: PPUSH
1600: CALL_OW 308
1604: IFFALSE 1617
// ComFireExplosives ( Detonator ) else
1606: LD_VAR 0 1
1610: PPUSH
1611: CALL_OW 134
1615: GO 1631
// BlowMeUp ( Detonator , Safezone ) ;
1617: LD_VAR 0 1
1621: PPUSH
1622: LD_VAR 0 2
1626: PPUSH
1627: CALL 1580 0 2
// end ;
1631: LD_VAR 0 3
1635: RET
// every 0 0$01 trigger legionescape = 0 do
1636: LD_EXP 1
1640: PUSH
1641: LD_INT 0
1643: EQUAL
1644: IFFALSE 2130
1646: GO 1648
1648: DISABLE
// begin enable ;
1649: ENABLE
// if GetLives ( Reaper ) < 700 then
1650: LD_INT 340
1652: PPUSH
1653: CALL_OW 256
1657: PUSH
1658: LD_INT 700
1660: LESS
1661: IFFALSE 1699
// begin ComMoveXY ( Reaper , 181 , 51 ) ;
1663: LD_INT 340
1665: PPUSH
1666: LD_INT 181
1668: PPUSH
1669: LD_INT 51
1671: PPUSH
1672: CALL_OW 111
// if not IsBusy ( LegDoc ) then
1676: LD_INT 421
1678: PPUSH
1679: CALL_OW 315
1683: NOT
1684: IFFALSE 1699
// ComMoveXY ( LegDoc , 180 , 51 ) ;
1686: LD_INT 421
1688: PPUSH
1689: LD_INT 180
1691: PPUSH
1692: LD_INT 51
1694: PPUSH
1695: CALL_OW 111
// end ; AddComLinkTo ( FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , control_remote ] ] ) , LegControl ) ;
1699: LD_INT 22
1701: PUSH
1702: LD_INT 8
1704: PUSH
1705: EMPTY
1706: LIST
1707: LIST
1708: PUSH
1709: LD_INT 33
1711: PUSH
1712: LD_INT 2
1714: PUSH
1715: EMPTY
1716: LIST
1717: LIST
1718: PUSH
1719: EMPTY
1720: LIST
1721: LIST
1722: PPUSH
1723: CALL_OW 69
1727: PPUSH
1728: LD_INT 401
1730: PPUSH
1731: CALL_OW 195
// if not IsOK ( LegT1 ) then
1735: LD_INT 49
1737: PPUSH
1738: CALL_OW 302
1742: NOT
1743: IFFALSE 1755
// ComEnterUnit ( LegSol1 , LegArm ) ;
1745: LD_INT 342
1747: PPUSH
1748: LD_INT 74
1750: PPUSH
1751: CALL_OW 120
// if not IsOK ( LegT2 ) then
1755: LD_INT 56
1757: PPUSH
1758: CALL_OW 302
1762: NOT
1763: IFFALSE 1775
// ComEnterUnit ( LegSol2 , LegArm ) ;
1765: LD_INT 344
1767: PPUSH
1768: LD_INT 74
1770: PPUSH
1771: CALL_OW 120
// if not IsOK ( LegT3 ) then
1775: LD_INT 57
1777: PPUSH
1778: CALL_OW 302
1782: NOT
1783: IFFALSE 1795
// ComEnterUnit ( LegSol3 , LegArm ) ;
1785: LD_INT 346
1787: PPUSH
1788: LD_INT 74
1790: PPUSH
1791: CALL_OW 120
// if LegionSeesTanks = false then
1795: CALL 2131 0 0
1799: PUSH
1800: LD_INT 0
1802: EQUAL
1803: IFFALSE 2130
// begin if ( not isdead ( LegT1 ) ) and Getlives ( LegT1 ) > 250 and isInArea ( LegSol1 , LegArmArea ) then
1805: LD_INT 49
1807: PPUSH
1808: CALL_OW 301
1812: NOT
1813: PUSH
1814: LD_INT 49
1816: PPUSH
1817: CALL_OW 256
1821: PUSH
1822: LD_INT 250
1824: GREATER
1825: AND
1826: PUSH
1827: LD_INT 342
1829: PPUSH
1830: LD_INT 14
1832: PPUSH
1833: CALL_OW 308
1837: AND
1838: IFFALSE 1885
// begin AddComExitBuilding ( LEgSol1 ) ;
1840: LD_INT 342
1842: PPUSH
1843: CALL_OW 182
// if Getlives ( LegSol1 ) < 900 then
1847: LD_INT 342
1849: PPUSH
1850: CALL_OW 256
1854: PUSH
1855: LD_INT 900
1857: LESS
1858: IFFALSE 1875
// AddComMoveXY ( LegSol1 , 181 , 51 ) else
1860: LD_INT 342
1862: PPUSH
1863: LD_INT 181
1865: PPUSH
1866: LD_INT 51
1868: PPUSH
1869: CALL_OW 171
1873: GO 1885
// AddComEnterUnit ( LEgsol1 , LegT1 ) ;
1875: LD_INT 342
1877: PPUSH
1878: LD_INT 49
1880: PPUSH
1881: CALL_OW 180
// end ; if ( not isdead ( LegT2 ) ) and Getlives ( LegT2 ) > 250 and isInArea ( LegSol2 , LegArmArea ) then
1885: LD_INT 56
1887: PPUSH
1888: CALL_OW 301
1892: NOT
1893: PUSH
1894: LD_INT 56
1896: PPUSH
1897: CALL_OW 256
1901: PUSH
1902: LD_INT 250
1904: GREATER
1905: AND
1906: PUSH
1907: LD_INT 344
1909: PPUSH
1910: LD_INT 14
1912: PPUSH
1913: CALL_OW 308
1917: AND
1918: IFFALSE 1965
// begin AddComExitBuilding ( LEgSol2 ) ;
1920: LD_INT 344
1922: PPUSH
1923: CALL_OW 182
// if Getlives ( LegSol2 ) < 900 then
1927: LD_INT 344
1929: PPUSH
1930: CALL_OW 256
1934: PUSH
1935: LD_INT 900
1937: LESS
1938: IFFALSE 1955
// AddComMoveXY ( LegSol2 , 181 , 51 ) else
1940: LD_INT 344
1942: PPUSH
1943: LD_INT 181
1945: PPUSH
1946: LD_INT 51
1948: PPUSH
1949: CALL_OW 171
1953: GO 1965
// AddComEnterUnit ( LEgsol2 , LegT2 ) ;
1955: LD_INT 344
1957: PPUSH
1958: LD_INT 56
1960: PPUSH
1961: CALL_OW 180
// end ; if ( not isdead ( LegT3 ) ) and Getlives ( LegT3 ) > 250 and isInArea ( LegSol3 , LegArmArea ) then
1965: LD_INT 57
1967: PPUSH
1968: CALL_OW 301
1972: NOT
1973: PUSH
1974: LD_INT 57
1976: PPUSH
1977: CALL_OW 256
1981: PUSH
1982: LD_INT 250
1984: GREATER
1985: AND
1986: PUSH
1987: LD_INT 346
1989: PPUSH
1990: LD_INT 14
1992: PPUSH
1993: CALL_OW 308
1997: AND
1998: IFFALSE 2045
// begin AddComExitBuilding ( LEgSol3 ) ;
2000: LD_INT 346
2002: PPUSH
2003: CALL_OW 182
// if Getlives ( LegSol3 ) < 900 then
2007: LD_INT 346
2009: PPUSH
2010: CALL_OW 256
2014: PUSH
2015: LD_INT 900
2017: LESS
2018: IFFALSE 2035
// AddComMoveXY ( LegSol3 , 181 , 51 ) else
2020: LD_INT 346
2022: PPUSH
2023: LD_INT 181
2025: PPUSH
2026: LD_INT 51
2028: PPUSH
2029: CALL_OW 171
2033: GO 2045
// AddComEnterUnit ( LEgsol3 , LegT3 ) ;
2035: LD_INT 346
2037: PPUSH
2038: LD_INT 57
2040: PPUSH
2041: CALL_OW 180
// end ; if IsOK ( LegArm ) then
2045: LD_INT 74
2047: PPUSH
2048: CALL_OW 302
2052: IFFALSE 2130
// begin if Getlives ( LegSol4 ) < 900 then
2054: LD_INT 348
2056: PPUSH
2057: CALL_OW 256
2061: PUSH
2062: LD_INT 900
2064: LESS
2065: IFFALSE 2082
// AddComMoveXY ( LegSol4 , 181 , 51 ) else
2067: LD_INT 348
2069: PPUSH
2070: LD_INT 181
2072: PPUSH
2073: LD_INT 51
2075: PPUSH
2076: CALL_OW 171
2080: GO 2092
// AddComEnterUnit ( LegSol4 , LegArm ) ;
2082: LD_INT 348
2084: PPUSH
2085: LD_INT 74
2087: PPUSH
2088: CALL_OW 180
// if Getlives ( LegMort ) < 900 then
2092: LD_INT 349
2094: PPUSH
2095: CALL_OW 256
2099: PUSH
2100: LD_INT 900
2102: LESS
2103: IFFALSE 2120
// AddComMoveXY ( LegMort , 181 , 51 ) else
2105: LD_INT 349
2107: PPUSH
2108: LD_INT 181
2110: PPUSH
2111: LD_INT 51
2113: PPUSH
2114: CALL_OW 171
2118: GO 2130
// AddComEnterUnit ( LegMort , LegArm ) ;
2120: LD_INT 349
2122: PPUSH
2123: LD_INT 74
2125: PPUSH
2126: CALL_OW 180
// end ; end ; end ;
2130: END
// function LegionSeesTanks ; var List , UnitInList ; begin
2131: LD_INT 0
2133: PPUSH
2134: PPUSH
2135: PPUSH
// result = false ;
2136: LD_ADDR_VAR 0 1
2140: PUSH
2141: LD_INT 0
2143: ST_TO_ADDR
// for UnitInList in List do
2144: LD_ADDR_VAR 0 3
2148: PUSH
2149: LD_VAR 0 2
2153: PUSH
2154: FOR_IN
2155: IFFALSE 2181
// if See ( 8 , UnitInList ) then
2157: LD_INT 8
2159: PPUSH
2160: LD_VAR 0 3
2164: PPUSH
2165: CALL_OW 292
2169: IFFALSE 2179
// result = true ;
2171: LD_ADDR_VAR 0 1
2175: PUSH
2176: LD_INT 1
2178: ST_TO_ADDR
2179: GO 2154
2181: POP
2182: POP
// end ;
2183: LD_VAR 0 1
2187: RET
// every 0 0$45 trigger LEgionEscape = 0 do
2188: LD_EXP 1
2192: PUSH
2193: LD_INT 0
2195: EQUAL
2196: IFFALSE 2270
2198: GO 2200
2200: DISABLE
// begin enable ;
2201: ENABLE
// ComConstruct ( LegFactory , ar_Medium_trike , engine_solar , control_remote , ar_gun ) ;
2202: LD_INT 36
2204: PPUSH
2205: LD_INT 13
2207: PPUSH
2208: LD_INT 2
2210: PPUSH
2211: LD_INT 2
2213: PPUSH
2214: LD_INT 27
2216: PPUSH
2217: CALL_OW 125
// if CountLEgionVehicles > 2 then
2221: CALL 2271 0 0
2225: PUSH
2226: LD_INT 2
2228: GREATER
2229: IFFALSE 2270
// begin ComAgressiveMove ( FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , control_remote ] ] ) , 91 , 109 ) ;
2231: LD_INT 22
2233: PUSH
2234: LD_INT 8
2236: PUSH
2237: EMPTY
2238: LIST
2239: LIST
2240: PUSH
2241: LD_INT 33
2243: PUSH
2244: LD_INT 2
2246: PUSH
2247: EMPTY
2248: LIST
2249: LIST
2250: PUSH
2251: EMPTY
2252: LIST
2253: LIST
2254: PPUSH
2255: CALL_OW 69
2259: PPUSH
2260: LD_INT 91
2262: PPUSH
2263: LD_INT 109
2265: PPUSH
2266: CALL_OW 114
// end ; end ;
2270: END
// function CountLegionVehicles ; var List , UnitInList ; begin
2271: LD_INT 0
2273: PPUSH
2274: PPUSH
2275: PPUSH
// result = 0 ;
2276: LD_ADDR_VAR 0 1
2280: PUSH
2281: LD_INT 0
2283: ST_TO_ADDR
// List = FilterAllUnits ( [ [ f_side , 8 ] , [ f_control , control_remote ] ] ) ;
2284: LD_ADDR_VAR 0 2
2288: PUSH
2289: LD_INT 22
2291: PUSH
2292: LD_INT 8
2294: PUSH
2295: EMPTY
2296: LIST
2297: LIST
2298: PUSH
2299: LD_INT 33
2301: PUSH
2302: LD_INT 2
2304: PUSH
2305: EMPTY
2306: LIST
2307: LIST
2308: PUSH
2309: EMPTY
2310: LIST
2311: LIST
2312: PPUSH
2313: CALL_OW 69
2317: ST_TO_ADDR
// for UnitInList in List do
2318: LD_ADDR_VAR 0 3
2322: PUSH
2323: LD_VAR 0 2
2327: PUSH
2328: FOR_IN
2329: IFFALSE 2347
// result = result + 1 ;
2331: LD_ADDR_VAR 0 1
2335: PUSH
2336: LD_VAR 0 1
2340: PUSH
2341: LD_INT 1
2343: PLUS
2344: ST_TO_ADDR
2345: GO 2328
2347: POP
2348: POP
// end ; end_of_file
2349: LD_VAR 0 1
2353: RET
// every 0 0$50 do
2354: GO 2356
2356: DISABLE
// begin enable ;
2357: ENABLE
// Randomize ;
2358: CALL_OW 10
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , NormalCrate , true ) ;
2362: LD_INT 1
2364: PPUSH
2365: LD_INT 4
2367: PUSH
2368: LD_OWVAR 67
2372: MINUS
2373: PPUSH
2374: LD_INT 5
2376: PPUSH
2377: CALL_OW 12
2381: PPUSH
2382: LD_INT 2
2384: PPUSH
2385: LD_INT 1
2387: PPUSH
2388: CALL_OW 59
// end ;
2392: END
// every 5 5$00 do
2393: GO 2395
2395: DISABLE
// begin enable ;
2396: ENABLE
// Randomize ;
2397: CALL_OW 10
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , LegionCrate , true ) ;
2401: LD_INT 1
2403: PPUSH
2404: LD_INT 4
2406: PUSH
2407: LD_OWVAR 67
2411: MINUS
2412: PPUSH
2413: LD_INT 5
2415: PPUSH
2416: CALL_OW 12
2420: PPUSH
2421: LD_INT 1
2423: PPUSH
2424: LD_INT 1
2426: PPUSH
2427: CALL_OW 59
// wait ( 0 0$2 ) ;
2431: LD_INT 70
2433: PPUSH
2434: CALL_OW 67
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , LegionCrate , true ) ;
2438: LD_INT 1
2440: PPUSH
2441: LD_INT 4
2443: PUSH
2444: LD_OWVAR 67
2448: MINUS
2449: PPUSH
2450: LD_INT 5
2452: PPUSH
2453: CALL_OW 12
2457: PPUSH
2458: LD_INT 1
2460: PPUSH
2461: LD_INT 1
2463: PPUSH
2464: CALL_OW 59
// wait ( 0 0$1 ) ;
2468: LD_INT 35
2470: PPUSH
2471: CALL_OW 67
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , LegionCrate , true ) ;
2475: LD_INT 1
2477: PPUSH
2478: LD_INT 4
2480: PUSH
2481: LD_OWVAR 67
2485: MINUS
2486: PPUSH
2487: LD_INT 5
2489: PPUSH
2490: CALL_OW 12
2494: PPUSH
2495: LD_INT 1
2497: PPUSH
2498: LD_INT 1
2500: PPUSH
2501: CALL_OW 59
// wait ( 0 0$0.5 ) ;
2505: LD_INT 18
2507: PPUSH
2508: CALL_OW 67
// CreateResourcesArea ( 1 , rand ( 4 - difficulty , 5 ) , LegionCrate , true ) ;
2512: LD_INT 1
2514: PPUSH
2515: LD_INT 4
2517: PUSH
2518: LD_OWVAR 67
2522: MINUS
2523: PPUSH
2524: LD_INT 5
2526: PPUSH
2527: CALL_OW 12
2531: PPUSH
2532: LD_INT 1
2534: PPUSH
2535: LD_INT 1
2537: PPUSH
2538: CALL_OW 59
// end ; end_of_file
2542: END
// export ArMort1 , ArMort2 , ArSol1 , ArSol2 , ArMonkey ; export function ArabSetup ; begin
2543: LD_INT 0
2545: PPUSH
// ComEnterUnit ( [ ArDoc1 , ArDoc2 ] , ArLab ) ;
2546: LD_INT 369
2548: PUSH
2549: LD_INT 366
2551: PUSH
2552: EMPTY
2553: LIST
2554: LIST
2555: PPUSH
2556: LD_INT 246
2558: PPUSH
2559: CALL_OW 120
// ComEnterUnit ( FilterallUnits ( [ [ f_side , 2 ] , [ f_class , 3 ] ] ) , ArFactory ) ;
2563: LD_INT 22
2565: PUSH
2566: LD_INT 2
2568: PUSH
2569: EMPTY
2570: LIST
2571: LIST
2572: PUSH
2573: LD_INT 25
2575: PUSH
2576: LD_INT 3
2578: PUSH
2579: EMPTY
2580: LIST
2581: LIST
2582: PUSH
2583: EMPTY
2584: LIST
2585: LIST
2586: PPUSH
2587: CALL_OW 69
2591: PPUSH
2592: LD_INT 124
2594: PPUSH
2595: CALL_OW 120
// uc_side = 2 ;
2599: LD_ADDR_OWVAR 20
2603: PUSH
2604: LD_INT 2
2606: ST_TO_ADDR
// uc_nation = 2 ;
2607: LD_ADDR_OWVAR 21
2611: PUSH
2612: LD_INT 2
2614: ST_TO_ADDR
// hc_class = class_mortar ;
2615: LD_ADDR_OWVAR 28
2619: PUSH
2620: LD_INT 8
2622: ST_TO_ADDR
// hc_basic_skills = [ 3 + difficulty , 3 , 2 , 1 ] ;
2623: LD_ADDR_OWVAR 30
2627: PUSH
2628: LD_INT 3
2630: PUSH
2631: LD_OWVAR 67
2635: PLUS
2636: PUSH
2637: LD_INT 3
2639: PUSH
2640: LD_INT 2
2642: PUSH
2643: LD_INT 1
2645: PUSH
2646: EMPTY
2647: LIST
2648: LIST
2649: LIST
2650: LIST
2651: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2652: LD_ADDR_OWVAR 27
2656: PUSH
2657: LD_INT 1
2659: PPUSH
2660: LD_INT 2
2662: PPUSH
2663: CALL_OW 12
2667: ST_TO_ADDR
// ArMort1 = CreateHuman ;
2668: LD_ADDR_EXP 3
2672: PUSH
2673: CALL_OW 44
2677: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2678: LD_ADDR_OWVAR 27
2682: PUSH
2683: LD_INT 1
2685: PPUSH
2686: LD_INT 2
2688: PPUSH
2689: CALL_OW 12
2693: ST_TO_ADDR
// Armort2 = CreateHuman ;
2694: LD_ADDR_EXP 4
2698: PUSH
2699: CALL_OW 44
2703: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2704: LD_ADDR_OWVAR 27
2708: PUSH
2709: LD_INT 1
2711: PPUSH
2712: LD_INT 2
2714: PPUSH
2715: CALL_OW 12
2719: ST_TO_ADDR
// hc_class = 1 ;
2720: LD_ADDR_OWVAR 28
2724: PUSH
2725: LD_INT 1
2727: ST_TO_ADDR
// ArSol1 = CreateHuman ;
2728: LD_ADDR_EXP 5
2732: PUSH
2733: CALL_OW 44
2737: ST_TO_ADDR
// hc_sex = rand ( 1 , 2 ) ;
2738: LD_ADDR_OWVAR 27
2742: PUSH
2743: LD_INT 1
2745: PPUSH
2746: LD_INT 2
2748: PPUSH
2749: CALL_OW 12
2753: ST_TO_ADDR
// ArSol2 = CreateHuman ;
2754: LD_ADDR_EXP 6
2758: PUSH
2759: CALL_OW 44
2763: ST_TO_ADDR
// PlaceUnitArea ( Arsol1 , ArabSoldiersSpawn , false ) ;
2764: LD_EXP 5
2768: PPUSH
2769: LD_INT 15
2771: PPUSH
2772: LD_INT 0
2774: PPUSH
2775: CALL_OW 49
// PlaceUnitArea ( Arsol2 , ArabSoldiersSpawn , false ) ;
2779: LD_EXP 6
2783: PPUSH
2784: LD_INT 15
2786: PPUSH
2787: LD_INT 0
2789: PPUSH
2790: CALL_OW 49
// PlaceUnitArea ( ArMort1 , ArabSoldiersSpawn , false ) ;
2794: LD_EXP 3
2798: PPUSH
2799: LD_INT 15
2801: PPUSH
2802: LD_INT 0
2804: PPUSH
2805: CALL_OW 49
// PlaceUnitArea ( ArMort2 , ArabSoldiersSpawn , false ) ;
2809: LD_EXP 4
2813: PPUSH
2814: LD_INT 15
2816: PPUSH
2817: LD_INT 0
2819: PPUSH
2820: CALL_OW 49
// wait ( 0 0$0.3 ) ;
2824: LD_INT 10
2826: PPUSH
2827: CALL_OW 67
// ComEnterUnit ( ArMort1 , ArBun1 ) ;
2831: LD_EXP 3
2835: PPUSH
2836: LD_INT 201
2838: PPUSH
2839: CALL_OW 120
// ComEnterUnit ( ArMort2 , ArBun2 ) ;
2843: LD_EXP 4
2847: PPUSH
2848: LD_INT 194
2850: PPUSH
2851: CALL_OW 120
// ComEnterUnit ( ArSol1 , ArT1 ) ;
2855: LD_EXP 5
2859: PPUSH
2860: LD_INT 208
2862: PPUSH
2863: CALL_OW 120
// ComEnterUnit ( ArSol2 , ArT2 ) ;
2867: LD_EXP 6
2871: PPUSH
2872: LD_INT 165
2874: PPUSH
2875: CALL_OW 120
// uc_nation = 0 ;
2879: LD_ADDR_OWVAR 21
2883: PUSH
2884: LD_INT 0
2886: ST_TO_ADDR
// hc_class = class_apeman_soldier ;
2887: LD_ADDR_OWVAR 28
2891: PUSH
2892: LD_INT 15
2894: ST_TO_ADDR
// ArMonkey = CreateHuman ;
2895: LD_ADDR_EXP 7
2899: PUSH
2900: CALL_OW 44
2904: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
2905: LD_EXP 7
2909: PPUSH
2910: LD_INT 15
2912: PPUSH
2913: LD_INT 0
2915: PPUSH
2916: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArBarracks ) ;
2920: LD_EXP 7
2924: PPUSH
2925: LD_INT 138
2927: PPUSH
2928: CALL_OW 120
// wait ( 0 0$01 ) ;
2932: LD_INT 35
2934: PPUSH
2935: CALL_OW 67
// if difficulty > 1 then
2939: LD_OWVAR 67
2943: PUSH
2944: LD_INT 1
2946: GREATER
2947: IFFALSE 2993
// begin ArMonkey = CreateHuman ;
2949: LD_ADDR_EXP 7
2953: PUSH
2954: CALL_OW 44
2958: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
2959: LD_EXP 7
2963: PPUSH
2964: LD_INT 15
2966: PPUSH
2967: LD_INT 0
2969: PPUSH
2970: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArBarracks ) ;
2974: LD_EXP 7
2978: PPUSH
2979: LD_INT 138
2981: PPUSH
2982: CALL_OW 120
// wait ( 0 0$01 ) ;
2986: LD_INT 35
2988: PPUSH
2989: CALL_OW 67
// end ; if difficulty = 3 then
2993: LD_OWVAR 67
2997: PUSH
2998: LD_INT 3
3000: EQUAL
3001: IFFALSE 3047
// begin ArMonkey = CreateHuman ;
3003: LD_ADDR_EXP 7
3007: PUSH
3008: CALL_OW 44
3012: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
3013: LD_EXP 7
3017: PPUSH
3018: LD_INT 15
3020: PPUSH
3021: LD_INT 0
3023: PPUSH
3024: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArBarracks ) ;
3028: LD_EXP 7
3032: PPUSH
3033: LD_INT 138
3035: PPUSH
3036: CALL_OW 120
// wait ( 0 0$01 ) ;
3040: LD_INT 35
3042: PPUSH
3043: CALL_OW 67
// end ; ArMonkey = CreateHuman ;
3047: LD_ADDR_EXP 7
3051: PUSH
3052: CALL_OW 44
3056: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
3057: LD_EXP 7
3061: PPUSH
3062: LD_INT 15
3064: PPUSH
3065: LD_INT 0
3067: PPUSH
3068: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArT4 ) ;
3072: LD_EXP 7
3076: PPUSH
3077: LD_INT 169
3079: PPUSH
3080: CALL_OW 120
// wait ( 0 0$01 ) ;
3084: LD_INT 35
3086: PPUSH
3087: CALL_OW 67
// ArMonkey = CreateHuman ;
3091: LD_ADDR_EXP 7
3095: PUSH
3096: CALL_OW 44
3100: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
3101: LD_EXP 7
3105: PPUSH
3106: LD_INT 15
3108: PPUSH
3109: LD_INT 0
3111: PPUSH
3112: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArT3 ) ;
3116: LD_EXP 7
3120: PPUSH
3121: LD_INT 188
3123: PPUSH
3124: CALL_OW 120
// wait ( 0 0$01 ) ;
3128: LD_INT 35
3130: PPUSH
3131: CALL_OW 67
// ArMonkey = CreateHuman ;
3135: LD_ADDR_EXP 7
3139: PUSH
3140: CALL_OW 44
3144: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
3145: LD_EXP 7
3149: PPUSH
3150: LD_INT 15
3152: PPUSH
3153: LD_INT 0
3155: PPUSH
3156: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArBun3 ) ;
3160: LD_EXP 7
3164: PPUSH
3165: LD_INT 380
3167: PPUSH
3168: CALL_OW 120
// wait ( 0 0$01 ) ;
3172: LD_INT 35
3174: PPUSH
3175: CALL_OW 67
// ArMonkey = CreateHuman ;
3179: LD_ADDR_EXP 7
3183: PUSH
3184: CALL_OW 44
3188: ST_TO_ADDR
// PlaceUnitArea ( ArMonkey , ArabSoldiersSpawn , false ) ;
3189: LD_EXP 7
3193: PPUSH
3194: LD_INT 15
3196: PPUSH
3197: LD_INT 0
3199: PPUSH
3200: CALL_OW 49
// ComEnterUnit ( ArMonkey , ArBun4 ) ;
3204: LD_EXP 7
3208: PPUSH
3209: LD_INT 379
3211: PPUSH
3212: CALL_OW 120
// wait ( 0 0$01 ) ;
3216: LD_INT 35
3218: PPUSH
3219: CALL_OW 67
// end ;
3223: LD_VAR 0 1
3227: RET
// every 0 0$2.5 trigger ( isdead ( ArSol1 ) and isDead ( Arsol2 ) and isDead ( ArMort1 ) and isdead ( ArMort2 ) ) or ( not Getside ( ArDepot ) = 2 ) or ( not CanBeConstructed ( ArFactory , ru_heavy_tracked , 3 , control_computer , ru_gun ) ) do
3228: LD_EXP 5
3232: PPUSH
3233: CALL_OW 301
3237: PUSH
3238: LD_EXP 6
3242: PPUSH
3243: CALL_OW 301
3247: AND
3248: PUSH
3249: LD_EXP 3
3253: PPUSH
3254: CALL_OW 301
3258: AND
3259: PUSH
3260: LD_EXP 4
3264: PPUSH
3265: CALL_OW 301
3269: AND
3270: PUSH
3271: LD_INT 264
3273: PPUSH
3274: CALL_OW 255
3278: PUSH
3279: LD_INT 2
3281: EQUAL
3282: NOT
3283: OR
3284: PUSH
3285: LD_INT 124
3287: PPUSH
3288: LD_INT 24
3290: PPUSH
3291: LD_INT 3
3293: PPUSH
3294: LD_INT 3
3296: PPUSH
3297: LD_INT 44
3299: PPUSH
3300: CALL_OW 448
3304: NOT
3305: OR
3306: IFFALSE 3489
3308: GO 3310
3310: DISABLE
// begin ComExitBuilding ( FilterAllUnits ( [ [ f_side , 2 ] ] ) ) ;
3311: LD_INT 22
3313: PUSH
3314: LD_INT 2
3316: PUSH
3317: EMPTY
3318: LIST
3319: LIST
3320: PUSH
3321: EMPTY
3322: LIST
3323: PPUSH
3324: CALL_OW 69
3328: PPUSH
3329: CALL_OW 122
// AddComMoveXY ( FilterAllUnits ( [ [ f_side , 2 ] ] ) , 66 , 128 ) ;
3333: LD_INT 22
3335: PUSH
3336: LD_INT 2
3338: PUSH
3339: EMPTY
3340: LIST
3341: LIST
3342: PUSH
3343: EMPTY
3344: LIST
3345: PPUSH
3346: CALL_OW 69
3350: PPUSH
3351: LD_INT 66
3353: PPUSH
3354: LD_INT 128
3356: PPUSH
3357: CALL_OW 171
// wait ( 0 0$0.1 ) ;
3361: LD_INT 4
3363: PPUSH
3364: CALL_OW 67
// ComAgressiveMove ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , 1 ] ] ) , 66 , 128 ) ;
3368: LD_INT 22
3370: PUSH
3371: LD_INT 2
3373: PUSH
3374: EMPTY
3375: LIST
3376: LIST
3377: PUSH
3378: LD_INT 25
3380: PUSH
3381: LD_INT 1
3383: PUSH
3384: EMPTY
3385: LIST
3386: LIST
3387: PUSH
3388: EMPTY
3389: LIST
3390: LIST
3391: PPUSH
3392: CALL_OW 69
3396: PPUSH
3397: LD_INT 66
3399: PPUSH
3400: LD_INT 128
3402: PPUSH
3403: CALL_OW 114
// ComAgressiveMove ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_mortar ] ] ) , 66 , 128 ) ;
3407: LD_INT 22
3409: PUSH
3410: LD_INT 2
3412: PUSH
3413: EMPTY
3414: LIST
3415: LIST
3416: PUSH
3417: LD_INT 25
3419: PUSH
3420: LD_INT 8
3422: PUSH
3423: EMPTY
3424: LIST
3425: LIST
3426: PUSH
3427: EMPTY
3428: LIST
3429: LIST
3430: PPUSH
3431: CALL_OW 69
3435: PPUSH
3436: LD_INT 66
3438: PPUSH
3439: LD_INT 128
3441: PPUSH
3442: CALL_OW 114
// ComAgressiveMove ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman_soldier ] ] ) , 66 , 128 ) ;
3446: LD_INT 22
3448: PUSH
3449: LD_INT 2
3451: PUSH
3452: EMPTY
3453: LIST
3454: LIST
3455: PUSH
3456: LD_INT 25
3458: PUSH
3459: LD_INT 15
3461: PUSH
3462: EMPTY
3463: LIST
3464: LIST
3465: PUSH
3466: EMPTY
3467: LIST
3468: LIST
3469: PPUSH
3470: CALL_OW 69
3474: PPUSH
3475: LD_INT 66
3477: PPUSH
3478: LD_INT 128
3480: PPUSH
3481: CALL_OW 114
// ArabPanic ( ) ;
3485: CALL 3490 0 0
// end ;
3489: END
// function ArabPanic ; var UnitInList , List , panicking ; begin
3490: LD_INT 0
3492: PPUSH
3493: PPUSH
3494: PPUSH
3495: PPUSH
// if ArabEscape = 0 then
3496: LD_EXP 2
3500: PUSH
3501: LD_INT 0
3503: EQUAL
3504: IFFALSE 3568
// begin List = FilterAllUnits ( [ [ f_side , 2 ] ] ) ;
3506: LD_ADDR_VAR 0 3
3510: PUSH
3511: LD_INT 22
3513: PUSH
3514: LD_INT 2
3516: PUSH
3517: EMPTY
3518: LIST
3519: LIST
3520: PUSH
3521: EMPTY
3522: LIST
3523: PPUSH
3524: CALL_OW 69
3528: ST_TO_ADDR
// for UnitInList in List do
3529: LD_ADDR_VAR 0 2
3533: PUSH
3534: LD_VAR 0 3
3538: PUSH
3539: FOR_IN
3540: IFFALSE 3566
// begin ArabEscape = 1 ;
3542: LD_ADDR_EXP 2
3546: PUSH
3547: LD_INT 1
3549: ST_TO_ADDR
// Say ( UnitInList , ArabPAnic ) ;
3550: LD_VAR 0 2
3554: PPUSH
3555: CALL 3490 0 0
3559: PPUSH
3560: CALL_OW 88
// end ;
3564: GO 3539
3566: POP
3567: POP
// end ; end ;
3568: LD_VAR 0 1
3572: RET
// var List , UnitsInList ; every 0 0$0.5 do
3573: GO 3575
3575: DISABLE
// begin enable ;
3576: ENABLE
// List = FilterUnitsInArea ( ArabRetreatZone , [ [ f_side = 2 ] ] ) ;
3577: LD_ADDR_LOC 2
3581: PUSH
3582: LD_INT 3
3584: PPUSH
3585: LD_INT 22
3587: PUSH
3588: LD_INT 2
3590: EQUAL
3591: PUSH
3592: EMPTY
3593: LIST
3594: PUSH
3595: EMPTY
3596: LIST
3597: PPUSH
3598: CALL_OW 70
3602: ST_TO_ADDR
// for UnitsInList in List do
3603: LD_ADDR_LOC 3
3607: PUSH
3608: LD_LOC 2
3612: PUSH
3613: FOR_IN
3614: IFFALSE 3627
// RemoveUnit ( UnitsInList ) ;
3616: LD_LOC 3
3620: PPUSH
3621: CALL_OW 64
3625: GO 3613
3627: POP
3628: POP
// end ; end_of_file
3629: END
// export Truck1 , Truck2 , Truck3 , Escort1 , Escort2 , Escort3 , ConvoysKilled ; var ConvoySpawn ; every 2 2$00 do
3630: GO 3632
3632: DISABLE
// begin enable ;
3633: ENABLE
// uc_nation = 2 ;
3634: LD_ADDR_OWVAR 21
3638: PUSH
3639: LD_INT 2
3641: ST_TO_ADDR
// uc_side = 2 ;
3642: LD_ADDR_OWVAR 20
3646: PUSH
3647: LD_INT 2
3649: ST_TO_ADDR
// vc_chassis = ar_medium_trike ;
3650: LD_ADDR_OWVAR 37
3654: PUSH
3655: LD_INT 13
3657: ST_TO_ADDR
// vc_control = control_apeman ;
3658: LD_ADDR_OWVAR 38
3662: PUSH
3663: LD_INT 5
3665: ST_TO_ADDR
// vc_engine = 3 ;
3666: LD_ADDR_OWVAR 39
3670: PUSH
3671: LD_INT 3
3673: ST_TO_ADDR
// vc_weapon = ar_cargo_bay ;
3674: LD_ADDR_OWVAR 40
3678: PUSH
3679: LD_INT 32
3681: ST_TO_ADDR
// Truck1 = CreateVehicle ;
3682: LD_ADDR_EXP 8
3686: PUSH
3687: CALL_OW 45
3691: ST_TO_ADDR
// Truck2 = CreateVehicle ;
3692: LD_ADDR_EXP 9
3696: PUSH
3697: CALL_OW 45
3701: ST_TO_ADDR
// Truck3 = CreateVehicle ;
3702: LD_ADDR_EXP 10
3706: PUSH
3707: CALL_OW 45
3711: ST_TO_ADDR
// vc_weapon = [ ar_light_gun , ar_gun , ar_rocket_launcher ] [ difficulty ] ;
3712: LD_ADDR_OWVAR 40
3716: PUSH
3717: LD_INT 23
3719: PUSH
3720: LD_INT 27
3722: PUSH
3723: LD_INT 28
3725: PUSH
3726: EMPTY
3727: LIST
3728: LIST
3729: LIST
3730: PUSH
3731: LD_OWVAR 67
3735: ARRAY
3736: ST_TO_ADDR
// Escort1 = CreateVehicle ;
3737: LD_ADDR_EXP 11
3741: PUSH
3742: CALL_OW 45
3746: ST_TO_ADDR
// vc_weapon = ar_gun ;
3747: LD_ADDR_OWVAR 40
3751: PUSH
3752: LD_INT 27
3754: ST_TO_ADDR
// Escort2 = CreateVehicle ;
3755: LD_ADDR_EXP 12
3759: PUSH
3760: CALL_OW 45
3764: ST_TO_ADDR
// Escort3 = CreateVehicle ;
3765: LD_ADDR_EXP 13
3769: PUSH
3770: CALL_OW 45
3774: ST_TO_ADDR
// ConvoySpawn = [ ArabConvoy1 , ArabConvoy2 , ArabConvoy3 ] [ Rand ( 1 , 3 ) ] ;
3775: LD_ADDR_LOC 4
3779: PUSH
3780: LD_INT 4
3782: PUSH
3783: LD_INT 5
3785: PUSH
3786: LD_INT 6
3788: PUSH
3789: EMPTY
3790: LIST
3791: LIST
3792: LIST
3793: PUSH
3794: LD_INT 1
3796: PPUSH
3797: LD_INT 3
3799: PPUSH
3800: CALL_OW 12
3804: ARRAY
3805: ST_TO_ADDR
// PlaceUnitArea ( Truck1 , ConvoySpawn , false ) ;
3806: LD_EXP 8
3810: PPUSH
3811: LD_LOC 4
3815: PPUSH
3816: LD_INT 0
3818: PPUSH
3819: CALL_OW 49
// wait ( 0 0$0.1 ) ;
3823: LD_INT 4
3825: PPUSH
3826: CALL_OW 67
// ComMoveXY ( Truck1 , 92 , 110 ) ;
3830: LD_EXP 8
3834: PPUSH
3835: LD_INT 92
3837: PPUSH
3838: LD_INT 110
3840: PPUSH
3841: CALL_OW 111
// AddComUnload ( Truck1 ) ;
3845: LD_EXP 8
3849: PPUSH
3850: CALL_OW 219
// AddComMoveXY ( Truck1 , 66 , 128 ) ;
3854: LD_EXP 8
3858: PPUSH
3859: LD_INT 66
3861: PPUSH
3862: LD_INT 128
3864: PPUSH
3865: CALL_OW 171
// SetCargo ( Truck1 , 1 , 100 ) ;
3869: LD_EXP 8
3873: PPUSH
3874: LD_INT 1
3876: PPUSH
3877: LD_INT 100
3879: PPUSH
3880: CALL_OW 290
// if ConvoysKilled > 1 then
3884: LD_EXP 14
3888: PUSH
3889: LD_INT 1
3891: GREATER
3892: IFFALSE 3947
// begin PlaceUnitArea ( Escort1 , ConvoySpawn , false ) ;
3894: LD_EXP 11
3898: PPUSH
3899: LD_LOC 4
3903: PPUSH
3904: LD_INT 0
3906: PPUSH
3907: CALL_OW 49
// wait ( 0 0$0.1 ) ;
3911: LD_INT 4
3913: PPUSH
3914: CALL_OW 67
// ComMoveUnit ( Escort1 , Truck1 ) ;
3918: LD_EXP 11
3922: PPUSH
3923: LD_EXP 8
3927: PPUSH
3928: CALL_OW 112
// AddComMoveXY ( Escort1 , 66 , 128 ) ;
3932: LD_EXP 11
3936: PPUSH
3937: LD_INT 66
3939: PPUSH
3940: LD_INT 128
3942: PPUSH
3943: CALL_OW 171
// end ; wait ( 0 0$02 ) ;
3947: LD_INT 70
3949: PPUSH
3950: CALL_OW 67
// PlaceUnitArea ( Truck2 , ConvoySpawn , false ) ;
3954: LD_EXP 9
3958: PPUSH
3959: LD_LOC 4
3963: PPUSH
3964: LD_INT 0
3966: PPUSH
3967: CALL_OW 49
// wait ( 0 0$0.1 ) ;
3971: LD_INT 4
3973: PPUSH
3974: CALL_OW 67
// ComMoveXY ( Truck2 , 92 , 110 ) ;
3978: LD_EXP 9
3982: PPUSH
3983: LD_INT 92
3985: PPUSH
3986: LD_INT 110
3988: PPUSH
3989: CALL_OW 111
// AddComUnload ( Truck2 ) ;
3993: LD_EXP 9
3997: PPUSH
3998: CALL_OW 219
// AddComMoveXY ( Truck2 , 66 , 128 ) ;
4002: LD_EXP 9
4006: PPUSH
4007: LD_INT 66
4009: PPUSH
4010: LD_INT 128
4012: PPUSH
4013: CALL_OW 171
// SetCargo ( Truck2 , 1 , 100 ) ;
4017: LD_EXP 9
4021: PPUSH
4022: LD_INT 1
4024: PPUSH
4025: LD_INT 100
4027: PPUSH
4028: CALL_OW 290
// if ConvoysKilled > 1 then
4032: LD_EXP 14
4036: PUSH
4037: LD_INT 1
4039: GREATER
4040: IFFALSE 4088
// begin PlaceUnitArea ( Escort2 , ConvoySpawn , false ) ;
4042: LD_EXP 12
4046: PPUSH
4047: LD_LOC 4
4051: PPUSH
4052: LD_INT 0
4054: PPUSH
4055: CALL_OW 49
// ComMoveUnit ( Escort2 , Truck2 ) ;
4059: LD_EXP 12
4063: PPUSH
4064: LD_EXP 9
4068: PPUSH
4069: CALL_OW 112
// AddComMoveXY ( Escort2 , 66 , 128 ) ;
4073: LD_EXP 12
4077: PPUSH
4078: LD_INT 66
4080: PPUSH
4081: LD_INT 128
4083: PPUSH
4084: CALL_OW 171
// end ; wait ( 0 0$02 ) ;
4088: LD_INT 70
4090: PPUSH
4091: CALL_OW 67
// if ConvoysKilled > 1 then
4095: LD_EXP 14
4099: PUSH
4100: LD_INT 1
4102: GREATER
4103: IFFALSE 4236
// begin PlaceUnitArea ( Truck3 , ConvoySpawn , false ) ;
4105: LD_EXP 10
4109: PPUSH
4110: LD_LOC 4
4114: PPUSH
4115: LD_INT 0
4117: PPUSH
4118: CALL_OW 49
// wait ( 0 0$0.1 ) ;
4122: LD_INT 4
4124: PPUSH
4125: CALL_OW 67
// ComMoveXY ( Truck3 , 92 , 110 ) ;
4129: LD_EXP 10
4133: PPUSH
4134: LD_INT 92
4136: PPUSH
4137: LD_INT 110
4139: PPUSH
4140: CALL_OW 111
// AddComUnload ( Truck3 ) ;
4144: LD_EXP 10
4148: PPUSH
4149: CALL_OW 219
// AddComMoveXY ( Truck3 , 66 , 128 ) ;
4153: LD_EXP 10
4157: PPUSH
4158: LD_INT 66
4160: PPUSH
4161: LD_INT 128
4163: PPUSH
4164: CALL_OW 171
// SetCargo ( Truck3 , 1 , 100 ) ;
4168: LD_EXP 10
4172: PPUSH
4173: LD_INT 1
4175: PPUSH
4176: LD_INT 100
4178: PPUSH
4179: CALL_OW 290
// PlaceUnitArea ( Escort3 , ConvoySpawn , false ) ;
4183: LD_EXP 13
4187: PPUSH
4188: LD_LOC 4
4192: PPUSH
4193: LD_INT 0
4195: PPUSH
4196: CALL_OW 49
// wait ( 0 0$0.1 ) ;
4200: LD_INT 4
4202: PPUSH
4203: CALL_OW 67
// ComMoveUnit ( Escort3 , Truck3 ) ;
4207: LD_EXP 13
4211: PPUSH
4212: LD_EXP 10
4216: PPUSH
4217: CALL_OW 112
// AddComMoveXY ( Escort3 , 66 , 128 ) ;
4221: LD_EXP 13
4225: PPUSH
4226: LD_INT 66
4228: PPUSH
4229: LD_INT 128
4231: PPUSH
4232: CALL_OW 171
// end ; end ;
4236: END
// var Units , List ; every 0 0$03 do
4237: GO 4239
4239: DISABLE
// begin enable ;
4240: ENABLE
// List = filterAllUnits ( [ [ f_side , 2 ] , [ f_weapon , ar_cargo_bay ] ] ) ;
4241: LD_ADDR_LOC 6
4245: PUSH
4246: LD_INT 22
4248: PUSH
4249: LD_INT 2
4251: PUSH
4252: EMPTY
4253: LIST
4254: LIST
4255: PUSH
4256: LD_INT 34
4258: PUSH
4259: LD_INT 32
4261: PUSH
4262: EMPTY
4263: LIST
4264: LIST
4265: PUSH
4266: EMPTY
4267: LIST
4268: LIST
4269: PPUSH
4270: CALL_OW 69
4274: ST_TO_ADDR
// for Units in list do
4275: LD_ADDR_LOC 5
4279: PUSH
4280: LD_LOC 6
4284: PUSH
4285: FOR_IN
4286: IFFALSE 4325
// if not IsOK ( Units ) then
4288: LD_LOC 5
4292: PPUSH
4293: CALL_OW 302
4297: NOT
4298: IFFALSE 4323
// begin ConvoysKilled = ConvoysKilled + 1 ;
4300: LD_ADDR_EXP 14
4304: PUSH
4305: LD_EXP 14
4309: PUSH
4310: LD_INT 1
4312: PLUS
4313: ST_TO_ADDR
// KillUnit ( Units ) end ;
4314: LD_LOC 5
4318: PPUSH
4319: CALL_OW 66
4323: GO 4285
4325: POP
4326: POP
// end ; end_of_file
4327: END
// var list , UnitsInList ; every 1 1$00 do
4328: GO 4330
4330: DISABLE
// begin enable ;
4331: ENABLE
// AddComConstruct ( ArFactory , ru_heavy_tracked , 3 , control_computer , ru_gun ) ;
4332: LD_INT 124
4334: PPUSH
4335: LD_INT 24
4337: PPUSH
4338: LD_INT 3
4340: PPUSH
4341: LD_INT 3
4343: PPUSH
4344: LD_INT 44
4346: PPUSH
4347: CALL_OW 185
// end ;
4351: END
// every 0 0$10 do
4352: GO 4354
4354: DISABLE
// begin enable ;
4355: ENABLE
// if CountDronesAtHome ( ) > 2 then
4356: CALL 4403 0 0
4360: PUSH
4361: LD_INT 2
4363: GREATER
4364: IFFALSE 4402
// begin ArAttackWave ( filterUnitsInArea ( ArabBase , [ [ f_side , 2 ] , [ f_control , control_computer ] ] ) ) ;
4366: LD_INT 16
4368: PPUSH
4369: LD_INT 22
4371: PUSH
4372: LD_INT 2
4374: PUSH
4375: EMPTY
4376: LIST
4377: LIST
4378: PUSH
4379: LD_INT 33
4381: PUSH
4382: LD_INT 3
4384: PUSH
4385: EMPTY
4386: LIST
4387: LIST
4388: PUSH
4389: EMPTY
4390: LIST
4391: LIST
4392: PPUSH
4393: CALL_OW 70
4397: PPUSH
4398: CALL 4487 0 1
// end ; end ;
4402: END
// function CountDronesAtHome ( ) ; begin
4403: LD_INT 0
4405: PPUSH
// result = 0 ;
4406: LD_ADDR_VAR 0 1
4410: PUSH
4411: LD_INT 0
4413: ST_TO_ADDR
// List = filterUnitsInArea ( ArabBase , [ [ f_side , 2 ] , [ f_control , control_computer ] ] ) ;
4414: LD_ADDR_LOC 7
4418: PUSH
4419: LD_INT 16
4421: PPUSH
4422: LD_INT 22
4424: PUSH
4425: LD_INT 2
4427: PUSH
4428: EMPTY
4429: LIST
4430: LIST
4431: PUSH
4432: LD_INT 33
4434: PUSH
4435: LD_INT 3
4437: PUSH
4438: EMPTY
4439: LIST
4440: LIST
4441: PUSH
4442: EMPTY
4443: LIST
4444: LIST
4445: PPUSH
4446: CALL_OW 70
4450: ST_TO_ADDR
// for UnitsInList in List do
4451: LD_ADDR_LOC 8
4455: PUSH
4456: LD_LOC 7
4460: PUSH
4461: FOR_IN
4462: IFFALSE 4480
// result = result + 1 ;
4464: LD_ADDR_VAR 0 1
4468: PUSH
4469: LD_VAR 0 1
4473: PUSH
4474: LD_INT 1
4476: PLUS
4477: ST_TO_ADDR
4478: GO 4461
4480: POP
4481: POP
// end ;
4482: LD_VAR 0 1
4486: RET
// var SelectedPath ; function ArAttackWave ( units ) ; begin
4487: LD_INT 0
4489: PPUSH
// selectedPath = rand ( 1 , 3 ) ;
4490: LD_ADDR_LOC 9
4494: PUSH
4495: LD_INT 1
4497: PPUSH
4498: LD_INT 3
4500: PPUSH
4501: CALL_OW 12
4505: ST_TO_ADDR
// case SelectedPath of 1 :
4506: LD_LOC 9
4510: PUSH
4511: LD_INT 1
4513: DOUBLE
4514: EQUAL
4515: IFTRUE 4519
4517: GO 4597
4519: POP
// begin AddComAgressiveMove ( units , 142 , 47 ) ;
4520: LD_VAR 0 1
4524: PPUSH
4525: LD_INT 142
4527: PPUSH
4528: LD_INT 47
4530: PPUSH
4531: CALL_OW 174
// AddComAgressiveMove ( units , 183 , 63 ) ;
4535: LD_VAR 0 1
4539: PPUSH
4540: LD_INT 183
4542: PPUSH
4543: LD_INT 63
4545: PPUSH
4546: CALL_OW 174
// AddComAgressiveMove ( units , 188 , 107 ) ;
4550: LD_VAR 0 1
4554: PPUSH
4555: LD_INT 188
4557: PPUSH
4558: LD_INT 107
4560: PPUSH
4561: CALL_OW 174
// AddComAgressiveMove ( units , 142 , 47 ) ;
4565: LD_VAR 0 1
4569: PPUSH
4570: LD_INT 142
4572: PPUSH
4573: LD_INT 47
4575: PPUSH
4576: CALL_OW 174
// AddComAgressiveMove ( units , 88 , 109 ) ;
4580: LD_VAR 0 1
4584: PPUSH
4585: LD_INT 88
4587: PPUSH
4588: LD_INT 109
4590: PPUSH
4591: CALL_OW 174
// end ; 2 :
4595: GO 4740
4597: LD_INT 2
4599: DOUBLE
4600: EQUAL
4601: IFTRUE 4605
4603: GO 4668
4605: POP
// begin AddComAgressiveMove ( units , 146 , 101 ) ;
4606: LD_VAR 0 1
4610: PPUSH
4611: LD_INT 146
4613: PPUSH
4614: LD_INT 101
4616: PPUSH
4617: CALL_OW 174
// AddComAgressiveMove ( units , 142 , 47 ) ;
4621: LD_VAR 0 1
4625: PPUSH
4626: LD_INT 142
4628: PPUSH
4629: LD_INT 47
4631: PPUSH
4632: CALL_OW 174
// AddComAgressiveMove ( units , 188 , 107 ) ;
4636: LD_VAR 0 1
4640: PPUSH
4641: LD_INT 188
4643: PPUSH
4644: LD_INT 107
4646: PPUSH
4647: CALL_OW 174
// AddComAgressiveMove ( units , 88 , 109 ) ;
4651: LD_VAR 0 1
4655: PPUSH
4656: LD_INT 88
4658: PPUSH
4659: LD_INT 109
4661: PPUSH
4662: CALL_OW 174
// end ; 3 :
4666: GO 4740
4668: LD_INT 3
4670: DOUBLE
4671: EQUAL
4672: IFTRUE 4676
4674: GO 4739
4676: POP
// begin AddComAgressiveMove ( units , 137 , 26 ) ;
4677: LD_VAR 0 1
4681: PPUSH
4682: LD_INT 137
4684: PPUSH
4685: LD_INT 26
4687: PPUSH
4688: CALL_OW 174
// AddComAgressiveMove ( units , 167 , 76 ) ;
4692: LD_VAR 0 1
4696: PPUSH
4697: LD_INT 167
4699: PPUSH
4700: LD_INT 76
4702: PPUSH
4703: CALL_OW 174
// AddComAgressiveMove ( units , 188 , 107 ) ;
4707: LD_VAR 0 1
4711: PPUSH
4712: LD_INT 188
4714: PPUSH
4715: LD_INT 107
4717: PPUSH
4718: CALL_OW 174
// AddComAgressiveMove ( units , 88 , 109 ) ;
4722: LD_VAR 0 1
4726: PPUSH
4727: LD_INT 88
4729: PPUSH
4730: LD_INT 109
4732: PPUSH
4733: CALL_OW 174
// end ; end ;
4737: GO 4740
4739: POP
// end ; end_of_file
4740: LD_VAR 0 2
4744: RET
// every 0 0$1 trigger See ( 4 , Blockade1 ) or See ( 4 , Blockade2 ) or See ( 4 , Blockade3 ) or See ( 4 , Blockade4 ) do
4745: LD_INT 4
4747: PPUSH
4748: LD_INT 113
4750: PPUSH
4751: CALL_OW 292
4755: PUSH
4756: LD_INT 4
4758: PPUSH
4759: LD_INT 115
4761: PPUSH
4762: CALL_OW 292
4766: OR
4767: PUSH
4768: LD_INT 4
4770: PPUSH
4771: LD_INT 116
4773: PPUSH
4774: CALL_OW 292
4778: OR
4779: PUSH
4780: LD_INT 4
4782: PPUSH
4783: LD_INT 117
4785: PPUSH
4786: CALL_OW 292
4790: OR
4791: IFFALSE 4823
4793: GO 4795
4795: DISABLE
// begin CenterOnUnits ( Blockade2 ) ;
4796: LD_INT 115
4798: PPUSH
4799: CALL_OW 85
// say ( Madison , Blockade1 ) ;
4803: LD_INT 403
4805: PPUSH
4806: LD_STRING Blockade1
4808: PPUSH
4809: CALL_OW 88
// say ( Greene , Blockade2 ) ;
4813: LD_INT 402
4815: PPUSH
4816: LD_STRING Blockade2
4818: PPUSH
4819: CALL_OW 88
// end ;
4823: END
// every 0 0$01 trigger IsInArea ( Madison , Winzone ) and IsInArea ( Greene , Winzone ) do
4824: LD_INT 403
4826: PPUSH
4827: LD_INT 7
4829: PPUSH
4830: CALL_OW 308
4834: PUSH
4835: LD_INT 402
4837: PPUSH
4838: LD_INT 7
4840: PPUSH
4841: CALL_OW 308
4845: AND
4846: IFFALSE 4869
4848: GO 4850
4850: DISABLE
// begin AwardMedals ;
4851: CALL 4899 0 0
// say ( Madison , RunAway ) ;
4855: LD_INT 403
4857: PPUSH
4858: LD_STRING RunAway
4860: PPUSH
4861: CALL_OW 88
// YouWin ( ) ;
4865: CALL_OW 103
// end ;
4869: END
// every 0 0$01 trigger isDead ( Madison ) or IsDead ( Greene ) do
4870: LD_INT 403
4872: PPUSH
4873: CALL_OW 301
4877: PUSH
4878: LD_INT 402
4880: PPUSH
4881: CALL_OW 301
4885: OR
4886: IFFALSE 4898
4888: GO 4890
4890: DISABLE
// YouLost ( MainDeath ) ; end_of_file
4891: LD_STRING MainDeath
4893: PPUSH
4894: CALL_OW 104
4898: END
// export function AwardMedals ; begin
4899: LD_INT 0
4901: PPUSH
// AddMedal ( medal1 , 1 ) ;
4902: LD_STRING medal1
4904: PPUSH
4905: LD_INT 1
4907: PPUSH
4908: CALL_OW 101
// if not isDead ( Reaper ) then
4912: LD_INT 340
4914: PPUSH
4915: CALL_OW 301
4919: NOT
4920: IFFALSE 4934
// AddMedal ( medal2 , 1 ) else
4922: LD_STRING medal2
4924: PPUSH
4925: LD_INT 1
4927: PPUSH
4928: CALL_OW 101
4932: GO 4945
// AddMedal ( medal2 , - 1 ) ;
4934: LD_STRING medal2
4936: PPUSH
4937: LD_INT 1
4939: NEG
4940: PPUSH
4941: CALL_OW 101
// if not ( IsDead ( Ziutek ) or IsDead ( Zbych ) or IsDead ( Mietek ) ) then
4945: LD_INT 270
4947: PPUSH
4948: CALL_OW 301
4952: PUSH
4953: LD_INT 271
4955: PPUSH
4956: CALL_OW 301
4960: OR
4961: PUSH
4962: LD_INT 265
4964: PPUSH
4965: CALL_OW 301
4969: OR
4970: NOT
4971: IFFALSE 4985
// AddMedal ( medal3 , 1 ) else
4973: LD_STRING medal3
4975: PPUSH
4976: LD_INT 1
4978: PPUSH
4979: CALL_OW 101
4983: GO 4996
// AddMedal ( medal3 , - 1 ) ;
4985: LD_STRING medal3
4987: PPUSH
4988: LD_INT 1
4990: NEG
4991: PPUSH
4992: CALL_OW 101
// GiveMedals ( MAIN ) ;
4996: LD_STRING MAIN
4998: PPUSH
4999: CALL_OW 102
// end ;
5003: LD_VAR 0 1
5007: RET
