def LaunchedEnemies(self, significant): import VS bounty_leader.bounty_leader.LaunchedEnemies(self, significant) self.troopdidlaunch = True import unit self.istarget = 1 capship_only = 1 self.utdw = self.adjsys.SignificantUnit( ) #unit.getSignificant(0,1,capship_only) self.wastingtimestart = VS.GetGameTime() + self.wastingtime self.wastingtime = 0 if (self.utdw == self.enemy): self.utdw = unit.getSignificant(1, 1, capship_only) if (self.utdw == self.enemy): self.utdw = unit.getSignificant(2, 1, capship_only) if (self.utdw == self.enemy): self.utdw = unit.getSignificant(3, 1, capship_only) pos = self.utdw.Position() if self.dockingdist > 0: import Vector diff = Vector.Sub(self.you.Position(), pos) ndiff = Vector.Norm(diff) self.enemy.SetPosition( Vector.Add( Vector.Scale( ndiff, self.dockingdist + self.enemy.rSize() + self.utdw.rSize()), pos))
def teleportNPC(self, un): pos = un.Position() rsiz = un.rSize() size = 4 * rsiz sig = unit.getSignificant(vsrandom.randrange(0, 50), 0, 0) if (not sig): return nam = sig.getName() if (nam.find("lackhole") != -1): return targetpos = sig.Position() arad = sig.rSize() * 2 + size targetpos = Vector.Add(targetpos, (vsrandom.uniform( arad, arad * 1.5), vsrandom.uniform( arad, arad * 1.5), vsrandom.uniform(arad, arad * 1.5))) targetpos = VS.SafeEntrancePoint(targetpos, rsiz) if (size < 1000): size = 1000 print("kill") print(un.getName()) un.SetCurPosition(targetpos) VS.playAnimation("warp.ani", pos, size) VS.playSound("cloak.wav", pos, (1, 0, 0)) VS.playAnimation("warp.ani", targetpos, size) VS.playSound("cloak.wav", targetpos, (1, 0, 0))
def GeneratePatrolList (self): VS.IOmessage (0,"patrol",self.mplay,"You must get within %f klicks of" % (self.distance)) count=self.quantity*2 str="" while (self.quantity > 0 and count > 0): count -= 1 sig = unit.getSignificant (vsrandom.randrange (0,128),0,0) if (not sig.isNull()): if (not (sig in self.patrolpoints)): self.patrolpoints += [sig] self.quantity=self.quantity-1 fac =sig.getFactionName() nam =sig.getName () if (fac!="neutral"): obj=VS.addObjective ("Scan %s's %s" % (fac,nam)) VS.IOmessage (0,"patrol",self.mplay,"%s owned %s " % (fac,nam)) else: if (sig.isPlanet()): if (sig.isJumppoint()): obj=VS.addObjective ("Scan Jumppoint %s" % (nam)) else: obj=VS.addObjective ("Scan Planet %s" % (nam)) else: obj=VS.addObjective ("Scan Natural Phenomenon: %s" % (nam)) VS.IOmessage (0,"patrol",self.mplay,"The object %s " % (nam)) VS.setOwner(int(obj),VS.getPlayerX(self.cp)) VS.setCompleteness(int(obj),-1.0) self.objectives+=[int(obj)] self.quantity=0
def teleportNPC (self,un): pos=un.Position() rsiz = un.rSize() size=4*rsiz sig = unit.getSignificant (vsrandom.randrange(0,50),0,0) if (not sig): return nam = sig.getName() if (nam.find ("lackhole")!=-1): return targetpos = sig.Position() arad = sig.rSize()*2+size targetpos = Vector.Add(targetpos,(vsrandom.uniform(arad,arad*1.5), vsrandom.uniform(arad,arad*1.5), vsrandom.uniform(arad,arad*1.5))) targetpos = VS.SafeEntrancePoint (targetpos,rsiz) if (size<1000): size=1000 print "kill" print un.getName() un.SetCurPosition(targetpos) VS.playAnimation("warp.ani",pos,size) VS.playSound("cloak.wav",pos,(1,0,0)) VS.playAnimation("warp.ani",targetpos,size) VS.playSound("cloak.wav",targetpos,(1,0,0))
def GeneratePatrolList(self): VS.IOmessage(0, "patrol", self.mplay, "You must get within %f klicks of" % self.distance) count = self.quantity * 2 str = "" while (self.quantity > 0 and count > 0): count -= 1 sig = unit.getSignificant(vsrandom.randrange(0, 128), 0, 0) if (not sig.isNull()): if (not (sig in self.patrolpoints)): self.patrolpoints += [sig] self.quantity = self.quantity - 1 fac = sig.getFactionName() nam = sig.getName() if (fac != "neutral"): obj = VS.addObjective("Scan %s's %s" % (fac, nam)) VS.IOmessage(0, "patrol", self.mplay, "%s owned %s " % (fac, nam)) else: if (sig.isPlanet()): if (sig.isJumppoint()): obj = VS.addObjective("Scan Jumppoint %s" % nam) else: obj = VS.addObjective("Scan Planet %s" % nam) else: obj = VS.addObjective( "Scan Natural Phenomenon: %s" % nam) VS.IOmessage(0, "patrol", self.mplay, "The object %s " % nam) VS.setOwner(int(obj), VS.getPlayerX(self.cp)) VS.setCompleteness(int(obj), -1.0) self.objectives += [int(obj)] self.quantity = 0
def launch_wave_around_significant( fgname, faction, type, ai, nr_ships, minradius, maxradius, significant_number, logo="", useani=1, skipdj=0 ): significant_unit = unit.getSignificant(significant_number, 0, 0) if significant_unit.isNull(): significant_unit = VS.getPlayer() launched = launch_wave_around_unit( fgname, faction, type, ai, nr_ships, minradius, maxradius, significant_unit, logo, useani, skipdj ) return launched
def SuccessMission(self): self.defendee.setFgDirective('b') self.defendee.setFlightgroupLeader(self.defendee) if (self.incoming): un = unit.getSignificant(vsrandom.randrange(0, 20), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 30), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 40), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 30), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 40), 1, 0) if (un.getName() != self.defendee.getName()): self.defendee.performDockingOperations(un, 0) debug.info("docking with " + un.getName()) else: self.defendee.ActivateJumpDrive(0) self.defendee.SetTarget(self.adjsys.SignificantUnit()) self.successdelay = VS.GetGameTime() + 1
def SuccessMission(self): self.defendee.setFgDirective('b') self.defendee.setFlightgroupLeader(self.defendee) if (self.incoming): un = unit.getSignificant(vsrandom.randrange(0, 20), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 30), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 40), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 30), 1, 0) if (un.getName() == self.defendee.getName()): un = unit.getSignificant(vsrandom.randrange(0, 40), 1, 0) if (un.getName() != self.defendee.getName()): self.defendee.performDockingOperations(un, 0) debug.info("docking with "+un.getName()) else: self.defendee.ActivateJumpDrive(0) self.defendee.SetTarget(self.adjsys.SignificantUnit()) self.successdelay = VS.GetGameTime()+1
def addTechLevel(level, addToBase=True): try: import faction_ships upgrades = faction_ships.earnable_upgrades[level] except: debug.warn("No tech level named " + str(level)) return bas = getDockedBase() if (not bas): import unit import vsrandom debug.debug("getting significant for upgrade addage") bas = unit.getSignificant(vsrandom.randrange(1, 20), 1, 0) for upgrade in upgrades: if (len(upgrade) < 5): debug.debug("Upgrade list not big enough to add to tech") print(upgrade) continue import Director import VS cp = VS.getCurrentPlayer() siz = Director.getSaveStringLength(cp, "master_part_list_content") doIt = True for index in range(siz): if (Director.getSaveString(cp, "master_part_list_content", index) == upgrade[0]): doIt = False if (doIt): debug.debug("added UPGRADE AS FOLLOWS to tech level ") print(upgrade) Director.pushSaveString(cp, "master_part_list_content", str(upgrade[0])) Director.pushSaveString(cp, "master_part_list_category", str(upgrade[1])) Director.pushSaveString(cp, "master_part_list_price", str(upgrade[2])) Director.pushSaveString(cp, "master_part_list_mass", str(upgrade[3])) Director.pushSaveString(cp, "master_part_list_volume", str(upgrade[4])) if (len(upgrade) > 5): Director.pushSaveString(cp, "master_part_list_description", str(upgrade[5])) else: Director.pushSaveString(cp, "master_part_list_description", "No description") if (bas and addToBase): debug.debug(" adding " + str(upgrade[0]) + " to base " + bas.getName()) cargo = VS.Cargo(str(upgrade[0]), str(upgrade[1]), float(upgrade[2]), 1, float(upgrade[3]), float(upgrade[4])) bas.forceAddCargo(cargo)
def addTechLevel(level, addToBase=True): # this function allows the addition of new ships and ship upgrades to the list of master part list # since Privateer Gemini Gold has a fixed list of what can be bought (and when), # this can be circumvented # the lists themselves are defined in faction_ships.py, earnable_upgrades dictionary return # nothing after this gets called try: import faction_ships upgrades = faction_ships.earnable_upgrades[level] except: print "No tech level named " + str(level) return bas = getDockedBase() if not bas: import unit import vsrandom print "getting significant for upgrade addage" bas = unit.getSignificant(vsrandom.randrange(1, 20), 1, 0) for upgrade in upgrades: if len(upgrade) < 5: print "Upgrade list not big enough to add to tech" print upgrade continue import Director import VS cp = VS.getCurrentPlayer() siz = Director.getSaveStringLength(cp, "master_part_list_content") doIt = True for index in range(siz): if Director.getSaveString(cp, "master_part_list_content", index) == upgrade[0]: doIt = False if doIt: print "added UPGRADE AS FOLLOWS to tech level " print upgrade Director.pushSaveString(cp, "master_part_list_content", str(upgrade[0])) Director.pushSaveString(cp, "master_part_list_category", str(upgrade[1])) Director.pushSaveString(cp, "master_part_list_price", str(upgrade[2])) Director.pushSaveString(cp, "master_part_list_mass", str(upgrade[3])) Director.pushSaveString(cp, "master_part_list_volume", str(upgrade[4])) if len(upgrade) > 5: Director.pushSaveString(cp, "master_part_list_description", str(upgrade[5])) else: Director.pushSaveString(cp, "master_part_list_description", "No description") if bas and addToBase: print " adding " + str(upgrade[0]) + " to base " + bas.getName() cargo = VS.Cargo( str(upgrade[0]), str(upgrade[1]), float(upgrade[2]), 1, float(upgrade[3]), float(upgrade[4]) ) bas.forceAddCargo(cargo)
def LaunchedEnemies(self,significant): import VS bounty_leader.bounty_leader.LaunchedEnemies(self,significant) self.troopdidlaunch=True import unit self.istarget=1 capship_only=1 self.utdw= self.adjsys.SignificantUnit()#unit.getSignificant(0,1,capship_only) self.wastingtimestart = VS.GetGameTime()+self.wastingtime self.wastingtime=0 if (self.utdw==self.enemy): self.utdw=unit.getSignificant(1,1,capship_only) if (self.utdw==self.enemy): self.utdw=unit.getSignificant(2,1,capship_only) if (self.utdw==self.enemy): self.utdw=unit.getSignificant(3,1,capship_only) pos=self.utdw.Position() if self.dockingdist>0: import Vector diff=Vector.Sub(self.you.Position(),pos) ndiff=Vector.Norm(diff) self.enemy.SetPosition(Vector.Add(Vector.Scale(ndiff,self.dockingdist+self.enemy.rSize()+self.utdw.rSize()),pos));
def SuccessMission (self): self.defendee.setFgDirective('b') self.defendee.setFlightgroupLeader(self.defendee) if (self.incoming): import unit un=unit.getSignificant(vsrandom.randrange(0,20),1,0) if (un.getName()==self.defendee.getName()): un=unit.getSignificant(vsrandom.randrange(0,30),1,0) if (un.getName()==self.defendee.getName()): un=unit.getSignificant(vsrandom.randrange(0,40),1,0) if (un.getName()==self.defendee.getName()): un=unit.getSignificant(vsrandom.randrange(0,30),1,0) if (un.getName()==self.defendee.getName()): un=unit.getSignificant(vsrandom.randrange(0,40),1,0) if (un.getName()!=self.defendee.getName()): self.defendee.performDockingOperations(un,0) #print "docking with "+un.getName() self.todock=un VS.setObjective (self.objectivezero,"Escort To %s" % unit.getUnitFullName(un)) else: self.defendee.ActivateJumpDrive(0) self.defendee.SetTarget(self.adjsys.SignificantUnit()) self.successdelay=VS.GetGameTime()+1
def launch_wave_around_significant(fgname, faction, type, ai, nr_ships, minradius, maxradius, significant_number, logo='', useani=1): significant_unit = unit.getSignificant(significant_number, 0, 0) if (significant_unit.isNull()): significant_unit = VS.getPlayer() launched = launch_wave_around_unit(fgname, faction, type, ai, nr_ships, minradius, maxradius, significant_unit, logo, useani) return launched
def addTechLevel(level, addToBase=True): try: import faction_ships upgrades=faction_ships.earnable_upgrades[level] except: debug.warn("No tech level named "+str(level)) return bas=getDockedBase() if (not bas): import unit import vsrandom debug.debug("getting significant for upgrade addage") bas = unit.getSignificant(vsrandom.randrange(1,20),1,0); for upgrade in upgrades: if (len(upgrade)<5): debug.debug("Upgrade list not big enough to add to tech") print upgrade continue import Director import VS cp = VS.getCurrentPlayer() siz = Director.getSaveStringLength(cp,"master_part_list_content") doIt=True for index in range (siz): if (Director.getSaveString(cp,"master_part_list_content",index)==upgrade[0]): doIt=False if (doIt): debug.debug("added UPGRADE AS FOLLOWS to tech level ") print upgrade Director.pushSaveString(cp,"master_part_list_content",str(upgrade[0])) Director.pushSaveString(cp,"master_part_list_category",str(upgrade[1])) Director.pushSaveString(cp,"master_part_list_price",str(upgrade[2])) Director.pushSaveString(cp,"master_part_list_mass",str(upgrade[3])) Director.pushSaveString(cp,"master_part_list_volume",str(upgrade[4])) if (len(upgrade)>5): Director.pushSaveString(cp,"master_part_list_description",str(upgrade[5])) else: Director.pushSaveString(cp,"master_part_list_description","No description") if (bas and addToBase): debug.debug(" adding "+str(upgrade[0]) +" to base "+bas.getName()) cargo=VS.Cargo(str(upgrade[0]),str(upgrade[1]),float(upgrade[2]),1,float(upgrade[3]),float(upgrade[4])) bas.forceAddCargo(cargo)
def __init__ (self,you, landable_only, distance_away_to_trigger,base_only=0,capshipfaction="", dyn_fg="", showObjective=1, forcestarship=0): self.obj=0 self.showObjective=showObjective self.orbitee="" self.capship=0 self.you = you self.arrivedarea=0 self.distfrombase=distance_away_to_trigger significant=VS.Unit() aroundthe="" self.sysfil=VS.getSystemFile() if (landable_only or base_only): randint=vsrandom.randrange(0,128) lim=1 if landable_only and not base_only: lim=10 for i in xrange(lim): significant = unit.getSignificant (randint,landable_only,base_only) if significant.isPlanet(): break else: randint+=1 if (landable_only and not unit.isLandable(significant)) or forcestarship: self.capship=1 if (capshipfaction==""): capshipfaction="merchant" if (self.capship and capshipfaction!=""): if (significant.isNull()): significant=you self.orbitee="%s" % (significant.getName()) self.capship=1 print "orbitee %s " % self.orbitee if (dyn_fg==""): newship=faction_ships.getRandomCapitol(capshipfaction) found=False near=2000.0 far=5000.0 try: near*=faction_ships.launch_distance_factor far*=faction_ships.launch_distance_factor except: pass i=VS.getUnitList() while i.notDone(): testun = i.current() i.advance() if testun.getFactionName()==capshipfaction and faction_ships.isCapital(testun.getName()): significant=moveUnitTo(testun,significant,near) found=True break if (not found): significant=launch.launch_wave_around_unit("Base",capshipfaction,newship,"sitting_duck",1,near,far,significant,"") else: near=5000.0 try: near*=faction_ships.launch_distance_factor except: pass found=False aroundthe=" near "+unit.getUnitFullName(significant,True); i = VS.getUnitList() while i.notDone(): testun = i.current() i.advance() if testun.getFactionName()==capshipfaction and faction_ships.isCapital(testun.getName()): significant=moveUnitTo(testun,significant,near) found=True break if (not found): significant=launch_recycle.launch_dockable_around_unit(dyn_fg,capshipfaction,"sitting_duck",near,significant,4*near,'','Base') significant.setFullname(dyn_fg) else: significant = universe.getRandomJumppoint () if (significant.isNull()): print "ERROR: no significants found in starsystem %s" % (self.sysfil) self.significantun=VS.getPlayer() else: self.significantun=significant self.significantun.setMissionRelevant() #qualifier="the " #if (significant.isPlanet() and significant.isDockableUnit()): # qualifier="" if (self.showObjective): self.obj=VS.addObjective("Visit %s %s" % (self.getSignificantFullName (),aroundthe)) VS.setOwner(self.obj,VS.getPlayer())
def GeneratePatrolList(self): VS.IOmessage(0, "patrol", self.mplay, "You must get within %f klicks of:" % self.distance) scan_objects = self.scan_objects if True: # Bypass, because second option doesn't work yet :( # if scan_objects is None: # Randomly selects targets to scan count = self.quantity * 2 str = "" while (self.quantity > 0 and count > 0): count -= 1 sig = unit.getSignificant(vsrandom.randrange(0, 128), 0, 0) if (not sig.isNull()): if (not (sig in self.patrolpoints)): self.patrolpoints += [sig] self.quantity = self.quantity - 1 fac = sig.getFactionName() nam = sig.getFullname() fg = sig.getFlightgroupName() if (fac != "neutral"): if (fg == "Base"): obj = VS.addObjective("Scan %s %s" % (nam, sig.getName())) else: obj = VS.addObjective("Scan %s %s" % (nam, fg)) VS.IOmessage(0, "patrol", self.mplay, "%s owned %s " % (fac, nam)) else: if (sig.isPlanet()): nam = sig.getName() if (sig.isJumppoint()): obj = VS.addObjective("Scan Jumppoint %s" % nam) else: obj = VS.addObjective("Scan %s" % nam) else: obj = VS.addObjective( "Scan Natural Phenomenon: %s" % nam) VS.IOmessage(0, "patrol", self.mplay, "The object %s " % nam) VS.setOwner(int(obj), self.you) VS.setCompleteness(int(obj), -1.0) self.objectives += [int(obj)] self.quantity = 0 elif self.quantity != 0: # Only pick some in-system targets as specified in scan_objects excepted = False toadd = False debug.debug("units_in_sys = VS.getUnitList()") units_in_sys = VS.getUnitList() while (not units_in_sys.isDone()): un = next(units_in_sys) if un.isNull(): # just move on to the next unit in the list continue uname = un.getFullname() ufac = un.getFactionName() ufg = un.getFlightgroupName() debug.info("Unit name:'" + uname + "' flightgroup:'" + ufg + "' faction:'" + ufac + "'") if uname in scan_objects["except"]: # Exclude those excepted = True for obj in scan_objects["exceptall"]: # Exclude all of those if excepted: break obj = obj.capitalize().replace("unit", "Unit").replace( "ship", "Ship") try: # Valid fonctions: isSignificant isAsteroid isJumppoint isPlanet isDockableUnit isStarShip isCapitalShip isSun if eval("un.is" + obj + "()"): excepted = True except Exception as inst: if obj == "Base" and ufg == "Base": excepted = True elif obj == "Nav" and uname.find("Nav") == 0: excepted = True if excepted: excepted = False units_in_sys.advance() continue if uname in scan_objects["add"]: # Add those toadd = True for obj in scan_objects[ "addall"]: # Add all things of a certain kind if toadd: break obj = obj.capitalize().replace("unit", "Unit").replace( "ship", "Ship") try: # Valid fonctions: isSignificant isAsteroid isJumppoint isPlanet isDockableUnit isStarShip isCapitalShip isSun if eval("un.is" + obj + "()"): toadd = True except Exception as inst: if obj == "Base" and ufg == "Base": toadd = True elif obj == "Nav" and uname.capitalize().find( "Nav") == 0: toadd = True if toadd: toadd = False self.patrolpoints += [un] obj = VS.addObjective("Scan %s" % nam) VS.IOmessage(0, "patrol", self.mplay, "The object %s " % nam) VS.setOwner(int(obj), self.you) VS.setCompleteness(int(obj), -1.0) self.objectives += [int(obj)] units_in_sys.advance() self.quantity = 0
def distractMilitia(self): targ = unit.getSignificant(2,1,1) for un in self.militia: un.SetTarget(targ) un.SetVelocity ((500,500,500))
def GeneratePatrolList (self): VS.IOmessage (0,"patrol",self.mplay,"You must get within %f klicks of:" % self.distance) scan_objects = self.scan_objects if True: # Bypass, because second option doesn't work yet :( # if scan_objects is None: # Randomly selects targets to scan count=self.quantity*2 str="" while (self.quantity>0 and count > 0): count -= 1 sig = unit.getSignificant (vsrandom.randrange (0,128),0,0) if (not sig.isNull()): if (not (sig in self.patrolpoints)): self.patrolpoints += [sig] self.quantity = self.quantity-1 fac = sig.getFactionName() nam = sig.getFullname () fg = sig.getFlightgroupName() if (fac!="neutral"): if (fg=="Base"): obj=VS.addObjective("Scan %s %s"% (nam,sig.getName())) else: obj=VS.addObjective("Scan %s %s"% (nam,fg)) VS.IOmessage (0,"patrol",self.mplay,"%s owned %s " % (fac,nam)) else: if (sig.isPlanet()): nam =sig.getName () if (sig.isJumppoint()): obj=VS.addObjective("Scan Jumppoint %s" % nam) else: obj=VS.addObjective("Scan %s" % nam) else: obj=VS.addObjective("Scan Natural Phenomenon: %s" % nam) VS.IOmessage(0,"patrol",self.mplay,"The object %s " % nam) VS.setOwner(int(obj),self.you) VS.setCompleteness(int(obj),-1.0) self.objectives+=[int(obj)] self.quantity=0 elif self.quantity != 0: # Only pick some in-system targets as specified in scan_objects excepted = False toadd = False debug.debug("units_in_sys = VS.getUnitList()") units_in_sys = VS.getUnitList() while (not units_in_sys.isDone()): un = next(units_in_sys) if un.isNull(): # just move on to the next unit in the list continue uname = un.getFullname() ufac = un.getFactionName() ufg = un.getFlightgroupName() debug.info("Unit name:'" + uname + "' flightgroup:'" + ufg + "' faction:'" + ufac + "'") if uname in scan_objects["except"]: # Exclude those excepted = True for obj in scan_objects["exceptall"]: # Exclude all of those if excepted: break obj = obj.capitalize().replace("unit", "Unit").replace("ship", "Ship") try: # Valid fonctions: isSignificant isAsteroid isJumppoint isPlanet isDockableUnit isStarShip isCapitalShip isSun if eval("un.is" + obj + "()"): excepted = True except Exception as inst: if obj == "Base" and ufg == "Base": excepted = True elif obj == "Nav" and uname.find("Nav") == 0: excepted = True if excepted: excepted = False units_in_sys.advance() continue if uname in scan_objects["add"]: # Add those toadd = True for obj in scan_objects["addall"]: # Add all things of a certain kind if toadd: break obj = obj.capitalize().replace("unit", "Unit").replace("ship", "Ship") try: # Valid fonctions: isSignificant isAsteroid isJumppoint isPlanet isDockableUnit isStarShip isCapitalShip isSun if eval("un.is" + obj + "()"): toadd = True except Exception as inst: if obj == "Base" and ufg == "Base": toadd = True elif obj == "Nav" and uname.capitalize().find("Nav") == 0: toadd = True if toadd: toadd = False self.patrolpoints += [un] obj=VS.addObjective("Scan %s" % nam) VS.IOmessage(0,"patrol",self.mplay,"The object %s " % nam) VS.setOwner(int(obj),self.you) VS.setCompleteness(int(obj),-1.0) self.objectives+=[int(obj)] units_in_sys.advance() self.quantity=0