Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
rescue.py
Go to the documentation of this file.
1 from go_somewhere_significant import go_somewhere_significant
2 import vsrandom
3 import universe
4 import launch
5 import faction_ships
6 import Director
7 import unit
8 import quest
9 import VS
10 import go_to_adjacent_systems
11 import go_somewhere_significant
12 class rescue (Director.Mission):
13 
14  def __init__ (self, creds,numsysaway, fac,numenemy,enfac,enfg='', jumps=(),var_when_done=''):
15  Director.Mission.__init__ (self)
16  self.arrived=0
17  self.faction = fac
18  self.enfaction=enfac
19  self.enflightgroup=enfg
20  self.cred=creds
21  self.donevar=var_when_done
22  self.you = VS.getPlayer()
25  self.numenemy=numenemy
26  self.eject=None
27  self.enemy=None
28  self.numejectors=0
29  self.obj=0
30  def Execute(self):
31  if (not self.you):
32  VS.terminateMission(0)
33  return
34  if (not self.adjsys.Execute()):
35  return
36  if (self.arrived==0):
38  sys = VS.getSystemFile()
39  import dynamic_battle
40  if sys in dynamic_battle.rescuelist:
41  del dynamic_battle.rescuelist[sys]
42  self.arrived=1
43  elif (self.arrived==1):
44  mymin=2500.
45  mymax=3000.
46 # try:
47 # mymin*=faction_ships.launch_distance_factor
48 # mymax*=faction_ships.launch_distance_factor
49 # except:
50 # pass
51  self.eject = launch.launch_wave_around_unit("Rescue Pilot",self.faction,"eject","printhello.py",1,mymin,mymax,self.adjsys.SignificantUnit())
52  self.eject.setMissionRelevant()
53  self.arrived=2
54  self.eject.setName("Pilot")
55  self.eject.SetHull(25);
56  L = launch.Launch()
57  L.fg = "Shadow"
58  L.faction=self.enfaction
59  L.dynfg = self.enflightgroup
61  L.ai="default"
62  L.num=self.numenemy
63  L.minradius=float(VS.vsConfig("dynamic_universe","missions.rescue.enemy.minradius","5000"))
64  L.maxradius=float(VS.vsConfig("dynamic_universe","missions.rescue.enemy.maxradius","15000"))
65  try:
66  L.minradius*=faction_ships.launch_distance_factor
67  L.maxradius*=faction_ships.launch_distance_factor
68  except:
69  pass
70  self.enemy=L.launch(self.adjsys.SignificantUnit())
71  self.enemy.SetTarget(self.eject)
72  self.enemy.setFgDirective("A.")
73  self.you.SetTarget(self.eject)
74  VS.IOmessage(0,"eject",self.mplay,"This is ejector pod 0x4032 requesting immediate rescue and pickup")
75  self.obj=VS.addObjective("Tractor Ejected Pilot")
76 
77  elif (self.arrived==2):
78  if (self.eject):
79  self.enemy.SetTarget(self.eject)
80  self.numejectors=self.you.GetCargo("Pilot").GetQuantity()
81  else:
82  if (self.enemy):
83  self.enemy.SetTarget(self.you)
84  self.enemy.setFgDirective("A.")
85  print 'numej '+str(self.numejectors)
86  if (self.numejectors<self.you.GetCargo("Pilot").GetQuantity()):
87  self.you.removeCargo("Pilot",1,1)
88  carg=VS.getRandCargo(1,"Passengers/Economy")
89  carg.SetMissionFlag(1)
90  VS.setCompleteness(self.obj,1)
91  if (not self.you.addCargo(carg)):
92  self.Win(self.you,1)
93  else:
94  self.arrived=3
95  self.cargname=carg.GetContent()
96  print 'adding '+self.cargname
97  self.adjsys = go_somewhere_significant.go_somewhere_significant(self.you,1,25000,base_only=1)
98  VS.IOmessage(0,"Passenger",self.mplay,"Please take me to my home base: %s so I may begin to recover. Thank you!"%self.adjsys.SignificantUnit().getName())
99  else:
100  VS.IOmessage(0,"rescue_mission",self.mplay,"#ff0000You Lost the Pilot before you could drop the Pilot at the base. The Pilot's oxygen is currently empty. You fail.")
101  self.Lose(1)
102  elif (self.arrived==3):
103  #check for dockal
104  if (self.you.GetCargo(self.cargname).GetQuantity()==0):
105  self.Lose(1)
106  elif (self.adjsys.SignificantUnit().isDocked(self.you) or self.you.isDocked(self.adjsys.SignificantUnit()) or self.adjsys.SignificantUnit().getDistance(self.you)<10):
107  if (self.you.removeCargo(self.cargname,1,1)):
108  self.Win(self.you,1)
109  else:
110  self.Lose(1)
111  def Win (self,un,terminate):
112  VS.IOmessage (0,"Passenger",self.mplay,"#00ff00Excellent work pilot.")
113  VS.IOmessage (0,"Passenger",self.mplay,"#00ff00You have been rewarded for your effort as agreed.")
114  VS.IOmessage (0,"Passenger",self.mplay,"#00ff00You saved my life. I owe you a drink, pal")
115  un.addCredits(self.cred)
116  VS.AdjustRelation(self.you.getFactionName(),self.faction,.02,1)
117  if len(self.donevar):
118  quest.removeQuest(self.you.isPlayerStarship(),self.donevar,1)
119  if (terminate):
120  VS.terminateMission(1)
121 
122  def Lose (self,terminate):
123  VS.AdjustRelation(self.you.getFactionName(),self.faction,-.02,1)
124  VS.IOmessage(0,"rescue_mission",self.mplay,"#ff0000Credit agency reports that you have failed the mission.")
125  if len(self.donevar):
126  quest.removeQuest(int(self.mplay[1:]),self.donevar,-1)
127  if (terminate):
128  print "lose plunder mission"
129  VS.terminateMission(0)
130  def initbriefing(self):
131  print "ending briefing"
132  def loopbriefing(self):
133  print "loop briefing"
134  Briefing.terminate();
135 
136  def endbriefing(self):
137  print "ending briefing"