Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
tail Class Reference
Inheritance diagram for tail:

Public Member Functions

def __init__
 
def setupEnemy
 
def setupFriendly
 
def updateEnemyObjective
 
def nextSystem
 
def getJumpTo
 
def getPlacementVectors
 
def doPlacement
 
def SetVar
 
def initSuccess
 
def enemyThreatened
 
def outOfRange
 
def tooClose
 
def tooDead
 
def fail
 
def Execute
 

Data Fields

 fail1
 
 fail2
 
 succeed1
 
 enemyfg
 
 enemyfaction
 
 enemydynfg
 
 enemydyntype
 
 enemynum
 
 enemy
 
 friendlyfg
 
 friendlyfaction
 
 friendlydynfg
 
 friendlydyntype
 
 friendlynum
 
 success
 
 waiting
 
 tracking
 
 objref
 
 cp
 
 started
 
 directions
 
 creds
 
 var_to_set
 
 mindist
 
 startdist
 
 relation
 

Static Public Attributes

tuple WAITTIME = float(240)
 
tuple DELAYTIME = float(30)
 

Detailed Description

Definition at line 8 of file tail.py.

Constructor & Destructor Documentation

def __init__ (   self,
  var_to_set,
  creds,
  direct,
  sdist,
  mdist,
  efaction,
  ffaction,
  efg,
  ffg,
  fnum = 3,
  edyntype = '',
  fdyntype = '',
  edynfg = '',
  fdynfg = '',
  tooclose = ["Thought you could hide from me?",
  Try,
  hiding,
  from,
  this,
  toofar = ["We have lost the lock on the target vessel."],
  justright = ["Thankyou.  You help in tracking this criminal has been appreciated."] 
)

Definition at line 13 of file tail.py.

13 
14  def __init__ (self,var_to_set,creds,direct,sdist,mdist,efaction,ffaction,efg,ffg,fnum=3,edyntype='',fdyntype='',edynfg='',fdynfg='',tooclose=["Thought you could hide from me?", "Try hiding from this!"],toofar=["We have lost the lock on the target vessel."],justright=["Thankyou. You help in tracking this criminal has been appreciated."]):
15  Director.Mission.__init__ (self)
16  print 'tail: Starting'
17 
18  self.fail1 = tooclose
19  self.fail2 = toofar
20  self.succeed1 = justright
21 
22  self.enemyfg = efg
23  self.enemyfaction = efaction
24  self.enemydynfg = edynfg
25  self.enemydyntype = edyntype
26  self.enemynum=1#don't have this as multiple, as I haven't compensated for it when I move fgs
27  self.enemy=None
28 
29  self.friendlyfg = ffg
30  self.friendlyfaction = ffaction
31  self.friendlydynfg = fdynfg
32  self.friendlydyntype = fdyntype
33  self.friendlynum=fnum
34 
35 
36  self.success=False
37  self.waiting=False
38  self.tracking=(None,None)#(missiontimeout, distanceonjump)
39 
40  self.objref=None
41 
42  self.cp = VS.getCurrentPlayer()
43  self.started = False
44  self.directions = direct
45  self.creds = creds
46  self.var_to_set = var_to_set
47  self.mindist = mdist
48  self.startdist = sdist
49  VS.getPlayerX(self.cp).upgrade("jump_drive",0,0,0,1)
50  print 'tail: Started'

Member Function Documentation

def doPlacement (   self,
  target 
)

Definition at line 179 of file tail.py.

References Vector.Add(), ambush.cp, tail.cp, directions_mission.cp, tail.getPlacementVectors(), and Vector.Scale().

180  def doPlacement(self, target):
181  unitvec, vec = self.getPlacementVectors(target)
182  self.enemy.SetPosition(Vector.Add(VS.getPlayerX(self.cp).Position(),vec))
183  self.enemy.SetOrientation((1,0,0),vec)
184  self.enemy.SetVelocity(Vector.Scale(unitvec,1440.0))
def enemyThreatened (   self)
Does the enemy feel different about the player?  If yes, the player
   must have talked to, or shot at the enemy.

Definition at line 210 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, and tail.relation.

211  def enemyThreatened (self):
212  """Does the enemy feel different about the player? If yes, the player
213  must have talked to, or shot at the enemy."""
214  if abs(self.enemy.getRelation(VS.getPlayerX(self.cp)) - self.relation) >= 0.003:
215  print "tail: the relation between the player and target has changed"
216  return True
217  return False
def Execute (   self)

Definition at line 250 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, tail.doPlacement(), plunder.enemy, tail.enemy, rescue.enemy, bounty.enemy, ambush.enemy, tail.enemyThreatened(), tail.fail(), TestCase.fail(), Doc.fail(), tail.initSuccess(), tail.mindist, tail.nextSystem(), tail.objref, tail.outOfRange(), tail.setupEnemy(), tail.success, tail.tooClose(), tail.tooDead(), tail.tracking, tail.updateEnemyObjective(), tail.waiting, and tail.WAITTIME.

251  def Execute (self):
252  you=VS.getPlayerX(self.cp)
253  if you.isNull():
254  print 'you is null'
255  self.fail()
256  elif self.success:
257  self.initSuccess()
258  elif self.setupEnemy():
259  if self.enemy.isNull():
260  self.tooDead()
261  if self.waiting:
262  if self.tracking[0] < VS.GetGameTime():
263  self.outOfRange()
264  elif VS.getPlayerX(self.cp).getUnitSystemFile() == self.enemy.getUnitSystemFile():
265  self.waiting = False
266  t = self.updateEnemyObjective()
267  VS.IOmessage (0,"[Mission Computer]","all","Target %s detected in this system."%self.enemy.getFullname())
268  VS.setObjective(self.objref,"Follow the %s until it broadcasts the signal"%self.enemy.getFullname())
269  if t is not None:
270  self.doPlacement(t)
271  else:
272  self.success=True
273  elif VS.getPlayerX(self.cp).getUnitSystemFile() != self.enemy.getUnitSystemFile():
274  self.enemy.DeactivateJumpDrive()
275  self.waiting = True
276  self.tracking=(VS.GetGameTime()+self.WAITTIME, VS.getPlayerX(self.cp).getDistance(self.enemy))
277  VS.IOmessage (0,"[Mission Computer]","all","Target %s detected entering %s"%(self.enemy.getFullname(),self.nextSystem(VS.getPlayerX(self.cp))))
278  VS.setObjective(self.objref,"Follow the %s into %s"%(self.enemy.getFullname(),self.nextSystem(VS.getPlayerX(self.cp))))
279  elif VS.getPlayerX(self.cp).getDistance(self.enemy)<self.mindist or self.enemyThreatened():
280  self.tooClose()
def fail (   self)

Definition at line 244 of file tail.py.

References tail.objref, bounty.SetVar(), cargo_mission.SetVar(), and tail.SetVar().

245  def fail (self):
246  self.SetVar(-1)
247  VS.setCompleteness(self.objref, -1.00)
248  VS.terminateMission(0)
249  return
def getJumpTo (   self,
  jto 
)

Definition at line 146 of file tail.py.

References gettext.find(), and string.lower().

147  def getJumpTo(self,jto):
148  jto=jto[1:]
149  jto=jto[jto.find('/')+1:]
150  itera = VS.getUnitList()
151  while itera.notDone():
152  if itera.current().isJumppoint():
153  if itera.current().getName().lower().find(jto.lower())!=-1:
154  return itera.current()
155  itera.advance()
156  return False
def getPlacementVectors (   self,
  target 
)

Definition at line 157 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, Vector.Mag(), tail.mindist, Vector.Scale(), tail.startdist, Vector.Sub(), tail.tracking, and tail.WAITTIME.

158  def getPlacementVectors(self, target):
159  relpos=Vector.Sub(target.Position(),VS.getPlayerX(self.cp).Position())
160  unitrel=Vector.Scale(relpos, 1.0/Vector.Mag(relpos))
161  approx=list()
162  approx.append(Vector.Scale(unitrel, self.tracking[1]))
163  approx.append(Vector.Scale(relpos, (VS.GetGameTime() - self.tracking[0] + self.WAITTIME)/self.WAITTIME))
164  for i in range(len(approx)):
165  if approx[i] < self.mindist or approx[i] > Vector.Mag(relpos):
166  approx[i] = False
167  biggest=(0,0,0)
168  for i in range(len(approx)):
169  if approx[i]:
170  if Vector.Mag(approx[i]) > Vector.Mag(biggest):
171  biggest=approx[i]
172  if Vector.Mag(biggest) < 1:#arbitrary check to see if we've got a valid result
173 # raise RuntimeError("Could not find a suitable approximation for unit placement.")
174 # Runtime errors are ... less than optimal. Lets pick a vector and hope.
175  print 'tail: Pick a vector and hope'
176  unitrel = (1,0,0)
177  biggest = (self.startdist,0,0)
178  return unitrel, biggest
def initSuccess (   self)

Definition at line 189 of file tail.py.

References Vector.Add(), ambush.cp, tail.cp, directions_mission.cp, difficulty.creds, tail.creds, HaveCredits.creds, escort_mission.creds, AddCredits.creds, RemoveCredits.creds, SetCredits.creds, tail.DELAYTIME, tail.directions, plunder.enemy, tail.enemy, rescue.enemy, bounty.enemy, ambush.enemy, tail.getJumpTo(), tail.objref, Vector.Scale(), tail.setupFriendly(), bounty.SetVar(), cargo_mission.SetVar(), tail.SetVar(), tail.succeed1, tail.success, and tail.tracking.

190  def initSuccess (self):
191  if self.success == 2:
192  if VS.GetGameTime() > self.tracking[0]:
193  t=self.getJumpTo(self.directions[len(self.directions)-2])
194  self.setupFriendly(t)#FIXME: open wormhole
195  VS.IOmessage (0,"[Mission Command]","all","Out of our way, let us finish the job!")
196  VS.getPlayerX(self.cp).addCredits(self.creds)
197  VS.terminateMission(1)
198  else:
199  t=self.getJumpTo(self.directions[len(self.directions)-2])
200  self.enemy.SetPosition(Vector.Add(Vector.Scale((1,0,0),11063),t.Position()))
201  VS.getPlayerX(self.cp).SetPosition(t.Position())#because self.enemy is at the jumpgate when I jump, so I get pushed off
202  VS.setCompleteness(self.objref, 1.00)
203  self.success=2
204  VS.IOmessage (0,"[Mission Computer]","all","Broadcast intercepted.")
205  for i in range(len(self.succeed1)):
206  VS.IOmessage (i+1,"[Mission Command]","all",self.succeed1[i])
207  self.SetVar(1)
208  self.tracking=(VS.GetGameTime()+self.DELAYTIME, VS.getPlayerX(self.cp).getDistance(self.enemy))
209  return
def nextSystem (   self,
  uni = None 
)

Definition at line 129 of file tail.py.

References tail.directions, plunder.enemy, tail.enemy, rescue.enemy, bounty.enemy, and ambush.enemy.

130  def nextSystem(self,uni=None):
131  if uni is None:
132  uni_=self.enemy
133  else:
134  uni_=uni
135  sys=uni_.getUnitSystemFile()
136  nextsys=False
137  for i in range(len(self.directions)-1):
138  where=sys.find(self.directions[i])
139  if (where>0):
140  if (sys[where-1]=='/'):
141  where=0
142  if (where==0):
143  nextsys=self.directions[i+1]
144  break
145  return nextsys
def outOfRange (   self)

Definition at line 218 of file tail.py.

References tail.fail(), TestCase.fail(), Doc.fail(), and tail.fail2.

219  def outOfRange (self):
220  print "tail: Out of range"
221  i=0
222  for j in range(len(self.fail2)):
223  VS.IOmessage (j,"[Mission Command]","all",self.fail2[j])
224  i+=1
225  VS.IOmessage(i,"[Mission Computer]","all","You are not able to detect the target.")
226  VS.IOmessage (i+1,"[Mission Computer]","all","Mission Failed.")
227  self.fail()
def setupEnemy (   self)

Definition at line 51 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, tail.directions, plunder.enemy, tail.enemy, rescue.enemy, bounty.enemy, ambush.enemy, tail.enemydynfg, tail.enemydyntype, tail.enemyfaction, tail.enemyfg, tail.enemynum, gettext.find(), faction_ships.getRandomFighter(), string.lower(), tail.mindist, tail.startdist, tail.started, and BlockFinder.started.

51 
52  def setupEnemy (self):
53  if not self.started:
54  print 'Tail Error checking: '+self.directions[0]
55  print 'Tail Error checking: '+self.directions[0].lower()
56  if self.started:
57  return True
58  elif self.directions[0].lower().find(VS.getPlayerX(self.cp).getUnitSystemFile().lower())!=-1:
59  L = launch.Launch()
60  L.fg=self.enemyfg
61  L.dynfg=self.enemydynfg
62  if self.enemydyntype=='':
64  L.type = self.enemydyntype
65  L.faction = self.enemyfaction
66  L.ai = "default"
67  L.num=self.enemynum
68  L.minradius=self.mindist
69  L.maxradius=self.startdist
70  try:
71  L.minradius*=faction_ships.launch_distance_factor
72  L.maxradius*=faction_ships.launch_distance_factor
73  except:
74  pass
75  self.enemy=L.launch(VS.getPlayerX(self.cp))
76  self.enemy.upgrade("jump_drive",0,0,0,1)
77  self.relation = self.enemy.getRelation(VS.getPlayerX(self.cp))
78  self.enemy.setCombatRole("INERT")
80  VS.IOmessage (0,"[Mission Computer]","all","Target %s detected! Proceed as per mission instructions."%self.enemy.getFullname())
81  self.objref=VS.addObjective("Follow the %s until it broadcasts the signal"%self.enemy.getFullname())
82  self.started=True
83  return True
84  print "now NOT set up!"
85  return False
def setupFriendly (   self,
  around 
)

Definition at line 86 of file tail.py.

References plunder.enemy, tail.enemy, rescue.enemy, bounty.enemy, ambush.enemy, tail.friendlydynfg, tail.friendlydyntype, cleansweep_escort.friendlyfaction, tail.friendlyfaction, tail.friendlyfg, tail.friendlynum, faction_ships.getRandomFighter(), and tail.mindist.

86 
87  def setupFriendly (self, around):
88  L = launch.Launch()
89  L.fg=self.friendlyfg
90  L.dynfg=self.friendlydynfg
91  if self.friendlydyntype=='':
93  L.type = self.friendlydyntype
94  L.faction = self.friendlyfaction
95  L.ai = "default"
96  L.num=self.friendlynum
97  L.minradius=0
98  L.maxradius=self.mindist
99  try:
100  L.minradius*=faction_ships.launch_distance_factor
101  L.maxradius*=faction_ships.launch_distance_factor
102  except:
103  pass
104  friendly=L.launch(around)
105  self.enemy.setCombatRole("FIGHTER")
106  flead = friendly.getFlightgroupLeader()
107  flead.SetTarget(self.enemy)
108  flead.Threaten(self.enemy,1)
109  self.enemy.Threaten(flead,1)
110  friendly.setFgDirective('A.')
111  friendly.DeactivateJumpDrive()
def SetVar (   self,
  val 
)

Definition at line 185 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, defend.var_to_set, escort_local.var_to_set, escort_mission.var_to_set, bounty.var_to_set, tail.var_to_set, and cargo_mission.var_to_set.

186  def SetVar (self,val):
187  if (self.var_to_set!=''):
188  quest.removeQuest (self.cp,self.var_to_set,val)
def tooClose (   self)

Definition at line 228 of file tail.py.

References ambush.cp, tail.cp, directions_mission.cp, tail.fail(), TestCase.fail(), Doc.fail(), and tail.fail1.

229  def tooClose (self):
230  print "tail: Too close"
231  VS.IOmessage (0,"[Mission Computer]","all","You have been detected by the target %s "%self.enemy.getFullname())
232  VS.IOmessage (1,"[Mission Computer]","all","Mission Failed.")
233  for i in range(len(self.fail1)):
234  VS.IOmessage (i+2,"Target","all",self.fail1[i])
235  self.enemy.SetTarget(VS.getPlayerX(self.cp))
236  self.enemy.setFgDirective('A')
237  self.fail()
def tooDead (   self)

Definition at line 238 of file tail.py.

References tail.fail(), TestCase.fail(), and Doc.fail().

239  def tooDead (self):
240  print "tail: Too dead"
241  VS.IOmessage (0,"[Mission Computer]","all","The target %s has been destroyed."%self.enemy.getFullname())
242  VS.IOmessage (1,"[Mission Computer]","all","Mission Failed.")
243  self.fail()
def updateEnemyObjective (   self)

Definition at line 112 of file tail.py.

References tail.getJumpTo(), and tail.nextSystem().

113  def updateEnemyObjective(self):
114  j = self.nextSystem()
115  if j:
116  targ=self.getJumpTo(j)
117  if not targ:
118  raise RuntimeError("Jumppoint going to %s cannot be found."%j)
119  self.enemy.SetTarget(targ)
120  self.enemy.ActivateJumpDrive(0)
121  print "tail: Enemy running to "+targ.getName()
122 # self.enemy.setFlightgroupLeader(targ)
123 # self.enemy.setFgDirective('B')
124 # self.enemy.setFgDirective('F')
125 # self.enemy.AutoPilotTo(targ,True)
126  print 'enemy objective updated '+j
127  return targ
128  return None

Field Documentation

cp

Definition at line 41 of file tail.py.

creds

Definition at line 44 of file tail.py.

tuple DELAYTIME = float(30)
static

Definition at line 11 of file tail.py.

directions

Definition at line 43 of file tail.py.

enemy

Definition at line 26 of file tail.py.

enemydynfg

Definition at line 23 of file tail.py.

enemydyntype

Definition at line 24 of file tail.py.

enemyfaction

Definition at line 22 of file tail.py.

enemyfg

Definition at line 21 of file tail.py.

enemynum

Definition at line 25 of file tail.py.

fail1

Definition at line 17 of file tail.py.

fail2

Definition at line 18 of file tail.py.

friendlydynfg

Definition at line 30 of file tail.py.

friendlydyntype

Definition at line 31 of file tail.py.

friendlyfaction

Definition at line 29 of file tail.py.

friendlyfg

Definition at line 28 of file tail.py.

friendlynum

Definition at line 32 of file tail.py.

mindist

Definition at line 46 of file tail.py.

objref

Definition at line 39 of file tail.py.

relation

Definition at line 76 of file tail.py.

startdist

Definition at line 47 of file tail.py.

started

Definition at line 42 of file tail.py.

succeed1

Definition at line 19 of file tail.py.

success

Definition at line 35 of file tail.py.

tracking

Definition at line 37 of file tail.py.

var_to_set

Definition at line 45 of file tail.py.

waiting

Definition at line 36 of file tail.py.

tuple WAITTIME = float(240)
static

Definition at line 10 of file tail.py.


The documentation for this class was generated from the following file: