Example #1
0
 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))
Example #3
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))
Example #5
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
Example #6
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
Example #7
0
 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
Example #8
0
 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
Example #9
0
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)
Example #11
0
 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));
Example #12
0
	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
Example #13
0
 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
Example #14
0
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
Example #15
0
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)
Example #16
0
    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())
Example #17
0
    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))
Example #19
0
    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