X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fsst.py;h=e857234559a9863c5cd76c7ed78949d7c63ff9d5;hp=be0aef9ad0b8e746dfe851579d89d5f52c562f03;hb=f2df433c2d4f3de8a64c7101c78710cfff8e1b48;hpb=92f31cf7e4c90ef39ee0bbb02d3c4d446f1ad72e diff --git a/src/sst.py b/src/sst.py index be0aef9..e857234 100644 --- a/src/sst.py +++ b/src/sst.py @@ -201,6 +201,7 @@ MAXKLQUAD = 9 FULLCREW = 428 # BSD Trek was 387, that's wrong FOREVER = 1e30 MAXBURST = 3 +MINCMDR = 10 # These functions hide the difference between 0-origin and 1-origin addressing. def VALID_QUADRANT(x, y): return ((x)>=0 and (x)=0 and (y) MAXKLQUAD-1: - return False; # no can do -- neg energy, supernovae, or >MAXKLQUAD-1 Klingons + if not welcoming(iq): + return False; if enemy.type == IHR: return False; # Romulans cannot escape! if not irun: @@ -870,13 +876,9 @@ def moveklings(): def movescom(iq, avoid): # commander movement helper - if iq == game.quadrant or not VALID_QUADRANT(iq.x, iq.y) or \ - game.state.galaxy[iq.x][iq.y].supernova or \ - game.state.galaxy[iq.x][iq.y].klingons > MAXKLQUAD-1: - return 1 # Avoid quadrants with bases if we want to avoid Enterprise - if avoid and iq in game.state.baseq: - return True + if not welcoming(iq) or (avoid and iq in game.state.baseq): + return True if game.justin and not game.iscate: return True # do the move @@ -944,9 +946,7 @@ def supercommander(): ifindit = iwhichb = 0 for (i2, base) in enumerate(game.state.baseq): i = basetbl[i2][0]; # bug in original had it not finding nearest - if base == game.quadrant or base == game.battle or \ - game.state.galaxy[base.x][base.y].supernova or \ - game.state.galaxy[base.x][base.y].klingons > MAXKLQUAD-1: + if base==game.quadrant or base==game.battle or not welcoming(base): continue # if there is a commander, and no other base is appropriate, # we will take the one with the commander @@ -4739,7 +4739,10 @@ def orbit(): if damaged(DWARPEN) and damaged(DIMPULS): prout(_("Both warp and impulse engines damaged.")) return - if not game.plnet.is_valid() or abs(game.sector.x-game.plnet.x) > 1 or abs(game.sector.y-game.plnet.y) > 1: + if not game.plnet.is_valid(): + prout("There is no planet in this sector.") + return + if abs(game.sector.x-game.plnet.x)>1 or abs(game.sector.y-game.plnet.y)>1: crmshp() prout(_(" not adjacent to planet.")) skip(1) @@ -5736,16 +5739,6 @@ def setup(): game.landed = False game.alive = True game.docfac = 0.25 - for i in range(GALSIZE): - for j in range(GALSIZE): - quad = game.state.galaxy[i][j] - quad.charted = 0 - quad.planet = None - quad.romulans = 0 - quad.klingons = 0 - quad.starbase = False - quad.supernova = False - quad.status = "secure" # Starchart is functional but we've never seen it game.lastchart = FOREVER # Put stars in the galaxy @@ -5779,8 +5772,7 @@ def setup(): if not contflag: break game.state.baseq.append(w) - game.state.galaxy[w.x][w.y].starbase = True - game.state.chart[w.x][w.y].starbase = True + game.state.galaxy[w.x][w.y].starbase = game.state.chart[w.x][w.y].starbase = True # Position ordinary Klingon Battle Cruisers krem = game.inkling klumper = 0.25*game.skill*(9.0-game.length)+1.0 @@ -5804,10 +5796,9 @@ def setup(): for i in range(game.incom): while True: w = randplace(GALSIZE) - if (game.state.galaxy[w.x][w.y].klingons or withprob(0.25)) and \ - not game.state.galaxy[w.x][w.y].supernova and \ - game.state.galaxy[w.x][w.y].klingons <= MAXKLQUAD-1 and \ - not w in game.state.kcmdr[:i]: + if not welcoming(w) or w in game.state.kcmdr: + continue + if (game.state.galaxy[w.x][w.y].klingons or withprob(0.25)): break game.state.galaxy[w.x][w.y].klingons += 1 game.state.kcmdr.append(w) @@ -5842,7 +5833,7 @@ def setup(): if game.state.nscrem > 0: while True: w = randplace(GALSIZE) - if not game.state.galaxy[w.x][w.y].supernova and game.state.galaxy[w.x][w.y].klingons <= MAXKLQUAD: + if not welcoming(w): break game.state.kscmdr = w game.state.galaxy[w.x][w.y].klingons += 1 @@ -6008,7 +5999,7 @@ def choose(): game.state.remtime = 7.0 * game.length game.intime = game.state.remtime game.state.remkl = game.inkling = 2.0*game.intime*((game.skill+1 - 2*randreal())*game.skill*0.1+.15) - game.incom = min(10, int(game.skill + 0.0625*game.inkling*randreal())) + game.incom = min(MINCMDR, int(game.skill + 0.0625*game.inkling*randreal())) game.state.remres = (game.inkling+4*game.incom)*game.intime game.inresor = game.state.remres if game.inkling > 50: @@ -6097,6 +6088,7 @@ def newqad(shutup): game.plnet = dropin(IHP) else: game.plnet = dropin(IHW) + # Check for condition newcnd() # Check for RNZ @@ -6171,7 +6163,7 @@ def setpassword(): break else: game.passwd = "" - for i in range(3): + for i in range(8): game.passwd += chr(ord('a')+randrange(26)) # Code from sst.c begins here