// export you ; export MacMillan , Burlak ; function prepare_units ; begin
   0: LD_INT 0
   2: PPUSH
// MacMillan := CreateCharacter ( JMM ) ;
   3: LD_ADDR_EXP 2
   7: PUSH
   8: LD_STRING JMM
  10: PPUSH
  11: CALL_OW 34
  15: ST_TO_ADDR
// Burlak := CreateCharacter ( Burlak ) ;
  16: LD_ADDR_EXP 3
  20: PUSH
  21: LD_STRING Burlak
  23: PPUSH
  24: CALL_OW 34
  28: ST_TO_ADDR
// SetClass ( MacMillan , class_engineer ) ;
  29: LD_EXP 2
  33: PPUSH
  34: LD_INT 2
  36: PPUSH
  37: CALL_OW 336
// SetClass ( Burlak , class_mechanic ) ;
  41: LD_EXP 3
  45: PPUSH
  46: LD_INT 3
  48: PPUSH
  49: CALL_OW 336
// SetSide ( [ MacMillan , Burlak ] , you ) ;
  53: LD_EXP 2
  57: PUSH
  58: LD_EXP 3
  62: PUSH
  63: EMPTY
  64: LIST
  65: LIST
  66: PPUSH
  67: LD_EXP 1
  71: PPUSH
  72: CALL_OW 235
// PlaceUnitArea ( MacMillan , central , false ) ;
  76: LD_EXP 2
  80: PPUSH
  81: LD_INT 1
  83: PPUSH
  84: LD_INT 0
  86: PPUSH
  87: CALL_OW 49
// PlaceUnitArea ( Burlak , central , false ) ;
  91: LD_EXP 3
  95: PPUSH
  96: LD_INT 1
  98: PPUSH
  99: LD_INT 0
 101: PPUSH
 102: CALL_OW 49
// end ;
 106: LD_VAR 0 1
 110: RET
// function prepare_freedom ; var building , un , x , y , dir , weap , Freedom ; begin
 111: LD_INT 0
 113: PPUSH
 114: PPUSH
 115: PPUSH
 116: PPUSH
 117: PPUSH
 118: PPUSH
 119: PPUSH
 120: PPUSH
// uc_side := 7 ;
 121: LD_ADDR_OWVAR 20
 125: PUSH
 126: LD_INT 7
 128: ST_TO_ADDR
// Freedom := LoadVariable ( Freedom , [ ] ) ;
 129: LD_ADDR_VAR 0 8
 133: PUSH
 134: LD_STRING Freedom
 136: PPUSH
 137: EMPTY
 138: PPUSH
 139: CALL_OW 30
 143: ST_TO_ADDR
// for building in freedom do
 144: LD_ADDR_VAR 0 2
 148: PUSH
 149: LD_VAR 0 8
 153: PUSH
 154: FOR_IN
 155: IFFALSE 398
// begin weap := false ;
 157: LD_ADDR_VAR 0 7
 161: PUSH
 162: LD_INT 0
 164: ST_TO_ADDR
// x := building [ 1 ] ;
 165: LD_ADDR_VAR 0 4
 169: PUSH
 170: LD_VAR 0 2
 174: PUSH
 175: LD_INT 1
 177: ARRAY
 178: ST_TO_ADDR
// y := building [ 2 ] ;
 179: LD_ADDR_VAR 0 5
 183: PUSH
 184: LD_VAR 0 2
 188: PUSH
 189: LD_INT 2
 191: ARRAY
 192: ST_TO_ADDR
// dir := building [ 3 ] ;
 193: LD_ADDR_VAR 0 6
 197: PUSH
 198: LD_VAR 0 2
 202: PUSH
 203: LD_INT 3
 205: ARRAY
 206: ST_TO_ADDR
// bc_type := building [ 4 ] ;
 207: LD_ADDR_OWVAR 42
 211: PUSH
 212: LD_VAR 0 2
 216: PUSH
 217: LD_INT 4
 219: ARRAY
 220: ST_TO_ADDR
// bc_level := building [ 5 ] ;
 221: LD_ADDR_OWVAR 43
 225: PUSH
 226: LD_VAR 0 2
 230: PUSH
 231: LD_INT 5
 233: ARRAY
 234: ST_TO_ADDR
// uc_nation := building [ 6 ] ;
 235: LD_ADDR_OWVAR 21
 239: PUSH
 240: LD_VAR 0 2
 244: PUSH
 245: LD_INT 6
 247: ARRAY
 248: ST_TO_ADDR
// if building > 7 then
 249: LD_VAR 0 2
 253: PUSH
 254: LD_INT 7
 256: GREATER
 257: IFFALSE 287
// begin bc_kind1 := building [ 7 ] ;
 259: LD_ADDR_OWVAR 44
 263: PUSH
 264: LD_VAR 0 2
 268: PUSH
 269: LD_INT 7
 271: ARRAY
 272: ST_TO_ADDR
// bc_kind2 := building [ 8 ] ;
 273: LD_ADDR_OWVAR 45
 277: PUSH
 278: LD_VAR 0 2
 282: PUSH
 283: LD_INT 8
 285: ARRAY
 286: ST_TO_ADDR
// end ; if ( building + 0 ) = 7 then
 287: LD_VAR 0 2
 291: PUSH
 292: LD_INT 0
 294: PLUS
 295: PUSH
 296: LD_INT 7
 298: EQUAL
 299: IFFALSE 315
// weap := building [ 7 ] ;
 301: LD_ADDR_VAR 0 7
 305: PUSH
 306: LD_VAR 0 2
 310: PUSH
 311: LD_INT 7
 313: ARRAY
 314: ST_TO_ADDR
// if bc_type in [ b_oil_mine , b_siberite_mine ] then
 315: LD_OWVAR 42
 319: PUSH
 320: LD_INT 29
 322: PUSH
 323: LD_INT 30
 325: PUSH
 326: EMPTY
 327: LIST
 328: LIST
 329: IN
 330: IFFALSE 351
// SetResourceVisibility ( x , y , you ) ;
 332: LD_VAR 0 4
 336: PPUSH
 337: LD_VAR 0 5
 341: PPUSH
 342: LD_EXP 1
 346: PPUSH
 347: CALL_OW 441
// un := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
 351: LD_ADDR_VAR 0 3
 355: PUSH
 356: LD_VAR 0 4
 360: PPUSH
 361: LD_VAR 0 5
 365: PPUSH
 366: LD_VAR 0 6
 370: PPUSH
 371: CALL_OW 47
 375: ST_TO_ADDR
// if weap then
 376: LD_VAR 0 7
 380: IFFALSE 396
// PlaceWeaponTurret ( un , weap ) ;
 382: LD_VAR 0 3
 386: PPUSH
 387: LD_VAR 0 7
 391: PPUSH
 392: CALL_OW 431
// end ;
 396: GO 154
 398: POP
 399: POP
// building := FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
 400: LD_ADDR_VAR 0 2
 404: PUSH
 405: LD_INT 22
 407: PUSH
 408: LD_EXP 1
 412: PUSH
 413: EMPTY
 414: LIST
 415: LIST
 416: PUSH
 417: LD_INT 2
 419: PUSH
 420: LD_INT 30
 422: PUSH
 423: LD_INT 0
 425: PUSH
 426: EMPTY
 427: LIST
 428: LIST
 429: PUSH
 430: LD_INT 30
 432: PUSH
 433: LD_INT 1
 435: PUSH
 436: EMPTY
 437: LIST
 438: LIST
 439: PUSH
 440: EMPTY
 441: LIST
 442: LIST
 443: LIST
 444: PUSH
 445: EMPTY
 446: LIST
 447: LIST
 448: PPUSH
 449: CALL_OW 69
 453: ST_TO_ADDR
// for un in building do
 454: LD_ADDR_VAR 0 3
 458: PUSH
 459: LD_VAR 0 2
 463: PUSH
 464: FOR_IN
 465: IFFALSE 529
// begin SetResourceType ( GetBase ( un ) , mat_cans , 125 ) ;
 467: LD_VAR 0 3
 471: PPUSH
 472: CALL_OW 274
 476: PPUSH
 477: LD_INT 1
 479: PPUSH
 480: LD_INT 125
 482: PPUSH
 483: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_oil , 38 ) ;
 487: LD_VAR 0 3
 491: PPUSH
 492: CALL_OW 274
 496: PPUSH
 497: LD_INT 2
 499: PPUSH
 500: LD_INT 38
 502: PPUSH
 503: CALL_OW 277
// SetResourceType ( GetBase ( un ) , mat_siberit , 12 ) ;
 507: LD_VAR 0 3
 511: PPUSH
 512: CALL_OW 274
 516: PPUSH
 517: LD_INT 3
 519: PPUSH
 520: LD_INT 12
 522: PPUSH
 523: CALL_OW 277
// end ;
 527: GO 464
 529: POP
 530: POP
// end ;
 531: LD_VAR 0 1
 535: RET
// function prepare_sides ; begin
 536: LD_INT 0
 538: PPUSH
// you := 7 ;
 539: LD_ADDR_EXP 1
 543: PUSH
 544: LD_INT 7
 546: ST_TO_ADDR
// disable ( 1 ) ;
 547: LD_INT 1
 549: DISABLE_MARKED
// end ;
 550: LD_VAR 0 1
 554: RET
// starting begin prepare_sides ;
 555: CALL 536 0 0
// prepare_freedom ;
 559: CALL 111 0 0
// prepare_units ;
 563: CALL 0 0 0
// add_new_vehicles ;
 567: CALL 1558 0 0
// starting_scene ;
 571: CALL 576 0 0
// end ; end_of_file
 575: END
// var JMM_car , Bur_car ; var JMM_load , Bur_load ; var truck_selected ; export function starting_scene ; begin
 576: LD_INT 0
 578: PPUSH
// interface_hidden := true ;
 579: LD_ADDR_OWVAR 54
 583: PUSH
 584: LD_INT 1
 586: ST_TO_ADDR
// RevealFogArea ( you , all_fog ) ;
 587: LD_EXP 1
 591: PPUSH
 592: LD_INT 2
 594: PPUSH
 595: CALL_OW 332
// ComTurnUnit ( MacMillan , Burlak ) ;
 599: LD_EXP 2
 603: PPUSH
 604: LD_EXP 3
 608: PPUSH
 609: CALL_OW 119
// ComTurnUnit ( Burlak , MacMillan ) ;
 613: LD_EXP 3
 617: PPUSH
 618: LD_EXP 2
 622: PPUSH
 623: CALL_OW 119
// wait ( 10 ) ;
 627: LD_INT 10
 629: PPUSH
 630: CALL_OW 67
// DialogueOn ;
 634: CALL_OW 6
// interface_hidden := true ;
 638: LD_ADDR_OWVAR 54
 642: PUSH
 643: LD_INT 1
 645: ST_TO_ADDR
// Say ( MacMillan , D1-JMM-1 ) ;
 646: LD_EXP 2
 650: PPUSH
 651: LD_STRING D1-JMM-1
 653: PPUSH
 654: CALL_OW 88
// Say ( Burlak , D1-Bur-1 ) ;
 658: LD_EXP 3
 662: PPUSH
 663: LD_STRING D1-Bur-1
 665: PPUSH
 666: CALL_OW 88
// Say ( MacMillan , D1-JMM-2 ) ;
 670: LD_EXP 2
 674: PPUSH
 675: LD_STRING D1-JMM-2
 677: PPUSH
 678: CALL_OW 88
// Say ( Burlak , D1-Bur-2 ) ;
 682: LD_EXP 3
 686: PPUSH
 687: LD_STRING D1-Bur-2
 689: PPUSH
 690: CALL_OW 88
// Say ( MacMillan , D1-JMM-3 ) ;
 694: LD_EXP 2
 698: PPUSH
 699: LD_STRING D1-JMM-3
 701: PPUSH
 702: CALL_OW 88
// Say ( Burlak , D1-Bur-3 ) ;
 706: LD_EXP 3
 710: PPUSH
 711: LD_STRING D1-Bur-3
 713: PPUSH
 714: CALL_OW 88
// Say ( MacMillan , D1-JMM-4 ) ;
 718: LD_EXP 2
 722: PPUSH
 723: LD_STRING D1-JMM-4
 725: PPUSH
 726: CALL_OW 88
// Say ( Burlak , D1-Bur-4 ) ;
 730: LD_EXP 3
 734: PPUSH
 735: LD_STRING D1-Bur-4
 737: PPUSH
 738: CALL_OW 88
// Say ( MacMillan , D1-JMM-5 ) ;
 742: LD_EXP 2
 746: PPUSH
 747: LD_STRING D1-JMM-5
 749: PPUSH
 750: CALL_OW 88
// Say ( Burlak , D1-Bur-5 ) ;
 754: LD_EXP 3
 758: PPUSH
 759: LD_STRING D1-Bur-5
 761: PPUSH
 762: CALL_OW 88
// Say ( MacMillan , D1-JMM-6 ) ;
 766: LD_EXP 2
 770: PPUSH
 771: LD_STRING D1-JMM-6
 773: PPUSH
 774: CALL_OW 88
// Say ( Burlak , D1-Bur-6 ) ;
 778: LD_EXP 3
 782: PPUSH
 783: LD_STRING D1-Bur-6
 785: PPUSH
 786: CALL_OW 88
// Say ( MacMillan , D1-JMM-7 ) ;
 790: LD_EXP 2
 794: PPUSH
 795: LD_STRING D1-JMM-7
 797: PPUSH
 798: CALL_OW 88
// wait ( 20 ) ;
 802: LD_INT 20
 804: PPUSH
 805: CALL_OW 67
// Query ( QTruck ) ;
 809: LD_STRING QTruck
 811: PPUSH
 812: CALL_OW 97
// interface_hidden := false ;
 816: LD_ADDR_OWVAR 54
 820: PUSH
 821: LD_INT 0
 823: ST_TO_ADDR
// DialogueOff ;
 824: CALL_OW 7
// JMM_car := [ ] ;
 828: LD_ADDR_LOC 1
 832: PUSH
 833: EMPTY
 834: ST_TO_ADDR
// Bur_car := [ ] ;
 835: LD_ADDR_LOC 2
 839: PUSH
 840: EMPTY
 841: ST_TO_ADDR
// JMM_load := 0 ;
 842: LD_ADDR_LOC 3
 846: PUSH
 847: LD_INT 0
 849: ST_TO_ADDR
// Bur_load := 0 ;
 850: LD_ADDR_LOC 4
 854: PUSH
 855: LD_INT 0
 857: ST_TO_ADDR
// truck_selected := false ;
 858: LD_ADDR_LOC 5
 862: PUSH
 863: LD_INT 0
 865: ST_TO_ADDR
// ChangeMissionObjectives ( MArtPickup ) ;
 866: LD_STRING MArtPickup
 868: PPUSH
 869: CALL_OW 337
// enable ( 1 ) ;
 873: LD_INT 1
 875: ENABLE_MARKED
// SetAreaMapShow ( leaving_border , 1 ) ;
 876: LD_INT 5
 878: PPUSH
 879: LD_INT 1
 881: PPUSH
 882: CALL_OW 424
// end ;
 886: LD_VAR 0 1
 890: RET
// every 0 0$1 trigger IsInArea ( MacMillan , leaving ) marked 1 do var un , go ;
 891: LD_EXP 2
 895: PPUSH
 896: LD_INT 4
 898: PPUSH
 899: CALL_OW 308
 903: IFFALSE 1167
 905: GO 907
 907: DISABLE
 908: LD_INT 0
 910: PPUSH
 911: PPUSH
// begin go := true ;
 912: LD_ADDR_VAR 0 2
 916: PUSH
 917: LD_INT 1
 919: ST_TO_ADDR
// un := IsInUnit ( MacMillan ) ;
 920: LD_ADDR_VAR 0 1
 924: PUSH
 925: LD_EXP 2
 929: PPUSH
 930: CALL_OW 310
 934: ST_TO_ADDR
// if un and not IsOK ( Burlak ) and not truck_selected and not ( GetWeapon ( un ) in [ us_cargo_bay , ru_cargo_bay ] ) then
 935: LD_VAR 0 1
 939: PUSH
 940: LD_EXP 3
 944: PPUSH
 945: CALL_OW 302
 949: NOT
 950: AND
 951: PUSH
 952: LD_LOC 5
 956: NOT
 957: AND
 958: PUSH
 959: LD_VAR 0 1
 963: PPUSH
 964: CALL_OW 264
 968: PUSH
 969: LD_INT 12
 971: PUSH
 972: LD_INT 51
 974: PUSH
 975: EMPTY
 976: LIST
 977: LIST
 978: IN
 979: NOT
 980: AND
 981: IFFALSE 991
// go := false ;
 983: LD_ADDR_VAR 0 2
 987: PUSH
 988: LD_INT 0
 990: ST_TO_ADDR
// if un and go then
 991: LD_VAR 0 1
 995: PUSH
 996: LD_VAR 0 2
1000: AND
1001: IFFALSE 1137
// begin RemoveUnit ( MacMillan ) ;
1003: LD_EXP 2
1007: PPUSH
1008: CALL_OW 64
// JMM_car := [ GetChassis ( un ) , GetEngine ( un ) , GetControl ( un ) , GetWeapon ( un ) ] ;
1012: LD_ADDR_LOC 1
1016: PUSH
1017: LD_VAR 0 1
1021: PPUSH
1022: CALL_OW 265
1026: PUSH
1027: LD_VAR 0 1
1031: PPUSH
1032: CALL_OW 262
1036: PUSH
1037: LD_VAR 0 1
1041: PPUSH
1042: CALL_OW 263
1046: PUSH
1047: LD_VAR 0 1
1051: PPUSH
1052: CALL_OW 264
1056: PUSH
1057: EMPTY
1058: LIST
1059: LIST
1060: LIST
1061: LIST
1062: ST_TO_ADDR
// if ( GetWeapon ( un ) in [ us_cargo_bay , ru_cargo_bay ] ) then
1063: LD_VAR 0 1
1067: PPUSH
1068: CALL_OW 264
1072: PUSH
1073: LD_INT 12
1075: PUSH
1076: LD_INT 51
1078: PUSH
1079: EMPTY
1080: LIST
1081: LIST
1082: IN
1083: IFFALSE 1126
// begin if ( GetCargoType ( un ) = mat_oil ) then
1085: LD_VAR 0 1
1089: PPUSH
1090: CALL_OW 288
1094: PUSH
1095: LD_INT 2
1097: EQUAL
1098: IFFALSE 1118
// JMM_load := GetCargo ( un , mat_oil ) ;
1100: LD_ADDR_LOC 3
1104: PUSH
1105: LD_VAR 0 1
1109: PPUSH
1110: LD_INT 2
1112: PPUSH
1113: CALL_OW 289
1117: ST_TO_ADDR
// truck_selected := true ;
1118: LD_ADDR_LOC 5
1122: PUSH
1123: LD_INT 1
1125: ST_TO_ADDR
// end ; RemoveUnit ( un ) ;
1126: LD_VAR 0 1
1130: PPUSH
1131: CALL_OW 64
// end else
1135: GO 1166
// begin Query ( QTruck ) ;
1137: LD_STRING QTruck
1139: PPUSH
1140: CALL_OW 97
// repeat wait ( 0 0$1 ) ;
1144: LD_INT 35
1146: PPUSH
1147: CALL_OW 67
// until not IsInArea ( MacMillan , leaving ) ;
1151: LD_EXP 2
1155: PPUSH
1156: LD_INT 4
1158: PPUSH
1159: CALL_OW 308
1163: NOT
1164: IFFALSE 1144
// end ; enable ;
1166: ENABLE
// end ;
1167: PPOPN 2
1169: END
// every 0 0$1 trigger IsInArea ( Burlak , leaving ) marked 1 do var un , go ;
1170: LD_EXP 3
1174: PPUSH
1175: LD_INT 4
1177: PPUSH
1178: CALL_OW 308
1182: IFFALSE 1446
1184: GO 1186
1186: DISABLE
1187: LD_INT 0
1189: PPUSH
1190: PPUSH
// begin go := true ;
1191: LD_ADDR_VAR 0 2
1195: PUSH
1196: LD_INT 1
1198: ST_TO_ADDR
// un := IsInUnit ( Burlak ) ;
1199: LD_ADDR_VAR 0 1
1203: PUSH
1204: LD_EXP 3
1208: PPUSH
1209: CALL_OW 310
1213: ST_TO_ADDR
// if un and not IsOK ( MacMillan ) and not truck_selected and not ( GetWeapon ( un ) in [ us_cargo_bay , ru_cargo_bay ] ) then
1214: LD_VAR 0 1
1218: PUSH
1219: LD_EXP 2
1223: PPUSH
1224: CALL_OW 302
1228: NOT
1229: AND
1230: PUSH
1231: LD_LOC 5
1235: NOT
1236: AND
1237: PUSH
1238: LD_VAR 0 1
1242: PPUSH
1243: CALL_OW 264
1247: PUSH
1248: LD_INT 12
1250: PUSH
1251: LD_INT 51
1253: PUSH
1254: EMPTY
1255: LIST
1256: LIST
1257: IN
1258: NOT
1259: AND
1260: IFFALSE 1270
// go := false ;
1262: LD_ADDR_VAR 0 2
1266: PUSH
1267: LD_INT 0
1269: ST_TO_ADDR
// if un and go then
1270: LD_VAR 0 1
1274: PUSH
1275: LD_VAR 0 2
1279: AND
1280: IFFALSE 1416
// begin RemoveUnit ( Burlak ) ;
1282: LD_EXP 3
1286: PPUSH
1287: CALL_OW 64
// Bur_car := [ GetChassis ( un ) , GetEngine ( un ) , GetControl ( un ) , GetWeapon ( un ) ] ;
1291: LD_ADDR_LOC 2
1295: PUSH
1296: LD_VAR 0 1
1300: PPUSH
1301: CALL_OW 265
1305: PUSH
1306: LD_VAR 0 1
1310: PPUSH
1311: CALL_OW 262
1315: PUSH
1316: LD_VAR 0 1
1320: PPUSH
1321: CALL_OW 263
1325: PUSH
1326: LD_VAR 0 1
1330: PPUSH
1331: CALL_OW 264
1335: PUSH
1336: EMPTY
1337: LIST
1338: LIST
1339: LIST
1340: LIST
1341: ST_TO_ADDR
// if ( GetWeapon ( un ) in [ us_cargo_bay , ru_cargo_bay ] ) then
1342: LD_VAR 0 1
1346: PPUSH
1347: CALL_OW 264
1351: PUSH
1352: LD_INT 12
1354: PUSH
1355: LD_INT 51
1357: PUSH
1358: EMPTY
1359: LIST
1360: LIST
1361: IN
1362: IFFALSE 1405
// begin if ( GetCargoType ( un ) = mat_oil ) then
1364: LD_VAR 0 1
1368: PPUSH
1369: CALL_OW 288
1373: PUSH
1374: LD_INT 2
1376: EQUAL
1377: IFFALSE 1397
// Bur_load := GetCargo ( un , mat_oil ) ;
1379: LD_ADDR_LOC 4
1383: PUSH
1384: LD_VAR 0 1
1388: PPUSH
1389: LD_INT 2
1391: PPUSH
1392: CALL_OW 289
1396: ST_TO_ADDR
// truck_selected := true ;
1397: LD_ADDR_LOC 5
1401: PUSH
1402: LD_INT 1
1404: ST_TO_ADDR
// end ; RemoveUnit ( un ) ;
1405: LD_VAR 0 1
1409: PPUSH
1410: CALL_OW 64
// end else
1414: GO 1445
// begin Query ( QTruck ) ;
1416: LD_STRING QTruck
1418: PPUSH
1419: CALL_OW 97
// repeat wait ( 0 0$1 ) ;
1423: LD_INT 35
1425: PPUSH
1426: CALL_OW 67
// until not IsInArea ( Burlak , leaving ) ;
1430: LD_EXP 3
1434: PPUSH
1435: LD_INT 4
1437: PPUSH
1438: CALL_OW 308
1442: NOT
1443: IFFALSE 1423
// end ; enable ;
1445: ENABLE
// end ;
1446: PPOPN 2
1448: END
// every 0 0$1 trigger not ( IsOK ( MacMillan ) or IsOK ( Burlak ) ) do
1449: LD_EXP 2
1453: PPUSH
1454: CALL_OW 302
1458: PUSH
1459: LD_EXP 3
1463: PPUSH
1464: CALL_OW 302
1468: OR
1469: NOT
1470: IFFALSE 1557
1472: GO 1474
1474: DISABLE
// begin SaveCharacters ( MacMillan , JMM ) ;
1475: LD_EXP 2
1479: PPUSH
1480: LD_STRING JMM
1482: PPUSH
1483: CALL_OW 38
// SaveCharacters ( Burlak , Burlak ) ;
1487: LD_EXP 3
1491: PPUSH
1492: LD_STRING Burlak
1494: PPUSH
1495: CALL_OW 38
// SaveVariable ( JMM_car , JMM_car ) ;
1499: LD_LOC 1
1503: PPUSH
1504: LD_STRING JMM_car
1506: PPUSH
1507: CALL_OW 39
// SaveVariable ( Bur_car , Bur_car ) ;
1511: LD_LOC 2
1515: PPUSH
1516: LD_STRING Bur_car
1518: PPUSH
1519: CALL_OW 39
// SaveVariable ( JMM_load , JMM_car_load ) ;
1523: LD_LOC 3
1527: PPUSH
1528: LD_STRING JMM_car_load
1530: PPUSH
1531: CALL_OW 39
// SaveVariable ( Bur_load , Bur_car_load ) ;
1535: LD_LOC 4
1539: PPUSH
1540: LD_STRING Bur_car_load
1542: PPUSH
1543: CALL_OW 39
// ChangeMap ( %_cont , %_cont ) ;
1547: LD_STRING %_cont
1549: PPUSH
1550: LD_STRING %_cont
1552: PPUSH
1553: CALL_OW 340
// end ; end_of_file
1557: END
// var vehicle_list ; export function add_new_vehicles ; var vehicle , un ; begin
1558: LD_INT 0
1560: PPUSH
1561: PPUSH
1562: PPUSH
// vehicle_list := [ [ us_medium_wheeled , engine_combustion , control_manual , us_double_gun ] , [ ru_medium_wheeled , engine_combustion , control_manual , ru_gun ] , [ us_medium_tracked , engine_siberite , control_manual , us_cargo_bay ] , [ us_medium_tracked , engine_siberite , control_manual , us_gatling_gun ] , [ us_medium_tracked , engine_combustion , control_manual , us_rocket_launcher ] , [ us_heavy_tracked , engine_combustion , control_manual , us_rocket_launcher ] , [ ru_heavy_tracked , engine_siberite , control_manual , ru_bulldozer ] , [ us_heavy_tracked , engine_combustion , control_manual , us_double_gun ] , ] ;
1563: LD_ADDR_LOC 6
1567: PUSH
1568: LD_INT 2
1570: PUSH
1571: LD_INT 1
1573: PUSH
1574: LD_INT 1
1576: PUSH
1577: LD_INT 5
1579: PUSH
1580: EMPTY
1581: LIST
1582: LIST
1583: LIST
1584: LIST
1585: PUSH
1586: LD_INT 21
1588: PUSH
1589: LD_INT 1
1591: PUSH
1592: LD_INT 1
1594: PUSH
1595: LD_INT 44
1597: PUSH
1598: EMPTY
1599: LIST
1600: LIST
1601: LIST
1602: LIST
1603: PUSH
1604: LD_INT 3
1606: PUSH
1607: LD_INT 3
1609: PUSH
1610: LD_INT 1
1612: PUSH
1613: LD_INT 12
1615: PUSH
1616: EMPTY
1617: LIST
1618: LIST
1619: LIST
1620: LIST
1621: PUSH
1622: LD_INT 3
1624: PUSH
1625: LD_INT 3
1627: PUSH
1628: LD_INT 1
1630: PUSH
1631: LD_INT 4
1633: PUSH
1634: EMPTY
1635: LIST
1636: LIST
1637: LIST
1638: LIST
1639: PUSH
1640: LD_INT 3
1642: PUSH
1643: LD_INT 1
1645: PUSH
1646: LD_INT 1
1648: PUSH
1649: LD_INT 7
1651: PUSH
1652: EMPTY
1653: LIST
1654: LIST
1655: LIST
1656: LIST
1657: PUSH
1658: LD_INT 4
1660: PUSH
1661: LD_INT 1
1663: PUSH
1664: LD_INT 1
1666: PUSH
1667: LD_INT 7
1669: PUSH
1670: EMPTY
1671: LIST
1672: LIST
1673: LIST
1674: LIST
1675: PUSH
1676: LD_INT 24
1678: PUSH
1679: LD_INT 3
1681: PUSH
1682: LD_INT 1
1684: PUSH
1685: LD_INT 53
1687: PUSH
1688: EMPTY
1689: LIST
1690: LIST
1691: LIST
1692: LIST
1693: PUSH
1694: LD_INT 4
1696: PUSH
1697: LD_INT 1
1699: PUSH
1700: LD_INT 1
1702: PUSH
1703: LD_INT 5
1705: PUSH
1706: EMPTY
1707: LIST
1708: LIST
1709: LIST
1710: LIST
1711: PUSH
1712: EMPTY
1713: LIST
1714: LIST
1715: LIST
1716: LIST
1717: LIST
1718: LIST
1719: LIST
1720: LIST
1721: ST_TO_ADDR
// uc_side := you ;
1722: LD_ADDR_OWVAR 20
1726: PUSH
1727: LD_EXP 1
1731: ST_TO_ADDR
// for vehicle in vehicle_list do
1732: LD_ADDR_VAR 0 2
1736: PUSH
1737: LD_LOC 6
1741: PUSH
1742: FOR_IN
1743: IFFALSE 1904
// begin if vehicle [ 1 ] in [ ru_medium_wheeled , ru_medium_tracked , ru_heavy_wheeled , ru_heavy_tracked ] then
1745: LD_VAR 0 2
1749: PUSH
1750: LD_INT 1
1752: ARRAY
1753: PUSH
1754: LD_INT 21
1756: PUSH
1757: LD_INT 22
1759: PUSH
1760: LD_INT 23
1762: PUSH
1763: LD_INT 24
1765: PUSH
1766: EMPTY
1767: LIST
1768: LIST
1769: LIST
1770: LIST
1771: IN
1772: IFFALSE 1784
// uc_nation := nation_russian else
1774: LD_ADDR_OWVAR 21
1778: PUSH
1779: LD_INT 3
1781: ST_TO_ADDR
1782: GO 1792
// uc_nation := nation_american ;
1784: LD_ADDR_OWVAR 21
1788: PUSH
1789: LD_INT 1
1791: ST_TO_ADDR
// uc_direction := Rand ( 0 , 5 ) ;
1792: LD_ADDR_OWVAR 24
1796: PUSH
1797: LD_INT 0
1799: PPUSH
1800: LD_INT 5
1802: PPUSH
1803: CALL_OW 12
1807: ST_TO_ADDR
// vc_chassis := vehicle [ 1 ] ;
1808: LD_ADDR_OWVAR 37
1812: PUSH
1813: LD_VAR 0 2
1817: PUSH
1818: LD_INT 1
1820: ARRAY
1821: ST_TO_ADDR
// vc_engine := [ engine_combustion , engine_siberite ] [ Rand ( 1 , 2 ) ] ;
1822: LD_ADDR_OWVAR 39
1826: PUSH
1827: LD_INT 1
1829: PUSH
1830: LD_INT 3
1832: PUSH
1833: EMPTY
1834: LIST
1835: LIST
1836: PUSH
1837: LD_INT 1
1839: PPUSH
1840: LD_INT 2
1842: PPUSH
1843: CALL_OW 12
1847: ARRAY
1848: ST_TO_ADDR
// vc_control := vehicle [ 3 ] ;
1849: LD_ADDR_OWVAR 38
1853: PUSH
1854: LD_VAR 0 2
1858: PUSH
1859: LD_INT 3
1861: ARRAY
1862: ST_TO_ADDR
// vc_weapon := vehicle [ 4 ] ;
1863: LD_ADDR_OWVAR 40
1867: PUSH
1868: LD_VAR 0 2
1872: PUSH
1873: LD_INT 4
1875: ARRAY
1876: ST_TO_ADDR
// un := CreateVehicle ;
1877: LD_ADDR_VAR 0 3
1881: PUSH
1882: CALL_OW 45
1886: ST_TO_ADDR
// PlaceUnitArea ( un , base , false ) ;
1887: LD_VAR 0 3
1891: PPUSH
1892: LD_INT 3
1894: PPUSH
1895: LD_INT 0
1897: PPUSH
1898: CALL_OW 49
// end ;
1902: GO 1742
1904: POP
1905: POP
// end ; end_of_file
1906: LD_VAR 0 1
1910: RET
// on UnitDestroyed ( un ) do begin if un = MacMillan then
1911: LD_VAR 0 1
1915: PUSH
1916: LD_EXP 2
1920: EQUAL
1921: IFFALSE 1930
// Mission_Failed ( 1 ) ;
1923: LD_INT 1
1925: PPUSH
1926: CALL 1952 0 1
// if un = Burlak then
1930: LD_VAR 0 1
1934: PUSH
1935: LD_EXP 3
1939: EQUAL
1940: IFFALSE 1949
// Mission_Failed ( 2 ) end ;
1942: LD_INT 2
1944: PPUSH
1945: CALL 1952 0 1
1949: PPOPN 1
1951: END
// function Mission_Failed ( un ) ; begin
1952: LD_INT 0
1954: PPUSH
// case un of 1 :
1955: LD_VAR 0 1
1959: PUSH
1960: LD_INT 1
1962: DOUBLE
1963: EQUAL
1964: IFTRUE 1968
1966: GO 1978
1968: POP
// YouLost ( JMM ) ; 2 :
1969: LD_STRING JMM
1971: PPUSH
1972: CALL_OW 104
1976: GO 1997
1978: LD_INT 2
1980: DOUBLE
1981: EQUAL
1982: IFTRUE 1986
1984: GO 1996
1986: POP
// YouLost ( Burlak ) ; end ;
1987: LD_STRING Burlak
1989: PPUSH
1990: CALL_OW 104
1994: GO 1997
1996: POP
// end ; end_of_file
1997: LD_VAR 0 2
2001: RET
// every 0 0$2 trigger GetClass ( MacMillan ) <> class_engineer do
2002: LD_EXP 2
2006: PPUSH
2007: CALL_OW 257
2011: PUSH
2012: LD_INT 2
2014: NONEQUAL
2015: IFFALSE 2025
2017: GO 2019
2019: DISABLE
// begin MacMillan_To_Engineer ;
2020: CALL 2026 0 0
// enable ;
2024: ENABLE
// end ;
2025: END
// function MacMillan_To_Engineer ; var depot ; begin
2026: LD_INT 0
2028: PPUSH
2029: PPUSH
// depot := FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) ;
2030: LD_ADDR_VAR 0 2
2034: PUSH
2035: LD_INT 2
2037: PUSH
2038: LD_INT 30
2040: PUSH
2041: LD_INT 0
2043: PUSH
2044: EMPTY
2045: LIST
2046: LIST
2047: PUSH
2048: LD_INT 30
2050: PUSH
2051: LD_INT 1
2053: PUSH
2054: EMPTY
2055: LIST
2056: LIST
2057: PUSH
2058: EMPTY
2059: LIST
2060: LIST
2061: LIST
2062: PPUSH
2063: CALL_OW 69
2067: ST_TO_ADDR
// if depot then
2068: LD_VAR 0 2
2072: IFFALSE 2201
// begin depot := depot [ 1 ] ;
2074: LD_ADDR_VAR 0 2
2078: PUSH
2079: LD_VAR 0 2
2083: PUSH
2084: LD_INT 1
2086: ARRAY
2087: ST_TO_ADDR
// InGameOn ;
2088: CALL_OW 8
// if IsInUnit ( MacMillan ) then
2092: LD_EXP 2
2096: PPUSH
2097: CALL_OW 310
2101: IFFALSE 2112
// ComExitBuilding ( MacMillan ) ;
2103: LD_EXP 2
2107: PPUSH
2108: CALL_OW 122
// while GetClass ( MacMillan ) <> class_engineer do
2112: LD_EXP 2
2116: PPUSH
2117: CALL_OW 257
2121: PUSH
2122: LD_INT 2
2124: NONEQUAL
2125: IFFALSE 2197
// begin CenterOnUnits ( MacMillan ) ;
2127: LD_EXP 2
2131: PPUSH
2132: CALL_OW 85
// ComEnterUnit ( MacMillan , depot ) ;
2136: LD_EXP 2
2140: PPUSH
2141: LD_VAR 0 2
2145: PPUSH
2146: CALL_OW 120
// if IsInUnit ( MacMillan ) = depot then
2150: LD_EXP 2
2154: PPUSH
2155: CALL_OW 310
2159: PUSH
2160: LD_VAR 0 2
2164: EQUAL
2165: IFFALSE 2188
// begin ComChangeProfession ( MacMillan , class_engineer ) ;
2167: LD_EXP 2
2171: PPUSH
2172: LD_INT 2
2174: PPUSH
2175: CALL_OW 123
// AddComExitBuilding ( MacMillan ) ;
2179: LD_EXP 2
2183: PPUSH
2184: CALL_OW 182
// end ; wait ( 0 0$1 ) ;
2188: LD_INT 35
2190: PPUSH
2191: CALL_OW 67
// end ;
2195: GO 2112
// InGameOff ;
2197: CALL_OW 9
// end ; enable ;
2201: ENABLE
// end ;
2202: LD_VAR 0 1
2206: RET
// every 0 0$2 trigger GetClass ( Burlak ) <> class_mechanic do var factory ;
2207: LD_EXP 3
2211: PPUSH
2212: CALL_OW 257
2216: PUSH
2217: LD_INT 3
2219: NONEQUAL
2220: IFFALSE 2400
2222: GO 2224
2224: DISABLE
2225: LD_INT 0
2227: PPUSH
// begin factory := FilterAllUnits ( [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ) ;
2228: LD_ADDR_VAR 0 1
2232: PUSH
2233: LD_INT 2
2235: PUSH
2236: LD_INT 30
2238: PUSH
2239: LD_INT 2
2241: PUSH
2242: EMPTY
2243: LIST
2244: LIST
2245: PUSH
2246: LD_INT 30
2248: PUSH
2249: LD_INT 3
2251: PUSH
2252: EMPTY
2253: LIST
2254: LIST
2255: PUSH
2256: EMPTY
2257: LIST
2258: LIST
2259: LIST
2260: PPUSH
2261: CALL_OW 69
2265: ST_TO_ADDR
// if factory then
2266: LD_VAR 0 1
2270: IFFALSE 2399
// begin factory := factory [ 1 ] ;
2272: LD_ADDR_VAR 0 1
2276: PUSH
2277: LD_VAR 0 1
2281: PUSH
2282: LD_INT 1
2284: ARRAY
2285: ST_TO_ADDR
// InGameOn ;
2286: CALL_OW 8
// if IsInUnit ( Burlak ) then
2290: LD_EXP 3
2294: PPUSH
2295: CALL_OW 310
2299: IFFALSE 2310
// ComExitBuilding ( Burlak ) ;
2301: LD_EXP 3
2305: PPUSH
2306: CALL_OW 122
// while GetClass ( Burlak ) <> class_mechanic do
2310: LD_EXP 3
2314: PPUSH
2315: CALL_OW 257
2319: PUSH
2320: LD_INT 3
2322: NONEQUAL
2323: IFFALSE 2395
// begin CenterOnUnits ( Burlak ) ;
2325: LD_EXP 3
2329: PPUSH
2330: CALL_OW 85
// ComEnterUnit ( Burlak , factory ) ;
2334: LD_EXP 3
2338: PPUSH
2339: LD_VAR 0 1
2343: PPUSH
2344: CALL_OW 120
// if IsInUnit ( Burlak ) = factory then
2348: LD_EXP 3
2352: PPUSH
2353: CALL_OW 310
2357: PUSH
2358: LD_VAR 0 1
2362: EQUAL
2363: IFFALSE 2386
// begin ComChangeProfession ( Burlak , class_mechanic ) ;
2365: LD_EXP 3
2369: PPUSH
2370: LD_INT 3
2372: PPUSH
2373: CALL_OW 123
// AddComExitBuilding ( Burlak ) ;
2377: LD_EXP 3
2381: PPUSH
2382: CALL_OW 182
// end ; wait ( 0 0$1 ) ;
2386: LD_INT 35
2388: PPUSH
2389: CALL_OW 67
// end ;
2393: GO 2310
// InGameOff ;
2395: CALL_OW 9
// end ; enable ;
2399: ENABLE
// end ;
2400: PPOPN 1
2402: END
// every 0 0$2 do var build ;
2403: GO 2405
2405: DISABLE
2406: LD_INT 0
2408: PPUSH
// begin build := FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ) ;
2409: LD_ADDR_VAR 0 1
2413: PUSH
2414: LD_INT 2
2416: PUSH
2417: LD_INT 30
2419: PUSH
2420: LD_INT 0
2422: PUSH
2423: EMPTY
2424: LIST
2425: LIST
2426: PUSH
2427: LD_INT 30
2429: PUSH
2430: LD_INT 1
2432: PUSH
2433: EMPTY
2434: LIST
2435: LIST
2436: PUSH
2437: EMPTY
2438: LIST
2439: LIST
2440: LIST
2441: PPUSH
2442: CALL_OW 69
2446: ST_TO_ADDR
// if build then
2447: LD_VAR 0 1
2451: IFFALSE 2581
// begin build := build [ 1 ] ;
2453: LD_ADDR_VAR 0 1
2457: PUSH
2458: LD_VAR 0 1
2462: PUSH
2463: LD_INT 1
2465: ARRAY
2466: ST_TO_ADDR
// if GetLives ( build ) < 800 then
2467: LD_VAR 0 1
2471: PPUSH
2472: CALL_OW 256
2476: PUSH
2477: LD_INT 800
2479: LESS
2480: IFFALSE 2581
// begin ComExitVehicle ( [ Burlak , MacMillan ] ) ;
2482: LD_EXP 3
2486: PUSH
2487: LD_EXP 2
2491: PUSH
2492: EMPTY
2493: LIST
2494: LIST
2495: PPUSH
2496: CALL_OW 121
// interface_hidden := true ;
2500: LD_ADDR_OWVAR 54
2504: PUSH
2505: LD_INT 1
2507: ST_TO_ADDR
// if GetClass ( MacMillan ) <> class_engineer then
2508: LD_EXP 2
2512: PPUSH
2513: CALL_OW 257
2517: PUSH
2518: LD_INT 2
2520: NONEQUAL
2521: IFFALSE 2527
// MacMillan_To_Engineer ;
2523: CALL 2026 0 0
// InGameOn ;
2527: CALL_OW 8
// while GetLives ( build ) < 1000 do
2531: LD_VAR 0 1
2535: PPUSH
2536: CALL_OW 256
2540: PUSH
2541: LD_INT 1000
2543: LESS
2544: IFFALSE 2569
// begin ComRepairBuilding ( MacMillan , build ) ;
2546: LD_EXP 2
2550: PPUSH
2551: LD_VAR 0 1
2555: PPUSH
2556: CALL_OW 130
// wait ( 0 0$1 ) ;
2560: LD_INT 35
2562: PPUSH
2563: CALL_OW 67
// end ;
2567: GO 2531
// InGameOff ;
2569: CALL_OW 9
// interface_hidden := false ;
2573: LD_ADDR_OWVAR 54
2577: PUSH
2578: LD_INT 0
2580: ST_TO_ADDR
// end ; end ; build := FilterAllUnits ( [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ) ;
2581: LD_ADDR_VAR 0 1
2585: PUSH
2586: LD_INT 2
2588: PUSH
2589: LD_INT 30
2591: PUSH
2592: LD_INT 2
2594: PUSH
2595: EMPTY
2596: LIST
2597: LIST
2598: PUSH
2599: LD_INT 30
2601: PUSH
2602: LD_INT 3
2604: PUSH
2605: EMPTY
2606: LIST
2607: LIST
2608: PUSH
2609: EMPTY
2610: LIST
2611: LIST
2612: LIST
2613: PPUSH
2614: CALL_OW 69
2618: ST_TO_ADDR
// if build then
2619: LD_VAR 0 1
2623: IFFALSE 2753
// begin build := build [ 1 ] ;
2625: LD_ADDR_VAR 0 1
2629: PUSH
2630: LD_VAR 0 1
2634: PUSH
2635: LD_INT 1
2637: ARRAY
2638: ST_TO_ADDR
// if GetLives ( build ) < 800 then
2639: LD_VAR 0 1
2643: PPUSH
2644: CALL_OW 256
2648: PUSH
2649: LD_INT 800
2651: LESS
2652: IFFALSE 2753
// begin ComExitVehicle ( [ Burlak , MacMillan ] ) ;
2654: LD_EXP 3
2658: PUSH
2659: LD_EXP 2
2663: PUSH
2664: EMPTY
2665: LIST
2666: LIST
2667: PPUSH
2668: CALL_OW 121
// interface_hidden := true ;
2672: LD_ADDR_OWVAR 54
2676: PUSH
2677: LD_INT 1
2679: ST_TO_ADDR
// if GetClass ( MacMillan ) <> class_engineer then
2680: LD_EXP 2
2684: PPUSH
2685: CALL_OW 257
2689: PUSH
2690: LD_INT 2
2692: NONEQUAL
2693: IFFALSE 2699
// MacMillan_To_Engineer ;
2695: CALL 2026 0 0
// InGameOn ;
2699: CALL_OW 8
// while GetLives ( build ) < 1000 do
2703: LD_VAR 0 1
2707: PPUSH
2708: CALL_OW 256
2712: PUSH
2713: LD_INT 1000
2715: LESS
2716: IFFALSE 2741
// begin ComRepairBuilding ( MacMillan , build ) ;
2718: LD_EXP 2
2722: PPUSH
2723: LD_VAR 0 1
2727: PPUSH
2728: CALL_OW 130
// wait ( 0 0$1 ) ;
2732: LD_INT 35
2734: PPUSH
2735: CALL_OW 67
// end ;
2739: GO 2703
// InGameOff ;
2741: CALL_OW 9
// interface_hidden := false ;
2745: LD_ADDR_OWVAR 54
2749: PUSH
2750: LD_INT 0
2752: ST_TO_ADDR
// end ; end ; enable ;
2753: ENABLE
// end ; end_of_file
2754: PPOPN 1
2756: END
// export function SA_EndMission ( campaignNumber , missionNumber , medal1 , medal2 , medal3 ) ; var achiv ; begin
2757: LD_INT 0
2759: PPUSH
2760: PPUSH
// if not missionNumber then
2761: LD_VAR 0 2
2765: NOT
2766: IFFALSE 2770
// exit ;
2768: GO 2900
// achiv := false ;
2770: LD_ADDR_VAR 0 7
2774: PUSH
2775: LD_INT 0
2777: ST_TO_ADDR
// case campaignNumber of 1 :
2778: LD_VAR 0 1
2782: PUSH
2783: LD_INT 1
2785: DOUBLE
2786: EQUAL
2787: IFTRUE 2791
2789: GO 2802
2791: POP
// achiv := ACH_GOTA ; 2 :
2792: LD_ADDR_VAR 0 7
2796: PUSH
2797: LD_STRING ACH_GOTA
2799: ST_TO_ADDR
2800: GO 2852
2802: LD_INT 2
2804: DOUBLE
2805: EQUAL
2806: IFTRUE 2810
2808: GO 2813
2810: POP
// ; 3 :
2811: GO 2852
2813: LD_INT 3
2815: DOUBLE
2816: EQUAL
2817: IFTRUE 2821
2819: GO 2832
2821: POP
// achiv := ACH_MOTSU ; 4 :
2822: LD_ADDR_VAR 0 7
2826: PUSH
2827: LD_STRING ACH_MOTSU
2829: ST_TO_ADDR
2830: GO 2852
2832: LD_INT 4
2834: DOUBLE
2835: EQUAL
2836: IFTRUE 2840
2838: GO 2851
2840: POP
// achiv := ACH_LOP ; end ;
2841: LD_ADDR_VAR 0 7
2845: PUSH
2846: LD_STRING ACH_LOP
2848: ST_TO_ADDR
2849: GO 2852
2851: POP
// if Difficulty = 3 and achiv and medal1 and medal2 and medal3 then
2852: LD_OWVAR 67
2856: PUSH
2857: LD_INT 3
2859: EQUAL
2860: PUSH
2861: LD_VAR 0 7
2865: AND
2866: PUSH
2867: LD_VAR 0 3
2871: AND
2872: PUSH
2873: LD_VAR 0 4
2877: AND
2878: PUSH
2879: LD_VAR 0 5
2883: AND
2884: IFFALSE 2900
// SetAchievementEX ( achiv , missionNumber ) ;
2886: LD_VAR 0 7
2890: PPUSH
2891: LD_VAR 0 2
2895: PPUSH
2896: CALL_OW 564
// end ;
2900: LD_VAR 0 6
2904: RET
// export function SA_BehemothConstructed ; begin
2905: LD_INT 0
2907: PPUSH
// SetAchievement ( ACH_SMC ) ;
2908: LD_STRING ACH_SMC
2910: PPUSH
2911: CALL_OW 543
// end ;
2915: LD_VAR 0 1
2919: RET
// on CustomCommand ( p1 , p2 , p3 , p4 , p5 , p6 ) do begin case p2 of 1 :
2920: LD_VAR 0 2
2924: PUSH
2925: LD_INT 1
2927: DOUBLE
2928: EQUAL
2929: IFTRUE 2933
2931: GO 2940
2933: POP
// HackUnlimitedResources ; 2 :
2934: CALL 3124 0 0
2938: GO 3121
2940: LD_INT 2
2942: DOUBLE
2943: EQUAL
2944: IFTRUE 2948
2946: GO 2955
2948: POP
// HackSetLevel10 ; 3 :
2949: CALL 3257 0 0
2953: GO 3121
2955: LD_INT 3
2957: DOUBLE
2958: EQUAL
2959: IFTRUE 2963
2961: GO 2970
2963: POP
// HackSetLevel10YourUnits ; 4 :
2964: CALL 3342 0 0
2968: GO 3121
2970: LD_INT 4
2972: DOUBLE
2973: EQUAL
2974: IFTRUE 2978
2976: GO 3000
2978: POP
// HackSpawnHuman ( p3 , p4 , p5 ) ; 5 :
2979: LD_VAR 0 3
2983: PPUSH
2984: LD_VAR 0 4
2988: PPUSH
2989: LD_VAR 0 5
2993: PPUSH
2994: CALL 3432 0 3
2998: GO 3121
3000: LD_INT 5
3002: DOUBLE
3003: EQUAL
3004: IFTRUE 3008
3006: GO 3015
3008: POP
// HackSpawnVehicle ; 6 :
3009: CALL 3493 0 0
3013: GO 3121
3015: LD_INT 6
3017: DOUBLE
3018: EQUAL
3019: IFTRUE 3023
3021: GO 3030
3023: POP
// HackInvincible ; 7 :
3024: CALL 4039 0 0
3028: GO 3121
3030: LD_INT 7
3032: DOUBLE
3033: EQUAL
3034: IFTRUE 3038
3036: GO 3045
3038: POP
// HackInvisible ; 8 :
3039: CALL 4150 0 0
3043: GO 3121
3045: LD_INT 8
3047: DOUBLE
3048: EQUAL
3049: IFTRUE 3053
3051: GO 3060
3053: POP
// HackChangeYourSide ; 9 :
3054: CALL 4207 0 0
3058: GO 3121
3060: LD_INT 9
3062: DOUBLE
3063: EQUAL
3064: IFTRUE 3068
3066: GO 3075
3068: POP
// HackChangeUnitSide ; 10 :
3069: CALL 4249 0 0
3073: GO 3121
3075: LD_INT 10
3077: DOUBLE
3078: EQUAL
3079: IFTRUE 3083
3081: GO 3090
3083: POP
// HackFog ; 11 :
3084: CALL 4350 0 0
3088: GO 3121
3090: LD_INT 11
3092: DOUBLE
3093: EQUAL
3094: IFTRUE 3098
3096: GO 3105
3098: POP
// HackApeman ; 12 :
3099: CALL 4365 0 0
3103: GO 3121
3105: LD_INT 12
3107: DOUBLE
3108: EQUAL
3109: IFTRUE 3113
3111: GO 3120
3113: POP
// HackBoom ; end ;
3114: CALL 4450 0 0
3118: GO 3121
3120: POP
// end ;
3121: PPOPN 6
3123: END
// export function HackUnlimitedResources ; var i , j , tmp ; begin
3124: LD_INT 0
3126: PPUSH
3127: PPUSH
3128: PPUSH
3129: PPUSH
// tmp := FilterAllUnits ( [ [ f_side , your_side ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ) ;
3130: LD_ADDR_VAR 0 4
3134: PUSH
3135: LD_INT 22
3137: PUSH
3138: LD_OWVAR 2
3142: PUSH
3143: EMPTY
3144: LIST
3145: LIST
3146: PUSH
3147: LD_INT 2
3149: PUSH
3150: LD_INT 30
3152: PUSH
3153: LD_INT 0
3155: PUSH
3156: EMPTY
3157: LIST
3158: LIST
3159: PUSH
3160: LD_INT 30
3162: PUSH
3163: LD_INT 1
3165: PUSH
3166: EMPTY
3167: LIST
3168: LIST
3169: PUSH
3170: EMPTY
3171: LIST
3172: LIST
3173: LIST
3174: PUSH
3175: EMPTY
3176: LIST
3177: LIST
3178: PPUSH
3179: CALL_OW 69
3183: ST_TO_ADDR
// if not tmp then
3184: LD_VAR 0 4
3188: NOT
3189: IFFALSE 3193
// exit ;
3191: GO 3252
// for i in tmp do
3193: LD_ADDR_VAR 0 2
3197: PUSH
3198: LD_VAR 0 4
3202: PUSH
3203: FOR_IN
3204: IFFALSE 3250
// for j = 1 to 3 do
3206: LD_ADDR_VAR 0 3
3210: PUSH
3211: DOUBLE
3212: LD_INT 1
3214: DEC
3215: ST_TO_ADDR
3216: LD_INT 3
3218: PUSH
3219: FOR_TO
3220: IFFALSE 3246
// SetResourceType ( GetBase ( i ) , j , 99999 ) ;
3222: LD_VAR 0 2
3226: PPUSH
3227: CALL_OW 274
3231: PPUSH
3232: LD_VAR 0 3
3236: PPUSH
3237: LD_INT 99999
3239: PPUSH
3240: CALL_OW 277
3244: GO 3219
3246: POP
3247: POP
3248: GO 3203
3250: POP
3251: POP
// end ;
3252: LD_VAR 0 1
3256: RET
// export function HackSetLevel10 ; var i , j ; begin
3257: LD_INT 0
3259: PPUSH
3260: PPUSH
3261: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
3262: LD_ADDR_VAR 0 2
3266: PUSH
3267: LD_INT 21
3269: PUSH
3270: LD_INT 1
3272: PUSH
3273: EMPTY
3274: LIST
3275: LIST
3276: PPUSH
3277: CALL_OW 69
3281: PUSH
3282: FOR_IN
3283: IFFALSE 3335
// if IsSelected ( i ) then
3285: LD_VAR 0 2
3289: PPUSH
3290: CALL_OW 306
3294: IFFALSE 3333
// begin for j := 1 to 4 do
3296: LD_ADDR_VAR 0 3
3300: PUSH
3301: DOUBLE
3302: LD_INT 1
3304: DEC
3305: ST_TO_ADDR
3306: LD_INT 4
3308: PUSH
3309: FOR_TO
3310: IFFALSE 3331
// SetSkill ( i , j , 10 ) ;
3312: LD_VAR 0 2
3316: PPUSH
3317: LD_VAR 0 3
3321: PPUSH
3322: LD_INT 10
3324: PPUSH
3325: CALL_OW 237
3329: GO 3309
3331: POP
3332: POP
// end ;
3333: GO 3282
3335: POP
3336: POP
// end ;
3337: LD_VAR 0 1
3341: RET
// export function HackSetLevel10YourUnits ; var i , j ; begin
3342: LD_INT 0
3344: PPUSH
3345: PPUSH
3346: PPUSH
// for i in FilterAllUnits ( [ [ f_side , your_side ] , [ f_type , unit_human ] ] ) do
3347: LD_ADDR_VAR 0 2
3351: PUSH
3352: LD_INT 22
3354: PUSH
3355: LD_OWVAR 2
3359: PUSH
3360: EMPTY
3361: LIST
3362: LIST
3363: PUSH
3364: LD_INT 21
3366: PUSH
3367: LD_INT 1
3369: PUSH
3370: EMPTY
3371: LIST
3372: LIST
3373: PUSH
3374: EMPTY
3375: LIST
3376: LIST
3377: PPUSH
3378: CALL_OW 69
3382: PUSH
3383: FOR_IN
3384: IFFALSE 3425
// begin for j := 1 to 4 do
3386: LD_ADDR_VAR 0 3
3390: PUSH
3391: DOUBLE
3392: LD_INT 1
3394: DEC
3395: ST_TO_ADDR
3396: LD_INT 4
3398: PUSH
3399: FOR_TO
3400: IFFALSE 3421
// SetSkill ( i , j , 10 ) ;
3402: LD_VAR 0 2
3406: PPUSH
3407: LD_VAR 0 3
3411: PPUSH
3412: LD_INT 10
3414: PPUSH
3415: CALL_OW 237
3419: GO 3399
3421: POP
3422: POP
// end ;
3423: GO 3383
3425: POP
3426: POP
// end ;
3427: LD_VAR 0 1
3431: RET
// export function HackSpawnHuman ( nation , class , skill ) ; begin
3432: LD_INT 0
3434: PPUSH
// uc_side := your_side ;
3435: LD_ADDR_OWVAR 20
3439: PUSH
3440: LD_OWVAR 2
3444: ST_TO_ADDR
// uc_nation := nation ;
3445: LD_ADDR_OWVAR 21
3449: PUSH
3450: LD_VAR 0 1
3454: ST_TO_ADDR
// InitHc ;
3455: CALL_OW 19
// PrepareHuman ( false , class , skill ) ;
3459: LD_INT 0
3461: PPUSH
3462: LD_VAR 0 2
3466: PPUSH
3467: LD_VAR 0 3
3471: PPUSH
3472: CALL_OW 380
// PlaceUnitAnywhere ( CreateHuman , true ) ;
3476: CALL_OW 44
3480: PPUSH
3481: LD_INT 1
3483: PPUSH
3484: CALL_OW 51
// end ;
3488: LD_VAR 0 4
3492: RET
// export function HackSpawnVehicle ; begin
3493: LD_INT 0
3495: PPUSH
// uc_side := your_side ;
3496: LD_ADDR_OWVAR 20
3500: PUSH
3501: LD_OWVAR 2
3505: ST_TO_ADDR
// uc_nation := rand ( 1 , 3 ) ;
3506: LD_ADDR_OWVAR 21
3510: PUSH
3511: LD_INT 1
3513: PPUSH
3514: LD_INT 3
3516: PPUSH
3517: CALL_OW 12
3521: ST_TO_ADDR
// InitVc ;
3522: CALL_OW 20
// case uc_nation of 1 :
3526: LD_OWVAR 21
3530: PUSH
3531: LD_INT 1
3533: DOUBLE
3534: EQUAL
3535: IFTRUE 3539
3537: GO 3683
3539: POP
// begin vc_chassis := [ us_light_wheeled , us_medium_wheeled , us_medium_tracked , us_heavy_tracked , us_morphling ] [ rand ( 1 , 5 ) ] ;
3540: LD_ADDR_OWVAR 37
3544: PUSH
3545: LD_INT 1
3547: PUSH
3548: LD_INT 2
3550: PUSH
3551: LD_INT 3
3553: PUSH
3554: LD_INT 4
3556: PUSH
3557: LD_INT 5
3559: PUSH
3560: EMPTY
3561: LIST
3562: LIST
3563: LIST
3564: LIST
3565: LIST
3566: PUSH
3567: LD_INT 1
3569: PPUSH
3570: LD_INT 5
3572: PPUSH
3573: CALL_OW 12
3577: ARRAY
3578: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3579: LD_ADDR_OWVAR 39
3583: PUSH
3584: LD_INT 1
3586: PPUSH
3587: LD_INT 3
3589: PPUSH
3590: CALL_OW 12
3594: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_computer ] [ rand ( 1 , 3 ) ] ;
3595: LD_ADDR_OWVAR 38
3599: PUSH
3600: LD_INT 1
3602: PUSH
3603: LD_INT 2
3605: PUSH
3606: LD_INT 3
3608: PUSH
3609: EMPTY
3610: LIST
3611: LIST
3612: LIST
3613: PUSH
3614: LD_INT 1
3616: PPUSH
3617: LD_INT 3
3619: PPUSH
3620: CALL_OW 12
3624: ARRAY
3625: 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 ) ] ;
3626: LD_ADDR_OWVAR 40
3630: PUSH
3631: LD_INT 2
3633: PUSH
3634: LD_INT 4
3636: PUSH
3637: LD_INT 5
3639: PUSH
3640: LD_INT 3
3642: PUSH
3643: LD_INT 7
3645: PUSH
3646: LD_INT 8
3648: PUSH
3649: LD_INT 9
3651: PUSH
3652: LD_INT 10
3654: PUSH
3655: LD_INT 6
3657: PUSH
3658: EMPTY
3659: LIST
3660: LIST
3661: LIST
3662: LIST
3663: LIST
3664: LIST
3665: LIST
3666: LIST
3667: LIST
3668: PUSH
3669: LD_INT 1
3671: PPUSH
3672: LD_INT 9
3674: PPUSH
3675: CALL_OW 12
3679: ARRAY
3680: ST_TO_ADDR
// end ; 2 :
3681: GO 3948
3683: LD_INT 2
3685: DOUBLE
3686: EQUAL
3687: IFTRUE 3691
3689: GO 3815
3691: POP
// begin vc_chassis := [ ar_hovercraft , ar_light_trike , ar_medium_trike , ar_half_tracked ] [ rand ( 1 , 4 ) ] ;
3692: LD_ADDR_OWVAR 37
3696: PUSH
3697: LD_INT 11
3699: PUSH
3700: LD_INT 12
3702: PUSH
3703: LD_INT 13
3705: PUSH
3706: LD_INT 14
3708: PUSH
3709: EMPTY
3710: LIST
3711: LIST
3712: LIST
3713: LIST
3714: PUSH
3715: LD_INT 1
3717: PPUSH
3718: LD_INT 4
3720: PPUSH
3721: CALL_OW 12
3725: ARRAY
3726: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3727: LD_ADDR_OWVAR 39
3731: PUSH
3732: LD_INT 1
3734: PPUSH
3735: LD_INT 3
3737: PPUSH
3738: CALL_OW 12
3742: ST_TO_ADDR
// vc_control := [ control_manual , control_remote , control_apeman ] [ rand ( 1 , 3 ) ] ;
3743: LD_ADDR_OWVAR 38
3747: PUSH
3748: LD_INT 1
3750: PUSH
3751: LD_INT 2
3753: PUSH
3754: LD_INT 5
3756: PUSH
3757: EMPTY
3758: LIST
3759: LIST
3760: LIST
3761: PUSH
3762: LD_INT 1
3764: PPUSH
3765: LD_INT 3
3767: PPUSH
3768: CALL_OW 12
3772: ARRAY
3773: ST_TO_ADDR
// vc_weapon := [ ar_double_machine_gun , ar_flame_thrower , ar_gun , ar_rocket_launcher , ar_selfpropelled_bomb ] [ rand ( 1 , 5 ) ] ;
3774: LD_ADDR_OWVAR 40
3778: PUSH
3779: LD_INT 24
3781: PUSH
3782: LD_INT 26
3784: PUSH
3785: LD_INT 27
3787: PUSH
3788: LD_INT 28
3790: PUSH
3791: LD_INT 29
3793: PUSH
3794: EMPTY
3795: LIST
3796: LIST
3797: LIST
3798: LIST
3799: LIST
3800: PUSH
3801: LD_INT 1
3803: PPUSH
3804: LD_INT 5
3806: PPUSH
3807: CALL_OW 12
3811: ARRAY
3812: ST_TO_ADDR
// end ; 3 :
3813: GO 3948
3815: LD_INT 3
3817: DOUBLE
3818: EQUAL
3819: IFTRUE 3823
3821: GO 3947
3823: POP
// begin vc_chassis := [ ru_medium_wheeled , ru_heavy_wheeled , ru_medium_tracked , ru_heavy_tracked ] [ rand ( 1 , 4 ) ] ;
3824: LD_ADDR_OWVAR 37
3828: PUSH
3829: LD_INT 21
3831: PUSH
3832: LD_INT 23
3834: PUSH
3835: LD_INT 22
3837: PUSH
3838: LD_INT 24
3840: PUSH
3841: EMPTY
3842: LIST
3843: LIST
3844: LIST
3845: LIST
3846: PUSH
3847: LD_INT 1
3849: PPUSH
3850: LD_INT 4
3852: PPUSH
3853: CALL_OW 12
3857: ARRAY
3858: ST_TO_ADDR
// vc_engine := rand ( 1 , 3 ) ;
3859: LD_ADDR_OWVAR 39
3863: PUSH
3864: LD_INT 1
3866: PPUSH
3867: LD_INT 3
3869: PPUSH
3870: CALL_OW 12
3874: ST_TO_ADDR
// vc_control := [ control_manual , control_computer ] [ rand ( 1 , 2 ) ] ;
3875: LD_ADDR_OWVAR 38
3879: PUSH
3880: LD_INT 1
3882: PUSH
3883: LD_INT 3
3885: PUSH
3886: EMPTY
3887: LIST
3888: LIST
3889: PUSH
3890: LD_INT 1
3892: PPUSH
3893: LD_INT 2
3895: PPUSH
3896: CALL_OW 12
3900: ARRAY
3901: 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 ) ] ;
3902: LD_ADDR_OWVAR 40
3906: PUSH
3907: LD_INT 42
3909: PUSH
3910: LD_INT 43
3912: PUSH
3913: LD_INT 44
3915: PUSH
3916: LD_INT 46
3918: PUSH
3919: LD_INT 48
3921: PUSH
3922: LD_INT 47
3924: PUSH
3925: EMPTY
3926: LIST
3927: LIST
3928: LIST
3929: LIST
3930: LIST
3931: LIST
3932: PUSH
3933: LD_INT 1
3935: PPUSH
3936: LD_INT 6
3938: PPUSH
3939: CALL_OW 12
3943: ARRAY
3944: ST_TO_ADDR
// end ; end ;
3945: GO 3948
3947: POP
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
3948: CALL_OW 45
3952: PPUSH
3953: LD_INT 1
3955: PPUSH
3956: CALL_OW 51
// end ;
3960: LD_VAR 0 1
3964: RET
// export invincible ; every 1 do
3965: GO 3967
3967: DISABLE
// invincible := [ ] ;
3968: LD_ADDR_EXP 4
3972: PUSH
3973: EMPTY
3974: ST_TO_ADDR
3975: END
// every 10 do var i ;
3976: GO 3978
3978: DISABLE
3979: LD_INT 0
3981: PPUSH
// begin enable ;
3982: ENABLE
// if not invincible then
3983: LD_EXP 4
3987: NOT
3988: IFFALSE 3992
// exit ;
3990: GO 4036
// for i in invincible do
3992: LD_ADDR_VAR 0 1
3996: PUSH
3997: LD_EXP 4
4001: PUSH
4002: FOR_IN
4003: IFFALSE 4034
// if GetLives ( i ) < 1000 then
4005: LD_VAR 0 1
4009: PPUSH
4010: CALL_OW 256
4014: PUSH
4015: LD_INT 1000
4017: LESS
4018: IFFALSE 4032
// SetLives ( i , 1000 ) ;
4020: LD_VAR 0 1
4024: PPUSH
4025: LD_INT 1000
4027: PPUSH
4028: CALL_OW 234
4032: GO 4002
4034: POP
4035: POP
// end ;
4036: PPOPN 1
4038: END
// export function HackInvincible ; var i ; begin
4039: LD_INT 0
4041: PPUSH
4042: PPUSH
// for i in FilterAllUnits ( [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ) do
4043: LD_ADDR_VAR 0 2
4047: PUSH
4048: LD_INT 2
4050: PUSH
4051: LD_INT 21
4053: PUSH
4054: LD_INT 1
4056: PUSH
4057: EMPTY
4058: LIST
4059: LIST
4060: PUSH
4061: LD_INT 21
4063: PUSH
4064: LD_INT 2
4066: PUSH
4067: EMPTY
4068: LIST
4069: LIST
4070: PUSH
4071: EMPTY
4072: LIST
4073: LIST
4074: LIST
4075: PPUSH
4076: CALL_OW 69
4080: PUSH
4081: FOR_IN
4082: IFFALSE 4143
// if IsSelected ( i ) then
4084: LD_VAR 0 2
4088: PPUSH
4089: CALL_OW 306
4093: IFFALSE 4141
// begin if i in invincible then
4095: LD_VAR 0 2
4099: PUSH
4100: LD_EXP 4
4104: IN
4105: IFFALSE 4125
// invincible := invincible diff i else
4107: LD_ADDR_EXP 4
4111: PUSH
4112: LD_EXP 4
4116: PUSH
4117: LD_VAR 0 2
4121: DIFF
4122: ST_TO_ADDR
4123: GO 4141
// invincible := invincible union i ;
4125: LD_ADDR_EXP 4
4129: PUSH
4130: LD_EXP 4
4134: PUSH
4135: LD_VAR 0 2
4139: UNION
4140: ST_TO_ADDR
// end ;
4141: GO 4081
4143: POP
4144: POP
// end ;
4145: LD_VAR 0 1
4149: RET
// export function HackInvisible ; var i , j ; begin
4150: LD_INT 0
4152: PPUSH
4153: PPUSH
4154: PPUSH
// for i in FilterAllUnits ( [ f_type , unit_human ] ) do
4155: LD_ADDR_VAR 0 2
4159: PUSH
4160: LD_INT 21
4162: PUSH
4163: LD_INT 1
4165: PUSH
4166: EMPTY
4167: LIST
4168: LIST
4169: PPUSH
4170: CALL_OW 69
4174: PUSH
4175: FOR_IN
4176: IFFALSE 4200
// if IsSelected ( i ) then
4178: LD_VAR 0 2
4182: PPUSH
4183: CALL_OW 306
4187: IFFALSE 4198
// begin ComForceInvisible ( i ) ;
4189: LD_VAR 0 2
4193: PPUSH
4194: CALL_OW 496
// end ;
4198: GO 4175
4200: POP
4201: POP
// end ;
4202: LD_VAR 0 1
4206: RET
// export function HackChangeYourSide ; begin
4207: LD_INT 0
4209: PPUSH
// if your_side = 8 then
4210: LD_OWVAR 2
4214: PUSH
4215: LD_INT 8
4217: EQUAL
4218: IFFALSE 4230
// your_side := 0 else
4220: LD_ADDR_OWVAR 2
4224: PUSH
4225: LD_INT 0
4227: ST_TO_ADDR
4228: GO 4244
// your_side := your_side + 1 ;
4230: LD_ADDR_OWVAR 2
4234: PUSH
4235: LD_OWVAR 2
4239: PUSH
4240: LD_INT 1
4242: PLUS
4243: ST_TO_ADDR
// end ;
4244: LD_VAR 0 1
4248: RET
// export function HackChangeUnitSide ; var i , j ; begin
4249: LD_INT 0
4251: PPUSH
4252: PPUSH
4253: PPUSH
// for i in all_units do
4254: LD_ADDR_VAR 0 2
4258: PUSH
4259: LD_OWVAR 3
4263: PUSH
4264: FOR_IN
4265: IFFALSE 4343
// if IsSelected ( i ) then
4267: LD_VAR 0 2
4271: PPUSH
4272: CALL_OW 306
4276: IFFALSE 4341
// begin j := GetSide ( i ) ;
4278: LD_ADDR_VAR 0 3
4282: PUSH
4283: LD_VAR 0 2
4287: PPUSH
4288: CALL_OW 255
4292: ST_TO_ADDR
// if j = 8 then
4293: LD_VAR 0 3
4297: PUSH
4298: LD_INT 8
4300: EQUAL
4301: IFFALSE 4313
// j := 0 else
4303: LD_ADDR_VAR 0 3
4307: PUSH
4308: LD_INT 0
4310: ST_TO_ADDR
4311: GO 4327
// j := j + 1 ;
4313: LD_ADDR_VAR 0 3
4317: PUSH
4318: LD_VAR 0 3
4322: PUSH
4323: LD_INT 1
4325: PLUS
4326: ST_TO_ADDR
// SetSide ( i , j ) ;
4327: LD_VAR 0 2
4331: PPUSH
4332: LD_VAR 0 3
4336: PPUSH
4337: CALL_OW 235
// end ;
4341: GO 4264
4343: POP
4344: POP
// end ;
4345: LD_VAR 0 1
4349: RET
// export function HackFog ; begin
4350: LD_INT 0
4352: PPUSH
// FogOff ( true ) ;
4353: LD_INT 1
4355: PPUSH
4356: CALL_OW 344
// end ;
4360: LD_VAR 0 1
4364: RET
// export function HackApeman ; begin
4365: LD_INT 0
4367: PPUSH
// uc_side := your_side ;
4368: LD_ADDR_OWVAR 20
4372: PUSH
4373: LD_OWVAR 2
4377: ST_TO_ADDR
// uc_nation := 0 ;
4378: LD_ADDR_OWVAR 21
4382: PUSH
4383: LD_INT 0
4385: ST_TO_ADDR
// hc_name :=  ;
4386: LD_ADDR_OWVAR 26
4390: PUSH
4391: LD_STRING 
4393: ST_TO_ADDR
// hc_gallery :=  ;
4394: LD_ADDR_OWVAR 33
4398: PUSH
4399: LD_STRING 
4401: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
4402: LD_ADDR_OWVAR 31
4406: PUSH
4407: LD_INT 0
4409: PUSH
4410: LD_INT 0
4412: PUSH
4413: LD_INT 0
4415: PUSH
4416: LD_INT 0
4418: PUSH
4419: EMPTY
4420: LIST
4421: LIST
4422: LIST
4423: LIST
4424: ST_TO_ADDR
// hc_class := class_apeman ;
4425: LD_ADDR_OWVAR 28
4429: PUSH
4430: LD_INT 12
4432: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateHuman , true ) ;
4433: CALL_OW 44
4437: PPUSH
4438: LD_INT 1
4440: PPUSH
4441: CALL_OW 51
// end ;
4445: LD_VAR 0 1
4449: RET
// export function HackBoom ; begin
4450: LD_INT 0
4452: PPUSH
// uc_side := your_side ;
4453: LD_ADDR_OWVAR 20
4457: PUSH
4458: LD_OWVAR 2
4462: ST_TO_ADDR
// uc_nation := 1 ;
4463: LD_ADDR_OWVAR 21
4467: PUSH
4468: LD_INT 1
4470: ST_TO_ADDR
// vc_chassis := us_morphling ;
4471: LD_ADDR_OWVAR 37
4475: PUSH
4476: LD_INT 5
4478: ST_TO_ADDR
// vc_engine := engine_siberite ;
4479: LD_ADDR_OWVAR 39
4483: PUSH
4484: LD_INT 3
4486: ST_TO_ADDR
// vc_control := control_computer ;
4487: LD_ADDR_OWVAR 38
4491: PUSH
4492: LD_INT 3
4494: ST_TO_ADDR
// vc_weapon := us_siberium_rocket ;
4495: LD_ADDR_OWVAR 40
4499: PUSH
4500: LD_INT 8
4502: ST_TO_ADDR
// PlaceUnitAnywhere ( CreateVehicle , true ) ;
4503: CALL_OW 45
4507: PPUSH
4508: LD_INT 1
4510: PPUSH
4511: CALL_OW 51
// end ;
4515: LD_VAR 0 1
4519: RET
