// export Antoine , Bojan , Gom , Tarpan ; export ArOthers , ArVehs ; export GomOthers ; export SolarAllowed , OilVehiclesLeft ; export function LoadTechs ; begin
   0: LD_INT 0
   2: PPUSH
// SolarAllowed = LoadVariable ( SolarAvailableToArabs , 0 ) ;
   3: LD_ADDR_EXP 8
   7: PUSH
   8: LD_STRING SolarAvailableToArabs
  10: PPUSH
  11: LD_INT 0
  13: PPUSH
  14: CALL_OW 30
  18: ST_TO_ADDR
// if SolarAllowed = 1 then
  19: LD_EXP 8
  23: PUSH
  24: LD_INT 1
  26: EQUAL
  27: IFFALSE 81
// begin SetTech ( tech_SolPow , 2 , state_enabled ) ;
  29: LD_INT 35
  31: PPUSH
  32: LD_INT 2
  34: PPUSH
  35: LD_INT 1
  37: PPUSH
  38: CALL_OW 322
// SetTech ( tech_SolEng , 2 , state_enabled ) ;
  42: LD_INT 45
  44: PPUSH
  45: LD_INT 2
  47: PPUSH
  48: LD_INT 1
  50: PPUSH
  51: CALL_OW 322
// SetRestrict ( b_solar_power , 2 , true ) ;
  55: LD_INT 27
  57: PPUSH
  58: LD_INT 2
  60: PPUSH
  61: LD_INT 1
  63: PPUSH
  64: CALL_OW 324
// SetRestrict ( 23 , 2 , true ) ;
  68: LD_INT 23
  70: PPUSH
  71: LD_INT 2
  73: PPUSH
  74: LD_INT 1
  76: PPUSH
  77: CALL_OW 324
// end ; end ;
  81: LD_VAR 0 1
  85: RET
// export function PrepareOurs ; var i ; var v , vehs_ready , people_ready ; begin
  86: LD_INT 0
  88: PPUSH
  89: PPUSH
  90: PPUSH
  91: PPUSH
  92: PPUSH
// uc_side = 2 ;
  93: LD_ADDR_OWVAR 20
  97: PUSH
  98: LD_INT 2
 100: ST_TO_ADDR
// uc_nation = 2 ;
 101: LD_ADDR_OWVAR 21
 105: PUSH
 106: LD_INT 2
 108: ST_TO_ADDR
// Antoine = LoadCharacter ( Antoine , 0 , 0 ) ;
 109: LD_ADDR_EXP 1
 113: PUSH
 114: LD_STRING Antoine
 116: PPUSH
 117: LD_INT 0
 119: PPUSH
 120: LD_INT 0
 122: PPUSH
 123: CALL_OW 527
 127: ST_TO_ADDR
// PlaceUnitArea ( Antoine , BushArea , false ) ;
 128: LD_EXP 1
 132: PPUSH
 133: LD_INT 10
 135: PPUSH
 136: LD_INT 0
 138: PPUSH
 139: CALL_OW 49
// if CheckCharacterSet ( Tarpan ) then
 143: LD_STRING Tarpan
 145: PPUSH
 146: CALL_OW 29
 150: IFFALSE 186
// begin Tarpan = LoadCharacter ( Tarpan , 0 , 0 ) ;
 152: LD_ADDR_EXP 4
 156: PUSH
 157: LD_STRING Tarpan
 159: PPUSH
 160: LD_INT 0
 162: PPUSH
 163: LD_INT 0
 165: PPUSH
 166: CALL_OW 527
 170: ST_TO_ADDR
// PlaceUnitArea ( Tarpan , BushArea , false ) ;
 171: LD_EXP 4
 175: PPUSH
 176: LD_INT 10
 178: PPUSH
 179: LD_INT 0
 181: PPUSH
 182: CALL_OW 49
// end ; if CheckCharacterSet ( TeamTarpan ) then
 186: LD_STRING TeamTarpan
 188: PPUSH
 189: CALL_OW 29
 193: IFFALSE 214
// ArOthers = LoadCharacter ( TeamTarpan , 0 , 0 ) ;
 195: LD_ADDR_EXP 5
 199: PUSH
 200: LD_STRING TeamTarpan
 202: PPUSH
 203: LD_INT 0
 205: PPUSH
 206: LD_INT 0
 208: PPUSH
 209: CALL_OW 527
 213: ST_TO_ADDR
// for i in ArOthers do
 214: LD_ADDR_VAR 0 2
 218: PUSH
 219: LD_EXP 5
 223: PUSH
 224: FOR_IN
 225: IFFALSE 244
// PlaceUnitArea ( i , BushArea , false ) ;
 227: LD_VAR 0 2
 231: PPUSH
 232: LD_INT 10
 234: PPUSH
 235: LD_INT 0
 237: PPUSH
 238: CALL_OW 49
 242: GO 224
 244: POP
 245: POP
// ArVehs = LoadVariable ( ArVehs , 0 ) ;
 246: LD_ADDR_EXP 6
 250: PUSH
 251: LD_STRING ArVehs
 253: PPUSH
 254: LD_INT 0
 256: PPUSH
 257: CALL_OW 30
 261: ST_TO_ADDR
// for i in ArVehs do
 262: LD_ADDR_VAR 0 2
 266: PUSH
 267: LD_EXP 6
 271: PUSH
 272: FOR_IN
 273: IFFALSE 416
// begin if i [ 2 ] = engine_combustion then
 275: LD_VAR 0 2
 279: PUSH
 280: LD_INT 2
 282: ARRAY
 283: PUSH
 284: LD_INT 1
 286: EQUAL
 287: IFFALSE 299
// OilVehiclesLeft = true else
 289: LD_ADDR_EXP 9
 293: PUSH
 294: LD_INT 1
 296: ST_TO_ADDR
 297: GO 414
// begin vc_chassis = i [ 1 ] ;
 299: LD_ADDR_OWVAR 37
 303: PUSH
 304: LD_VAR 0 2
 308: PUSH
 309: LD_INT 1
 311: ARRAY
 312: ST_TO_ADDR
// vc_engine = i [ 2 ] ;
 313: LD_ADDR_OWVAR 39
 317: PUSH
 318: LD_VAR 0 2
 322: PUSH
 323: LD_INT 2
 325: ARRAY
 326: ST_TO_ADDR
// vc_control = i [ 3 ] ;
 327: LD_ADDR_OWVAR 38
 331: PUSH
 332: LD_VAR 0 2
 336: PUSH
 337: LD_INT 3
 339: ARRAY
 340: ST_TO_ADDR
// vc_weapon = i [ 4 ] ;
 341: LD_ADDR_OWVAR 40
 345: PUSH
 346: LD_VAR 0 2
 350: PUSH
 351: LD_INT 4
 353: ARRAY
 354: ST_TO_ADDR
// uc_nation = i [ 5 ] ;
 355: LD_ADDR_OWVAR 21
 359: PUSH
 360: LD_VAR 0 2
 364: PUSH
 365: LD_INT 5
 367: ARRAY
 368: ST_TO_ADDR
// v = CreateVehicle ;
 369: LD_ADDR_VAR 0 3
 373: PUSH
 374: CALL_OW 45
 378: ST_TO_ADDR
// PlaceUnitArea ( v , BushArea , false ) ;
 379: LD_VAR 0 3
 383: PPUSH
 384: LD_INT 10
 386: PPUSH
 387: LD_INT 0
 389: PPUSH
 390: CALL_OW 49
// SetFuel ( v , Rand ( 50 , 80 ) ) ;
 394: LD_VAR 0 3
 398: PPUSH
 399: LD_INT 50
 401: PPUSH
 402: LD_INT 80
 404: PPUSH
 405: CALL_OW 12
 409: PPUSH
 410: CALL_OW 240
// end ; end ;
 414: GO 272
 416: POP
 417: POP
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] ] ) do
 418: LD_ADDR_VAR 0 2
 422: PUSH
 423: LD_INT 22
 425: PUSH
 426: LD_INT 2
 428: PUSH
 429: EMPTY
 430: LIST
 431: LIST
 432: PUSH
 433: LD_INT 21
 435: PUSH
 436: LD_INT 1
 438: PUSH
 439: EMPTY
 440: LIST
 441: LIST
 442: PUSH
 443: EMPTY
 444: LIST
 445: LIST
 446: PPUSH
 447: CALL_OW 69
 451: PUSH
 452: FOR_IN
 453: IFFALSE 508
// begin if GetClass ( i ) = 2 then
 455: LD_VAR 0 2
 459: PPUSH
 460: CALL_OW 257
 464: PUSH
 465: LD_INT 2
 467: EQUAL
 468: IFFALSE 482
// SetClass ( i , 1 ) ;
 470: LD_VAR 0 2
 474: PPUSH
 475: LD_INT 1
 477: PPUSH
 478: CALL_OW 336
// if GetClass ( i ) = 1 then
 482: LD_VAR 0 2
 486: PPUSH
 487: CALL_OW 257
 491: PUSH
 492: LD_INT 1
 494: EQUAL
 495: IFFALSE 506
// ComCrawl ( i ) ;
 497: LD_VAR 0 2
 501: PPUSH
 502: CALL_OW 137
// end ;
 506: GO 452
 508: POP
 509: POP
// end ;
 510: LD_VAR 0 1
 514: RET
// export function PrepareOrange ; var i , h ; begin
 515: LD_INT 0
 517: PPUSH
 518: PPUSH
 519: PPUSH
// uc_side = 5 ;
 520: LD_ADDR_OWVAR 20
 524: PUSH
 525: LD_INT 5
 527: ST_TO_ADDR
// uc_nation = nation_arabian ;
 528: LD_ADDR_OWVAR 21
 532: PUSH
 533: LD_INT 2
 535: ST_TO_ADDR
// Gom = NewCharacter ( Gom ) ;
 536: LD_ADDR_EXP 3
 540: PUSH
 541: LD_STRING Gom
 543: PPUSH
 544: CALL_OW 25
 548: ST_TO_ADDR
// PlaceUnitXY ( Gom , 96 , 27 , false ) ;
 549: LD_EXP 3
 553: PPUSH
 554: LD_INT 96
 556: PPUSH
 557: LD_INT 27
 559: PPUSH
 560: LD_INT 0
 562: PPUSH
 563: CALL_OW 48
// for i = 1 to [ 3 , 3 , 2 ] [ difficulty ] do
 567: LD_ADDR_VAR 0 2
 571: PUSH
 572: DOUBLE
 573: LD_INT 1
 575: DEC
 576: ST_TO_ADDR
 577: LD_INT 3
 579: PUSH
 580: LD_INT 3
 582: PUSH
 583: LD_INT 2
 585: PUSH
 586: EMPTY
 587: LIST
 588: LIST
 589: LIST
 590: PUSH
 591: LD_OWVAR 67
 595: ARRAY
 596: PUSH
 597: FOR_TO
 598: IFFALSE 689
// begin PrepareHuman ( false , [ 4 , 2 , 1 ] [ i ] , [ Rand ( 2 , 4 ) , Rand ( 2 , 3 ) , Rand ( 2 , 3 ) ] [ difficulty ] ) ;
 600: LD_INT 0
 602: PPUSH
 603: LD_INT 4
 605: PUSH
 606: LD_INT 2
 608: PUSH
 609: LD_INT 1
 611: PUSH
 612: EMPTY
 613: LIST
 614: LIST
 615: LIST
 616: PUSH
 617: LD_VAR 0 2
 621: ARRAY
 622: PPUSH
 623: LD_INT 2
 625: PPUSH
 626: LD_INT 4
 628: PPUSH
 629: CALL_OW 12
 633: PUSH
 634: LD_INT 2
 636: PPUSH
 637: LD_INT 3
 639: PPUSH
 640: CALL_OW 12
 644: PUSH
 645: LD_INT 2
 647: PPUSH
 648: LD_INT 3
 650: PPUSH
 651: CALL_OW 12
 655: PUSH
 656: EMPTY
 657: LIST
 658: LIST
 659: LIST
 660: PUSH
 661: LD_OWVAR 67
 665: ARRAY
 666: PPUSH
 667: CALL_OW 380
// GomOthers = GomOthers ^ CreateHuman ;
 671: LD_ADDR_EXP 7
 675: PUSH
 676: LD_EXP 7
 680: PUSH
 681: CALL_OW 44
 685: ADD
 686: ST_TO_ADDR
// end ;
 687: GO 597
 689: POP
 690: POP
// for i in GomOthers do
 691: LD_ADDR_VAR 0 2
 695: PUSH
 696: LD_EXP 7
 700: PUSH
 701: FOR_IN
 702: IFFALSE 727
// PlaceUnitXYR ( i , 94 , 29 , 3 , false ) ;
 704: LD_VAR 0 2
 708: PPUSH
 709: LD_INT 94
 711: PPUSH
 712: LD_INT 29
 714: PPUSH
 715: LD_INT 3
 717: PPUSH
 718: LD_INT 0
 720: PPUSH
 721: CALL_OW 50
 725: GO 701
 727: POP
 728: POP
// if difficulty > 1 then
 729: LD_OWVAR 67
 733: PUSH
 734: LD_INT 1
 736: GREATER
 737: IFFALSE 746
// RemoveUnit ( ev ) ;
 739: LD_INT 168
 741: PPUSH
 742: CALL_OW 64
// Bojan = NewCharacter ( Bojan ) ;
 746: LD_ADDR_EXP 2
 750: PUSH
 751: LD_STRING Bojan
 753: PPUSH
 754: CALL_OW 25
 758: ST_TO_ADDR
// end ;
 759: LD_VAR 0 1
 763: RET
// starting begin PrepareOurs ;
 764: CALL 86 0 0
// PrepareOrange ;
 768: CALL 515 0 0
// LoadTechs ;
 772: CALL 0 0 0
// RevealFogArea ( 2 , RevealArea ) ;
 776: LD_INT 2
 778: PPUSH
 779: LD_INT 12
 781: PPUSH
 782: CALL_OW 332
// InGameOn ;
 786: CALL_OW 8
// CenterNowOnXY ( 139 , 155 ) ;
 790: LD_INT 139
 792: PPUSH
 793: LD_INT 155
 795: PPUSH
 796: CALL_OW 86
// Wait ( 0 0$2 ) ;
 800: LD_INT 70
 802: PPUSH
 803: CALL_OW 67
// if OilVehiclesLeft then
 807: LD_EXP 9
 811: IFFALSE 921
// begin if Tarpan then
 813: LD_EXP 4
 817: IFFALSE 833
// Say ( Tarpan , di-t-1 ) else
 819: LD_EXP 4
 823: PPUSH
 824: LD_STRING di-t-1
 826: PPUSH
 827: CALL_OW 88
 831: GO 849
// Say ( ArOthers [ 2 ] , di-t-1 ) ;
 833: LD_EXP 5
 837: PUSH
 838: LD_INT 2
 840: ARRAY
 841: PPUSH
 842: LD_STRING di-t-1
 844: PPUSH
 845: CALL_OW 88
// Say ( ArOthers [ 1 ] , di-s-1 ) ;
 849: LD_EXP 5
 853: PUSH
 854: LD_INT 1
 856: ARRAY
 857: PPUSH
 858: LD_STRING di-s-1
 860: PPUSH
 861: CALL_OW 88
// if FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_vehicle ] ] ) then
 865: LD_INT 22
 867: PUSH
 868: LD_INT 2
 870: PUSH
 871: EMPTY
 872: LIST
 873: LIST
 874: PUSH
 875: LD_INT 21
 877: PUSH
 878: LD_INT 2
 880: PUSH
 881: EMPTY
 882: LIST
 883: LIST
 884: PUSH
 885: EMPTY
 886: LIST
 887: LIST
 888: PPUSH
 889: CALL_OW 69
 893: IFFALSE 909
// Say ( Antoine , di-a-1a ) else
 895: LD_EXP 1
 899: PPUSH
 900: LD_STRING di-a-1a
 902: PPUSH
 903: CALL_OW 88
 907: GO 921
// Say ( Antoine , di-a-1 ) ;
 909: LD_EXP 1
 913: PPUSH
 914: LD_STRING di-a-1
 916: PPUSH
 917: CALL_OW 88
// end ; Wait ( 0 0$1 ) ;
 921: LD_INT 35
 923: PPUSH
 924: CALL_OW 67
// Say ( Antoine , di-a-2 ) ;
 928: LD_EXP 1
 932: PPUSH
 933: LD_STRING di-a-2
 935: PPUSH
 936: CALL_OW 88
// SayRadio ( Bojan , di-b-1 ) ;
 940: LD_EXP 2
 944: PPUSH
 945: LD_STRING di-b-1
 947: PPUSH
 948: CALL_OW 94
// Say ( Antoine , di-a-3 ) ;
 952: LD_EXP 1
 956: PPUSH
 957: LD_STRING di-a-3
 959: PPUSH
 960: CALL_OW 88
// InGameOff ;
 964: CALL_OW 9
// SaveForQuickRestart ;
 968: CALL_OW 22
// ChangeMissionObjectives ( OFind ) ;
 972: LD_STRING OFind
 974: PPUSH
 975: CALL_OW 337
// end ;
 979: END
// on UnitDestroyed ( u ) do begin if u = Antoine then
 980: LD_VAR 0 1
 984: PUSH
 985: LD_EXP 1
 989: EQUAL
 990: IFFALSE 999
// YouLost ( AntoineDead ) ;
 992: LD_STRING AntoineDead
 994: PPUSH
 995: CALL_OW 104
// if u = Gom then
 999: LD_VAR 0 1
1003: PUSH
1004: LD_EXP 3
1008: EQUAL
1009: IFFALSE 1018
// YouLost ( LucyDead ) ;
1011: LD_STRING LucyDead
1013: PPUSH
1014: CALL_OW 104
// if u = al1 then
1018: LD_VAR 0 1
1022: PUSH
1023: LD_INT 39
1025: EQUAL
1026: IFFALSE 1035
// YouLost ( LabDestroyed ) ;
1028: LD_STRING LabDestroyed
1030: PPUSH
1031: CALL_OW 104
// if u in Transports then
1035: LD_VAR 0 1
1039: PUSH
1040: LD_EXP 23
1044: IN
1045: IFFALSE 1061
// VehsTaken = VehsTaken + 1 ;
1047: LD_ADDR_EXP 22
1051: PUSH
1052: LD_EXP 22
1056: PUSH
1057: LD_INT 1
1059: PLUS
1060: ST_TO_ADDR
// end ; end_of_file
1061: PPOPN 1
1063: END
// export OilTalk , LabTalk , ApeTalk , BioTalk ; every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 2 ] , [ f_side , 5 ] ] ) do var m ;
1064: LD_INT 101
1066: PUSH
1067: LD_INT 2
1069: PUSH
1070: EMPTY
1071: LIST
1072: LIST
1073: PUSH
1074: LD_INT 22
1076: PUSH
1077: LD_INT 5
1079: PUSH
1080: EMPTY
1081: LIST
1082: LIST
1083: PUSH
1084: EMPTY
1085: LIST
1086: LIST
1087: PPUSH
1088: CALL_OW 69
1092: IFFALSE 1337
1094: GO 1096
1096: DISABLE
1097: LD_INT 0
1099: PPUSH
// begin InGameOn ;
1100: CALL_OW 8
// DialogueOn ;
1104: CALL_OW 6
// m = NearestUnitToUnit ( FilterAllUnits ( [ f_side , 5 ] ) , FilterAllUnits ( [ [ f_see , 2 ] , [ f_side , 5 ] ] ) [ 1 ] ) ;
1108: LD_ADDR_VAR 0 1
1112: PUSH
1113: LD_INT 22
1115: PUSH
1116: LD_INT 5
1118: PUSH
1119: EMPTY
1120: LIST
1121: LIST
1122: PPUSH
1123: CALL_OW 69
1127: PPUSH
1128: LD_INT 101
1130: PUSH
1131: LD_INT 2
1133: PUSH
1134: EMPTY
1135: LIST
1136: LIST
1137: PUSH
1138: LD_INT 22
1140: PUSH
1141: LD_INT 5
1143: PUSH
1144: EMPTY
1145: LIST
1146: LIST
1147: PUSH
1148: EMPTY
1149: LIST
1150: LIST
1151: PPUSH
1152: CALL_OW 69
1156: PUSH
1157: LD_INT 1
1159: ARRAY
1160: PPUSH
1161: CALL_OW 74
1165: ST_TO_ADDR
// CenterOnUnits ( m ) ;
1166: LD_VAR 0 1
1170: PPUSH
1171: CALL_OW 85
// if GetType ( m ) = unit_building then
1175: LD_VAR 0 1
1179: PPUSH
1180: CALL_OW 247
1184: PUSH
1185: LD_INT 3
1187: EQUAL
1188: IFFALSE 1209
// m = UnitsInside ( m ) [ 1 ] ;
1190: LD_ADDR_VAR 0 1
1194: PUSH
1195: LD_VAR 0 1
1199: PPUSH
1200: CALL_OW 313
1204: PUSH
1205: LD_INT 1
1207: ARRAY
1208: ST_TO_ADDR
// Say ( m , da-s-1 ) ;
1209: LD_VAR 0 1
1213: PPUSH
1214: LD_STRING da-s-1
1216: PPUSH
1217: CALL_OW 88
// Say ( Antoine , da-a-1 ) ;
1221: LD_EXP 1
1225: PPUSH
1226: LD_STRING da-a-1
1228: PPUSH
1229: CALL_OW 88
// SetSide ( FilterAllUnits ( [ f_side , 5 ] ) , 2 ) ;
1233: LD_INT 22
1235: PUSH
1236: LD_INT 5
1238: PUSH
1239: EMPTY
1240: LIST
1241: LIST
1242: PPUSH
1243: CALL_OW 69
1247: PPUSH
1248: LD_INT 2
1250: PPUSH
1251: CALL_OW 235
// RevealFogArea ( 2 , Passage ) ;
1255: LD_INT 2
1257: PPUSH
1258: LD_INT 4
1260: PPUSH
1261: CALL_OW 332
// CenterOnUnits ( Gom ) ;
1265: LD_EXP 3
1269: PPUSH
1270: CALL_OW 85
// Say ( Gom , da-l-1 ) ;
1274: LD_EXP 3
1278: PPUSH
1279: LD_STRING da-l-1
1281: PPUSH
1282: CALL_OW 88
// Say ( Antoine , da-a-2 ) ;
1286: LD_EXP 1
1290: PPUSH
1291: LD_STRING da-a-2
1293: PPUSH
1294: CALL_OW 88
// Say ( Gom , da-l-2 ) ;
1298: LD_EXP 3
1302: PPUSH
1303: LD_STRING da-l-2
1305: PPUSH
1306: CALL_OW 88
// Say ( Antoine , da-a-3 ) ;
1310: LD_EXP 1
1314: PPUSH
1315: LD_STRING da-a-3
1317: PPUSH
1318: CALL_OW 88
// InGameOff ;
1322: CALL_OW 9
// DialogueOff ;
1326: CALL_OW 7
// ChangeMissionObjectives ( OGom ) ;
1330: LD_STRING OGom
1332: PPUSH
1333: CALL_OW 337
// end ;
1337: PPOPN 1
1339: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) = b_workshop or GetBType ( b ) = b_oil_power then
1340: LD_VAR 0 1
1344: PPUSH
1345: CALL_OW 266
1349: PUSH
1350: LD_INT 2
1352: EQUAL
1353: PUSH
1354: LD_VAR 0 1
1358: PPUSH
1359: CALL_OW 266
1363: PUSH
1364: LD_INT 26
1366: EQUAL
1367: OR
1368: IFFALSE 1446
// if not OilTalk and not GetTech ( tech_SolPow , 2 ) = state_enabled then
1370: LD_EXP 10
1374: NOT
1375: PUSH
1376: LD_INT 35
1378: PPUSH
1379: LD_INT 2
1381: PPUSH
1382: CALL_OW 321
1386: PUSH
1387: LD_INT 1
1389: EQUAL
1390: NOT
1391: AND
1392: IFFALSE 1446
// begin DialogueOn ;
1394: CALL_OW 6
// Say ( Antoine , dp-a-1 ) ;
1398: LD_EXP 1
1402: PPUSH
1403: LD_STRING dp-a-1
1405: PPUSH
1406: CALL_OW 88
// Say ( Gom , dp-l-1 ) ;
1410: LD_EXP 3
1414: PPUSH
1415: LD_STRING dp-l-1
1417: PPUSH
1418: CALL_OW 88
// Say ( Antoine , dp-a-2 ) ;
1422: LD_EXP 1
1426: PPUSH
1427: LD_STRING dp-a-2
1429: PPUSH
1430: CALL_OW 88
// DialogueOff ;
1434: CALL_OW 7
// OilTalk = true ;
1438: LD_ADDR_EXP 10
1442: PUSH
1443: LD_INT 1
1445: ST_TO_ADDR
// end ; if GetBType ( b ) = b_lab and not LabTalk then
1446: LD_VAR 0 1
1450: PPUSH
1451: CALL_OW 266
1455: PUSH
1456: LD_INT 6
1458: EQUAL
1459: PUSH
1460: LD_EXP 11
1464: NOT
1465: AND
1466: IFFALSE 1602
// begin DialogueOn ;
1468: CALL_OW 6
// Say ( Antoine , dt-a-1 ) ;
1472: LD_EXP 1
1476: PPUSH
1477: LD_STRING dt-a-1
1479: PPUSH
1480: CALL_OW 88
// Say ( Gom , dt-l-1 ) ;
1484: LD_EXP 3
1488: PPUSH
1489: LD_STRING dt-l-1
1491: PPUSH
1492: CALL_OW 88
// if not OilTalk then
1496: LD_EXP 10
1500: NOT
1501: IFFALSE 1547
// begin Say ( Antoine , dt-a-2 ) ;
1503: LD_EXP 1
1507: PPUSH
1508: LD_STRING dt-a-2
1510: PPUSH
1511: CALL_OW 88
// Say ( Gom , dt-l-2 ) ;
1515: LD_EXP 3
1519: PPUSH
1520: LD_STRING dt-l-2
1522: PPUSH
1523: CALL_OW 88
// Say ( Antoine , dp-a-2 ) ;
1527: LD_EXP 1
1531: PPUSH
1532: LD_STRING dp-a-2
1534: PPUSH
1535: CALL_OW 88
// OilTalk = true ;
1539: LD_ADDR_EXP 10
1543: PUSH
1544: LD_INT 1
1546: ST_TO_ADDR
// end ; Say ( Gom , dt-l-3 ) ;
1547: LD_EXP 3
1551: PPUSH
1552: LD_STRING dt-l-3
1554: PPUSH
1555: CALL_OW 88
// Say ( Antoine , dt-a-3 ) ;
1559: LD_EXP 1
1563: PPUSH
1564: LD_STRING dt-a-3
1566: PPUSH
1567: CALL_OW 88
// Say ( Gom , dt-l-4 ) ;
1571: LD_EXP 3
1575: PPUSH
1576: LD_STRING dt-l-4
1578: PPUSH
1579: CALL_OW 88
// DialogueOff ;
1583: CALL_OW 7
// LabTalk = true ;
1587: LD_ADDR_EXP 11
1591: PUSH
1592: LD_INT 1
1594: ST_TO_ADDR
// ChangeMissionObjectives ( OApe ) ;
1595: LD_STRING OApe
1597: PPUSH
1598: CALL_OW 337
// end ; end ;
1602: PPOPN 2
1604: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) do var i ;
1605: LD_INT 22
1607: PUSH
1608: LD_INT 2
1610: PUSH
1611: EMPTY
1612: LIST
1613: LIST
1614: PUSH
1615: LD_INT 2
1617: PUSH
1618: LD_INT 30
1620: PUSH
1621: LD_INT 7
1623: PUSH
1624: EMPTY
1625: LIST
1626: LIST
1627: PUSH
1628: LD_INT 30
1630: PUSH
1631: LD_INT 8
1633: PUSH
1634: EMPTY
1635: LIST
1636: LIST
1637: PUSH
1638: EMPTY
1639: LIST
1640: LIST
1641: LIST
1642: PUSH
1643: EMPTY
1644: LIST
1645: LIST
1646: PPUSH
1647: CALL_OW 69
1651: IFFALSE 1844
1653: GO 1655
1655: DISABLE
1656: LD_INT 0
1658: PPUSH
// begin enable ;
1659: ENABLE
// for i in FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ] ) do
1660: LD_ADDR_VAR 0 1
1664: PUSH
1665: LD_INT 22
1667: PUSH
1668: LD_INT 2
1670: PUSH
1671: EMPTY
1672: LIST
1673: LIST
1674: PUSH
1675: LD_INT 2
1677: PUSH
1678: LD_INT 30
1680: PUSH
1681: LD_INT 7
1683: PUSH
1684: EMPTY
1685: LIST
1686: LIST
1687: PUSH
1688: LD_INT 30
1690: PUSH
1691: LD_INT 8
1693: PUSH
1694: EMPTY
1695: LIST
1696: LIST
1697: PUSH
1698: EMPTY
1699: LIST
1700: LIST
1701: LIST
1702: PUSH
1703: EMPTY
1704: LIST
1705: LIST
1706: PPUSH
1707: CALL_OW 69
1711: PUSH
1712: FOR_IN
1713: IFFALSE 1842
// if GetLabKind ( i , 1 ) = b_lab_biological or GetLabKind ( i , 1 ) = b_lab_biological then
1715: LD_VAR 0 1
1719: PPUSH
1720: LD_INT 1
1722: PPUSH
1723: CALL_OW 268
1727: PUSH
1728: LD_INT 13
1730: EQUAL
1731: PUSH
1732: LD_VAR 0 1
1736: PPUSH
1737: LD_INT 1
1739: PPUSH
1740: CALL_OW 268
1744: PUSH
1745: LD_INT 13
1747: EQUAL
1748: OR
1749: IFFALSE 1840
// begin DialogueOn ;
1751: CALL_OW 6
// disable ;
1755: DISABLE
// Say ( Gom , ds-l-1 ) ;
1756: LD_EXP 3
1760: PPUSH
1761: LD_STRING ds-l-1
1763: PPUSH
1764: CALL_OW 88
// Say ( Antoine , ds-a-1 ) ;
1768: LD_EXP 1
1772: PPUSH
1773: LD_STRING ds-a-1
1775: PPUSH
1776: CALL_OW 88
// Say ( Gom , ds-l-2 ) ;
1780: LD_EXP 3
1784: PPUSH
1785: LD_STRING ds-l-2
1787: PPUSH
1788: CALL_OW 88
// Say ( Antoine , ds-a-2 ) ;
1792: LD_EXP 1
1796: PPUSH
1797: LD_STRING ds-a-2
1799: PPUSH
1800: CALL_OW 88
// Say ( Gom , ds-l-3 ) ;
1804: LD_EXP 3
1808: PPUSH
1809: LD_STRING ds-l-3
1811: PPUSH
1812: CALL_OW 88
// Say ( Antoine , ds-a-3 ) ;
1816: LD_EXP 1
1820: PPUSH
1821: LD_STRING ds-a-3
1823: PPUSH
1824: CALL_OW 88
// DialogueOff ;
1828: CALL_OW 7
// BioTalk = true ;
1832: LD_ADDR_EXP 13
1836: PUSH
1837: LD_INT 1
1839: ST_TO_ADDR
// end ;
1840: GO 1712
1842: POP
1843: POP
// end ;
1844: PPOPN 1
1846: END
// every 0 0$1 do var i ;
1847: GO 1849
1849: DISABLE
1850: LD_INT 0
1852: PPUSH
// begin enable ;
1853: ENABLE
// for i in FilterUnitsInArea ( HillBase , [ f_side , 2 ] ) do
1854: LD_ADDR_VAR 0 1
1858: PUSH
1859: LD_INT 2
1861: PPUSH
1862: LD_INT 22
1864: PUSH
1865: LD_INT 2
1867: PUSH
1868: EMPTY
1869: LIST
1870: LIST
1871: PPUSH
1872: CALL_OW 70
1876: PUSH
1877: FOR_IN
1878: IFFALSE 1959
// if SideShoot ( i ) = 1 then
1880: LD_VAR 0 1
1884: PPUSH
1885: CALL_OW 503
1889: PUSH
1890: LD_INT 1
1892: EQUAL
1893: IFFALSE 1957
// begin disable ;
1895: DISABLE
// if GetType ( i ) = unit_building or GetType ( i ) = unit_vehicle then
1896: LD_VAR 0 1
1900: PPUSH
1901: CALL_OW 247
1905: PUSH
1906: LD_INT 3
1908: EQUAL
1909: PUSH
1910: LD_VAR 0 1
1914: PPUSH
1915: CALL_OW 247
1919: PUSH
1920: LD_INT 2
1922: EQUAL
1923: OR
1924: IFFALSE 1945
// i = UnitsInside ( i ) [ 1 ] ;
1926: LD_ADDR_VAR 0 1
1930: PUSH
1931: LD_VAR 0 1
1935: PPUSH
1936: CALL_OW 313
1940: PUSH
1941: LD_INT 1
1943: ARRAY
1944: ST_TO_ADDR
// Say ( i , dd-s-1 ) ;
1945: LD_VAR 0 1
1949: PPUSH
1950: LD_STRING dd-s-1
1952: PPUSH
1953: CALL_OW 88
// end ;
1957: GO 1877
1959: POP
1960: POP
// end ;
1961: PPOPN 1
1963: END
// on ApemanTamed ( ap , u ) do begin if not ApeTalk then
1964: LD_EXP 12
1968: NOT
1969: IFFALSE 2058
// begin ApeTalk = true ;
1971: LD_ADDR_EXP 12
1975: PUSH
1976: LD_INT 1
1978: ST_TO_ADDR
// if u = Antoine then
1979: LD_VAR 0 2
1983: PUSH
1984: LD_EXP 1
1988: EQUAL
1989: IFFALSE 2020
// Say ( UnitFilter ( ArOthers , [ f_ok ] ) [ 1 ] , dn-s-1 ) else
1991: LD_EXP 5
1995: PPUSH
1996: LD_INT 50
1998: PUSH
1999: EMPTY
2000: LIST
2001: PPUSH
2002: CALL_OW 72
2006: PUSH
2007: LD_INT 1
2009: ARRAY
2010: PPUSH
2011: LD_STRING dn-s-1
2013: PPUSH
2014: CALL_OW 88
2018: GO 2058
// if u = Gom then
2020: LD_VAR 0 2
2024: PUSH
2025: LD_EXP 3
2029: EQUAL
2030: IFFALSE 2046
// Say ( Gom , dn-l-1 ) else
2032: LD_EXP 3
2036: PPUSH
2037: LD_STRING dn-l-1
2039: PPUSH
2040: CALL_OW 88
2044: GO 2058
// Say ( u , dn-x-1 ) ;
2046: LD_VAR 0 2
2050: PPUSH
2051: LD_STRING dn-x-1
2053: PPUSH
2054: CALL_OW 88
// end ; end ;
2058: PPOPN 2
2060: END
// on ResearchComplete ( t , l ) do begin if t = tech_ApeAgres then
2061: LD_VAR 0 1
2065: PUSH
2066: LD_INT 11
2068: EQUAL
2069: IFFALSE 2221
// begin if UnitsInside ( l ) [ 1 ] = Antoine then
2071: LD_VAR 0 2
2075: PPUSH
2076: CALL_OW 313
2080: PUSH
2081: LD_INT 1
2083: ARRAY
2084: PUSH
2085: LD_EXP 1
2089: EQUAL
2090: IFFALSE 2118
// begin Say ( Antoine , dn-a-2a ) ;
2092: LD_EXP 1
2096: PPUSH
2097: LD_STRING dn-a-2a
2099: PPUSH
2100: CALL_OW 88
// Say ( Gom , dn-l-3 ) ;
2104: LD_EXP 3
2108: PPUSH
2109: LD_STRING dn-l-3
2111: PPUSH
2112: CALL_OW 88
// end else
2116: GO 2209
// begin Say ( UnitFilter ( UnitsInside ( l ) , [ f_nation , nation_arabian ] ) [ 1 ] , dn-l-2 ) ;
2118: LD_VAR 0 2
2122: PPUSH
2123: CALL_OW 313
2127: PPUSH
2128: LD_INT 23
2130: PUSH
2131: LD_INT 2
2133: PUSH
2134: EMPTY
2135: LIST
2136: LIST
2137: PPUSH
2138: CALL_OW 72
2142: PUSH
2143: LD_INT 1
2145: ARRAY
2146: PPUSH
2147: LD_STRING dn-l-2
2149: PPUSH
2150: CALL_OW 88
// Say ( Antoine , dn-a-2 ) ;
2154: LD_EXP 1
2158: PPUSH
2159: LD_STRING dn-a-2
2161: PPUSH
2162: CALL_OW 88
// if IsInUnit ( Gom ) = l then
2166: LD_EXP 3
2170: PPUSH
2171: CALL_OW 310
2175: PUSH
2176: LD_VAR 0 2
2180: EQUAL
2181: IFFALSE 2197
// Say ( Gom , dn-l-3 ) else
2183: LD_EXP 3
2187: PPUSH
2188: LD_STRING dn-l-3
2190: PPUSH
2191: CALL_OW 88
2195: GO 2209
// Say ( Gom , dn-l-3a ) ;
2197: LD_EXP 3
2201: PPUSH
2202: LD_STRING dn-l-3a
2204: PPUSH
2205: CALL_OW 88
// end ; Say ( Antoine , dn-a-3 ) ;
2209: LD_EXP 1
2213: PPUSH
2214: LD_STRING dn-a-3
2216: PPUSH
2217: CALL_OW 88
// end ; end ;
2221: PPOPN 2
2223: END
// export ApeDone , FlameDone ; every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , class_apeman_soldier ] ] ) do
2224: LD_INT 22
2226: PUSH
2227: LD_INT 2
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: PUSH
2234: LD_INT 25
2236: PUSH
2237: LD_INT 15
2239: PUSH
2240: EMPTY
2241: LIST
2242: LIST
2243: PUSH
2244: EMPTY
2245: LIST
2246: LIST
2247: PPUSH
2248: CALL_OW 69
2252: IFFALSE 2272
2254: GO 2256
2256: DISABLE
// begin ChangeMissionObjectives ( OApeOut ) ;
2257: LD_STRING OApeOut
2259: PPUSH
2260: CALL_OW 337
// ApeDone = true ;
2264: LD_ADDR_EXP 14
2268: PUSH
2269: LD_INT 1
2271: ST_TO_ADDR
// end ;
2272: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_or , [ f_weapon , ar_flame_thrower ] , [ f_bweapon , ar_flame_thrower ] ] ] ) do
2273: LD_INT 22
2275: PUSH
2276: LD_INT 2
2278: PUSH
2279: EMPTY
2280: LIST
2281: LIST
2282: PUSH
2283: LD_INT 2
2285: PUSH
2286: LD_INT 34
2288: PUSH
2289: LD_INT 26
2291: PUSH
2292: EMPTY
2293: LIST
2294: LIST
2295: PUSH
2296: LD_INT 35
2298: PUSH
2299: LD_INT 26
2301: PUSH
2302: EMPTY
2303: LIST
2304: LIST
2305: PUSH
2306: EMPTY
2307: LIST
2308: LIST
2309: LIST
2310: PUSH
2311: EMPTY
2312: LIST
2313: LIST
2314: PPUSH
2315: CALL_OW 69
2319: IFFALSE 2339
2321: GO 2323
2323: DISABLE
// begin ChangeMissionObjectives ( OFlameOut ) ;
2324: LD_STRING OFlameOut
2326: PPUSH
2327: CALL_OW 337
// FlameDone = true ;
2331: LD_ADDR_EXP 15
2335: PUSH
2336: LD_INT 1
2338: ST_TO_ADDR
// end ; end_of_file
2339: END
// export AtlasEngineer , AtlasDefences , AtlasRepairStrategy ; export AtlasDefenders , AtlasEnemies , AtlasDefenceStrategy ; function PrepareAtlasBase ; var i , h , s ; var eng ; begin
2340: LD_INT 0
2342: PPUSH
2343: PPUSH
2344: PPUSH
2345: PPUSH
2346: PPUSH
// uc_side = 1 ;
2347: LD_ADDR_OWVAR 20
2351: PUSH
2352: LD_INT 1
2354: ST_TO_ADDR
// uc_nation = 1 ;
2355: LD_ADDR_OWVAR 21
2359: PUSH
2360: LD_INT 1
2362: ST_TO_ADDR
// s = [ Rand ( 3 , 4 ) , Rand ( 3 , 5 ) , Rand ( 4 , 5 ) ] [ difficulty ] ;
2363: LD_ADDR_VAR 0 4
2367: PUSH
2368: LD_INT 3
2370: PPUSH
2371: LD_INT 4
2373: PPUSH
2374: CALL_OW 12
2378: PUSH
2379: LD_INT 3
2381: PPUSH
2382: LD_INT 5
2384: PPUSH
2385: CALL_OW 12
2389: PUSH
2390: LD_INT 4
2392: PPUSH
2393: LD_INT 5
2395: PPUSH
2396: CALL_OW 12
2400: PUSH
2401: EMPTY
2402: LIST
2403: LIST
2404: LIST
2405: PUSH
2406: LD_OWVAR 67
2410: ARRAY
2411: ST_TO_ADDR
// AtlasDefences = FilterUnitsInArea ( AtlasBase , [ [ f_side , 1 ] , [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_armoury ] ] ] ) ;
2412: LD_ADDR_EXP 17
2416: PUSH
2417: LD_INT 3
2419: PPUSH
2420: LD_INT 22
2422: PUSH
2423: LD_INT 1
2425: PUSH
2426: EMPTY
2427: LIST
2428: LIST
2429: PUSH
2430: LD_INT 2
2432: PUSH
2433: LD_INT 30
2435: PUSH
2436: LD_INT 31
2438: PUSH
2439: EMPTY
2440: LIST
2441: LIST
2442: PUSH
2443: LD_INT 30
2445: PUSH
2446: LD_INT 32
2448: PUSH
2449: EMPTY
2450: LIST
2451: LIST
2452: PUSH
2453: LD_INT 30
2455: PUSH
2456: LD_INT 4
2458: PUSH
2459: EMPTY
2460: LIST
2461: LIST
2462: PUSH
2463: EMPTY
2464: LIST
2465: LIST
2466: LIST
2467: LIST
2468: PUSH
2469: EMPTY
2470: LIST
2471: LIST
2472: PPUSH
2473: CALL_OW 70
2477: ST_TO_ADDR
// for i in AtlasDefences do
2478: LD_ADDR_VAR 0 2
2482: PUSH
2483: LD_EXP 17
2487: PUSH
2488: FOR_IN
2489: IFFALSE 2541
// begin InitHc ;
2491: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
2495: LD_INT 1
2497: PPUSH
2498: LD_INT 2
2500: PPUSH
2501: CALL_OW 12
2505: PPUSH
2506: LD_VAR 0 4
2510: PPUSH
2511: CALL_OW 381
// h = CreateHuman ;
2515: LD_ADDR_VAR 0 3
2519: PUSH
2520: CALL_OW 44
2524: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
2525: LD_VAR 0 3
2529: PPUSH
2530: LD_VAR 0 2
2534: PPUSH
2535: CALL_OW 52
// end ;
2539: GO 2488
2541: POP
2542: POP
// for i = 1 to [ 1 , 2 , 3 ] [ difficulty ] do
2543: LD_ADDR_VAR 0 2
2547: PUSH
2548: DOUBLE
2549: LD_INT 1
2551: DEC
2552: ST_TO_ADDR
2553: LD_INT 1
2555: PUSH
2556: LD_INT 2
2558: PUSH
2559: LD_INT 3
2561: PUSH
2562: EMPTY
2563: LIST
2564: LIST
2565: LIST
2566: PUSH
2567: LD_OWVAR 67
2571: ARRAY
2572: PUSH
2573: FOR_TO
2574: IFFALSE 2627
// begin InitHc ;
2576: CALL_OW 19
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
2580: LD_INT 1
2582: PPUSH
2583: LD_INT 2
2585: PPUSH
2586: CALL_OW 12
2590: PPUSH
2591: LD_VAR 0 4
2595: PPUSH
2596: CALL_OW 381
// h = CreateHuman ;
2600: LD_ADDR_VAR 0 3
2604: PUSH
2605: CALL_OW 44
2609: ST_TO_ADDR
// PlaceUnitArea ( h , AtlasBase , false ) ;
2610: LD_VAR 0 3
2614: PPUSH
2615: LD_INT 3
2617: PPUSH
2618: LD_INT 0
2620: PPUSH
2621: CALL_OW 49
// end ;
2625: GO 2573
2627: POP
2628: POP
// AtlasDefenders = FilterUnitsInArea ( AtlasBase , [ [ f_side , 1 ] , [ f_or , [ [ f_class , class_soldier ] , [ f_outside ] ] , [ [ f_type , unit_vehicle ] , [ f_not , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , us_cargo_bay ] ] ] ] ] ] ) ;
2629: LD_ADDR_EXP 19
2633: PUSH
2634: LD_INT 3
2636: PPUSH
2637: LD_INT 22
2639: PUSH
2640: LD_INT 1
2642: PUSH
2643: EMPTY
2644: LIST
2645: LIST
2646: PUSH
2647: LD_INT 2
2649: PUSH
2650: LD_INT 25
2652: PUSH
2653: LD_INT 1
2655: PUSH
2656: EMPTY
2657: LIST
2658: LIST
2659: PUSH
2660: LD_INT 56
2662: PUSH
2663: EMPTY
2664: LIST
2665: PUSH
2666: EMPTY
2667: LIST
2668: LIST
2669: PUSH
2670: LD_INT 21
2672: PUSH
2673: LD_INT 2
2675: PUSH
2676: EMPTY
2677: LIST
2678: LIST
2679: PUSH
2680: LD_INT 3
2682: PUSH
2683: LD_INT 2
2685: PUSH
2686: LD_INT 34
2688: PUSH
2689: LD_INT 13
2691: PUSH
2692: EMPTY
2693: LIST
2694: LIST
2695: PUSH
2696: LD_INT 34
2698: PUSH
2699: LD_INT 12
2701: PUSH
2702: EMPTY
2703: LIST
2704: LIST
2705: PUSH
2706: EMPTY
2707: LIST
2708: LIST
2709: LIST
2710: PUSH
2711: EMPTY
2712: LIST
2713: LIST
2714: PUSH
2715: EMPTY
2716: LIST
2717: LIST
2718: PUSH
2719: EMPTY
2720: LIST
2721: LIST
2722: LIST
2723: PUSH
2724: EMPTY
2725: LIST
2726: LIST
2727: PPUSH
2728: CALL_OW 70
2732: ST_TO_ADDR
// for i in UnitFilter ( AtlasDefenders , [ f_type , unit_vehicle ] ) do
2733: LD_ADDR_VAR 0 2
2737: PUSH
2738: LD_EXP 19
2742: PPUSH
2743: LD_INT 21
2745: PUSH
2746: LD_INT 2
2748: PUSH
2749: EMPTY
2750: LIST
2751: LIST
2752: PPUSH
2753: CALL_OW 72
2757: PUSH
2758: FOR_IN
2759: IFFALSE 2811
// begin InitHc ;
2761: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
2765: LD_INT 1
2767: PPUSH
2768: LD_INT 2
2770: PPUSH
2771: CALL_OW 12
2775: PPUSH
2776: LD_VAR 0 4
2780: PPUSH
2781: CALL_OW 383
// h = CreateHuman ;
2785: LD_ADDR_VAR 0 3
2789: PUSH
2790: CALL_OW 44
2794: ST_TO_ADDR
// PlaceHumanInUnit ( h , i ) ;
2795: LD_VAR 0 3
2799: PPUSH
2800: LD_VAR 0 2
2804: PPUSH
2805: CALL_OW 52
// end ;
2809: GO 2758
2811: POP
2812: POP
// InitHc ;
2813: CALL_OW 19
// PrepareEngineer ( Rand ( 1 , 2 ) , s ) ;
2817: LD_INT 1
2819: PPUSH
2820: LD_INT 2
2822: PPUSH
2823: CALL_OW 12
2827: PPUSH
2828: LD_VAR 0 4
2832: PPUSH
2833: CALL_OW 382
// eng = CreateHuman ;
2837: LD_ADDR_VAR 0 5
2841: PUSH
2842: CALL_OW 44
2846: ST_TO_ADDR
// PlaceUnitXY ( eng , 28 , 14 , false ) ;
2847: LD_VAR 0 5
2851: PPUSH
2852: LD_INT 28
2854: PPUSH
2855: LD_INT 14
2857: PPUSH
2858: LD_INT 0
2860: PPUSH
2861: CALL_OW 48
// InitHc ;
2865: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
2869: LD_INT 1
2871: PPUSH
2872: LD_INT 2
2874: PPUSH
2875: CALL_OW 12
2879: PPUSH
2880: LD_VAR 0 4
2884: PPUSH
2885: CALL_OW 383
// h = CreateHuman ;
2889: LD_ADDR_VAR 0 3
2893: PUSH
2894: CALL_OW 44
2898: ST_TO_ADDR
// PlaceHumanInUnit ( h , crane ) ;
2899: LD_VAR 0 3
2903: PPUSH
2904: LD_INT 105
2906: PPUSH
2907: CALL_OW 52
// AtlasEngineer = [ eng , crane ] ;
2911: LD_ADDR_EXP 16
2915: PUSH
2916: LD_VAR 0 5
2920: PUSH
2921: LD_INT 105
2923: PUSH
2924: EMPTY
2925: LIST
2926: LIST
2927: ST_TO_ADDR
// for i = 1 to 3 do
2928: LD_ADDR_VAR 0 2
2932: PUSH
2933: DOUBLE
2934: LD_INT 1
2936: DEC
2937: ST_TO_ADDR
2938: LD_INT 3
2940: PUSH
2941: FOR_TO
2942: IFFALSE 2992
// begin InitHc ;
2944: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , s ) ;
2948: LD_INT 1
2950: PPUSH
2951: LD_INT 2
2953: PPUSH
2954: CALL_OW 12
2958: PPUSH
2959: LD_VAR 0 4
2963: PPUSH
2964: CALL_OW 383
// h = CreateHuman ;
2968: LD_ADDR_VAR 0 3
2972: PUSH
2973: CALL_OW 44
2977: ST_TO_ADDR
// PlaceHumanInUnit ( h , af ) ;
2978: LD_VAR 0 3
2982: PPUSH
2983: LD_INT 114
2985: PPUSH
2986: CALL_OW 52
// end ;
2990: GO 2941
2992: POP
2993: POP
// for i = 1 to 2 do
2994: LD_ADDR_VAR 0 2
2998: PUSH
2999: DOUBLE
3000: LD_INT 1
3002: DEC
3003: ST_TO_ADDR
3004: LD_INT 2
3006: PUSH
3007: FOR_TO
3008: IFFALSE 3058
// begin InitHc ;
3010: CALL_OW 19
// PrepareScientist ( Rand ( 1 , 2 ) , s ) ;
3014: LD_INT 1
3016: PPUSH
3017: LD_INT 2
3019: PPUSH
3020: CALL_OW 12
3024: PPUSH
3025: LD_VAR 0 4
3029: PPUSH
3030: CALL_OW 384
// h = CreateHuman ;
3034: LD_ADDR_VAR 0 3
3038: PUSH
3039: CALL_OW 44
3043: ST_TO_ADDR
// PlaceHumanInUnit ( h , al2 ) ;
3044: LD_VAR 0 3
3048: PPUSH
3049: LD_INT 28
3051: PPUSH
3052: CALL_OW 52
// end ;
3056: GO 3007
3058: POP
3059: POP
// SetBName ( ad , atlas ) ;
3060: LD_INT 45
3062: PPUSH
3063: LD_STRING atlas
3065: PPUSH
3066: CALL_OW 500
// for i in [ tech_Tech2 , tech_Weap1 ] do
3070: LD_ADDR_VAR 0 2
3074: PUSH
3075: LD_INT 49
3077: PUSH
3078: LD_INT 51
3080: PUSH
3081: EMPTY
3082: LIST
3083: LIST
3084: PUSH
3085: FOR_IN
3086: IFFALSE 3102
// AddComResearch ( al2 , i ) ;
3088: LD_INT 28
3090: PPUSH
3091: LD_VAR 0 2
3095: PPUSH
3096: CALL_OW 184
3100: GO 3085
3102: POP
3103: POP
// end ;
3104: LD_VAR 0 1
3108: RET
// every 0 0$1 do
3109: GO 3111
3111: DISABLE
// PrepareAtlasBase ;
3112: CALL 2340 0 0
3116: END
// every 0 0$1 trigger AtlasEngineer do var i ;
3117: LD_EXP 16
3121: IFFALSE 3288
3123: GO 3125
3125: DISABLE
3126: LD_INT 0
3128: PPUSH
// begin enable ;
3129: ENABLE
// if ExistMc ( AtlasRepairStrategy ) and FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3130: LD_EXP 18
3134: PPUSH
3135: CALL_OW 386
3139: PUSH
3140: LD_INT 22
3142: PUSH
3143: LD_INT 2
3145: PUSH
3146: EMPTY
3147: LIST
3148: LIST
3149: PUSH
3150: LD_INT 101
3152: PUSH
3153: LD_INT 1
3155: PUSH
3156: EMPTY
3157: LIST
3158: LIST
3159: PUSH
3160: EMPTY
3161: LIST
3162: LIST
3163: PPUSH
3164: CALL_OW 69
3168: AND
3169: IFFALSE 3209
// begin KillMc ( AtlasRepairStrategy ) ;
3171: LD_EXP 18
3175: PPUSH
3176: CALL_OW 387
// for i in AtlasEngineer do
3180: LD_ADDR_VAR 0 1
3184: PUSH
3185: LD_EXP 16
3189: PUSH
3190: FOR_IN
3191: IFFALSE 3207
// ComMoveToArea ( i , AtlasRepairs ) ;
3193: LD_VAR 0 1
3197: PPUSH
3198: LD_INT 6
3200: PPUSH
3201: CALL_OW 113
3205: GO 3190
3207: POP
3208: POP
// end ; if not ExistMc ( AtlasRepairStrategy ) and not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) then
3209: LD_EXP 18
3213: PPUSH
3214: CALL_OW 386
3218: NOT
3219: PUSH
3220: LD_INT 22
3222: PUSH
3223: LD_INT 2
3225: PUSH
3226: EMPTY
3227: LIST
3228: LIST
3229: PUSH
3230: LD_INT 101
3232: PUSH
3233: LD_INT 1
3235: PUSH
3236: EMPTY
3237: LIST
3238: LIST
3239: PUSH
3240: EMPTY
3241: LIST
3242: LIST
3243: PPUSH
3244: CALL_OW 69
3248: NOT
3249: AND
3250: IFFALSE 3288
// AtlasRepairStrategy = McRepair ( 1 , AtlasEngineer , AtlasDefences , [ [ mcr_bui_limit , 1000 ] ] ) ;
3252: LD_ADDR_EXP 18
3256: PUSH
3257: LD_INT 1
3259: PPUSH
3260: LD_EXP 16
3264: PPUSH
3265: LD_EXP 17
3269: PPUSH
3270: LD_INT 6
3272: PUSH
3273: LD_INT 1000
3275: PUSH
3276: EMPTY
3277: LIST
3278: LIST
3279: PUSH
3280: EMPTY
3281: LIST
3282: PPUSH
3283: CALL_OW 414
3287: ST_TO_ADDR
// ; end ;
3288: PPOPN 1
3290: END
// every 0 0$1 trigger not AtlasEngineer do
3291: LD_EXP 16
3295: NOT
3296: IFFALSE 3310
3298: GO 3300
3300: DISABLE
// KillMc ( AtlasRepairStrategy ) ;
3301: LD_EXP 18
3305: PPUSH
3306: CALL_OW 387
3310: END
// every 0 0$1 trigger UnitFilter ( AtlasDefenders , [ [ f_type , unit_vehicle ] , [ f_ok ] ] ) do var i , m ;
3311: LD_EXP 19
3315: PPUSH
3316: LD_INT 21
3318: PUSH
3319: LD_INT 2
3321: PUSH
3322: EMPTY
3323: LIST
3324: LIST
3325: PUSH
3326: LD_INT 50
3328: PUSH
3329: EMPTY
3330: LIST
3331: PUSH
3332: EMPTY
3333: LIST
3334: LIST
3335: PPUSH
3336: CALL_OW 72
3340: IFFALSE 3654
3342: GO 3344
3344: DISABLE
3345: LD_INT 0
3347: PPUSH
3348: PPUSH
// begin enable ;
3349: ENABLE
// for i in UnitFilter ( AtlasDefenders , [ [ f_type , unit_vehicle ] , [ f_ok ] ] ) do
3350: LD_ADDR_VAR 0 1
3354: PUSH
3355: LD_EXP 19
3359: PPUSH
3360: LD_INT 21
3362: PUSH
3363: LD_INT 2
3365: PUSH
3366: EMPTY
3367: LIST
3368: LIST
3369: PUSH
3370: LD_INT 50
3372: PUSH
3373: EMPTY
3374: LIST
3375: PUSH
3376: EMPTY
3377: LIST
3378: LIST
3379: PPUSH
3380: CALL_OW 72
3384: PUSH
3385: FOR_IN
3386: IFFALSE 3652
// begin if GetLives ( i ) < 500 then
3388: LD_VAR 0 1
3392: PPUSH
3393: CALL_OW 256
3397: PUSH
3398: LD_INT 500
3400: LESS
3401: IFFALSE 3467
// begin m = IsDrivenBy ( i ) ;
3403: LD_ADDR_VAR 0 2
3407: PUSH
3408: LD_VAR 0 1
3412: PPUSH
3413: CALL_OW 311
3417: ST_TO_ADDR
// ComMoveToArea ( i , AtlasRepairs ) ;
3418: LD_VAR 0 1
3422: PPUSH
3423: LD_INT 6
3425: PPUSH
3426: CALL_OW 113
// AddComExitVehicle ( m ) ;
3430: LD_VAR 0 2
3434: PPUSH
3435: CALL_OW 181
// AddComRepairVehicle ( m , i ) ;
3439: LD_VAR 0 2
3443: PPUSH
3444: LD_VAR 0 1
3448: PPUSH
3449: CALL_OW 189
// AddComEnterUnit ( m , i ) ;
3453: LD_VAR 0 2
3457: PPUSH
3458: LD_VAR 0 1
3462: PPUSH
3463: CALL_OW 180
// end ; if not IsDrivenBy ( i ) and GetLives ( i ) = 1000 then
3467: LD_VAR 0 1
3471: PPUSH
3472: CALL_OW 311
3476: NOT
3477: PUSH
3478: LD_VAR 0 1
3482: PPUSH
3483: CALL_OW 256
3487: PUSH
3488: LD_INT 1000
3490: EQUAL
3491: AND
3492: IFFALSE 3559
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3494: LD_ADDR_VAR 0 2
3498: PUSH
3499: LD_INT 22
3501: PUSH
3502: LD_VAR 0 1
3506: PPUSH
3507: CALL_OW 255
3511: PUSH
3512: EMPTY
3513: LIST
3514: LIST
3515: PUSH
3516: LD_INT 25
3518: PUSH
3519: LD_INT 3
3521: PUSH
3522: EMPTY
3523: LIST
3524: LIST
3525: PUSH
3526: EMPTY
3527: LIST
3528: LIST
3529: PPUSH
3530: CALL_OW 69
3534: PPUSH
3535: LD_VAR 0 1
3539: PPUSH
3540: CALL_OW 74
3544: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3545: LD_VAR 0 2
3549: PPUSH
3550: LD_VAR 0 1
3554: PPUSH
3555: CALL_OW 120
// end ; if not IsDrivenBy ( i ) and See ( 2 , i ) then
3559: LD_VAR 0 1
3563: PPUSH
3564: CALL_OW 311
3568: NOT
3569: PUSH
3570: LD_INT 2
3572: PPUSH
3573: LD_VAR 0 1
3577: PPUSH
3578: CALL_OW 292
3582: AND
3583: IFFALSE 3650
// begin m = NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , GetSide ( i ) ] , [ f_class , class_mechanic ] ] ) , i ) ;
3585: LD_ADDR_VAR 0 2
3589: PUSH
3590: LD_INT 22
3592: PUSH
3593: LD_VAR 0 1
3597: PPUSH
3598: CALL_OW 255
3602: PUSH
3603: EMPTY
3604: LIST
3605: LIST
3606: PUSH
3607: LD_INT 25
3609: PUSH
3610: LD_INT 3
3612: PUSH
3613: EMPTY
3614: LIST
3615: LIST
3616: PUSH
3617: EMPTY
3618: LIST
3619: LIST
3620: PPUSH
3621: CALL_OW 69
3625: PPUSH
3626: LD_VAR 0 1
3630: PPUSH
3631: CALL_OW 74
3635: ST_TO_ADDR
// ComEnterUnit ( m , i ) ;
3636: LD_VAR 0 2
3640: PPUSH
3641: LD_VAR 0 1
3645: PPUSH
3646: CALL_OW 120
// end ; end ;
3650: GO 3385
3652: POP
3653: POP
// end ;
3654: PPOPN 2
3656: END
// every 0 0$15 trigger FilterUnitsInArea ( AtlasBase , [ [ f_side , 1 ] , [ f_empty ] , [ f_ready ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) do var a , i ;
3657: LD_INT 3
3659: PPUSH
3660: LD_INT 22
3662: PUSH
3663: LD_INT 1
3665: PUSH
3666: EMPTY
3667: LIST
3668: LIST
3669: PUSH
3670: LD_INT 58
3672: PUSH
3673: EMPTY
3674: LIST
3675: PUSH
3676: LD_INT 53
3678: PUSH
3679: EMPTY
3680: LIST
3681: PUSH
3682: LD_INT 50
3684: PUSH
3685: EMPTY
3686: LIST
3687: PUSH
3688: LD_INT 2
3690: PUSH
3691: LD_INT 30
3693: PUSH
3694: LD_INT 32
3696: PUSH
3697: EMPTY
3698: LIST
3699: LIST
3700: PUSH
3701: LD_INT 30
3703: PUSH
3704: LD_INT 31
3706: PUSH
3707: EMPTY
3708: LIST
3709: LIST
3710: PUSH
3711: EMPTY
3712: LIST
3713: LIST
3714: LIST
3715: PUSH
3716: EMPTY
3717: LIST
3718: LIST
3719: LIST
3720: LIST
3721: LIST
3722: PPUSH
3723: CALL_OW 70
3727: IFFALSE 3877
3729: GO 3731
3731: DISABLE
3732: LD_INT 0
3734: PPUSH
3735: PPUSH
// begin a = FilterUnitsInArea ( AtlasBase , [ [ f_side , 1 ] , [ f_empty ] , [ f_ok ] , [ f_or , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
3736: LD_ADDR_VAR 0 1
3740: PUSH
3741: LD_INT 3
3743: PPUSH
3744: LD_INT 22
3746: PUSH
3747: LD_INT 1
3749: PUSH
3750: EMPTY
3751: LIST
3752: LIST
3753: PUSH
3754: LD_INT 58
3756: PUSH
3757: EMPTY
3758: LIST
3759: PUSH
3760: LD_INT 50
3762: PUSH
3763: EMPTY
3764: LIST
3765: PUSH
3766: LD_INT 2
3768: PUSH
3769: LD_INT 30
3771: PUSH
3772: LD_INT 32
3774: PUSH
3775: EMPTY
3776: LIST
3777: LIST
3778: PUSH
3779: LD_INT 30
3781: PUSH
3782: LD_INT 31
3784: PUSH
3785: EMPTY
3786: LIST
3787: LIST
3788: PUSH
3789: EMPTY
3790: LIST
3791: LIST
3792: LIST
3793: PUSH
3794: EMPTY
3795: LIST
3796: LIST
3797: LIST
3798: LIST
3799: PPUSH
3800: CALL_OW 70
3804: ST_TO_ADDR
// for i in a do
3805: LD_ADDR_VAR 0 2
3809: PUSH
3810: LD_VAR 0 1
3814: PUSH
3815: FOR_IN
3816: IFFALSE 3875
// AddComEnterUnit ( NearestUnitToUnit ( FilterAllUnits ( [ [ f_side , 1 ] , [ f_class , class_soldier ] , [ f_outside ] ] ) , i ) , i ) ;
3818: LD_INT 22
3820: PUSH
3821: LD_INT 1
3823: PUSH
3824: EMPTY
3825: LIST
3826: LIST
3827: PUSH
3828: LD_INT 25
3830: PUSH
3831: LD_INT 1
3833: PUSH
3834: EMPTY
3835: LIST
3836: LIST
3837: PUSH
3838: LD_INT 56
3840: PUSH
3841: EMPTY
3842: LIST
3843: PUSH
3844: EMPTY
3845: LIST
3846: LIST
3847: LIST
3848: PPUSH
3849: CALL_OW 69
3853: PPUSH
3854: LD_VAR 0 2
3858: PPUSH
3859: CALL_OW 74
3863: PPUSH
3864: LD_VAR 0 2
3868: PPUSH
3869: CALL_OW 180
3873: GO 3815
3875: POP
3876: POP
// end ;
3877: PPOPN 2
3879: END
// every 0 0$1 do
3880: GO 3882
3882: DISABLE
// AtlasEnemies = McRegistry ( 1 , [ [ mc_reg_area_to_protect , AtlasBase ] , [ mc_reg_refresh_time , 0 0$1 ] ] ) ;
3883: LD_ADDR_EXP 20
3887: PUSH
3888: LD_INT 1
3890: PPUSH
3891: LD_INT 3
3893: PUSH
3894: LD_INT 3
3896: PUSH
3897: EMPTY
3898: LIST
3899: LIST
3900: PUSH
3901: LD_INT 1
3903: PUSH
3904: LD_INT 35
3906: PUSH
3907: EMPTY
3908: LIST
3909: LIST
3910: PUSH
3911: EMPTY
3912: LIST
3913: LIST
3914: PPUSH
3915: CALL_OW 399
3919: ST_TO_ADDR
3920: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) do var i , t ;
3921: LD_INT 22
3923: PUSH
3924: LD_INT 2
3926: PUSH
3927: EMPTY
3928: LIST
3929: LIST
3930: PUSH
3931: LD_INT 101
3933: PUSH
3934: LD_INT 1
3936: PUSH
3937: EMPTY
3938: LIST
3939: LIST
3940: PUSH
3941: EMPTY
3942: LIST
3943: LIST
3944: PPUSH
3945: CALL_OW 69
3949: IFFALSE 4166
3951: GO 3953
3953: DISABLE
3954: LD_INT 0
3956: PPUSH
3957: PPUSH
// begin enable ;
3958: ENABLE
// if not ExistMc ( AtlasDefenceStrategy ) then
3959: LD_EXP 21
3963: PPUSH
3964: CALL_OW 386
3968: NOT
3969: IFFALSE 4122
// begin AtlasDefenders = FilterUnitsInArea ( AtlasBase , [ [ f_side , 1 ] , [ f_or , [ [ f_class , class_soldier ] , [ f_outside ] ] , [ [ f_type , unit_vehicle ] , [ f_not , [ f_or , [ f_weapon , us_crane ] , [ f_weapon , us_cargo_bay ] ] ] ] ] ] ) ;
3971: LD_ADDR_EXP 19
3975: PUSH
3976: LD_INT 3
3978: PPUSH
3979: LD_INT 22
3981: PUSH
3982: LD_INT 1
3984: PUSH
3985: EMPTY
3986: LIST
3987: LIST
3988: PUSH
3989: LD_INT 2
3991: PUSH
3992: LD_INT 25
3994: PUSH
3995: LD_INT 1
3997: PUSH
3998: EMPTY
3999: LIST
4000: LIST
4001: PUSH
4002: LD_INT 56
4004: PUSH
4005: EMPTY
4006: LIST
4007: PUSH
4008: EMPTY
4009: LIST
4010: LIST
4011: PUSH
4012: LD_INT 21
4014: PUSH
4015: LD_INT 2
4017: PUSH
4018: EMPTY
4019: LIST
4020: LIST
4021: PUSH
4022: LD_INT 3
4024: PUSH
4025: LD_INT 2
4027: PUSH
4028: LD_INT 34
4030: PUSH
4031: LD_INT 13
4033: PUSH
4034: EMPTY
4035: LIST
4036: LIST
4037: PUSH
4038: LD_INT 34
4040: PUSH
4041: LD_INT 12
4043: PUSH
4044: EMPTY
4045: LIST
4046: LIST
4047: PUSH
4048: EMPTY
4049: LIST
4050: LIST
4051: LIST
4052: PUSH
4053: EMPTY
4054: LIST
4055: LIST
4056: PUSH
4057: EMPTY
4058: LIST
4059: LIST
4060: PUSH
4061: EMPTY
4062: LIST
4063: LIST
4064: LIST
4065: PUSH
4066: EMPTY
4067: LIST
4068: LIST
4069: PPUSH
4070: CALL_OW 70
4074: ST_TO_ADDR
// AtlasDefenceStrategy = McDefend ( 1 , AtlasEnemies , AtlasDefenders , [ [ mc_def_advantage , 200 ] , [ mc_area_dont_leave , AtlasBase ] ] ) ;
4075: LD_ADDR_EXP 21
4079: PUSH
4080: LD_INT 1
4082: PPUSH
4083: LD_EXP 20
4087: PPUSH
4088: LD_EXP 19
4092: PPUSH
4093: LD_INT 1
4095: PUSH
4096: LD_INT 200
4098: PUSH
4099: EMPTY
4100: LIST
4101: LIST
4102: PUSH
4103: LD_INT 2
4105: PUSH
4106: LD_INT 3
4108: PUSH
4109: EMPTY
4110: LIST
4111: LIST
4112: PUSH
4113: EMPTY
4114: LIST
4115: LIST
4116: PPUSH
4117: CALL_OW 401
4121: ST_TO_ADDR
// end ; for i in AtlasDefenders do
4122: LD_ADDR_VAR 0 1
4126: PUSH
4127: LD_EXP 19
4131: PUSH
4132: FOR_IN
4133: IFFALSE 4164
// if not IsInArea ( i , AtlasBase ) then
4135: LD_VAR 0 1
4139: PPUSH
4140: LD_INT 3
4142: PPUSH
4143: CALL_OW 308
4147: NOT
4148: IFFALSE 4162
// ComMoveToArea ( i , AtlasBase ) ;
4150: LD_VAR 0 1
4154: PPUSH
4155: LD_INT 3
4157: PPUSH
4158: CALL_OW 113
4162: GO 4132
4164: POP
4165: POP
// end ;
4166: PPOPN 2
4168: END
// every 0 0$1 trigger not FilterAllUnits ( [ [ f_side , 2 ] , [ f_see , 1 ] ] ) do var i ;
4169: LD_INT 22
4171: PUSH
4172: LD_INT 2
4174: PUSH
4175: EMPTY
4176: LIST
4177: LIST
4178: PUSH
4179: LD_INT 101
4181: PUSH
4182: LD_INT 1
4184: PUSH
4185: EMPTY
4186: LIST
4187: LIST
4188: PUSH
4189: EMPTY
4190: LIST
4191: LIST
4192: PPUSH
4193: CALL_OW 69
4197: NOT
4198: IFFALSE 4268
4200: GO 4202
4202: DISABLE
4203: LD_INT 0
4205: PPUSH
// begin enable ;
4206: ENABLE
// if ExistMc ( AtlasDefenceStrategy ) then
4207: LD_EXP 21
4211: PPUSH
4212: CALL_OW 386
4216: IFFALSE 4227
// KillMc ( AtlasDefenceStrategy ) ;
4218: LD_EXP 21
4222: PPUSH
4223: CALL_OW 387
// for i in AtlasDefenders do
4227: LD_ADDR_VAR 0 1
4231: PUSH
4232: LD_EXP 19
4236: PUSH
4237: FOR_IN
4238: IFFALSE 4266
// if not HasTask ( i ) then
4240: LD_VAR 0 1
4244: PPUSH
4245: CALL_OW 314
4249: NOT
4250: IFFALSE 4264
// ComMoveToArea ( i , AtlasPositions ) ;
4252: LD_VAR 0 1
4256: PPUSH
4257: LD_INT 11
4259: PPUSH
4260: CALL_OW 113
4264: GO 4237
4266: POP
4267: POP
// end ;
4268: PPOPN 1
4270: END
// every 6 6$0 do
4271: GO 4273
4273: DISABLE
// if not ExistMc ( AtlasDefenceStrategy ) then
4274: LD_EXP 21
4278: PPUSH
4279: CALL_OW 386
4283: NOT
4284: IFFALSE 4309
// ComBuild ( AtlasEngineer , b_bunker , 42 , 13 , 4 ) else
4286: LD_EXP 16
4290: PPUSH
4291: LD_INT 32
4293: PPUSH
4294: LD_INT 42
4296: PPUSH
4297: LD_INT 13
4299: PPUSH
4300: LD_INT 4
4302: PPUSH
4303: CALL_OW 145
4307: GO 4349
// begin repeat Wait ( 0 0$1 ) until not ExistMc ( AtlasDefenceStrategy ) ;
4309: LD_INT 35
4311: PPUSH
4312: CALL_OW 67
4316: LD_EXP 21
4320: PPUSH
4321: CALL_OW 386
4325: NOT
4326: IFFALSE 4309
// ComBuild ( AtlasEngineer , b_bunker , 42 , 13 , 4 ) ;
4328: LD_EXP 16
4332: PPUSH
4333: LD_INT 32
4335: PPUSH
4336: LD_INT 42
4338: PPUSH
4339: LD_INT 13
4341: PPUSH
4342: LD_INT 4
4344: PPUSH
4345: CALL_OW 145
// end ;
4349: END
// every 15 15$0 do
4350: GO 4352
4352: DISABLE
// AddComConstruct ( af , us_medium_tracked , engine_combustion , control_manual , [ us_machine_gun , us_machine_gun , us_gatling_gun ] [ difficulty ] ) ;
4353: LD_INT 114
4355: PPUSH
4356: LD_INT 3
4358: PPUSH
4359: LD_INT 1
4361: PPUSH
4362: LD_INT 1
4364: PPUSH
4365: LD_INT 2
4367: PUSH
4368: LD_INT 2
4370: PUSH
4371: LD_INT 4
4373: PUSH
4374: EMPTY
4375: LIST
4376: LIST
4377: LIST
4378: PUSH
4379: LD_OWVAR 67
4383: ARRAY
4384: PPUSH
4385: CALL_OW 185
4389: END
// on BuildingComplete ( b ) do begin if GetBType ( b ) = b_bunker and GetSide ( b ) = 1 then
4390: LD_VAR 0 1
4394: PPUSH
4395: CALL_OW 266
4399: PUSH
4400: LD_INT 32
4402: EQUAL
4403: PUSH
4404: LD_VAR 0 1
4408: PPUSH
4409: CALL_OW 255
4413: PUSH
4414: LD_INT 1
4416: EQUAL
4417: AND
4418: IFFALSE 4469
// begin ComPlaceWeapon ( b , us_gatling_gun ) ;
4420: LD_VAR 0 1
4424: PPUSH
4425: LD_INT 4
4427: PPUSH
4428: CALL_OW 148
// ComExitBuilding ( UnitsInside ( aa ) [ 1 ] ) ;
4432: LD_INT 15
4434: PPUSH
4435: CALL_OW 313
4439: PUSH
4440: LD_INT 1
4442: ARRAY
4443: PPUSH
4444: CALL_OW 122
// ComEnterUnit ( UnitsInside ( aa ) [ 1 ] , b ) ;
4448: LD_INT 15
4450: PPUSH
4451: CALL_OW 313
4455: PUSH
4456: LD_INT 1
4458: ARRAY
4459: PPUSH
4460: LD_VAR 0 1
4464: PPUSH
4465: CALL_OW 120
// end ; end ; end_of_file
4469: PPOPN 1
4471: END
// export VehsTaken ; on VehicleCaptured ( ni , oi , os , u ) do if os = 1 then
4472: LD_VAR 0 3
4476: PUSH
4477: LD_INT 1
4479: EQUAL
4480: IFFALSE 4496
// VehsTaken = VehsTaken + 1 ;
4482: LD_ADDR_EXP 22
4486: PUSH
4487: LD_EXP 22
4491: PUSH
4492: LD_INT 1
4494: PLUS
4495: ST_TO_ADDR
4496: PPOPN 4
4498: END
// export Transports ; every 0 0$1 do var i , v ; var j , path ;
4499: GO 4501
4501: DISABLE
4502: LD_INT 0
4504: PPUSH
4505: PPUSH
4506: PPUSH
4507: PPUSH
// begin case VehsTaken of 0 .. 3 :
4508: LD_EXP 22
4512: PUSH
4513: LD_INT 0
4515: DOUBLE
4516: GREATEREQUAL
4517: IFFALSE 4525
4519: LD_INT 3
4521: DOUBLE
4522: LESSEQUAL
4523: IFTRUE 4527
4525: GO 4545
4527: POP
// Wait ( Rand ( 3 3$0 , 3 3$30 ) ) ; 4 .. 6 :
4528: LD_INT 6300
4530: PPUSH
4531: LD_INT 7350
4533: PPUSH
4534: CALL_OW 12
4538: PPUSH
4539: CALL_OW 67
4543: GO 4612
4545: LD_INT 4
4547: DOUBLE
4548: GREATEREQUAL
4549: IFFALSE 4557
4551: LD_INT 6
4553: DOUBLE
4554: LESSEQUAL
4555: IFTRUE 4559
4557: GO 4577
4559: POP
// Wait ( Rand ( 5 5$0 , 8 8$0 ) ) ; 7 .. 10 :
4560: LD_INT 10500
4562: PPUSH
4563: LD_INT 16800
4565: PPUSH
4566: CALL_OW 12
4570: PPUSH
4571: CALL_OW 67
4575: GO 4612
4577: LD_INT 7
4579: DOUBLE
4580: GREATEREQUAL
4581: IFFALSE 4589
4583: LD_INT 10
4585: DOUBLE
4586: LESSEQUAL
4587: IFTRUE 4591
4589: GO 4609
4591: POP
// Wait ( Rand ( 10 10$0 , 15 15$0 ) ) ; else
4592: LD_INT 21000
4594: PPUSH
4595: LD_INT 31500
4597: PPUSH
4598: CALL_OW 12
4602: PPUSH
4603: CALL_OW 67
4607: GO 4612
4609: POP
// exit ; end ;
4610: GO 5234
// if GetSide ( ad ) <> 1 or GetLives ( ad ) < 1000 then
4612: LD_INT 45
4614: PPUSH
4615: CALL_OW 255
4619: PUSH
4620: LD_INT 1
4622: NONEQUAL
4623: PUSH
4624: LD_INT 45
4626: PPUSH
4627: CALL_OW 256
4631: PUSH
4632: LD_INT 1000
4634: LESS
4635: OR
4636: IFFALSE 4640
// exit ;
4638: GO 5234
// uc_side = 1 ;
4640: LD_ADDR_OWVAR 20
4644: PUSH
4645: LD_INT 1
4647: ST_TO_ADDR
// uc_nation = 1 ;
4648: LD_ADDR_OWVAR 21
4652: PUSH
4653: LD_INT 1
4655: ST_TO_ADDR
// uc_direction = 5 ;
4656: LD_ADDR_OWVAR 24
4660: PUSH
4661: LD_INT 5
4663: ST_TO_ADDR
// vc_control = control_manual ;
4664: LD_ADDR_OWVAR 38
4668: PUSH
4669: LD_INT 1
4671: ST_TO_ADDR
// vc_engine = engine_solar ;
4672: LD_ADDR_OWVAR 39
4676: PUSH
4677: LD_INT 2
4679: ST_TO_ADDR
// path = [ [ 135 , 145 ] , [ 119 , 125 ] , [ 102 , 107 ] , [ 94 , 100 ] , [ 80 , 91 ] , [ 60 , 74 ] , [ 50 , 60 ] , [ 37 , 41 ] , [ 27 , 19 ] , [ 15 , 3 ] ] ;
4680: LD_ADDR_VAR 0 4
4684: PUSH
4685: LD_INT 135
4687: PUSH
4688: LD_INT 145
4690: PUSH
4691: EMPTY
4692: LIST
4693: LIST
4694: PUSH
4695: LD_INT 119
4697: PUSH
4698: LD_INT 125
4700: PUSH
4701: EMPTY
4702: LIST
4703: LIST
4704: PUSH
4705: LD_INT 102
4707: PUSH
4708: LD_INT 107
4710: PUSH
4711: EMPTY
4712: LIST
4713: LIST
4714: PUSH
4715: LD_INT 94
4717: PUSH
4718: LD_INT 100
4720: PUSH
4721: EMPTY
4722: LIST
4723: LIST
4724: PUSH
4725: LD_INT 80
4727: PUSH
4728: LD_INT 91
4730: PUSH
4731: EMPTY
4732: LIST
4733: LIST
4734: PUSH
4735: LD_INT 60
4737: PUSH
4738: LD_INT 74
4740: PUSH
4741: EMPTY
4742: LIST
4743: LIST
4744: PUSH
4745: LD_INT 50
4747: PUSH
4748: LD_INT 60
4750: PUSH
4751: EMPTY
4752: LIST
4753: LIST
4754: PUSH
4755: LD_INT 37
4757: PUSH
4758: LD_INT 41
4760: PUSH
4761: EMPTY
4762: LIST
4763: LIST
4764: PUSH
4765: LD_INT 27
4767: PUSH
4768: LD_INT 19
4770: PUSH
4771: EMPTY
4772: LIST
4773: LIST
4774: PUSH
4775: LD_INT 15
4777: PUSH
4778: LD_INT 3
4780: PUSH
4781: EMPTY
4782: LIST
4783: LIST
4784: PUSH
4785: EMPTY
4786: LIST
4787: LIST
4788: LIST
4789: LIST
4790: LIST
4791: LIST
4792: LIST
4793: LIST
4794: LIST
4795: LIST
4796: ST_TO_ADDR
// if VehsTaken < [ 3 , 2 , 2 ] [ difficulty ] then
4797: LD_EXP 22
4801: PUSH
4802: LD_INT 3
4804: PUSH
4805: LD_INT 2
4807: PUSH
4808: LD_INT 2
4810: PUSH
4811: EMPTY
4812: LIST
4813: LIST
4814: LIST
4815: PUSH
4816: LD_OWVAR 67
4820: ARRAY
4821: LESS
4822: IFFALSE 5008
// for i = 1 to 2 do
4824: LD_ADDR_VAR 0 1
4828: PUSH
4829: DOUBLE
4830: LD_INT 1
4832: DEC
4833: ST_TO_ADDR
4834: LD_INT 2
4836: PUSH
4837: FOR_TO
4838: IFFALSE 5004
// begin vc_weapon = us_cargo_bay ;
4840: LD_ADDR_OWVAR 40
4844: PUSH
4845: LD_INT 12
4847: ST_TO_ADDR
// vc_chassis = us_medium_wheeled ;
4848: LD_ADDR_OWVAR 37
4852: PUSH
4853: LD_INT 2
4855: ST_TO_ADDR
// v = CreateVehicle ;
4856: LD_ADDR_VAR 0 2
4860: PUSH
4861: CALL_OW 45
4865: ST_TO_ADDR
// PlaceUnitXY ( v , 141 , 156 , false ) ;
4866: LD_VAR 0 2
4870: PPUSH
4871: LD_INT 141
4873: PPUSH
4874: LD_INT 156
4876: PPUSH
4877: LD_INT 0
4879: PPUSH
4880: CALL_OW 48
// SetCargo ( v , mat_oil , 100 ) ;
4884: LD_VAR 0 2
4888: PPUSH
4889: LD_INT 2
4891: PPUSH
4892: LD_INT 100
4894: PPUSH
4895: CALL_OW 290
// InitHc ;
4899: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , 2 ) ;
4903: LD_INT 1
4905: PPUSH
4906: LD_INT 2
4908: PPUSH
4909: CALL_OW 12
4913: PPUSH
4914: LD_INT 2
4916: PPUSH
4917: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , v ) ;
4921: CALL_OW 44
4925: PPUSH
4926: LD_VAR 0 2
4930: PPUSH
4931: CALL_OW 52
// Transports = Transports ^ v ;
4935: LD_ADDR_EXP 23
4939: PUSH
4940: LD_EXP 23
4944: PUSH
4945: LD_VAR 0 2
4949: ADD
4950: ST_TO_ADDR
// for j in path do
4951: LD_ADDR_VAR 0 3
4955: PUSH
4956: LD_VAR 0 4
4960: PUSH
4961: FOR_IN
4962: IFFALSE 4993
// AddComAgressiveMove ( v , j [ 1 ] , j [ 2 ] ) ;
4964: LD_VAR 0 2
4968: PPUSH
4969: LD_VAR 0 3
4973: PUSH
4974: LD_INT 1
4976: ARRAY
4977: PPUSH
4978: LD_VAR 0 3
4982: PUSH
4983: LD_INT 2
4985: ARRAY
4986: PPUSH
4987: CALL_OW 174
4991: GO 4961
4993: POP
4994: POP
// Wait ( 0 0$5 ) ;
4995: LD_INT 175
4997: PPUSH
4998: CALL_OW 67
// end else
5002: GO 4837
5004: POP
5005: POP
5006: GO 5233
// for i = 1 to 3 do
5008: LD_ADDR_VAR 0 1
5012: PUSH
5013: DOUBLE
5014: LD_INT 1
5016: DEC
5017: ST_TO_ADDR
5018: LD_INT 3
5020: PUSH
5021: FOR_TO
5022: IFFALSE 5231
// begin if i = 1 then
5024: LD_VAR 0 1
5028: PUSH
5029: LD_INT 1
5031: EQUAL
5032: IFFALSE 5052
// begin vc_weapon = us_cargo_bay ;
5034: LD_ADDR_OWVAR 40
5038: PUSH
5039: LD_INT 12
5041: ST_TO_ADDR
// vc_chassis = us_medium_wheeled ;
5042: LD_ADDR_OWVAR 37
5046: PUSH
5047: LD_INT 2
5049: ST_TO_ADDR
// end else
5050: GO 5068
// begin vc_weapon = us_machine_gun ;
5052: LD_ADDR_OWVAR 40
5056: PUSH
5057: LD_INT 2
5059: ST_TO_ADDR
// vc_chassis = us_light_wheeled ;
5060: LD_ADDR_OWVAR 37
5064: PUSH
5065: LD_INT 1
5067: ST_TO_ADDR
// end ; v = CreateVehicle ;
5068: LD_ADDR_VAR 0 2
5072: PUSH
5073: CALL_OW 45
5077: ST_TO_ADDR
// PlaceUnitXY ( v , 141 , 156 , false ) ;
5078: LD_VAR 0 2
5082: PPUSH
5083: LD_INT 141
5085: PPUSH
5086: LD_INT 156
5088: PPUSH
5089: LD_INT 0
5091: PPUSH
5092: CALL_OW 48
// if GetWeapon ( v ) = us_cargo_bay then
5096: LD_VAR 0 2
5100: PPUSH
5101: CALL_OW 264
5105: PUSH
5106: LD_INT 12
5108: EQUAL
5109: IFFALSE 5126
// SetCargo ( v , mat_oil , 100 ) ;
5111: LD_VAR 0 2
5115: PPUSH
5116: LD_INT 2
5118: PPUSH
5119: LD_INT 100
5121: PPUSH
5122: CALL_OW 290
// InitHc ;
5126: CALL_OW 19
// PrepareMechanic ( Rand ( 1 , 2 ) , 2 ) ;
5130: LD_INT 1
5132: PPUSH
5133: LD_INT 2
5135: PPUSH
5136: CALL_OW 12
5140: PPUSH
5141: LD_INT 2
5143: PPUSH
5144: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , v ) ;
5148: CALL_OW 44
5152: PPUSH
5153: LD_VAR 0 2
5157: PPUSH
5158: CALL_OW 52
// Transports = Transports ^ v ;
5162: LD_ADDR_EXP 23
5166: PUSH
5167: LD_EXP 23
5171: PUSH
5172: LD_VAR 0 2
5176: ADD
5177: ST_TO_ADDR
// for j in path do
5178: LD_ADDR_VAR 0 3
5182: PUSH
5183: LD_VAR 0 4
5187: PUSH
5188: FOR_IN
5189: IFFALSE 5220
// AddComAgressiveMove ( v , j [ 1 ] , j [ 2 ] ) ;
5191: LD_VAR 0 2
5195: PPUSH
5196: LD_VAR 0 3
5200: PUSH
5201: LD_INT 1
5203: ARRAY
5204: PPUSH
5205: LD_VAR 0 3
5209: PUSH
5210: LD_INT 2
5212: ARRAY
5213: PPUSH
5214: CALL_OW 174
5218: GO 5188
5220: POP
5221: POP
// Wait ( 0 0$5 ) ;
5222: LD_INT 175
5224: PPUSH
5225: CALL_OW 67
// end ;
5229: GO 5021
5231: POP
5232: POP
// enable ;
5233: ENABLE
// end ;
5234: PPOPN 4
5236: END
// every 0 0$5 trigger Transports do var i ;
5237: LD_EXP 23
5241: IFFALSE 5290
5243: GO 5245
5245: DISABLE
5246: LD_INT 0
5248: PPUSH
// begin enable ;
5249: ENABLE
// for i in Transports do
5250: LD_ADDR_VAR 0 1
5254: PUSH
5255: LD_EXP 23
5259: PUSH
5260: FOR_IN
5261: IFFALSE 5288
// if IsInArea ( i , ExitArea ) then
5263: LD_VAR 0 1
5267: PPUSH
5268: LD_INT 5
5270: PPUSH
5271: CALL_OW 308
5275: IFFALSE 5286
// RemoveUnit ( i ) ;
5277: LD_VAR 0 1
5281: PPUSH
5282: CALL_OW 64
5286: GO 5260
5288: POP
5289: POP
// end ;
5290: PPOPN 1
5292: END
// export AmAttackers , AmTargets , AmAttack ; export AttackTimer ; every 0 0$1 do
5293: GO 5295
5295: DISABLE
// AmTargets = McRegistry ( 1 , [ [ mc_reg_refresh_time , 0 0$3 ] , [ mc_reg_area_to_guard , HillBase ] , mc_reg_ignore_fog , mc_reg_buildings ] ) ;
5296: LD_ADDR_EXP 25
5300: PUSH
5301: LD_INT 1
5303: PPUSH
5304: LD_INT 1
5306: PUSH
5307: LD_INT 105
5309: PUSH
5310: EMPTY
5311: LIST
5312: LIST
5313: PUSH
5314: LD_INT 2
5316: PUSH
5317: LD_INT 2
5319: PUSH
5320: EMPTY
5321: LIST
5322: LIST
5323: PUSH
5324: LD_INT 7
5326: PUSH
5327: LD_INT 9
5329: PUSH
5330: EMPTY
5331: LIST
5332: LIST
5333: LIST
5334: LIST
5335: PPUSH
5336: CALL_OW 399
5340: ST_TO_ADDR
5341: END
// every 0 0$1 trigger VehsTaken do
5342: LD_EXP 22
5346: IFFALSE 5366
5348: GO 5350
5350: DISABLE
// begin enable ;
5351: ENABLE
// AttackTimer = AttackTimer + 0 0$1 ;
5352: LD_ADDR_EXP 27
5356: PUSH
5357: LD_EXP 27
5361: PUSH
5362: LD_INT 35
5364: PLUS
5365: ST_TO_ADDR
// end ;
5366: END
// export function PrepareAttackers ( h , v ) ; var i , s ; begin
5367: LD_INT 0
5369: PPUSH
5370: PPUSH
5371: PPUSH
// s = [ Rand ( 2 , 4 ) , Rand ( 3 , 4 ) , Rand ( 3 , 5 ) ] [ difficulty ] ;
5372: LD_ADDR_VAR 0 5
5376: PUSH
5377: LD_INT 2
5379: PPUSH
5380: LD_INT 4
5382: PPUSH
5383: CALL_OW 12
5387: PUSH
5388: LD_INT 3
5390: PPUSH
5391: LD_INT 4
5393: PPUSH
5394: CALL_OW 12
5398: PUSH
5399: LD_INT 3
5401: PPUSH
5402: LD_INT 5
5404: PPUSH
5405: CALL_OW 12
5409: PUSH
5410: EMPTY
5411: LIST
5412: LIST
5413: LIST
5414: PUSH
5415: LD_OWVAR 67
5419: ARRAY
5420: ST_TO_ADDR
// uc_side = 1 ;
5421: LD_ADDR_OWVAR 20
5425: PUSH
5426: LD_INT 1
5428: ST_TO_ADDR
// uc_nation = 1 ;
5429: LD_ADDR_OWVAR 21
5433: PUSH
5434: LD_INT 1
5436: ST_TO_ADDR
// InitHc ;
5437: CALL_OW 19
// for i in h do
5441: LD_ADDR_VAR 0 4
5445: PUSH
5446: LD_VAR 0 1
5450: PUSH
5451: FOR_IN
5452: IFFALSE 5484
// begin PrepareSoldier ( false , s ) ;
5454: LD_INT 0
5456: PPUSH
5457: LD_VAR 0 5
5461: PPUSH
5462: CALL_OW 381
// AmAttackers = AmAttackers ^ CreateHuman ;
5466: LD_ADDR_EXP 24
5470: PUSH
5471: LD_EXP 24
5475: PUSH
5476: CALL_OW 44
5480: ADD
5481: ST_TO_ADDR
// end ;
5482: GO 5451
5484: POP
5485: POP
// vc_control = control_manual ;
5486: LD_ADDR_OWVAR 38
5490: PUSH
5491: LD_INT 1
5493: ST_TO_ADDR
// vc_engine = engine_solar ;
5494: LD_ADDR_OWVAR 39
5498: PUSH
5499: LD_INT 2
5501: ST_TO_ADDR
// for i in v do
5502: LD_ADDR_VAR 0 4
5506: PUSH
5507: LD_VAR 0 2
5511: PUSH
5512: FOR_IN
5513: IFFALSE 5599
// begin case Rand ( 1 , 2 ) of 1 :
5515: LD_INT 1
5517: PPUSH
5518: LD_INT 2
5520: PPUSH
5521: CALL_OW 12
5525: PUSH
5526: LD_INT 1
5528: DOUBLE
5529: EQUAL
5530: IFTRUE 5534
5532: GO 5553
5534: POP
// begin vc_chassis = us_medium_tracked ;
5535: LD_ADDR_OWVAR 37
5539: PUSH
5540: LD_INT 3
5542: ST_TO_ADDR
// vc_weapon = us_light_gun ;
5543: LD_ADDR_OWVAR 40
5547: PUSH
5548: LD_INT 3
5550: ST_TO_ADDR
// end ; 2 :
5551: GO 5581
5553: LD_INT 2
5555: DOUBLE
5556: EQUAL
5557: IFTRUE 5561
5559: GO 5580
5561: POP
// begin vc_chassis = us_medium_tracked ;
5562: LD_ADDR_OWVAR 37
5566: PUSH
5567: LD_INT 3
5569: ST_TO_ADDR
// vc_weapon = us_gatling_gun ;
5570: LD_ADDR_OWVAR 40
5574: PUSH
5575: LD_INT 4
5577: ST_TO_ADDR
// end ; end ;
5578: GO 5581
5580: POP
// AmAttackers = AmAttackers ^ CreateVehicle ;
5581: LD_ADDR_EXP 24
5585: PUSH
5586: LD_EXP 24
5590: PUSH
5591: CALL_OW 45
5595: ADD
5596: ST_TO_ADDR
// end ;
5597: GO 5512
5599: POP
5600: POP
// for i in AmAttackers do
5601: LD_ADDR_VAR 0 4
5605: PUSH
5606: LD_EXP 24
5610: PUSH
5611: FOR_IN
5612: IFFALSE 5672
// begin PlaceUnitArea ( i , EnterArea , false ) ;
5614: LD_VAR 0 4
5618: PPUSH
5619: LD_INT 1
5621: PPUSH
5622: LD_INT 0
5624: PPUSH
5625: CALL_OW 49
// if GetType ( i ) = unit_vehicle then
5629: LD_VAR 0 4
5633: PPUSH
5634: CALL_OW 247
5638: PUSH
5639: LD_INT 2
5641: EQUAL
5642: IFFALSE 5670
// begin PrepareMechanic ( false , s ) ;
5644: LD_INT 0
5646: PPUSH
5647: LD_VAR 0 5
5651: PPUSH
5652: CALL_OW 383
// PlaceHumanInUnit ( CreateHuman , i ) ;
5656: CALL_OW 44
5660: PPUSH
5661: LD_VAR 0 4
5665: PPUSH
5666: CALL_OW 52
// end ; end ;
5670: GO 5611
5672: POP
5673: POP
// end ;
5674: LD_VAR 0 3
5678: RET
// every 0 0$1 trigger AmAttackers do var i , u ;
5679: LD_EXP 24
5683: IFFALSE 5959
5685: GO 5687
5687: DISABLE
5688: LD_INT 0
5690: PPUSH
5691: PPUSH
// begin enable ;
5692: ENABLE
// if not ExistMc ( AmAttack ) and UnitFilter ( AmAttackers , [ f_lives , 1000 ] ) = AmAttackers then
5693: LD_EXP 26
5697: PPUSH
5698: CALL_OW 386
5702: NOT
5703: PUSH
5704: LD_EXP 24
5708: PPUSH
5709: LD_INT 24
5711: PUSH
5712: LD_INT 1000
5714: PUSH
5715: EMPTY
5716: LIST
5717: LIST
5718: PPUSH
5719: CALL_OW 72
5723: PUSH
5724: LD_EXP 24
5728: EQUAL
5729: AND
5730: IFFALSE 5757
// AmAttack = McAttack ( 1 , AmTargets , AmAttackers , [ ] ) ;
5732: LD_ADDR_EXP 26
5736: PUSH
5737: LD_INT 1
5739: PPUSH
5740: LD_EXP 25
5744: PPUSH
5745: LD_EXP 24
5749: PPUSH
5750: EMPTY
5751: PPUSH
5752: CALL_OW 402
5756: ST_TO_ADDR
// if ExistMc ( AmAttack ) and GetMcUnits ( AmAttack ) = 0 then
5757: LD_EXP 26
5761: PPUSH
5762: CALL_OW 386
5766: PUSH
5767: LD_EXP 26
5771: PPUSH
5772: CALL_OW 389
5776: PUSH
5777: LD_INT 0
5779: EQUAL
5780: AND
5781: IFFALSE 5792
// KillMc ( AmAttack ) ;
5783: LD_EXP 26
5787: PPUSH
5788: CALL_OW 387
// for i in AmAttackers do
5792: LD_ADDR_VAR 0 1
5796: PUSH
5797: LD_EXP 24
5801: PUSH
5802: FOR_IN
5803: IFFALSE 5957
// begin if GetLives ( i ) < 500 and GetType ( i ) = unit_vehicle then
5805: LD_VAR 0 1
5809: PPUSH
5810: CALL_OW 256
5814: PUSH
5815: LD_INT 500
5817: LESS
5818: PUSH
5819: LD_VAR 0 1
5823: PPUSH
5824: CALL_OW 247
5828: PUSH
5829: LD_INT 2
5831: EQUAL
5832: AND
5833: IFFALSE 5913
// begin RemoveMcUnits ( AmAttack , i ) ;
5835: LD_EXP 26
5839: PPUSH
5840: LD_VAR 0 1
5844: PPUSH
5845: CALL_OW 391
// ComMoveToArea ( i , AtlasRepairs ) ;
5849: LD_VAR 0 1
5853: PPUSH
5854: LD_INT 6
5856: PPUSH
5857: CALL_OW 113
// u = IsDrivenBy ( i ) ;
5861: LD_ADDR_VAR 0 2
5865: PUSH
5866: LD_VAR 0 1
5870: PPUSH
5871: CALL_OW 311
5875: ST_TO_ADDR
// AddComExitVehicle ( i ) ;
5876: LD_VAR 0 1
5880: PPUSH
5881: CALL_OW 181
// AddComRepairVehicle ( u , i ) ;
5885: LD_VAR 0 2
5889: PPUSH
5890: LD_VAR 0 1
5894: PPUSH
5895: CALL_OW 189
// AddComEnterUnit ( u , i ) ;
5899: LD_VAR 0 2
5903: PPUSH
5904: LD_VAR 0 1
5908: PPUSH
5909: CALL_OW 180
// end ; if IsDead ( i ) or GetSide ( i ) <> 1 then
5913: LD_VAR 0 1
5917: PPUSH
5918: CALL_OW 301
5922: PUSH
5923: LD_VAR 0 1
5927: PPUSH
5928: CALL_OW 255
5932: PUSH
5933: LD_INT 1
5935: NONEQUAL
5936: OR
5937: IFFALSE 5955
// AmAttackers = AmAttackers diff i ;
5939: LD_ADDR_EXP 24
5943: PUSH
5944: LD_EXP 24
5948: PUSH
5949: LD_VAR 0 1
5953: DIFF
5954: ST_TO_ADDR
// end ;
5955: GO 5802
5957: POP
5958: POP
// end ;
5959: PPOPN 2
5961: END
// every 0 0$1 trigger AttackTimer = 5 5$0 do
5962: LD_EXP 27
5966: PUSH
5967: LD_INT 10500
5969: EQUAL
5970: IFFALSE 6002
5972: GO 5974
5974: DISABLE
// PrepareAttackers ( 2 , [ 2 , 2 , 3 ] [ difficulty ] ) ;
5975: LD_INT 2
5977: PPUSH
5978: LD_INT 2
5980: PUSH
5981: LD_INT 2
5983: PUSH
5984: LD_INT 3
5986: PUSH
5987: EMPTY
5988: LIST
5989: LIST
5990: LIST
5991: PUSH
5992: LD_OWVAR 67
5996: ARRAY
5997: PPUSH
5998: CALL 5367 0 2
6002: END
// every 0 0$1 trigger AttackTimer > 15 15$0 and not AmAttackers do
6003: LD_EXP 27
6007: PUSH
6008: LD_INT 31500
6010: GREATER
6011: PUSH
6012: LD_EXP 24
6016: NOT
6017: AND
6018: IFFALSE 6050
6020: GO 6022
6022: DISABLE
// PrepareAttackers ( 3 , [ 2 , 3 , 3 ] [ difficulty ] ) ;
6023: LD_INT 3
6025: PPUSH
6026: LD_INT 2
6028: PUSH
6029: LD_INT 3
6031: PUSH
6032: LD_INT 3
6034: PUSH
6035: EMPTY
6036: LIST
6037: LIST
6038: LIST
6039: PUSH
6040: LD_OWVAR 67
6044: ARRAY
6045: PPUSH
6046: CALL 5367 0 2
6050: END
// export HillAttackers , HillAttack ; every 12 12$30 do var i , h , s ;
6051: GO 6053
6053: DISABLE
6054: LD_INT 0
6056: PPUSH
6057: PPUSH
6058: PPUSH
// begin if ExistMc ( HillAttack ) or difficulty = 1 then
6059: LD_EXP 29
6063: PPUSH
6064: CALL_OW 386
6068: PUSH
6069: LD_OWVAR 67
6073: PUSH
6074: LD_INT 1
6076: EQUAL
6077: OR
6078: IFFALSE 6082
// exit ;
6080: GO 6298
// s = [ Rand ( 2 , 4 ) , Rand ( 3 , 4 ) , Rand ( 3 , 5 ) ] [ difficulty ] ;
6082: LD_ADDR_VAR 0 3
6086: PUSH
6087: LD_INT 2
6089: PPUSH
6090: LD_INT 4
6092: PPUSH
6093: CALL_OW 12
6097: PUSH
6098: LD_INT 3
6100: PPUSH
6101: LD_INT 4
6103: PPUSH
6104: CALL_OW 12
6108: PUSH
6109: LD_INT 3
6111: PPUSH
6112: LD_INT 5
6114: PPUSH
6115: CALL_OW 12
6119: PUSH
6120: EMPTY
6121: LIST
6122: LIST
6123: LIST
6124: PUSH
6125: LD_OWVAR 67
6129: ARRAY
6130: ST_TO_ADDR
// uc_side = 1 ;
6131: LD_ADDR_OWVAR 20
6135: PUSH
6136: LD_INT 1
6138: ST_TO_ADDR
// uc_nation = 1 ;
6139: LD_ADDR_OWVAR 21
6143: PUSH
6144: LD_INT 1
6146: ST_TO_ADDR
// for i = 1 to 5 do
6147: LD_ADDR_VAR 0 1
6151: PUSH
6152: DOUBLE
6153: LD_INT 1
6155: DEC
6156: ST_TO_ADDR
6157: LD_INT 5
6159: PUSH
6160: FOR_TO
6161: IFFALSE 6296
// begin if i < 3 then
6163: LD_VAR 0 1
6167: PUSH
6168: LD_INT 3
6170: LESS
6171: IFFALSE 6195
// PrepareScientist ( Rand ( 1 , 2 ) , s ) else
6173: LD_INT 1
6175: PPUSH
6176: LD_INT 2
6178: PPUSH
6179: CALL_OW 12
6183: PPUSH
6184: LD_VAR 0 3
6188: PPUSH
6189: CALL_OW 384
6193: GO 6215
// PrepareSoldier ( Rand ( 1 , 2 ) , s ) ;
6195: LD_INT 1
6197: PPUSH
6198: LD_INT 2
6200: PPUSH
6201: CALL_OW 12
6205: PPUSH
6206: LD_VAR 0 3
6210: PPUSH
6211: CALL_OW 381
// h = CreateHuman ;
6215: LD_ADDR_VAR 0 2
6219: PUSH
6220: CALL_OW 44
6224: ST_TO_ADDR
// PlaceUnitArea ( h , NorthAttack , false ) ;
6225: LD_VAR 0 2
6229: PPUSH
6230: LD_INT 8
6232: PPUSH
6233: LD_INT 0
6235: PPUSH
6236: CALL_OW 49
// if GetClass ( h ) = class_soldier then
6240: LD_VAR 0 2
6244: PPUSH
6245: CALL_OW 257
6249: PUSH
6250: LD_INT 1
6252: EQUAL
6253: IFFALSE 6273
// HillAttackers = HillAttackers ^ h else
6255: LD_ADDR_EXP 28
6259: PUSH
6260: LD_EXP 28
6264: PUSH
6265: LD_VAR 0 2
6269: ADD
6270: ST_TO_ADDR
6271: GO 6294
// begin ComMoveToArea ( h , NorthPosition ) ;
6273: LD_VAR 0 2
6277: PPUSH
6278: LD_INT 9
6280: PPUSH
6281: CALL_OW 113
// AddComHold ( h ) ;
6285: LD_VAR 0 2
6289: PPUSH
6290: CALL_OW 200
// end ; end ;
6294: GO 6160
6296: POP
6297: POP
// end ;
6298: PPOPN 3
6300: END
// every 0 0$1 trigger HillAttackers do var i ;
6301: LD_EXP 28
6305: IFFALSE 6557
6307: GO 6309
6309: DISABLE
6310: LD_INT 0
6312: PPUSH
// begin enable ;
6313: ENABLE
// if not ExistMc ( HillAttack ) and UnitFilter ( HillAttackers , [ f_lives , 1000 ] ) = HillAttackers then
6314: LD_EXP 29
6318: PPUSH
6319: CALL_OW 386
6323: NOT
6324: PUSH
6325: LD_EXP 28
6329: PPUSH
6330: LD_INT 24
6332: PUSH
6333: LD_INT 1000
6335: PUSH
6336: EMPTY
6337: LIST
6338: LIST
6339: PPUSH
6340: CALL_OW 72
6344: PUSH
6345: LD_EXP 28
6349: EQUAL
6350: AND
6351: IFFALSE 6378
// HillAttack = McAttack ( 1 , AmTargets , HillAttackers , [ ] ) ;
6353: LD_ADDR_EXP 29
6357: PUSH
6358: LD_INT 1
6360: PPUSH
6361: LD_EXP 25
6365: PPUSH
6366: LD_EXP 28
6370: PPUSH
6371: EMPTY
6372: PPUSH
6373: CALL_OW 402
6377: ST_TO_ADDR
// if ExistMc ( HillAttack ) and GetMcUnits ( HillAttack ) = 0 then
6378: LD_EXP 29
6382: PPUSH
6383: CALL_OW 386
6387: PUSH
6388: LD_EXP 29
6392: PPUSH
6393: CALL_OW 389
6397: PUSH
6398: LD_INT 0
6400: EQUAL
6401: AND
6402: IFFALSE 6413
// KillMc ( HillAttack ) ;
6404: LD_EXP 29
6408: PPUSH
6409: CALL_OW 387
// if UnitFilter ( HillAttackers , [ f_ok ] ) = 0 then
6413: LD_EXP 28
6417: PPUSH
6418: LD_INT 50
6420: PUSH
6421: EMPTY
6422: LIST
6423: PPUSH
6424: CALL_OW 72
6428: PUSH
6429: LD_INT 0
6431: EQUAL
6432: IFFALSE 6472
// for i in FilterUnitsInArea ( NorthPosition , [ f_ok ] ) do
6434: LD_ADDR_VAR 0 1
6438: PUSH
6439: LD_INT 9
6441: PPUSH
6442: LD_INT 50
6444: PUSH
6445: EMPTY
6446: LIST
6447: PPUSH
6448: CALL_OW 70
6452: PUSH
6453: FOR_IN
6454: IFFALSE 6470
// ComEnterUnit ( i , al1 ) ;
6456: LD_VAR 0 1
6460: PPUSH
6461: LD_INT 39
6463: PPUSH
6464: CALL_OW 120
6468: GO 6453
6470: POP
6471: POP
// for i in HillAttackers do
6472: LD_ADDR_VAR 0 1
6476: PUSH
6477: LD_EXP 28
6481: PUSH
6482: FOR_IN
6483: IFFALSE 6555
// begin if GetLives ( i ) < 700 then
6485: LD_VAR 0 1
6489: PPUSH
6490: CALL_OW 256
6494: PUSH
6495: LD_INT 700
6497: LESS
6498: IFFALSE 6526
// begin RemoveMcUnits ( HillAttack , i ) ;
6500: LD_EXP 29
6504: PPUSH
6505: LD_VAR 0 1
6509: PPUSH
6510: CALL_OW 391
// ComMoveToArea ( i , NorthPosition ) ;
6514: LD_VAR 0 1
6518: PPUSH
6519: LD_INT 9
6521: PPUSH
6522: CALL_OW 113
// end ; if IsDead ( i ) then
6526: LD_VAR 0 1
6530: PPUSH
6531: CALL_OW 301
6535: IFFALSE 6553
// HillAttackers = HillAttackers diff i ;
6537: LD_ADDR_EXP 28
6541: PUSH
6542: LD_EXP 28
6546: PUSH
6547: LD_VAR 0 1
6551: DIFF
6552: ST_TO_ADDR
// end ;
6553: GO 6482
6555: POP
6556: POP
// end ; end_of_file
6557: PPOPN 1
6559: END
// every 2 2$0 do
6560: GO 6562
6562: DISABLE
// begin enable ;
6563: ENABLE
// CreateCratesAnywhere ( Rand ( 2 , 5 ) , true ) ;
6564: LD_INT 2
6566: PPUSH
6567: LD_INT 5
6569: PPUSH
6570: CALL_OW 12
6574: PPUSH
6575: LD_INT 1
6577: PPUSH
6578: CALL_OW 57
// end ;
6582: END
// every 1 1$45 marked 90 do
6583: GO 6585
6585: DISABLE
// begin enable ;
6586: ENABLE
// Wait ( Rand ( 0 0$1 , 0 0$20 ) ) ;
6587: LD_INT 35
6589: PPUSH
6590: LD_INT 700
6592: PPUSH
6593: CALL_OW 12
6597: PPUSH
6598: CALL_OW 67
// CreateCratesArea ( Rand ( 3 , 5 ) , HillBase , true ) ;
6602: LD_INT 3
6604: PPUSH
6605: LD_INT 5
6607: PPUSH
6608: CALL_OW 12
6612: PPUSH
6613: LD_INT 2
6615: PPUSH
6616: LD_INT 1
6618: PPUSH
6619: CALL_OW 55
// end ;
6623: END
// every 15 15$0 do
6624: GO 6626
6626: DISABLE
// disable ( 90 ) ; end_of_file
6627: LD_INT 90
6629: DISABLE_MARKED
6630: END
// export LabTaken , TechsDone ; every 0 0$1 trigger Researched ( 2 , tech_ApeAgres ) and Researched ( 2 , tech_Tech2 ) and Researched ( 2 , tech_Gatling ) and Researched ( 2 , tech_Explos ) and Researched ( 2 , tech_Weap1 ) and Researched ( 2 , tech_StimDrugs ) and Researched ( 2 , tech_Bio1 ) do
6631: LD_INT 2
6633: PPUSH
6634: LD_INT 11
6636: PPUSH
6637: CALL_OW 325
6641: PUSH
6642: LD_INT 2
6644: PPUSH
6645: LD_INT 49
6647: PPUSH
6648: CALL_OW 325
6652: AND
6653: PUSH
6654: LD_INT 2
6656: PPUSH
6657: LD_INT 69
6659: PPUSH
6660: CALL_OW 325
6664: AND
6665: PUSH
6666: LD_INT 2
6668: PPUSH
6669: LD_INT 42
6671: PPUSH
6672: CALL_OW 325
6676: AND
6677: PUSH
6678: LD_INT 2
6680: PPUSH
6681: LD_INT 51
6683: PPUSH
6684: CALL_OW 325
6688: AND
6689: PUSH
6690: LD_INT 2
6692: PPUSH
6693: LD_INT 5
6695: PPUSH
6696: CALL_OW 325
6700: AND
6701: PUSH
6702: LD_INT 2
6704: PPUSH
6705: LD_INT 66
6707: PPUSH
6708: CALL_OW 325
6712: AND
6713: IFFALSE 6733
6715: GO 6717
6717: DISABLE
// begin TechsDone = true ;
6718: LD_ADDR_EXP 31
6722: PUSH
6723: LD_INT 1
6725: ST_TO_ADDR
// ChangeMissionObjectives ( OTechsOut ) ;
6726: LD_STRING OTechsOut
6728: PPUSH
6729: CALL_OW 337
// end ;
6733: END
// on BuildingCaptured ( b , os , u ) do begin if b = al1 then
6734: LD_VAR 0 1
6738: PUSH
6739: LD_INT 39
6741: EQUAL
6742: IFFALSE 6821
// begin if TechsDone then
6744: LD_EXP 31
6748: IFFALSE 6754
// InGameOn ;
6750: CALL_OW 8
// DialogueOn ;
6754: CALL_OW 6
// Say ( u , de-a-1 ) ;
6758: LD_VAR 0 3
6762: PPUSH
6763: LD_STRING de-a-1
6765: PPUSH
6766: CALL_OW 88
// if TechsDone then
6770: LD_EXP 31
6774: IFFALSE 6790
// Say ( Gom , de-l-1 ) else
6776: LD_EXP 3
6780: PPUSH
6781: LD_STRING de-l-1
6783: PPUSH
6784: CALL_OW 88
6788: GO 6802
// Say ( Gom , de-l-1a ) ;
6790: LD_EXP 3
6794: PPUSH
6795: LD_STRING de-l-1a
6797: PPUSH
6798: CALL_OW 88
// DialogueOff ;
6802: CALL_OW 7
// ChangeMissionObjectives ( OAtlasOut ) ;
6806: LD_STRING OAtlasOut
6808: PPUSH
6809: CALL_OW 337
// LabTaken = true ;
6813: LD_ADDR_EXP 30
6817: PUSH
6818: LD_INT 1
6820: ST_TO_ADDR
// end ; end ;
6821: PPOPN 3
6823: END
// every 0 0$1 trigger TechsDone and LabTaken do
6824: LD_EXP 31
6828: PUSH
6829: LD_EXP 30
6833: AND
6834: IFFALSE 7194
6836: GO 6838
6838: DISABLE
// begin if not ingame_video then
6839: LD_OWVAR 52
6843: NOT
6844: IFFALSE 6850
// InGameOn ;
6846: CALL_OW 8
// DialogueOn ;
6850: CALL_OW 6
// SayRadio ( Bojan , de-b-1 ) ;
6854: LD_EXP 2
6858: PPUSH
6859: LD_STRING de-b-1
6861: PPUSH
6862: CALL_OW 94
// Say ( Antoine , de-a-2 ) ;
6866: LD_EXP 1
6870: PPUSH
6871: LD_STRING de-a-2
6873: PPUSH
6874: CALL_OW 88
// SayRadio ( Bojan , de-b-2 ) ;
6878: LD_EXP 2
6882: PPUSH
6883: LD_STRING de-b-2
6885: PPUSH
6886: CALL_OW 94
// Say ( Antoine , de-a-3 ) ;
6890: LD_EXP 1
6894: PPUSH
6895: LD_STRING de-a-3
6897: PPUSH
6898: CALL_OW 88
// DialogueOff ;
6902: CALL_OW 7
// InGameOff ;
6906: CALL_OW 9
// if ApeDone = true then
6910: LD_EXP 14
6914: PUSH
6915: LD_INT 1
6917: EQUAL
6918: IFFALSE 6932
// AddMedal ( MApe , 1 ) else
6920: LD_STRING MApe
6922: PPUSH
6923: LD_INT 1
6925: PPUSH
6926: CALL_OW 101
6930: GO 6943
// AddMedal ( MApe , - 1 ) ;
6932: LD_STRING MApe
6934: PPUSH
6935: LD_INT 1
6937: NEG
6938: PPUSH
6939: CALL_OW 101
// if FlameDone = true then
6943: LD_EXP 15
6947: PUSH
6948: LD_INT 1
6950: EQUAL
6951: IFFALSE 6965
// AddMedal ( MFlame , 1 ) else
6953: LD_STRING MFlame
6955: PPUSH
6956: LD_INT 1
6958: PPUSH
6959: CALL_OW 101
6963: GO 6976
// AddMedal ( MFlame , - 1 ) ;
6965: LD_STRING MFlame
6967: PPUSH
6968: LD_INT 1
6970: NEG
6971: PPUSH
6972: CALL_OW 101
// if GomOthers = 3 then
6976: LD_EXP 7
6980: PUSH
6981: LD_INT 3
6983: EQUAL
6984: IFFALSE 6998
// AddMedal ( MScientists , 1 ) else
6986: LD_STRING MScientists
6988: PPUSH
6989: LD_INT 1
6991: PPUSH
6992: CALL_OW 101
6996: GO 7009
// AddMedal ( MScientists , - 1 ) ;
6998: LD_STRING MScientists
7000: PPUSH
7001: LD_INT 1
7003: NEG
7004: PPUSH
7005: CALL_OW 101
// GiveMedals ( Main ) ;
7009: LD_STRING Main
7011: PPUSH
7012: CALL_OW 102
// RewardPeople ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] ] ) ) ;
7016: LD_INT 22
7018: PUSH
7019: LD_INT 2
7021: PUSH
7022: EMPTY
7023: LIST
7024: LIST
7025: PUSH
7026: LD_INT 21
7028: PUSH
7029: LD_INT 1
7031: PUSH
7032: EMPTY
7033: LIST
7034: LIST
7035: PUSH
7036: LD_INT 23
7038: PUSH
7039: LD_INT 2
7041: PUSH
7042: EMPTY
7043: LIST
7044: LIST
7045: PUSH
7046: EMPTY
7047: LIST
7048: LIST
7049: LIST
7050: PPUSH
7051: CALL_OW 69
7055: PPUSH
7056: CALL_OW 43
// SaveCharacters ( Antoine , Antoine ) ;
7060: LD_EXP 1
7064: PPUSH
7065: LD_STRING Antoine
7067: PPUSH
7068: CALL_OW 38
// SaveCharacters ( Gom , Gom ) ;
7072: LD_EXP 3
7076: PPUSH
7077: LD_STRING Gom
7079: PPUSH
7080: CALL_OW 38
// if Tarpan then
7084: LD_EXP 4
7088: IFFALSE 7102
// SaveCharacters ( Tarpan , Tarpan ) ;
7090: LD_EXP 4
7094: PPUSH
7095: LD_STRING Tarpan
7097: PPUSH
7098: CALL_OW 38
// SaveCharacters ( FilterAllUnits ( [ [ f_side , 2 ] , [ f_type , unit_human ] , [ f_nation , nation_arabian ] ] ) diff [ Antoine , Gom , Tarpan ] , TeamTarpan ) ;
7102: LD_INT 22
7104: PUSH
7105: LD_INT 2
7107: PUSH
7108: EMPTY
7109: LIST
7110: LIST
7111: PUSH
7112: LD_INT 21
7114: PUSH
7115: LD_INT 1
7117: PUSH
7118: EMPTY
7119: LIST
7120: LIST
7121: PUSH
7122: LD_INT 23
7124: PUSH
7125: LD_INT 2
7127: PUSH
7128: EMPTY
7129: LIST
7130: LIST
7131: PUSH
7132: EMPTY
7133: LIST
7134: LIST
7135: LIST
7136: PPUSH
7137: CALL_OW 69
7141: PUSH
7142: LD_EXP 1
7146: PUSH
7147: LD_EXP 3
7151: PUSH
7152: LD_EXP 4
7156: PUSH
7157: EMPTY
7158: LIST
7159: LIST
7160: LIST
7161: DIFF
7162: PPUSH
7163: LD_STRING TeamTarpan
7165: PPUSH
7166: CALL_OW 38
// if FlameDone = true then
7170: LD_EXP 15
7174: PUSH
7175: LD_INT 1
7177: EQUAL
7178: IFFALSE 7190
// SaveVariable ( 1 , Flamethrowers ) ;
7180: LD_INT 1
7182: PPUSH
7183: LD_STRING Flamethrowers
7185: PPUSH
7186: CALL_OW 39
// YouWin ;
7190: CALL_OW 103
// end ;
7194: END
