// export you , russians , americans ; export Heike , Olaf , Reckon , ReckonDriver , rus1 , rus2 , ruslastguard , am1 ; export rusboth , rusforce1 , rusforce2 ; function prepare_units ; begin
   0: LD_INT 0
   2: PPUSH
// rus1 = 17 ;
   3: NOP4
   7: PUSH
   8: LD_INT 17
  10: ST_TO_ADDR
// rus2 = 19 ;
  11: NOP4
  15: PUSH
  16: LD_INT 19
  18: ST_TO_ADDR
// rusboth = [ rus1 , rus2 ] ;
  19: NOP4
  23: PUSH
  24: NOP4
  28: PUSH
  29: NOP4
  33: PUSH
  34: EMPTY
  35: LIST
  36: LIST
  37: ST_TO_ADDR
// am1 = 20 ;
  38: NOP4
  42: PUSH
  43: LD_INT 20
  45: ST_TO_ADDR
// ruslastguard = 35 ;
  46: NOP4
  50: PUSH
  51: LD_INT 35
  53: ST_TO_ADDR
// InitUc ;
  54: NOP4
// InitHc ;
  58: NOP4
// InitVc ;
  62: NOP4
// uc_direction = 3 ;
  66: LD_ADDR_OWVAR 24
  70: PUSH
  71: LD_INT 3
  73: ST_TO_ADDR
// uc_nation = nation_arabian ;
  74: LD_ADDR_OWVAR 21
  78: PUSH
  79: LD_INT 2
  81: ST_TO_ADDR
// uc_side = you ;
  82: LD_ADDR_OWVAR 20
  86: PUSH
  87: NOP4
  91: ST_TO_ADDR
// hc_sex = sex_female ;
  92: LD_ADDR_OWVAR 27
  96: PUSH
  97: LD_INT 2
  99: ST_TO_ADDR
// hc_class = class_soldier ;
 100: LD_ADDR_OWVAR 28
 104: PUSH
 105: LD_INT 1
 107: ST_TO_ADDR
// hc_skills = [ 3 , 0 , 1 , 1 ] ;
 108: LD_ADDR_OWVAR 31
 112: PUSH
 113: LD_INT 3
 115: PUSH
 116: LD_INT 0
 118: PUSH
 119: LD_INT 1
 121: PUSH
 122: LD_INT 1
 124: PUSH
 125: EMPTY
 126: LIST
 127: LIST
 128: LIST
 129: LIST
 130: ST_TO_ADDR
// hc_name = Heike ;
 131: LD_ADDR_OWVAR 26
 135: PUSH
 136: LD_STRING Heike
 138: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
 139: LD_ADDR_OWVAR 29
 143: PUSH
 144: LD_INT 10
 146: PUSH
 147: LD_INT 12
 149: PUSH
 150: EMPTY
 151: LIST
 152: LIST
 153: ST_TO_ADDR
// Heike := CreateHuman ;
 154: NOP4
 158: PUSH
 159: NOP4
 163: ST_TO_ADDR
// hc_sex = sex_male ;
 164: LD_ADDR_OWVAR 27
 168: PUSH
 169: LD_INT 1
 171: ST_TO_ADDR
// hc_class = class_mechanic ;
 172: LD_ADDR_OWVAR 28
 176: PUSH
 177: LD_INT 3
 179: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 3 , 0 ] ;
 180: LD_ADDR_OWVAR 31
 184: PUSH
 185: LD_INT 2
 187: PUSH
 188: LD_INT 1
 190: PUSH
 191: LD_INT 3
 193: PUSH
 194: LD_INT 0
 196: PUSH
 197: EMPTY
 198: LIST
 199: LIST
 200: LIST
 201: LIST
 202: ST_TO_ADDR
// hc_name = Olaf Larsson ;
 203: LD_ADDR_OWVAR 26
 207: PUSH
 208: LD_STRING Olaf Larsson
 210: ST_TO_ADDR
// hc_attr = [ 12 , 10 ] ;
 211: LD_ADDR_OWVAR 29
 215: PUSH
 216: LD_INT 12
 218: PUSH
 219: LD_INT 10
 221: PUSH
 222: EMPTY
 223: LIST
 224: LIST
 225: ST_TO_ADDR
// Olaf := CreateHuman ;
 226: NOP4
 230: PUSH
 231: NOP4
 235: ST_TO_ADDR
// uc_direction = 2 ;
 236: LD_ADDR_OWVAR 24
 240: PUSH
 241: LD_INT 2
 243: ST_TO_ADDR
// uc_nation = nation_american ;
 244: LD_ADDR_OWVAR 21
 248: PUSH
 249: LD_INT 1
 251: ST_TO_ADDR
// uc_side = americans ;
 252: LD_ADDR_OWVAR 20
 256: PUSH
 257: NOP4
 261: ST_TO_ADDR
// hc_sex = sex_male ;
 262: LD_ADDR_OWVAR 27
 266: PUSH
 267: LD_INT 1
 269: ST_TO_ADDR
// hc_class = class_mechanic ;
 270: LD_ADDR_OWVAR 28
 274: PUSH
 275: LD_INT 3
 277: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 1 , 0 ] ;
 278: LD_ADDR_OWVAR 31
 282: PUSH
 283: LD_INT 1
 285: PUSH
 286: LD_INT 1
 288: PUSH
 289: LD_INT 1
 291: PUSH
 292: LD_INT 0
 294: PUSH
 295: EMPTY
 296: LIST
 297: LIST
 298: LIST
 299: LIST
 300: ST_TO_ADDR
// hc_name = Ronald Brown ;
 301: LD_ADDR_OWVAR 26
 305: PUSH
 306: LD_STRING Ronald Brown
 308: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
 309: LD_ADDR_OWVAR 29
 313: PUSH
 314: LD_INT 10
 316: PUSH
 317: LD_INT 10
 319: PUSH
 320: EMPTY
 321: LIST
 322: LIST
 323: ST_TO_ADDR
// ReckonDriver = CreateHuman ;
 324: NOP4
 328: PUSH
 329: NOP4
 333: ST_TO_ADDR
// vc_chassis = 1 ;
 334: LD_ADDR_OWVAR 37
 338: PUSH
 339: LD_INT 1
 341: ST_TO_ADDR
// vc_engine = 1 ;
 342: LD_ADDR_OWVAR 39
 346: PUSH
 347: LD_INT 1
 349: ST_TO_ADDR
// vc_control = 1 ;
 350: LD_ADDR_OWVAR 38
 354: PUSH
 355: LD_INT 1
 357: ST_TO_ADDR
// vc_weapon = 2 ;
 358: LD_ADDR_OWVAR 40
 362: PUSH
 363: LD_INT 2
 365: ST_TO_ADDR
// Reckon := CreateVehicle ;
 366: NOP4
 370: PUSH
 371: NOP4
 375: ST_TO_ADDR
// PlaceHumanInUnit ( ReckonDriver , Reckon ) ;
 376: NOP4
 380: PPUSH
 381: NOP4
 385: PPUSH
 386: NOP4
// ComHold ( [ rus1 , rus2 , am1 ] ) ;
 390: NOP4
 394: PUSH
 395: NOP4
 399: PUSH
 400: NOP4
 404: PUSH
 405: EMPTY
 406: LIST
 407: LIST
 408: LIST
 409: PPUSH
 410: NOP4
// ComHold ( [ 24 , 25 ] ) ;
 414: LD_INT 24
 416: PUSH
 417: LD_INT 25
 419: PUSH
 420: EMPTY
 421: LIST
 422: LIST
 423: PPUSH
 424: NOP4
// ComFree ( Olaf ) ;
 428: NOP4
 432: PPUSH
 433: NOP4
// end ;
 437: LD_VAR 0 1
 441: RET
// function prepare_sides ; begin
 442: LD_INT 0
 444: PPUSH
// you = 2 ;
 445: NOP4
 449: PUSH
 450: LD_INT 2
 452: ST_TO_ADDR
// americans = 1 ;
 453: NOP4
 457: PUSH
 458: LD_INT 1
 460: ST_TO_ADDR
// russians = 3 ;
 461: NOP4
 465: PUSH
 466: LD_INT 3
 468: ST_TO_ADDR
// rusforce1 = FilterUnitsInArea ( 4 , [ [ f_side , russians ] , f_not , [ f_type , unit_building ] ] ) ;
 469: NOP4
 473: PUSH
 474: LD_INT 4
 476: PPUSH
 477: LD_INT 22
 479: PUSH
 480: NOP4
 484: PUSH
 485: EMPTY
 486: LIST
 487: LIST
 488: PUSH
 489: LD_INT 3
 491: PUSH
 492: LD_INT 21
 494: PUSH
 495: LD_INT 3
 497: PUSH
 498: EMPTY
 499: LIST
 500: LIST
 501: PUSH
 502: EMPTY
 503: LIST
 504: LIST
 505: LIST
 506: PPUSH
 507: NOP4
 511: ST_TO_ADDR
// rusforce2 = FilterUnitsInArea ( 3 , [ [ f_side , russians ] , f_not , [ f_type , unit_building ] ] ) ;
 512: NOP4
 516: PUSH
 517: LD_INT 3
 519: PPUSH
 520: LD_INT 22
 522: PUSH
 523: NOP4
 527: PUSH
 528: EMPTY
 529: LIST
 530: LIST
 531: PUSH
 532: LD_INT 3
 534: PUSH
 535: LD_INT 21
 537: PUSH
 538: LD_INT 3
 540: PUSH
 541: EMPTY
 542: LIST
 543: LIST
 544: PUSH
 545: EMPTY
 546: LIST
 547: LIST
 548: LIST
 549: PPUSH
 550: NOP4
 554: ST_TO_ADDR
// ComRemember ( rusforce1 ) ;
 555: NOP4
 559: PPUSH
 560: NOP4
// ComRemember ( rusforce2 ) ;
 564: NOP4
 568: PPUSH
 569: NOP4
// SetAttitude ( russians , you , att_neutral , true ) ;
 573: NOP4
 577: PPUSH
 578: NOP4
 582: PPUSH
 583: LD_INT 0
 585: PPUSH
 586: LD_INT 1
 588: PPUSH
 589: NOP4
// SetAttitude ( americans , you , att_neutral , true ) ;
 593: NOP4
 597: PPUSH
 598: NOP4
 602: PPUSH
 603: LD_INT 0
 605: PPUSH
 606: LD_INT 1
 608: PPUSH
 609: NOP4
// SetAttitude ( americans , russians , att_enemy , true ) ;
 613: NOP4
 617: PPUSH
 618: NOP4
 622: PPUSH
 623: LD_INT 2
 625: PPUSH
 626: LD_INT 1
 628: PPUSH
 629: NOP4
// end ;
 633: LD_VAR 0 1
 637: RET
// function QueryDifficulty ; begin
 638: LD_INT 0
 640: PPUSH
// result := Query ( Select difficulty level , [ Adventurer , Commander , Master Strategist ] ) ;
 641: NOP4
 645: PUSH
 646: LD_STRING Select difficulty level
 648: PPUSH
 649: LD_STRING Adventurer
 651: PUSH
 652: LD_STRING Commander
 654: PUSH
 655: LD_STRING Master Strategist
 657: PUSH
 658: EMPTY
 659: LIST
 660: LIST
 661: LIST
 662: PPUSH
 663: NOP4
 667: ST_TO_ADDR
// end ;
 668: LD_VAR 0 1
 672: RET
// starting begin difficulty := QueryDifficulty ;
 673: LD_ADDR_OWVAR 67
 677: PUSH
 678: NOP4
 682: ST_TO_ADDR
// prepare_sides ;
 683: NOP4
// prepare_units ;
 687: NOP4
// am1faze = 0 ;
 691: NOP4
 695: PUSH
 696: LD_INT 0
 698: ST_TO_ADDR
// can_see_tracks = false ;
 699: NOP4
 703: PUSH
 704: LD_INT 0
 706: ST_TO_ADDR
// vehicle_can_go = false ;
 707: NOP4
 711: PUSH
 712: LD_INT 0
 714: ST_TO_ADDR
// case difficulty of 1 :
 715: NOP4
 719: PUSH
 720: LD_INT 1
 722: DOUBLE
 723: EQUAL
 724: IFTRUE 728
 726: GO 816
 728: POP
// begin am1reaction := 20 ;
 729: NOP4
 733: PUSH
 734: LD_INT 20
 736: ST_TO_ADDR
// SetLives ( rus1 , 600 ) ;
 737: NOP4
 741: PPUSH
 742: LD_INT 600
 744: PPUSH
 745: NOP4
// SetSkill ( rus1 , skill_combat , 2 ) ;
 749: NOP4
 753: PPUSH
 754: LD_INT 1
 756: PPUSH
 757: LD_INT 2
 759: PPUSH
 760: NOP4
// SetLives ( Reckon , 280 ) ;
 764: NOP4
 768: PPUSH
 769: LD_INT 280
 771: PPUSH
 772: NOP4
// SetSkill ( ruslastguard , skill_combat , 0 ) ;
 776: NOP4
 780: PPUSH
 781: LD_INT 1
 783: PPUSH
 784: LD_INT 0
 786: PPUSH
 787: NOP4
// SetAttr ( ruslastguard , attr_stamina , 8 ) ;
 791: NOP4
 795: PPUSH
 796: LD_INT 1
 798: PPUSH
 799: LD_INT 8
 801: PPUSH
 802: NOP4
// hunting := 0 0$10 ;
 806: NOP4
 810: PUSH
 811: LD_INT 350
 813: ST_TO_ADDR
// end ; 2 :
 814: GO 1009
 816: LD_INT 2
 818: DOUBLE
 819: EQUAL
 820: IFTRUE 824
 822: GO 912
 824: POP
// begin am1reaction := 10 ;
 825: NOP4
 829: PUSH
 830: LD_INT 10
 832: ST_TO_ADDR
// SetLives ( rus1 , 800 ) ;
 833: NOP4
 837: PPUSH
 838: LD_INT 800
 840: PPUSH
 841: NOP4
// SetSkill ( rus1 , skill_combat , 3 ) ;
 845: NOP4
 849: PPUSH
 850: LD_INT 1
 852: PPUSH
 853: LD_INT 3
 855: PPUSH
 856: NOP4
// SetLives ( Reckon , 330 ) ;
 860: NOP4
 864: PPUSH
 865: LD_INT 330
 867: PPUSH
 868: NOP4
// SetSkill ( ruslastguard , skill_combat , 1 ) ;
 872: NOP4
 876: PPUSH
 877: LD_INT 1
 879: PPUSH
 880: LD_INT 1
 882: PPUSH
 883: NOP4
// SetAttr ( ruslastguard , attr_stamina , 8 ) ;
 887: NOP4
 891: PPUSH
 892: LD_INT 1
 894: PPUSH
 895: LD_INT 8
 897: PPUSH
 898: NOP4
// hunting := 0 0$20 ;
 902: NOP4
 906: PUSH
 907: LD_INT 700
 909: ST_TO_ADDR
// end ; 3 :
 910: GO 1009
 912: LD_INT 3
 914: DOUBLE
 915: EQUAL
 916: IFTRUE 920
 918: GO 1008
 920: POP
// begin am1reaction := 1 ;
 921: NOP4
 925: PUSH
 926: LD_INT 1
 928: ST_TO_ADDR
// SetLives ( rus1 , 1000 ) ;
 929: NOP4
 933: PPUSH
 934: LD_INT 1000
 936: PPUSH
 937: NOP4
// SetSkill ( rus1 , skill_combat , 4 ) ;
 941: NOP4
 945: PPUSH
 946: LD_INT 1
 948: PPUSH
 949: LD_INT 4
 951: PPUSH
 952: NOP4
// SetLives ( Reckon , 380 ) ;
 956: NOP4
 960: PPUSH
 961: LD_INT 380
 963: PPUSH
 964: NOP4
// SetSkill ( ruslastguard , skill_combat , 1 ) ;
 968: NOP4
 972: PPUSH
 973: LD_INT 1
 975: PPUSH
 976: LD_INT 1
 978: PPUSH
 979: NOP4
// SetAttr ( ruslastguard , attr_stamina , 9 ) ;
 983: NOP4
 987: PPUSH
 988: LD_INT 1
 990: PPUSH
 991: LD_INT 9
 993: PPUSH
 994: NOP4
// hunting := 0 0$30 ;
 998: NOP4
1002: PUSH
1003: LD_INT 1050
1005: ST_TO_ADDR
// end ; end ;
1006: GO 1009
1008: POP
// CenterOnXY ( 79 , 24 ) ;
1009: LD_INT 79
1011: PPUSH
1012: LD_INT 24
1014: PPUSH
1015: NOP4
// end ;
1019: END
// every 0 0$0.3 trigger IsOK ( Heike ) and IsInArea ( Heike , 7 ) do
1020: NOP4
1024: PPUSH
1025: NOP4
1029: PUSH
1030: NOP4
1034: PPUSH
1035: LD_INT 7
1037: PPUSH
1038: NOP4
1042: AND
1043: IFFALSE 1108
1045: GO 1047
1047: DISABLE
// begin if IsOK ( Olaf ) then
1048: NOP4
1052: PPUSH
1053: NOP4
1057: IFFALSE 1100
// begin stop_action := true ;
1059: LD_ADDR_OWVAR 55
1063: PUSH
1064: LD_INT 1
1066: ST_TO_ADDR
// CenterOnUnits ( Heike ) ;
1067: NOP4
1071: PPUSH
1072: NOP4
// Say ( Olaf , D8O1 ) ;
1076: NOP4
1080: PPUSH
1081: LD_STRING D8O1
1083: PPUSH
1084: NOP4
// Say ( Heike , D8H1 ) ;
1088: NOP4
1092: PPUSH
1093: LD_STRING D8H1
1095: PPUSH
1096: NOP4
// end ; end_of_mission := 1 ;
1100: LD_ADDR_OWVAR 63
1104: PUSH
1105: LD_INT 1
1107: ST_TO_ADDR
// end ;
1108: END
// every 0 0$0.3 + 0 0$0.15 trigger IsOK ( Heike ) and IsInArea ( Heike , 9 ) and IsInUnit ( Heike ) do
1109: NOP4
1113: PPUSH
1114: NOP4
1118: PUSH
1119: NOP4
1123: PPUSH
1124: LD_INT 9
1126: PPUSH
1127: NOP4
1131: AND
1132: PUSH
1133: NOP4
1137: PPUSH
1138: NOP4
1142: AND
1143: IFFALSE 1208
1145: GO 1147
1147: DISABLE
// begin if IsOK ( Olaf ) then
1148: NOP4
1152: PPUSH
1153: NOP4
1157: IFFALSE 1200
// begin stop_action := true ;
1159: LD_ADDR_OWVAR 55
1163: PUSH
1164: LD_INT 1
1166: ST_TO_ADDR
// CenterOnUnits ( Heike ) ;
1167: NOP4
1171: PPUSH
1172: NOP4
// Say ( Olaf , D8O1 ) ;
1176: NOP4
1180: PPUSH
1181: LD_STRING D8O1
1183: PPUSH
1184: NOP4
// Say ( Heike , D8H1 ) ;
1188: NOP4
1192: PPUSH
1193: LD_STRING D8H1
1195: PPUSH
1196: NOP4
// end ; end_of_mission := 1 ;
1200: LD_ADDR_OWVAR 63
1204: PUSH
1205: LD_INT 1
1207: ST_TO_ADDR
// end ;
1208: END
// every 0 0$10 trigger not IsOK ( Heike ) do
1209: NOP4
1213: PPUSH
1214: NOP4
1218: NOT
1219: IFFALSE 1233
1221: GO 1223
1223: DISABLE
// begin end_of_mission := - 1 ;
1224: LD_ADDR_OWVAR 63
1228: PUSH
1229: LD_INT 1
1231: NEG
1232: ST_TO_ADDR
// end ;
1233: END
// var s , q ; every 0 0$0.5 trigger end_of_mission do
1234: NOP4
1238: IFFALSE 1470
1240: GO 1242
1242: DISABLE
// begin case end_of_mission of - 1 :
1243: NOP4
1247: PUSH
1248: LD_INT 1
1250: NEG
1251: DOUBLE
1252: EQUAL
1253: IFTRUE 1257
1255: GO 1273
1257: POP
// Query ( Heike is dying. , [ MISSION FAILED ] ) ; 1 :
1258: LD_STRING Heike is dying.
1260: PPUSH
1261: LD_STRING MISSION FAILED
1263: PUSH
1264: EMPTY
1265: LIST
1266: PPUSH
1267: NOP4
1271: GO 1466
1273: LD_INT 1
1275: DOUBLE
1276: EQUAL
1277: IFTRUE 1281
1279: GO 1465
1281: POP
// begin s = Heike saved. ;
1282: NOP4
1286: PUSH
1287: LD_STRING Heike saved.
1289: ST_TO_ADDR
// q = 1 ;
1290: NOP4
1294: PUSH
1295: LD_INT 1
1297: ST_TO_ADDR
// if IsOk ( Olaf ) then
1298: NOP4
1302: PPUSH
1303: NOP4
1307: IFFALSE 1337
// begin s = s &  Olaf survived. ;
1309: NOP4
1313: PUSH
1314: NOP4
1318: PUSH
1319: LD_STRING  Olaf survived.
1321: STR
1322: ST_TO_ADDR
// q = q + 1 ;
1323: NOP4
1327: PUSH
1328: NOP4
1332: PUSH
1333: LD_INT 1
1335: PLUS
1336: ST_TO_ADDR
// end ; if IsInArea ( Heike , 9 ) then
1337: NOP4
1341: PPUSH
1342: LD_INT 9
1344: PPUSH
1345: NOP4
1349: IFFALSE 1379
// begin s = s &  Vehicle captured. ;
1351: NOP4
1355: PUSH
1356: NOP4
1360: PUSH
1361: LD_STRING  Vehicle captured.
1363: STR
1364: ST_TO_ADDR
// q = q + 1 ;
1365: NOP4
1369: PUSH
1370: NOP4
1374: PUSH
1375: LD_INT 1
1377: PLUS
1378: ST_TO_ADDR
// end ; case q of 3 :
1379: NOP4
1383: PUSH
1384: LD_INT 3
1386: DOUBLE
1387: EQUAL
1388: IFTRUE 1392
1390: GO 1410
1392: POP
// Query ( s , [ EXCELENT !!! ] ) ; 2 :
1393: NOP4
1397: PPUSH
1398: LD_STRING EXCELENT !!!
1400: PUSH
1401: EMPTY
1402: LIST
1403: PPUSH
1404: NOP4
1408: GO 1463
1410: LD_INT 2
1412: DOUBLE
1413: EQUAL
1414: IFTRUE 1418
1416: GO 1436
1418: POP
// Query ( s , [ MISSION COMPLETE !! ] ) ; 1 :
1419: NOP4
1423: PPUSH
1424: LD_STRING MISSION COMPLETE !!
1426: PUSH
1427: EMPTY
1428: LIST
1429: PPUSH
1430: NOP4
1434: GO 1463
1436: LD_INT 1
1438: DOUBLE
1439: EQUAL
1440: IFTRUE 1444
1442: GO 1462
1444: POP
// Query ( s , [ MISSION COMPLETE ! ] ) ; end ;
1445: NOP4
1449: PPUSH
1450: LD_STRING MISSION COMPLETE !
1452: PUSH
1453: EMPTY
1454: LIST
1455: PPUSH
1456: NOP4
1460: GO 1463
1462: POP
// end ; end ;
1463: GO 1466
1465: POP
// ExitGame ;
1466: NOP4
// end ;
1470: END
// final begin end ; end_of_file
1471: END
// function Query1 ; begin
1472: LD_INT 0
1474: PPUSH
// result := Query ( What do you want to do? , [ Kill American , Let him go , Help him ] ) ;
1475: NOP4
1479: PUSH
1480: LD_STRING What do you want to do?
1482: PPUSH
1483: LD_STRING Kill American
1485: PUSH
1486: LD_STRING Let him go
1488: PUSH
1489: LD_STRING Help him
1491: PUSH
1492: EMPTY
1493: LIST
1494: LIST
1495: LIST
1496: PPUSH
1497: NOP4
1501: ST_TO_ADDR
// end ;
1502: LD_VAR 0 1
1506: RET
// function Query2 ; begin
1507: LD_INT 0
1509: PPUSH
// result := Query ( What do you want to do? , [ Kill Him , Let him go ] ) ;
1510: NOP4
1514: PUSH
1515: LD_STRING What do you want to do?
1517: PPUSH
1518: LD_STRING Kill Him
1520: PUSH
1521: LD_STRING Let him go
1523: PUSH
1524: EMPTY
1525: LIST
1526: LIST
1527: PPUSH
1528: NOP4
1532: ST_TO_ADDR
// end ;
1533: LD_VAR 0 1
1537: RET
// every 0 0$3.5 do
1538: GO 1540
1540: DISABLE
// begin ingame_video := true ;
1541: LD_ADDR_OWVAR 52
1545: PUSH
1546: LD_INT 1
1548: ST_TO_ADDR
// PlaceUnitXY ( Heike , 79 , 24 , true ) ;
1549: NOP4
1553: PPUSH
1554: LD_INT 79
1556: PPUSH
1557: LD_INT 24
1559: PPUSH
1560: LD_INT 1
1562: PPUSH
1563: NOP4
// wait ( 0 0$2 ) ;
1567: LD_INT 70
1569: PPUSH
1570: NOP4
// com_queue := true ;
1574: LD_ADDR_OWVAR 49
1578: PUSH
1579: LD_INT 1
1581: ST_TO_ADDR
// ComMoveXY ( Heike , 80 , 24 ) ;
1582: NOP4
1586: PPUSH
1587: LD_INT 80
1589: PPUSH
1590: LD_INT 24
1592: PPUSH
1593: NOP4
// ComStop ( Heike ) ;
1597: NOP4
1601: PPUSH
1602: NOP4
// ComMoveXY ( Heike , 80 , 25 ) ;
1606: NOP4
1610: PPUSH
1611: LD_INT 80
1613: PPUSH
1614: LD_INT 25
1616: PPUSH
1617: NOP4
// ComMoveXY ( Heike , 79 , 25 ) ;
1621: NOP4
1625: PPUSH
1626: LD_INT 79
1628: PPUSH
1629: LD_INT 25
1631: PPUSH
1632: NOP4
// ComStop ( Heike ) ;
1636: NOP4
1640: PPUSH
1641: NOP4
// ComStop ( Heike ) ;
1645: NOP4
1649: PPUSH
1650: NOP4
// ComMoveXY ( Heike , 79 , 26 ) ;
1654: NOP4
1658: PPUSH
1659: LD_INT 79
1661: PPUSH
1662: LD_INT 26
1664: PPUSH
1665: NOP4
// ComMoveXY ( Heike , 78 , 26 ) ;
1669: NOP4
1673: PPUSH
1674: LD_INT 78
1676: PPUSH
1677: LD_INT 26
1679: PPUSH
1680: NOP4
// ComStop ( Heike ) ;
1684: NOP4
1688: PPUSH
1689: NOP4
// ComMoveXY ( Heike , 79 , 26 ) ;
1693: NOP4
1697: PPUSH
1698: LD_INT 79
1700: PPUSH
1701: LD_INT 26
1703: PPUSH
1704: NOP4
// com_queue := false ;
1708: LD_ADDR_OWVAR 49
1712: PUSH
1713: LD_INT 0
1715: ST_TO_ADDR
// Wait ( 0 0$0.5 ) ;
1716: LD_INT 18
1718: PPUSH
1719: NOP4
// Say ( Heike , D1H1 ) ;
1723: NOP4
1727: PPUSH
1728: LD_STRING D1H1
1730: PPUSH
1731: NOP4
// CenterOnXY ( 78 , 17 ) ;
1735: LD_INT 78
1737: PPUSH
1738: LD_INT 17
1740: PPUSH
1741: NOP4
// ComMoveXY ( Heike , 78 , 17 ) ;
1745: NOP4
1749: PPUSH
1750: LD_INT 78
1752: PPUSH
1753: LD_INT 17
1755: PPUSH
1756: NOP4
// ingame_video := false ;
1760: LD_ADDR_OWVAR 52
1764: PUSH
1765: LD_INT 0
1767: ST_TO_ADDR
// Say ( Heike , D1H2 ) ;
1768: NOP4
1772: PPUSH
1773: LD_STRING D1H2
1775: PPUSH
1776: NOP4
// ChangeMissionObjectives ( M1 ) ;
1780: LD_STRING M1
1782: PPUSH
1783: NOP4
// end ;
1787: END
// function seen_russian_base ; begin
1788: LD_INT 0
1790: PPUSH
// result := FilterAllUnits ( [ [ f_see , you ] , [ f_type , unit_building ] , [ f_side , russians ] ] ) ;
1791: NOP4
1795: PUSH
1796: LD_INT 101
1798: PUSH
1799: NOP4
1803: PUSH
1804: EMPTY
1805: LIST
1806: LIST
1807: PUSH
1808: LD_INT 21
1810: PUSH
1811: LD_INT 3
1813: PUSH
1814: EMPTY
1815: LIST
1816: LIST
1817: PUSH
1818: LD_INT 22
1820: PUSH
1821: NOP4
1825: PUSH
1826: EMPTY
1827: LIST
1828: LIST
1829: PUSH
1830: EMPTY
1831: LIST
1832: LIST
1833: LIST
1834: PPUSH
1835: NOP4
1839: ST_TO_ADDR
// end ;
1840: LD_VAR 0 1
1844: RET
// every 0 0$1 trigger seen_russian_base > 0 do
1845: NOP4
1849: PUSH
1850: LD_INT 0
1852: GREATER
1853: IFFALSE 1886
1855: GO 1857
1857: DISABLE
// begin CenterOnUnits ( seen_russian_base ) ;
1858: NOP4
1862: PPUSH
1863: NOP4
// wait ( 0 0$2 ) ;
1867: LD_INT 70
1869: PPUSH
1870: NOP4
// say ( Heike , D2H1 ) ;
1874: NOP4
1878: PPUSH
1879: LD_STRING D2H1
1881: PPUSH
1882: NOP4
// end ;
1886: END
// every 0 0$0.5 trigger see ( you , am1 ) do var heikefree ;
1887: NOP4
1891: PPUSH
1892: NOP4
1896: PPUSH
1897: NOP4
1901: IFFALSE 2499
1903: GO 1905
1905: DISABLE
1906: LD_INT 0
1908: PPUSH
// begin am1faze := - 1 ;
1909: NOP4
1913: PUSH
1914: LD_INT 1
1916: NEG
1917: ST_TO_ADDR
// ingame_video := true ;
1918: LD_ADDR_OWVAR 52
1922: PUSH
1923: LD_INT 1
1925: ST_TO_ADDR
// ComMoveUnit ( Heike , am1 ) ;
1926: NOP4
1930: PPUSH
1931: NOP4
1935: PPUSH
1936: NOP4
// ComMoveUnit ( am1 , Heike ) ;
1940: NOP4
1944: PPUSH
1945: NOP4
1949: PPUSH
1950: NOP4
// Wait ( 1 ) ;
1954: LD_INT 1
1956: PPUSH
1957: NOP4
// ComStop ( Heike ) ;
1961: NOP4
1965: PPUSH
1966: NOP4
// heikefree := GetFreeMode ( Heike ) ;
1970: NOP4
1974: PUSH
1975: NOP4
1979: PPUSH
1980: NOP4
1984: ST_TO_ADDR
// ComHold ( Heike ) ;
1985: NOP4
1989: PPUSH
1990: NOP4
// async ;
1994: ASYNC
// SayNoFace ( Heike , D3H1 ) ;
1995: NOP4
1999: PPUSH
2000: LD_STRING D3H1
2002: PPUSH
2003: NOP4
// sync ;
2007: SYNC
// Say ( am1 , D3A1 ) ;
2008: NOP4
2012: PPUSH
2013: LD_STRING D3A1
2015: PPUSH
2016: NOP4
// Say ( Heike , D3H2 ) ;
2020: NOP4
2024: PPUSH
2025: LD_STRING D3H2
2027: PPUSH
2028: NOP4
// Say ( am1 , D3A2 ) ;
2032: NOP4
2036: PPUSH
2037: LD_STRING D3A2
2039: PPUSH
2040: NOP4
// if heikefree then
2044: NOP4
2048: IFFALSE 2059
// ComFree ( Heike ) ;
2050: NOP4
2054: PPUSH
2055: NOP4
// SetAttitude ( russians , you , att_enemy , true ) ;
2059: NOP4
2063: PPUSH
2064: NOP4
2068: PPUSH
2069: LD_INT 2
2071: PPUSH
2072: LD_INT 1
2074: PPUSH
2075: NOP4
// case Query1 of 1 :
2079: NOP4
2083: PUSH
2084: LD_INT 1
2086: DOUBLE
2087: EQUAL
2088: IFTRUE 2092
2090: GO 2264
2092: POP
// begin Say ( Heike , D3Ha ) ;
2093: NOP4
2097: PPUSH
2098: LD_STRING D3Ha
2100: PPUSH
2101: NOP4
// SetAttitude ( you , americans , att_enemy , false ) ;
2105: NOP4
2109: PPUSH
2110: NOP4
2114: PPUSH
2115: LD_INT 2
2117: PPUSH
2118: LD_INT 0
2120: PPUSH
2121: NOP4
// ComAttackUnit ( Heike , am1 ) ;
2125: NOP4
2129: PPUSH
2130: NOP4
2134: PPUSH
2135: NOP4
// wait ( am1reaction ) ;
2139: NOP4
2143: PPUSH
2144: NOP4
// ingame_video := false ;
2148: LD_ADDR_OWVAR 52
2152: PUSH
2153: LD_INT 0
2155: ST_TO_ADDR
// SetAttitude ( americans , you , att_enemy , false ) ;
2156: NOP4
2160: PPUSH
2161: NOP4
2165: PPUSH
2166: LD_INT 2
2168: PPUSH
2169: LD_INT 0
2171: PPUSH
2172: NOP4
// ComFree ( am1 ) ;
2176: NOP4
2180: PPUSH
2181: NOP4
// ComAttackUnit ( am1 , Heike ) ;
2185: NOP4
2189: PPUSH
2190: NOP4
2194: PPUSH
2195: NOP4
// wait ( 0 0$3 ) ;
2199: LD_INT 105
2201: PPUSH
2202: NOP4
// com_queue := true ;
2206: LD_ADDR_OWVAR 49
2210: PUSH
2211: LD_INT 1
2213: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2214: NOP4
2218: PPUSH
2219: NOP4
2223: PPUSH
2224: NOP4
// ComAttackUnit ( rusboth , Heike ) ;
2228: NOP4
2232: PPUSH
2233: NOP4
2237: PPUSH
2238: NOP4
// com_queue := false ;
2242: LD_ADDR_OWVAR 49
2246: PUSH
2247: LD_INT 0
2249: ST_TO_ADDR
// Say ( rus1 , D3Ra ) ;
2250: NOP4
2254: PPUSH
2255: LD_STRING D3Ra
2257: PPUSH
2258: NOP4
// end ; 2 :
2262: GO 2499
2264: LD_INT 2
2266: DOUBLE
2267: EQUAL
2268: IFTRUE 2272
2270: GO 2377
2272: POP
// begin Say ( Heike , D3Hb ) ;
2273: NOP4
2277: PPUSH
2278: LD_STRING D3Hb
2280: PPUSH
2281: NOP4
// ComMoveXY ( Heike , 67 , 18 ) ;
2285: NOP4
2289: PPUSH
2290: LD_INT 67
2292: PPUSH
2293: LD_INT 18
2295: PPUSH
2296: NOP4
// wait ( 0 0$1 ) ;
2300: LD_INT 35
2302: PPUSH
2303: NOP4
// ingame_video := false ;
2307: LD_ADDR_OWVAR 52
2311: PUSH
2312: LD_INT 0
2314: ST_TO_ADDR
// com_queue := true ;
2315: LD_ADDR_OWVAR 49
2319: PUSH
2320: LD_INT 1
2322: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2323: NOP4
2327: PPUSH
2328: NOP4
2332: PPUSH
2333: NOP4
// ComFree ( rusboth ) ;
2337: NOP4
2341: PPUSH
2342: NOP4
// com_queue := false ;
2346: LD_ADDR_OWVAR 49
2350: PUSH
2351: LD_INT 0
2353: ST_TO_ADDR
// Say ( rus1 , D3Rb ) ;
2354: NOP4
2358: PPUSH
2359: LD_STRING D3Rb
2361: PPUSH
2362: NOP4
// ComFree ( am1 ) ;
2366: NOP4
2370: PPUSH
2371: NOP4
// end ; 3 :
2375: GO 2499
2377: LD_INT 3
2379: DOUBLE
2380: EQUAL
2381: IFTRUE 2385
2383: GO 2498
2385: POP
// begin Say ( Heike , D3Hc ) ;
2386: NOP4
2390: PPUSH
2391: LD_STRING D3Hc
2393: PPUSH
2394: NOP4
// ComMoveUnit ( Heike , rus1 ) ;
2398: NOP4
2402: PPUSH
2403: NOP4
2407: PPUSH
2408: NOP4
// ingame_video := false ;
2412: LD_ADDR_OWVAR 52
2416: PUSH
2417: LD_INT 0
2419: ST_TO_ADDR
// wait ( 0 0$2 ) ;
2420: LD_INT 70
2422: PPUSH
2423: NOP4
// ComStop ( Heike ) ;
2427: NOP4
2431: PPUSH
2432: NOP4
// com_queue := true ;
2436: LD_ADDR_OWVAR 49
2440: PUSH
2441: LD_INT 1
2443: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2444: NOP4
2448: PPUSH
2449: NOP4
2453: PPUSH
2454: NOP4
// ComFree ( rusboth ) ;
2458: NOP4
2462: PPUSH
2463: NOP4
// com_queue := false ;
2467: LD_ADDR_OWVAR 49
2471: PUSH
2472: LD_INT 0
2474: ST_TO_ADDR
// Say ( rus1 , D3Rb ) ;
2475: NOP4
2479: PPUSH
2480: LD_STRING D3Rb
2482: PPUSH
2483: NOP4
// ComFree ( am1 ) ;
2487: NOP4
2491: PPUSH
2492: NOP4
// end ; end ;
2496: GO 2499
2498: POP
// end ;
2499: PPOPN 1
2501: END
// every 0 0$2 trigger not IsLive ( rus1 ) and not IsLive ( rus2 ) do
2502: NOP4
2506: PPUSH
2507: NOP4
2511: NOT
2512: PUSH
2513: NOP4
2517: PPUSH
2518: NOP4
2522: NOT
2523: AND
2524: IFFALSE 2787
2526: GO 2528
2528: DISABLE
// begin if IsOK ( am1 ) then
2529: NOP4
2533: PPUSH
2534: NOP4
2538: IFFALSE 2787
// begin if IsOK ( Olaf ) then
2540: NOP4
2544: PPUSH
2545: NOP4
2549: IFFALSE 2568
// begin ComMoveXY ( am1 , 36 , 1 ) ;
2551: NOP4
2555: PPUSH
2556: LD_INT 36
2558: PPUSH
2559: LD_INT 1
2561: PPUSH
2562: NOP4
// end else
2566: GO 2787
// begin Say ( am1 , D4A1 ) ;
2568: NOP4
2572: PPUSH
2573: LD_STRING D4A1
2575: PPUSH
2576: NOP4
// case Query2 of 1 :
2580: NOP4
2584: PUSH
2585: LD_INT 1
2587: DOUBLE
2588: EQUAL
2589: IFTRUE 2593
2591: GO 2696
2593: POP
// begin Say ( Heike , D4Ha ) ;
2594: NOP4
2598: PPUSH
2599: LD_STRING D4Ha
2601: PPUSH
2602: NOP4
// SetAttitude ( you , americans , att_enemy , true ) ;
2606: NOP4
2610: PPUSH
2611: NOP4
2615: PPUSH
2616: LD_INT 2
2618: PPUSH
2619: LD_INT 1
2621: PPUSH
2622: NOP4
// ComAttackUnit ( Heike , am1 ) ;
2626: NOP4
2630: PPUSH
2631: NOP4
2635: PPUSH
2636: NOP4
// ComFree ( am1 ) ;
2640: NOP4
2644: PPUSH
2645: NOP4
// com_queue = true ;
2649: LD_ADDR_OWVAR 49
2653: PUSH
2654: LD_INT 1
2656: ST_TO_ADDR
// ComAttackUnit ( am1 , Heike ) ;
2657: NOP4
2661: PPUSH
2662: NOP4
2666: PPUSH
2667: NOP4
// ComMoveXY ( am1 , 36 , 1 ) ;
2671: NOP4
2675: PPUSH
2676: LD_INT 36
2678: PPUSH
2679: LD_INT 1
2681: PPUSH
2682: NOP4
// com_queue = false ;
2686: LD_ADDR_OWVAR 49
2690: PUSH
2691: LD_INT 0
2693: ST_TO_ADDR
// end ; 2 :
2694: GO 2787
2696: LD_INT 2
2698: DOUBLE
2699: EQUAL
2700: IFTRUE 2704
2702: GO 2786
2704: POP
// begin Say ( Heike , D4Hb1 ) ;
2705: NOP4
2709: PPUSH
2710: LD_STRING D4Hb1
2712: PPUSH
2713: NOP4
// Say ( am1 , D4A2 ) ;
2717: NOP4
2721: PPUSH
2722: LD_STRING D4A2
2724: PPUSH
2725: NOP4
// ComHold ( am1 ) ;
2729: NOP4
2733: PPUSH
2734: NOP4
// ComMoveXY ( am1 , 36 , 1 ) ;
2738: NOP4
2742: PPUSH
2743: LD_INT 36
2745: PPUSH
2746: LD_INT 1
2748: PPUSH
2749: NOP4
// wait ( 0 0$1.5 ) ;
2753: LD_INT 52
2755: PPUSH
2756: NOP4
// if not IsOk ( Olaf ) then
2760: NOP4
2764: PPUSH
2765: NOP4
2769: NOT
2770: IFFALSE 2784
// Say ( Heike , D4Hb2 ) ;
2772: NOP4
2776: PPUSH
2777: LD_STRING D4Hb2
2779: PPUSH
2780: NOP4
// end ; end ;
2784: GO 2787
2786: POP
// end ; end ; end ;
2787: END
// every 0 0$1.5 trigger IsAt ( am1 , 36 , 1 ) do
2788: NOP4
2792: PPUSH
2793: LD_INT 36
2795: PPUSH
2796: LD_INT 1
2798: PPUSH
2799: NOP4
2803: IFFALSE 2817
2805: GO 2807
2807: DISABLE
// begin RemoveUnit ( am1 ) ;
2808: NOP4
2812: PPUSH
2813: NOP4
// end ;
2817: END
// every 0 0$1 + 0 0$0.25 do
2818: GO 2820
2820: DISABLE
// begin if am1faze = - 1 then
2821: NOP4
2825: PUSH
2826: LD_INT 1
2828: NEG
2829: EQUAL
2830: IFFALSE 2866
// begin if GetDistUnits ( am1 , Heike ) <= 5 then
2832: NOP4
2836: PPUSH
2837: NOP4
2841: PPUSH
2842: NOP4
2846: PUSH
2847: LD_INT 5
2849: LESSEQUAL
2850: IFFALSE 2863
// ComStop ( am1 ) else
2852: NOP4
2856: PPUSH
2857: NOP4
2861: GO 2864
// enable ;
2863: ENABLE
// end else
2864: GO 3005
// if am1faze >= 0 then
2866: NOP4
2870: PUSH
2871: LD_INT 0
2873: GREATEREQUAL
2874: IFFALSE 3005
// begin am1faze := ( am1faze + 1 ) mod 6 ;
2876: NOP4
2880: PUSH
2881: NOP4
2885: PUSH
2886: LD_INT 1
2888: PLUS
2889: PUSH
2890: LD_INT 6
2892: MOD
2893: ST_TO_ADDR
// case am1faze of 1 :
2894: NOP4
2898: PUSH
2899: LD_INT 1
2901: DOUBLE
2902: EQUAL
2903: IFTRUE 2907
2905: GO 2925
2907: POP
// ComMoveXY ( am1 , 54 , 14 ) ; 2 :
2908: NOP4
2912: PPUSH
2913: LD_INT 54
2915: PPUSH
2916: LD_INT 14
2918: PPUSH
2919: NOP4
2923: GO 3004
2925: LD_INT 2
2927: DOUBLE
2928: EQUAL
2929: IFTRUE 2933
2931: GO 2951
2933: POP
// ComMoveXY ( am1 , 53 , 14 ) ; 4 :
2934: NOP4
2938: PPUSH
2939: LD_INT 53
2941: PPUSH
2942: LD_INT 14
2944: PPUSH
2945: NOP4
2949: GO 3004
2951: LD_INT 4
2953: DOUBLE
2954: EQUAL
2955: IFTRUE 2959
2957: GO 2977
2959: POP
// ComMoveXY ( am1 , 53 , 15 ) ; 5 :
2960: NOP4
2964: PPUSH
2965: LD_INT 53
2967: PPUSH
2968: LD_INT 15
2970: PPUSH
2971: NOP4
2975: GO 3004
2977: LD_INT 5
2979: DOUBLE
2980: EQUAL
2981: IFTRUE 2985
2983: GO 3003
2985: POP
// ComMoveXY ( am1 , 53 , 14 ) ; end ;
2986: NOP4
2990: PPUSH
2991: LD_INT 53
2993: PPUSH
2994: LD_INT 14
2996: PPUSH
2997: NOP4
3001: GO 3004
3003: POP
// enable ;
3004: ENABLE
// end ; end ;
3005: END
// every 0 0$0.5 + 0 0$0.1 trigger SeeXY ( you , 26 , 14 ) do
3006: NOP4
3010: PPUSH
3011: LD_INT 26
3013: PPUSH
3014: LD_INT 14
3016: PPUSH
3017: NOP4
3021: IFFALSE 3258
3023: GO 3025
3025: DISABLE
// begin PlaceUnitXY ( Olaf , 26 , 14 , false ) ;
3026: NOP4
3030: PPUSH
3031: LD_INT 26
3033: PPUSH
3034: LD_INT 14
3036: PPUSH
3037: LD_INT 0
3039: PPUSH
3040: NOP4
// CenterOnXY ( 26 , 14 ) ;
3044: LD_INT 26
3046: PPUSH
3047: LD_INT 14
3049: PPUSH
3050: NOP4
// ComMoveUnit ( Olaf , Heike ) ;
3054: NOP4
3058: PPUSH
3059: NOP4
3063: PPUSH
3064: NOP4
// Say ( Olaf , D5O1 ) ;
3068: NOP4
3072: PPUSH
3073: LD_STRING D5O1
3075: PPUSH
3076: NOP4
// Say ( Heike , D5H1 ) ;
3080: NOP4
3084: PPUSH
3085: LD_STRING D5H1
3087: PPUSH
3088: NOP4
// Say ( Olaf , D5O2 ) ;
3092: NOP4
3096: PPUSH
3097: LD_STRING D5O2
3099: PPUSH
3100: NOP4
// Say ( Heike , D5H2 ) ;
3104: NOP4
3108: PPUSH
3109: LD_STRING D5H2
3111: PPUSH
3112: NOP4
// Say ( Olaf , D5O3 ) ;
3116: NOP4
3120: PPUSH
3121: LD_STRING D5O3
3123: PPUSH
3124: NOP4
// Say ( Heike , D5H3 ) ;
3128: NOP4
3132: PPUSH
3133: LD_STRING D5H3
3135: PPUSH
3136: NOP4
// Say ( Olaf , D5O4-1 ) ;
3140: NOP4
3144: PPUSH
3145: LD_STRING D5O4-1
3147: PPUSH
3148: NOP4
// RevealFogArea ( you , 8 ) ;
3152: NOP4
3156: PPUSH
3157: LD_INT 8
3159: PPUSH
3160: NOP4
// Say ( Olaf , D5O4-2 ) ;
3164: NOP4
3168: PPUSH
3169: LD_STRING D5O4-2
3171: PPUSH
3172: NOP4
// ChangeMissionObjectives ( M2 ) ;
3176: LD_STRING M2
3178: PPUSH
3179: NOP4
// Say ( Heike , D5H4 ) ;
3183: NOP4
3187: PPUSH
3188: LD_STRING D5H4
3190: PPUSH
3191: NOP4
// Say ( Olaf , D5O5-1 ) ;
3195: NOP4
3199: PPUSH
3200: LD_STRING D5O5-1
3202: PPUSH
3203: NOP4
// Say ( Olaf , D5O5-2 ) ;
3207: NOP4
3211: PPUSH
3212: LD_STRING D5O5-2
3214: PPUSH
3215: NOP4
// Say ( Heike , D5H5 ) ;
3219: NOP4
3223: PPUSH
3224: LD_STRING D5H5
3226: PPUSH
3227: NOP4
// Say ( Olaf , D5O6 ) ;
3231: NOP4
3235: PPUSH
3236: LD_STRING D5O6
3238: PPUSH
3239: NOP4
// Wait ( 0 0$3 ) ;
3243: LD_INT 105
3245: PPUSH
3246: NOP4
// can_see_tracks := true ;
3250: NOP4
3254: PUSH
3255: LD_INT 1
3257: ST_TO_ADDR
// end ;
3258: END
// every 0 0$1 + 0 0$0.7 trigger can_see_tracks and IsInArea ( Heike , 5 ) do
3259: NOP4
3263: PUSH
3264: NOP4
3268: PPUSH
3269: LD_INT 5
3271: PPUSH
3272: NOP4
3276: AND
3277: IFFALSE 3345
3279: GO 3281
3281: DISABLE
// begin Say ( Heike , D6H1 ) ;
3282: NOP4
3286: PPUSH
3287: LD_STRING D6H1
3289: PPUSH
3290: NOP4
// Say ( Olaf , D6O1 ) ;
3294: NOP4
3298: PPUSH
3299: LD_STRING D6O1
3301: PPUSH
3302: NOP4
// Say ( Heike , D6H2 ) ;
3306: NOP4
3310: PPUSH
3311: LD_STRING D6H2
3313: PPUSH
3314: NOP4
// Say ( Olaf , D6O2 ) ;
3318: NOP4
3322: PPUSH
3323: LD_STRING D6O2
3325: PPUSH
3326: NOP4
// ChangeMissionObjectives ( M3 ) ;
3330: LD_STRING M3
3332: PPUSH
3333: NOP4
// vehicle_can_go := true ;
3337: NOP4
3341: PUSH
3342: LD_INT 1
3344: ST_TO_ADDR
// end ; end_of_file
3345: END
// var reckon_way ; var i , x ; every 0 0$2 + 0 0$0.5 trigger vehicle_can_go do
3346: NOP4
3350: IFFALSE 3846
3352: GO 3354
3354: DISABLE
// begin SetAttitude ( you , americans , att_neutral , true ) ;
3355: NOP4
3359: PPUSH
3360: NOP4
3364: PPUSH
3365: LD_INT 0
3367: PPUSH
3368: LD_INT 1
3370: PPUSH
3371: NOP4
// reckon_way = [ 5 , 6 , 10 , 12 , 13 , 19 , 16 , 23 , 22 , 29 , - 1 , 23 , 33 , 27 , 37 , 33 , 36 , 38 , 37 , 42 , 38 , 51 , 38 , - 1 , - 1 , 62 , 50 , 56 , 43 , 51 , 38 , 42 , 38 , 38 , 37 , 33 , 36 , 27 , 37 , 23 , 33 , 22 , 29 , 16 , 23 , 13 , 19 , 10 , 12 , 5 , 6 , 4 , 2 ] ;
3375: NOP4
3379: PUSH
3380: LD_INT 5
3382: PUSH
3383: LD_INT 6
3385: PUSH
3386: LD_INT 10
3388: PUSH
3389: LD_INT 12
3391: PUSH
3392: LD_INT 13
3394: PUSH
3395: LD_INT 19
3397: PUSH
3398: LD_INT 16
3400: PUSH
3401: LD_INT 23
3403: PUSH
3404: LD_INT 22
3406: PUSH
3407: LD_INT 29
3409: PUSH
3410: LD_INT 1
3412: NEG
3413: PUSH
3414: LD_INT 23
3416: PUSH
3417: LD_INT 33
3419: PUSH
3420: LD_INT 27
3422: PUSH
3423: LD_INT 37
3425: PUSH
3426: LD_INT 33
3428: PUSH
3429: LD_INT 36
3431: PUSH
3432: LD_INT 38
3434: PUSH
3435: LD_INT 37
3437: PUSH
3438: LD_INT 42
3440: PUSH
3441: LD_INT 38
3443: PUSH
3444: LD_INT 51
3446: PUSH
3447: LD_INT 38
3449: PUSH
3450: LD_INT 1
3452: NEG
3453: PUSH
3454: LD_INT 1
3456: NEG
3457: PUSH
3458: LD_INT 62
3460: PUSH
3461: LD_INT 50
3463: PUSH
3464: LD_INT 56
3466: PUSH
3467: LD_INT 43
3469: PUSH
3470: LD_INT 51
3472: PUSH
3473: LD_INT 38
3475: PUSH
3476: LD_INT 42
3478: PUSH
3479: LD_INT 38
3481: PUSH
3482: LD_INT 38
3484: PUSH
3485: LD_INT 37
3487: PUSH
3488: LD_INT 33
3490: PUSH
3491: LD_INT 36
3493: PUSH
3494: LD_INT 27
3496: PUSH
3497: LD_INT 37
3499: PUSH
3500: LD_INT 23
3502: PUSH
3503: LD_INT 33
3505: PUSH
3506: LD_INT 22
3508: PUSH
3509: LD_INT 29
3511: PUSH
3512: LD_INT 16
3514: PUSH
3515: LD_INT 23
3517: PUSH
3518: LD_INT 13
3520: PUSH
3521: LD_INT 19
3523: PUSH
3524: LD_INT 10
3526: PUSH
3527: LD_INT 12
3529: PUSH
3530: LD_INT 5
3532: PUSH
3533: LD_INT 6
3535: PUSH
3536: LD_INT 4
3538: PUSH
3539: LD_INT 2
3541: PUSH
3542: EMPTY
3543: LIST
3544: LIST
3545: LIST
3546: LIST
3547: LIST
3548: LIST
3549: LIST
3550: LIST
3551: LIST
3552: LIST
3553: LIST
3554: LIST
3555: LIST
3556: LIST
3557: LIST
3558: LIST
3559: LIST
3560: LIST
3561: LIST
3562: LIST
3563: LIST
3564: LIST
3565: LIST
3566: LIST
3567: LIST
3568: LIST
3569: LIST
3570: LIST
3571: LIST
3572: LIST
3573: LIST
3574: LIST
3575: LIST
3576: LIST
3577: LIST
3578: LIST
3579: LIST
3580: LIST
3581: LIST
3582: LIST
3583: LIST
3584: LIST
3585: LIST
3586: LIST
3587: LIST
3588: LIST
3589: LIST
3590: LIST
3591: LIST
3592: LIST
3593: LIST
3594: LIST
3595: LIST
3596: ST_TO_ADDR
// Wait ( 0 0$30 ) ;
3597: LD_INT 1050
3599: PPUSH
3600: NOP4
// repeat repeat Wait ( 0 0$1 ) until PlaceUnitXY ( Reckon , 4 , 2 , false ) ;
3604: LD_INT 35
3606: PPUSH
3607: NOP4
3611: NOP4
3615: PPUSH
3616: LD_INT 4
3618: PPUSH
3619: LD_INT 2
3621: PPUSH
3622: LD_INT 0
3624: PPUSH
3625: NOP4
3629: IFFALSE 3604
// com_queue = true ;
3631: LD_ADDR_OWVAR 49
3635: PUSH
3636: LD_INT 1
3638: ST_TO_ADDR
// x := - 1 ;
3639: NOP4
3643: PUSH
3644: LD_INT 1
3646: NEG
3647: ST_TO_ADDR
// for i in reckon_way do
3648: NOP4
3652: PUSH
3653: NOP4
3657: PUSH
3658: FOR_IN
3659: IFFALSE 3736
// begin if i = - 1 then
3661: NOP4
3665: PUSH
3666: LD_INT 1
3668: NEG
3669: EQUAL
3670: IFFALSE 3683
// ComStop ( Reckon ) else
3672: NOP4
3676: PPUSH
3677: NOP4
3681: GO 3734
// if x = - 1 then
3683: NOP4
3687: PUSH
3688: LD_INT 1
3690: NEG
3691: EQUAL
3692: IFFALSE 3706
// x = i else
3694: NOP4
3698: PUSH
3699: NOP4
3703: ST_TO_ADDR
3704: GO 3734
// begin ComMoveXY ( Reckon , x , i ) ;
3706: NOP4
3710: PPUSH
3711: NOP4
3715: PPUSH
3716: NOP4
3720: PPUSH
3721: NOP4
// x = - 1 ;
3725: NOP4
3729: PUSH
3730: LD_INT 1
3732: NEG
3733: ST_TO_ADDR
// end ; end ;
3734: GO 3658
3736: POP
3737: POP
// com_queue = false ;
3738: LD_ADDR_OWVAR 49
3742: PUSH
3743: LD_INT 0
3745: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
3746: LD_INT 35
3748: PPUSH
3749: NOP4
// until ( GetAttitude ( americans , you ) = att_enemy ) or IsAt ( Reckon , 4 , 2 ) ;
3753: NOP4
3757: PPUSH
3758: NOP4
3762: PPUSH
3763: NOP4
3767: PUSH
3768: LD_INT 2
3770: EQUAL
3771: PUSH
3772: NOP4
3776: PPUSH
3777: LD_INT 4
3779: PPUSH
3780: LD_INT 2
3782: PPUSH
3783: NOP4
3787: OR
3788: IFFALSE 3746
// if IsAt ( Reckon , 4 , 2 ) then
3790: NOP4
3794: PPUSH
3795: LD_INT 4
3797: PPUSH
3798: LD_INT 2
3800: PPUSH
3801: NOP4
3805: IFFALSE 3825
// begin RemoveUnit ( Reckon ) ;
3807: NOP4
3811: PPUSH
3812: NOP4
// wait ( 0 0$20 ) ;
3816: LD_INT 700
3818: PPUSH
3819: NOP4
// end else
3823: GO 3834
// ComStop ( Reckon ) ;
3825: NOP4
3829: PPUSH
3830: NOP4
// until not IsLive ( Reckon ) ;
3834: NOP4
3838: PPUSH
3839: NOP4
3843: NOT
3844: IFFALSE 3604
// end ;
3846: END
// every 1 + 0 0$30 trigger vehicle_can_go and ( IsInUnit ( ReckonDriver ) = 0 ) do
3847: NOP4
3851: PUSH
3852: NOP4
3856: PPUSH
3857: NOP4
3861: PUSH
3862: LD_INT 0
3864: EQUAL
3865: AND
3866: IFFALSE 3897
3868: GO 3870
3870: DISABLE
// begin Say ( ReckonDriver , D7A1 ) ;
3871: NOP4
3875: PPUSH
3876: LD_STRING D7A1
3878: PPUSH
3879: NOP4
// ComAttackUnit ( ReckonDriver , Heike ) ;
3883: NOP4
3887: PPUSH
3888: NOP4
3892: PPUSH
3893: NOP4
// end ;
3897: END
// every 0 0$3 + 0 0$1 trigger vehicle_can_go and not IsLive ( ReckonDriver ) do
3898: NOP4
3902: PUSH
3903: NOP4
3907: PPUSH
3908: NOP4
3912: NOT
3913: AND
3914: IFFALSE 3953
3916: GO 3918
3918: DISABLE
// begin if IsLive ( Olaf ) and IsDying ( Reckon ) then
3919: NOP4
3923: PPUSH
3924: NOP4
3928: PUSH
3929: NOP4
3933: PPUSH
3934: NOP4
3938: AND
3939: IFFALSE 3953
// Say ( Olaf , D7O1 ) ;
3941: NOP4
3945: PPUSH
3946: LD_STRING D7O1
3948: PPUSH
3949: NOP4
// end ; end_of_file
3953: END
// var i ; every 0 0$1 trigger FilterUnitsInArea ( 4 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
3954: LD_INT 4
3956: PPUSH
3957: LD_INT 22
3959: PUSH
3960: NOP4
3964: PUSH
3965: EMPTY
3966: LIST
3967: LIST
3968: PUSH
3969: LD_INT 101
3971: PUSH
3972: NOP4
3976: PUSH
3977: EMPTY
3978: LIST
3979: LIST
3980: PUSH
3981: EMPTY
3982: LIST
3983: LIST
3984: PPUSH
3985: NOP4
3989: IFFALSE 4222
3991: GO 3993
3993: DISABLE
// begin com_queue := true ;
3994: LD_ADDR_OWVAR 49
3998: PUSH
3999: LD_INT 1
4001: ST_TO_ADDR
// for i = 1 to 10 - 3 * difficulty do
4002: NOP4
4006: PUSH
4007: DOUBLE
4008: LD_INT 1
4010: DEC
4011: ST_TO_ADDR
4012: LD_INT 10
4014: PUSH
4015: LD_INT 3
4017: PUSH
4018: NOP4
4022: MUL
4023: MINUS
4024: PUSH
4025: FOR_TO
4026: IFFALSE 4039
// ComStop ( rusforce1 ) ;
4028: NOP4
4032: PPUSH
4033: NOP4
4037: GO 4025
4039: POP
4040: POP
// if See ( russians , Heike ) then
4041: NOP4
4045: PPUSH
4046: NOP4
4050: PPUSH
4051: NOP4
4055: IFFALSE 4099
// begin ComAttackUnit ( rusforce1 , Heike ) ;
4057: NOP4
4061: PPUSH
4062: NOP4
4066: PPUSH
4067: NOP4
// Wait ( hunting ) ;
4071: NOP4
4075: PPUSH
4076: NOP4
// com_queue := false ;
4080: LD_ADDR_OWVAR 49
4084: PUSH
4085: LD_INT 0
4087: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4088: NOP4
4092: PPUSH
4093: NOP4
// end else
4097: GO 4213
// if See ( russians , Reckon ) then
4099: NOP4
4103: PPUSH
4104: NOP4
4108: PPUSH
4109: NOP4
4113: IFFALSE 4157
// begin ComAttackUnit ( rusforce1 , Reckon ) ;
4115: NOP4
4119: PPUSH
4120: NOP4
4124: PPUSH
4125: NOP4
// Wait ( hunting ) ;
4129: NOP4
4133: PPUSH
4134: NOP4
// com_queue := false ;
4138: LD_ADDR_OWVAR 49
4142: PUSH
4143: LD_INT 0
4145: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4146: NOP4
4150: PPUSH
4151: NOP4
// end else
4155: GO 4213
// if See ( russians , Olaf ) then
4157: NOP4
4161: PPUSH
4162: NOP4
4166: PPUSH
4167: NOP4
4171: IFFALSE 4213
// begin ComAttackUnit ( rusforce1 , Olaf ) ;
4173: NOP4
4177: PPUSH
4178: NOP4
4182: PPUSH
4183: NOP4
// Wait ( hunting ) ;
4187: NOP4
4191: PPUSH
4192: NOP4
// com_queue := false ;
4196: LD_ADDR_OWVAR 49
4200: PUSH
4201: LD_INT 0
4203: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4204: NOP4
4208: PPUSH
4209: NOP4
// end ; com_queue := false ;
4213: LD_ADDR_OWVAR 49
4217: PUSH
4218: LD_INT 0
4220: ST_TO_ADDR
// enable ;
4221: ENABLE
// end ;
4222: END
// every 0 0$1 + 0 0$0.5 trigger FilterUnitsInArea ( 3 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
4223: LD_INT 3
4225: PPUSH
4226: LD_INT 22
4228: PUSH
4229: NOP4
4233: PUSH
4234: EMPTY
4235: LIST
4236: LIST
4237: PUSH
4238: LD_INT 101
4240: PUSH
4241: NOP4
4245: PUSH
4246: EMPTY
4247: LIST
4248: LIST
4249: PUSH
4250: EMPTY
4251: LIST
4252: LIST
4253: PPUSH
4254: NOP4
4258: IFFALSE 4519
4260: GO 4262
4262: DISABLE
// begin com_queue := true ;
4263: LD_ADDR_OWVAR 49
4267: PUSH
4268: LD_INT 1
4270: ST_TO_ADDR
// for i = 1 to 8 - 2 * difficulty do
4271: NOP4
4275: PUSH
4276: DOUBLE
4277: LD_INT 1
4279: DEC
4280: ST_TO_ADDR
4281: LD_INT 8
4283: PUSH
4284: LD_INT 2
4286: PUSH
4287: NOP4
4291: MUL
4292: MINUS
4293: PUSH
4294: FOR_TO
4295: IFFALSE 4308
// ComStop ( rusforce1 ) ;
4297: NOP4
4301: PPUSH
4302: NOP4
4306: GO 4294
4308: POP
4309: POP
// case difficulty of 1 :
4310: NOP4
4314: PUSH
4315: LD_INT 1
4317: DOUBLE
4318: EQUAL
4319: IFTRUE 4323
4321: GO 4326
4323: POP
// ; 2 :
4324: GO 4370
4326: LD_INT 2
4328: DOUBLE
4329: EQUAL
4330: IFTRUE 4334
4332: GO 4344
4334: POP
// ComFree ( 24 ) ; 3 :
4335: LD_INT 24
4337: PPUSH
4338: NOP4
4342: GO 4370
4344: LD_INT 3
4346: DOUBLE
4347: EQUAL
4348: IFTRUE 4352
4350: GO 4369
4352: POP
// ComFree ( [ 24 , 25 ] ) ; end ;
4353: LD_INT 24
4355: PUSH
4356: LD_INT 25
4358: PUSH
4359: EMPTY
4360: LIST
4361: LIST
4362: PPUSH
4363: NOP4
4367: GO 4370
4369: POP
// if See ( russians , Heike ) then
4370: NOP4
4374: PPUSH
4375: NOP4
4379: PPUSH
4380: NOP4
4384: IFFALSE 4420
// begin ComAttackUnit ( rusforce2 , Heike ) ;
4386: NOP4
4390: PPUSH
4391: NOP4
4395: PPUSH
4396: NOP4
// Wait ( hunting ) ;
4400: NOP4
4404: PPUSH
4405: NOP4
// ComReturn ( rusforce2 ) ;
4409: NOP4
4413: PPUSH
4414: NOP4
// end else
4418: GO 4518
// if See ( russians , Reckon ) then
4420: NOP4
4424: PPUSH
4425: NOP4
4429: PPUSH
4430: NOP4
4434: IFFALSE 4470
// begin ComAttackUnit ( rusforce2 , Reckon ) ;
4436: NOP4
4440: PPUSH
4441: NOP4
4445: PPUSH
4446: NOP4
// Wait ( hunting ) ;
4450: NOP4
4454: PPUSH
4455: NOP4
// ComReturn ( rusforce2 ) ;
4459: NOP4
4463: PPUSH
4464: NOP4
// end else
4468: GO 4518
// if See ( russians , Olaf ) then
4470: NOP4
4474: PPUSH
4475: NOP4
4479: PPUSH
4480: NOP4
4484: IFFALSE 4518
// begin ComAttackUnit ( rusforce2 , Olaf ) ;
4486: NOP4
4490: PPUSH
4491: NOP4
4495: PPUSH
4496: NOP4
// Wait ( hunting ) ;
4500: NOP4
4504: PPUSH
4505: NOP4
// ComReturn ( rusforce2 ) ;
4509: NOP4
4513: PPUSH
4514: NOP4
// end ; enable ;
4518: ENABLE
// end ;
4519: END
// every 0 0$1.2 trigger FilterUnitsInArea ( 10 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
4520: LD_INT 10
4522: PPUSH
4523: LD_INT 22
4525: PUSH
4526: NOP4
4530: PUSH
4531: EMPTY
4532: LIST
4533: LIST
4534: PUSH
4535: LD_INT 101
4537: PUSH
4538: NOP4
4542: PUSH
4543: EMPTY
4544: LIST
4545: LIST
4546: PUSH
4547: EMPTY
4548: LIST
4549: LIST
4550: PPUSH
4551: NOP4
4555: IFFALSE 4579
4557: GO 4559
4559: DISABLE
// begin if IsOk ( 31 ) then
4560: LD_INT 31
4562: PPUSH
4563: NOP4
4567: IFFALSE 4579
// Say ( 31 , D9R1 ) ;
4569: LD_INT 31
4571: PPUSH
4572: LD_STRING D9R1
4574: PPUSH
4575: NOP4
// end ;
4579: END
// function check_guard ( un , area , x , y ) ; begin
4580: LD_INT 0
4582: PPUSH
// if not IsInArea ( un , area ) then
4583: NOP4
4587: PPUSH
4588: NOP4
4592: PPUSH
4593: NOP4
4597: NOT
4598: IFFALSE 4619
// ComMoveXY ( un , x , y ) ;
4600: NOP4
4604: PPUSH
4605: NOP4
4609: PPUSH
4610: NOP4
4614: PPUSH
4615: NOP4
// end ;
4619: LD_VAR 0 5
4623: RET
// every 0 0$3 do
4624: GO 4626
4626: DISABLE
// begin check_guard ( 30 , 11 , 80 , 82 ) ;
4627: LD_INT 30
4629: PPUSH
4630: LD_INT 11
4632: PPUSH
4633: LD_INT 80
4635: PPUSH
4636: LD_INT 82
4638: PPUSH
4639: NOP4
// check_guard ( 31 , 11 , 81 , 85 ) ;
4643: LD_INT 31
4645: PPUSH
4646: LD_INT 11
4648: PPUSH
4649: LD_INT 81
4651: PPUSH
4652: LD_INT 85
4654: PPUSH
4655: NOP4
// check_guard ( 29 , 11 , 78 , 85 ) ;
4659: LD_INT 29
4661: PPUSH
4662: LD_INT 11
4664: PPUSH
4665: LD_INT 78
4667: PPUSH
4668: LD_INT 85
4670: PPUSH
4671: NOP4
// enable ;
4675: ENABLE
// end ;
4676: END
