// export Alex ; export Paul , Hayes ; export CratesGathered ; function PrepareOurs ; begin
   0: LD_INT 0
   2: PPUSH
// uc_side = 1 ;
   3: LD_ADDR_OWVAR 20
   7: PUSH
   8: LD_INT 1
  10: ST_TO_ADDR
// uc_nation = 1 ;
  11: LD_ADDR_OWVAR 21
  15: PUSH
  16: LD_INT 1
  18: ST_TO_ADDR
// Alex = NewCharacter ( Alex ) ;
  19: LD_ADDR_EXP 1
  23: PUSH
  24: LD_STRING Alex
  26: PPUSH
  27: CALL_OW 25
  31: ST_TO_ADDR
// uc_side = 4 ;
  32: LD_ADDR_OWVAR 20
  36: PUSH
  37: LD_INT 4
  39: ST_TO_ADDR
// Paul = NewCharacter ( Paul ) ;
  40: LD_ADDR_EXP 2
  44: PUSH
  45: LD_STRING Paul
  47: PPUSH
  48: CALL_OW 25
  52: ST_TO_ADDR
// PlaceUnitXY ( Paul , 107 , 35 , false ) ;
  53: LD_EXP 2
  57: PPUSH
  58: LD_INT 107
  60: PPUSH
  61: LD_INT 35
  63: PPUSH
  64: LD_INT 0
  66: PPUSH
  67: CALL_OW 48
// Hayes = NewCharacter ( Hayes ) ;
  71: LD_ADDR_EXP 3
  75: PUSH
  76: LD_STRING Hayes
  78: PPUSH
  79: CALL_OW 25
  83: ST_TO_ADDR
// SetBName ( AmDep , epsilon ) ;
  84: LD_INT 1
  86: PPUSH
  87: LD_STRING epsilon
  89: PPUSH
  90: CALL_OW 500
// end ;
  94: LD_VAR 0 1
  98: RET
// starting begin PrepareOurs ;
  99: CALL 0 0 0
// InGameOn ;
 103: CALL_OW 8
// CenterNowOnXY ( 33 , 44 ) ;
 107: LD_INT 33
 109: PPUSH
 110: LD_INT 44
 112: PPUSH
 113: CALL_OW 86
// Wait ( 0 0$1.5 ) ;
 117: LD_INT 52
 119: PPUSH
 120: CALL_OW 67
// PlaceUnitXY ( Alex , 33 , 44 , true ) ;
 124: LD_EXP 1
 128: PPUSH
 129: LD_INT 33
 131: PPUSH
 132: LD_INT 44
 134: PPUSH
 135: LD_INT 1
 137: PPUSH
 138: CALL_OW 48
// Wait ( 0 0$2 ) ;
 142: LD_INT 70
 144: PPUSH
 145: CALL_OW 67
// Say ( Alex , dl-a-1 ) ;
 149: LD_EXP 1
 153: PPUSH
 154: LD_STRING dl-a-1
 156: PPUSH
 157: CALL_OW 88
// Wait ( 0 0$1 ) ;
 161: LD_INT 35
 163: PPUSH
 164: CALL_OW 67
// Say ( Alex , dl-a-2 ) ;
 168: LD_EXP 1
 172: PPUSH
 173: LD_STRING dl-a-2
 175: PPUSH
 176: CALL_OW 88
// SayRadio ( Paul , dl-p-1 ) ;
 180: LD_EXP 2
 184: PPUSH
 185: LD_STRING dl-p-1
 187: PPUSH
 188: CALL_OW 94
// Say ( Alex , dl-a-3 ) ;
 192: LD_EXP 1
 196: PPUSH
 197: LD_STRING dl-a-3
 199: PPUSH
 200: CALL_OW 88
// InGameOff ;
 204: CALL_OW 9
// SaveForQuickRestart ;
 208: CALL_OW 22
// ChangeMissionObjectives ( OEps ) ;
 212: LD_STRING OEps
 214: PPUSH
 215: CALL_OW 337
// end ;
 219: END
// export function Ending ; var c ; begin
 220: LD_INT 0
 222: PPUSH
 223: PPUSH
// c = [ 70 , 100 , 150 ] [ difficulty ] ;
 224: LD_ADDR_VAR 0 2
 228: PUSH
 229: LD_INT 70
 231: PUSH
 232: LD_INT 100
 234: PUSH
 235: LD_INT 150
 237: PUSH
 238: EMPTY
 239: LIST
 240: LIST
 241: LIST
 242: PUSH
 243: LD_OWVAR 67
 247: ARRAY
 248: ST_TO_ADDR
// InGameOn ;
 249: CALL_OW 8
// DialogueOn ;
 253: CALL_OW 6
// SayRadio ( Paul , dp-p-1 ) ;
 257: LD_EXP 2
 261: PPUSH
 262: LD_STRING dp-p-1
 264: PPUSH
 265: CALL_OW 94
// Say ( Alex , dp-a-1 ) ;
 269: LD_EXP 1
 273: PPUSH
 274: LD_STRING dp-a-1
 276: PPUSH
 277: CALL_OW 88
// SayRadio ( Hayes , dp-h-1 ) ;
 281: LD_EXP 3
 285: PPUSH
 286: LD_STRING dp-h-1
 288: PPUSH
 289: CALL_OW 94
// SayRadio ( Hayes , dp-h-2 ) ;
 293: LD_EXP 3
 297: PPUSH
 298: LD_STRING dp-h-2
 300: PPUSH
 301: CALL_OW 94
// Say ( Alex , dp-a-2 ) ;
 305: LD_EXP 1
 309: PPUSH
 310: LD_STRING dp-a-2
 312: PPUSH
 313: CALL_OW 88
// SayRadio ( Hayes , dp-h-3 ) ;
 317: LD_EXP 3
 321: PPUSH
 322: LD_STRING dp-h-3
 324: PPUSH
 325: CALL_OW 94
// Say ( Alex , dp-a-3 ) ;
 329: LD_EXP 1
 333: PPUSH
 334: LD_STRING dp-a-3
 336: PPUSH
 337: CALL_OW 88
// InGameOff ;
 341: CALL_OW 9
// CratesGathered = GetResourceType ( GetBase ( AmDep ) , mat_cans ) ;
 345: LD_ADDR_EXP 4
 349: PUSH
 350: LD_INT 1
 352: PPUSH
 353: CALL_OW 274
 357: PPUSH
 358: LD_INT 1
 360: PPUSH
 361: CALL_OW 275
 365: ST_TO_ADDR
// SaveVariable ( CratesGathered , CratesGathered ) ;
 366: LD_EXP 4
 370: PPUSH
 371: LD_STRING CratesGathered
 373: PPUSH
 374: CALL_OW 39
// if GetLives ( AmOil ) > 750 then
 378: LD_INT 2
 380: PPUSH
 381: CALL_OW 256
 385: PUSH
 386: LD_INT 750
 388: GREATER
 389: IFFALSE 403
// AddMedal ( MOil , 1 ) else
 391: LD_STRING MOil
 393: PPUSH
 394: LD_INT 1
 396: PPUSH
 397: CALL_OW 101
 401: GO 414
// AddMedal ( MOil , - 1 ) ;
 403: LD_STRING MOil
 405: PPUSH
 406: LD_INT 1
 408: NEG
 409: PPUSH
 410: CALL_OW 101
// if CratesGathered >= c then
 414: LD_EXP 4
 418: PUSH
 419: LD_VAR 0 2
 423: GREATEREQUAL
 424: IFFALSE 438
// AddMedal ( MCrates , 1 ) else
 426: LD_STRING MCrates
 428: PPUSH
 429: LD_INT 1
 431: PPUSH
 432: CALL_OW 101
 436: GO 449
// AddMedal ( MCrates , - 1 ) ;
 438: LD_STRING MCrates
 440: PPUSH
 441: LD_INT 1
 443: NEG
 444: PPUSH
 445: CALL_OW 101
// AddMedal ( MWelcome , 1 ) ;
 449: LD_STRING MWelcome
 451: PPUSH
 452: LD_INT 1
 454: PPUSH
 455: CALL_OW 101
// GiveMedals ( Main ) ;
 459: LD_STRING Main
 461: PPUSH
 462: CALL_OW 102
// RewardPeople ( Alex ) ;
 466: LD_EXP 1
 470: PPUSH
 471: CALL_OW 43
// SaveCharacters ( Alex , Alex ) ;
 475: LD_EXP 1
 479: PPUSH
 480: LD_STRING Alex
 482: PPUSH
 483: CALL_OW 38
// YouWin ;
 487: CALL_OW 103
// end ; end_of_file
 491: LD_VAR 0 1
 495: RET
// export EpsilonReached ; every 0 0$1 trigger FilterAllUnits ( [ [ f_see , 1 ] , [ f_side , 4 ] ] ) do
 496: LD_INT 101
 498: PUSH
 499: LD_INT 1
 501: PUSH
 502: EMPTY
 503: LIST
 504: LIST
 505: PUSH
 506: LD_INT 22
 508: PUSH
 509: LD_INT 4
 511: PUSH
 512: EMPTY
 513: LIST
 514: LIST
 515: PUSH
 516: EMPTY
 517: LIST
 518: LIST
 519: PPUSH
 520: CALL_OW 69
 524: IFFALSE 817
 526: GO 528
 528: DISABLE
// begin InGameOn ;
 529: CALL_OW 8
// CenterOnUnits ( Alex ) ;
 533: LD_EXP 1
 537: PPUSH
 538: CALL_OW 85
// ComMoveXY ( Alex , GetX ( Paul ) , GetY ( Paul ) ) ;
 542: LD_EXP 1
 546: PPUSH
 547: LD_EXP 2
 551: PPUSH
 552: CALL_OW 250
 556: PPUSH
 557: LD_EXP 2
 561: PPUSH
 562: CALL_OW 251
 566: PPUSH
 567: CALL_OW 111
// repeat Wait ( 0 0$1 ) until See ( 4 , Alex ) ;
 571: LD_INT 35
 573: PPUSH
 574: CALL_OW 67
 578: LD_INT 4
 580: PPUSH
 581: LD_EXP 1
 585: PPUSH
 586: CALL_OW 292
 590: IFFALSE 571
// Wait ( 0 0$2 ) ;
 592: LD_INT 70
 594: PPUSH
 595: CALL_OW 67
// DialogueOn ;
 599: CALL_OW 6
// Say ( Paul , de-p-1 ) ;
 603: LD_EXP 2
 607: PPUSH
 608: LD_STRING de-p-1
 610: PPUSH
 611: CALL_OW 88
// Say ( Alex , de-a-1 ) ;
 615: LD_EXP 1
 619: PPUSH
 620: LD_STRING de-a-1
 622: PPUSH
 623: CALL_OW 88
// Say ( Paul , de-p-2 ) ;
 627: LD_EXP 2
 631: PPUSH
 632: LD_STRING de-p-2
 634: PPUSH
 635: CALL_OW 88
// SayRadio ( Hayes , de-h-1 ) ;
 639: LD_EXP 3
 643: PPUSH
 644: LD_STRING de-h-1
 646: PPUSH
 647: CALL_OW 94
// Say ( Paul , de-p-3 ) ;
 651: LD_EXP 2
 655: PPUSH
 656: LD_STRING de-p-3
 658: PPUSH
 659: CALL_OW 88
// SayRadio ( Hayes , de-h-2 ) ;
 663: LD_EXP 3
 667: PPUSH
 668: LD_STRING de-h-2
 670: PPUSH
 671: CALL_OW 94
// Say ( Alex , de-a-2 ) ;
 675: LD_EXP 1
 679: PPUSH
 680: LD_STRING de-a-2
 682: PPUSH
 683: CALL_OW 88
// Say ( Paul , de-p-4 ) ;
 687: LD_EXP 2
 691: PPUSH
 692: LD_STRING de-p-4
 694: PPUSH
 695: CALL_OW 88
// SayRadio ( Hayes , de-h-3 ) ;
 699: LD_EXP 3
 703: PPUSH
 704: LD_STRING de-h-3
 706: PPUSH
 707: CALL_OW 94
// Say ( Paul , de-p-5 ) ;
 711: LD_EXP 2
 715: PPUSH
 716: LD_STRING de-p-5
 718: PPUSH
 719: CALL_OW 88
// Say ( Alex , de-a-3 ) ;
 723: LD_EXP 1
 727: PPUSH
 728: LD_STRING de-a-3
 730: PPUSH
 731: CALL_OW 88
// RevealFogArea ( 1 , RevealArea ) ;
 735: LD_INT 1
 737: PPUSH
 738: LD_INT 2
 740: PPUSH
 741: CALL_OW 332
// SetSide ( FilterAllUnits ( [ f_type , unit_building ] ) , 1 ) ;
 745: LD_INT 21
 747: PUSH
 748: LD_INT 3
 750: PUSH
 751: EMPTY
 752: LIST
 753: LIST
 754: PPUSH
 755: CALL_OW 69
 759: PPUSH
 760: LD_INT 1
 762: PPUSH
 763: CALL_OW 235
// DialogueOff ;
 767: CALL_OW 7
// InGameOff ;
 771: CALL_OW 9
// ComMoveXY ( Paul , 94 , 62 ) ;
 775: LD_EXP 2
 779: PPUSH
 780: LD_INT 94
 782: PPUSH
 783: LD_INT 62
 785: PPUSH
 786: CALL_OW 111
// AddComMoveToArea ( Paul , PaulExit ) ;
 790: LD_EXP 2
 794: PPUSH
 795: LD_INT 1
 797: PPUSH
 798: CALL_OW 173
// ChangeMissionObjectives ( OHold ) ;
 802: LD_STRING OHold
 804: PPUSH
 805: CALL_OW 337
// EpsilonReached = true ;
 809: LD_ADDR_EXP 5
 813: PUSH
 814: LD_INT 1
 816: ST_TO_ADDR
// end ;
 817: END
// every 0 0$1 trigger IsInArea ( Paul , PaulExit ) do
 818: LD_EXP 2
 822: PPUSH
 823: LD_INT 1
 825: PPUSH
 826: CALL_OW 308
 830: IFFALSE 844
 832: GO 834
 834: DISABLE
// RemoveUnit ( Paul ) ;
 835: LD_EXP 2
 839: PPUSH
 840: CALL_OW 64
 844: END
// every 0 0$1 trigger EpsilonReached do
 845: LD_EXP 5
 849: IFFALSE 865
 851: GO 853
 853: DISABLE
// begin Wait ( 7 7$20 ) ;
 854: LD_INT 15400
 856: PPUSH
 857: CALL_OW 67
// Ending ;
 861: CALL 220 0 0
// end ;
 865: END
// on UnitDestroyed ( un ) do begin if un = Alex then
 866: LD_VAR 0 1
 870: PUSH
 871: LD_EXP 1
 875: EQUAL
 876: IFFALSE 885
// YouLost ( AlexDead ) ;
 878: LD_STRING AlexDead
 880: PPUSH
 881: CALL_OW 104
// if un = AmOil then
 885: LD_VAR 0 1
 889: PUSH
 890: LD_INT 2
 892: EQUAL
 893: IFFALSE 902
// YouLost ( OilDead ) ;
 895: LD_STRING OilDead
 897: PPUSH
 898: CALL_OW 104
// end ; end_of_file
 902: PPOPN 1
 904: END
// every 0 0$1 do
 905: GO 907
 907: DISABLE
// begin Wait ( Rand ( 1 1$0 , 2 2$0 ) ) ;
 908: LD_INT 2100
 910: PPUSH
 911: LD_INT 4200
 913: PPUSH
 914: CALL_OW 12
 918: PPUSH
 919: CALL_OW 67
// CreateCratesArea ( Rand ( 2 , 5 ) , CratesSpawn , true ) ;
 923: LD_INT 2
 925: PPUSH
 926: LD_INT 5
 928: PPUSH
 929: CALL_OW 12
 933: PPUSH
 934: LD_INT 3
 936: PPUSH
 937: LD_INT 1
 939: PPUSH
 940: CALL_OW 55
// enable ;
 944: ENABLE
// end ;
 945: END
// every 0 0$1 trigger EpsilonReached do
 946: LD_EXP 5
 950: IFFALSE 983
 952: GO 954
 954: DISABLE
// begin Wait ( Rand ( 3 3$0 , 4 4$30 ) ) ;
 955: LD_INT 6300
 957: PPUSH
 958: LD_INT 9450
 960: PPUSH
 961: CALL_OW 12
 965: PPUSH
 966: CALL_OW 67
// MineExplosion ( 89 , 25 , 1 ) ;
 970: LD_INT 89
 972: PPUSH
 973: LD_INT 25
 975: PPUSH
 976: LD_INT 1
 978: PPUSH
 979: CALL_OW 453
// end ;
 983: END
