// var am , oth ; var john , joan , sik , lucy , grant , will , phi , off , others , budovy ; var joanok , oothersok , buildingsok , killhim , buildinglives ; var disable_07 , debug , follow ; starting begin am = 1 ;
   0: LD_ADDR_LOC 1
   4: PUSH
   5: LD_INT 1
   7: ST_TO_ADDR
// oth = 4 ;
   8: LD_ADDR_LOC 2
  12: PUSH
  13: LD_INT 4
  15: ST_TO_ADDR
// revealfogarea ( am , rev ) ;
  16: LD_LOC 1
  20: PPUSH
  21: LD_INT 5
  23: PPUSH
  24: CALL_OW 332
// debug = false ;
  28: LD_ADDR_LOC 19
  32: PUSH
  33: LD_INT 0
  35: ST_TO_ADDR
// follow = true ;
  36: LD_ADDR_LOC 20
  40: PUSH
  41: LD_INT 1
  43: ST_TO_ADDR
// joanok = true ;
  44: LD_ADDR_LOC 13
  48: PUSH
  49: LD_INT 1
  51: ST_TO_ADDR
// oothersok = true ;
  52: LD_ADDR_LOC 14
  56: PUSH
  57: LD_INT 1
  59: ST_TO_ADDR
// buildingsok = true ;
  60: LD_ADDR_LOC 15
  64: PUSH
  65: LD_INT 1
  67: ST_TO_ADDR
// killhim = false ;
  68: LD_ADDR_LOC 16
  72: PUSH
  73: LD_INT 0
  75: ST_TO_ADDR
// budovy = [ depot1 , depot2 , depot3 , lab1 , arm1 , arm2 , eon ] ;
  76: LD_ADDR_LOC 12
  80: PUSH
  81: LD_INT 9
  83: PUSH
  84: LD_INT 10
  86: PUSH
  87: LD_INT 11
  89: PUSH
  90: LD_INT 8
  92: PUSH
  93: LD_INT 12
  95: PUSH
  96: LD_INT 13
  98: PUSH
  99: LD_INT 14
 101: PUSH
 102: EMPTY
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: LIST
 109: LIST
 110: ST_TO_ADDR
// disable ( 01 ) ;
 111: LD_INT 1
 113: DISABLE_MARKED
// disable ( 02 ) ;
 114: LD_INT 2
 116: DISABLE_MARKED
// disable ( 03 ) ;
 117: LD_INT 3
 119: DISABLE_MARKED
// disable ( 04 ) ;
 120: LD_INT 4
 122: DISABLE_MARKED
// disable ( 05 ) ;
 123: LD_INT 5
 125: DISABLE_MARKED
// disable_07 = false ;
 126: LD_ADDR_LOC 18
 130: PUSH
 131: LD_INT 0
 133: ST_TO_ADDR
// uc_side = am ;
 134: LD_ADDR_OWVAR 20
 138: PUSH
 139: LD_LOC 1
 143: ST_TO_ADDR
// john = newcharacter ( JMM ) ;
 144: LD_ADDR_LOC 3
 148: PUSH
 149: LD_STRING JMM
 151: PPUSH
 152: CALL_OW 25
 156: ST_TO_ADDR
// uc_side = oth ;
 157: LD_ADDR_OWVAR 20
 161: PUSH
 162: LD_LOC 2
 166: ST_TO_ADDR
// joan = newcharacter ( Joan ) ;
 167: LD_ADDR_LOC 4
 171: PUSH
 172: LD_STRING Joan
 174: PPUSH
 175: CALL_OW 25
 179: ST_TO_ADDR
// lucy = newcharacter ( Donaldson ) ;
 180: LD_ADDR_LOC 6
 184: PUSH
 185: LD_STRING Donaldson
 187: PPUSH
 188: CALL_OW 25
 192: ST_TO_ADDR
// grant = newcharacter ( Gary ) ;
 193: LD_ADDR_LOC 7
 197: PUSH
 198: LD_STRING Gary
 200: PPUSH
 201: CALL_OW 25
 205: ST_TO_ADDR
// sik = newcharacter ( Sikorski ) ;
 206: LD_ADDR_LOC 5
 210: PUSH
 211: LD_STRING Sikorski
 213: PPUSH
 214: CALL_OW 25
 218: ST_TO_ADDR
// will = newcharacter ( Williams ) ;
 219: LD_ADDR_LOC 8
 223: PUSH
 224: LD_STRING Williams
 226: PPUSH
 227: CALL_OW 25
 231: ST_TO_ADDR
// phi = newcharacter ( Phillips ) ;
 232: LD_ADDR_LOC 9
 236: PUSH
 237: LD_STRING Phillips
 239: PPUSH
 240: CALL_OW 25
 244: ST_TO_ADDR
// off = newcharacter ( Officer ) ;
 245: LD_ADDR_LOC 10
 249: PUSH
 250: LD_STRING Officer
 252: PPUSH
 253: CALL_OW 25
 257: ST_TO_ADDR
// others = [ lucy , grant , sik , will , phi ] ;
 258: LD_ADDR_LOC 11
 262: PUSH
 263: LD_LOC 6
 267: PUSH
 268: LD_LOC 7
 272: PUSH
 273: LD_LOC 5
 277: PUSH
 278: LD_LOC 8
 282: PUSH
 283: LD_LOC 9
 287: PUSH
 288: EMPTY
 289: LIST
 290: LIST
 291: LIST
 292: LIST
 293: LIST
 294: ST_TO_ADDR
// placeunitxy ( off , 52 , 39 , false ) ;
 295: LD_LOC 10
 299: PPUSH
 300: LD_INT 52
 302: PPUSH
 303: LD_INT 39
 305: PPUSH
 306: LD_INT 0
 308: PPUSH
 309: CALL_OW 48
// placeunitxyr ( lucy , 47 , 38 , 3 , false ) ;
 313: LD_LOC 6
 317: PPUSH
 318: LD_INT 47
 320: PPUSH
 321: LD_INT 38
 323: PPUSH
 324: LD_INT 3
 326: PPUSH
 327: LD_INT 0
 329: PPUSH
 330: CALL_OW 50
// placeunitxyr ( grant , 47 , 38 , 3 , false ) ;
 334: LD_LOC 7
 338: PPUSH
 339: LD_INT 47
 341: PPUSH
 342: LD_INT 38
 344: PPUSH
 345: LD_INT 3
 347: PPUSH
 348: LD_INT 0
 350: PPUSH
 351: CALL_OW 50
// placeunitxyr ( sik , 47 , 38 , 3 , false ) ;
 355: LD_LOC 5
 359: PPUSH
 360: LD_INT 47
 362: PPUSH
 363: LD_INT 38
 365: PPUSH
 366: LD_INT 3
 368: PPUSH
 369: LD_INT 0
 371: PPUSH
 372: CALL_OW 50
// placeunitxyr ( will , 47 , 38 , 3 , false ) ;
 376: LD_LOC 8
 380: PPUSH
 381: LD_INT 47
 383: PPUSH
 384: LD_INT 38
 386: PPUSH
 387: LD_INT 3
 389: PPUSH
 390: LD_INT 0
 392: PPUSH
 393: CALL_OW 50
// placeunitxyr ( phi , 47 , 38 , 3 , false ) ;
 397: LD_LOC 9
 401: PPUSH
 402: LD_INT 47
 404: PPUSH
 405: LD_INT 38
 407: PPUSH
 408: LD_INT 3
 410: PPUSH
 411: LD_INT 0
 413: PPUSH
 414: CALL_OW 50
// comhold ( others ^ [ off ] ) ;
 418: LD_LOC 11
 422: PUSH
 423: LD_LOC 10
 427: PUSH
 428: EMPTY
 429: LIST
 430: ADD
 431: PPUSH
 432: CALL_OW 140
// placeunitxy ( john , 24 , 26 , false ) ;
 436: LD_LOC 3
 440: PPUSH
 441: LD_INT 24
 443: PPUSH
 444: LD_INT 26
 446: PPUSH
 447: LD_INT 0
 449: PPUSH
 450: CALL_OW 48
// placeunitxy ( joan , 25 , 24 , false ) ;
 454: LD_LOC 4
 458: PPUSH
 459: LD_INT 25
 461: PPUSH
 462: LD_INT 24
 464: PPUSH
 465: LD_INT 0
 467: PPUSH
 468: CALL_OW 48
// comhold ( [ joan , john ] ) ;
 472: LD_LOC 4
 476: PUSH
 477: LD_LOC 3
 481: PUSH
 482: EMPTY
 483: LIST
 484: LIST
 485: PPUSH
 486: CALL_OW 140
// centernowonunits ( john ) ;
 490: LD_LOC 3
 494: PPUSH
 495: CALL_OW 87
// dialogueon ;
 499: CALL_OW 6
// say ( off , DX1-Off-1 ) ;
 503: LD_LOC 10
 507: PPUSH
 508: LD_STRING DX1-Off-1
 510: PPUSH
 511: CALL_OW 88
// say ( john , DX1-JMM-1 ) ;
 515: LD_LOC 3
 519: PPUSH
 520: LD_STRING DX1-JMM-1
 522: PPUSH
 523: CALL_OW 88
// say ( joan , DX1-Joan-1 ) ;
 527: LD_LOC 4
 531: PPUSH
 532: LD_STRING DX1-Joan-1
 534: PPUSH
 535: CALL_OW 88
// say ( john , DX1-JMM-2 ) ;
 539: LD_LOC 3
 543: PPUSH
 544: LD_STRING DX1-JMM-2
 546: PPUSH
 547: CALL_OW 88
// say ( joan , DX1-Joan-2 ) ;
 551: LD_LOC 4
 555: PPUSH
 556: LD_STRING DX1-Joan-2
 558: PPUSH
 559: CALL_OW 88
// say ( john , DX1-JMM-3 ) ;
 563: LD_LOC 3
 567: PPUSH
 568: LD_STRING DX1-JMM-3
 570: PPUSH
 571: CALL_OW 88
// say ( joan , DX1-Joan-3 ) ;
 575: LD_LOC 4
 579: PPUSH
 580: LD_STRING DX1-Joan-3
 582: PPUSH
 583: CALL_OW 88
// say ( john , DX1-JMM-4 ) ;
 587: LD_LOC 3
 591: PPUSH
 592: LD_STRING DX1-JMM-4
 594: PPUSH
 595: CALL_OW 88
// dialogueoff ;
 599: CALL_OW 7
// commovexy ( others , 75 , 35 ) ;
 603: LD_LOC 11
 607: PPUSH
 608: LD_INT 75
 610: PPUSH
 611: LD_INT 35
 613: PPUSH
 614: CALL_OW 111
// commovexy ( off , 71 , 34 ) ;
 618: LD_LOC 10
 622: PPUSH
 623: LD_INT 71
 625: PPUSH
 626: LD_INT 34
 628: PPUSH
 629: CALL_OW 111
// wait ( 0 0$0.3 ) ;
 633: LD_INT 10
 635: PPUSH
 636: CALL_OW 67
// changemissionobjectives ( M0 ) ;
 640: LD_STRING M0
 642: PPUSH
 643: CALL_OW 337
// hintSpec ( Hints , 3 ) ;
 647: LD_STRING Hints
 649: PPUSH
 650: LD_INT 3
 652: PPUSH
 653: CALL_OW 338
// wait ( 0 0$1 ) ;
 657: LD_INT 35
 659: PPUSH
 660: CALL_OW 67
// hint ( Character ) ;
 664: LD_STRING Character
 666: PPUSH
 667: CALL_OW 339
// wait ( 0 0$1 ) ;
 671: LD_INT 35
 673: PPUSH
 674: CALL_OW 67
// enable ( 01 ) ;
 678: LD_INT 1
 680: ENABLE_MARKED
// enable ( 02 ) ;
 681: LD_INT 2
 683: ENABLE_MARKED
// enable ( 03 ) ;
 684: LD_INT 3
 686: ENABLE_MARKED
// enable ( 04 ) ;
 687: LD_INT 4
 689: ENABLE_MARKED
// enable ( 05 ) ;
 690: LD_INT 5
 692: ENABLE_MARKED
// end ;
 693: END
// every 3 trigger isselected ( john ) marked 01 do
 694: LD_LOC 3
 698: PPUSH
 699: CALL_OW 306
 703: IFFALSE 729
 705: GO 707
 707: DISABLE
// begin hint ( Selection ) ;
 708: LD_STRING Selection
 710: PPUSH
 711: CALL_OW 339
// wait ( 0 0$1 ) ;
 715: LD_INT 35
 717: PPUSH
 718: CALL_OW 67
// hint ( Commands ) ;
 722: LD_STRING Commands
 724: PPUSH
 725: CALL_OW 339
// end ;
 729: END
// every 3 + 1 trigger isselected ( others ^ [ joan , off ] ) marked 02 do
 730: LD_LOC 11
 734: PUSH
 735: LD_LOC 4
 739: PUSH
 740: LD_LOC 10
 744: PUSH
 745: EMPTY
 746: LIST
 747: LIST
 748: ADD
 749: PPUSH
 750: CALL_OW 306
 754: IFFALSE 766
 756: GO 758
 758: DISABLE
// hint ( NPC ) ;
 759: LD_STRING NPC
 761: PPUSH
 762: CALL_OW 339
 766: END
// every 5 trigger isinarea ( john , vis ) marked 03 do
 767: LD_LOC 3
 771: PPUSH
 772: LD_INT 1
 774: PPUSH
 775: CALL_OW 308
 779: IFFALSE 791
 781: GO 783
 783: DISABLE
// hint ( Visibility ) ;
 784: LD_STRING Visibility
 786: PPUSH
 787: CALL_OW 339
 791: END
// every 0 0$0.5 trigger ( not killhim ) and follow do var tmp , tmp2 , tmp3 , x , y , px , py , dir ;
 792: LD_LOC 16
 796: NOT
 797: PUSH
 798: LD_LOC 20
 802: AND
 803: IFFALSE 1096
 805: GO 807
 807: DISABLE
 808: LD_INT 0
 810: PPUSH
 811: PPUSH
 812: PPUSH
 813: PPUSH
 814: PPUSH
 815: PPUSH
 816: PPUSH
 817: PPUSH
// begin tmp = getdistunits ( john , joan ) ;
 818: LD_ADDR_VAR 0 1
 822: PUSH
 823: LD_LOC 3
 827: PPUSH
 828: LD_LOC 4
 832: PPUSH
 833: CALL_OW 296
 837: ST_TO_ADDR
// x = getx ( john ) ;
 838: LD_ADDR_VAR 0 4
 842: PUSH
 843: LD_LOC 3
 847: PPUSH
 848: CALL_OW 250
 852: ST_TO_ADDR
// y = gety ( john ) ;
 853: LD_ADDR_VAR 0 5
 857: PUSH
 858: LD_LOC 3
 862: PPUSH
 863: CALL_OW 251
 867: ST_TO_ADDR
// tmp2 = [ ] ;
 868: LD_ADDR_VAR 0 2
 872: PUSH
 873: EMPTY
 874: ST_TO_ADDR
// tmp3 = [ ] ;
 875: LD_ADDR_VAR 0 3
 879: PUSH
 880: EMPTY
 881: ST_TO_ADDR
// if tmp >= 7 then
 882: LD_VAR 0 1
 886: PUSH
 887: LD_INT 7
 889: GREATEREQUAL
 890: IFFALSE 1095
// begin for dir = 0 to 5 do
 892: LD_ADDR_VAR 0 8
 896: PUSH
 897: DOUBLE
 898: LD_INT 0
 900: DEC
 901: ST_TO_ADDR
 902: LD_INT 5
 904: PUSH
 905: FOR_TO
 906: IFFALSE 1046
// begin px = shiftx ( x , dir , tmp - 2 ) ;
 908: LD_ADDR_VAR 0 6
 912: PUSH
 913: LD_VAR 0 4
 917: PPUSH
 918: LD_VAR 0 8
 922: PPUSH
 923: LD_VAR 0 1
 927: PUSH
 928: LD_INT 2
 930: MINUS
 931: PPUSH
 932: CALL_OW 272
 936: ST_TO_ADDR
// py = shifty ( y , dir , tmp - 2 ) ;
 937: LD_ADDR_VAR 0 7
 941: PUSH
 942: LD_VAR 0 5
 946: PPUSH
 947: LD_VAR 0 8
 951: PPUSH
 952: LD_VAR 0 1
 956: PUSH
 957: LD_INT 2
 959: MINUS
 960: PPUSH
 961: CALL_OW 273
 965: ST_TO_ADDR
// if ValidHex ( px , py ) then
 966: LD_VAR 0 6
 970: PPUSH
 971: LD_VAR 0 7
 975: PPUSH
 976: CALL_OW 488
 980: IFFALSE 1044
// begin tmp2 = tmp2 ^ [ [ px , py ] ] ;
 982: LD_ADDR_VAR 0 2
 986: PUSH
 987: LD_VAR 0 2
 991: PUSH
 992: LD_VAR 0 6
 996: PUSH
 997: LD_VAR 0 7
1001: PUSH
1002: EMPTY
1003: LIST
1004: LIST
1005: PUSH
1006: EMPTY
1007: LIST
1008: ADD
1009: ST_TO_ADDR
// tmp3 = tmp3 ^ [ getdistunitxy ( joan , px , py ) ] ;
1010: LD_ADDR_VAR 0 3
1014: PUSH
1015: LD_VAR 0 3
1019: PUSH
1020: LD_LOC 4
1024: PPUSH
1025: LD_VAR 0 6
1029: PPUSH
1030: LD_VAR 0 7
1034: PPUSH
1035: CALL_OW 297
1039: PUSH
1040: EMPTY
1041: LIST
1042: ADD
1043: ST_TO_ADDR
// end end ;
1044: GO 905
1046: POP
1047: POP
// tmp = bestfromlistbylist ( tmp2 , tmp3 ) ;
1048: LD_ADDR_VAR 0 1
1052: PUSH
1053: LD_VAR 0 2
1057: PPUSH
1058: LD_VAR 0 3
1062: PPUSH
1063: CALL_OW 79
1067: ST_TO_ADDR
// commovexy ( joan , tmp [ 1 ] , tmp [ 2 ] ) ;
1068: LD_LOC 4
1072: PPUSH
1073: LD_VAR 0 1
1077: PUSH
1078: LD_INT 1
1080: ARRAY
1081: PPUSH
1082: LD_VAR 0 1
1086: PUSH
1087: LD_INT 2
1089: ARRAY
1090: PPUSH
1091: CALL_OW 111
// end ; enable ;
1095: ENABLE
// end ;
1096: PPOPN 8
1098: END
// on destinationunreachable ( un ) do if un = joan then
1099: LD_VAR 0 1
1103: PUSH
1104: LD_LOC 4
1108: EQUAL
1109: IFFALSE 1140
// commovexy ( joan , getx ( john ) , gety ( john ) ) ;
1111: LD_LOC 4
1115: PPUSH
1116: LD_LOC 3
1120: PPUSH
1121: CALL_OW 250
1125: PPUSH
1126: LD_LOC 3
1130: PPUSH
1131: CALL_OW 251
1135: PPUSH
1136: CALL_OW 111
1140: PPOPN 1
1142: END
// every 0 0$0.4 trigger crawls ( john ) marked 04 do
1143: LD_LOC 3
1147: PPUSH
1148: CALL_OW 318
1152: IFFALSE 1176
1154: GO 1156
1156: DISABLE
// begin if not killhim then
1157: LD_LOC 16
1161: NOT
1162: IFFALSE 1176
// say ( joan , DXComments-Joan-1 ) ;
1164: LD_LOC 4
1168: PPUSH
1169: LD_STRING DXComments-Joan-1
1171: PPUSH
1172: CALL_OW 88
// end ;
1176: END
// every 0 0$0.4 + 2 trigger isinarea ( john , zapad ) marked 05 do
1177: LD_LOC 3
1181: PPUSH
1182: LD_INT 2
1184: PPUSH
1185: CALL_OW 308
1189: IFFALSE 1213
1191: GO 1193
1193: DISABLE
// begin if not killhim then
1194: LD_LOC 16
1198: NOT
1199: IFFALSE 1213
// say ( joan , DXComments-Joan-1a ) ;
1201: LD_LOC 4
1205: PPUSH
1206: LD_STRING DXComments-Joan-1a
1208: PPUSH
1209: CALL_OW 88
// end ;
1213: END
// every 0 0$1 + 1 1$10 marked 29 do
1214: GO 1216
1216: DISABLE
// begin if not isinarea ( john , okolieonu ) then
1217: LD_LOC 3
1221: PPUSH
1222: LD_INT 3
1224: PPUSH
1225: CALL_OW 308
1229: NOT
1230: IFFALSE 1253
// begin if not killhim then
1232: LD_LOC 16
1236: NOT
1237: IFFALSE 1251
// say ( joan , DXComments-Joan-1b ) ;
1239: LD_LOC 4
1243: PPUSH
1244: LD_STRING DXComments-Joan-1b
1246: PPUSH
1247: CALL_OW 88
// end else
1251: GO 1254
// enable ;
1253: ENABLE
// end ;
1254: END
// every 0 0$0.3 trigger not killhim marked 097 do
1255: LD_LOC 16
1259: NOT
1260: IFFALSE 1766
1262: GO 1264
1264: DISABLE
// begin if joanok then
1265: LD_LOC 13
1269: IFFALSE 1450
// if getlives ( joan ) < 1000 then
1271: LD_LOC 4
1275: PPUSH
1276: CALL_OW 256
1280: PUSH
1281: LD_INT 1000
1283: LESS
1284: IFFALSE 1450
// begin if debug then
1286: LD_LOC 19
1290: IFFALSE 1310
// msg ( joan:  & getlives ( joan ) ) ;
1292: LD_STRING joan: 
1294: PUSH
1295: LD_LOC 4
1299: PPUSH
1300: CALL_OW 256
1304: STR
1305: PPUSH
1306: CALL_OW 100
// comhold ( joan ) ;
1310: LD_LOC 4
1314: PPUSH
1315: CALL_OW 140
// dialogueon ;
1319: CALL_OW 6
// say ( joan , DXAttack-Joan-1 ) ;
1323: LD_LOC 4
1327: PPUSH
1328: LD_STRING DXAttack-Joan-1
1330: PPUSH
1331: CALL_OW 88
// killhim = true ;
1335: LD_ADDR_LOC 16
1339: PUSH
1340: LD_INT 1
1342: ST_TO_ADDR
// SA_OnAttackFriends ;
1343: CALL 2419 0 0
// commovexy ( joan , getx ( sik ) , gety ( sik ) ) ;
1347: LD_LOC 4
1351: PPUSH
1352: LD_LOC 5
1356: PPUSH
1357: CALL_OW 250
1361: PPUSH
1362: LD_LOC 5
1366: PPUSH
1367: CALL_OW 251
1371: PPUSH
1372: CALL_OW 111
// wait ( 0 0$1 ) ;
1376: LD_INT 35
1378: PPUSH
1379: CALL_OW 67
// say ( sik , DXAttack-Sik-1 ) ;
1383: LD_LOC 5
1387: PPUSH
1388: LD_STRING DXAttack-Sik-1
1390: PPUSH
1391: CALL_OW 88
// dialogueoff ;
1395: CALL_OW 7
// setattitude ( am , oth , att_enemy , true ) ;
1399: LD_LOC 1
1403: PPUSH
1404: LD_LOC 2
1408: PPUSH
1409: LD_INT 2
1411: PPUSH
1412: LD_INT 1
1414: PPUSH
1415: CALL_OW 80
// comattackunit ( others ^ [ off ] , john ) ;
1419: LD_LOC 11
1423: PUSH
1424: LD_LOC 10
1428: PUSH
1429: EMPTY
1430: LIST
1431: ADD
1432: PPUSH
1433: LD_LOC 3
1437: PPUSH
1438: CALL_OW 115
// joanok = false ;
1442: LD_ADDR_LOC 13
1446: PUSH
1447: LD_INT 0
1449: ST_TO_ADDR
// end ; if oothersok then
1450: LD_LOC 14
1454: IFFALSE 1633
// if getlives ( others ^ [ off ] ) < 1000 then
1456: LD_LOC 11
1460: PUSH
1461: LD_LOC 10
1465: PUSH
1466: EMPTY
1467: LIST
1468: ADD
1469: PPUSH
1470: CALL_OW 256
1474: PUSH
1475: LD_INT 1000
1477: LESS
1478: IFFALSE 1633
// begin if debug then
1480: LD_LOC 19
1484: IFFALSE 1513
// msg ( others+off:  & getlives ( others ^ [ off ] ) ) ;
1486: LD_STRING others+off: 
1488: PUSH
1489: LD_LOC 11
1493: PUSH
1494: LD_LOC 10
1498: PUSH
1499: EMPTY
1500: LIST
1501: ADD
1502: PPUSH
1503: CALL_OW 256
1507: STR
1508: PPUSH
1509: CALL_OW 100
// comhold ( others ^ [ off ] ) ;
1513: LD_LOC 11
1517: PUSH
1518: LD_LOC 10
1522: PUSH
1523: EMPTY
1524: LIST
1525: ADD
1526: PPUSH
1527: CALL_OW 140
// dialogueon ;
1531: CALL_OW 6
// say ( joan , DXAttack-Joan-1a ) ;
1535: LD_LOC 4
1539: PPUSH
1540: LD_STRING DXAttack-Joan-1a
1542: PPUSH
1543: CALL_OW 88
// wait ( 0 0$0.7 ) ;
1547: LD_INT 24
1549: PPUSH
1550: CALL_OW 67
// killhim = true ;
1554: LD_ADDR_LOC 16
1558: PUSH
1559: LD_INT 1
1561: ST_TO_ADDR
// SA_OnAttackFriends ;
1562: CALL 2419 0 0
// say ( sik , DXAttack-Sik-1 ) ;
1566: LD_LOC 5
1570: PPUSH
1571: LD_STRING DXAttack-Sik-1
1573: PPUSH
1574: CALL_OW 88
// dialogueoff ;
1578: CALL_OW 7
// setattitude ( am , oth , att_enemy , true ) ;
1582: LD_LOC 1
1586: PPUSH
1587: LD_LOC 2
1591: PPUSH
1592: LD_INT 2
1594: PPUSH
1595: LD_INT 1
1597: PPUSH
1598: CALL_OW 80
// comattackunit ( others ^ [ off ] , john ) ;
1602: LD_LOC 11
1606: PUSH
1607: LD_LOC 10
1611: PUSH
1612: EMPTY
1613: LIST
1614: ADD
1615: PPUSH
1616: LD_LOC 3
1620: PPUSH
1621: CALL_OW 115
// oothersok = false ;
1625: LD_ADDR_LOC 14
1629: PUSH
1630: LD_INT 0
1632: ST_TO_ADDR
// end ; if buildingsok then
1633: LD_LOC 15
1637: IFFALSE 1758
// if getlives ( budovy ) < 1000 then
1639: LD_LOC 12
1643: PPUSH
1644: CALL_OW 256
1648: PUSH
1649: LD_INT 1000
1651: LESS
1652: IFFALSE 1758
// begin if debug then
1654: LD_LOC 19
1658: IFFALSE 1678
// msg ( budovy:  & getlives ( budovy ) ) ;
1660: LD_STRING budovy: 
1662: PUSH
1663: LD_LOC 12
1667: PPUSH
1668: CALL_OW 256
1672: STR
1673: PPUSH
1674: CALL_OW 100
// dialogueon ;
1678: CALL_OW 6
// say ( joan , DXAttack-Joan-1b ) ;
1682: LD_LOC 4
1686: PPUSH
1687: LD_STRING DXAttack-Joan-1b
1689: PPUSH
1690: CALL_OW 88
// dialogueoff ;
1694: CALL_OW 7
// follow = false ;
1698: LD_ADDR_LOC 20
1702: PUSH
1703: LD_INT 0
1705: ST_TO_ADDR
// commovexy ( joan , getx ( sik ) , gety ( sik ) ) ;
1706: LD_LOC 4
1710: PPUSH
1711: LD_LOC 5
1715: PPUSH
1716: CALL_OW 250
1720: PPUSH
1721: LD_LOC 5
1725: PPUSH
1726: CALL_OW 251
1730: PPUSH
1731: CALL_OW 111
// buildingsok = false ;
1735: LD_ADDR_LOC 15
1739: PUSH
1740: LD_INT 0
1742: ST_TO_ADDR
// buildinglives = getlives ( budovy ) ;
1743: LD_ADDR_LOC 17
1747: PUSH
1748: LD_LOC 12
1752: PPUSH
1753: CALL_OW 256
1757: ST_TO_ADDR
// end ; if not killhim then
1758: LD_LOC 16
1762: NOT
1763: IFFALSE 1766
// enable ;
1765: ENABLE
// end ;
1766: END
// every 0 0$0.3 trigger ( not buildingsok ) and ( not killhim ) marked 06 do
1767: LD_LOC 15
1771: NOT
1772: PUSH
1773: LD_LOC 16
1777: NOT
1778: AND
1779: IFFALSE 1892
1781: GO 1783
1783: DISABLE
// begin if buildinglives - getlives ( budovy ) > 7 then
1784: LD_LOC 17
1788: PUSH
1789: LD_LOC 12
1793: PPUSH
1794: CALL_OW 256
1798: MINUS
1799: PUSH
1800: LD_INT 7
1802: GREATER
1803: IFFALSE 1891
// begin disable ( 097 ) ;
1805: LD_INT 97
1807: DISABLE_MARKED
// disable_07 = true ;
1808: LD_ADDR_LOC 18
1812: PUSH
1813: LD_INT 1
1815: ST_TO_ADDR
// dialogueon ;
1816: CALL_OW 6
// say ( sik , DXAttack-Sik-1 ) ;
1820: LD_LOC 5
1824: PPUSH
1825: LD_STRING DXAttack-Sik-1
1827: PPUSH
1828: CALL_OW 88
// dialogueoff ;
1832: CALL_OW 7
// setattitude ( am , oth , att_enemy , true ) ;
1836: LD_LOC 1
1840: PPUSH
1841: LD_LOC 2
1845: PPUSH
1846: LD_INT 2
1848: PPUSH
1849: LD_INT 1
1851: PPUSH
1852: CALL_OW 80
// comattackunit ( others ^ [ off ] , john ) ;
1856: LD_LOC 11
1860: PUSH
1861: LD_LOC 10
1865: PUSH
1866: EMPTY
1867: LIST
1868: ADD
1869: PPUSH
1870: LD_LOC 3
1874: PPUSH
1875: CALL_OW 115
// killhim = true ;
1879: LD_ADDR_LOC 16
1883: PUSH
1884: LD_INT 1
1886: ST_TO_ADDR
// SA_OnAttackFriends ;
1887: CALL 2419 0 0
// end ; enable ;
1891: ENABLE
// end ;
1892: END
// on unitgoestored ( un ) do if un = john then
1893: LD_VAR 0 1
1897: PUSH
1898: LD_LOC 3
1902: EQUAL
1903: IFFALSE 1970
// begin commovexy ( off , getx ( john ) , gety ( john ) ) ;
1905: LD_LOC 10
1909: PPUSH
1910: LD_LOC 3
1914: PPUSH
1915: CALL_OW 250
1919: PPUSH
1920: LD_LOC 3
1924: PPUSH
1925: CALL_OW 251
1929: PPUSH
1930: CALL_OW 111
// wait ( 0 0$1 ) ;
1934: LD_INT 35
1936: PPUSH
1937: CALL_OW 67
// dialogueon ;
1941: CALL_OW 6
// say ( off , DXAttack-Off-1 ) ;
1945: LD_LOC 10
1949: PPUSH
1950: LD_STRING DXAttack-Off-1
1952: PPUSH
1953: CALL_OW 88
// dialogueoff ;
1957: CALL_OW 7
// youlost ( Dissmiss ) ;
1961: LD_STRING Dissmiss
1963: PPUSH
1964: CALL_OW 104
// end else
1968: GO 2084
// if not disable_07 then
1970: LD_LOC 18
1974: NOT
1975: IFFALSE 2084
// if ( not killhim ) then
1977: LD_LOC 16
1981: NOT
1982: IFFALSE 2084
// if ( gettype ( un ) = unit_human ) then
1984: LD_VAR 0 1
1988: PPUSH
1989: CALL_OW 247
1993: PUSH
1994: LD_INT 1
1996: EQUAL
1997: IFFALSE 2084
// begin disable ( 06 ) ;
1999: LD_INT 6
2001: DISABLE_MARKED
// wait ( 0 0$0.5 ) ;
2002: LD_INT 18
2004: PPUSH
2005: CALL_OW 67
// dialogueon ;
2009: CALL_OW 6
// say ( sik , DXAttack-Sik-1 ) ;
2013: LD_LOC 5
2017: PPUSH
2018: LD_STRING DXAttack-Sik-1
2020: PPUSH
2021: CALL_OW 88
// dialogueoff ;
2025: CALL_OW 7
// setattitude ( am , oth , att_enemy , true ) ;
2029: LD_LOC 1
2033: PPUSH
2034: LD_LOC 2
2038: PPUSH
2039: LD_INT 2
2041: PPUSH
2042: LD_INT 1
2044: PPUSH
2045: CALL_OW 80
// comattackunit ( others ^ [ off ] , john ) ;
2049: LD_LOC 11
2053: PUSH
2054: LD_LOC 10
2058: PUSH
2059: EMPTY
2060: LIST
2061: ADD
2062: PPUSH
2063: LD_LOC 3
2067: PPUSH
2068: CALL_OW 115
// killhim = true ;
2072: LD_ADDR_LOC 16
2076: PUSH
2077: LD_INT 1
2079: ST_TO_ADDR
// SA_OnAttackFriends ;
2080: CALL 2419 0 0
// end ;
2084: PPOPN 1
2086: END
// every 0 0$0.4 trigger isinarea ( john , aeon ) and not killhim do
2087: LD_LOC 3
2091: PPUSH
2092: LD_INT 4
2094: PPUSH
2095: CALL_OW 308
2099: PUSH
2100: LD_LOC 16
2104: NOT
2105: AND
2106: IFFALSE 2298
2108: GO 2110
2110: DISABLE
// begin follow = false ;
2111: LD_ADDR_LOC 20
2115: PUSH
2116: LD_INT 0
2118: ST_TO_ADDR
// centernowonunits ( [ eon ] ) ;
2119: LD_INT 14
2121: PUSH
2122: EMPTY
2123: LIST
2124: PPUSH
2125: CALL_OW 87
// dialogueon ;
2129: CALL_OW 6
// say ( off , DXReady-Off-1 ) ;
2133: LD_LOC 10
2137: PPUSH
2138: LD_STRING DXReady-Off-1
2140: PPUSH
2141: CALL_OW 88
// say ( sik , DXReady-Sik-1 ) ;
2145: LD_LOC 5
2149: PPUSH
2150: LD_STRING DXReady-Sik-1
2152: PPUSH
2153: CALL_OW 88
// say ( lucy , DXReady-Don-1 ) ;
2157: LD_LOC 6
2161: PPUSH
2162: LD_STRING DXReady-Don-1
2164: PPUSH
2165: CALL_OW 88
// dialogueoff ;
2169: CALL_OW 7
// ingameon ;
2173: CALL_OW 8
// comstop ( john ) ;
2177: LD_LOC 3
2181: PPUSH
2182: CALL_OW 141
// comenterunit ( sik , eon ) ;
2186: LD_LOC 5
2190: PPUSH
2191: LD_INT 14
2193: PPUSH
2194: CALL_OW 120
// wait ( 0 0$1.5 ) ;
2198: LD_INT 52
2200: PPUSH
2201: CALL_OW 67
// comenterunit ( lucy , eon ) ;
2205: LD_LOC 6
2209: PPUSH
2210: LD_INT 14
2212: PPUSH
2213: CALL_OW 120
// wait ( 0 0$2 ) ;
2217: LD_INT 70
2219: PPUSH
2220: CALL_OW 67
// case query ( QQuit ) of 1 :
2224: LD_STRING QQuit
2226: PPUSH
2227: CALL_OW 97
2231: PUSH
2232: LD_INT 1
2234: DOUBLE
2235: EQUAL
2236: IFTRUE 2240
2238: GO 2255
2240: POP
// begin SA_OnNotEonEnter ;
2241: CALL 2449 0 0
// ingameoff ;
2245: CALL_OW 9
// YouDidSomethingExtraordinary ;
2249: CALL_OW 105
// end ; 2 :
2253: GO 2298
2255: LD_INT 2
2257: DOUBLE
2258: EQUAL
2259: IFTRUE 2263
2261: GO 2297
2263: POP
// begin SA_OnEonEnter ;
2264: CALL 2434 0 0
// disable ( 29 ) ;
2268: LD_INT 29
2270: DISABLE_MARKED
// say ( john , DQrQuit#2-JMM-1 ) ;
2271: LD_LOC 3
2275: PPUSH
2276: LD_STRING DQrQuit#2-JMM-1
2278: PPUSH
2279: CALL_OW 88
// comenterunit ( john , eon ) ;
2283: LD_LOC 3
2287: PPUSH
2288: LD_INT 14
2290: PPUSH
2291: CALL_OW 120
// end ; end ;
2295: GO 2298
2297: POP
// end ;
2298: END
// on enterbuilding ( b , un ) do begin if b = eon then
2299: LD_VAR 0 1
2303: PUSH
2304: LD_INT 14
2306: EQUAL
2307: IFFALSE 2416
// case un of john :
2309: LD_VAR 0 2
2313: PUSH
2314: LD_LOC 3
2318: DOUBLE
2319: EQUAL
2320: IFTRUE 2324
2322: GO 2406
2324: POP
// if not killhim then
2325: LD_LOC 16
2329: NOT
2330: IFFALSE 2363
// begin wait ( 0 0$1.3 ) ;
2332: LD_INT 46
2334: PPUSH
2335: CALL_OW 67
// savecharacters ( john , JMM ) ;
2339: LD_LOC 3
2343: PPUSH
2344: LD_STRING JMM
2346: PPUSH
2347: CALL_OW 38
// changemap ( 1 , %_cont ) ;
2351: LD_STRING 1
2353: PPUSH
2354: LD_STRING %_cont
2356: PPUSH
2357: CALL_OW 340
// end else
2361: GO 2404
// begin placeunitxy ( john , 76 , 34 , false ) ;
2363: LD_LOC 3
2367: PPUSH
2368: LD_INT 76
2370: PPUSH
2371: LD_INT 34
2373: PPUSH
2374: LD_INT 0
2376: PPUSH
2377: CALL_OW 48
// comattackunit ( others ^ [ off ] , john ) ;
2381: LD_LOC 11
2385: PUSH
2386: LD_LOC 10
2390: PUSH
2391: EMPTY
2392: LIST
2393: ADD
2394: PPUSH
2395: LD_LOC 3
2399: PPUSH
2400: CALL_OW 115
// end ; else
2404: GO 2416
2406: POP
// RemoveUnit ( un ) ; end ;
2407: LD_VAR 0 2
2411: PPUSH
2412: CALL_OW 64
// end ; end_of_file
2416: PPOPN 2
2418: END
// export function SA_OnAttackFriends ; begin
2419: LD_INT 0
2421: PPUSH
// SetAchievement ( ACH_MAD ) ;
2422: LD_STRING ACH_MAD
2424: PPUSH
2425: CALL_OW 543
// end ;
2429: LD_VAR 0 1
2433: RET
// export function SA_OnEonEnter ; begin
2434: LD_INT 0
2436: PPUSH
// SetAchievement ( ACH_EON ) ;
2437: LD_STRING ACH_EON
2439: PPUSH
2440: CALL_OW 543
// end ;
2444: LD_VAR 0 1
2448: RET
// export function SA_OnNotEonEnter ; begin
2449: LD_INT 0
2451: PPUSH
// SetAchievement ( ACH_CF ) ;
2452: LD_STRING ACH_CF
2454: PPUSH
2455: CALL_OW 543
// end ; end_of_file
2459: LD_VAR 0 1
2463: RET
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
2464: LD_INT 0
2466: PPUSH
2467: PPUSH
// if not missionNumber then
2468: LD_VAR 0 2
2472: NOT
2473: IFFALSE 2477
// exit ;
2475: GO 2607
// achiv := false ;
2477: LD_ADDR_VAR 0 7
2481: PUSH
2482: LD_INT 0
2484: ST_TO_ADDR
// case campaignNumber of 1 :
2485: LD_VAR 0 1
2489: PUSH
2490: LD_INT 1
2492: DOUBLE
2493: EQUAL
2494: IFTRUE 2498
2496: GO 2509
2498: POP
// achiv := ACH_GOTA ; 2 :
2499: LD_ADDR_VAR 0 7
2503: PUSH
2504: LD_STRING ACH_GOTA
2506: ST_TO_ADDR
2507: GO 2559
2509: LD_INT 2
2511: DOUBLE
2512: EQUAL
2513: IFTRUE 2517
2515: GO 2520
2517: POP
// ; 3 :
2518: GO 2559
2520: LD_INT 3
2522: DOUBLE
2523: EQUAL
2524: IFTRUE 2528
2526: GO 2539
2528: POP
// achiv := ACH_MOTSU ; 4 :
2529: LD_ADDR_VAR 0 7
2533: PUSH
2534: LD_STRING ACH_MOTSU
2536: ST_TO_ADDR
2537: GO 2559
2539: LD_INT 4
2541: DOUBLE
2542: EQUAL
2543: IFTRUE 2547
2545: GO 2558
2547: POP
// achiv := ACH_LOP ; end ;
2548: LD_ADDR_VAR 0 7
2552: PUSH
2553: LD_STRING ACH_LOP
2555: ST_TO_ADDR
2556: GO 2559
2558: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
2559: LD_OWVAR 67
2563: PUSH
2564: LD_INT 3
2566: EQUAL
2567: PUSH
2568: LD_VAR 0 7
2572: AND
2573: PUSH
2574: LD_VAR 0 3
2578: AND
2579: PUSH
2580: LD_VAR 0 4
2584: AND
2585: PUSH
2586: LD_VAR 0 5
2590: AND
2591: IFFALSE 2607
// SetAchievementEX ( achiv , missionNumber ) ;
2593: LD_VAR 0 7
2597: PPUSH
2598: LD_VAR 0 2
2602: PPUSH
2603: CALL_OW 564
// end ;
2607: LD_VAR 0 6
2611: RET
// export function SA_BehemothConstructed ; begin
2612: LD_INT 0
2614: PPUSH
// SetAchievement ( ACH_SMC ) ;
2615: LD_STRING ACH_SMC
2617: PPUSH
2618: CALL_OW 543
// end ;
2622: LD_VAR 0 1
2626: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
2627: LD_VAR 0 2
2631: PUSH
2632: LD_INT 1
2634: DOUBLE
2635: EQUAL
2636: IFTRUE 2640
2638: GO 2647
2640: POP
// HackUnlimitedResources ; 2 :
2641: CALL 2831 0 0
2645: GO 2828
2647: LD_INT 2
2649: DOUBLE
2650: EQUAL
2651: IFTRUE 2655
2653: GO 2662
2655: POP
// HackSetLevel10 ; 3 :
2656: CALL 2964 0 0
2660: GO 2828
2662: LD_INT 3
2664: DOUBLE
2665: EQUAL
2666: IFTRUE 2670
2668: GO 2677
2670: POP
// HackSetLevel10YourUnits ; 4 :
2671: CALL 3049 0 0
2675: GO 2828
2677: LD_INT 4
2679: DOUBLE
2680: EQUAL
2681: IFTRUE 2685
2683: GO 2707
2685: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
2686: LD_VAR 0 3
2690: PPUSH
2691: LD_VAR 0 4
2695: PPUSH
2696: LD_VAR 0 5
2700: PPUSH
2701: CALL 3139 0 3
2705: GO 2828
2707: LD_INT 5
2709: DOUBLE
2710: EQUAL
2711: IFTRUE 2715
2713: GO 2722
2715: POP
// HackSpawnVehicle ; 6 :
2716: CALL 3200 0 0
2720: GO 2828
2722: LD_INT 6
2724: DOUBLE
2725: EQUAL
2726: IFTRUE 2730
2728: GO 2737
2730: POP
// HackInvincible ; 7 :
2731: CALL 3746 0 0
2735: GO 2828
2737: LD_INT 7
2739: DOUBLE
2740: EQUAL
2741: IFTRUE 2745
2743: GO 2752
2745: POP
// HackInvisible ; 8 :
2746: CALL 3857 0 0
2750: GO 2828
2752: LD_INT 8
2754: DOUBLE
2755: EQUAL
2756: IFTRUE 2760
2758: GO 2767
2760: POP
// HackChangeYourSide ; 9 :
2761: CALL 3914 0 0
2765: GO 2828
2767: LD_INT 9
2769: DOUBLE
2770: EQUAL
2771: IFTRUE 2775
2773: GO 2782
2775: POP
// HackChangeUnitSide ; 10 :
2776: CALL 3956 0 0
2780: GO 2828
2782: LD_INT 10
2784: DOUBLE
2785: EQUAL
2786: IFTRUE 2790
2788: GO 2797
2790: POP
// HackFog ; 11 :
2791: CALL 4057 0 0
2795: GO 2828
2797: LD_INT 11
2799: DOUBLE
2800: EQUAL
2801: IFTRUE 2805
2803: GO 2812
2805: POP
// HackApeman ; 12 :
2806: CALL 4072 0 0
2810: GO 2828
2812: LD_INT 12
2814: DOUBLE
2815: EQUAL
2816: IFTRUE 2820
2818: GO 2827
2820: POP
// HackBoom ; end ;
2821: CALL 4157 0 0
2825: GO 2828
2827: POP
// end ;
2828: PPOPN 6
2830: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
2831: LD_INT 0
2833: PPUSH
2834: PPUSH
2835: PPUSH
2836: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
2837: LD_ADDR_VAR 0 4
2841: PUSH
2842: LD_INT 22
2844: PUSH
2845: LD_OWVAR 2
2849: PUSH
2850: EMPTY
2851: LIST
2852: LIST
2853: PUSH
2854: LD_INT 2
2856: PUSH
2857: LD_INT 30
2859: PUSH
2860: LD_INT 0
2862: PUSH
2863: EMPTY
2864: LIST
2865: LIST
2866: PUSH
2867: LD_INT 30
2869: PUSH
2870: LD_INT 1
2872: PUSH
2873: EMPTY
2874: LIST
2875: LIST
2876: PUSH
2877: EMPTY
2878: LIST
2879: LIST
2880: LIST
2881: PUSH
2882: EMPTY
2883: LIST
2884: LIST
2885: PPUSH
2886: CALL_OW 69
2890: ST_TO_ADDR
// if not tmp then
2891: LD_VAR 0 4
2895: NOT
2896: IFFALSE 2900
// exit ;
2898: GO 2959
// for i in tmp do
2900: LD_ADDR_VAR 0 2
2904: PUSH
2905: LD_VAR 0 4
2909: PUSH
2910: FOR_IN
2911: IFFALSE 2957
// for j = 1 to 3 do
2913: LD_ADDR_VAR 0 3
2917: PUSH
2918: DOUBLE
2919: LD_INT 1
2921: DEC
2922: ST_TO_ADDR
2923: LD_INT 3
2925: PUSH
2926: FOR_TO
2927: IFFALSE 2953
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
2929: LD_VAR 0 2
2933: PPUSH
2934: CALL_OW 274
2938: PPUSH
2939: LD_VAR 0 3
2943: PPUSH
2944: LD_INT 99999
2946: PPUSH
2947: CALL_OW 277
2951: GO 2926
2953: POP
2954: POP
2955: GO 2910
2957: POP
2958: POP
// end ;
2959: LD_VAR 0 1
2963: RET
// export function HackSetLevel10 ; var i , j ; begin
2964: LD_INT 0
2966: PPUSH
2967: PPUSH
2968: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
2969: LD_ADDR_VAR 0 2
2973: PUSH
2974: LD_INT 21
2976: PUSH
2977: LD_INT 1
2979: PUSH
2980: EMPTY
2981: LIST
2982: LIST
2983: PPUSH
2984: CALL_OW 69
2988: PUSH
2989: FOR_IN
2990: IFFALSE 3042
// if IsSelected ( i ) then
2992: LD_VAR 0 2
2996: PPUSH
2997: CALL_OW 306
3001: IFFALSE 3040
// begin for j := 1 to 4 do
3003: LD_ADDR_VAR 0 3
3007: PUSH
3008: DOUBLE
3009: LD_INT 1
3011: DEC
3012: ST_TO_ADDR
3013: LD_INT 4
3015: PUSH
3016: FOR_TO
3017: IFFALSE 3038
// SetSkill ( i , j , 10 ) ;
3019: LD_VAR 0 2
3023: PPUSH
3024: LD_VAR 0 3
3028: PPUSH
3029: LD_INT 10
3031: PPUSH
3032: CALL_OW 237
3036: GO 3016
3038: POP
3039: POP
// end ;
3040: GO 2989
3042: POP
3043: POP
// end ;
3044: LD_VAR 0 1
3048: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
3049: LD_INT 0
3051: PPUSH
3052: PPUSH
3053: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
3054: LD_ADDR_VAR 0 2
3058: PUSH
3059: LD_INT 22
3061: PUSH
3062: LD_OWVAR 2
3066: PUSH
3067: EMPTY
3068: LIST
3069: LIST
3070: PUSH
3071: LD_INT 21
3073: PUSH
3074: LD_INT 1
3076: PUSH
3077: EMPTY
3078: LIST
3079: LIST
3080: PUSH
3081: EMPTY
3082: LIST
3083: LIST
3084: PPUSH
3085: CALL_OW 69
3089: PUSH
3090: FOR_IN
3091: IFFALSE 3132
// begin for j := 1 to 4 do
3093: LD_ADDR_VAR 0 3
3097: PUSH
3098: DOUBLE
3099: LD_INT 1
3101: DEC
3102: ST_TO_ADDR
3103: LD_INT 4
3105: PUSH
3106: FOR_TO
3107: IFFALSE 3128
// SetSkill ( i , j , 10 ) ;
3109: LD_VAR 0 2
3113: PPUSH
3114: LD_VAR 0 3
3118: PPUSH
3119: LD_INT 10
3121: PPUSH
3122: CALL_OW 237
3126: GO 3106
3128: POP
3129: POP
// end ;
3130: GO 3090
3132: POP
3133: POP
// end ;
3134: LD_VAR 0 1
3138: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
3139: LD_INT 0
3141: PPUSH
// uc_side := your_side ;
3142: LD_ADDR_OWVAR 20
3146: PUSH
3147: LD_OWVAR 2
3151: ST_TO_ADDR
// uc_nation := nation ;
3152: LD_ADDR_OWVAR 21
3156: PUSH
3157: LD_VAR 0 1
3161: ST_TO_ADDR
// InitHc ;
3162: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
3166: LD_INT 0
3168: PPUSH
3169: LD_VAR 0 2
3173: PPUSH
3174: LD_VAR 0 3
3178: PPUSH
3179: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
3183: CALL_OW 44
3187: PPUSH
3188: LD_INT 1
3190: PPUSH
3191: CALL_OW 51
// end ;
3195: LD_VAR 0 4
3199: RET
// export function HackSpawnVehicle ; begin
3200: LD_INT 0
3202: PPUSH
// uc_side := your_side ;
3203: LD_ADDR_OWVAR 20
3207: PUSH
3208: LD_OWVAR 2
3212: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
3213: LD_ADDR_OWVAR 21
3217: PUSH
3218: LD_INT 1
3220: PPUSH
3221: LD_INT 3
3223: PPUSH
3224: CALL_OW 12
3228: ST_TO_ADDR
// InitVc ;
3229: CALL_OW 20
// case uc_nation of 1 :
3233: LD_OWVAR 21
3237: PUSH
3238: LD_INT 1
3240: DOUBLE
3241: EQUAL
3242: IFTRUE 3246
3244: GO 3390
3246: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
3247: LD_ADDR_OWVAR 37
3251: PUSH
3252: LD_INT 1
3254: PUSH
3255: LD_INT 2
3257: PUSH
3258: LD_INT 3
3260: PUSH
3261: LD_INT 4
3263: PUSH
3264: LD_INT 5
3266: PUSH
3267: EMPTY
3268: LIST
3269: LIST
3270: LIST
3271: LIST
3272: LIST
3273: PUSH
3274: LD_INT 1
3276: PPUSH
3277: LD_INT 5
3279: PPUSH
3280: CALL_OW 12
3284: ARRAY
3285: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3286: LD_ADDR_OWVAR 39
3290: PUSH
3291: LD_INT 1
3293: PPUSH
3294: LD_INT 3
3296: PPUSH
3297: CALL_OW 12
3301: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
3302: LD_ADDR_OWVAR 38
3306: PUSH
3307: LD_INT 1
3309: PUSH
3310: LD_INT 2
3312: PUSH
3313: LD_INT 3
3315: PUSH
3316: EMPTY
3317: LIST
3318: LIST
3319: LIST
3320: PUSH
3321: LD_INT 1
3323: PPUSH
3324: LD_INT 3
3326: PPUSH
3327: CALL_OW 12
3331: ARRAY
3332: ST_TO_ADDR
// vc_weapon := [ us_machine_gun , us_gatling_gun , us_double_gun , us_light_gun , us_rocket_launcher , us_siberium_rocket , us_laser , us_double_laser , us_heavy_gun ] [ rand ( 1 , 9 ) ] ;
3333: LD_ADDR_OWVAR 40
3337: PUSH
3338: LD_INT 2
3340: PUSH
3341: LD_INT 4
3343: PUSH
3344: LD_INT 5
3346: PUSH
3347: LD_INT 3
3349: PUSH
3350: LD_INT 7
3352: PUSH
3353: LD_INT 8
3355: PUSH
3356: LD_INT 9
3358: PUSH
3359: LD_INT 10
3361: PUSH
3362: LD_INT 6
3364: PUSH
3365: EMPTY
3366: LIST
3367: LIST
3368: LIST
3369: LIST
3370: LIST
3371: LIST
3372: LIST
3373: LIST
3374: LIST
3375: PUSH
3376: LD_INT 1
3378: PPUSH
3379: LD_INT 9
3381: PPUSH
3382: CALL_OW 12
3386: ARRAY
3387: ST_TO_ADDR
// end ; 2 :
3388: GO 3655
3390: LD_INT 2
3392: DOUBLE
3393: EQUAL
3394: IFTRUE 3398
3396: GO 3522
3398: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
3399: LD_ADDR_OWVAR 37
3403: PUSH
3404: LD_INT 11
3406: PUSH
3407: LD_INT 12
3409: PUSH
3410: LD_INT 13
3412: PUSH
3413: LD_INT 14
3415: PUSH
3416: EMPTY
3417: LIST
3418: LIST
3419: LIST
3420: LIST
3421: PUSH
3422: LD_INT 1
3424: PPUSH
3425: LD_INT 4
3427: PPUSH
3428: CALL_OW 12
3432: ARRAY
3433: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3434: LD_ADDR_OWVAR 39
3438: PUSH
3439: LD_INT 1
3441: PPUSH
3442: LD_INT 3
3444: PPUSH
3445: CALL_OW 12
3449: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
3450: LD_ADDR_OWVAR 38
3454: PUSH
3455: LD_INT 1
3457: PUSH
3458: LD_INT 2
3460: PUSH
3461: LD_INT 5
3463: PUSH
3464: EMPTY
3465: LIST
3466: LIST
3467: LIST
3468: PUSH
3469: LD_INT 1
3471: PPUSH
3472: LD_INT 3
3474: PPUSH
3475: CALL_OW 12
3479: ARRAY
3480: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
3481: LD_ADDR_OWVAR 40
3485: PUSH
3486: LD_INT 24
3488: PUSH
3489: LD_INT 26
3491: PUSH
3492: LD_INT 27
3494: PUSH
3495: LD_INT 28
3497: PUSH
3498: LD_INT 29
3500: PUSH
3501: EMPTY
3502: LIST
3503: LIST
3504: LIST
3505: LIST
3506: LIST
3507: PUSH
3508: LD_INT 1
3510: PPUSH
3511: LD_INT 5
3513: PPUSH
3514: CALL_OW 12
3518: ARRAY
3519: ST_TO_ADDR
// end ; 3 :
3520: GO 3655
3522: LD_INT 3
3524: DOUBLE
3525: EQUAL
3526: IFTRUE 3530
3528: GO 3654
3530: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
3531: LD_ADDR_OWVAR 37
3535: PUSH
3536: LD_INT 21
3538: PUSH
3539: LD_INT 23
3541: PUSH
3542: LD_INT 22
3544: PUSH
3545: LD_INT 24
3547: PUSH
3548: EMPTY
3549: LIST
3550: LIST
3551: LIST
3552: LIST
3553: PUSH
3554: LD_INT 1
3556: PPUSH
3557: LD_INT 4
3559: PPUSH
3560: CALL_OW 12
3564: ARRAY
3565: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3566: LD_ADDR_OWVAR 39
3570: PUSH
3571: LD_INT 1
3573: PPUSH
3574: LD_INT 3
3576: PPUSH
3577: CALL_OW 12
3581: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
3582: LD_ADDR_OWVAR 38
3586: PUSH
3587: LD_INT 1
3589: PUSH
3590: LD_INT 3
3592: PUSH
3593: EMPTY
3594: LIST
3595: LIST
3596: PUSH
3597: LD_INT 1
3599: PPUSH
3600: LD_INT 2
3602: PPUSH
3603: CALL_OW 12
3607: ARRAY
3608: ST_TO_ADDR
// vc_weapon := [ ru_heavy_machine_gun , ru_gatling_gun , ru_gun , ru_heavy_gun , ru_siberium_rocket , ru_rocket ] [ rand ( 1 , 6 ) ] ;
3609: LD_ADDR_OWVAR 40
3613: PUSH
3614: LD_INT 42
3616: PUSH
3617: LD_INT 43
3619: PUSH
3620: LD_INT 44
3622: PUSH
3623: LD_INT 46
3625: PUSH
3626: LD_INT 48
3628: PUSH
3629: LD_INT 47
3631: PUSH
3632: EMPTY
3633: LIST
3634: LIST
3635: LIST
3636: LIST
3637: LIST
3638: LIST
3639: PUSH
3640: LD_INT 1
3642: PPUSH
3643: LD_INT 6
3645: PPUSH
3646: CALL_OW 12
3650: ARRAY
3651: ST_TO_ADDR
// end ; end ;
3652: GO 3655
3654: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
3655: CALL_OW 45
3659: PPUSH
3660: LD_INT 1
3662: PPUSH
3663: CALL_OW 51
// end ;
3667: LD_VAR 0 1
3671: RET
// export invincible ; every 1 do
3672: GO 3674
3674: DISABLE
// invincible := [ ] ;
3675: LD_ADDR_EXP 1
3679: PUSH
3680: EMPTY
3681: ST_TO_ADDR
3682: END
// every 10 do var i ;
3683: GO 3685
3685: DISABLE
3686: LD_INT 0
3688: PPUSH
// begin enable ;
3689: ENABLE
// if not invincible then
3690: LD_EXP 1
3694: NOT
3695: IFFALSE 3699
// exit ;
3697: GO 3743
// for i in invincible do
3699: LD_ADDR_VAR 0 1
3703: PUSH
3704: LD_EXP 1
3708: PUSH
3709: FOR_IN
3710: IFFALSE 3741
// if GetLives ( i ) < 1000 then
3712: LD_VAR 0 1
3716: PPUSH
3717: CALL_OW 256
3721: PUSH
3722: LD_INT 1000
3724: LESS
3725: IFFALSE 3739
// SetLives ( i , 1000 ) ;
3727: LD_VAR 0 1
3731: PPUSH
3732: LD_INT 1000
3734: PPUSH
3735: CALL_OW 234
3739: GO 3709
3741: POP
3742: POP
// end ;
3743: PPOPN 1
3745: END
// export function HackInvincible ; var i ; begin
3746: LD_INT 0
3748: PPUSH
3749: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
3750: LD_ADDR_VAR 0 2
3754: PUSH
3755: LD_INT 2
3757: PUSH
3758: LD_INT 21
3760: PUSH
3761: LD_INT 1
3763: PUSH
3764: EMPTY
3765: LIST
3766: LIST
3767: PUSH
3768: LD_INT 21
3770: PUSH
3771: LD_INT 2
3773: PUSH
3774: EMPTY
3775: LIST
3776: LIST
3777: PUSH
3778: EMPTY
3779: LIST
3780: LIST
3781: LIST
3782: PPUSH
3783: CALL_OW 69
3787: PUSH
3788: FOR_IN
3789: IFFALSE 3850
// if IsSelected ( i ) then
3791: LD_VAR 0 2
3795: PPUSH
3796: CALL_OW 306
3800: IFFALSE 3848
// begin if i in invincible then
3802: LD_VAR 0 2
3806: PUSH
3807: LD_EXP 1
3811: IN
3812: IFFALSE 3832
// invincible := invincible diff i else
3814: LD_ADDR_EXP 1
3818: PUSH
3819: LD_EXP 1
3823: PUSH
3824: LD_VAR 0 2
3828: DIFF
3829: ST_TO_ADDR
3830: GO 3848
// invincible := invincible union i ;
3832: LD_ADDR_EXP 1
3836: PUSH
3837: LD_EXP 1
3841: PUSH
3842: LD_VAR 0 2
3846: UNION
3847: ST_TO_ADDR
// end ;
3848: GO 3788
3850: POP
3851: POP
// end ;
3852: LD_VAR 0 1
3856: RET
// export function HackInvisible ; var i , j ; begin
3857: LD_INT 0
3859: PPUSH
3860: PPUSH
3861: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
3862: LD_ADDR_VAR 0 2
3866: PUSH
3867: LD_INT 21
3869: PUSH
3870: LD_INT 1
3872: PUSH
3873: EMPTY
3874: LIST
3875: LIST
3876: PPUSH
3877: CALL_OW 69
3881: PUSH
3882: FOR_IN
3883: IFFALSE 3907
// if IsSelected ( i ) then
3885: LD_VAR 0 2
3889: PPUSH
3890: CALL_OW 306
3894: IFFALSE 3905
// begin ComForceInvisible ( i ) ;
3896: LD_VAR 0 2
3900: PPUSH
3901: CALL_OW 496
// end ;
3905: GO 3882
3907: POP
3908: POP
// end ;
3909: LD_VAR 0 1
3913: RET
// export function HackChangeYourSide ; begin
3914: LD_INT 0
3916: PPUSH
// if your_side = 8 then
3917: LD_OWVAR 2
3921: PUSH
3922: LD_INT 8
3924: EQUAL
3925: IFFALSE 3937
// your_side := 0 else
3927: LD_ADDR_OWVAR 2
3931: PUSH
3932: LD_INT 0
3934: ST_TO_ADDR
3935: GO 3951
// your_side := your_side + 1 ;
3937: LD_ADDR_OWVAR 2
3941: PUSH
3942: LD_OWVAR 2
3946: PUSH
3947: LD_INT 1
3949: PLUS
3950: ST_TO_ADDR
// end ;
3951: LD_VAR 0 1
3955: RET
// export function HackChangeUnitSide ; var i , j ; begin
3956: LD_INT 0
3958: PPUSH
3959: PPUSH
3960: PPUSH
// for i in all_units do
3961: LD_ADDR_VAR 0 2
3965: PUSH
3966: LD_OWVAR 3
3970: PUSH
3971: FOR_IN
3972: IFFALSE 4050
// if IsSelected ( i ) then
3974: LD_VAR 0 2
3978: PPUSH
3979: CALL_OW 306
3983: IFFALSE 4048
// begin j := GetSide ( i ) ;
3985: LD_ADDR_VAR 0 3
3989: PUSH
3990: LD_VAR 0 2
3994: PPUSH
3995: CALL_OW 255
3999: ST_TO_ADDR
// if j = 8 then
4000: LD_VAR 0 3
4004: PUSH
4005: LD_INT 8
4007: EQUAL
4008: IFFALSE 4020
// j := 0 else
4010: LD_ADDR_VAR 0 3
4014: PUSH
4015: LD_INT 0
4017: ST_TO_ADDR
4018: GO 4034
// j := j + 1 ;
4020: LD_ADDR_VAR 0 3
4024: PUSH
4025: LD_VAR 0 3
4029: PUSH
4030: LD_INT 1
4032: PLUS
4033: ST_TO_ADDR
// SetSide ( i , j ) ;
4034: LD_VAR 0 2
4038: PPUSH
4039: LD_VAR 0 3
4043: PPUSH
4044: CALL_OW 235
// end ;
4048: GO 3971
4050: POP
4051: POP
// end ;
4052: LD_VAR 0 1
4056: RET
// export function HackFog ; begin
4057: LD_INT 0
4059: PPUSH
// FogOff ( true ) ;
4060: LD_INT 1
4062: PPUSH
4063: CALL_OW 344
// end ;
4067: LD_VAR 0 1
4071: RET
// export function HackApeman ; begin
4072: LD_INT 0
4074: PPUSH
// uc_side := your_side ;
4075: LD_ADDR_OWVAR 20
4079: PUSH
4080: LD_OWVAR 2
4084: ST_TO_ADDR
// uc_nation := 0 ;
4085: LD_ADDR_OWVAR 21
4089: PUSH
4090: LD_INT 0
4092: ST_TO_ADDR
// hc_name :=  ;
4093: LD_ADDR_OWVAR 26
4097: PUSH
4098: LD_STRING 
4100: ST_TO_ADDR
// hc_gallery :=  ;
4101: LD_ADDR_OWVAR 33
4105: PUSH
4106: LD_STRING 
4108: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
4109: LD_ADDR_OWVAR 31
4113: PUSH
4114: LD_INT 0
4116: PUSH
4117: LD_INT 0
4119: PUSH
4120: LD_INT 0
4122: PUSH
4123: LD_INT 0
4125: PUSH
4126: EMPTY
4127: LIST
4128: LIST
4129: LIST
4130: LIST
4131: ST_TO_ADDR
// hc_class := class_apeman ;
4132: LD_ADDR_OWVAR 28
4136: PUSH
4137: LD_INT 12
4139: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
4140: CALL_OW 44
4144: PPUSH
4145: LD_INT 1
4147: PPUSH
4148: CALL_OW 51
// end ;
4152: LD_VAR 0 1
4156: RET
// export function HackBoom ; begin
4157: LD_INT 0
4159: PPUSH
// uc_side := your_side ;
4160: LD_ADDR_OWVAR 20
4164: PUSH
4165: LD_OWVAR 2
4169: ST_TO_ADDR
// uc_nation := 1 ;
4170: LD_ADDR_OWVAR 21
4174: PUSH
4175: LD_INT 1
4177: ST_TO_ADDR
// vc_chassis := us_morphling ;
4178: LD_ADDR_OWVAR 37
4182: PUSH
4183: LD_INT 5
4185: ST_TO_ADDR
// vc_engine := engine_siberite ;
4186: LD_ADDR_OWVAR 39
4190: PUSH
4191: LD_INT 3
4193: ST_TO_ADDR
// vc_control := control_computer ;
4194: LD_ADDR_OWVAR 38
4198: PUSH
4199: LD_INT 3
4201: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
4202: LD_ADDR_OWVAR 40
4206: PUSH
4207: LD_INT 8
4209: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
4210: CALL_OW 45
4214: PPUSH
4215: LD_INT 1
4217: PPUSH
4218: CALL_OW 51
// end ;
4222: LD_VAR 0 1
4226: RET
