Include ">hongkong"; [ PortStuff newloc i j option retirable; if (newloc) { ! Monthly updates LowerWindowSetup(1); print "Arriving at ", (string) locnames--> newloc, "^"; ShortPause(); finit(real1,"1.005"); fmul(real2,real1,bank); frnd(bank,real2); finit(real1,"1.1"); fmul(real2,real1,debt); frnd(debt,real2); time++; month++; location=newloc; DrawTopWindow(); } ! Yearly updates if(month>11) { year=year+1; month=0; hardiness=hardiness+10; firepower=firepower+1; for(i=0:i<28:i++) pricebases-->i=pricebases-->i+random(2)-1; } LowerWindowSetup(0); if(location==1) { ! Stuff only done in Hong Kong: if(~~((fpclassify(cash) & FP_ZERO) || li)) LiYuen(); if (dam2>0) McHenry(); if(ElderBrother()==-1) return -1; } fitos(real3,32766); fitos(real4,random(32767)-1); fdiv(real1,real4,real3); fitos(real3,1000); fmul(real2,real1,real3); fitos(real1,time+5); fmul(real3,real2,real1); fitos(real2,6); fdiv(real1,real3,real2); fitos(real2,999); fadd(real3,real1,real2); frnd(real1,real3); fitos(real2,(shipsize/50)*((dam2>0)+1)); fmul(real3,real1,real2); frnd(real1,real3); ! i=(999+random((1000*time+5)/6))*(shipsize/50)*((dam2>0)+1); ! fitos(real1,i); if(random(4)==1 && fle(real1,cash)) { LowerWindowSetup(0); print "Do you wish to trade in your "; if(dam2==0) print "fine"; else { style underline; print "damaged"; style roman; } print " ship for one with 50 more capacity by paying an additional ", (fpword) real1, ", Taipan? "; if (YorN()) { fsub(real2,cash,real1); fcpy(cash,real2); fitos(real1,50); fadd(real2,holdfree,real1); frnd(holdfree,real2); shipsize=shipsize+50; dam2=0; DrawTopWindow(); } } fitos(real3,32766); fitos(real4,random(32767)-1); fdiv(real1,real4,real3); fitos(real3,1000); fmul(real2,real1,real3); fitos(real1,time+5); fmul(real3,real2,real1); fitos(real2,6); fdiv(real1,real3,real2); fitos(real2,500); fadd(real3,real1,real2); frnd(real1,real3); if(random(3)==1 && fle(real1,cash)) { LowerWindowSetup(0); print "Do you wish to buy a ship's gun for ", (fpword) real1, ", Taipan? "; if (YorN()) { fitos(real2,GUN_SIZE); if(fgt(real2,holdfree)) { print "Your ship would be overburdened, Taipan!"; Beep2518(); MedPause(); } else { fsub(real3,cash,real1); fcpy(cash,real3); guns=guns+1; fsub(real3,holdfree,real2); frnd(holdfree,real3); DrawTopWindow(); } } } if (location ~= 1 && (random(18)==1) && ~~(fpclassify(cargo) & FP_ZERO)) { fitos(real3,32766); fitos(real4,random(32767)-1); fdiv(real1,real4,real3); fmul(real2,real1,cash); finit(real1,"1.8"); fdiv(real3,real2,real1); frnd(real1,real3); LowerWindowSetup(0); print "Bad joss!!^The local authorities have siezed your Opium cargo and have also fined you ", (fpword) real1, ", Taipan!"; fadd(real2,holdfree,cargo); frnd(holdfree,real2); fitos(cargo,0); fsub(real3,cash,real1); frnd(cash,real3); DrawTopWindow(); Beep2512(); MedPause(); } if(whvacancyi) { j=(random(whcargo-->i*5/9)-1); whcargo-->i=whcargo-->i-j; whvacancy=whvacancy+j; } DrawTopWindow(); Beep2512(); MedPause(); } li = li && random(20)~=1; if (li==0 && location ~=1 && random(4)~=1) { LowerWindowSetup(0); print "Li Yuen has send a lieutenant, Taipan. He says his admiral wishes to see you in Hong Kong, posthaste!"; Beep2521(); MedPause(); } SetPrices(); RobberCheck(); do { LowerWindowSetup(2); print "^Shall I Buy, Sell, "; retirable=0; if (location~=1) print "or Quit Trading? "; else { print "Visit bank, Transfer cargo, "; fadd(real1,cash,bank); fsub(real2,real1,debt); fitos(real1,1000); fmul(real3,real1,real1); if(fgt(real2,real3)) { retirable=1; print "Quit Trading, or Retire? "; } else print "or Quit Trading? "; } @read_char 1 -> option; switch(option) { 'b','B': BuyCargo(); 's','S': SellCargo(); 'v','V': if (location~=1) StdBeep(); else VisitBank(); 't','T': if (location~=1) StdBeep(); else TransferCargo(); 'r','R': if (~~retirable) StdBeep(); else { LowerWindowSetup(0); ! font off; ! style reverse; ! spaces 25; ! style roman; ! new_line; font off; style reverse; print " Y o u ' r e a "; style roman; new_line; font off; style reverse; spaces 25; style roman; new_line; font off; style reverse; print " M I L L I O N A I R E ! "; style roman; new_line; ! font off; ! style reverse; ! spaces 25; ! style roman; ! new_line; font on; ShortPause(); return -1; } 'q','Q': fitos(real1,0); if(flt(holdfree,real1)) { LowerWindowSetup(0); print "You're ship is overloaded, Taipan!!"; Beep2518(); MedPause(); option='b'; } else { while(1) { LowerWindowSetup(0); print "Taipan, do you wish to go to:^"; for(i=1:i<=6:i++) print i,") ", (string) locnames-->i, ", "; print "or 7) ", (string) locnames-->7, " ? "; do { @read_char 1->i; i=i-'0'; if(i<0 || i>8) StdBeep(); } until(i>0 && i<8); print (string) locnames-->i,"^"; if(i==location) { print "^You're already here, Taipan."; Beep2518(); MedPause(); } else return i; } } default: StdBeep(); } } until(option=='q' or 'Q'); ]; [ RobberCheck; fitos(real1,25000); if(random(20)==1 && fgt(cash,real1)) { fitos(real3,32766); fitos(real4,random(32767)-1); fdiv(real1,real4,real3); fmul(real2,real1,cash); finit(real1,"1.4"); fdiv(real3,real2,real1); frnd(real1,real3); LowerWindowSetup(0); print "Bad joss!!^You've been beaten up and robbed of ", (fpword) real1, " in cash, Taipan!!"; fsub(real2,cash,real1); frnd(cash,real2); DrawTopWindow(); Beep2512(); MedPause(); } ]; [ SetPrices i; fitos(real1,pricebases-->(location-1)); fitos(real2,2); fdiv(real3,real1,real2); fitos(real1,random(3)*1000); fmul(real2,real1,real3); frnd(prices,real2); fitos(real1,pricebases-->(location+6)); fitos(real2,2); fdiv(real3,real1,real2); fitos(real1,random(3)*100); fmul(real2,real1,real3); frnd(prices+4,real2); fitos(real1,pricebases-->(location+13)); fitos(real2,2); fdiv(real3,real1,real2); fitos(real1,random(3)*10); fmul(real2,real1,real3); frnd(prices+8,real2); fitos(real1,pricebases-->(location+20)); fitos(real2,2); fdiv(real3,real1,real2); fitos(real1,random(3)); fmul(prices+12,real1,real3); if (random(9)==1) { i=random(4)-1; LowerWindowSetup(0); print "Taipan!! The price of ", (string) cargonames-->i; if(random(2)==1) { fitos(real2,5); fdiv(real3,prices+4*i,real2); frnd(prices+4*i,real3); print " has dropped to ", (fp) (prices+4*i),"!!"; } else { fitos(real2,random(5)+4); fmul(real3,prices+4*i,real2); frnd(prices+4*i,real3); print " has risen to ", (fp) (prices+4*i),"!!"; } Beep2518(); MedPause(); } ]; [ BuyCargo i option; print "Buy^"; print "What do you wish me to buy, Taipan? "; i=0; do { @read_char 1 -> option; switch(option) { 'O','o': i=1; 'S','s': i=2; 'A','a': i=3; 'G','g': i=4; default: StdBeep(); i=0; } } until(i); print (string) cargonames-->(--i),"^"; fdiv(real1,cash,prices+4*i); frnd(real2,real1,FE_DOWNWARD); fitos(real1,1000); fmul(real3,real1,real1); fmul(real4,real3,real1); fitos(real1,1); fsub(real3,real4,real1); frnd(real1,real3); fmin(real3,real1,real2); do { LowerWindowSetup(2); style reverse; print "You can afford ", (fp) real3; style roman; new_line; print "How much ", (string) cargonames-->i, " shall I buy, Taipan? "; option=ReadFP(real6,real3); if(~~option) StdBeep(); else { fmul(real5,real6,prices+4*i); if(fgt(real5,cash)) { option=0; Beep2524(); } } } until (option); fsub(real4,holdfree,real6); frnd(holdfree,real4); fadd(real4,cargo+4*i,real6); frnd(cargo+4*i,real4); fsub(real4,cash,real5); frnd(cash,real4); DrawTopWindow(); ]; [ SellCargo i option; print "Sell^"; print "What do you wish me to sell, Taipan? "; i=0; do { @read_char 1 -> option; switch(option) { 'O','o': i=1; 'S','s': i=2; 'A','a': i=3; 'G','g': i=4; default: StdBeep(); i=0; } } until(i); print (string) cargonames-->(--i),"^"; do { LowerWindowSetup(2); print "How much ", (string) cargonames-->i, " shall I sell, Taipan? "; option=ReadFP(real6,cargo+4*i); if(~~option) StdBeep(); if(option && fgt(real6,cargo+4*i)) { option=0; Beep2524(); } } until (option); fadd(real4,holdfree,real6); frnd(holdfree,real4); fsub(real4,cargo+4*i,real6); frnd(cargo+4*i,real4); fmul(real5,real6,prices+4*i); fadd(real4,cash,real5); frnd(cash,real4); DrawTopWindow(); ];