// export Alex , Eddings , Sancho , TeamGamma ; export Hayes ; export TeamAlex , Kills ; export function PrepareOurs ; var i , h , c ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
// uc_side = 1 ;
   6: LD_ADDR_OWVAR 20
  10: PUSH
  11: LD_INT 1
  13: ST_TO_ADDR
// uc_nation = 1 ;
  14: LD_ADDR_OWVAR 21
  18: PUSH
  19: LD_INT 1
  21: ST_TO_ADDR
// Alex = LoadCharacter ( Alex , 2 , 0 ) ;
  22: LD_ADDR_EXP 1
  26: PUSH
  27: LD_STRING Alex
  29: PPUSH
  30: LD_INT 2
  32: PPUSH
  33: LD_INT 0
  35: PPUSH
  36: CALL_OW 527
  40: ST_TO_ADDR
// TeamGamma = LoadCharacter ( TeamGamma , 0 , 0 ) ;
  41: LD_ADDR_EXP 4
  45: PUSH
  46: LD_STRING TeamGamma
  48: PPUSH
  49: LD_INT 0
  51: PPUSH
  52: LD_INT 0
  54: PPUSH
  55: CALL_OW 527
  59: ST_TO_ADDR
// if TeamGamma < 3 then
  60: LD_EXP 4
  64: PUSH
  65: LD_INT 3
  67: LESS
  68: IFFALSE 147
// repeat begin InitHc ;
  70: CALL_OW 19
// PrepareHuman ( Rand ( 1 , 2 ) , Rand ( 1 , 4 ) , Rand ( 1 , 2 ) ) ;
  74: LD_INT 1
  76: PPUSH
  77: LD_INT 2
  79: PPUSH
  80: CALL_OW 12
  84: PPUSH
  85: LD_INT 1
  87: PPUSH
  88: LD_INT 4
  90: PPUSH
  91: CALL_OW 12
  95: PPUSH
  96: LD_INT 1
  98: PPUSH
  99: LD_INT 2
 101: PPUSH
 102: CALL_OW 12
 106: PPUSH
 107: CALL_OW 380
// h = CreateHuman ;
 111: LD_ADDR_VAR 0 3
 115: PUSH
 116: CALL_OW 44
 120: ST_TO_ADDR
// TeamGamma = TeamGamma ^ h ;
 121: LD_ADDR_EXP 4
 125: PUSH
 126: LD_EXP 4
 130: PUSH
 131: LD_VAR 0 3
 135: ADD
 136: ST_TO_ADDR
// end until TeamGamma = 4 ;
 137: LD_EXP 4
 141: PUSH
 142: LD_INT 4
 144: EQUAL
 145: IFFALSE 70
// for i = 1 to 3 do
 147: LD_ADDR_VAR 0 2
 151: PUSH
 152: DOUBLE
 153: LD_INT 1
 155: DEC
 156: ST_TO_ADDR
 157: LD_INT 3
 159: PUSH
 160: FOR_TO
 161: IFFALSE 232
// begin InitHc ;
 163: CALL_OW 19
// PrepareHuman ( Rand ( 1 , 2 ) , Rand ( 1 , 4 ) , Rand ( 2 , 3 ) ) ;
 167: LD_INT 1
 169: PPUSH
 170: LD_INT 2
 172: PPUSH
 173: CALL_OW 12
 177: PPUSH
 178: LD_INT 1
 180: PPUSH
 181: LD_INT 4
 183: PPUSH
 184: CALL_OW 12
 188: PPUSH
 189: LD_INT 2
 191: PPUSH
 192: LD_INT 3
 194: PPUSH
 195: CALL_OW 12
 199: PPUSH
 200: CALL_OW 380
// h = CreateHuman ;
 204: LD_ADDR_VAR 0 3
 208: PUSH
 209: CALL_OW 44
 213: ST_TO_ADDR
// TeamGamma = TeamGamma ^ h ;
 214: LD_ADDR_EXP 4
 218: PUSH
 219: LD_EXP 4
 223: PUSH
 224: LD_VAR 0 3
 228: ADD
 229: ST_TO_ADDR
// end ;
 230: GO 160
 232: POP
 233: POP
// TeamAlex = CharacterSelection ( S5 , 2 , 2 , [ sel_hired , Alex , sel_not_hired , sel_changeable , sel_change_class ] ^ TeamGamma , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , class_scientistic ] ) ;
 234: LD_ADDR_EXP 6
 238: PUSH
 239: LD_STRING S5
 241: PPUSH
 242: LD_INT 2
 244: PPUSH
 245: LD_INT 2
 247: PPUSH
 248: LD_INT -1
 250: PUSH
 251: LD_EXP 1
 255: PUSH
 256: LD_INT -2
 258: PUSH
 259: LD_INT -3
 261: PUSH
 262: LD_INT -5
 264: PUSH
 265: EMPTY
 266: LIST
 267: LIST
 268: LIST
 269: LIST
 270: LIST
 271: PUSH
 272: LD_EXP 4
 276: ADD
 277: PPUSH
 278: LD_INT 1
 280: PUSH
 281: LD_INT 2
 283: PUSH
 284: LD_INT 1
 286: PUSH
 287: EMPTY
 288: LIST
 289: LIST
 290: PUSH
 291: LD_INT 3
 293: PUSH
 294: LD_INT 4
 296: PUSH
 297: EMPTY
 298: LIST
 299: LIST
 300: LIST
 301: LIST
 302: PPUSH
 303: CALL_OW 42
 307: ST_TO_ADDR
// TeamAlex = TeamAlex diff [ Alex ] ;
 308: LD_ADDR_EXP 6
 312: PUSH
 313: LD_EXP 6
 317: PUSH
 318: LD_EXP 1
 322: PUSH
 323: EMPTY
 324: LIST
 325: DIFF
 326: ST_TO_ADDR
// PlaceHumanInUnit ( Alex , AV ) ;
 327: LD_EXP 1
 331: PPUSH
 332: LD_INT 19
 334: PPUSH
 335: CALL_OW 52
// for i in TeamAlex do
 339: LD_ADDR_VAR 0 2
 343: PUSH
 344: LD_EXP 6
 348: PUSH
 349: FOR_IN
 350: IFFALSE 375
// PlaceUnitXYR ( i , 77 , 4 , 3 , false ) ;
 352: LD_VAR 0 2
 356: PPUSH
 357: LD_INT 77
 359: PPUSH
 360: LD_INT 4
 362: PPUSH
 363: LD_INT 3
 365: PPUSH
 366: LD_INT 0
 368: PPUSH
 369: CALL_OW 50
 373: GO 349
 375: POP
 376: POP
// TeamGamma = TeamGamma diff TeamAlex ;
 377: LD_ADDR_EXP 4
 381: PUSH
 382: LD_EXP 4
 386: PUSH
 387: LD_EXP 6
 391: DIFF
 392: ST_TO_ADDR
// SaveCharacters ( TeamGamma , TeamGamma ) ;
 393: LD_EXP 4
 397: PPUSH
 398: LD_STRING TeamGamma
 400: PPUSH
 401: CALL_OW 38
// c = [ 90 , 70 , 50 ] [ difficulty ] ;
 405: LD_ADDR_VAR 0 4
 409: PUSH
 410: LD_INT 90
 412: PUSH
 413: LD_INT 70
 415: PUSH
 416: LD_INT 50
 418: PUSH
 419: EMPTY
 420: LIST
 421: LIST
 422: LIST
 423: PUSH
 424: LD_OWVAR 67
 428: ARRAY
 429: ST_TO_ADDR
// SetCargo ( AV , mat_cans , c ) ;
 430: LD_INT 19
 432: PPUSH
 433: LD_INT 1
 435: PPUSH
 436: LD_VAR 0 4
 440: PPUSH
 441: CALL_OW 290
// uc_side = 4 ;
 445: LD_ADDR_OWVAR 20
 449: PUSH
 450: LD_INT 4
 452: ST_TO_ADDR
// Hayes = NewCharacter ( Hayes ) ;
 453: LD_ADDR_EXP 5
 457: PUSH
 458: LD_STRING Hayes
 460: PPUSH
 461: CALL_OW 25
 465: ST_TO_ADDR
// Sancho = NewCharacter ( Sancho ) ;
 466: LD_ADDR_EXP 3
 470: PUSH
 471: LD_STRING Sancho
 473: PPUSH
 474: CALL_OW 25
 478: ST_TO_ADDR
// end ;
 479: LD_VAR 0 1
 483: RET
// starting begin PrepareOurs ;
 484: CALL 0 0 0
// ChangeSideFog ( 1 , 8 ) ;
 488: LD_INT 1
 490: PPUSH
 491: LD_INT 8
 493: PPUSH
 494: CALL_OW 343
// InGameOn ;
 498: CALL_OW 8
// CenterNowOnUnits ( AV ) ;
 502: LD_INT 19
 504: PPUSH
 505: CALL_OW 87
// Wait ( 0 0$1 ) ;
 509: LD_INT 35
 511: PPUSH
 512: CALL_OW 67
// Say ( Alex , di-a-1 ) ;
 516: LD_EXP 1
 520: PPUSH
 521: LD_STRING di-a-1
 523: PPUSH
 524: CALL_OW 88
// SayRadio ( Hayes , di-h-1 ) ;
 528: LD_EXP 5
 532: PPUSH
 533: LD_STRING di-h-1
 535: PPUSH
 536: CALL_OW 94
// Say ( Alex , di-a-2 ) ;
 540: LD_EXP 1
 544: PPUSH
 545: LD_STRING di-a-2
 547: PPUSH
 548: CALL_OW 88
// SaveForQuickRestart ;
 552: CALL_OW 22
// InGameOff ;
 556: CALL_OW 9
// ChangeMissionObjectives ( OFind ) ;
 560: LD_STRING OFind
 562: PPUSH
 563: CALL_OW 337
// end ;
 567: END
// on UnitDestroyed ( un ) do begin if un = Alex then
 568: LD_VAR 0 1
 572: PUSH
 573: LD_EXP 1
 577: EQUAL
 578: IFFALSE 587
// YouLost ( AlexDead ) ;
 580: LD_STRING AlexDead
 582: PPUSH
 583: CALL_OW 104
// if un = Eddings then
 587: LD_VAR 0 1
 591: PUSH
 592: LD_EXP 2
 596: EQUAL
 597: IFFALSE 606
// YouLost ( EddingsDead ) ;
 599: LD_STRING EddingsDead
 601: PPUSH
 602: CALL_OW 104
// if GetSide ( un ) = 7 and GetType ( un ) = unit_human then
 606: LD_VAR 0 1
 610: PPUSH
 611: CALL_OW 255
 615: PUSH
 616: LD_INT 7
 618: EQUAL
 619: PUSH
 620: LD_VAR 0 1
 624: PPUSH
 625: CALL_OW 247
 629: PUSH
 630: LD_INT 1
 632: EQUAL
 633: AND
 634: IFFALSE 650
// Kills = Kills + 1 ;
 636: LD_ADDR_EXP 7
 640: PUSH
 641: LD_EXP 7
 645: PUSH
 646: LD_INT 1
 648: PLUS
 649: ST_TO_ADDR
// end ; end_of_file
 650: PPOPN 1
 652: END
// export BaseFound ; every 0 0$30 do var v ;
 653: GO 655
 655: DISABLE
 656: LD_INT 0
 658: PPUSH
// begin uc_side = 1 ;
 659: LD_ADDR_OWVAR 20
 663: PUSH
 664: LD_INT 1
 666: ST_TO_ADDR
// uc_nation = 1 ;
 667: LD_ADDR_OWVAR 21
 671: PUSH
 672: LD_INT 1
 674: ST_TO_ADDR
// Eddings = NewCharacter ( Eddings ) ;
 675: LD_ADDR_EXP 2
 679: PUSH
 680: LD_STRING Eddings
 682: PPUSH
 683: CALL_OW 25
 687: ST_TO_ADDR
// InitVc ;
 688: CALL_OW 20
// vc_chassis = us_medium_wheeled ;
 692: LD_ADDR_OWVAR 37
 696: PUSH
 697: LD_INT 2
 699: ST_TO_ADDR
// vc_weapon = us_machine_gun ;
 700: LD_ADDR_OWVAR 40
 704: PUSH
 705: LD_INT 2
 707: ST_TO_ADDR
// vc_engine = engine_combustion ;
 708: LD_ADDR_OWVAR 39
 712: PUSH
 713: LD_INT 1
 715: ST_TO_ADDR
// vc_control = control_manual ;
 716: LD_ADDR_OWVAR 38
 720: PUSH
 721: LD_INT 1
 723: ST_TO_ADDR
// v = CreateVehicle ;
 724: LD_ADDR_VAR 0 1
 728: PUSH
 729: CALL_OW 45
 733: ST_TO_ADDR
// PlaceUnitXY ( v , 108 , 23 , false ) ;
 734: LD_VAR 0 1
 738: PPUSH
 739: LD_INT 108
 741: PPUSH
 742: LD_INT 23
 744: PPUSH
 745: LD_INT 0
 747: PPUSH
 748: CALL_OW 48
// SetFuel ( v , 20 ) ;
 752: LD_VAR 0 1
 756: PPUSH
 757: LD_INT 20
 759: PPUSH
 760: CALL_OW 240
// PlaceHumanInUnit ( Eddings , v ) ;
 764: LD_EXP 2
 768: PPUSH
 769: LD_VAR 0 1
 773: PPUSH
 774: CALL_OW 52
// ComMoveXY ( v , 95 , 10 ) ;
 778: LD_VAR 0 1
 782: PPUSH
 783: LD_INT 95
 785: PPUSH
 786: LD_INT 10
 788: PPUSH
 789: CALL_OW 111
// InGameOn ;
 793: CALL_OW 8
// CenterOnUnits ( v ) ;
 797: LD_VAR 0 1
 801: PPUSH
 802: CALL_OW 85
// Wait ( 0 0$2 ) ;
 806: LD_INT 70
 808: PPUSH
 809: CALL_OW 67
// CenterOnUnits ( v ) ;
 813: LD_VAR 0 1
 817: PPUSH
 818: CALL_OW 85
// DialogueOn ;
 822: CALL_OW 6
// Say ( Eddings , dg-e-1 ) ;
 826: LD_EXP 2
 830: PPUSH
 831: LD_STRING dg-e-1
 833: PPUSH
 834: CALL_OW 88
// Say ( Alex , dg-a-1 ) ;
 838: LD_EXP 1
 842: PPUSH
 843: LD_STRING dg-a-1
 845: PPUSH
 846: CALL_OW 88
// Say ( Eddings , dg-e-2 ) ;
 850: LD_EXP 2
 854: PPUSH
 855: LD_STRING dg-e-2
 857: PPUSH
 858: CALL_OW 88
// Say ( Alex , dg-a-2 ) ;
 862: LD_EXP 1
 866: PPUSH
 867: LD_STRING dg-a-2
 869: PPUSH
 870: CALL_OW 88
// Say ( Eddings , dg-e-3 ) ;
 874: LD_EXP 2
 878: PPUSH
 879: LD_STRING dg-e-3
 881: PPUSH
 882: CALL_OW 88
// if IsInUnit ( Alex ) then
 886: LD_EXP 1
 890: PPUSH
 891: CALL_OW 310
 895: IFFALSE 913
// CenterOnUnits ( IsInUnit ( Alex ) ) else
 897: LD_EXP 1
 901: PPUSH
 902: CALL_OW 310
 906: PPUSH
 907: CALL_OW 85
 911: GO 922
// CenterOnUnits ( Alex ) ;
 913: LD_EXP 1
 917: PPUSH
 918: CALL_OW 85
// SayRadio ( Hayes , dg-h-1 ) ;
 922: LD_EXP 5
 926: PPUSH
 927: LD_STRING dg-h-1
 929: PPUSH
 930: CALL_OW 94
// Say ( Alex , dg-a-3 ) ;
 934: LD_EXP 1
 938: PPUSH
 939: LD_STRING dg-a-3
 941: PPUSH
 942: CALL_OW 88
// SayRadio ( Hayes , dg-h-2 ) ;
 946: LD_EXP 5
 950: PPUSH
 951: LD_STRING dg-h-2
 953: PPUSH
 954: CALL_OW 94
// SayRadio ( Hayes , dg-h-3 ) ;
 958: LD_EXP 5
 962: PPUSH
 963: LD_STRING dg-h-3
 965: PPUSH
 966: CALL_OW 94
// Say ( Alex , dg-a-4 ) ;
 970: LD_EXP 1
 974: PPUSH
 975: LD_STRING dg-a-4
 977: PPUSH
 978: CALL_OW 88
// DialogueOff ;
 982: CALL_OW 7
// InGameOff ;
 986: CALL_OW 9
// ChangeMissionObjectives ( OTech ) ;
 990: LD_STRING OTech
 992: PPUSH
 993: CALL_OW 337
// SetTech ( tech_Radar , 1 , state_enabled ) ;
 997: LD_INT 6
 999: PPUSH
1000: LD_INT 1
1002: PPUSH
1003: LD_INT 1
1005: PPUSH
1006: CALL_OW 322
// SetTech ( tech_MatDet , 1 , state_enabled ) ;
1010: LD_INT 7
1012: PPUSH
1013: LD_INT 1
1015: PPUSH
1016: LD_INT 1
1018: PPUSH
1019: CALL_OW 322
// SetRestrict ( b_lab_opto , 1 , true ) ;
1023: LD_INT 15
1025: PPUSH
1026: LD_INT 1
1028: PPUSH
1029: LD_INT 1
1031: PPUSH
1032: CALL_OW 324
// SetRestrict ( b_ext_radar , 1 , true ) ;
1036: LD_INT 20
1038: PPUSH
1039: LD_INT 1
1041: PPUSH
1042: LD_INT 1
1044: PPUSH
1045: CALL_OW 324
// end ;
1049: PPOPN 1
1051: END
// export RadarDone , MatDetDone ; on VehicleConstructed ( v , f ) do begin if GetWeapon ( v ) = us_radar and not RadarDone then
1052: LD_VAR 0 1
1056: PPUSH
1057: CALL_OW 264
1061: PUSH
1062: LD_INT 11
1064: EQUAL
1065: PUSH
1066: LD_EXP 9
1070: NOT
1071: AND
1072: IFFALSE 1129
// begin Wait ( 0 0$2 ) ;
1074: LD_INT 70
1076: PPUSH
1077: CALL_OW 67
// CenterOnUnits ( v ) ;
1081: LD_VAR 0 1
1085: PPUSH
1086: CALL_OW 85
// Say ( Eddings , dr-e-1 ) ;
1090: LD_EXP 2
1094: PPUSH
1095: LD_STRING dr-e-1
1097: PPUSH
1098: CALL_OW 88
// Say ( Alex , dr-a-1 ) ;
1102: LD_EXP 1
1106: PPUSH
1107: LD_STRING dr-a-1
1109: PPUSH
1110: CALL_OW 88
// RadarDone = true ;
1114: LD_ADDR_EXP 9
1118: PUSH
1119: LD_INT 1
1121: ST_TO_ADDR
// ChangeMissionObjectives ( ORadarOut ) ;
1122: LD_STRING ORadarOut
1124: PPUSH
1125: CALL_OW 337
// end ; end ;
1129: PPOPN 2
1131: END
// on ResearchComplete ( t , l ) do var f ;
1132: LD_INT 0
1134: PPUSH
// begin if t = tech_MatDet then
1135: LD_VAR 0 1
1139: PUSH
1140: LD_INT 7
1142: EQUAL
1143: IFFALSE 1193
// begin CenterOnUnits ( l ) ;
1145: LD_VAR 0 2
1149: PPUSH
1150: CALL_OW 85
// Say ( Eddings , dr-e-2 ) ;
1154: LD_EXP 2
1158: PPUSH
1159: LD_STRING dr-e-2
1161: PPUSH
1162: CALL_OW 88
// Say ( Alex , dr-a-2 ) ;
1166: LD_EXP 1
1170: PPUSH
1171: LD_STRING dr-a-2
1173: PPUSH
1174: CALL_OW 88
// MatDetDone = true ;
1178: LD_ADDR_EXP 10
1182: PUSH
1183: LD_INT 1
1185: ST_TO_ADDR
// ChangeMissionObjectives ( ODetOut ) ;
1186: LD_STRING ODetOut
1188: PPUSH
1189: CALL_OW 337
// end ; if t = tech_ApeLang then
1193: LD_VAR 0 1
1197: PUSH
1198: LD_INT 1
1200: EQUAL
1201: IFFALSE 1431
// begin CenterOnUnits ( l ) ;
1203: LD_VAR 0 2
1207: PPUSH
1208: CALL_OW 85
// if IsInUnit ( Sancho ) = l then
1212: LD_EXP 3
1216: PPUSH
1217: CALL_OW 310
1221: PUSH
1222: LD_VAR 0 2
1226: EQUAL
1227: IFFALSE 1243
// Say ( Sancho , dl-s-1 ) else
1229: LD_EXP 3
1233: PPUSH
1234: LD_STRING dl-s-1
1236: PPUSH
1237: CALL_OW 88
1241: GO 1276
// begin Say ( UnitsInside ( l ) [ 1 ] , dl-n-1 ) ;
1243: LD_VAR 0 2
1247: PPUSH
1248: CALL_OW 313
1252: PUSH
1253: LD_INT 1
1255: ARRAY
1256: PPUSH
1257: LD_STRING dl-n-1
1259: PPUSH
1260: CALL_OW 88
// Say ( Sancho , dl-s-1a ) ;
1264: LD_EXP 3
1268: PPUSH
1269: LD_STRING dl-s-1a
1271: PPUSH
1272: CALL_OW 88
// end ; Say ( Alex , dl-a-1 ) ;
1276: LD_EXP 1
1280: PPUSH
1281: LD_STRING dl-a-1
1283: PPUSH
1284: CALL_OW 88
// Say ( Sancho , dl-s-2 ) ;
1288: LD_EXP 3
1292: PPUSH
1293: LD_STRING dl-s-2
1295: PPUSH
1296: CALL_OW 88
// Say ( Alex , dl-a-2 ) ;
1300: LD_EXP 1
1304: PPUSH
1305: LD_STRING dl-a-2
1307: PPUSH
1308: CALL_OW 88
// Say ( Sancho , dl-s-3 ) ;
1312: LD_EXP 3
1316: PPUSH
1317: LD_STRING dl-s-3
1319: PPUSH
1320: CALL_OW 88
// Say ( Alex , dl-a-3 ) ;
1324: LD_EXP 1
1328: PPUSH
1329: LD_STRING dl-a-3
1331: PPUSH
1332: CALL_OW 88
// ChangeMissionObjectives ( MTame ) ;
1336: LD_STRING MTame
1338: PPUSH
1339: CALL_OW 337
// Wait ( 0 0$10 ) ;
1343: LD_INT 350
1345: PPUSH
1346: CALL_OW 67
// f = FilterAllUnits ( [ [ f_sex , 2 ] , [ f_side , 1 ] , [ f_ok ] ] ) diff Alex ;
1350: LD_ADDR_VAR 0 3
1354: PUSH
1355: LD_INT 26
1357: PUSH
1358: LD_INT 2
1360: PUSH
1361: EMPTY
1362: LIST
1363: LIST
1364: PUSH
1365: LD_INT 22
1367: PUSH
1368: LD_INT 1
1370: PUSH
1371: EMPTY
1372: LIST
1373: LIST
1374: PUSH
1375: LD_INT 50
1377: PUSH
1378: EMPTY
1379: LIST
1380: PUSH
1381: EMPTY
1382: LIST
1383: LIST
1384: LIST
1385: PPUSH
1386: CALL_OW 69
1390: PUSH
1391: LD_EXP 1
1395: DIFF
1396: ST_TO_ADDR
// if f then
1397: LD_VAR 0 3
1401: IFFALSE 1431
// begin Say ( f [ 1 ] , dl-f-1 ) ;
1403: LD_VAR 0 3
1407: PUSH
1408: LD_INT 1
1410: ARRAY
1411: PPUSH
1412: LD_STRING dl-f-1
1414: PPUSH
1415: CALL_OW 88
// Say ( Alex , dl-a-4 ) ;
1419: LD_EXP 1
1423: PPUSH
1424: LD_STRING dl-a-4
1426: PPUSH
1427: CALL_OW 88
// end ; end ; end ;
1431: PPOPN 3
1433: END
// every 1 1$0 do
1434: GO 1436
1436: DISABLE
// begin DialogueOn ;
1437: CALL_OW 6
// Say ( Alex , ds-a-1 ) ;
1441: LD_EXP 1
1445: PPUSH
1446: LD_STRING ds-a-1
1448: PPUSH
1449: CALL_OW 88
// Say ( Eddings , ds-e-1 ) ;
1453: LD_EXP 2
1457: PPUSH
1458: LD_STRING ds-e-1
1460: PPUSH
1461: CALL_OW 88
// Say ( Alex , ds-a-2 ) ;
1465: LD_EXP 1
1469: PPUSH
1470: LD_STRING ds-a-2
1472: PPUSH
1473: CALL_OW 88
// Say ( Eddings , ds-e-2 ) ;
1477: LD_EXP 2
1481: PPUSH
1482: LD_STRING ds-e-2
1484: PPUSH
1485: CALL_OW 88
// Say ( Alex , ds-a-3 ) ;
1489: LD_EXP 1
1493: PPUSH
1494: LD_STRING ds-a-3
1496: PPUSH
1497: CALL_OW 88
// DialogueOff ;
1501: CALL_OW 7
// SetTech ( tech_SolPow , 1 , state_enabled ) ;
1505: LD_INT 35
1507: PPUSH
1508: LD_INT 1
1510: PPUSH
1511: LD_INT 1
1513: PPUSH
1514: CALL_OW 322
// SetTech ( tech_SolEng , 1 , state_enabled ) ;
1518: LD_INT 45
1520: PPUSH
1521: LD_INT 1
1523: PPUSH
1524: LD_INT 1
1526: PPUSH
1527: CALL_OW 322
// SetRestrict ( 14 , 1 , true ) ;
1531: LD_INT 14
1533: PPUSH
1534: LD_INT 1
1536: PPUSH
1537: LD_INT 1
1539: PPUSH
1540: CALL_OW 324
// SetRestrict ( b_solar_power , 1 , true ) ;
1544: LD_INT 27
1546: PPUSH
1547: LD_INT 1
1549: PPUSH
1550: LD_INT 1
1552: PPUSH
1553: CALL_OW 324
// end ;
1557: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 8 ] ] ) do var s , c ;
1558: LD_INT 22
1560: PUSH
1561: LD_INT 7
1563: PUSH
1564: EMPTY
1565: LIST
1566: LIST
1567: PUSH
1568: LD_INT 101
1570: PUSH
1571: LD_INT 8
1573: PUSH
1574: EMPTY
1575: LIST
1576: LIST
1577: PUSH
1578: EMPTY
1579: LIST
1580: LIST
1581: PPUSH
1582: CALL_OW 69
1586: IFFALSE 1799
1588: GO 1590
1590: DISABLE
1591: LD_INT 0
1593: PPUSH
1594: PPUSH
// begin s = FilterAllUnits ( [ [ f_side , 7 ] , [ f_see , 8 ] ] ) ;
1595: LD_ADDR_VAR 0 1
1599: PUSH
1600: LD_INT 22
1602: PUSH
1603: LD_INT 7
1605: PUSH
1606: EMPTY
1607: LIST
1608: LIST
1609: PUSH
1610: LD_INT 101
1612: PUSH
1613: LD_INT 8
1615: PUSH
1616: EMPTY
1617: LIST
1618: LIST
1619: PUSH
1620: EMPTY
1621: LIST
1622: LIST
1623: PPUSH
1624: CALL_OW 69
1628: ST_TO_ADDR
// c = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 1 ] ) , s [ 1 ] ) ;
1629: LD_ADDR_VAR 0 2
1633: PUSH
1634: LD_INT 22
1636: PUSH
1637: LD_INT 1
1639: PUSH
1640: EMPTY
1641: LIST
1642: LIST
1643: PPUSH
1644: CALL_OW 69
1648: PPUSH
1649: LD_VAR 0 1
1653: PUSH
1654: LD_INT 1
1656: ARRAY
1657: PPUSH
1658: CALL_OW 74
1662: ST_TO_ADDR
// if GetType ( c ) = unit_vehicle then
1663: LD_VAR 0 2
1667: PPUSH
1668: CALL_OW 247
1672: PUSH
1673: LD_INT 2
1675: EQUAL
1676: IFFALSE 1693
// c = IsDrivenBy ( c ) ;
1678: LD_ADDR_VAR 0 2
1682: PUSH
1683: LD_VAR 0 2
1687: PPUSH
1688: CALL_OW 311
1692: ST_TO_ADDR
// DialogueOn ;
1693: CALL_OW 6
// CenterOnUnits ( s ) ;
1697: LD_VAR 0 1
1701: PPUSH
1702: CALL_OW 85
// if not c = Alex then
1706: LD_VAR 0 2
1710: PUSH
1711: LD_EXP 1
1715: EQUAL
1716: NOT
1717: IFFALSE 1733
// Say ( c , dd-s-1 ) else
1719: LD_VAR 0 2
1723: PPUSH
1724: LD_STRING dd-s-1
1726: PPUSH
1727: CALL_OW 88
1731: GO 1745
// Say ( Alex , dd-s-a ) ;
1733: LD_EXP 1
1737: PPUSH
1738: LD_STRING dd-s-a
1740: PPUSH
1741: CALL_OW 88
// Say ( Alex , dd-a-1 ) ;
1745: LD_EXP 1
1749: PPUSH
1750: LD_STRING dd-a-1
1752: PPUSH
1753: CALL_OW 88
// SayRadio ( Hayes , dd-h-1 ) ;
1757: LD_EXP 5
1761: PPUSH
1762: LD_STRING dd-h-1
1764: PPUSH
1765: CALL_OW 94
// Say ( Alex , dd-a-2 ) ;
1769: LD_EXP 1
1773: PPUSH
1774: LD_STRING dd-a-2
1776: PPUSH
1777: CALL_OW 88
// Query ( Q1 ) ;
1781: LD_STRING Q1
1783: PPUSH
1784: CALL_OW 97
// ChangeMissionObjectives ( ORaid ) ;
1788: LD_STRING ORaid
1790: PPUSH
1791: CALL_OW 337
// DialogueOff ;
1795: CALL_OW 7
// end ;
1799: PPOPN 2
1801: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) do
1802: LD_INT 22
1804: PUSH
1805: LD_INT 1
1807: PUSH
1808: EMPTY
1809: LIST
1810: LIST
1811: PUSH
1812: LD_INT 101
1814: PUSH
1815: LD_INT 7
1817: PUSH
1818: EMPTY
1819: LIST
1820: LIST
1821: PUSH
1822: EMPTY
1823: LIST
1824: LIST
1825: PPUSH
1826: CALL_OW 69
1830: IFFALSE 1913
1832: GO 1834
1834: DISABLE
// begin while FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) do
1835: LD_INT 22
1837: PUSH
1838: LD_INT 1
1840: PUSH
1841: EMPTY
1842: LIST
1843: LIST
1844: PUSH
1845: LD_INT 101
1847: PUSH
1848: LD_INT 7
1850: PUSH
1851: EMPTY
1852: LIST
1853: LIST
1854: PUSH
1855: EMPTY
1856: LIST
1857: LIST
1858: PPUSH
1859: CALL_OW 69
1863: IFFALSE 1874
// Wait ( 0 0$2 ) ;
1865: LD_INT 70
1867: PPUSH
1868: CALL_OW 67
1872: GO 1835
// Wait ( 0 0$5 ) ;
1874: LD_INT 175
1876: PPUSH
1877: CALL_OW 67
// DialogueOn ;
1881: CALL_OW 6
// SayRadio ( Kuronski , dd-k-1 ) ;
1885: LD_EXP 13
1889: PPUSH
1890: LD_STRING dd-k-1
1892: PPUSH
1893: CALL_OW 94
// DialogueOff ;
1897: CALL_OW 7
// Diversion ;
1901: CALL 4483 0 0
// BaseFound = true ;
1905: LD_ADDR_EXP 8
1909: PUSH
1910: LD_INT 1
1912: ST_TO_ADDR
// end ;
1913: END
// export ApemanEngineer , SanchoSaved ; every 10 10$30 do
1914: GO 1916
1916: DISABLE
// begin PlaceUnitXY ( Sancho , 147 , 97 , false ) ;
1917: LD_EXP 3
1921: PPUSH
1922: LD_INT 147
1924: PPUSH
1925: LD_INT 97
1927: PPUSH
1928: LD_INT 0
1930: PPUSH
1931: CALL_OW 48
// DialogueOn ;
1935: CALL_OW 6
// SayRadio ( Sancho , dh-s-1 ) ;
1939: LD_EXP 3
1943: PPUSH
1944: LD_STRING dh-s-1
1946: PPUSH
1947: CALL_OW 94
// Say ( Alex , dh-a-1 ) ;
1951: LD_EXP 1
1955: PPUSH
1956: LD_STRING dh-a-1
1958: PPUSH
1959: CALL_OW 88
// SayRadio ( Sancho , dh-s-2 ) ;
1963: LD_EXP 3
1967: PPUSH
1968: LD_STRING dh-s-2
1970: PPUSH
1971: CALL_OW 94
// Say ( Alex , dh-a-2 ) ;
1975: LD_EXP 1
1979: PPUSH
1980: LD_STRING dh-a-2
1982: PPUSH
1983: CALL_OW 88
// if not RadarDone then
1987: LD_EXP 9
1991: NOT
1992: IFFALSE 2018
// begin Say ( Alex , dh-a-3 ) ;
1994: LD_EXP 1
1998: PPUSH
1999: LD_STRING dh-a-3
2001: PPUSH
2002: CALL_OW 88
// Say ( Eddings , dh-e-1 ) ;
2006: LD_EXP 2
2010: PPUSH
2011: LD_STRING dh-e-1
2013: PPUSH
2014: CALL_OW 88
// end ; DialogueOff ;
2018: CALL_OW 7
// ChangeMissionObjectives ( MSancho ) ;
2022: LD_STRING MSancho
2024: PPUSH
2025: CALL_OW 337
// ComMoveXY ( Sancho , 141 , 98 ) ;
2029: LD_EXP 3
2033: PPUSH
2034: LD_INT 141
2036: PPUSH
2037: LD_INT 98
2039: PPUSH
2040: CALL_OW 111
// AddComHold ( Sancho ) ;
2044: LD_EXP 3
2048: PPUSH
2049: CALL_OW 200
// end ;
2053: END
// every 0 0$1 trigger See ( 8 , Sancho ) do var u ;
2054: LD_INT 8
2056: PPUSH
2057: LD_EXP 3
2061: PPUSH
2062: CALL_OW 292
2066: IFFALSE 2288
2068: GO 2070
2070: DISABLE
2071: LD_INT 0
2073: PPUSH
// begin u = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 1 ] ) , Sancho ) ;
2074: LD_ADDR_VAR 0 1
2078: PUSH
2079: LD_INT 22
2081: PUSH
2082: LD_INT 1
2084: PUSH
2085: EMPTY
2086: LIST
2087: LIST
2088: PPUSH
2089: CALL_OW 69
2093: PPUSH
2094: LD_EXP 3
2098: PPUSH
2099: CALL_OW 74
2103: ST_TO_ADDR
// if GetType ( u ) = unit_vehicle then
2104: LD_VAR 0 1
2108: PPUSH
2109: CALL_OW 247
2113: PUSH
2114: LD_INT 2
2116: EQUAL
2117: IFFALSE 2134
// u = IsDrivenBy ( u ) ;
2119: LD_ADDR_VAR 0 1
2123: PUSH
2124: LD_VAR 0 1
2128: PPUSH
2129: CALL_OW 311
2133: ST_TO_ADDR
// CenterOnUnits ( Sancho ) ;
2134: LD_EXP 3
2138: PPUSH
2139: CALL_OW 85
// DialogueOn ;
2143: CALL_OW 6
// if u <> Alex then
2147: LD_VAR 0 1
2151: PUSH
2152: LD_EXP 1
2156: NONEQUAL
2157: IFFALSE 2171
// Say ( u , dm-u-1 ) ;
2159: LD_VAR 0 1
2163: PPUSH
2164: LD_STRING dm-u-1
2166: PPUSH
2167: CALL_OW 88
// Say ( Alex , dm-a-1 ) ;
2171: LD_EXP 1
2175: PPUSH
2176: LD_STRING dm-a-1
2178: PPUSH
2179: CALL_OW 88
// Say ( Sancho , dm-s-1 ) ;
2183: LD_EXP 3
2187: PPUSH
2188: LD_STRING dm-s-1
2190: PPUSH
2191: CALL_OW 88
// Say ( Alex , dm-a-2 ) ;
2195: LD_EXP 1
2199: PPUSH
2200: LD_STRING dm-a-2
2202: PPUSH
2203: CALL_OW 88
// Say ( Sancho , dm-s-2 ) ;
2207: LD_EXP 3
2211: PPUSH
2212: LD_STRING dm-s-2
2214: PPUSH
2215: CALL_OW 88
// Say ( Alex , dm-a-3 ) ;
2219: LD_EXP 1
2223: PPUSH
2224: LD_STRING dm-a-3
2226: PPUSH
2227: CALL_OW 88
// DialogueOff ;
2231: CALL_OW 7
// SetSide ( Sancho , 1 ) ;
2235: LD_EXP 3
2239: PPUSH
2240: LD_INT 1
2242: PPUSH
2243: CALL_OW 235
// SanchoSaved = true ;
2247: LD_ADDR_EXP 12
2251: PUSH
2252: LD_INT 1
2254: ST_TO_ADDR
// SetTech ( tech_ApeLang , 1 , state_enabled ) ;
2255: LD_INT 1
2257: PPUSH
2258: LD_INT 1
2260: PPUSH
2261: LD_INT 1
2263: PPUSH
2264: CALL_OW 322
// SetTech ( tech_ApePsych , 1 , state_enabled ) ;
2268: LD_INT 2
2270: PPUSH
2271: LD_INT 1
2273: PPUSH
2274: LD_INT 1
2276: PPUSH
2277: CALL_OW 322
// ChangeMissionObjectives ( MApemen ) ;
2281: LD_STRING MApemen
2283: PPUSH
2284: CALL_OW 337
// end ;
2288: PPOPN 1
2290: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_apeman ] ] ) do var a ;
2291: LD_INT 22
2293: PUSH
2294: LD_INT 1
2296: PUSH
2297: EMPTY
2298: LIST
2299: LIST
2300: PUSH
2301: LD_INT 25
2303: PUSH
2304: LD_INT 12
2306: PUSH
2307: EMPTY
2308: LIST
2309: LIST
2310: PUSH
2311: EMPTY
2312: LIST
2313: LIST
2314: PPUSH
2315: CALL_OW 69
2319: IFFALSE 2414
2321: GO 2323
2323: DISABLE
2324: LD_INT 0
2326: PPUSH
// begin a = FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_apeman ] ] ) ;
2327: LD_ADDR_VAR 0 1
2331: PUSH
2332: LD_INT 22
2334: PUSH
2335: LD_INT 1
2337: PUSH
2338: EMPTY
2339: LIST
2340: LIST
2341: PUSH
2342: LD_INT 25
2344: PUSH
2345: LD_INT 12
2347: PUSH
2348: EMPTY
2349: LIST
2350: LIST
2351: PUSH
2352: EMPTY
2353: LIST
2354: LIST
2355: PPUSH
2356: CALL_OW 69
2360: ST_TO_ADDR
// CenterOnUnits ( a ) ;
2361: LD_VAR 0 1
2365: PPUSH
2366: CALL_OW 85
// DialogueOn ;
2370: CALL_OW 6
// Say ( Sancho , dt-s-1 ) ;
2374: LD_EXP 3
2378: PPUSH
2379: LD_STRING dt-s-1
2381: PPUSH
2382: CALL_OW 88
// Say ( Eddings , dt-e-1 ) ;
2386: LD_EXP 2
2390: PPUSH
2391: LD_STRING dt-e-1
2393: PPUSH
2394: CALL_OW 88
// Say ( Alex , dt-a-1 ) ;
2398: LD_EXP 1
2402: PPUSH
2403: LD_STRING dt-a-1
2405: PPUSH
2406: CALL_OW 88
// DialogueOff ;
2410: CALL_OW 7
// end ;
2414: PPOPN 1
2416: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_apeman_engineer ] ] ) do
2417: LD_INT 22
2419: PUSH
2420: LD_INT 1
2422: PUSH
2423: EMPTY
2424: LIST
2425: LIST
2426: PUSH
2427: LD_INT 25
2429: PUSH
2430: LD_INT 16
2432: PUSH
2433: EMPTY
2434: LIST
2435: LIST
2436: PUSH
2437: EMPTY
2438: LIST
2439: LIST
2440: PPUSH
2441: CALL_OW 69
2445: IFFALSE 2465
2447: GO 2449
2449: DISABLE
// begin ChangeMissionObjectives ( MTameOut ) ;
2450: LD_STRING MTameOut
2452: PPUSH
2453: CALL_OW 337
// ApemanEngineer = true ;
2457: LD_ADDR_EXP 11
2461: PUSH
2462: LD_INT 1
2464: ST_TO_ADDR
// end ; end_of_file
2465: END
// export Kuronski ; var Engineer , Defences , RepairStrategy ; var Defenders , Enemies , DefenceStrategy ; var BaseStrategy ; export function PrepareBase ; var i , h , s ; var j , m ; begin
2466: LD_INT 0
2468: PPUSH
2469: PPUSH
2470: PPUSH
2471: PPUSH
2472: PPUSH
2473: PPUSH
// uc_side = 7 ;
2474: LD_ADDR_OWVAR 20
2478: PUSH
2479: LD_INT 7
2481: ST_TO_ADDR
// uc_nation = 1 ;
2482: LD_ADDR_OWVAR 21
2486: PUSH
2487: LD_INT 1
2489: ST_TO_ADDR
// s = [ Rand ( 2 , 4 ) , Rand ( 2 , 5 ) , Rand ( 3 , 5 ) ] [ difficulty ] ;
2490: LD_ADDR_VAR 0 4
2494: PUSH
2495: LD_INT 2
2497: PPUSH
2498: LD_INT 4
2500: PPUSH
2501: CALL_OW 12
2505: PUSH
2506: LD_INT 2
2508: PPUSH
2509: LD_INT 5
2511: PPUSH
2512: CALL_OW 12
2516: PUSH
2517: LD_INT 3
2519: PPUSH
2520: LD_INT 5
2522: PPUSH
2523: CALL_OW 12
2527: PUSH
2528: EMPTY
2529: LIST
2530: LIST
2531: LIST
2532: PUSH
2533: LD_OWVAR 67
2537: ARRAY
2538: ST_TO_ADDR
// Defences = FilterUnitsInArea ( GreenBase , [ [ f_side , 7 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] ] ] ) ;
2539: LD_ADDR_LOC 2
2543: PUSH
2544: LD_INT 1
2546: PPUSH
2547: LD_INT 22
2549: PUSH
2550: LD_INT 7
2552: PUSH
2553: EMPTY
2554: LIST
2555: LIST
2556: PUSH
2557: LD_INT 2
2559: PUSH
2560: LD_INT 30
2562: PUSH
2563: LD_INT 31
2565: PUSH
2566: EMPTY
2567: LIST
2568: LIST
2569: PUSH
2570: LD_INT 30
2572: PUSH
2573: LD_INT 32
2575: PUSH
2576: EMPTY
2577: LIST
2578: LIST
2579: PUSH
2580: EMPTY
2581: LIST
2582: LIST
2583: LIST
2584: PUSH
2585: EMPTY
2586: LIST
2587: LIST
2588: PPUSH
2589: CALL_OW 70
2593: ST_TO_ADDR
// for i in Defences do
2594: LD_ADDR_VAR 0 2
2598: PUSH
2599: LD_LOC 2
2603: PUSH
2604: FOR_IN
2605: IFFALSE 2657
// begin InitHc ;
2607: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
2611: LD_INT 1
2613: PPUSH
2614: LD_INT 2
2616: PPUSH
2617: CALL_OW 12
2621: PPUSH
2622: LD_VAR 0 4
2626: PPUSH
2627: CALL_OW 381
// h = CreateHuman ;
2631: LD_ADDR_VAR 0 3
2635: PUSH
2636: CALL_OW 44
2640: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
2641: LD_VAR 0 3
2645: PPUSH
2646: LD_VAR 0 2
2650: PPUSH
2651: CALL_OW 52
// end ;
2655: GO 2604
2657: POP
2658: POP
// for i in FilterUnitsInArea ( GreenBase , [ [ f_side , 7 ] , [ f_type , unit_vehicle ] ] ) diff DivVeh do
2659: LD_ADDR_VAR 0 2
2663: PUSH
2664: LD_INT 1
2666: PPUSH
2667: LD_INT 22
2669: PUSH
2670: LD_INT 7
2672: PUSH
2673: EMPTY
2674: LIST
2675: LIST
2676: PUSH
2677: LD_INT 21
2679: PUSH
2680: LD_INT 2
2682: PUSH
2683: EMPTY
2684: LIST
2685: LIST
2686: PUSH
2687: EMPTY
2688: LIST
2689: LIST
2690: PPUSH
2691: CALL_OW 70
2695: PUSH
2696: LD_INT 25
2698: DIFF
2699: PUSH
2700: FOR_IN
2701: IFFALSE 2753
// begin InitHc ;
2703: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
2707: LD_INT 1
2709: PPUSH
2710: LD_INT 2
2712: PPUSH
2713: CALL_OW 12
2717: PPUSH
2718: LD_VAR 0 4
2722: PPUSH
2723: CALL_OW 383
// h = CreateHuman ;
2727: LD_ADDR_VAR 0 3
2731: PUSH
2732: CALL_OW 44
2736: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
2737: LD_VAR 0 3
2741: PPUSH
2742: LD_VAR 0 2
2746: PPUSH
2747: CALL_OW 52
// end ;
2751: GO 2700
2753: POP
2754: POP
// InitHc ;
2755: CALL_OW 19
// PrepareEngineer ( Rand ( 1 , 2 ) , s ) ;
2759: LD_INT 1
2761: PPUSH
2762: LD_INT 2
2764: PPUSH
2765: CALL_OW 12
2769: PPUSH
2770: LD_VAR 0 4
2774: PPUSH
2775: CALL_OW 382
// Engineer = CreateHuman ;
2779: LD_ADDR_LOC 1
2783: PUSH
2784: CALL_OW 44
2788: ST_TO_ADDR
// PlaceUnitXY ( h , 105 , 110 , false ) ;
2789: LD_VAR 0 3
2793: PPUSH
2794: LD_INT 105
2796: PPUSH
2797: LD_INT 110
2799: PPUSH
2800: LD_INT 0
2802: PPUSH
2803: CALL_OW 48
// for i = 1 to 2 do
2807: LD_ADDR_VAR 0 2
2811: PUSH
2812: DOUBLE
2813: LD_INT 1
2815: DEC
2816: ST_TO_ADDR
2817: LD_INT 2
2819: PUSH
2820: FOR_TO
2821: IFFALSE 2871
// begin InitHc ;
2823: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
2827: LD_INT 1
2829: PPUSH
2830: LD_INT 2
2832: PPUSH
2833: CALL_OW 12
2837: PPUSH
2838: LD_VAR 0 4
2842: PPUSH
2843: CALL_OW 383
// h = CreateHuman ;
2847: LD_ADDR_VAR 0 3
2851: PUSH
2852: CALL_OW 44
2856: ST_TO_ADDR
// PlaceHumanInUnit ( h , g_work ) ;
2857: LD_VAR 0 3
2861: PPUSH
2862: LD_INT 2
2864: PPUSH
2865: CALL_OW 52
// end ;
2869: GO 2820
2871: POP
2872: POP
// Kuronski = NewCharacter ( Kuronski ) ;
2873: LD_ADDR_EXP 13
2877: PUSH
2878: LD_STRING Kuronski
2880: PPUSH
2881: CALL_OW 25
2885: ST_TO_ADDR
// BaseStrategy = McBase ( 1 , Engineer , FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_building ] ] ) , [ ] , [ ] , [ mc_base_cont ] ) ;
2886: LD_ADDR_LOC 7
2890: PUSH
2891: LD_INT 1
2893: PPUSH
2894: LD_LOC 1
2898: PPUSH
2899: LD_INT 22
2901: PUSH
2902: LD_INT 7
2904: PUSH
2905: EMPTY
2906: LIST
2907: LIST
2908: PUSH
2909: LD_INT 21
2911: PUSH
2912: LD_INT 3
2914: PUSH
2915: EMPTY
2916: LIST
2917: LIST
2918: PUSH
2919: EMPTY
2920: LIST
2921: LIST
2922: PPUSH
2923: CALL_OW 69
2927: PPUSH
2928: EMPTY
2929: PPUSH
2930: EMPTY
2931: PPUSH
2932: LD_INT 1
2934: PUSH
2935: EMPTY
2936: LIST
2937: PPUSH
2938: CALL_OW 397
2942: ST_TO_ADDR
// end ;
2943: LD_VAR 0 1
2947: RET
// every 0 0$1 do
2948: GO 2950
2950: DISABLE
// PrepareBase ;
2951: CALL 2466 0 0
2955: END
// every 0 0$1 trigger Engineer do var i ;
2956: LD_LOC 1
2960: IFFALSE 3123
2962: GO 2964
2964: DISABLE
2965: LD_INT 0
2967: PPUSH
// begin enable ;
2968: ENABLE
// if ExistMc ( RepairStrategy ) and FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) then
2969: LD_LOC 3
2973: PPUSH
2974: CALL_OW 386
2978: PUSH
2979: LD_INT 22
2981: PUSH
2982: LD_INT 1
2984: PUSH
2985: EMPTY
2986: LIST
2987: LIST
2988: PUSH
2989: LD_INT 101
2991: PUSH
2992: LD_INT 7
2994: PUSH
2995: EMPTY
2996: LIST
2997: LIST
2998: PUSH
2999: EMPTY
3000: LIST
3001: LIST
3002: PPUSH
3003: CALL_OW 69
3007: AND
3008: IFFALSE 3031
// begin KillMc ( RepairStrategy ) ;
3010: LD_LOC 3
3014: PPUSH
3015: CALL_OW 387
// ComEnterUnit ( Engineer , g_dep ) ;
3019: LD_LOC 1
3023: PPUSH
3024: LD_INT 1
3026: PPUSH
3027: CALL_OW 120
// end ; if not ExistMc ( RepairStrategy ) and not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) then
3031: LD_LOC 3
3035: PPUSH
3036: CALL_OW 386
3040: NOT
3041: PUSH
3042: LD_INT 22
3044: PUSH
3045: LD_INT 1
3047: PUSH
3048: EMPTY
3049: LIST
3050: LIST
3051: PUSH
3052: LD_INT 101
3054: PUSH
3055: LD_INT 7
3057: PUSH
3058: EMPTY
3059: LIST
3060: LIST
3061: PUSH
3062: EMPTY
3063: LIST
3064: LIST
3065: PPUSH
3066: CALL_OW 69
3070: NOT
3071: AND
3072: IFFALSE 3123
// begin ComExitBuilding ( Engineer ) ;
3074: LD_LOC 1
3078: PPUSH
3079: CALL_OW 122
// RepairStrategy = McRepair ( 2 , Engineer , Defences , [ [ mcr_bui_limit , 1000 ] , mcr_area_only ] ) ;
3083: LD_ADDR_LOC 3
3087: PUSH
3088: LD_INT 2
3090: PPUSH
3091: LD_LOC 1
3095: PPUSH
3096: LD_LOC 2
3100: PPUSH
3101: LD_INT 6
3103: PUSH
3104: LD_INT 1000
3106: PUSH
3107: EMPTY
3108: LIST
3109: LIST
3110: PUSH
3111: LD_INT 3
3113: PUSH
3114: EMPTY
3115: LIST
3116: LIST
3117: PPUSH
3118: CALL_OW 414
3122: ST_TO_ADDR
// end ; end ;
3123: PPOPN 1
3125: END
// every 0 0$1 trigger not Engineer do
3126: LD_LOC 1
3130: NOT
3131: IFFALSE 3145
3133: GO 3135
3135: DISABLE
// KillMc ( RepairStrategy ) ;
3136: LD_LOC 3
3140: PPUSH
3141: CALL_OW 387
3145: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do var i , m ;
3146: LD_INT 22
3148: PUSH
3149: LD_INT 7
3151: PUSH
3152: EMPTY
3153: LIST
3154: LIST
3155: PUSH
3156: LD_INT 21
3158: PUSH
3159: LD_INT 2
3161: PUSH
3162: EMPTY
3163: LIST
3164: LIST
3165: PUSH
3166: LD_INT 50
3168: PUSH
3169: EMPTY
3170: LIST
3171: PUSH
3172: EMPTY
3173: LIST
3174: LIST
3175: LIST
3176: PPUSH
3177: CALL_OW 69
3181: IFFALSE 3423
3183: GO 3185
3185: DISABLE
3186: LD_INT 0
3188: PPUSH
3189: PPUSH
// begin enable ;
3190: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_vehicle ] , [ f_ok ] ] ) do
3191: LD_ADDR_VAR 0 1
3195: PUSH
3196: LD_INT 22
3198: PUSH
3199: LD_INT 7
3201: PUSH
3202: EMPTY
3203: LIST
3204: LIST
3205: PUSH
3206: LD_INT 21
3208: PUSH
3209: LD_INT 2
3211: PUSH
3212: EMPTY
3213: LIST
3214: LIST
3215: PUSH
3216: LD_INT 50
3218: PUSH
3219: EMPTY
3220: LIST
3221: PUSH
3222: EMPTY
3223: LIST
3224: LIST
3225: LIST
3226: PPUSH
3227: CALL_OW 69
3231: PUSH
3232: FOR_IN
3233: IFFALSE 3421
// begin if IsDrivenBy ( i ) and GetLives ( i ) < 1000 and not See ( 8 , i ) then
3235: LD_VAR 0 1
3239: PPUSH
3240: CALL_OW 311
3244: PUSH
3245: LD_VAR 0 1
3249: PPUSH
3250: CALL_OW 256
3254: PUSH
3255: LD_INT 1000
3257: LESS
3258: AND
3259: PUSH
3260: LD_INT 8
3262: PPUSH
3263: LD_VAR 0 1
3267: PPUSH
3268: CALL_OW 292
3272: NOT
3273: AND
3274: IFFALSE 3328
// begin m = IsDrivenBy ( i ) ;
3276: LD_ADDR_VAR 0 2
3280: PUSH
3281: LD_VAR 0 1
3285: PPUSH
3286: CALL_OW 311
3290: ST_TO_ADDR
// ComExitVehicle ( m ) ;
3291: LD_VAR 0 2
3295: PPUSH
3296: CALL_OW 121
// AddComRepairVehicle ( m , i ) ;
3300: LD_VAR 0 2
3304: PPUSH
3305: LD_VAR 0 1
3309: PPUSH
3310: CALL_OW 189
// AddComEnterUnit ( m , i ) ;
3314: LD_VAR 0 2
3318: PPUSH
3319: LD_VAR 0 1
3323: PPUSH
3324: CALL_OW 180
// end ; if not IsDrivenBy ( i ) and See ( 8 , i ) then
3328: LD_VAR 0 1
3332: PPUSH
3333: CALL_OW 311
3337: NOT
3338: PUSH
3339: LD_INT 8
3341: PPUSH
3342: LD_VAR 0 1
3346: PPUSH
3347: CALL_OW 292
3351: AND
3352: IFFALSE 3419
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3354: LD_ADDR_VAR 0 2
3358: PUSH
3359: LD_INT 22
3361: PUSH
3362: LD_VAR 0 1
3366: PPUSH
3367: CALL_OW 255
3371: PUSH
3372: EMPTY
3373: LIST
3374: LIST
3375: PUSH
3376: LD_INT 25
3378: PUSH
3379: LD_INT 3
3381: PUSH
3382: EMPTY
3383: LIST
3384: LIST
3385: PUSH
3386: EMPTY
3387: LIST
3388: LIST
3389: PPUSH
3390: CALL_OW 69
3394: PPUSH
3395: LD_VAR 0 1
3399: PPUSH
3400: CALL_OW 74
3404: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3405: LD_VAR 0 2
3409: PPUSH
3410: LD_VAR 0 1
3414: PPUSH
3415: CALL_OW 120
// end ; end ;
3419: GO 3232
3421: POP
3422: POP
// end ;
3423: PPOPN 2
3425: END
// every 0 0$1 do
3426: GO 3428
3428: DISABLE
// Enemies = McRegistry ( 7 , [ [ mc_reg_area_to_protect , GreenBase ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
3429: LD_ADDR_LOC 5
3433: PUSH
3434: LD_INT 7
3436: PPUSH
3437: LD_INT 3
3439: PUSH
3440: LD_INT 1
3442: PUSH
3443: EMPTY
3444: LIST
3445: LIST
3446: PUSH
3447: LD_INT 1
3449: PUSH
3450: LD_INT 35
3452: PUSH
3453: EMPTY
3454: LIST
3455: LIST
3456: PUSH
3457: EMPTY
3458: LIST
3459: LIST
3460: PPUSH
3461: CALL_OW 399
3465: ST_TO_ADDR
3466: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) do var i , t ;
3467: LD_INT 22
3469: PUSH
3470: LD_INT 1
3472: PUSH
3473: EMPTY
3474: LIST
3475: LIST
3476: PUSH
3477: LD_INT 101
3479: PUSH
3480: LD_INT 7
3482: PUSH
3483: EMPTY
3484: LIST
3485: LIST
3486: PUSH
3487: EMPTY
3488: LIST
3489: LIST
3490: PPUSH
3491: CALL_OW 69
3495: IFFALSE 3649
3497: GO 3499
3499: DISABLE
3500: LD_INT 0
3502: PPUSH
3503: PPUSH
// begin enable ;
3504: ENABLE
// if not ExistMc ( DefenceStrategy ) then
3505: LD_LOC 6
3509: PPUSH
3510: CALL_OW 386
3514: NOT
3515: IFFALSE 3605
// begin Defenders = FilterUnitsInArea ( GreenBase , [ [ f_side , 7 ] , [ f_type , unit_vehicle ] ] diff DivVeh ) ;
3517: LD_ADDR_LOC 4
3521: PUSH
3522: LD_INT 1
3524: PPUSH
3525: LD_INT 22
3527: PUSH
3528: LD_INT 7
3530: PUSH
3531: EMPTY
3532: LIST
3533: LIST
3534: PUSH
3535: LD_INT 21
3537: PUSH
3538: LD_INT 2
3540: PUSH
3541: EMPTY
3542: LIST
3543: LIST
3544: PUSH
3545: EMPTY
3546: LIST
3547: LIST
3548: PUSH
3549: LD_INT 25
3551: DIFF
3552: PPUSH
3553: CALL_OW 70
3557: ST_TO_ADDR
// DefenceStrategy = McDefend ( 1 , Enemies , Defenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , GreenBase ] ] ) ;
3558: LD_ADDR_LOC 6
3562: PUSH
3563: LD_INT 1
3565: PPUSH
3566: LD_LOC 5
3570: PPUSH
3571: LD_LOC 4
3575: PPUSH
3576: LD_INT 1
3578: PUSH
3579: LD_INT 200
3581: PUSH
3582: EMPTY
3583: LIST
3584: LIST
3585: PUSH
3586: LD_INT 2
3588: PUSH
3589: LD_INT 1
3591: PUSH
3592: EMPTY
3593: LIST
3594: LIST
3595: PUSH
3596: EMPTY
3597: LIST
3598: LIST
3599: PPUSH
3600: CALL_OW 401
3604: ST_TO_ADDR
// end ; for i in Defenders do
3605: LD_ADDR_VAR 0 1
3609: PUSH
3610: LD_LOC 4
3614: PUSH
3615: FOR_IN
3616: IFFALSE 3647
// if not IsInArea ( i , GreenBase ) then
3618: LD_VAR 0 1
3622: PPUSH
3623: LD_INT 1
3625: PPUSH
3626: CALL_OW 308
3630: NOT
3631: IFFALSE 3645
// ComMoveToArea ( i , GreenBase ) ;
3633: LD_VAR 0 1
3637: PPUSH
3638: LD_INT 1
3640: PPUSH
3641: CALL_OW 113
3645: GO 3615
3647: POP
3648: POP
// end ;
3649: PPOPN 2
3651: END
// every 0 0$1 trigger not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) do var i ;
3652: LD_INT 22
3654: PUSH
3655: LD_INT 1
3657: PUSH
3658: EMPTY
3659: LIST
3660: LIST
3661: PUSH
3662: LD_INT 101
3664: PUSH
3665: LD_INT 7
3667: PUSH
3668: EMPTY
3669: LIST
3670: LIST
3671: PUSH
3672: EMPTY
3673: LIST
3674: LIST
3675: PPUSH
3676: CALL_OW 69
3680: NOT
3681: IFFALSE 3748
3683: GO 3685
3685: DISABLE
3686: LD_INT 0
3688: PPUSH
// begin enable ;
3689: ENABLE
// if ExistMc ( DefenceStrategy ) then
3690: LD_LOC 6
3694: PPUSH
3695: CALL_OW 386
3699: IFFALSE 3746
// begin for i in GetMcUnits ( DefenceStrategy ) do
3701: LD_ADDR_VAR 0 1
3705: PUSH
3706: LD_LOC 6
3710: PPUSH
3711: CALL_OW 389
3715: PUSH
3716: FOR_IN
3717: IFFALSE 3733
// ComMoveToArea ( i , GreenBase ) ;
3719: LD_VAR 0 1
3723: PPUSH
3724: LD_INT 1
3726: PPUSH
3727: CALL_OW 113
3731: GO 3716
3733: POP
3734: POP
// KillMc ( DefenceStrategy ) ;
3735: LD_LOC 6
3739: PPUSH
3740: CALL_OW 387
// end else
3744: GO 3748
// exit ;
3746: GO 3748
// end ;
3748: PPOPN 1
3750: END
// every 10 10$0 do
3751: GO 3753
3753: DISABLE
// begin Wait ( [ 10 10$0 , 5 5$0 , 0 ] [ difficulty ] ) ;
3754: LD_INT 21000
3756: PUSH
3757: LD_INT 10500
3759: PUSH
3760: LD_INT 0
3762: PUSH
3763: EMPTY
3764: LIST
3765: LIST
3766: LIST
3767: PUSH
3768: LD_OWVAR 67
3772: ARRAY
3773: PPUSH
3774: CALL_OW 67
// if not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) and GetSide ( g_work ) = 7 then
3778: LD_INT 22
3780: PUSH
3781: LD_INT 1
3783: PUSH
3784: EMPTY
3785: LIST
3786: LIST
3787: PUSH
3788: LD_INT 101
3790: PUSH
3791: LD_INT 7
3793: PUSH
3794: EMPTY
3795: LIST
3796: LIST
3797: PUSH
3798: EMPTY
3799: LIST
3800: LIST
3801: PPUSH
3802: CALL_OW 69
3806: NOT
3807: PUSH
3808: LD_INT 2
3810: PPUSH
3811: CALL_OW 255
3815: PUSH
3816: LD_INT 7
3818: EQUAL
3819: AND
3820: IFFALSE 3831
// ComUpgrade ( g_work ) else
3822: LD_INT 2
3824: PPUSH
3825: CALL_OW 146
3829: GO 3876
// begin repeat Wait ( 0 0$1 ) until not FilterAllUnits ( [ [ f_side , 1 ] , [ f_see , 7 ] ] ) ;
3831: LD_INT 35
3833: PPUSH
3834: CALL_OW 67
3838: LD_INT 22
3840: PUSH
3841: LD_INT 1
3843: PUSH
3844: EMPTY
3845: LIST
3846: LIST
3847: PUSH
3848: LD_INT 101
3850: PUSH
3851: LD_INT 7
3853: PUSH
3854: EMPTY
3855: LIST
3856: LIST
3857: PUSH
3858: EMPTY
3859: LIST
3860: LIST
3861: PPUSH
3862: CALL_OW 69
3866: NOT
3867: IFFALSE 3831
// ComUpgrade ( g_work ) ;
3869: LD_INT 2
3871: PPUSH
3872: CALL_OW 146
// end ; end ;
3876: END
// on UpgradeComplete ( b ) do begin if GetBType ( b ) = b_factory and GetSide ( b ) = 7 then
3877: LD_VAR 0 1
3881: PPUSH
3882: CALL_OW 266
3886: PUSH
3887: LD_INT 3
3889: EQUAL
3890: PUSH
3891: LD_VAR 0 1
3895: PPUSH
3896: CALL_OW 255
3900: PUSH
3901: LD_INT 7
3903: EQUAL
3904: AND
3905: IFFALSE 3969
// begin ComPlaceWeapon ( g_b1 , us_gatling_gun ) ;
3907: LD_INT 6
3909: PPUSH
3910: LD_INT 4
3912: PPUSH
3913: CALL_OW 148
// AddComConstruct ( b , us_medium_wheeled , engine_combustion , control_manual , us_gatling_gun ) ;
3917: LD_VAR 0 1
3921: PPUSH
3922: LD_INT 2
3924: PPUSH
3925: LD_INT 1
3927: PPUSH
3928: LD_INT 1
3930: PPUSH
3931: LD_INT 4
3933: PPUSH
3934: CALL_OW 185
// if difficulty > 1 then
3938: LD_OWVAR 67
3942: PUSH
3943: LD_INT 1
3945: GREATER
3946: IFFALSE 3969
// AddComConstruct ( b , us_medium_wheeled , engine_combustion , control_manual , us_gatling_gun ) ;
3948: LD_VAR 0 1
3952: PPUSH
3953: LD_INT 2
3955: PPUSH
3956: LD_INT 1
3958: PPUSH
3959: LD_INT 1
3961: PPUSH
3962: LD_INT 4
3964: PPUSH
3965: CALL_OW 185
// end ; end ;
3969: PPOPN 1
3971: END
// on UnitGoesToRed ( un ) do var m ;
3972: LD_INT 0
3974: PPUSH
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( un ) ] , [ f_type , unit_human ] ] ) , un ) ;
3975: LD_ADDR_VAR 0 2
3979: PUSH
3980: LD_INT 22
3982: PUSH
3983: LD_VAR 0 1
3987: PPUSH
3988: CALL_OW 255
3992: PUSH
3993: EMPTY
3994: LIST
3995: LIST
3996: PUSH
3997: LD_INT 21
3999: PUSH
4000: LD_INT 1
4002: PUSH
4003: EMPTY
4004: LIST
4005: LIST
4006: PUSH
4007: EMPTY
4008: LIST
4009: LIST
4010: PPUSH
4011: CALL_OW 69
4015: PPUSH
4016: LD_VAR 0 1
4020: PPUSH
4021: CALL_OW 74
4025: ST_TO_ADDR
// if GetSide ( un ) = 7 and GetType ( un ) = unit_vehicle then
4026: LD_VAR 0 1
4030: PPUSH
4031: CALL_OW 255
4035: PUSH
4036: LD_INT 7
4038: EQUAL
4039: PUSH
4040: LD_VAR 0 1
4044: PPUSH
4045: CALL_OW 247
4049: PUSH
4050: LD_INT 2
4052: EQUAL
4053: AND
4054: IFFALSE 4080
// begin ComEnterUnit ( m , g_arm ) ;
4056: LD_VAR 0 2
4060: PPUSH
4061: LD_INT 3
4063: PPUSH
4064: CALL_OW 120
// AddComChangeProfession ( m , class_soldier ) ;
4068: LD_VAR 0 2
4072: PPUSH
4073: LD_INT 1
4075: PPUSH
4076: CALL_OW 183
// end ; if un in Defences then
4080: LD_VAR 0 1
4084: PUSH
4085: LD_LOC 2
4089: IN
4090: IFFALSE 4104
// ComEnterUnit ( m , g_arm ) ;
4092: LD_VAR 0 2
4096: PPUSH
4097: LD_INT 3
4099: PPUSH
4100: CALL_OW 120
// end ;
4104: PPOPN 2
4106: END
// export EvacuateBase ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_vehicle ] , [ f_not , [ f_empty ] ] ] ) = 0 and UnitFilter ( Defences , [ f_ok ] ) < 3 do var i ;
4107: LD_INT 22
4109: PUSH
4110: LD_INT 7
4112: PUSH
4113: EMPTY
4114: LIST
4115: LIST
4116: PUSH
4117: LD_INT 21
4119: PUSH
4120: LD_INT 2
4122: PUSH
4123: EMPTY
4124: LIST
4125: LIST
4126: PUSH
4127: LD_INT 3
4129: PUSH
4130: LD_INT 58
4132: PUSH
4133: EMPTY
4134: LIST
4135: PUSH
4136: EMPTY
4137: LIST
4138: LIST
4139: PUSH
4140: EMPTY
4141: LIST
4142: LIST
4143: LIST
4144: PPUSH
4145: CALL_OW 69
4149: PUSH
4150: LD_INT 0
4152: EQUAL
4153: PUSH
4154: LD_LOC 2
4158: PPUSH
4159: LD_INT 50
4161: PUSH
4162: EMPTY
4163: LIST
4164: PPUSH
4165: CALL_OW 72
4169: PUSH
4170: LD_INT 3
4172: LESS
4173: AND
4174: IFFALSE 4415
4176: GO 4178
4178: DISABLE
4179: LD_INT 0
4181: PPUSH
// begin CenterOnXY ( 107 , 111 ) ;
4182: LD_INT 107
4184: PPUSH
4185: LD_INT 111
4187: PPUSH
4188: CALL_OW 84
// DialogueOn ;
4192: CALL_OW 6
// Say ( FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_human ] , [ f_ok ] ] ) [ 1 ] , de-x-1 ) ;
4196: LD_INT 22
4198: PUSH
4199: LD_INT 7
4201: PUSH
4202: EMPTY
4203: LIST
4204: LIST
4205: PUSH
4206: LD_INT 21
4208: PUSH
4209: LD_INT 1
4211: PUSH
4212: EMPTY
4213: LIST
4214: LIST
4215: PUSH
4216: LD_INT 50
4218: PUSH
4219: EMPTY
4220: LIST
4221: PUSH
4222: EMPTY
4223: LIST
4224: LIST
4225: LIST
4226: PPUSH
4227: CALL_OW 69
4231: PUSH
4232: LD_INT 1
4234: ARRAY
4235: PPUSH
4236: LD_STRING de-x-1
4238: PPUSH
4239: CALL_OW 88
// SayRadio ( Kuronski , de-k-1 ) ;
4243: LD_EXP 13
4247: PPUSH
4248: LD_STRING de-k-1
4250: PPUSH
4251: CALL_OW 94
// Say ( Alex , de-a-1 ) ;
4255: LD_EXP 1
4259: PPUSH
4260: LD_STRING de-a-1
4262: PPUSH
4263: CALL_OW 88
// DialogueOff ;
4267: CALL_OW 7
// for i in FilterAllUnits ( [ [ f_side , 7 ] , [ f_type , unit_human ] , [ f_ok ] ] ) do
4271: LD_ADDR_VAR 0 1
4275: PUSH
4276: LD_INT 22
4278: PUSH
4279: LD_INT 7
4281: PUSH
4282: EMPTY
4283: LIST
4284: LIST
4285: PUSH
4286: LD_INT 21
4288: PUSH
4289: LD_INT 1
4291: PUSH
4292: EMPTY
4293: LIST
4294: LIST
4295: PUSH
4296: LD_INT 50
4298: PUSH
4299: EMPTY
4300: LIST
4301: PUSH
4302: EMPTY
4303: LIST
4304: LIST
4305: LIST
4306: PPUSH
4307: CALL_OW 69
4311: PUSH
4312: FOR_IN
4313: IFFALSE 4371
// begin if IsInUnit ( i ) then
4315: LD_VAR 0 1
4319: PPUSH
4320: CALL_OW 310
4324: IFFALSE 4350
// if GetType ( i ) = unit_building then
4326: LD_VAR 0 1
4330: PPUSH
4331: CALL_OW 247
4335: PUSH
4336: LD_INT 3
4338: EQUAL
4339: IFFALSE 4350
// ComExitBuilding ( i ) ;
4341: LD_VAR 0 1
4345: PPUSH
4346: CALL_OW 122
// Wait ( 0 0$0.5 ) ;
4350: LD_INT 18
4352: PPUSH
4353: CALL_OW 67
// ComMoveToArea ( i , GreenExit ) ;
4357: LD_VAR 0 1
4361: PPUSH
4362: LD_INT 2
4364: PPUSH
4365: CALL_OW 113
// end ;
4369: GO 4312
4371: POP
4372: POP
// if GetSide ( DivEng ) = 8 then
4373: LD_EXP 15
4377: PPUSH
4378: CALL_OW 255
4382: PUSH
4383: LD_INT 8
4385: EQUAL
4386: IFFALSE 4400
// SetSide ( DivEng , 1 ) ;
4388: LD_EXP 15
4392: PPUSH
4393: LD_INT 1
4395: PPUSH
4396: CALL_OW 235
// ChangeMissionObjectives ( OCatchOut ) ;
4400: LD_STRING OCatchOut
4402: PPUSH
4403: CALL_OW 337
// EvacuateBase = true ;
4407: LD_ADDR_EXP 14
4411: PUSH
4412: LD_INT 1
4414: ST_TO_ADDR
// end ;
4415: PPOPN 1
4417: END
// every 0 0$1 trigger EvacuateBase do var i ;
4418: LD_EXP 14
4422: IFFALSE 4480
4424: GO 4426
4426: DISABLE
4427: LD_INT 0
4429: PPUSH
// begin enable ;
4430: ENABLE
// for i in FilterUnitsInArea ( GreenExit , [ [ f_side , 7 ] , [ f_ok ] ] ) do
4431: LD_ADDR_VAR 0 1
4435: PUSH
4436: LD_INT 2
4438: PPUSH
4439: LD_INT 22
4441: PUSH
4442: LD_INT 7
4444: PUSH
4445: EMPTY
4446: LIST
4447: LIST
4448: PUSH
4449: LD_INT 50
4451: PUSH
4452: EMPTY
4453: LIST
4454: PUSH
4455: EMPTY
4456: LIST
4457: LIST
4458: PPUSH
4459: CALL_OW 70
4463: PUSH
4464: FOR_IN
4465: IFFALSE 4478
// RemoveUnit ( i ) ;
4467: LD_VAR 0 1
4471: PPUSH
4472: CALL_OW 64
4476: GO 4464
4478: POP
4479: POP
// end ; end_of_file
4480: PPOPN 1
4482: END
// var DismantleBunker , DestroyPower , EngineerReady , Inside ; export DivEng ; export function Diversion ; begin
4483: LD_INT 0
4485: PPUSH
// if TeamAlex then
4486: LD_EXP 6
4490: IFFALSE 4616
// begin DivEng = FindMaxSkill ( TeamAlex , skill_engineering ) ;
4492: LD_ADDR_EXP 15
4496: PUSH
4497: LD_EXP 6
4501: PPUSH
4502: LD_INT 2
4504: PPUSH
4505: CALL_OW 433
4509: ST_TO_ADDR
// case Query ( QDiv ) of 1 :
4510: LD_STRING QDiv
4512: PPUSH
4513: CALL_OW 97
4517: PUSH
4518: LD_INT 1
4520: DOUBLE
4521: EQUAL
4522: IFTRUE 4526
4524: GO 4561
4526: POP
// begin Say ( Alex , dd-a-3a ) ;
4527: LD_EXP 1
4531: PPUSH
4532: LD_STRING dd-a-3a
4534: PPUSH
4535: CALL_OW 88
// SetSide ( DivEng , 8 ) ;
4539: LD_EXP 15
4543: PPUSH
4544: LD_INT 8
4546: PPUSH
4547: CALL_OW 235
// DismantleBunker = true ;
4551: LD_ADDR_LOC 8
4555: PUSH
4556: LD_INT 1
4558: ST_TO_ADDR
// end ; 2 :
4559: GO 4616
4561: LD_INT 2
4563: DOUBLE
4564: EQUAL
4565: IFTRUE 4569
4567: GO 4604
4569: POP
// begin Say ( Alex , dd-a-3b ) ;
4570: LD_EXP 1
4574: PPUSH
4575: LD_STRING dd-a-3b
4577: PPUSH
4578: CALL_OW 88
// SetSide ( DivEng , 8 ) ;
4582: LD_EXP 15
4586: PPUSH
4587: LD_INT 8
4589: PPUSH
4590: CALL_OW 235
// DestroyPower = true ;
4594: LD_ADDR_LOC 9
4598: PUSH
4599: LD_INT 1
4601: ST_TO_ADDR
// end ; 3 :
4602: GO 4616
4604: LD_INT 3
4606: DOUBLE
4607: EQUAL
4608: IFTRUE 4612
4610: GO 4615
4612: POP
// begin end ; end ;
4613: GO 4616
4615: POP
// end ; Say ( Alex , dd-a-4 ) ;
4616: LD_EXP 1
4620: PPUSH
4621: LD_STRING dd-a-4
4623: PPUSH
4624: CALL_OW 88
// SayRadio ( Kuronski , dd-k-2 ) ;
4628: LD_EXP 13
4632: PPUSH
4633: LD_STRING dd-k-2
4635: PPUSH
4636: CALL_OW 94
// if DismantleBunker or DestroyPower then
4640: LD_LOC 8
4644: PUSH
4645: LD_LOC 9
4649: OR
4650: IFFALSE 4703
// begin if IsInUnit ( DivEng ) then
4652: LD_EXP 15
4656: PPUSH
4657: CALL_OW 310
4661: IFFALSE 4681
// begin ComExitVehicle ( DivEng ) ;
4663: LD_EXP 15
4667: PPUSH
4668: CALL_OW 121
// ComExitBuilding ( DivEng ) ;
4672: LD_EXP 15
4676: PPUSH
4677: CALL_OW 122
// end ; Wait ( 0 0$1 ) ;
4681: LD_INT 35
4683: PPUSH
4684: CALL_OW 67
// ComMoveXY ( DivEng , 101 , 110 ) ;
4688: LD_EXP 15
4692: PPUSH
4693: LD_INT 101
4695: PPUSH
4696: LD_INT 110
4698: PPUSH
4699: CALL_OW 111
// end ; end ;
4703: LD_VAR 0 1
4707: RET
// every 0 0$1 trigger See ( 7 , DivEng ) do var x ;
4708: LD_INT 7
4710: PPUSH
4711: LD_EXP 15
4715: PPUSH
4716: CALL_OW 292
4720: IFFALSE 5082
4722: GO 4724
4724: DISABLE
4725: LD_INT 0
4727: PPUSH
// begin x = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 7 ] ) , DivEng ) ;
4728: LD_ADDR_VAR 0 1
4732: PUSH
4733: LD_INT 22
4735: PUSH
4736: LD_INT 7
4738: PUSH
4739: EMPTY
4740: LIST
4741: LIST
4742: PPUSH
4743: CALL_OW 69
4747: PPUSH
4748: LD_EXP 15
4752: PPUSH
4753: CALL_OW 74
4757: ST_TO_ADDR
// if GetType ( x ) = unit_building then
4758: LD_VAR 0 1
4762: PPUSH
4763: CALL_OW 247
4767: PUSH
4768: LD_INT 3
4770: EQUAL
4771: IFFALSE 4792
// x = UnitsInside ( x ) [ 1 ] ;
4773: LD_ADDR_VAR 0 1
4777: PUSH
4778: LD_VAR 0 1
4782: PPUSH
4783: CALL_OW 313
4787: PUSH
4788: LD_INT 1
4790: ARRAY
4791: ST_TO_ADDR
// DialogueOn ;
4792: CALL_OW 6
// CenterOnUnits ( DivEng ) ;
4796: LD_EXP 15
4800: PPUSH
4801: CALL_OW 85
// Say ( DivEng , dx-s-1 ) ;
4805: LD_EXP 15
4809: PPUSH
4810: LD_STRING dx-s-1
4812: PPUSH
4813: CALL_OW 88
// Say ( x , dx-x-1 ) ;
4817: LD_VAR 0 1
4821: PPUSH
4822: LD_STRING dx-x-1
4824: PPUSH
4825: CALL_OW 88
// if GetClass ( DivEng ) = class_engineer then
4829: LD_EXP 15
4833: PPUSH
4834: CALL_OW 257
4838: PUSH
4839: LD_INT 2
4841: EQUAL
4842: IFFALSE 4853
// Query ( QAct ) else
4844: LD_STRING QAct
4846: PPUSH
4847: CALL_OW 97
4851: GO 4860
// Query ( QActAlt ) ;
4853: LD_STRING QActAlt
4855: PPUSH
4856: CALL_OW 97
// DialogueOff ;
4860: CALL_OW 7
// ComMoveXY ( DivEng , 96 , 98 ) ;
4864: LD_EXP 15
4868: PPUSH
4869: LD_INT 96
4871: PPUSH
4872: LD_INT 98
4874: PPUSH
4875: CALL_OW 111
// AddComMoveXY ( DivEng , 119 , 115 ) ;
4879: LD_EXP 15
4883: PPUSH
4884: LD_INT 119
4886: PPUSH
4887: LD_INT 115
4889: PPUSH
4890: CALL_OW 171
// if GetClass ( DivEng ) <> class_engineer then
4894: LD_EXP 15
4898: PPUSH
4899: CALL_OW 257
4903: PUSH
4904: LD_INT 2
4906: NONEQUAL
4907: IFFALSE 5059
// begin Wait ( 0 0$1 ) ;
4909: LD_INT 35
4911: PPUSH
4912: CALL_OW 67
// AddComMoveUnit ( DivEng , g_dep ) ;
4916: LD_EXP 15
4920: PPUSH
4921: LD_INT 1
4923: PPUSH
4924: CALL_OW 172
// repeat Wait ( 0 0$1 ) until GetDistUnits ( DivEng , g_dep ) < 5 ;
4928: LD_INT 35
4930: PPUSH
4931: CALL_OW 67
4935: LD_EXP 15
4939: PPUSH
4940: LD_INT 1
4942: PPUSH
4943: CALL_OW 296
4947: PUSH
4948: LD_INT 5
4950: LESS
4951: IFFALSE 4928
// SetSide ( DivEng , 7 ) ;
4953: LD_EXP 15
4957: PPUSH
4958: LD_INT 7
4960: PPUSH
4961: CALL_OW 235
// ComEnterUnit ( DivEng , g_dep ) ;
4965: LD_EXP 15
4969: PPUSH
4970: LD_INT 1
4972: PPUSH
4973: CALL_OW 120
// AddComChangeProfession ( DivEng , class_engineer ) ;
4977: LD_EXP 15
4981: PPUSH
4982: LD_INT 2
4984: PPUSH
4985: CALL_OW 183
// AddComExitBuilding ( DivEng ) ;
4989: LD_EXP 15
4993: PPUSH
4994: CALL_OW 182
// repeat Wait ( 0 0$1 ) until not IsInUnit ( DivEng ) and GetClass ( DivEng ) = class_engineer ;
4998: LD_INT 35
5000: PPUSH
5001: CALL_OW 67
5005: LD_EXP 15
5009: PPUSH
5010: CALL_OW 310
5014: NOT
5015: PUSH
5016: LD_EXP 15
5020: PPUSH
5021: CALL_OW 257
5025: PUSH
5026: LD_INT 2
5028: EQUAL
5029: AND
5030: IFFALSE 4998
// SetSide ( DivEng , 8 ) ;
5032: LD_EXP 15
5036: PPUSH
5037: LD_INT 8
5039: PPUSH
5040: CALL_OW 235
// AddComMoveXY ( DivEng , 110 , 113 ) ;
5044: LD_EXP 15
5048: PPUSH
5049: LD_INT 110
5051: PPUSH
5052: LD_INT 113
5054: PPUSH
5055: CALL_OW 171
// end ; AddComMoveXY ( DivEng , 110 , 108 ) ;
5059: LD_EXP 15
5063: PPUSH
5064: LD_INT 110
5066: PPUSH
5067: LD_INT 108
5069: PPUSH
5070: CALL_OW 171
// Inside = true ;
5074: LD_ADDR_LOC 11
5078: PUSH
5079: LD_INT 1
5081: ST_TO_ADDR
// end ;
5082: PPOPN 1
5084: END
// every 0 0$1 trigger Inside = 1 and IsSelected ( g_dep ) and GetClass ( DivEng ) = class_engineer do
5085: LD_LOC 11
5089: PUSH
5090: LD_INT 1
5092: EQUAL
5093: PUSH
5094: LD_INT 1
5096: PPUSH
5097: CALL_OW 306
5101: AND
5102: PUSH
5103: LD_EXP 15
5107: PPUSH
5108: CALL_OW 257
5112: PUSH
5113: LD_INT 2
5115: EQUAL
5116: AND
5117: IFFALSE 5489
5119: GO 5121
5121: DISABLE
// begin if DismantleBunker then
5122: LD_LOC 8
5126: IFFALSE 5235
// begin if IsDead ( DivBr ) then
5128: LD_INT 8
5130: PPUSH
5131: CALL_OW 301
5135: IFFALSE 5143
// begin ItWasTooHard ;
5137: CALL 5490 0 0
// exit ;
5141: GO 5489
// end ; AddComDismantle ( DivEng , DivBr ) ;
5143: LD_EXP 15
5147: PPUSH
5148: LD_INT 8
5150: PPUSH
5151: CALL_OW 227
// repeat Wait ( 0 0$1 ) until GetDistUnits ( DivEng , DivBr ) < 3 ;
5155: LD_INT 35
5157: PPUSH
5158: CALL_OW 67
5162: LD_EXP 15
5166: PPUSH
5167: LD_INT 8
5169: PPUSH
5170: CALL_OW 296
5174: PUSH
5175: LD_INT 3
5177: LESS
5178: IFFALSE 5155
// Wait ( 0 0$2 ) ;
5180: LD_INT 70
5182: PPUSH
5183: CALL_OW 67
// ComMoveXY ( DivEng , 112 , 119 ) ;
5187: LD_EXP 15
5191: PPUSH
5192: LD_INT 112
5194: PPUSH
5195: LD_INT 119
5197: PPUSH
5198: CALL_OW 111
// Wait ( 0 0$5 ) ;
5202: LD_INT 175
5204: PPUSH
5205: CALL_OW 67
// MineExplosion ( 125 , 116 , 1 ) ;
5209: LD_INT 125
5211: PPUSH
5212: LD_INT 116
5214: PPUSH
5215: LD_INT 1
5217: PPUSH
5218: CALL_OW 453
// MineExplosion ( 128 , 116 , 1 ) ;
5222: LD_INT 128
5224: PPUSH
5225: LD_INT 116
5227: PPUSH
5228: LD_INT 1
5230: PPUSH
5231: CALL_OW 453
// end ; if DestroyPower then
5235: LD_LOC 9
5239: IFFALSE 5361
// begin if IsDead ( DivPower ) then
5241: LD_INT 4
5243: PPUSH
5244: CALL_OW 301
5248: IFFALSE 5256
// begin ItWasTooHard ;
5250: CALL 5490 0 0
// exit ;
5254: GO 5489
// end ; AddComDismantle ( DivEng , DivPower ) ;
5256: LD_EXP 15
5260: PPUSH
5261: LD_INT 4
5263: PPUSH
5264: CALL_OW 227
// repeat Wait ( 0 0$1 ) until GetDistUnits ( DivEng , DivPower ) < 3 ;
5268: LD_INT 35
5270: PPUSH
5271: CALL_OW 67
5275: LD_EXP 15
5279: PPUSH
5280: LD_INT 4
5282: PPUSH
5283: CALL_OW 296
5287: PUSH
5288: LD_INT 3
5290: LESS
5291: IFFALSE 5268
// Wait ( 0 0$2 ) ;
5293: LD_INT 70
5295: PPUSH
5296: CALL_OW 67
// ComMoveXY ( DivEng , 116 , 118 ) ;
5300: LD_EXP 15
5304: PPUSH
5305: LD_INT 116
5307: PPUSH
5308: LD_INT 118
5310: PPUSH
5311: CALL_OW 111
// Wait ( 0 0$5 ) ;
5315: LD_INT 175
5317: PPUSH
5318: CALL_OW 67
// MineExplosion ( 102 , 98 , 1 ) ;
5322: LD_INT 102
5324: PPUSH
5325: LD_INT 98
5327: PPUSH
5328: LD_INT 1
5330: PPUSH
5331: CALL_OW 453
// MineExplosion ( 103 , 97 , 1 ) ;
5335: LD_INT 103
5337: PPUSH
5338: LD_INT 97
5340: PPUSH
5341: LD_INT 1
5343: PPUSH
5344: CALL_OW 453
// MineExplosion ( 107 , 105 , 1 ) ;
5348: LD_INT 107
5350: PPUSH
5351: LD_INT 105
5353: PPUSH
5354: LD_INT 1
5356: PPUSH
5357: CALL_OW 453
// end ; if DivVeh then
5361: LD_INT 25
5363: IFFALSE 5377
// ComEnterUnit ( DivEng , DivVeh ) ;
5365: LD_EXP 15
5369: PPUSH
5370: LD_INT 25
5372: PPUSH
5373: CALL_OW 120
// AddComMoveXY ( DivEng , 141 , 110 ) ;
5377: LD_EXP 15
5381: PPUSH
5382: LD_INT 141
5384: PPUSH
5385: LD_INT 110
5387: PPUSH
5388: CALL_OW 171
// Say ( FilterAllUnits ( [ [ f_side , 7 ] , [ f_class , class_soldier ] ] ) [ 1 ] , dx-x-2 ) ;
5392: LD_INT 22
5394: PUSH
5395: LD_INT 7
5397: PUSH
5398: EMPTY
5399: LIST
5400: LIST
5401: PUSH
5402: LD_INT 25
5404: PUSH
5405: LD_INT 1
5407: PUSH
5408: EMPTY
5409: LIST
5410: LIST
5411: PUSH
5412: EMPTY
5413: LIST
5414: LIST
5415: PPUSH
5416: CALL_OW 69
5420: PUSH
5421: LD_INT 1
5423: ARRAY
5424: PPUSH
5425: LD_STRING dx-x-2
5427: PPUSH
5428: CALL_OW 88
// SetAttitude ( 7 , 8 , att_enemy , true ) ;
5432: LD_INT 7
5434: PPUSH
5435: LD_INT 8
5437: PPUSH
5438: LD_INT 2
5440: PPUSH
5441: LD_INT 1
5443: PPUSH
5444: CALL_OW 80
// Say ( Alex , dx-a-1 ) ;
5448: LD_EXP 1
5452: PPUSH
5453: LD_STRING dx-a-1
5455: PPUSH
5456: CALL_OW 88
// Wait ( 0 0$2 ) ;
5460: LD_INT 70
5462: PPUSH
5463: CALL_OW 67
// SetSide ( FilterAllUnits ( [ f_side , 8 ] ) , 1 ) ;
5467: LD_INT 22
5469: PUSH
5470: LD_INT 8
5472: PUSH
5473: EMPTY
5474: LIST
5475: LIST
5476: PPUSH
5477: CALL_OW 69
5481: PPUSH
5482: LD_INT 1
5484: PPUSH
5485: CALL_OW 235
// end ;
5489: END
// function ItWasTooHard ; begin
5490: LD_INT 0
5492: PPUSH
// ComMoveXY ( DivEng , 112 , 112 ) ;
5493: LD_EXP 15
5497: PPUSH
5498: LD_INT 112
5500: PPUSH
5501: LD_INT 112
5503: PPUSH
5504: CALL_OW 111
// AddComMoveXY ( DivEng , 96 , 108 ) ;
5508: LD_EXP 15
5512: PPUSH
5513: LD_INT 96
5515: PPUSH
5516: LD_INT 108
5518: PPUSH
5519: CALL_OW 171
// AddComMoveXY ( DivEng , 134 , 113 ) ;
5523: LD_EXP 15
5527: PPUSH
5528: LD_INT 134
5530: PPUSH
5531: LD_INT 113
5533: PPUSH
5534: CALL_OW 171
// AddComMoveXY ( DivEng , 130 , 88 ) ;
5538: LD_EXP 15
5542: PPUSH
5543: LD_INT 130
5545: PPUSH
5546: LD_INT 88
5548: PPUSH
5549: CALL_OW 171
// repeat Wait ( 0 0$4 ) until GetDistUnitXY ( DivEng , 130 , 88 ) < 6 ;
5553: LD_INT 140
5555: PPUSH
5556: CALL_OW 67
5560: LD_EXP 15
5564: PPUSH
5565: LD_INT 130
5567: PPUSH
5568: LD_INT 88
5570: PPUSH
5571: CALL_OW 297
5575: PUSH
5576: LD_INT 6
5578: LESS
5579: IFFALSE 5553
// Say ( DivEng , dx-f-1 ) ;
5581: LD_EXP 15
5585: PPUSH
5586: LD_STRING dx-f-1
5588: PPUSH
5589: CALL_OW 88
// SetSide ( DivEng , 1 ) ;
5593: LD_EXP 15
5597: PPUSH
5598: LD_INT 1
5600: PPUSH
5601: CALL_OW 235
// end ; end_of_file
5605: LD_VAR 0 1
5609: RET
// every 0 0$1 trigger EvacuateBase = true and RadarDone = true do var t ;
5610: LD_EXP 14
5614: PUSH
5615: LD_INT 1
5617: EQUAL
5618: PUSH
5619: LD_EXP 9
5623: PUSH
5624: LD_INT 1
5626: EQUAL
5627: AND
5628: IFFALSE 5706
5630: GO 5632
5632: DISABLE
5633: LD_INT 0
5635: PPUSH
// begin end_the_mission_allowed = true ;
5636: LD_ADDR_OWVAR 57
5640: PUSH
5641: LD_INT 1
5643: ST_TO_ADDR
// if not ApemanEngineer and GetSide ( Sancho ) = 1 then
5644: LD_EXP 11
5648: NOT
5649: PUSH
5650: LD_EXP 3
5654: PPUSH
5655: CALL_OW 255
5659: PUSH
5660: LD_INT 1
5662: EQUAL
5663: AND
5664: IFFALSE 5695
// begin t = Query ( QEnd ) ;
5666: LD_ADDR_VAR 0 1
5670: PUSH
5671: LD_STRING QEnd
5673: PPUSH
5674: CALL_OW 97
5678: ST_TO_ADDR
// if t = 1 then
5679: LD_VAR 0 1
5683: PUSH
5684: LD_INT 1
5686: EQUAL
5687: IFFALSE 5693
// SaveAndEnd ;
5689: CALL 5724 0 0
// end else
5693: GO 5706
// begin Wait ( 0 0$2 ) ;
5695: LD_INT 70
5697: PPUSH
5698: CALL_OW 67
// SaveAndEnd ;
5702: CALL 5724 0 0
// end ; end ;
5706: PPOPN 1
5708: END
// on EndTheMissionRaised ( x ) do begin end_the_mission_allowed = false ;
5709: LD_ADDR_OWVAR 57
5713: PUSH
5714: LD_INT 0
5716: ST_TO_ADDR
// SaveAndEnd ;
5717: CALL 5724 0 0
// end ;
5721: PPOPN 1
5723: END
// export function SaveAndEnd ; begin
5724: LD_INT 0
5726: PPUSH
// if IsInUnit ( Alex ) then
5727: LD_EXP 1
5731: PPUSH
5732: CALL_OW 310
5736: IFFALSE 5754
// CenterOnUnits ( IsInUnit ( Alex ) ) else
5738: LD_EXP 1
5742: PPUSH
5743: CALL_OW 310
5747: PPUSH
5748: CALL_OW 85
5752: GO 5763
// CenterOnUnits ( Alex ) ;
5754: LD_EXP 1
5758: PPUSH
5759: CALL_OW 85
// InGameOn ;
5763: CALL_OW 8
// DialogueOn ;
5767: CALL_OW 6
// Say ( Alex , de-a-2 ) ;
5771: LD_EXP 1
5775: PPUSH
5776: LD_STRING de-a-2
5778: PPUSH
5779: CALL_OW 88
// SayRadio ( Hayes , de-h-1 ) ;
5783: LD_EXP 5
5787: PPUSH
5788: LD_STRING de-h-1
5790: PPUSH
5791: CALL_OW 94
// Say ( Alex , de-a-3 ) ;
5795: LD_EXP 1
5799: PPUSH
5800: LD_STRING de-a-3
5802: PPUSH
5803: CALL_OW 88
// DialogueOff ;
5807: CALL_OW 7
// InGameOff ;
5811: CALL_OW 9
// if MatDetDone then
5815: LD_EXP 10
5819: IFFALSE 5833
// AddMedal ( MMat , 1 ) else
5821: LD_STRING MMat
5823: PPUSH
5824: LD_INT 1
5826: PPUSH
5827: CALL_OW 101
5831: GO 5844
// AddMedal ( MMat , - 1 ) ;
5833: LD_STRING MMat
5835: PPUSH
5836: LD_INT 1
5838: NEG
5839: PPUSH
5840: CALL_OW 101
// if Kills < 3 then
5844: LD_EXP 7
5848: PUSH
5849: LD_INT 3
5851: LESS
5852: IFFALSE 5866
// AddMedal ( MKills , 1 ) else
5854: LD_STRING MKills
5856: PPUSH
5857: LD_INT 1
5859: PPUSH
5860: CALL_OW 101
5864: GO 5877
// AddMedal ( MKills , - 1 ) ;
5866: LD_STRING MKills
5868: PPUSH
5869: LD_INT 1
5871: NEG
5872: PPUSH
5873: CALL_OW 101
// if ApemanEngineer then
5877: LD_EXP 11
5881: IFFALSE 5895
// AddMedal ( MApemen , 1 ) else
5883: LD_STRING MApemen
5885: PPUSH
5886: LD_INT 1
5888: PPUSH
5889: CALL_OW 101
5893: GO 5925
// if SanchoSaved then
5895: LD_EXP 12
5899: IFFALSE 5914
// AddMedal ( MApemen , - 1 ) else
5901: LD_STRING MApemen
5903: PPUSH
5904: LD_INT 1
5906: NEG
5907: PPUSH
5908: CALL_OW 101
5912: GO 5925
// AddMedal ( MApeman , - 2 ) ;
5914: LD_STRING MApeman
5916: PPUSH
5917: LD_INT 2
5919: NEG
5920: PPUSH
5921: CALL_OW 101
// GiveMedals ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_nation , 1 ] ] ) ) ;
5925: LD_INT 22
5927: PUSH
5928: LD_INT 1
5930: PUSH
5931: EMPTY
5932: LIST
5933: LIST
5934: PUSH
5935: LD_INT 23
5937: PUSH
5938: LD_INT 1
5940: PUSH
5941: EMPTY
5942: LIST
5943: LIST
5944: PUSH
5945: EMPTY
5946: LIST
5947: LIST
5948: PPUSH
5949: CALL_OW 69
5953: PPUSH
5954: CALL_OW 102
// SaveCharacters ( Alex , Alex ) ;
5958: LD_EXP 1
5962: PPUSH
5963: LD_STRING Alex
5965: PPUSH
5966: CALL_OW 38
// SaveCharacters ( Eddings , Eddings ) ;
5970: LD_EXP 2
5974: PPUSH
5975: LD_STRING Eddings
5977: PPUSH
5978: CALL_OW 38
// if SanchoSaved and IsLive ( Sancho ) then
5982: LD_EXP 12
5986: PUSH
5987: LD_EXP 3
5991: PPUSH
5992: CALL_OW 300
5996: AND
5997: IFFALSE 6021
// begin SaveCharacters ( Sancho , Sancho ) ;
5999: LD_EXP 3
6003: PPUSH
6004: LD_STRING Sancho
6006: PPUSH
6007: CALL_OW 38
// SaveVariable ( 1 , ApemenAllowed ) ;
6011: LD_INT 1
6013: PPUSH
6014: LD_STRING ApemenAllowed
6016: PPUSH
6017: CALL_OW 39
// end ; SaveCharacters ( TeamAlex diff [ Alex ] , TeamAlex ) ;
6021: LD_EXP 6
6025: PUSH
6026: LD_EXP 1
6030: PUSH
6031: EMPTY
6032: LIST
6033: DIFF
6034: PPUSH
6035: LD_STRING TeamAlex
6037: PPUSH
6038: CALL_OW 38
// YouWin ;
6042: CALL_OW 103
// end ; end_of_file
6046: LD_VAR 0 1
6050: RET
// every 1 1$40 do
6051: GO 6053
6053: DISABLE
// begin enable ;
6054: ENABLE
// CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
6055: LD_INT 2
6057: PPUSH
6058: LD_INT 5
6060: PPUSH
6061: CALL_OW 12
6065: PPUSH
6066: LD_INT 1
6068: PPUSH
6069: CALL_OW 57
// end ;
6073: END
// export AmDep , FReady ; on BuildingComplete ( b ) do begin if GetBType ( b ) = b_depot and not AmDep then
6074: LD_VAR 0 1
6078: PPUSH
6079: CALL_OW 266
6083: PUSH
6084: LD_INT 0
6086: EQUAL
6087: PUSH
6088: LD_EXP 16
6092: NOT
6093: AND
6094: IFFALSE 6106
// AmDep = b ;
6096: LD_ADDR_EXP 16
6100: PUSH
6101: LD_VAR 0 1
6105: ST_TO_ADDR
// end ;
6106: PPOPN 1
6108: END
// every 2 2$0 marked 01 do
6109: GO 6111
6111: DISABLE
// begin if AmDep then
6112: LD_EXP 16
6116: IFFALSE 6159
// CreateCratesXYR ( Rand ( 3 , 5 ) , GetX ( AmDep ) , GetY ( AmDep ) , 10 , true ) ;
6118: LD_INT 3
6120: PPUSH
6121: LD_INT 5
6123: PPUSH
6124: CALL_OW 12
6128: PPUSH
6129: LD_EXP 16
6133: PPUSH
6134: CALL_OW 250
6138: PPUSH
6139: LD_EXP 16
6143: PPUSH
6144: CALL_OW 251
6148: PPUSH
6149: LD_INT 10
6151: PPUSH
6152: LD_INT 1
6154: PPUSH
6155: CALL_OW 56
// enable ;
6159: ENABLE
// end ;
6160: END
// every 15 15$0 do
6161: GO 6163
6163: DISABLE
// disable ( 01 ) ;
6164: LD_INT 1
6166: DISABLE_MARKED
6167: END
