def AddSysDict(cursys): #pick random fighter from insysenemies with .3 probability OR pick one from the friendlies list. # debug.debug('Addsysdict') sysfaction = VS.GetGalaxyFaction(cursys) global fgnames, fglists i = 0 AddBasesToSystem(sysfaction, cursys) for i in range(1 + vsrandom.randrange( fg_util.MinNumFlightgroupsInSystem(cursys) - 1, fg_util.MaxNumFlightgroupsInSystem(cursys)) ): #number of fgs in a system. faction = sysfaction friendly = 0 if vsrandom.random( ) < .3 or sysfaction == 'unknown' or sysfaction == '': faction = faction_ships.get_rabble_of(sysfaction) else: faction = faction_ships.get_friend_of(sysfaction) if (faction == sysfaction): friendly = 1 if (sysfaction in faction_ships.production_centers): if (cursys in faction_ships.production_centers[sysfaction]): friendly = 2 #if (friendly): # debug.debug(faction+" "+sysfaction+" "+cursys) factionnr = faction_ships.factionToInt(faction) global maxshipsinfg typenumbertuple = GenerateFgShips( vsrandom.randrange(maxshipsinfg) + 1, factionnr, friendly) fgname = GetNewFGName(faction) fg_util.AddShipsToFG(fgname, faction, typenumbertuple, cursys) return i
def AddSysDict (cursys): #pick random fighter from insysenemies with .3 probability OR pick one from the friendlies list. # debug.debug('Addsysdict') sysfaction=VS.GetGalaxyFaction(cursys) global fgnames, fglists i=0 AddBasesToSystem(sysfaction, cursys) for i in range (1+vsrandom.randrange(fg_util.MinNumFlightgroupsInSystem(cursys)-1,fg_util.MaxNumFlightgroupsInSystem(cursys))): #number of fgs in a system. faction=sysfaction friendly=0 if vsrandom.random()<.3 or sysfaction=='unknown' or sysfaction=='': faction=faction_ships.get_rabble_of(sysfaction) else: faction=faction_ships.get_friend_of(sysfaction) if (faction==sysfaction): friendly=1 if (sysfaction in faction_ships.production_centers): if (cursys in faction_ships.production_centers[sysfaction]): friendly=2 #if (friendly): # debug.debug(faction+" "+sysfaction+" "+cursys) factionnr=faction_ships.factionToInt(faction) global maxshipsinfg typenumbertuple=GenerateFgShips(vsrandom.randrange(maxshipsinfg)+1,factionnr,friendly) fgname=GetNewFGName(faction) fg_util.AddShipsToFG (fgname,faction,typenumbertuple,cursys) return i
def GetNewFGName(faction): factionnr=faction_ships.factionToInt(faction) global numericalfaction if(factionnr>=len(fgnames)): debug.error("Faction "+faction+" unable to create fgname") numericalfaction+=1 return "Alpha_"+str(numericalfaction) if (not len(fgnames[factionnr])): fgnames[factionnr]=fg_util.TweakFGNames(origfgnames[factionnr]) fg_util.origfgoffset+=1 k=vsrandom.randrange(0,len(fgnames[factionnr])); #pop returns item inside array fgname=fgnames[factionnr][k] del fgnames[factionnr][k] return fgname
def GetNewFGName(faction): factionnr = faction_ships.factionToInt(faction) global numericalfaction if (factionnr >= len(fgnames)): debug.error("Faction " + faction + " unable to create fgname") numericalfaction += 1 return "Alpha_" + str(numericalfaction) if (not len(fgnames[factionnr])): fgnames[factionnr] = fg_util.TweakFGNames(origfgnames[factionnr]) fg_util.origfgoffset += 1 k = vsrandom.randrange(0, len(fgnames[factionnr])) #pop returns item inside array fgname = fgnames[factionnr][k] del fgnames[factionnr][k] return fgname
def Preprocess(self): debug.debug("Entering Preprocess()") self._preprocess = 1 self._dyn_nr_ships = [] self._nr_ships = self.num import faction_ships if self.dynfg != '': import fg_util tn = fg_util.ShipsInFG(self.dynfg, self.faction) debug.info('Dynamically launching from SaveString flightgroup ' + self.dynfg + ' with ships: ' + str(tn) + ' faction ' + self.faction) knum = 0 if (tn != [] and self.type != ''): for i in range(len(tn)): if (tn[i][0] == self.type): knum = tn[i][1] if (knum > self.num): knum = self.num self._dyn_nr_ships = [(self.type, knum)] del tn[i] break ## if (tn==[]): ## print 'Dyn-Launch: tn==[]' ## self.dynfg='' elif (tn == []): debug.info("Dyn-Launch: tn==" + str(tn) + ", dynfg=='" + str(self.dynfg) + "' getting random fighter") self.type = faction_ships.getRandomFighterInt( faction_ships.factionToInt(self.faction)) self.fg = self.dynfg self.dynfg = '' if self.forcetype and len( self._dyn_nr_ships) == 0 and self.type != '': self._dyn_nr_ships = [(self.type, 1)] knum = 1 for i in tn: if (knum >= self.num): break if (self.capitalp or (not faction_ships.isCapital(i[0]))): if (i[1] > self.num - knum): i = (i[0], self.num - knum) self._dyn_nr_ships += [i] knum += i[1] self._nr_ships = self.num - knum
def Preprocess(self): self._preprocess = 1 self._dyn_nr_ships = [] self._nr_ships = self.num import faction_ships if self.dynfg != "": import fg_util tn = fg_util.ShipsInFG(self.dynfg, self.faction) debug.debug( "dynamic launching from " + str(tn) + " from flightgroup " + self.dynfg + " faction " + self.faction ) knum = 0 if tn != [] and self.type != "": for i in range(len(tn)): if tn[i][0] == self.type: knum = tn[i][1] if knum > self.num: knum = self.num self._dyn_nr_ships = [(self.type, knum)] del tn[i] break ## if (tn==[]): ## print 'Dyn-Launch: tn==[]' ## self.dynfg='' elif tn == []: debug.error("Dyn-Launch: tn==[], dynfg=='' Error 47") self.type = faction_ships.getRandomFighterInt(faction_ships.factionToInt(self.faction)) self.fg = self.dynfg self.dynfg = "" if self.forcetype and len(self._dyn_nr_ships) == 0 and self.type != "": self._dyn_nr_ships = [(self.type, 1)] knum = 1 for i in tn: if knum >= self.num: break if self.capitalp or (not faction_ships.isCapital(i[0])): if i[1] > self.num - knum: i = (i[0], self.num - knum) self._dyn_nr_ships += [i] knum += i[1] self._nr_ships = self.num - knum
def Preprocess (self): debug.debug("Entering Preprocess()") self._preprocess=1 self._dyn_nr_ships=[] self._nr_ships=self.num import faction_ships if self.dynfg != '': import fg_util tn=fg_util.ShipsInFG(self.dynfg,self.faction) debug.info('Dynamically launching from SaveString flightgroup '+self.dynfg + ' with ships: '+str(tn)+' faction '+ self.faction) knum=0 if (tn!=[] and self.type!=''): for i in range (len(tn)): if (tn[i][0]==self.type): knum=tn[i][1] if (knum>self.num): knum=self.num self._dyn_nr_ships=[(self.type,knum)] del tn[i] break ## if (tn==[]): ## print 'Dyn-Launch: tn==[]' ## self.dynfg='' elif (tn==[]): debug.info("Dyn-Launch: tn=="+str(tn)+", dynfg=='"+str(self.dynfg)+"' getting random fighter") self.type=faction_ships.getRandomFighterInt(faction_ships.factionToInt(self.faction)) self.fg = self.dynfg self.dynfg='' if self.forcetype and len(self._dyn_nr_ships)==0 and self.type!='': self._dyn_nr_ships=[(self.type,1)] knum=1 for i in tn: if (knum>=self.num): break if (self.capitalp or (not faction_ships.isCapital(i[0])) ): if (i[1]>self.num-knum): i = (i[0],self.num-knum) self._dyn_nr_ships+=[i] knum+=i[1] self._nr_ships=self.num-knum
def Preprocess (self): self._preprocess=1 self._dyn_nr_ships=[] self._nr_ships=self.num import faction_ships if self.dynfg!='': import fg_util tn=fg_util.ShipsInFG(self.dynfg,self.faction) print 'dynamic launching from '+str(tn)+' from flightgroup '+self.dynfg + ' faction '+ self.faction knum=0 if (tn!=[] and self.type!=''): for i in range (len(tn)): if (tn[i][0]==self.type): knum=tn[i][1] if (knum>self.num): knum=self.num self._dyn_nr_ships=[(self.type,knum)] del tn[i] break ## if (tn==[]): ## print 'Dyn-Launch: tn==[]' ## self.dynfg='' elif (tn==[]): print "Dyn-Launch: tn==[], dynfg==\'\' Error 47" self.type=faction_ships.getRandomFighterInt(faction_ships.factionToInt(self.faction)) self.fg = self.dynfg self.dynfg='' if self.forcetype and len(self._dyn_nr_ships)==0 and self.type!='': self._dyn_nr_ships=[(self.type,1)] knum=1 for i in tn: if (knum>=self.num): break if (self.capitalp or (not faction_ships.isCapital(i[0])) ): if (i[1]>self.num-knum): i = (i[0],self.num-knum) self._dyn_nr_ships+=[i] knum+=i[1] self._nr_ships=self.num-knum
def AddSysDict (cursys): global _generatedsys, _last_progress_percent #pick random fighter from insysenemies with .3 probability OR pick one from the friendlies list. # debug.debug('Addsysdict') sysfaction=VS.GetGalaxyFaction(cursys) numflightgroups = 1+vsrandom.randrange(fg_util.MinNumFlightgroupsInSystem(cursys)-1,fg_util.MaxNumFlightgroupsInSystem(cursys)) #debug.debug("Initializing system %s with %d flightgroups... " % (cursys,numflightgroups)) progress_percent = (float(_generatedsys) / getSystemCount()) if progress_percent - _last_progress_percent > 0.01: ShowProgress.setProgressBar("loading",progress_percent) ShowProgress.setProgressMessage("loading","Generating dynamic universe (%.2f%%)" % (100*progress_percent)) _last_progress_percent = progress_percent _generatedsys += 1 global fgnames, fglists i=0 AddBasesToSystem(sysfaction, cursys) adjsystems=getAdjacentSystemList(cursys) for i in xrange(len(faction_ships.factions)): thisfac=faction_ships.factions[i] thisfactionnr=faction_ships.factionToInt(thisfac) rel=VS.GetRelation(sysfaction,thisfac) iscit=VS.isCitizen(thisfac) if iscit and thisfac.find(sysfaction)!=-1: #debug.debug("generating spc civilian for "+cursys+" faction "+thisfac) #do somethign special for this military faction if thisfac==sysfaction: pass elif iscit: for neighbor in adjsystems: if (VS.GetRelation(thisfac,VS.GetGalaxyFaction(neighbor))>-.05): #fgname=cursys+"->"+neighbor fgname="(CivReg) "+GetNewFGName(thisfac) typenumbertuple=GenerateCivilianFgShips(thisfac,thisfactionnr,True) fg_util.AddShipsToFG (fgname,thisfac,typenumbertuple,cursys) fgname="Insystem_"+cursys; typenumbertuple=GenerateCivilianFgShips(thisfac,thisfactionnr,False) if iscit: #debug.debug("generating gen civilian for "+cursys+" faction "+thisfac) if VS.GetRelation(thisfac,sysfaction)>-.05:#brave citizens of the new order... fgname=GetNewFGName(thisfac) typenumbertuple=GenerateCivilianFgShips(thisfac,thisfactionnr,True) fg_util.AddShipsToFG (fgname,thisfac,typenumbertuple,cursys) friendlychance=.7 if cursys in faction_ships.fortress_systems: friendlychance=faction_ships.fortress_systems[cursys] #debug.debug('enemy chance for '+cursys +'= '+str(friendlychance)) for i in xrange (numflightgroups): #number of fgs in a system. faction=sysfaction friendly=0 if not sysfaction or sysfaction=='unknown' or vsrandom.random()>friendlychance: faction=faction_ships.get_rabble_of_no_citizen(sysfaction)#why even have citizens on the list then else: faction=faction_ships.get_friend_of_no_citizen(sysfaction)#likewise--- maybe this should be a faction_ships fix if (faction==sysfaction): friendly=1 if (sysfaction in faction_ships.production_centers): if (cursys in faction_ships.production_centers[sysfaction]): friendly=2 #if (friendly): # debug.debug(faction+" "+sysfaction+" "+cursys) factionnr=faction_ships.factionToInt(faction) global maxshipsinfg typenumbertuple=GenerateFgShips(vsrandom.randrange(maxshipsinfg)+1,factionnr,friendly) fgname=GetNewFGName(faction) fg_util.AddShipsToFG (fgname,faction,typenumbertuple,cursys) return i
def AddSysDict(cursys): global _generatedsys, _last_progress_percent #pick random fighter from insysenemies with .3 probability OR pick one from the friendlies list. # debug.debug('Addsysdict') sysfaction = VS.GetGalaxyFaction(cursys) numflightgroups = 1 + vsrandom.randrange( fg_util.MinNumFlightgroupsInSystem(cursys) - 1, fg_util.MaxNumFlightgroupsInSystem(cursys)) #debug.debug("Initializing system %s with %d flightgroups... " % (cursys,numflightgroups)) progress_percent = (_generatedsys / getSystemCount()) if progress_percent - _last_progress_percent > 0.01: ShowProgress.setProgressBar("loading", progress_percent) ShowProgress.setProgressMessage( "loading", "Generating dynamic universe (%.2f%%)" % (100 * progress_percent)) _last_progress_percent = progress_percent _generatedsys += 1 global fgnames, fglists i = 0 AddBasesToSystem(sysfaction, cursys) adjsystems = getAdjacentSystemList(cursys) for i in range(len(faction_ships.factions)): thisfac = faction_ships.factions[i] thisfactionnr = faction_ships.factionToInt(thisfac) rel = VS.GetRelation(sysfaction, thisfac) iscit = VS.isCitizen(thisfac) if iscit and thisfac.find(sysfaction) != -1: #debug.debug("generating spc civilian for "+cursys+" faction "+thisfac) #do somethign special for this military faction if thisfac == sysfaction: pass elif iscit: for neighbor in adjsystems: if (VS.GetRelation(thisfac, VS.GetGalaxyFaction(neighbor)) > -.05): #fgname=cursys+"->"+neighbor fgname = "(CivReg) " + GetNewFGName(thisfac) typenumbertuple = GenerateCivilianFgShips( thisfac, thisfactionnr, True) fg_util.AddShipsToFG(fgname, thisfac, typenumbertuple, cursys) fgname = "Insystem_" + cursys typenumbertuple = GenerateCivilianFgShips( thisfac, thisfactionnr, False) if iscit: #debug.debug("generating gen civilian for "+cursys+" faction "+thisfac) if VS.GetRelation( thisfac, sysfaction) > -.05: #brave citizens of the new order... fgname = GetNewFGName(thisfac) typenumbertuple = GenerateCivilianFgShips( thisfac, thisfactionnr, True) fg_util.AddShipsToFG(fgname, thisfac, typenumbertuple, cursys) friendlychance = .7 if cursys in faction_ships.fortress_systems: friendlychance = faction_ships.fortress_systems[cursys] #debug.debug('enemy chance for '+cursys +'= '+str(friendlychance)) for i in range(numflightgroups): #number of fgs in a system. faction = sysfaction friendly = 0 if not sysfaction or sysfaction == 'unknown' or vsrandom.random( ) > friendlychance: faction = faction_ships.get_rabble_of_no_citizen( sysfaction) #why even have citizens on the list then else: faction = faction_ships.get_friend_of_no_citizen( sysfaction ) #likewise--- maybe this should be a faction_ships fix if (faction == sysfaction): friendly = 1 if (sysfaction in faction_ships.production_centers): if (cursys in faction_ships.production_centers[sysfaction]): friendly = 2 #if (friendly): # debug.debug(faction+" "+sysfaction+" "+cursys) factionnr = faction_ships.factionToInt(faction) global maxshipsinfg typenumbertuple = GenerateFgShips( vsrandom.randrange(maxshipsinfg) + 1, factionnr, friendly) fgname = GetNewFGName(faction) fg_util.AddShipsToFG(fgname, faction, typenumbertuple, cursys) return i
def contractMissionsFor(fac,baseship,minsysaway,maxsysaway): global totalMissionNumber global insysMissionNumber totalMissionNumber=0 insysMissionNumber=0 facnum=faction_ships.factionToInt(fac) enemies = list(faction_ships.enemies[facnum]) script='' cursystem = VS.getSystemFile() thisfaction = VS.GetGalaxyFaction (cursystem) preferredfaction=None if (VS.GetRelation (fac,thisfaction)>=0): preferredfaction=thisfaction #try to stay in this territory l=[] num_wingmen=2 num_rescue=2 num_defend=1 num_idefend=2 num_bounty=1 num_ibounty=1 num_patrol=1 num_ipatrol=1 num_escort=1 num_iescort=1 mincount=2 for i in range (minsysaway,maxsysaway+1): for j in getSystemsNAway(cursystem,i,preferredfaction): if (i<2 and num_rescue>0): if j[-1] in dynamic_battle.rescuelist: generateRescueMission(j,dynamic_battle.rescuelist[j[-1]]) if checkCreatedMission(): num_rescue-=1 # if (0 and i==0): # generateRescueMission(j,("confed","Shadow","pirates")) l = dynamic_battle.BattlesInSystem(j[-1]) nodefend=1 for k in l: if (VS.GetRelation(fac,k[1][1])>=0): if ((j[-1]==VS.getSystemFile() and num_idefend<=0) or (j[-1]!=VS.getSystemFile() and num_defend<=0)): mungeFixerPct() debug.debug("Munged") else: nodefend=0 generateDefendMission(j,k[1][0],k[1][1],k[0][0],k[0][1]) restoreFixerPct() if checkInsysNum(): num_idefend-=1 if checkMissionNum(): num_defend-=1 debug.debug("Generated defendX with insys at: "+str(num_idefend)+" and outsys at "+str (num_defend)) (m,nummerchant,numthisfac)=GetFactionToDefend(thisfaction, fac, j[-1]) if preferredfaction: for kk in faction_ships.enemies[faction_ships.factiondict[thisfaction]]: k=faction_ships.intToFaction(kk) for mm in fg_util.FGsInSystem(k,j[-1]): if (i==0 or vsrandom.randrange(0,4)==0):#fixme betterthan 4 if nodefend and len(m) and vsrandom.random()<.4: if 1:#for i in range(vsrandom.randrange(1,3)): insys=(j[-1]==VS.getSystemFile()) if (insys and num_idefend<=0): mungeFixerPct() elif (num_defend<=0 and not insys): mungeFixerPct() rnd=vsrandom.randrange(0,len(m)) def_fg=m[rnd] def_fac = "merchant" if rnd>=nummerchant: def_fac= thisfaction if rnd>=numthisfac: def_fac = fac generateDefendMission(j,def_fg,def_fac,mm,k) restoreFixerPct() if checkInsysNum(): num_idefend-=1 if checkMissionNum(): num_defend-=1 debug.debug("Generated defendY with insys at: "+str(num_idefend)+" and outsys at "+str (num_defend)) nodefend=0 elif ((i==0 or vsrandom.random()<.5)): if ((j[-1]==VS.getSystemFile() and num_ibounty<=0) or (j[-1]!=VS.getSystemFile() and num_bounty<=0)): mungeFixerPct() generateBountyMission(j,mm,k) restoreFixerPct() if checkInsysNum(): debug.debug(" decrementing INSYS bounty to "+str(num_ibounty)) num_ibounty-=1 if checkMissionNum(): debug.debug(" decrementing bounty to "+str(num_bounty)) num_bounty-=1 # mincount=-2 if i==0: mincount=1 for k in range(vsrandom.randrange(mincount,4)): ###FIXME: choose a better number than 4. if k<0: k=0 rnd=vsrandom.random() if (rnd<.15): # 15% - nothing pass if (rnd<.5 or i==0): # 35% - Patrol Mission if ((j[-1]==VS.getSystemFile() and num_ipatrol<=0) or (j[-1]!=VS.getSystemFile() and num_patrol<=0)): mungeFixerPct() if (vsrandom.randrange(0,2) or j[-1] in faction_ships.fortress_systems): generatePatrolMission(j,vsrandom.randrange(4,10)) else: generateCleansweepMission(j,vsrandom.randrange(4,10),faction_ships.get_enemy_of(fac)) restoreFixerPct() if checkInsysNum(): num_ipatrol-=1 if checkMissionNum(): num_patrol-=1 else: # 50% - Cargo mission numcargos=vsrandom.randrange(1,25) playership=VS.getPlayer().getName() try: hold=int(VS.LookupUnitStat(playership,"privateer","Hold_Volume")) except: hold=10; if hold<10: hold=10; if hold > 32000: hold = 32000 numcargos=vsrandom.randrange(hold//5, hold//2) if numcargos < 20: numcargos=vsrandom.randrange(hold//2, hold) category='' if (rnd>.87 and fac!='confed' and fac != "ISO" and fac!="militia" and fac!="homeland-security" and fac!="kilrathi" and fac!="merchant"): category='Contraband' else: for myiter in range (100): carg=VS.getRandCargo(numcargos,category) category=carg.GetCategory() if (category[:9] != 'Fragments' and category[:10]!='Contraband' and category.find('upgrades')!=0 and (category.find('starships')!=0 or rnd>.999)): break if (myiter!=99): category='' if baseship: faction=fac name=baseship.getName() if baseship.isPlanet(): faction="planets" name=baseship.getFullname() debug.info("TRADING") debug.debug("getFullname(): %s, getName(): %s, faction: %s" % (baseship.getFullname(), baseship.getName(), faction)) exports=trading.getNoStarshipExports(name,faction,20) debug.debug("exports:\n%s" % (debug.pp(exports))) if (category.find("assengers")==-1 and len(exports)): category=exports[vsrandom.randrange(0,len(exports))][0] #debug.debug("CATEGORY OK "+category) generateCargoMission(j,numcargos,category,fac) numescort = vsrandom.randrange(0,2) if (numescort>len(m)): numescort=len(m) count=0 for k in m: if (i==0): if vsrandom.random()<.92: count+=1 continue elif (vsrandom.random()<.97): count+=1 continue f = "merchant" if count>=nummerchant: f= thisfaction if count>=numthisfac: f = fac if (vsrandom.random()<.25): if (num_wingmen>0): generateWingmanMission(k,f) num_wingmen-=1 elif (i==0): if (vsrandom.random()<.25): if num_iescort<=0: mungeFixerPct() generateEscortLocal(j,k,f) restoreFixerPct() if checkCreatedMission(): num_iescort-=1 else: if num_escort<=0: mungeFixerPct() generateEscortMission(j,k,f) restoreFixerPct() if checkCreatedMission(): num_escort-=1 count+=1
def contractMissionsFor(fac, minsysaway, maxsysaway): global totalMissionNumber global insysMissionNumber totalMissionNumber = 0 insysMissionNumber = 0 facnum = faction_ships.factionToInt(fac) enemies = list(faction_ships.enemies[facnum]) script = '' cursystem = VS.getSystemFile() thisfaction = VS.GetGalaxyFaction(cursystem) preferredfaction = None if (VS.GetRelation(fac, thisfaction) >= 0): preferredfaction = thisfaction #try to stay in this territory l = [] num_wingmen = 2 num_rescue = 2 num_defend = 1 num_idefend = 2 num_bounty = 1 num_ibounty = 1 num_patrol = 1 num_ipatrol = 1 num_escort = 1 num_iescort = 1 mincount = 2 usedcats = {} plr = VS.getPlayer() if plr: for i in range(plr.numCargo()): usedcats[plr.GetCargoIndex(i).GetCategory()] = 1 for i in range(minsysaway, maxsysaway + 1): for j in getSystemsNAway(cursystem, i, preferredfaction): import dynamic_battle if (i < 2 and num_rescue > 0): if j[-1] in dynamic_battle.rescuelist: generateRescueMission(j, dynamic_battle.rescuelist[j[-1]]) if checkCreatedMission(): num_rescue -= 1 # if (0 and i==0): # generateRescueMission(j,("confed","Shadow","pirates")) l = dynamic_battle.BattlesInSystem(j[-1]) nodefend = 1 for k in l: if (VS.GetRelation(fac, k[1][1]) >= 0): if ((j[-1] == VS.getSystemFile() and num_idefend <= 0) or (j[-1] != VS.getSystemFile() and num_defend <= 0)): mungeFixerPct() debug.debug("Munged") else: nodefend = 0 generateDefendMission(j, k[1][0], k[1][1], k[0][0], k[0][1]) restoreFixerPct() if checkInsysNum(): num_idefend -= 1 if checkMissionNum(): num_defend -= 1 debug.debug("Generated defendX with insys at: " + str(num_idefend) + " and outsys at " + str(num_defend)) (m, nummerchant, numthisfac) = GetFactionToDefend(thisfaction, fac, j[-1]) if preferredfaction: for kk in faction_ships.enemies[ faction_ships.factiondict[thisfaction]]: k = faction_ships.intToFaction(kk) for mm in fg_util.FGsInSystem(k, j[-1]): if (i == 0 or vsrandom.randrange(0, 4) == 0): #fixme betterthan 4 if nodefend and len(m) and vsrandom.random() < .4: if 1: #for i in range(vsrandom.randrange(1,3)): insys = (j[-1] == VS.getSystemFile()) if (insys and num_idefend <= 0): mungeFixerPct() elif (num_defend <= 0 and not insys): mungeFixerPct() rnd = vsrandom.randrange(0, len(m)) def_fg = m[rnd] def_fac = "merchant" if rnd >= nummerchant: def_fac = thisfaction if rnd >= numthisfac: def_fac = fac generateDefendMission( j, def_fg, def_fac, mm, k) restoreFixerPct() if checkInsysNum(): num_idefend -= 1 if checkMissionNum(): num_defend -= 1 debug.debug( "Generated defendY with insys at: " + str(num_idefend) + " and outsys at " + str(num_defend)) nodefend = 0 elif ((i == 0 or vsrandom.random() < .5)): if ((j[-1] == VS.getSystemFile() and num_ibounty <= 0) or (j[-1] != VS.getSystemFile() and num_bounty <= 0)): mungeFixerPct() generateBountyMission(j, mm, k) restoreFixerPct() if checkInsysNum(): debug.debug( " decrementing INSYS bounty to " + str(num_ibounty)) num_ibounty -= 1 if checkMissionNum(): debug.debug(" decrementing bounty to " + str(num_bounty)) num_bounty -= 1 mincount = -2 if i == 0: mincount = 1 for k in range(vsrandom.randrange( mincount, 4)): ###FIXME: choose a better number than 4. if k < 0: k = 0 rnd = vsrandom.random() if (rnd < .15): # 15% - nothing pass if (rnd < .5 or i == 0): # 35% - Patrol Mission if ((j[-1] == VS.getSystemFile() and num_ipatrol <= 0) or (j[-1] != VS.getSystemFile() and num_patrol <= 0)): mungeFixerPct() if (vsrandom.randrange(0, 2) or j[-1] in faction_ships.fortress_systems): generatePatrolMission(j, vsrandom.randrange(4, 10)) else: generateCleansweepMission( j, vsrandom.randrange(4, 10), faction_ships.get_enemy_of(fac)) restoreFixerPct() if checkInsysNum(): num_ipatrol -= 1 if checkMissionNum(): num_patrol -= 1 else: # 50% - Cargo mission numcargos = vsrandom.randrange(1, 25) if numcargos > 20: numcargos = 20 category = '' if (rnd > .87 and fac != 'confed' and fac != "ISO" and fac != "militia" and fac != "homeland-security" and fac != "kilrathi" and fac != "merchant" and fac != "klkk"): category = 'Contraband' else: for myiter in range(100): carg = VS.getRandCargo(numcargos, category) category = carg.GetCategory() if ((not category in usedcats) and category[:9] != 'Fragments' and category[:10] != 'Contraband' and category.find('upgrades') != 0 and (category.find('starships') != 0 or rnd > .999)): break if (myiter != 99): category = '' # debug.debug("CATEGORY OK "+category) if not category in usedcats: generateCargoMission(j, numcargos, category, fac) usedcats[category] = 1 numescort = vsrandom.randrange(0, 2) if (numescort > len(m)): numescort = len(m) count = 0 for k in m: if (i == 0): if vsrandom.random() < .92: count += 1 continue elif (vsrandom.random() < .97): count += 1 continue f = "merchant" if count >= nummerchant: f = thisfaction if count >= numthisfac: f = fac if (vsrandom.random() < .25): if (num_wingmen > 0): generateWingmanMission(k, f) num_wingmen -= 1 elif (i == 0): if (vsrandom.random() < .25): if num_iescort <= 0: mungeFixerPct() generateEscortLocal(j, k, f) restoreFixerPct() if checkCreatedMission(): num_iescort -= 1 else: if num_escort <= 0: mungeFixerPct() generateEscortMission(j, k, f) restoreFixerPct() if checkCreatedMission(): num_escort -= 1 count += 1
def contractMissionsFor(fac, minsysaway, maxsysaway): global totalMissionNumber global insysMissionNumber totalMissionNumber = 0 insysMissionNumber = 0 facnum = faction_ships.factionToInt(fac) enemies = list(faction_ships.enemies[facnum]) script = "" cursystem = VS.getSystemFile() thisfaction = VS.GetGalaxyFaction(cursystem) preferredfaction = None if VS.GetRelation(fac, thisfaction) >= 0: preferredfaction = thisfaction # try to stay in this territory l = [] num_wingmen = 2 num_rescue = 2 num_defend = 1 num_idefend = 2 num_bounty = 1 num_ibounty = 1 num_patrol = 1 num_ipatrol = 1 num_escort = 1 num_iescort = 1 mincount = 2 usedcats = {} plr = VS.getPlayer() if plr: for i in range(plr.numCargo()): usedcats[plr.GetCargoIndex(i).GetCategory()] = 1 for i in range(minsysaway, maxsysaway + 1): for j in list(getSystemsNAway(cursystem, i, preferredfaction)): import dynamic_battle if i < 2 and num_rescue > 0: if j[-1] in dynamic_battle.rescuelist: generateRescueMission(j, dynamic_battle.rescuelist[j[-1]]) if checkCreatedMission(): num_rescue -= 1 # if (0 and i==0): # generateRescueMission(j,("confed","Shadow","pirates")) l = dynamic_battle.BattlesInSystem(j[-1]) nodefend = 1 for k in l: if VS.GetRelation(fac, k[1][1]) >= 0: if (j[-1] == VS.getSystemFile() and num_idefend <= 0) or ( j[-1] != VS.getSystemFile() and num_defend <= 0 ): mungeFixerPct() debug.debug("Munged") else: nodefend = 0 generateDefendMission(j, k[1][0], k[1][1], k[0][0], k[0][1]) restoreFixerPct() if checkInsysNum(): num_idefend -= 1 if checkMissionNum(): num_defend -= 1 debug.debug( "Generated defendX with insys at: " + str(num_idefend) + " and outsys at " + str(num_defend) ) (m, nummerchant, numthisfac) = GetFactionToDefend(thisfaction, fac, j[-1]) if preferredfaction: for kk in faction_ships.enemies[faction_ships.factiondict[thisfaction]]: k = faction_ships.intToFaction(kk) for mm in fg_util.FGsInSystem(k, j[-1]): if i == 0 or vsrandom.randrange(0, 4) == 0: # fixme betterthan 4 if nodefend and len(m) and vsrandom.random() < 0.4: if 1: # for i in range(vsrandom.randrange(1,3)): insys = j[-1] == VS.getSystemFile() if insys and num_idefend <= 0: mungeFixerPct() elif num_defend <= 0 and not insys: mungeFixerPct() rnd = vsrandom.randrange(0, len(m)) def_fg = m[rnd] def_fac = "merchant" if rnd >= nummerchant: def_fac = thisfaction if rnd >= numthisfac: def_fac = fac generateDefendMission(j, def_fg, def_fac, mm, k) restoreFixerPct() if checkInsysNum(): num_idefend -= 1 if checkMissionNum(): num_defend -= 1 debug.debug( "Generated defendY with insys at: " + str(num_idefend) + " and outsys at " + str(num_defend) ) nodefend = 0 elif i == 0 or vsrandom.random() < 0.5: if (j[-1] == VS.getSystemFile() and num_ibounty <= 0) or ( j[-1] != VS.getSystemFile() and num_bounty <= 0 ): mungeFixerPct() generateBountyMission(j, mm, k) restoreFixerPct() if checkInsysNum(): debug.debug(" decrementing INSYS bounty to " + str(num_ibounty)) num_ibounty -= 1 if checkMissionNum(): debug.debug(" decrementing bounty to " + str(num_bounty)) num_bounty -= 1 mincount = -2 if i == 0: mincount = 1 for k in range(vsrandom.randrange(mincount, 4)): ###FIXME: choose a better number than 4. if k < 0: k = 0 rnd = vsrandom.random() if rnd < 0.15: # 15% - nothing pass if rnd < 0.5 or i == 0: # 35% - Patrol Mission if (j[-1] == VS.getSystemFile() and num_ipatrol <= 0) or ( j[-1] != VS.getSystemFile() and num_patrol <= 0 ): mungeFixerPct() if vsrandom.randrange(0, 2) or j[-1] in faction_ships.fortress_systems: generatePatrolMission(j, vsrandom.randrange(4, 10)) else: generateCleansweepMission(j, vsrandom.randrange(4, 10), faction_ships.get_enemy_of(fac)) restoreFixerPct() if checkInsysNum(): num_ipatrol -= 1 if checkMissionNum(): num_patrol -= 1 else: # 50% - Cargo mission numcargos = vsrandom.randrange(1, 25) if numcargos > 20: numcargos = 20 category = "" if ( rnd > 0.87 and fac != "confed" and fac != "ISO" and fac != "militia" and fac != "homeland-security" and fac != "kilrathi" and fac != "merchant" and fac != "klkk" ): category = "Contraband" else: for myiter in range(100): carg = VS.getRandCargo(numcargos, category) category = carg.GetCategory() if ( (not category in usedcats) and category[:9] != "Fragments" and category[:10] != "Contraband" and category.find("upgrades") != 0 and (category.find("starships") != 0 or rnd > 0.999) ): break if myiter != 99: category = "" # debug.debug("CATEGORY OK "+category) if not category in usedcats: generateCargoMission(j, numcargos, category, fac) usedcats[category] = 1 numescort = vsrandom.randrange(0, 2) if numescort > len(m): numescort = len(m) count = 0 for k in m: if i == 0: if vsrandom.random() < 0.92: count += 1 continue elif vsrandom.random() < 0.97: count += 1 continue f = "merchant" if count >= nummerchant: f = thisfaction if count >= numthisfac: f = fac if vsrandom.random() < 0.25: if num_wingmen > 0: generateWingmanMission(k, f) num_wingmen -= 1 elif i == 0: if vsrandom.random() < 0.25: if num_iescort <= 0: mungeFixerPct() generateEscortLocal(j, k, f) restoreFixerPct() if checkCreatedMission(): num_iescort -= 1 else: if num_escort <= 0: mungeFixerPct() generateEscortMission(j, k, f) restoreFixerPct() if checkCreatedMission(): num_escort -= 1 count += 1