// export Alex , Eddings , Sancho , Anne ; export TeamGamma , AmDep , TeamAlex , TeamFinal , Americans ; export GammaBuildings ; export Messenger ; var AmSci ; export function PrepareOurs ; var i , b , h ; var labs , facs , bns ; var a ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
   4: PPUSH
   5: PPUSH
   6: PPUSH
   7: PPUSH
   8: PPUSH
   9: PPUSH
// uc_side = 1 ;
  10: LD_ADDR_OWVAR 20
  14: PUSH
  15: LD_INT 1
  17: ST_TO_ADDR
// uc_nation = 1 ;
  18: LD_ADDR_OWVAR 21
  22: PUSH
  23: LD_INT 1
  25: ST_TO_ADDR
// GammaBuildings = LoadVariable ( GammaBuildings , [ ] ) ;
  26: LD_ADDR_EXP 10
  30: PUSH
  31: LD_STRING GammaBuildings
  33: PPUSH
  34: EMPTY
  35: PPUSH
  36: CALL_OW 30
  40: ST_TO_ADDR
// for i in GammaBuildings do
  41: LD_ADDR_VAR 0 2
  45: PUSH
  46: LD_EXP 10
  50: PUSH
  51: FOR_IN
  52: IFFALSE 413
// begin bc_type = i [ 4 ] ;
  54: LD_ADDR_OWVAR 42
  58: PUSH
  59: LD_VAR 0 2
  63: PUSH
  64: LD_INT 4
  66: ARRAY
  67: ST_TO_ADDR
// bc_level = i [ 5 ] ;
  68: LD_ADDR_OWVAR 43
  72: PUSH
  73: LD_VAR 0 2
  77: PUSH
  78: LD_INT 5
  80: ARRAY
  81: ST_TO_ADDR
// case bc_type of b_lab , b_lab_half , b_lab_full :
  82: LD_OWVAR 42
  86: PUSH
  87: LD_INT 6
  89: DOUBLE
  90: EQUAL
  91: IFTRUE 107
  93: LD_INT 7
  95: DOUBLE
  96: EQUAL
  97: IFTRUE 107
  99: LD_INT 8
 101: DOUBLE
 102: EQUAL
 103: IFTRUE 107
 105: GO 138
 107: POP
// begin bc_kind1 = i [ 6 ] ;
 108: LD_ADDR_OWVAR 44
 112: PUSH
 113: LD_VAR 0 2
 117: PUSH
 118: LD_INT 6
 120: ARRAY
 121: ST_TO_ADDR
// bc_kind2 = i [ 7 ] ;
 122: LD_ADDR_OWVAR 45
 126: PUSH
 127: LD_VAR 0 2
 131: PUSH
 132: LD_INT 7
 134: ARRAY
 135: ST_TO_ADDR
// end ; end ;
 136: GO 139
 138: POP
// b = CreateAndPlaceBuildingXYD ( i [ 1 ] , i [ 2 ] , i [ 3 ] ) ;
 139: LD_ADDR_VAR 0 3
 143: PUSH
 144: LD_VAR 0 2
 148: PUSH
 149: LD_INT 1
 151: ARRAY
 152: PPUSH
 153: LD_VAR 0 2
 157: PUSH
 158: LD_INT 2
 160: ARRAY
 161: PPUSH
 162: LD_VAR 0 2
 166: PUSH
 167: LD_INT 3
 169: ARRAY
 170: PPUSH
 171: CALL_OW 47
 175: ST_TO_ADDR
// if GetBType ( b ) = b_bunker or GetBType ( b ) = b_turret then
 176: LD_VAR 0 3
 180: PPUSH
 181: CALL_OW 266
 185: PUSH
 186: LD_INT 32
 188: EQUAL
 189: PUSH
 190: LD_VAR 0 3
 194: PPUSH
 195: CALL_OW 266
 199: PUSH
 200: LD_INT 33
 202: EQUAL
 203: OR
 204: IFFALSE 256
// if i [ 6 ] then
 206: LD_VAR 0 2
 210: PUSH
 211: LD_INT 6
 213: ARRAY
 214: IFFALSE 236
// PlaceWeaponTurret ( b , i [ 6 ] ) else
 216: LD_VAR 0 3
 220: PPUSH
 221: LD_VAR 0 2
 225: PUSH
 226: LD_INT 6
 228: ARRAY
 229: PPUSH
 230: CALL_OW 431
 234: GO 256
// PlaceWeaponTurret ( b , Rand ( 3 , 5 ) ) ;
 236: LD_VAR 0 3
 240: PPUSH
 241: LD_INT 3
 243: PPUSH
 244: LD_INT 5
 246: PPUSH
 247: CALL_OW 12
 251: PPUSH
 252: CALL_OW 431
// if GetBType ( b ) = b_depot or GetBType ( b ) = b_warehouse then
 256: LD_VAR 0 3
 260: PPUSH
 261: CALL_OW 266
 265: PUSH
 266: LD_INT 0
 268: EQUAL
 269: PUSH
 270: LD_VAR 0 3
 274: PPUSH
 275: CALL_OW 266
 279: PUSH
 280: LD_INT 1
 282: EQUAL
 283: OR
 284: IFFALSE 411
// if IsInArea ( b , MainGamma ) and not AmDep then
 286: LD_VAR 0 3
 290: PPUSH
 291: LD_INT 1
 293: PPUSH
 294: CALL_OW 308
 298: PUSH
 299: LD_EXP 6
 303: NOT
 304: AND
 305: IFFALSE 371
// begin SetBName ( b , gamma ) ;
 307: LD_VAR 0 3
 311: PPUSH
 312: LD_STRING gamma
 314: PPUSH
 315: CALL_OW 500
// SetResourceType ( GetBase ( b ) , mat_cans , 220 ) ;
 319: LD_VAR 0 3
 323: PPUSH
 324: CALL_OW 274
 328: PPUSH
 329: LD_INT 1
 331: PPUSH
 332: LD_INT 220
 334: PPUSH
 335: CALL_OW 277
// SetResourceType ( GetBase ( b ) , mat_oil , 810 ) ;
 339: LD_VAR 0 3
 343: PPUSH
 344: CALL_OW 274
 348: PPUSH
 349: LD_INT 2
 351: PPUSH
 352: LD_INT 810
 354: PPUSH
 355: CALL_OW 277
// AmDep = b ;
 359: LD_ADDR_EXP 6
 363: PUSH
 364: LD_VAR 0 3
 368: ST_TO_ADDR
// end else
 369: GO 411
// begin SetResourceType ( GetBase ( b ) , mat_cans , 30 ) ;
 371: LD_VAR 0 3
 375: PPUSH
 376: CALL_OW 274
 380: PPUSH
 381: LD_INT 1
 383: PPUSH
 384: LD_INT 30
 386: PPUSH
 387: CALL_OW 277
// SetResourceType ( GetBase ( b ) , mat_oil , 620 ) ;
 391: LD_VAR 0 3
 395: PPUSH
 396: CALL_OW 274
 400: PPUSH
 401: LD_INT 2
 403: PPUSH
 404: LD_INT 620
 406: PPUSH
 407: CALL_OW 277
// end ; end ;
 411: GO 51
 413: POP
 414: POP
// Alex = LoadCharacter ( Alex , 2 , 0 ) ;
 415: LD_ADDR_EXP 1
 419: PUSH
 420: LD_STRING Alex
 422: PPUSH
 423: LD_INT 2
 425: PPUSH
 426: LD_INT 0
 428: PPUSH
 429: CALL_OW 527
 433: ST_TO_ADDR
// PlaceUnitXYR ( Alex , ShiftX ( GetX ( AmDep ) , GetDir ( AmDep ) , 6 ) , ShiftY ( GetY ( AmDep ) , GetDir ( AmDep ) , 6 ) , 3 , false ) ;
 434: LD_EXP 1
 438: PPUSH
 439: LD_EXP 6
 443: PPUSH
 444: CALL_OW 250
 448: PPUSH
 449: LD_EXP 6
 453: PPUSH
 454: CALL_OW 254
 458: PPUSH
 459: LD_INT 6
 461: PPUSH
 462: CALL_OW 272
 466: PPUSH
 467: LD_EXP 6
 471: PPUSH
 472: CALL_OW 251
 476: PPUSH
 477: LD_EXP 6
 481: PPUSH
 482: CALL_OW 254
 486: PPUSH
 487: LD_INT 6
 489: PPUSH
 490: CALL_OW 273
 494: PPUSH
 495: LD_INT 3
 497: PPUSH
 498: LD_INT 0
 500: PPUSH
 501: CALL_OW 50
// ComHold ( Alex ) ;
 505: LD_EXP 1
 509: PPUSH
 510: CALL_OW 140
// TeamGamma = LoadCharacter ( TeamGamma , 0 , 0 ) ;
 514: LD_ADDR_EXP 5
 518: PUSH
 519: LD_STRING TeamGamma
 521: PPUSH
 522: LD_INT 0
 524: PPUSH
 525: LD_INT 0
 527: PPUSH
 528: CALL_OW 527
 532: ST_TO_ADDR
// TeamAlex = LoadCharacter ( TeamAlex , 0 , 0 ) ;
 533: LD_ADDR_EXP 7
 537: PUSH
 538: LD_STRING TeamAlex
 540: PPUSH
 541: LD_INT 0
 543: PPUSH
 544: LD_INT 0
 546: PPUSH
 547: CALL_OW 527
 551: ST_TO_ADDR
// Americans = TeamGamma ^ TeamAlex ;
 552: LD_ADDR_EXP 9
 556: PUSH
 557: LD_EXP 5
 561: PUSH
 562: LD_EXP 7
 566: ADD
 567: ST_TO_ADDR
// InitHc ;
 568: CALL_OW 19
// if Americans < 8 then
 572: LD_EXP 9
 576: PUSH
 577: LD_INT 8
 579: LESS
 580: IFFALSE 637
// repeat begin PrepareHuman ( false , Rand ( 1 , 4 ) , Rand ( 2 , 4 ) ) ;
 582: LD_INT 0
 584: PPUSH
 585: LD_INT 1
 587: PPUSH
 588: LD_INT 4
 590: PPUSH
 591: CALL_OW 12
 595: PPUSH
 596: LD_INT 2
 598: PPUSH
 599: LD_INT 4
 601: PPUSH
 602: CALL_OW 12
 606: PPUSH
 607: CALL_OW 380
// Americans = Americans ^ CreateHuman ;
 611: LD_ADDR_EXP 9
 615: PUSH
 616: LD_EXP 9
 620: PUSH
 621: CALL_OW 44
 625: ADD
 626: ST_TO_ADDR
// end until Americans = 9 ;
 627: LD_EXP 9
 631: PUSH
 632: LD_INT 9
 634: EQUAL
 635: IFFALSE 582
// labs = FilterAllUnits ( [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] ) ;
 637: LD_ADDR_VAR 0 5
 641: PUSH
 642: LD_INT 2
 644: PUSH
 645: LD_INT 30
 647: PUSH
 648: LD_INT 6
 650: PUSH
 651: EMPTY
 652: LIST
 653: LIST
 654: PUSH
 655: LD_INT 30
 657: PUSH
 658: LD_INT 7
 660: PUSH
 661: EMPTY
 662: LIST
 663: LIST
 664: PUSH
 665: LD_INT 30
 667: PUSH
 668: LD_INT 8
 670: PUSH
 671: EMPTY
 672: LIST
 673: LIST
 674: PUSH
 675: EMPTY
 676: LIST
 677: LIST
 678: LIST
 679: LIST
 680: PPUSH
 681: CALL_OW 69
 685: ST_TO_ADDR
// facs = FilterAllUnits ( [ f_or , [ f_btype , b_workshop ] , [ f_btype , b_factory ] ] ) ;
 686: LD_ADDR_VAR 0 6
 690: PUSH
 691: LD_INT 2
 693: PUSH
 694: LD_INT 30
 696: PUSH
 697: LD_INT 2
 699: PUSH
 700: EMPTY
 701: LIST
 702: LIST
 703: PUSH
 704: LD_INT 30
 706: PUSH
 707: LD_INT 3
 709: PUSH
 710: EMPTY
 711: LIST
 712: LIST
 713: PUSH
 714: EMPTY
 715: LIST
 716: LIST
 717: LIST
 718: PPUSH
 719: CALL_OW 69
 723: ST_TO_ADDR
// bns = FilterAllUnits ( [ f_or , [ f_btype , b_breastwork ] , [ f_btype , b_bunker ] , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] ] ) ;
 724: LD_ADDR_VAR 0 7
 728: PUSH
 729: LD_INT 2
 731: PUSH
 732: LD_INT 30
 734: PUSH
 735: LD_INT 31
 737: PUSH
 738: EMPTY
 739: LIST
 740: LIST
 741: PUSH
 742: LD_INT 30
 744: PUSH
 745: LD_INT 32
 747: PUSH
 748: EMPTY
 749: LIST
 750: LIST
 751: PUSH
 752: LD_INT 30
 754: PUSH
 755: LD_INT 4
 757: PUSH
 758: EMPTY
 759: LIST
 760: LIST
 761: PUSH
 762: LD_INT 30
 764: PUSH
 765: LD_INT 5
 767: PUSH
 768: EMPTY
 769: LIST
 770: LIST
 771: PUSH
 772: EMPTY
 773: LIST
 774: LIST
 775: LIST
 776: LIST
 777: LIST
 778: PPUSH
 779: CALL_OW 69
 783: ST_TO_ADDR
// for i in Americans do
 784: LD_ADDR_VAR 0 2
 788: PUSH
 789: LD_EXP 9
 793: PUSH
 794: FOR_IN
 795: IFFALSE 1027
// begin case GetClass ( i ) of class_scientistic :
 797: LD_VAR 0 2
 801: PPUSH
 802: CALL_OW 257
 806: PUSH
 807: LD_INT 4
 809: DOUBLE
 810: EQUAL
 811: IFTRUE 815
 813: GO 836
 815: POP
// PlaceHumanInUnit ( i , labs [ 1 ] ) ; class_mechanic :
 816: LD_VAR 0 2
 820: PPUSH
 821: LD_VAR 0 5
 825: PUSH
 826: LD_INT 1
 828: ARRAY
 829: PPUSH
 830: CALL_OW 52
 834: GO 1025
 836: LD_INT 3
 838: DOUBLE
 839: EQUAL
 840: IFTRUE 844
 842: GO 865
 844: POP
// PlaceHumanInUnit ( i , facs [ 1 ] ) ; class_engineer :
 845: LD_VAR 0 2
 849: PPUSH
 850: LD_VAR 0 6
 854: PUSH
 855: LD_INT 1
 857: ARRAY
 858: PPUSH
 859: CALL_OW 52
 863: GO 1025
 865: LD_INT 2
 867: DOUBLE
 868: EQUAL
 869: IFTRUE 873
 871: GO 890
 873: POP
// PlaceHumanInUnit ( i , AmDep ) ; class_soldier , class_sniper :
 874: LD_VAR 0 2
 878: PPUSH
 879: LD_EXP 6
 883: PPUSH
 884: CALL_OW 52
 888: GO 1025
 890: LD_INT 1
 892: DOUBLE
 893: EQUAL
 894: IFTRUE 904
 896: LD_INT 5
 898: DOUBLE
 899: EQUAL
 900: IFTRUE 904
 902: GO 1024
 904: POP
// begin if bns then
 905: LD_VAR 0 7
 909: IFFALSE 951
// begin PlaceHumanInUnit ( i , bns [ 1 ] ) ;
 911: LD_VAR 0 2
 915: PPUSH
 916: LD_VAR 0 7
 920: PUSH
 921: LD_INT 1
 923: ARRAY
 924: PPUSH
 925: CALL_OW 52
// bns = bns diff bns [ 1 ] ;
 929: LD_ADDR_VAR 0 7
 933: PUSH
 934: LD_VAR 0 7
 938: PUSH
 939: LD_VAR 0 7
 943: PUSH
 944: LD_INT 1
 946: ARRAY
 947: DIFF
 948: ST_TO_ADDR
// end else
 949: GO 1022
// PlaceUnitXYR ( i , ShiftX ( GetX ( AmDep ) , GetDir ( AmDep ) , 8 ) , ShiftY ( GetY ( AmDep ) , GetDir ( AmDep ) , 8 ) , 15 , false ) ;
 951: LD_VAR 0 2
 955: PPUSH
 956: LD_EXP 6
 960: PPUSH
 961: CALL_OW 250
 965: PPUSH
 966: LD_EXP 6
 970: PPUSH
 971: CALL_OW 254
 975: PPUSH
 976: LD_INT 8
 978: PPUSH
 979: CALL_OW 272
 983: PPUSH
 984: LD_EXP 6
 988: PPUSH
 989: CALL_OW 251
 993: PPUSH
 994: LD_EXP 6
 998: PPUSH
 999: CALL_OW 254
1003: PPUSH
1004: LD_INT 8
1006: PPUSH
1007: CALL_OW 273
1011: PPUSH
1012: LD_INT 15
1014: PPUSH
1015: LD_INT 0
1017: PPUSH
1018: CALL_OW 50
// end ; end ;
1022: GO 1025
1024: POP
// end ;
1025: GO 794
1027: POP
1028: POP
// for i = 1 to 9 do
1029: LD_ADDR_VAR 0 2
1033: PUSH
1034: DOUBLE
1035: LD_INT 1
1037: DEC
1038: ST_TO_ADDR
1039: LD_INT 9
1041: PUSH
1042: FOR_TO
1043: IFFALSE 1092
// begin PrepareHuman ( false , Rand ( 1 , 4 ) , Rand ( 3 , 6 ) ) ;
1045: LD_INT 0
1047: PPUSH
1048: LD_INT 1
1050: PPUSH
1051: LD_INT 4
1053: PPUSH
1054: CALL_OW 12
1058: PPUSH
1059: LD_INT 3
1061: PPUSH
1062: LD_INT 6
1064: PPUSH
1065: CALL_OW 12
1069: PPUSH
1070: CALL_OW 380
// Americans = Americans ^ CreateHuman ;
1074: LD_ADDR_EXP 9
1078: PUSH
1079: LD_EXP 9
1083: PUSH
1084: CALL_OW 44
1088: ADD
1089: ST_TO_ADDR
// end ;
1090: GO 1042
1092: POP
1093: POP
// if TestCharacters ( Sancho ) then
1094: LD_STRING Sancho
1096: PPUSH
1097: CALL_OW 28
1101: IFFALSE 1122
// Sancho = LoadCharacter ( Sancho , 4 , 0 ) ;
1103: LD_ADDR_EXP 3
1107: PUSH
1108: LD_STRING Sancho
1110: PPUSH
1111: LD_INT 4
1113: PPUSH
1114: LD_INT 0
1116: PPUSH
1117: CALL_OW 527
1121: ST_TO_ADDR
// if TestCharacters ( Eddings ) then
1122: LD_STRING Eddings
1124: PPUSH
1125: CALL_OW 28
1129: IFFALSE 1168
// begin Eddings = LoadCharacter ( Eddings , 4 , 0 ) ;
1131: LD_ADDR_EXP 2
1135: PUSH
1136: LD_STRING Eddings
1138: PPUSH
1139: LD_INT 4
1141: PPUSH
1142: LD_INT 0
1144: PPUSH
1145: CALL_OW 527
1149: ST_TO_ADDR
// PlaceHumanInUnit ( Eddings , labs [ 1 ] ) ;
1150: LD_EXP 2
1154: PPUSH
1155: LD_VAR 0 5
1159: PUSH
1160: LD_INT 1
1162: ARRAY
1163: PPUSH
1164: CALL_OW 52
// end ; if TestCharacters ( Anne ) then
1168: LD_STRING Anne
1170: PPUSH
1171: CALL_OW 28
1175: IFFALSE 1267
// begin Anne = LoadCharacter ( Anne , 1 , 0 ) ;
1177: LD_ADDR_EXP 4
1181: PUSH
1182: LD_STRING Anne
1184: PPUSH
1185: LD_INT 1
1187: PPUSH
1188: LD_INT 0
1190: PPUSH
1191: CALL_OW 527
1195: ST_TO_ADDR
// PlaceUnitXYR ( Anne , ShiftX ( GetX ( AmDep ) , GetDir ( AmDep ) , 8 ) , ShiftY ( GetY ( AmDep ) , GetDir ( AmDep ) , 8 ) , 5 , false ) ;
1196: LD_EXP 4
1200: PPUSH
1201: LD_EXP 6
1205: PPUSH
1206: CALL_OW 250
1210: PPUSH
1211: LD_EXP 6
1215: PPUSH
1216: CALL_OW 254
1220: PPUSH
1221: LD_INT 8
1223: PPUSH
1224: CALL_OW 272
1228: PPUSH
1229: LD_EXP 6
1233: PPUSH
1234: CALL_OW 251
1238: PPUSH
1239: LD_EXP 6
1243: PPUSH
1244: CALL_OW 254
1248: PPUSH
1249: LD_INT 8
1251: PPUSH
1252: CALL_OW 273
1256: PPUSH
1257: LD_INT 5
1259: PPUSH
1260: LD_INT 0
1262: PPUSH
1263: CALL_OW 50
// end ; RevealFogArea ( 1 , RevealArea ) ;
1267: LD_INT 1
1269: PPUSH
1270: LD_INT 2
1272: PPUSH
1273: CALL_OW 332
// InitHc ;
1277: CALL_OW 19
// PrepareSoldier ( sex_female , 4 ) ;
1281: LD_INT 2
1283: PPUSH
1284: LD_INT 4
1286: PPUSH
1287: CALL_OW 381
// Messenger = CreateHuman ;
1291: LD_ADDR_EXP 11
1295: PUSH
1296: CALL_OW 44
1300: ST_TO_ADDR
// PlaceHumanInUnit ( Messenger , AmDep ) ;
1301: LD_EXP 11
1305: PPUSH
1306: LD_EXP 6
1310: PPUSH
1311: CALL_OW 52
// end ;
1315: LD_VAR 0 1
1319: RET
// starting begin ChangeSideFog ( 1 , 4 ) ;
1320: LD_INT 1
1322: PPUSH
1323: LD_INT 4
1325: PPUSH
1326: CALL_OW 343
// PrepareOurs ;
1330: CALL 0 0 0
// AmSci = FilterAllUnits ( [ f_class , class_scientistic ] ) ;
1334: LD_ADDR_LOC 1
1338: PUSH
1339: LD_INT 25
1341: PUSH
1342: LD_INT 4
1344: PUSH
1345: EMPTY
1346: LIST
1347: LIST
1348: PPUSH
1349: CALL_OW 69
1353: ST_TO_ADDR
// InGameOn ;
1354: CALL_OW 8
// CenterNowOnUnits ( AmDep ) ;
1358: LD_EXP 6
1362: PPUSH
1363: CALL_OW 87
// Wait ( 0 0$1 ) ;
1367: LD_INT 35
1369: PPUSH
1370: CALL_OW 67
// ComExitBuilding ( Messenger ) ;
1374: LD_EXP 11
1378: PPUSH
1379: CALL_OW 122
// ComMoveXY ( Messenger , GetX ( Alex ) , GetY ( Alex ) ) ;
1383: LD_EXP 11
1387: PPUSH
1388: LD_EXP 1
1392: PPUSH
1393: CALL_OW 250
1397: PPUSH
1398: LD_EXP 1
1402: PPUSH
1403: CALL_OW 251
1407: PPUSH
1408: CALL_OW 111
// repeat Wait ( 0 0$1 ) ;
1412: LD_INT 35
1414: PPUSH
1415: CALL_OW 67
// until GetDistUnits ( Messenger , Alex ) < 5 ;
1419: LD_EXP 11
1423: PPUSH
1424: LD_EXP 1
1428: PPUSH
1429: CALL_OW 296
1433: PUSH
1434: LD_INT 5
1436: LESS
1437: IFFALSE 1412
// ComHold ( Messenger ) ;
1439: LD_EXP 11
1443: PPUSH
1444: CALL_OW 140
// ComTurnUnit ( [ Messenger , Anne ] , Alex ) ;
1448: LD_EXP 11
1452: PUSH
1453: LD_EXP 4
1457: PUSH
1458: EMPTY
1459: LIST
1460: LIST
1461: PPUSH
1462: LD_EXP 1
1466: PPUSH
1467: CALL_OW 119
// ComTurnUnit ( Alex , Messenger ) ;
1471: LD_EXP 1
1475: PPUSH
1476: LD_EXP 11
1480: PPUSH
1481: CALL_OW 119
// Wait ( 0 0$0.5 ) ;
1485: LD_INT 18
1487: PPUSH
1488: CALL_OW 67
// DialogueOn ;
1492: CALL_OW 6
// Say ( Messenger , di-s-1 ) ;
1496: LD_EXP 11
1500: PPUSH
1501: LD_STRING di-s-1
1503: PPUSH
1504: CALL_OW 88
// Say ( Alex , di-a-1 ) ;
1508: LD_EXP 1
1512: PPUSH
1513: LD_STRING di-a-1
1515: PPUSH
1516: CALL_OW 88
// Say ( Messenger , di-s-2 ) ;
1520: LD_EXP 11
1524: PPUSH
1525: LD_STRING di-s-2
1527: PPUSH
1528: CALL_OW 88
// Say ( Messenger , di-s-3 ) ;
1532: LD_EXP 11
1536: PPUSH
1537: LD_STRING di-s-3
1539: PPUSH
1540: CALL_OW 88
// Say ( Alex , di-a-2 ) ;
1544: LD_EXP 1
1548: PPUSH
1549: LD_STRING di-a-2
1551: PPUSH
1552: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1556: LD_INT 18
1558: PPUSH
1559: CALL_OW 67
// Say ( Alex , di-a-3 ) ;
1563: LD_EXP 1
1567: PPUSH
1568: LD_STRING di-a-3
1570: PPUSH
1571: CALL_OW 88
// Wait ( 0 0$0.5 ) ;
1575: LD_INT 18
1577: PPUSH
1578: CALL_OW 67
// Say ( Alex , di-a-4 ) ;
1582: LD_EXP 1
1586: PPUSH
1587: LD_STRING di-a-4
1589: PPUSH
1590: CALL_OW 88
// if Anne then
1594: LD_EXP 4
1598: IFFALSE 1624
// begin Say ( Anne , di-n-1 ) ;
1600: LD_EXP 4
1604: PPUSH
1605: LD_STRING di-n-1
1607: PPUSH
1608: CALL_OW 88
// Say ( Alex , di-a-5 ) ;
1612: LD_EXP 1
1616: PPUSH
1617: LD_STRING di-a-5
1619: PPUSH
1620: CALL_OW 88
// end ; DialogueOff ;
1624: CALL_OW 7
// Wait ( 0 0$0.5 ) ;
1628: LD_INT 18
1630: PPUSH
1631: CALL_OW 67
// if Eddings then
1635: LD_EXP 2
1639: IFFALSE 1653
// AmSci = Eddings else
1641: LD_ADDR_LOC 1
1645: PUSH
1646: LD_EXP 2
1650: ST_TO_ADDR
1651: GO 1667
// AmSci = AmSci [ 1 ] ;
1653: LD_ADDR_LOC 1
1657: PUSH
1658: LD_LOC 1
1662: PUSH
1663: LD_INT 1
1665: ARRAY
1666: ST_TO_ADDR
// ComExitBuilding ( AmSci ) ;
1667: LD_LOC 1
1671: PPUSH
1672: CALL_OW 122
// AddComMoveUnit ( AmSci , Alex ) ;
1676: LD_LOC 1
1680: PPUSH
1681: LD_EXP 1
1685: PPUSH
1686: CALL_OW 172
// ComTurnUnit ( [ Alex , Anne ] , AmSci ) ;
1690: LD_EXP 1
1694: PUSH
1695: LD_EXP 4
1699: PUSH
1700: EMPTY
1701: LIST
1702: LIST
1703: PPUSH
1704: LD_LOC 1
1708: PPUSH
1709: CALL_OW 119
// Wait ( 0 0$3 ) ;
1713: LD_INT 105
1715: PPUSH
1716: CALL_OW 67
// DialogueOn ;
1720: CALL_OW 6
// Say ( AmSci , ds-e-1 ) ;
1724: LD_LOC 1
1728: PPUSH
1729: LD_STRING ds-e-1
1731: PPUSH
1732: CALL_OW 88
// Say ( Alex , ds-a-1 ) ;
1736: LD_EXP 1
1740: PPUSH
1741: LD_STRING ds-a-1
1743: PPUSH
1744: CALL_OW 88
// Say ( AmSci , ds-e-2 ) ;
1748: LD_LOC 1
1752: PPUSH
1753: LD_STRING ds-e-2
1755: PPUSH
1756: CALL_OW 88
// Say ( AmSci , ds-e-3 ) ;
1760: LD_LOC 1
1764: PPUSH
1765: LD_STRING ds-e-3
1767: PPUSH
1768: CALL_OW 88
// Say ( Alex , ds-a-2 ) ;
1772: LD_EXP 1
1776: PPUSH
1777: LD_STRING ds-a-2
1779: PPUSH
1780: CALL_OW 88
// DialogueOff ;
1784: CALL_OW 7
// Wait ( 0 0$0.5 ) ;
1788: LD_INT 18
1790: PPUSH
1791: CALL_OW 67
// InGameOff ;
1795: CALL_OW 9
// TeamFinal = CharacterSelection ( S9 , 7 , 7 , [ sel_hired , sel_change_class , Alex , sel_not_hired , sel_changeable ] ^ Anne ^ Eddings ^ Sancho ^ Messenger ^ Americans , [ class_soldier , [ class_engineer , 1 ] , class_mechanic , [ class_scientistic , 1 ] , class_sniper ] ) ;
1799: LD_ADDR_EXP 8
1803: PUSH
1804: LD_STRING S9
1806: PPUSH
1807: LD_INT 7
1809: PPUSH
1810: LD_INT 7
1812: PPUSH
1813: LD_INT -1
1815: PUSH
1816: LD_INT -5
1818: PUSH
1819: LD_EXP 1
1823: PUSH
1824: LD_INT -2
1826: PUSH
1827: LD_INT -3
1829: PUSH
1830: EMPTY
1831: LIST
1832: LIST
1833: LIST
1834: LIST
1835: LIST
1836: PUSH
1837: LD_EXP 4
1841: ADD
1842: PUSH
1843: LD_EXP 2
1847: ADD
1848: PUSH
1849: LD_EXP 3
1853: ADD
1854: PUSH
1855: LD_EXP 11
1859: ADD
1860: PUSH
1861: LD_EXP 9
1865: ADD
1866: PPUSH
1867: LD_INT 1
1869: PUSH
1870: LD_INT 2
1872: PUSH
1873: LD_INT 1
1875: PUSH
1876: EMPTY
1877: LIST
1878: LIST
1879: PUSH
1880: LD_INT 3
1882: PUSH
1883: LD_INT 4
1885: PUSH
1886: LD_INT 1
1888: PUSH
1889: EMPTY
1890: LIST
1891: LIST
1892: PUSH
1893: LD_INT 5
1895: PUSH
1896: EMPTY
1897: LIST
1898: LIST
1899: LIST
1900: LIST
1901: LIST
1902: PPUSH
1903: CALL_OW 42
1907: ST_TO_ADDR
// SaveCharacters ( Alex , Alex ) ;
1908: LD_EXP 1
1912: PPUSH
1913: LD_STRING Alex
1915: PPUSH
1916: CALL_OW 38
// if Eddings then
1920: LD_EXP 2
1924: IFFALSE 1938
// SaveCharacters ( Eddings , Eddings ) ;
1926: LD_EXP 2
1930: PPUSH
1931: LD_STRING Eddings
1933: PPUSH
1934: CALL_OW 38
// if Eddings in TeamFinal then
1938: LD_EXP 2
1942: PUSH
1943: LD_EXP 8
1947: IN
1948: IFFALSE 1960
// SaveVariable ( 1 , EddingsInFinal ) ;
1950: LD_INT 1
1952: PPUSH
1953: LD_STRING EddingsInFinal
1955: PPUSH
1956: CALL_OW 39
// if Sancho then
1960: LD_EXP 3
1964: IFFALSE 1978
// SaveCharacters ( Sancho , Sancho ) ;
1966: LD_EXP 3
1970: PPUSH
1971: LD_STRING Sancho
1973: PPUSH
1974: CALL_OW 38
// if Sancho in TeamFinal then
1978: LD_EXP 3
1982: PUSH
1983: LD_EXP 8
1987: IN
1988: IFFALSE 2000
// SaveVariable ( 1 , SanchoInFinal ) ;
1990: LD_INT 1
1992: PPUSH
1993: LD_STRING SanchoInFinal
1995: PPUSH
1996: CALL_OW 39
// if Anne then
2000: LD_EXP 4
2004: IFFALSE 2018
// SaveCharacters ( Anne , Anne ) ;
2006: LD_EXP 4
2010: PPUSH
2011: LD_STRING Anne
2013: PPUSH
2014: CALL_OW 38
// if Anne in TeamFinal then
2018: LD_EXP 4
2022: PUSH
2023: LD_EXP 8
2027: IN
2028: IFFALSE 2040
// SaveVariable ( 1 , AnneInFinal ) ;
2030: LD_INT 1
2032: PPUSH
2033: LD_STRING AnneInFinal
2035: PPUSH
2036: CALL_OW 39
// TeamFinal = TeamFinal diff [ Alex , Eddings , Anne , Sancho ] ;
2040: LD_ADDR_EXP 8
2044: PUSH
2045: LD_EXP 8
2049: PUSH
2050: LD_EXP 1
2054: PUSH
2055: LD_EXP 2
2059: PUSH
2060: LD_EXP 4
2064: PUSH
2065: LD_EXP 3
2069: PUSH
2070: EMPTY
2071: LIST
2072: LIST
2073: LIST
2074: LIST
2075: DIFF
2076: ST_TO_ADDR
// SaveCharacters ( TeamFinal , TeamFinal ) ;
2077: LD_EXP 8
2081: PPUSH
2082: LD_STRING TeamFinal
2084: PPUSH
2085: CALL_OW 38
// ChangeMap ( 9 , %_cont ) ;
2089: LD_INT 9
2091: PPUSH
2092: LD_STRING %_cont
2094: PPUSH
2095: CALL_OW 340
// end ;
2099: END
