// export you , russians , americans ; export Heike , Olaf , Reckon , ReckonDriver ; export rusboth , rusforce1 , rusforce2 ; export vehicle_can_go , can_see_tracks , hunting , am1faze , am1reaction ; function prepare_units ; begin
   0: LD_INT 0
   2: PPUSH
// rusboth = [ rus1 , rus2 ] ;
   3: LD_ADDR_EXP 8
   7: PUSH
   8: LD_INT 17
  10: PUSH
  11: LD_INT 19
  13: PUSH
  14: EMPTY
  15: LIST
  16: LIST
  17: ST_TO_ADDR
// InitUc ;
  18: CALL_OW 12
// InitHc ;
  22: CALL_OW 13
// InitVc ;
  26: CALL_OW 14
// uc_direction = 3 ;
  30: LD_ADDR_OWVAR 14
  34: PUSH
  35: LD_INT 3
  37: ST_TO_ADDR
// uc_nation = nation_arabian ;
  38: LD_ADDR_OWVAR 11
  42: PUSH
  43: LD_INT 2
  45: ST_TO_ADDR
// uc_side = you ;
  46: LD_ADDR_OWVAR 10
  50: PUSH
  51: LD_EXP 1
  55: ST_TO_ADDR
// hc_sex = sex_female ;
  56: LD_ADDR_OWVAR 17
  60: PUSH
  61: LD_INT 2
  63: ST_TO_ADDR
// hc_class = class_soldier ;
  64: LD_ADDR_OWVAR 18
  68: PUSH
  69: LD_INT 1
  71: ST_TO_ADDR
// hc_skills = [ 3 , 0 , 1 , 1 ] ;
  72: LD_ADDR_OWVAR 21
  76: PUSH
  77: LD_INT 3
  79: PUSH
  80: LD_INT 0
  82: PUSH
  83: LD_INT 1
  85: PUSH
  86: LD_INT 1
  88: PUSH
  89: EMPTY
  90: LIST
  91: LIST
  92: LIST
  93: LIST
  94: ST_TO_ADDR
// hc_name = Heike ;
  95: LD_ADDR_OWVAR 16
  99: PUSH
 100: LD_STRING Heike
 102: ST_TO_ADDR
// hc_attr = [ 10 , 12 ] ;
 103: LD_ADDR_OWVAR 19
 107: PUSH
 108: LD_INT 10
 110: PUSH
 111: LD_INT 12
 113: PUSH
 114: EMPTY
 115: LIST
 116: LIST
 117: ST_TO_ADDR
// hc_gallery = Ar ;
 118: LD_ADDR_OWVAR 23
 122: PUSH
 123: LD_STRING Ar
 125: ST_TO_ADDR
// hc_face_number = 1 ;
 126: LD_ADDR_OWVAR 24
 130: PUSH
 131: LD_INT 1
 133: ST_TO_ADDR
// Heike := CreateHuman ;
 134: LD_ADDR_EXP 4
 138: PUSH
 139: CALL_OW 32
 143: ST_TO_ADDR
// hc_sex = sex_male ;
 144: LD_ADDR_OWVAR 17
 148: PUSH
 149: LD_INT 1
 151: ST_TO_ADDR
// hc_class = class_mechanic ;
 152: LD_ADDR_OWVAR 18
 156: PUSH
 157: LD_INT 3
 159: ST_TO_ADDR
// hc_skills = [ 2 , 1 , 3 , 0 ] ;
 160: LD_ADDR_OWVAR 21
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 1
 170: PUSH
 171: LD_INT 3
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: ST_TO_ADDR
// hc_name = Olaf Larsson ;
 183: LD_ADDR_OWVAR 16
 187: PUSH
 188: LD_STRING Olaf Larsson
 190: ST_TO_ADDR
// hc_attr = [ 12 , 10 ] ;
 191: LD_ADDR_OWVAR 19
 195: PUSH
 196: LD_INT 12
 198: PUSH
 199: LD_INT 10
 201: PUSH
 202: EMPTY
 203: LIST
 204: LIST
 205: ST_TO_ADDR
// hc_face_number = 2 ;
 206: LD_ADDR_OWVAR 24
 210: PUSH
 211: LD_INT 2
 213: ST_TO_ADDR
// Olaf := CreateHuman ;
 214: LD_ADDR_EXP 5
 218: PUSH
 219: CALL_OW 32
 223: ST_TO_ADDR
// uc_direction = 2 ;
 224: LD_ADDR_OWVAR 14
 228: PUSH
 229: LD_INT 2
 231: ST_TO_ADDR
// uc_nation = nation_american ;
 232: LD_ADDR_OWVAR 11
 236: PUSH
 237: LD_INT 1
 239: ST_TO_ADDR
// uc_side = americans ;
 240: LD_ADDR_OWVAR 10
 244: PUSH
 245: LD_EXP 3
 249: ST_TO_ADDR
// hc_sex = sex_male ;
 250: LD_ADDR_OWVAR 17
 254: PUSH
 255: LD_INT 1
 257: ST_TO_ADDR
// hc_class = class_mechanic ;
 258: LD_ADDR_OWVAR 18
 262: PUSH
 263: LD_INT 3
 265: ST_TO_ADDR
// hc_skills = [ 1 , 1 , 1 , 0 ] ;
 266: LD_ADDR_OWVAR 21
 270: PUSH
 271: LD_INT 1
 273: PUSH
 274: LD_INT 1
 276: PUSH
 277: LD_INT 1
 279: PUSH
 280: LD_INT 0
 282: PUSH
 283: EMPTY
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: ST_TO_ADDR
// hc_name = Ronald Brown ;
 289: LD_ADDR_OWVAR 16
 293: PUSH
 294: LD_STRING Ronald Brown
 296: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
 297: LD_ADDR_OWVAR 19
 301: PUSH
 302: LD_INT 10
 304: PUSH
 305: LD_INT 10
 307: PUSH
 308: EMPTY
 309: LIST
 310: LIST
 311: ST_TO_ADDR
// hc_gallery =  ;
 312: LD_ADDR_OWVAR 23
 316: PUSH
 317: LD_STRING 
 319: ST_TO_ADDR
// ReckonDriver = CreateHuman ;
 320: LD_ADDR_EXP 7
 324: PUSH
 325: CALL_OW 32
 329: ST_TO_ADDR
// vc_chassis = 1 ;
 330: LD_ADDR_OWVAR 26
 334: PUSH
 335: LD_INT 1
 337: ST_TO_ADDR
// vc_engine = 1 ;
 338: LD_ADDR_OWVAR 28
 342: PUSH
 343: LD_INT 1
 345: ST_TO_ADDR
// vc_control = 1 ;
 346: LD_ADDR_OWVAR 27
 350: PUSH
 351: LD_INT 1
 353: ST_TO_ADDR
// vc_weapon = 2 ;
 354: LD_ADDR_OWVAR 29
 358: PUSH
 359: LD_INT 2
 361: ST_TO_ADDR
// Reckon := CreateVehicle ;
 362: LD_ADDR_EXP 6
 366: PUSH
 367: CALL_OW 33
 371: ST_TO_ADDR
// PlaceHumanInUnit ( ReckonDriver , Reckon ) ;
 372: LD_EXP 7
 376: PPUSH
 377: LD_EXP 6
 381: PPUSH
 382: CALL_OW 40
// ComHold ( [ rus1 , rus2 , am1 ] ) ;
 386: LD_INT 17
 388: PUSH
 389: LD_INT 19
 391: PUSH
 392: LD_INT 20
 394: PUSH
 395: EMPTY
 396: LIST
 397: LIST
 398: LIST
 399: PPUSH
 400: CALL_OW 93
// ComHold ( [ 24 , 25 ] ) ;
 404: LD_INT 24
 406: PUSH
 407: LD_INT 25
 409: PUSH
 410: EMPTY
 411: LIST
 412: LIST
 413: PPUSH
 414: CALL_OW 93
// ComFree ( Olaf ) ;
 418: LD_EXP 5
 422: PPUSH
 423: CALL_OW 92
// end ;
 427: LD_VAR 0 1
 431: RET
// function prepare_sides ; begin
 432: LD_INT 0
 434: PPUSH
// you = 2 ;
 435: LD_ADDR_EXP 1
 439: PUSH
 440: LD_INT 2
 442: ST_TO_ADDR
// americans = 1 ;
 443: LD_ADDR_EXP 3
 447: PUSH
 448: LD_INT 1
 450: ST_TO_ADDR
// russians = 3 ;
 451: LD_ADDR_EXP 2
 455: PUSH
 456: LD_INT 3
 458: ST_TO_ADDR
// rusforce1 = FilterUnitsInArea ( RF1 , [ [ f_side , russians ] , f_not , [ f_type , unit_building ] ] ) ;
 459: LD_ADDR_EXP 9
 463: PUSH
 464: LD_INT 3
 466: PPUSH
 467: LD_INT 22
 469: PUSH
 470: LD_EXP 2
 474: PUSH
 475: EMPTY
 476: LIST
 477: LIST
 478: PUSH
 479: LD_INT 3
 481: PUSH
 482: LD_INT 21
 484: PUSH
 485: LD_INT 3
 487: PUSH
 488: EMPTY
 489: LIST
 490: LIST
 491: PUSH
 492: EMPTY
 493: LIST
 494: LIST
 495: LIST
 496: PPUSH
 497: CALL_OW 51
 501: ST_TO_ADDR
// rusforce2 = FilterUnitsInArea ( RF2 , [ [ f_side , russians ] , f_not , [ f_type , unit_building ] ] ) ;
 502: LD_ADDR_EXP 10
 506: PUSH
 507: LD_INT 2
 509: PPUSH
 510: LD_INT 22
 512: PUSH
 513: LD_EXP 2
 517: PUSH
 518: EMPTY
 519: LIST
 520: LIST
 521: PUSH
 522: LD_INT 3
 524: PUSH
 525: LD_INT 21
 527: PUSH
 528: LD_INT 3
 530: PUSH
 531: EMPTY
 532: LIST
 533: LIST
 534: PUSH
 535: EMPTY
 536: LIST
 537: LIST
 538: LIST
 539: PPUSH
 540: CALL_OW 51
 544: ST_TO_ADDR
// ComRemember ( rusforce1 ) ;
 545: LD_EXP 9
 549: PPUSH
 550: CALL_OW 96
// ComRemember ( rusforce2 ) ;
 554: LD_EXP 10
 558: PPUSH
 559: CALL_OW 96
// SetAttitude ( russians , you , att_neutral , true ) ;
 563: LD_EXP 2
 567: PPUSH
 568: LD_EXP 1
 572: PPUSH
 573: LD_INT 0
 575: PPUSH
 576: LD_INT 1
 578: PPUSH
 579: CALL_OW 54
// SetAttitude ( americans , you , att_neutral , true ) ;
 583: LD_EXP 3
 587: PPUSH
 588: LD_EXP 1
 592: PPUSH
 593: LD_INT 0
 595: PPUSH
 596: LD_INT 1
 598: PPUSH
 599: CALL_OW 54
// SetAttitude ( americans , russians , att_enemy , true ) ;
 603: LD_EXP 3
 607: PPUSH
 608: LD_EXP 2
 612: PPUSH
 613: LD_INT 2
 615: PPUSH
 616: LD_INT 1
 618: PPUSH
 619: CALL_OW 54
// end ;
 623: LD_VAR 0 1
 627: RET
// starting begin prepare_sides ;
 628: CALL 432 0 0
// prepare_units ;
 632: CALL 0 0 0
// am1faze = 0 ;
 636: LD_ADDR_EXP 14
 640: PUSH
 641: LD_INT 0
 643: ST_TO_ADDR
// can_see_tracks = false ;
 644: LD_ADDR_EXP 12
 648: PUSH
 649: LD_INT 0
 651: ST_TO_ADDR
// vehicle_can_go = false ;
 652: LD_ADDR_EXP 11
 656: PUSH
 657: LD_INT 0
 659: ST_TO_ADDR
// case difficulty of 1 :
 660: LD_OWVAR 46
 664: PUSH
 665: LD_INT 1
 667: DOUBLE
 668: EQUAL
 669: IFTRUE 673
 671: GO 753
 673: POP
// begin am1reaction := 20 ;
 674: LD_ADDR_EXP 15
 678: PUSH
 679: LD_INT 20
 681: ST_TO_ADDR
// SetLives ( rus1 , 600 ) ;
 682: LD_INT 17
 684: PPUSH
 685: LD_INT 600
 687: PPUSH
 688: CALL_OW 145
// SetSkill ( rus1 , skill_combat , 2 ) ;
 692: LD_INT 17
 694: PPUSH
 695: LD_INT 1
 697: PPUSH
 698: LD_INT 2
 700: PPUSH
 701: CALL_OW 148
// SetLives ( Reckon , 280 ) ;
 705: LD_EXP 6
 709: PPUSH
 710: LD_INT 280
 712: PPUSH
 713: CALL_OW 145
// SetSkill ( lstguard , skill_combat , 0 ) ;
 717: LD_INT 35
 719: PPUSH
 720: LD_INT 1
 722: PPUSH
 723: LD_INT 0
 725: PPUSH
 726: CALL_OW 148
// SetAttr ( lstguard , attr_stamina , 8 ) ;
 730: LD_INT 35
 732: PPUSH
 733: LD_INT 1
 735: PPUSH
 736: LD_INT 8
 738: PPUSH
 739: CALL_OW 149
// hunting := 0 0$10 ;
 743: LD_ADDR_EXP 13
 747: PUSH
 748: LD_INT 350
 750: ST_TO_ADDR
// end ; 2 :
 751: GO 930
 753: LD_INT 2
 755: DOUBLE
 756: EQUAL
 757: IFTRUE 761
 759: GO 841
 761: POP
// begin am1reaction := 10 ;
 762: LD_ADDR_EXP 15
 766: PUSH
 767: LD_INT 10
 769: ST_TO_ADDR
// SetLives ( rus1 , 800 ) ;
 770: LD_INT 17
 772: PPUSH
 773: LD_INT 800
 775: PPUSH
 776: CALL_OW 145
// SetSkill ( rus1 , skill_combat , 3 ) ;
 780: LD_INT 17
 782: PPUSH
 783: LD_INT 1
 785: PPUSH
 786: LD_INT 3
 788: PPUSH
 789: CALL_OW 148
// SetLives ( Reckon , 330 ) ;
 793: LD_EXP 6
 797: PPUSH
 798: LD_INT 330
 800: PPUSH
 801: CALL_OW 145
// SetSkill ( lstguard , skill_combat , 1 ) ;
 805: LD_INT 35
 807: PPUSH
 808: LD_INT 1
 810: PPUSH
 811: LD_INT 1
 813: PPUSH
 814: CALL_OW 148
// SetAttr ( lstguard , attr_stamina , 8 ) ;
 818: LD_INT 35
 820: PPUSH
 821: LD_INT 1
 823: PPUSH
 824: LD_INT 8
 826: PPUSH
 827: CALL_OW 149
// hunting := 0 0$20 ;
 831: LD_ADDR_EXP 13
 835: PUSH
 836: LD_INT 700
 838: ST_TO_ADDR
// end ; 3 :
 839: GO 930
 841: LD_INT 3
 843: DOUBLE
 844: EQUAL
 845: IFTRUE 849
 847: GO 929
 849: POP
// begin am1reaction := 1 ;
 850: LD_ADDR_EXP 15
 854: PUSH
 855: LD_INT 1
 857: ST_TO_ADDR
// SetLives ( rus1 , 1000 ) ;
 858: LD_INT 17
 860: PPUSH
 861: LD_INT 1000
 863: PPUSH
 864: CALL_OW 145
// SetSkill ( rus1 , skill_combat , 4 ) ;
 868: LD_INT 17
 870: PPUSH
 871: LD_INT 1
 873: PPUSH
 874: LD_INT 4
 876: PPUSH
 877: CALL_OW 148
// SetLives ( Reckon , 380 ) ;
 881: LD_EXP 6
 885: PPUSH
 886: LD_INT 380
 888: PPUSH
 889: CALL_OW 145
// SetSkill ( lstguard , skill_combat , 1 ) ;
 893: LD_INT 35
 895: PPUSH
 896: LD_INT 1
 898: PPUSH
 899: LD_INT 1
 901: PPUSH
 902: CALL_OW 148
// SetAttr ( lstguard , attr_stamina , 9 ) ;
 906: LD_INT 35
 908: PPUSH
 909: LD_INT 1
 911: PPUSH
 912: LD_INT 9
 914: PPUSH
 915: CALL_OW 149
// hunting := 0 0$30 ;
 919: LD_ADDR_EXP 13
 923: PUSH
 924: LD_INT 1050
 926: ST_TO_ADDR
// end ; end ;
 927: GO 930
 929: POP
// Hinttime = 120 * 1000 ;
 930: LD_ADDR_EXP 16
 934: PUSH
 935: LD_INT 120
 937: PUSH
 938: LD_INT 1000
 940: MUL
 941: ST_TO_ADDR
// CenterOnXY ( 79 , 24 ) ;
 942: LD_INT 79
 944: PPUSH
 945: LD_INT 24
 947: PPUSH
 948: CALL_OW 56
// end ;
 952: END
// every 0 0$0.3 trigger IsOK ( Heike ) and IsInArea ( Heike , EastSide ) do
 953: LD_EXP 4
 957: PPUSH
 958: CALL_OW 184
 962: PUSH
 963: LD_EXP 4
 967: PPUSH
 968: LD_INT 6
 970: PPUSH
 971: CALL_OW 188
 975: AND
 976: IFFALSE 1041
 978: GO 980
 980: DISABLE
// begin if IsOK ( Olaf ) then
 981: LD_EXP 5
 985: PPUSH
 986: CALL_OW 184
 990: IFFALSE 1033
// begin stop_action := true ;
 992: LD_ADDR_OWVAR 37
 996: PUSH
 997: LD_INT 1
 999: ST_TO_ADDR
// CenterOnUnits ( Heike ) ;
1000: LD_EXP 4
1004: PPUSH
1005: CALL_OW 57
// Say ( Olaf , D11O1 ) ;
1009: LD_EXP 5
1013: PPUSH
1014: LD_STRING D11O1
1016: PPUSH
1017: CALL_OW 58
// Say ( Heike , D11H1 ) ;
1021: LD_EXP 4
1025: PPUSH
1026: LD_STRING D11H1
1028: PPUSH
1029: CALL_OW 58
// end ; end_of_mission := 1 ;
1033: LD_ADDR_OWVAR 42
1037: PUSH
1038: LD_INT 1
1040: ST_TO_ADDR
// end ;
1041: END
// every 0 0$0.3 + 0 0$0.15 trigger IsOK ( Heike ) and IsInArea ( Heike , SouthSide ) and IsInUnit ( Heike ) do
1042: LD_EXP 4
1046: PPUSH
1047: CALL_OW 184
1051: PUSH
1052: LD_EXP 4
1056: PPUSH
1057: LD_INT 8
1059: PPUSH
1060: CALL_OW 188
1064: AND
1065: PUSH
1066: LD_EXP 4
1070: PPUSH
1071: CALL_OW 190
1075: AND
1076: IFFALSE 1141
1078: GO 1080
1080: DISABLE
// begin if IsOK ( Olaf ) then
1081: LD_EXP 5
1085: PPUSH
1086: CALL_OW 184
1090: IFFALSE 1133
// begin stop_action := true ;
1092: LD_ADDR_OWVAR 37
1096: PUSH
1097: LD_INT 1
1099: ST_TO_ADDR
// CenterOnUnits ( Heike ) ;
1100: LD_EXP 4
1104: PPUSH
1105: CALL_OW 57
// Say ( Olaf , D11O1 ) ;
1109: LD_EXP 5
1113: PPUSH
1114: LD_STRING D11O1
1116: PPUSH
1117: CALL_OW 58
// Say ( Heike , D11H1 ) ;
1121: LD_EXP 4
1125: PPUSH
1126: LD_STRING D11H1
1128: PPUSH
1129: CALL_OW 58
// end ; end_of_mission := 1 ;
1133: LD_ADDR_OWVAR 42
1137: PUSH
1138: LD_INT 1
1140: ST_TO_ADDR
// end ;
1141: END
// every 0 0$1 trigger ( tick > 0 0$10 ) and not IsOK ( Heike ) do
1142: LD_OWVAR 1
1146: PUSH
1147: LD_INT 350
1149: GREATER
1150: PUSH
1151: LD_EXP 4
1155: PPUSH
1156: CALL_OW 184
1160: NOT
1161: AND
1162: IFFALSE 1183
1164: GO 1166
1166: DISABLE
// begin wait ( 0 0$3 ) ;
1167: LD_INT 105
1169: PPUSH
1170: CALL_OW 49
// end_of_mission := - 1 ;
1174: LD_ADDR_OWVAR 42
1178: PUSH
1179: LD_INT 1
1181: NEG
1182: ST_TO_ADDR
// end ;
1183: END
// var s , q ; every 0 0$0.5 trigger end_of_mission do
1184: LD_OWVAR 42
1188: IFFALSE 1420
1190: GO 1192
1192: DISABLE
// begin case end_of_mission of - 1 :
1193: LD_OWVAR 42
1197: PUSH
1198: LD_INT 1
1200: NEG
1201: DOUBLE
1202: EQUAL
1203: IFTRUE 1207
1205: GO 1223
1207: POP
// BuildQuery ( Heike is dying. , [ MISSION FAILED ] ) ; 1 :
1208: LD_STRING Heike is dying.
1210: PPUSH
1211: LD_STRING MISSION FAILED
1213: PUSH
1214: EMPTY
1215: LIST
1216: PPUSH
1217: CALL_OW 62
1221: GO 1416
1223: LD_INT 1
1225: DOUBLE
1226: EQUAL
1227: IFTRUE 1231
1229: GO 1415
1231: POP
// begin s = Heike saved. ;
1232: LD_ADDR_LOC 1
1236: PUSH
1237: LD_STRING Heike saved.
1239: ST_TO_ADDR
// q = 1 ;
1240: LD_ADDR_LOC 2
1244: PUSH
1245: LD_INT 1
1247: ST_TO_ADDR
// if IsOk ( Olaf ) then
1248: LD_EXP 5
1252: PPUSH
1253: CALL_OW 184
1257: IFFALSE 1287
// begin s = s &  Olaf survived. ;
1259: LD_ADDR_LOC 1
1263: PUSH
1264: LD_LOC 1
1268: PUSH
1269: LD_STRING  Olaf survived.
1271: STR
1272: ST_TO_ADDR
// q = q + 1 ;
1273: LD_ADDR_LOC 2
1277: PUSH
1278: LD_LOC 2
1282: PUSH
1283: LD_INT 1
1285: PLUS
1286: ST_TO_ADDR
// end ; if IsInArea ( Heike , SouthSide ) then
1287: LD_EXP 4
1291: PPUSH
1292: LD_INT 8
1294: PPUSH
1295: CALL_OW 188
1299: IFFALSE 1329
// begin s = s &  Vehicle captured. ;
1301: LD_ADDR_LOC 1
1305: PUSH
1306: LD_LOC 1
1310: PUSH
1311: LD_STRING  Vehicle captured.
1313: STR
1314: ST_TO_ADDR
// q = q + 1 ;
1315: LD_ADDR_LOC 2
1319: PUSH
1320: LD_LOC 2
1324: PUSH
1325: LD_INT 1
1327: PLUS
1328: ST_TO_ADDR
// end ; case q of 3 :
1329: LD_LOC 2
1333: PUSH
1334: LD_INT 3
1336: DOUBLE
1337: EQUAL
1338: IFTRUE 1342
1340: GO 1360
1342: POP
// BuildQuery ( s , [ EXCELENT !!! ] ) ; 2 :
1343: LD_LOC 1
1347: PPUSH
1348: LD_STRING EXCELENT !!!
1350: PUSH
1351: EMPTY
1352: LIST
1353: PPUSH
1354: CALL_OW 62
1358: GO 1413
1360: LD_INT 2
1362: DOUBLE
1363: EQUAL
1364: IFTRUE 1368
1366: GO 1386
1368: POP
// BuildQuery ( s , [ MISSION COMPLETE !! ] ) ; 1 :
1369: LD_LOC 1
1373: PPUSH
1374: LD_STRING MISSION COMPLETE !!
1376: PUSH
1377: EMPTY
1378: LIST
1379: PPUSH
1380: CALL_OW 62
1384: GO 1413
1386: LD_INT 1
1388: DOUBLE
1389: EQUAL
1390: IFTRUE 1394
1392: GO 1412
1394: POP
// BuildQuery ( s , [ MISSION COMPLETE ! ] ) ; end ;
1395: LD_LOC 1
1399: PPUSH
1400: LD_STRING MISSION COMPLETE !
1402: PUSH
1403: EMPTY
1404: LIST
1405: PPUSH
1406: CALL_OW 62
1410: GO 1413
1412: POP
// end ; end ;
1413: GO 1416
1415: POP
// ExitGame ;
1416: CALL_OW 202
// end ;
1420: END
// final begin end ; end_of_file
1421: END
// export hinttime ; every 0 0$3.5 do
1422: GO 1424
1424: DISABLE
// begin ingame_video := true ;
1425: LD_ADDR_OWVAR 36
1429: PUSH
1430: LD_INT 1
1432: ST_TO_ADDR
// PlaceUnitXY ( Heike , 79 , 24 , true ) ;
1433: LD_EXP 4
1437: PPUSH
1438: LD_INT 79
1440: PPUSH
1441: LD_INT 24
1443: PPUSH
1444: LD_INT 1
1446: PPUSH
1447: CALL_OW 36
// wait ( 0 0$2 ) ;
1451: LD_INT 70
1453: PPUSH
1454: CALL_OW 49
// com_queue := true ;
1458: LD_ADDR_OWVAR 35
1462: PUSH
1463: LD_INT 1
1465: ST_TO_ADDR
// ComMoveXY ( Heike , 80 , 24 ) ;
1466: LD_EXP 4
1470: PPUSH
1471: LD_INT 80
1473: PPUSH
1474: LD_INT 24
1476: PPUSH
1477: CALL_OW 66
// ComStop ( Heike ) ;
1481: LD_EXP 4
1485: PPUSH
1486: CALL_OW 94
// ComMoveXY ( Heike , 80 , 25 ) ;
1490: LD_EXP 4
1494: PPUSH
1495: LD_INT 80
1497: PPUSH
1498: LD_INT 25
1500: PPUSH
1501: CALL_OW 66
// ComMoveXY ( Heike , 79 , 25 ) ;
1505: LD_EXP 4
1509: PPUSH
1510: LD_INT 79
1512: PPUSH
1513: LD_INT 25
1515: PPUSH
1516: CALL_OW 66
// ComStop ( Heike ) ;
1520: LD_EXP 4
1524: PPUSH
1525: CALL_OW 94
// ComStop ( Heike ) ;
1529: LD_EXP 4
1533: PPUSH
1534: CALL_OW 94
// ComMoveXY ( Heike , 79 , 26 ) ;
1538: LD_EXP 4
1542: PPUSH
1543: LD_INT 79
1545: PPUSH
1546: LD_INT 26
1548: PPUSH
1549: CALL_OW 66
// ComMoveXY ( Heike , 78 , 26 ) ;
1553: LD_EXP 4
1557: PPUSH
1558: LD_INT 78
1560: PPUSH
1561: LD_INT 26
1563: PPUSH
1564: CALL_OW 66
// ComStop ( Heike ) ;
1568: LD_EXP 4
1572: PPUSH
1573: CALL_OW 94
// ComMoveXY ( Heike , 79 , 26 ) ;
1577: LD_EXP 4
1581: PPUSH
1582: LD_INT 79
1584: PPUSH
1585: LD_INT 26
1587: PPUSH
1588: CALL_OW 66
// com_queue := false ;
1592: LD_ADDR_OWVAR 35
1596: PUSH
1597: LD_INT 0
1599: ST_TO_ADDR
// Wait ( 0 0$0.5 ) ;
1600: LD_INT 18
1602: PPUSH
1603: CALL_OW 49
// Say ( Heike , D1H1 ) ;
1607: LD_EXP 4
1611: PPUSH
1612: LD_STRING D1H1
1614: PPUSH
1615: CALL_OW 58
// CenterOnXY ( 78 , 17 ) ;
1619: LD_INT 78
1621: PPUSH
1622: LD_INT 17
1624: PPUSH
1625: CALL_OW 56
// ComMoveXY ( Heike , 78 , 17 ) ;
1629: LD_EXP 4
1633: PPUSH
1634: LD_INT 78
1636: PPUSH
1637: LD_INT 17
1639: PPUSH
1640: CALL_OW 66
// ingame_video := false ;
1644: LD_ADDR_OWVAR 36
1648: PUSH
1649: LD_INT 0
1651: ST_TO_ADDR
// Say ( Heike , D1H1a ) ;
1652: LD_EXP 4
1656: PPUSH
1657: LD_STRING D1H1a
1659: PPUSH
1660: CALL_OW 58
// ChangeMissionObjectives ( M1 ) ;
1664: LD_STRING M1
1666: PPUSH
1667: CALL_OW 199
// Hint ( Control basics ) ;
1671: LD_STRING Control basics
1673: PPUSH
1674: CALL_OW 200
// end ;
1678: END
// function seen_russian_base ; begin
1679: LD_INT 0
1681: PPUSH
// result := FilterAllUnits ( [ [ f_see , you ] , [ f_type , unit_building ] , [ f_side , russians ] ] ) ;
1682: LD_ADDR_VAR 0 1
1686: PUSH
1687: LD_INT 101
1689: PUSH
1690: LD_EXP 1
1694: PUSH
1695: EMPTY
1696: LIST
1697: LIST
1698: PUSH
1699: LD_INT 21
1701: PUSH
1702: LD_INT 3
1704: PUSH
1705: EMPTY
1706: LIST
1707: LIST
1708: PUSH
1709: LD_INT 22
1711: PUSH
1712: LD_EXP 2
1716: PUSH
1717: EMPTY
1718: LIST
1719: LIST
1720: PUSH
1721: EMPTY
1722: LIST
1723: LIST
1724: LIST
1725: PPUSH
1726: CALL_OW 50
1730: ST_TO_ADDR
// end ;
1731: LD_VAR 0 1
1735: RET
// every 0 0$1 trigger seen_russian_base do
1736: CALL 1679 0 0
1740: IFFALSE 1803
1742: GO 1744
1744: DISABLE
// begin CenterOnUnits ( seen_russian_base ) ;
1745: CALL 1679 0 0
1749: PPUSH
1750: CALL_OW 57
// wait ( 0 0$1 ) ;
1754: LD_INT 35
1756: PPUSH
1757: CALL_OW 49
// ComStop ( Heike ) ;
1761: LD_EXP 4
1765: PPUSH
1766: CALL_OW 94
// say ( Heike , D2H1 ) ;
1770: LD_EXP 4
1774: PPUSH
1775: LD_STRING D2H1
1777: PPUSH
1778: CALL_OW 58
// if IsInArea ( Heike , Hill ) then
1782: LD_EXP 4
1786: PPUSH
1787: LD_INT 11
1789: PPUSH
1790: CALL_OW 188
1794: IFFALSE 1803
// Hint ( Range of sight ) ;
1796: LD_STRING Range of sight
1798: PPUSH
1799: CALL_OW 200
// end ;
1803: END
// every 0 0$0.5 trigger see ( you , am1 ) do var heikefree ;
1804: LD_EXP 1
1808: PPUSH
1809: LD_INT 20
1811: PPUSH
1812: CALL_OW 176
1816: IFFALSE 2385
1818: GO 1820
1820: DISABLE
1821: LD_INT 0
1823: PPUSH
// begin am1faze := - 1 ;
1824: LD_ADDR_EXP 14
1828: PUSH
1829: LD_INT 1
1831: NEG
1832: ST_TO_ADDR
// ingame_video := true ;
1833: LD_ADDR_OWVAR 36
1837: PUSH
1838: LD_INT 1
1840: ST_TO_ADDR
// ComMoveUnit ( Heike , am1 ) ;
1841: LD_EXP 4
1845: PPUSH
1846: LD_INT 20
1848: PPUSH
1849: CALL_OW 67
// ComMoveUnit ( am1 , Heike ) ;
1853: LD_INT 20
1855: PPUSH
1856: LD_EXP 4
1860: PPUSH
1861: CALL_OW 67
// Wait ( 1 ) ;
1865: LD_INT 1
1867: PPUSH
1868: CALL_OW 49
// ComStop ( Heike ) ;
1872: LD_EXP 4
1876: PPUSH
1877: CALL_OW 94
// heikefree := GetFreeMode ( Heike ) ;
1881: LD_ADDR_VAR 0 1
1885: PUSH
1886: LD_EXP 4
1890: PPUSH
1891: CALL_OW 179
1895: ST_TO_ADDR
// ComHold ( Heike ) ;
1896: LD_EXP 4
1900: PPUSH
1901: CALL_OW 93
// async ;
1905: ASYNC
// SayNoFace ( Heike , D3H1 ) ;
1906: LD_EXP 4
1910: PPUSH
1911: LD_STRING D3H1
1913: PPUSH
1914: CALL_OW 59
// sync ;
1918: SYNC
// Say ( am1 , D3A1 ) ;
1919: LD_INT 20
1921: PPUSH
1922: LD_STRING D3A1
1924: PPUSH
1925: CALL_OW 58
// Say ( Heike , D3H2 ) ;
1929: LD_EXP 4
1933: PPUSH
1934: LD_STRING D3H2
1936: PPUSH
1937: CALL_OW 58
// Say ( am1 , D3A2 ) ;
1941: LD_INT 20
1943: PPUSH
1944: LD_STRING D3A2
1946: PPUSH
1947: CALL_OW 58
// if heikefree then
1951: LD_VAR 0 1
1955: IFFALSE 1966
// ComFree ( Heike ) ;
1957: LD_EXP 4
1961: PPUSH
1962: CALL_OW 92
// SetAttitude ( russians , you , att_enemy , true ) ;
1966: LD_EXP 2
1970: PPUSH
1971: LD_EXP 1
1975: PPUSH
1976: LD_INT 2
1978: PPUSH
1979: LD_INT 1
1981: PPUSH
1982: CALL_OW 54
// case Query ( Q1 ) of 1 :
1986: LD_STRING Q1
1988: PPUSH
1989: CALL_OW 61
1993: PUSH
1994: LD_INT 1
1996: DOUBLE
1997: EQUAL
1998: IFTRUE 2002
2000: GO 2164
2002: POP
// begin Say ( Heike , D3aH1 ) ;
2003: LD_EXP 4
2007: PPUSH
2008: LD_STRING D3aH1
2010: PPUSH
2011: CALL_OW 58
// SetAttitude ( you , americans , att_enemy , false ) ;
2015: LD_EXP 1
2019: PPUSH
2020: LD_EXP 3
2024: PPUSH
2025: LD_INT 2
2027: PPUSH
2028: LD_INT 0
2030: PPUSH
2031: CALL_OW 54
// ComAttackUnit ( Heike , am1 ) ;
2035: LD_EXP 4
2039: PPUSH
2040: LD_INT 20
2042: PPUSH
2043: CALL_OW 69
// wait ( am1reaction ) ;
2047: LD_EXP 15
2051: PPUSH
2052: CALL_OW 49
// ingame_video := false ;
2056: LD_ADDR_OWVAR 36
2060: PUSH
2061: LD_INT 0
2063: ST_TO_ADDR
// SetAttitude ( americans , you , att_enemy , false ) ;
2064: LD_EXP 3
2068: PPUSH
2069: LD_EXP 1
2073: PPUSH
2074: LD_INT 2
2076: PPUSH
2077: LD_INT 0
2079: PPUSH
2080: CALL_OW 54
// ComFree ( am1 ) ;
2084: LD_INT 20
2086: PPUSH
2087: CALL_OW 92
// ComAttackUnit ( am1 , Heike ) ;
2091: LD_INT 20
2093: PPUSH
2094: LD_EXP 4
2098: PPUSH
2099: CALL_OW 69
// wait ( 0 0$3 ) ;
2103: LD_INT 105
2105: PPUSH
2106: CALL_OW 49
// com_queue := true ;
2110: LD_ADDR_OWVAR 35
2114: PUSH
2115: LD_INT 1
2117: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2118: LD_EXP 8
2122: PPUSH
2123: LD_INT 20
2125: PPUSH
2126: CALL_OW 69
// ComAttackUnit ( rusboth , Heike ) ;
2130: LD_EXP 8
2134: PPUSH
2135: LD_EXP 4
2139: PPUSH
2140: CALL_OW 69
// com_queue := false ;
2144: LD_ADDR_OWVAR 35
2148: PUSH
2149: LD_INT 0
2151: ST_TO_ADDR
// Say ( rus1 , D3aR1 ) ;
2152: LD_INT 17
2154: PPUSH
2155: LD_STRING D3aR1
2157: PPUSH
2158: CALL_OW 58
// end ; 2 :
2162: GO 2385
2164: LD_INT 2
2166: DOUBLE
2167: EQUAL
2168: IFTRUE 2172
2170: GO 2271
2172: POP
// begin Say ( Heike , D3bH1 ) ;
2173: LD_EXP 4
2177: PPUSH
2178: LD_STRING D3bH1
2180: PPUSH
2181: CALL_OW 58
// ComMoveXY ( Heike , 67 , 18 ) ;
2185: LD_EXP 4
2189: PPUSH
2190: LD_INT 67
2192: PPUSH
2193: LD_INT 18
2195: PPUSH
2196: CALL_OW 66
// wait ( 0 0$1 ) ;
2200: LD_INT 35
2202: PPUSH
2203: CALL_OW 49
// ingame_video := false ;
2207: LD_ADDR_OWVAR 36
2211: PUSH
2212: LD_INT 0
2214: ST_TO_ADDR
// com_queue := true ;
2215: LD_ADDR_OWVAR 35
2219: PUSH
2220: LD_INT 1
2222: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2223: LD_EXP 8
2227: PPUSH
2228: LD_INT 20
2230: PPUSH
2231: CALL_OW 69
// ComFree ( rusboth ) ;
2235: LD_EXP 8
2239: PPUSH
2240: CALL_OW 92
// com_queue := false ;
2244: LD_ADDR_OWVAR 35
2248: PUSH
2249: LD_INT 0
2251: ST_TO_ADDR
// Say ( rus1 , D3bR1 ) ;
2252: LD_INT 17
2254: PPUSH
2255: LD_STRING D3bR1
2257: PPUSH
2258: CALL_OW 58
// ComFree ( am1 ) ;
2262: LD_INT 20
2264: PPUSH
2265: CALL_OW 92
// end ; 3 :
2269: GO 2385
2271: LD_INT 3
2273: DOUBLE
2274: EQUAL
2275: IFTRUE 2279
2277: GO 2384
2279: POP
// begin Say ( Heike , D3cH1 ) ;
2280: LD_EXP 4
2284: PPUSH
2285: LD_STRING D3cH1
2287: PPUSH
2288: CALL_OW 58
// ComMoveUnit ( Heike , rus1 ) ;
2292: LD_EXP 4
2296: PPUSH
2297: LD_INT 17
2299: PPUSH
2300: CALL_OW 67
// ingame_video := false ;
2304: LD_ADDR_OWVAR 36
2308: PUSH
2309: LD_INT 0
2311: ST_TO_ADDR
// wait ( 0 0$2 ) ;
2312: LD_INT 70
2314: PPUSH
2315: CALL_OW 49
// ComStop ( Heike ) ;
2319: LD_EXP 4
2323: PPUSH
2324: CALL_OW 94
// com_queue := true ;
2328: LD_ADDR_OWVAR 35
2332: PUSH
2333: LD_INT 1
2335: ST_TO_ADDR
// ComAttackUnit ( rusboth , am1 ) ;
2336: LD_EXP 8
2340: PPUSH
2341: LD_INT 20
2343: PPUSH
2344: CALL_OW 69
// ComFree ( rusboth ) ;
2348: LD_EXP 8
2352: PPUSH
2353: CALL_OW 92
// com_queue := false ;
2357: LD_ADDR_OWVAR 35
2361: PUSH
2362: LD_INT 0
2364: ST_TO_ADDR
// Say ( rus1 , D3cR1 ) ;
2365: LD_INT 17
2367: PPUSH
2368: LD_STRING D3cR1
2370: PPUSH
2371: CALL_OW 58
// ComFree ( am1 ) ;
2375: LD_INT 20
2377: PPUSH
2378: CALL_OW 92
// end ; end ;
2382: GO 2385
2384: POP
// end ;
2385: PPOPN 1
2387: END
// every 0 0$2 trigger not IsLive ( rus1 ) and not IsLive ( rus2 ) do
2388: LD_INT 17
2390: PPUSH
2391: CALL_OW 183
2395: NOT
2396: PUSH
2397: LD_INT 19
2399: PPUSH
2400: CALL_OW 183
2404: NOT
2405: AND
2406: IFFALSE 2652
2408: GO 2410
2410: DISABLE
// begin if IsOK ( am1 ) then
2411: LD_INT 20
2413: PPUSH
2414: CALL_OW 184
2418: IFFALSE 2652
// begin if IsOK ( Olaf ) then
2420: LD_EXP 5
2424: PPUSH
2425: CALL_OW 184
2429: IFFALSE 2446
// begin ComMoveXY ( am1 , 36 , 1 ) ;
2431: LD_INT 20
2433: PPUSH
2434: LD_INT 36
2436: PPUSH
2437: LD_INT 1
2439: PPUSH
2440: CALL_OW 66
// end else
2444: GO 2652
// begin Say ( am1 , D4A1 ) ;
2446: LD_INT 20
2448: PPUSH
2449: LD_STRING D4A1
2451: PPUSH
2452: CALL_OW 58
// case Query ( Q2 ) of 1 :
2456: LD_STRING Q2
2458: PPUSH
2459: CALL_OW 61
2463: PUSH
2464: LD_INT 1
2466: DOUBLE
2467: EQUAL
2468: IFTRUE 2472
2470: GO 2567
2472: POP
// begin Say ( Heike , D4aH1 ) ;
2473: LD_EXP 4
2477: PPUSH
2478: LD_STRING D4aH1
2480: PPUSH
2481: CALL_OW 58
// SetAttitude ( you , americans , att_enemy , true ) ;
2485: LD_EXP 1
2489: PPUSH
2490: LD_EXP 3
2494: PPUSH
2495: LD_INT 2
2497: PPUSH
2498: LD_INT 1
2500: PPUSH
2501: CALL_OW 54
// ComAttackUnit ( Heike , am1 ) ;
2505: LD_EXP 4
2509: PPUSH
2510: LD_INT 20
2512: PPUSH
2513: CALL_OW 69
// ComFree ( am1 ) ;
2517: LD_INT 20
2519: PPUSH
2520: CALL_OW 92
// com_queue = true ;
2524: LD_ADDR_OWVAR 35
2528: PUSH
2529: LD_INT 1
2531: ST_TO_ADDR
// ComAttackUnit ( am1 , Heike ) ;
2532: LD_INT 20
2534: PPUSH
2535: LD_EXP 4
2539: PPUSH
2540: CALL_OW 69
// ComMoveXY ( am1 , 36 , 1 ) ;
2544: LD_INT 20
2546: PPUSH
2547: LD_INT 36
2549: PPUSH
2550: LD_INT 1
2552: PPUSH
2553: CALL_OW 66
// com_queue = false ;
2557: LD_ADDR_OWVAR 35
2561: PUSH
2562: LD_INT 0
2564: ST_TO_ADDR
// end ; 2 :
2565: GO 2652
2567: LD_INT 2
2569: DOUBLE
2570: EQUAL
2571: IFTRUE 2575
2573: GO 2651
2575: POP
// begin Say ( Heike , D4bH1 ) ;
2576: LD_EXP 4
2580: PPUSH
2581: LD_STRING D4bH1
2583: PPUSH
2584: CALL_OW 58
// Say ( am1 , D4bA1 ) ;
2588: LD_INT 20
2590: PPUSH
2591: LD_STRING D4bA1
2593: PPUSH
2594: CALL_OW 58
// ComHold ( am1 ) ;
2598: LD_INT 20
2600: PPUSH
2601: CALL_OW 93
// ComMoveXY ( am1 , 36 , 1 ) ;
2605: LD_INT 20
2607: PPUSH
2608: LD_INT 36
2610: PPUSH
2611: LD_INT 1
2613: PPUSH
2614: CALL_OW 66
// wait ( 0 0$1.5 ) ;
2618: LD_INT 52
2620: PPUSH
2621: CALL_OW 49
// if not IsOk ( Olaf ) then
2625: LD_EXP 5
2629: PPUSH
2630: CALL_OW 184
2634: NOT
2635: IFFALSE 2649
// Say ( Heike , D4bH2 ) ;
2637: LD_EXP 4
2641: PPUSH
2642: LD_STRING D4bH2
2644: PPUSH
2645: CALL_OW 58
// end ; end ;
2649: GO 2652
2651: POP
// end ; end ; end ;
2652: END
// every 0 0$1.5 trigger IsAt ( am1 , 36 , 1 ) do
2653: LD_INT 20
2655: PPUSH
2656: LD_INT 36
2658: PPUSH
2659: LD_INT 1
2661: PPUSH
2662: CALL_OW 187
2666: IFFALSE 2678
2668: GO 2670
2670: DISABLE
// begin RemoveUnit ( am1 ) ;
2671: LD_INT 20
2673: PPUSH
2674: CALL_OW 46
// end ;
2678: END
// every 0 0$1 + 0 0$0.25 do
2679: GO 2681
2681: DISABLE
// begin if am1faze = - 1 then
2682: LD_EXP 14
2686: PUSH
2687: LD_INT 1
2689: NEG
2690: EQUAL
2691: IFFALSE 2723
// begin if GetDistUnits ( am1 , Heike ) <= 5 then
2693: LD_INT 20
2695: PPUSH
2696: LD_EXP 4
2700: PPUSH
2701: CALL_OW 180
2705: PUSH
2706: LD_INT 5
2708: LESSEQUAL
2709: IFFALSE 2720
// ComStop ( am1 ) else
2711: LD_INT 20
2713: PPUSH
2714: CALL_OW 94
2718: GO 2721
// enable ;
2720: ENABLE
// end else
2721: GO 2854
// if am1faze >= 0 then
2723: LD_EXP 14
2727: PUSH
2728: LD_INT 0
2730: GREATEREQUAL
2731: IFFALSE 2854
// begin am1faze := ( am1faze + 1 ) mod 6 ;
2733: LD_ADDR_EXP 14
2737: PUSH
2738: LD_EXP 14
2742: PUSH
2743: LD_INT 1
2745: PLUS
2746: PUSH
2747: LD_INT 6
2749: MOD
2750: ST_TO_ADDR
// case am1faze of 1 :
2751: LD_EXP 14
2755: PUSH
2756: LD_INT 1
2758: DOUBLE
2759: EQUAL
2760: IFTRUE 2764
2762: GO 2780
2764: POP
// ComMoveXY ( am1 , 54 , 14 ) ; 2 :
2765: LD_INT 20
2767: PPUSH
2768: LD_INT 54
2770: PPUSH
2771: LD_INT 14
2773: PPUSH
2774: CALL_OW 66
2778: GO 2853
2780: LD_INT 2
2782: DOUBLE
2783: EQUAL
2784: IFTRUE 2788
2786: GO 2804
2788: POP
// ComMoveXY ( am1 , 53 , 14 ) ; 4 :
2789: LD_INT 20
2791: PPUSH
2792: LD_INT 53
2794: PPUSH
2795: LD_INT 14
2797: PPUSH
2798: CALL_OW 66
2802: GO 2853
2804: LD_INT 4
2806: DOUBLE
2807: EQUAL
2808: IFTRUE 2812
2810: GO 2828
2812: POP
// ComMoveXY ( am1 , 53 , 15 ) ; 5 :
2813: LD_INT 20
2815: PPUSH
2816: LD_INT 53
2818: PPUSH
2819: LD_INT 15
2821: PPUSH
2822: CALL_OW 66
2826: GO 2853
2828: LD_INT 5
2830: DOUBLE
2831: EQUAL
2832: IFTRUE 2836
2834: GO 2852
2836: POP
// ComMoveXY ( am1 , 53 , 14 ) ; end ;
2837: LD_INT 20
2839: PPUSH
2840: LD_INT 53
2842: PPUSH
2843: LD_INT 14
2845: PPUSH
2846: CALL_OW 66
2850: GO 2853
2852: POP
// enable ;
2853: ENABLE
// end ; end ;
2854: END
// var smejdit ; every 0 0$1 trigger smejdit do
2855: LD_LOC 3
2859: IFFALSE 2910
2861: GO 2863
2863: DISABLE
// begin wait ( 0 0$3 ) ;
2864: LD_INT 105
2866: PPUSH
2867: CALL_OW 49
// RevealFogArea ( you , ShowFogArea ) ;
2871: LD_EXP 1
2875: PPUSH
2876: LD_INT 7
2878: PPUSH
2879: CALL_OW 198
// CenterOnXY ( 117 , 31 ) ;
2883: LD_INT 117
2885: PPUSH
2886: LD_INT 31
2888: PPUSH
2889: CALL_OW 56
// wait ( 0 0$6 ) ;
2893: LD_INT 210
2895: PPUSH
2896: CALL_OW 49
// CenterOnXY ( 136 , 67 ) ;
2900: LD_INT 136
2902: PPUSH
2903: LD_INT 67
2905: PPUSH
2906: CALL_OW 56
// end ;
2910: END
// every 0 0$0.5 + 0 0$0.1 trigger SeeXY ( you , 26 , 14 ) do
2911: LD_EXP 1
2915: PPUSH
2916: LD_INT 26
2918: PPUSH
2919: LD_INT 14
2921: PPUSH
2922: CALL_OW 177
2926: IFFALSE 3190
2928: GO 2930
2930: DISABLE
// begin PlaceUnitXY ( Olaf , 26 , 14 , false ) ;
2931: LD_EXP 5
2935: PPUSH
2936: LD_INT 26
2938: PPUSH
2939: LD_INT 14
2941: PPUSH
2942: LD_INT 0
2944: PPUSH
2945: CALL_OW 36
// CenterOnXY ( 26 , 14 ) ;
2949: LD_INT 26
2951: PPUSH
2952: LD_INT 14
2954: PPUSH
2955: CALL_OW 56
// ComMoveUnit ( Olaf , Heike ) ;
2959: LD_EXP 5
2963: PPUSH
2964: LD_EXP 4
2968: PPUSH
2969: CALL_OW 67
// Say ( Olaf , D5O1 ) ;
2973: LD_EXP 5
2977: PPUSH
2978: LD_STRING D5O1
2980: PPUSH
2981: CALL_OW 58
// Say ( Heike , D5H1 ) ;
2985: LD_EXP 4
2989: PPUSH
2990: LD_STRING D5H1
2992: PPUSH
2993: CALL_OW 58
// Say ( Olaf , D5O2 ) ;
2997: LD_EXP 5
3001: PPUSH
3002: LD_STRING D5O2
3004: PPUSH
3005: CALL_OW 58
// Say ( Heike , D5H2 ) ;
3009: LD_EXP 4
3013: PPUSH
3014: LD_STRING D5H2
3016: PPUSH
3017: CALL_OW 58
// Say ( Olaf , D5O3 ) ;
3021: LD_EXP 5
3025: PPUSH
3026: LD_STRING D5O3
3028: PPUSH
3029: CALL_OW 58
// Say ( Heike , D5H3 ) ;
3033: LD_EXP 4
3037: PPUSH
3038: LD_STRING D5H3
3040: PPUSH
3041: CALL_OW 58
// smejdit := true ;
3045: LD_ADDR_LOC 3
3049: PUSH
3050: LD_INT 1
3052: ST_TO_ADDR
// Say ( Olaf , D5O4 ) ;
3053: LD_EXP 5
3057: PPUSH
3058: LD_STRING D5O4
3060: PPUSH
3061: CALL_OW 58
// wait ( 0 0$2 ) ;
3065: LD_INT 70
3067: PPUSH
3068: CALL_OW 49
// CenterOnXY ( 134 , 44 ) ;
3072: LD_INT 134
3074: PPUSH
3075: LD_INT 44
3077: PPUSH
3078: CALL_OW 56
// wait ( 0 0$1 ) ;
3082: LD_INT 35
3084: PPUSH
3085: CALL_OW 49
// Say ( Olaf , D5O4a ) ;
3089: LD_EXP 5
3093: PPUSH
3094: LD_STRING D5O4a
3096: PPUSH
3097: CALL_OW 58
// Say ( Heike , D5H4 ) ;
3101: LD_EXP 4
3105: PPUSH
3106: LD_STRING D5H4
3108: PPUSH
3109: CALL_OW 58
// CenterOnXY ( 81 , 85 ) ;
3113: LD_INT 81
3115: PPUSH
3116: LD_INT 85
3118: PPUSH
3119: CALL_OW 56
// Say ( Olaf , D5O5 ) ;
3123: LD_EXP 5
3127: PPUSH
3128: LD_STRING D5O5
3130: PPUSH
3131: CALL_OW 58
// CenterOnUnits ( Heike ) ;
3135: LD_EXP 4
3139: PPUSH
3140: CALL_OW 57
// Say ( Heike , D5H5 ) ;
3144: LD_EXP 4
3148: PPUSH
3149: LD_STRING D5H5
3151: PPUSH
3152: CALL_OW 58
// Say ( Olaf , D5O6 ) ;
3156: LD_EXP 5
3160: PPUSH
3161: LD_STRING D5O6
3163: PPUSH
3164: CALL_OW 58
// ChangeMissionObjectives ( M2 ) ;
3168: LD_STRING M2
3170: PPUSH
3171: CALL_OW 199
// Hint ( Controlling more units ) ;
3175: LD_STRING Controlling more units
3177: PPUSH
3178: CALL_OW 200
// can_see_tracks := true ;
3182: LD_ADDR_EXP 12
3186: PUSH
3187: LD_INT 1
3189: ST_TO_ADDR
// end ;
3190: END
// every 0 0$0.3 + 0 0$0.7 trigger can_see_tracks and IsInArea ( Heike , road ) do
3191: LD_EXP 12
3195: PUSH
3196: LD_EXP 4
3200: PPUSH
3201: LD_INT 4
3203: PPUSH
3204: CALL_OW 188
3208: AND
3209: IFFALSE 3284
3211: GO 3213
3213: DISABLE
// begin Say ( Heike , D6H1 ) ;
3214: LD_EXP 4
3218: PPUSH
3219: LD_STRING D6H1
3221: PPUSH
3222: CALL_OW 58
// Say ( Olaf , D6O1 ) ;
3226: LD_EXP 5
3230: PPUSH
3231: LD_STRING D6O1
3233: PPUSH
3234: CALL_OW 58
// Say ( Heike , D6H2 ) ;
3238: LD_EXP 4
3242: PPUSH
3243: LD_STRING D6H2
3245: PPUSH
3246: CALL_OW 58
// Say ( Olaf , D6O2 ) ;
3250: LD_EXP 5
3254: PPUSH
3255: LD_STRING D6O2
3257: PPUSH
3258: CALL_OW 58
// ChangeMissionObjectives ( M3 ) ;
3262: LD_STRING M3
3264: PPUSH
3265: CALL_OW 199
// Hint ( Alliances ) ;
3269: LD_STRING Alliances
3271: PPUSH
3272: CALL_OW 200
// vehicle_can_go := true ;
3276: LD_ADDR_EXP 11
3280: PUSH
3281: LD_INT 1
3283: ST_TO_ADDR
// end ; end_of_file
3284: END
// var reckon_way ; var i , x ; every 0 0$2 + 0 0$0.5 trigger vehicle_can_go do
3285: LD_EXP 11
3289: IFFALSE 3785
3291: GO 3293
3293: DISABLE
// begin SetAttitude ( you , americans , att_neutral , true ) ;
3294: LD_EXP 1
3298: PPUSH
3299: LD_EXP 3
3303: PPUSH
3304: LD_INT 0
3306: PPUSH
3307: LD_INT 1
3309: PPUSH
3310: CALL_OW 54
// 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 ] ;
3314: LD_ADDR_LOC 4
3318: PUSH
3319: LD_INT 5
3321: PUSH
3322: LD_INT 6
3324: PUSH
3325: LD_INT 10
3327: PUSH
3328: LD_INT 12
3330: PUSH
3331: LD_INT 13
3333: PUSH
3334: LD_INT 19
3336: PUSH
3337: LD_INT 16
3339: PUSH
3340: LD_INT 23
3342: PUSH
3343: LD_INT 22
3345: PUSH
3346: LD_INT 29
3348: PUSH
3349: LD_INT 1
3351: NEG
3352: PUSH
3353: LD_INT 23
3355: PUSH
3356: LD_INT 33
3358: PUSH
3359: LD_INT 27
3361: PUSH
3362: LD_INT 37
3364: PUSH
3365: LD_INT 33
3367: PUSH
3368: LD_INT 36
3370: PUSH
3371: LD_INT 38
3373: PUSH
3374: LD_INT 37
3376: PUSH
3377: LD_INT 42
3379: PUSH
3380: LD_INT 38
3382: PUSH
3383: LD_INT 51
3385: PUSH
3386: LD_INT 38
3388: PUSH
3389: LD_INT 1
3391: NEG
3392: PUSH
3393: LD_INT 1
3395: NEG
3396: PUSH
3397: LD_INT 62
3399: PUSH
3400: LD_INT 50
3402: PUSH
3403: LD_INT 56
3405: PUSH
3406: LD_INT 43
3408: PUSH
3409: LD_INT 51
3411: PUSH
3412: LD_INT 38
3414: PUSH
3415: LD_INT 42
3417: PUSH
3418: LD_INT 38
3420: PUSH
3421: LD_INT 38
3423: PUSH
3424: LD_INT 37
3426: PUSH
3427: LD_INT 33
3429: PUSH
3430: LD_INT 36
3432: PUSH
3433: LD_INT 27
3435: PUSH
3436: LD_INT 37
3438: PUSH
3439: LD_INT 23
3441: PUSH
3442: LD_INT 33
3444: PUSH
3445: LD_INT 22
3447: PUSH
3448: LD_INT 29
3450: PUSH
3451: LD_INT 16
3453: PUSH
3454: LD_INT 23
3456: PUSH
3457: LD_INT 13
3459: PUSH
3460: LD_INT 19
3462: PUSH
3463: LD_INT 10
3465: PUSH
3466: LD_INT 12
3468: PUSH
3469: LD_INT 5
3471: PUSH
3472: LD_INT 6
3474: PUSH
3475: LD_INT 4
3477: PUSH
3478: LD_INT 2
3480: PUSH
3481: EMPTY
3482: LIST
3483: LIST
3484: LIST
3485: LIST
3486: LIST
3487: LIST
3488: LIST
3489: LIST
3490: LIST
3491: LIST
3492: LIST
3493: LIST
3494: LIST
3495: LIST
3496: LIST
3497: LIST
3498: LIST
3499: LIST
3500: LIST
3501: LIST
3502: LIST
3503: LIST
3504: LIST
3505: LIST
3506: LIST
3507: LIST
3508: LIST
3509: LIST
3510: LIST
3511: LIST
3512: LIST
3513: LIST
3514: LIST
3515: LIST
3516: LIST
3517: LIST
3518: LIST
3519: LIST
3520: LIST
3521: LIST
3522: LIST
3523: LIST
3524: LIST
3525: LIST
3526: LIST
3527: LIST
3528: LIST
3529: LIST
3530: LIST
3531: LIST
3532: LIST
3533: LIST
3534: LIST
3535: ST_TO_ADDR
// Wait ( 0 0$15 ) ;
3536: LD_INT 525
3538: PPUSH
3539: CALL_OW 49
// repeat repeat Wait ( 0 0$1 ) until PlaceUnitXY ( Reckon , 4 , 2 , false ) ;
3543: LD_INT 35
3545: PPUSH
3546: CALL_OW 49
3550: LD_EXP 6
3554: PPUSH
3555: LD_INT 4
3557: PPUSH
3558: LD_INT 2
3560: PPUSH
3561: LD_INT 0
3563: PPUSH
3564: CALL_OW 36
3568: IFFALSE 3543
// com_queue = true ;
3570: LD_ADDR_OWVAR 35
3574: PUSH
3575: LD_INT 1
3577: ST_TO_ADDR
// x := - 1 ;
3578: LD_ADDR_LOC 6
3582: PUSH
3583: LD_INT 1
3585: NEG
3586: ST_TO_ADDR
// for i in reckon_way do
3587: LD_ADDR_LOC 5
3591: PUSH
3592: LD_LOC 4
3596: PUSH
3597: FOR_IN
3598: IFFALSE 3675
// begin if i = - 1 then
3600: LD_LOC 5
3604: PUSH
3605: LD_INT 1
3607: NEG
3608: EQUAL
3609: IFFALSE 3622
// ComStop ( Reckon ) else
3611: LD_EXP 6
3615: PPUSH
3616: CALL_OW 94
3620: GO 3673
// if x = - 1 then
3622: LD_LOC 6
3626: PUSH
3627: LD_INT 1
3629: NEG
3630: EQUAL
3631: IFFALSE 3645
// x = i else
3633: LD_ADDR_LOC 6
3637: PUSH
3638: LD_LOC 5
3642: ST_TO_ADDR
3643: GO 3673
// begin ComMoveXY ( Reckon , x , i ) ;
3645: LD_EXP 6
3649: PPUSH
3650: LD_LOC 6
3654: PPUSH
3655: LD_LOC 5
3659: PPUSH
3660: CALL_OW 66
// x = - 1 ;
3664: LD_ADDR_LOC 6
3668: PUSH
3669: LD_INT 1
3671: NEG
3672: ST_TO_ADDR
// end ; end ;
3673: GO 3597
3675: POP
3676: POP
// com_queue = false ;
3677: LD_ADDR_OWVAR 35
3681: PUSH
3682: LD_INT 0
3684: ST_TO_ADDR
// repeat wait ( 0 0$1 ) ;
3685: LD_INT 35
3687: PPUSH
3688: CALL_OW 49
// until ( GetAttitude ( americans , you ) = att_enemy ) or IsAt ( Reckon , 4 , 2 ) ;
3692: LD_EXP 3
3696: PPUSH
3697: LD_EXP 1
3701: PPUSH
3702: CALL_OW 55
3706: PUSH
3707: LD_INT 2
3709: EQUAL
3710: PUSH
3711: LD_EXP 6
3715: PPUSH
3716: LD_INT 4
3718: PPUSH
3719: LD_INT 2
3721: PPUSH
3722: CALL_OW 187
3726: OR
3727: IFFALSE 3685
// if IsAt ( Reckon , 4 , 2 ) then
3729: LD_EXP 6
3733: PPUSH
3734: LD_INT 4
3736: PPUSH
3737: LD_INT 2
3739: PPUSH
3740: CALL_OW 187
3744: IFFALSE 3764
// begin RemoveUnit ( Reckon ) ;
3746: LD_EXP 6
3750: PPUSH
3751: CALL_OW 46
// wait ( 0 0$20 ) ;
3755: LD_INT 700
3757: PPUSH
3758: CALL_OW 49
// end else
3762: GO 3773
// ComStop ( Reckon ) ;
3764: LD_EXP 6
3768: PPUSH
3769: CALL_OW 94
// until not IsLive ( Reckon ) ;
3773: LD_EXP 6
3777: PPUSH
3778: CALL_OW 183
3782: NOT
3783: IFFALSE 3543
// end ;
3785: END
// every 1 + 0 0$30 trigger vehicle_can_go and ( IsInUnit ( ReckonDriver ) = 0 ) do
3786: LD_EXP 11
3790: PUSH
3791: LD_EXP 7
3795: PPUSH
3796: CALL_OW 190
3800: PUSH
3801: LD_INT 0
3803: EQUAL
3804: AND
3805: IFFALSE 3824
3807: GO 3809
3809: DISABLE
// begin ComAttackUnit ( ReckonDriver , Heike ) ;
3810: LD_EXP 7
3814: PPUSH
3815: LD_EXP 4
3819: PPUSH
3820: CALL_OW 69
// end ;
3824: END
// every 0 0$3 + 0 0$1 trigger vehicle_can_go and not IsLive ( ReckonDriver ) do
3825: LD_EXP 11
3829: PUSH
3830: LD_EXP 7
3834: PPUSH
3835: CALL_OW 183
3839: NOT
3840: AND
3841: IFFALSE 3887
3843: GO 3845
3845: DISABLE
// begin if IsLive ( Olaf ) and IsDying ( Reckon ) then
3846: LD_EXP 5
3850: PPUSH
3851: CALL_OW 183
3855: PUSH
3856: LD_EXP 6
3860: PPUSH
3861: CALL_OW 185
3865: AND
3866: IFFALSE 3880
// Say ( Olaf , D7O1 ) ;
3868: LD_EXP 5
3872: PPUSH
3873: LD_STRING D7O1
3875: PPUSH
3876: CALL_OW 58
// Hint ( Vehicles ) ;
3880: LD_STRING Vehicles
3882: PPUSH
3883: CALL_OW 200
// end ;
3887: END
// every 0 0$3 + 0 0$0.5 trigger IsInUnit ( Heike ) or IsInUnit ( Olaf ) do
3888: LD_EXP 4
3892: PPUSH
3893: CALL_OW 190
3897: PUSH
3898: LD_EXP 5
3902: PPUSH
3903: CALL_OW 190
3907: OR
3908: IFFALSE 3920
3910: GO 3912
3912: DISABLE
// begin Hint ( Controlling vehicles ) ;
3913: LD_STRING Controlling vehicles
3915: PPUSH
3916: CALL_OW 200
// end ;
3920: END
// every 0 0$0.5 trigger IsInArea ( Heike , Danger ) do
3921: LD_EXP 4
3925: PPUSH
3926: LD_INT 10
3928: PPUSH
3929: CALL_OW 188
3933: IFFALSE 3979
3935: GO 3937
3937: DISABLE
// begin if IsOk ( Olaf ) then
3938: LD_EXP 5
3942: PPUSH
3943: CALL_OW 184
3947: IFFALSE 3979
// begin ComStop ( Heike ) ;
3949: LD_EXP 4
3953: PPUSH
3954: CALL_OW 94
// ComStop ( Olaf ) ;
3958: LD_EXP 5
3962: PPUSH
3963: CALL_OW 94
// Say ( Olaf , D8O1 ) ;
3967: LD_EXP 5
3971: PPUSH
3972: LD_STRING D8O1
3974: PPUSH
3975: CALL_OW 58
// end ; end ;
3979: END
// every 0 0$0.5 trigger IsInArea ( Olaf , Danger ) do
3980: LD_EXP 5
3984: PPUSH
3985: LD_INT 10
3987: PPUSH
3988: CALL_OW 188
3992: IFFALSE 4029
3994: GO 3996
3996: DISABLE
// begin if IsOk ( Olaf ) then
3997: LD_EXP 5
4001: PPUSH
4002: CALL_OW 184
4006: IFFALSE 4029
// begin ComStop ( Olaf ) ;
4008: LD_EXP 5
4012: PPUSH
4013: CALL_OW 94
// Say ( Olaf , D9O1 ) ;
4017: LD_EXP 5
4021: PPUSH
4022: LD_STRING D9O1
4024: PPUSH
4025: CALL_OW 58
// end ; end ;
4029: END
// every 0 0$1 trigger vehicle_can_go and not IsOk ( Olaf ) and IsOk ( Heike ) do
4030: LD_EXP 11
4034: PUSH
4035: LD_EXP 5
4039: PPUSH
4040: CALL_OW 184
4044: NOT
4045: AND
4046: PUSH
4047: LD_EXP 4
4051: PPUSH
4052: CALL_OW 184
4056: AND
4057: IFFALSE 4074
4059: GO 4061
4061: DISABLE
// begin Say ( Heike , D10H1 ) ;
4062: LD_EXP 4
4066: PPUSH
4067: LD_STRING D10H1
4069: PPUSH
4070: CALL_OW 58
// end ;
4074: END
// every 0 0$0.35 trigger See ( you , lstguard ) do
4075: LD_EXP 1
4079: PPUSH
4080: LD_INT 35
4082: PPUSH
4083: CALL_OW 176
4087: IFFALSE 4133
4089: GO 4091
4091: DISABLE
// begin if ( GetDistUnits ( Heike , lstguard ) <= 10 ) and IsOk ( Olaf ) then
4092: LD_EXP 4
4096: PPUSH
4097: LD_INT 35
4099: PPUSH
4100: CALL_OW 180
4104: PUSH
4105: LD_INT 10
4107: LESSEQUAL
4108: PUSH
4109: LD_EXP 5
4113: PPUSH
4114: CALL_OW 184
4118: AND
4119: IFFALSE 4133
// Say ( Olaf , D12O1 ) ;
4121: LD_EXP 5
4125: PPUSH
4126: LD_STRING D12O1
4128: PPUSH
4129: CALL_OW 58
// end ;
4133: END
// every 0 0$0.5 + 0 0$0.1 trigger IsInUnit ( Heike ) and FilterAllUnits ( [ [ f_see , you ] , [ f_side , russians ] , [ f_type , unit_vehicle ] ] ) do
4134: LD_EXP 4
4138: PPUSH
4139: CALL_OW 190
4143: PUSH
4144: LD_INT 101
4146: PUSH
4147: LD_EXP 1
4151: PUSH
4152: EMPTY
4153: LIST
4154: LIST
4155: PUSH
4156: LD_INT 22
4158: PUSH
4159: LD_EXP 2
4163: PUSH
4164: EMPTY
4165: LIST
4166: LIST
4167: PUSH
4168: LD_INT 21
4170: PUSH
4171: LD_INT 2
4173: PUSH
4174: EMPTY
4175: LIST
4176: LIST
4177: PUSH
4178: EMPTY
4179: LIST
4180: LIST
4181: LIST
4182: PPUSH
4183: CALL_OW 50
4187: AND
4188: IFFALSE 4237
4190: GO 4192
4192: DISABLE
// begin if ( GetDistUnitXY ( Heike , 130 , 64 ) < 10 ) and IsOk ( Olaf ) then
4193: LD_EXP 4
4197: PPUSH
4198: LD_INT 130
4200: PPUSH
4201: LD_INT 64
4203: PPUSH
4204: CALL_OW 181
4208: PUSH
4209: LD_INT 10
4211: LESS
4212: PUSH
4213: LD_EXP 5
4217: PPUSH
4218: CALL_OW 184
4222: AND
4223: IFFALSE 4237
// Say ( Olaf , D12O1 ) ;
4225: LD_EXP 5
4229: PPUSH
4230: LD_STRING D12O1
4232: PPUSH
4233: CALL_OW 58
// end ; end_of_file
4237: END
// var i ; every 0 0$1 trigger FilterUnitsInArea ( RF1 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
4238: LD_INT 3
4240: PPUSH
4241: LD_INT 22
4243: PUSH
4244: LD_EXP 1
4248: PUSH
4249: EMPTY
4250: LIST
4251: LIST
4252: PUSH
4253: LD_INT 101
4255: PUSH
4256: LD_EXP 2
4260: PUSH
4261: EMPTY
4262: LIST
4263: LIST
4264: PUSH
4265: EMPTY
4266: LIST
4267: LIST
4268: PPUSH
4269: CALL_OW 51
4273: IFFALSE 4506
4275: GO 4277
4277: DISABLE
// begin com_queue := true ;
4278: LD_ADDR_OWVAR 35
4282: PUSH
4283: LD_INT 1
4285: ST_TO_ADDR
// for i = 1 to 10 - 3 * difficulty do
4286: LD_ADDR_LOC 7
4290: PUSH
4291: DOUBLE
4292: LD_INT 1
4294: DEC
4295: ST_TO_ADDR
4296: LD_INT 10
4298: PUSH
4299: LD_INT 3
4301: PUSH
4302: LD_OWVAR 46
4306: MUL
4307: MINUS
4308: PUSH
4309: FOR_TO
4310: IFFALSE 4323
// ComStop ( rusforce1 ) ;
4312: LD_EXP 9
4316: PPUSH
4317: CALL_OW 94
4321: GO 4309
4323: POP
4324: POP
// if See ( russians , Heike ) then
4325: LD_EXP 2
4329: PPUSH
4330: LD_EXP 4
4334: PPUSH
4335: CALL_OW 176
4339: IFFALSE 4383
// begin ComAttackUnit ( rusforce1 , Heike ) ;
4341: LD_EXP 9
4345: PPUSH
4346: LD_EXP 4
4350: PPUSH
4351: CALL_OW 69
// Wait ( hunting ) ;
4355: LD_EXP 13
4359: PPUSH
4360: CALL_OW 49
// com_queue := false ;
4364: LD_ADDR_OWVAR 35
4368: PUSH
4369: LD_INT 0
4371: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4372: LD_EXP 9
4376: PPUSH
4377: CALL_OW 97
// end else
4381: GO 4497
// if See ( russians , Reckon ) then
4383: LD_EXP 2
4387: PPUSH
4388: LD_EXP 6
4392: PPUSH
4393: CALL_OW 176
4397: IFFALSE 4441
// begin ComAttackUnit ( rusforce1 , Reckon ) ;
4399: LD_EXP 9
4403: PPUSH
4404: LD_EXP 6
4408: PPUSH
4409: CALL_OW 69
// Wait ( hunting ) ;
4413: LD_EXP 13
4417: PPUSH
4418: CALL_OW 49
// com_queue := false ;
4422: LD_ADDR_OWVAR 35
4426: PUSH
4427: LD_INT 0
4429: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4430: LD_EXP 9
4434: PPUSH
4435: CALL_OW 97
// end else
4439: GO 4497
// if See ( russians , Olaf ) then
4441: LD_EXP 2
4445: PPUSH
4446: LD_EXP 5
4450: PPUSH
4451: CALL_OW 176
4455: IFFALSE 4497
// begin ComAttackUnit ( rusforce1 , Olaf ) ;
4457: LD_EXP 9
4461: PPUSH
4462: LD_EXP 5
4466: PPUSH
4467: CALL_OW 69
// Wait ( hunting ) ;
4471: LD_EXP 13
4475: PPUSH
4476: CALL_OW 49
// com_queue := false ;
4480: LD_ADDR_OWVAR 35
4484: PUSH
4485: LD_INT 0
4487: ST_TO_ADDR
// ComReturn ( rusforce1 ) ;
4488: LD_EXP 9
4492: PPUSH
4493: CALL_OW 97
// end ; com_queue := false ;
4497: LD_ADDR_OWVAR 35
4501: PUSH
4502: LD_INT 0
4504: ST_TO_ADDR
// enable ;
4505: ENABLE
// end ;
4506: END
// every 0 0$1 + 0 0$0.5 trigger FilterUnitsInArea ( RF2 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
4507: LD_INT 2
4509: PPUSH
4510: LD_INT 22
4512: PUSH
4513: LD_EXP 1
4517: PUSH
4518: EMPTY
4519: LIST
4520: LIST
4521: PUSH
4522: LD_INT 101
4524: PUSH
4525: LD_EXP 2
4529: PUSH
4530: EMPTY
4531: LIST
4532: LIST
4533: PUSH
4534: EMPTY
4535: LIST
4536: LIST
4537: PPUSH
4538: CALL_OW 51
4542: IFFALSE 4803
4544: GO 4546
4546: DISABLE
// begin com_queue := true ;
4547: LD_ADDR_OWVAR 35
4551: PUSH
4552: LD_INT 1
4554: ST_TO_ADDR
// for i = 1 to 8 - 2 * difficulty do
4555: LD_ADDR_LOC 7
4559: PUSH
4560: DOUBLE
4561: LD_INT 1
4563: DEC
4564: ST_TO_ADDR
4565: LD_INT 8
4567: PUSH
4568: LD_INT 2
4570: PUSH
4571: LD_OWVAR 46
4575: MUL
4576: MINUS
4577: PUSH
4578: FOR_TO
4579: IFFALSE 4592
// ComStop ( rusforce2 ) ;
4581: LD_EXP 10
4585: PPUSH
4586: CALL_OW 94
4590: GO 4578
4592: POP
4593: POP
// case difficulty of 1 :
4594: LD_OWVAR 46
4598: PUSH
4599: LD_INT 1
4601: DOUBLE
4602: EQUAL
4603: IFTRUE 4607
4605: GO 4610
4607: POP
// ; 2 :
4608: GO 4654
4610: LD_INT 2
4612: DOUBLE
4613: EQUAL
4614: IFTRUE 4618
4616: GO 4628
4618: POP
// ComFree ( 25 ) ; 3 :
4619: LD_INT 25
4621: PPUSH
4622: CALL_OW 92
4626: GO 4654
4628: LD_INT 3
4630: DOUBLE
4631: EQUAL
4632: IFTRUE 4636
4634: GO 4653
4636: POP
// ComFree ( [ 24 , 25 ] ) ; end ;
4637: LD_INT 24
4639: PUSH
4640: LD_INT 25
4642: PUSH
4643: EMPTY
4644: LIST
4645: LIST
4646: PPUSH
4647: CALL_OW 92
4651: GO 4654
4653: POP
// if See ( russians , Heike ) then
4654: LD_EXP 2
4658: PPUSH
4659: LD_EXP 4
4663: PPUSH
4664: CALL_OW 176
4668: IFFALSE 4704
// begin ComAttackUnit ( rusforce2 , Heike ) ;
4670: LD_EXP 10
4674: PPUSH
4675: LD_EXP 4
4679: PPUSH
4680: CALL_OW 69
// Wait ( hunting ) ;
4684: LD_EXP 13
4688: PPUSH
4689: CALL_OW 49
// ComReturn ( rusforce2 ) ;
4693: LD_EXP 10
4697: PPUSH
4698: CALL_OW 97
// end else
4702: GO 4802
// if See ( russians , Reckon ) then
4704: LD_EXP 2
4708: PPUSH
4709: LD_EXP 6
4713: PPUSH
4714: CALL_OW 176
4718: IFFALSE 4754
// begin ComAttackUnit ( rusforce2 , Reckon ) ;
4720: LD_EXP 10
4724: PPUSH
4725: LD_EXP 6
4729: PPUSH
4730: CALL_OW 69
// Wait ( hunting ) ;
4734: LD_EXP 13
4738: PPUSH
4739: CALL_OW 49
// ComReturn ( rusforce2 ) ;
4743: LD_EXP 10
4747: PPUSH
4748: CALL_OW 97
// end else
4752: GO 4802
// if See ( russians , Olaf ) then
4754: LD_EXP 2
4758: PPUSH
4759: LD_EXP 5
4763: PPUSH
4764: CALL_OW 176
4768: IFFALSE 4802
// begin ComAttackUnit ( rusforce2 , Olaf ) ;
4770: LD_EXP 10
4774: PPUSH
4775: LD_EXP 5
4779: PPUSH
4780: CALL_OW 69
// Wait ( hunting ) ;
4784: LD_EXP 13
4788: PPUSH
4789: CALL_OW 49
// ComReturn ( rusforce2 ) ;
4793: LD_EXP 10
4797: PPUSH
4798: CALL_OW 97
// end ; enable ;
4802: ENABLE
// end ;
4803: END
// every 0 0$1.2 trigger FilterUnitsInArea ( 10 , [ [ f_side , you ] , [ f_see , russians ] ] ) do
4804: LD_INT 10
4806: PPUSH
4807: LD_INT 22
4809: PUSH
4810: LD_EXP 1
4814: PUSH
4815: EMPTY
4816: LIST
4817: LIST
4818: PUSH
4819: LD_INT 101
4821: PUSH
4822: LD_EXP 2
4826: PUSH
4827: EMPTY
4828: LIST
4829: LIST
4830: PUSH
4831: EMPTY
4832: LIST
4833: LIST
4834: PPUSH
4835: CALL_OW 51
4839: IFFALSE 4844
4841: GO 4843
4843: DISABLE
// begin end ;
4844: END
// function check_guard ( un , area , x , y ) ; begin
4845: LD_INT 0
4847: PPUSH
// if not IsInArea ( un , area ) then
4848: LD_VAR 0 1
4852: PPUSH
4853: LD_VAR 0 2
4857: PPUSH
4858: CALL_OW 188
4862: NOT
4863: IFFALSE 4884
// ComMoveXY ( un , x , y ) ;
4865: LD_VAR 0 1
4869: PPUSH
4870: LD_VAR 0 3
4874: PPUSH
4875: LD_VAR 0 4
4879: PPUSH
4880: CALL_OW 66
// end ;
4884: LD_VAR 0 5
4888: RET
// every 0 0$5 do
4889: GO 4891
4891: DISABLE
// begin check_guard ( 30 , guardpost , 80 , 82 ) ;
4892: LD_INT 30
4894: PPUSH
4895: LD_INT 9
4897: PPUSH
4898: LD_INT 80
4900: PPUSH
4901: LD_INT 82
4903: PPUSH
4904: CALL 4845 0 4
// check_guard ( 31 , guardpost , 81 , 85 ) ;
4908: LD_INT 31
4910: PPUSH
4911: LD_INT 9
4913: PPUSH
4914: LD_INT 81
4916: PPUSH
4917: LD_INT 85
4919: PPUSH
4920: CALL 4845 0 4
// check_guard ( 29 , guardpost , 78 , 85 ) ;
4924: LD_INT 29
4926: PPUSH
4927: LD_INT 9
4929: PPUSH
4930: LD_INT 78
4932: PPUSH
4933: LD_INT 85
4935: PPUSH
4936: CALL 4845 0 4
// if not GetFreeMode ( 24 ) then
4940: LD_INT 24
4942: PPUSH
4943: CALL_OW 179
4947: NOT
4948: IFFALSE 4966
// check_guard ( 24 , guardpost , 82 , 90 ) ;
4950: LD_INT 24
4952: PPUSH
4953: LD_INT 9
4955: PPUSH
4956: LD_INT 82
4958: PPUSH
4959: LD_INT 90
4961: PPUSH
4962: CALL 4845 0 4
// if not GetFreeMode ( 25 ) then
4966: LD_INT 25
4968: PPUSH
4969: CALL_OW 179
4973: NOT
4974: IFFALSE 4992
// check_guard ( 25 , guardpost , 86 , 87 ) ;
4976: LD_INT 25
4978: PPUSH
4979: LD_INT 9
4981: PPUSH
4982: LD_INT 86
4984: PPUSH
4985: LD_INT 87
4987: PPUSH
4988: CALL 4845 0 4
// enable ;
4992: ENABLE
// end ;
4993: END
