Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
faction_ships.py
Go to the documentation of this file.
1 
2 #use this to allow more interesting weightings than are feasible to manually enter
3 def weightedlist(tuples):
4  rettuple=[]
5  for i in xrange(0,len(tuples)):
6  for j in xrange(tuples[i][1]):
7  rettuple.append(tuples[i][0])
8  return tuple(rettuple)
9 
10 confed=0
11 aera=1
12 rlaan=2
13 merchant=3
14 merchant_guild=3
15 luddites=4
16 pirates=5
17 hunter=6
18 homeland_security=7
19 ISO=8
20 unknown=9
21 andolian=10
22 highborn=11
23 shaper=12
24 unadorned=13
25 purist=14
26 forsaken=15
27 LIHW=16
28 uln=17
29 dgn=18
30 klkk=19
31 mechanist=20
32 shmrn=21
33 rlaan_briin=22
34 
35 aeran_merchant_marine=23
36 rlaan_citizen=24
37 merchant_citizen=25
38 merchant_guild_citizen=25
39 andolian_citizen=26
40 highborn_citizen=27
41 shaper_citizen=28
42 unadorned_citizen=29
43 purist_citizen=30
44 forsaken_citizen=31
45 LIHW_citizen=32
46 uln_citizen=33
47 dgn_citizen=34
48 klkk_citizen=35
49 mechanist_citizen=36
50 shmrn_citizen=37
51 
52 fortress_systems={"Crucible/Cephid_17":1-.03625}
53 invincible_systems={}
54 
55 max_flightgroups={"Gemini/Troy":25,"Gemini/Penders_Star":15,"Gemini/Junction":12,"Crucible/Cephid_17":22}
56 min_flightgroups={"Gemini/Troy":22,"Gemini/Penders_Star":10,"Gemini/Junction":4,"Crucible/Cephid_17":22}
57 
58 factions = ("confed","aera","rlaan","merchant_guild","luddites","pirates","hunter","homeland-security","ISO","unknown","andolian","highborn","shaper","unadorned","purist","forsaken","LIHW","uln","dgn","klkk","mechanist","shmrn","rlaan_briin","aeran_merchant_marine","rlaan_citizen","merchant_guild_citizen","andolian_citizen","highborn_citizen","shaper_citizen","unadorned_citizen","purist_citizen","forsaken_citizen","LIHW_citizen","uln_citizen","dgn_citizen","klkk_citizen","mechanist_citizen","shmrn_citizen")
59 factiondict={}
60 for i in xrange(len(factions)):
61  factiondict[factions[i]]=i
62 factiondict["retro"]=luddites
63 factiondict["militia"]=homeland_security
64 factiondict["merchant"]=merchant_guild_citizen
65 
66 siegingfactions={"confed":10
67  ,"andolian":10
68  ,"highborn":10
69  ,"shaper":10
70  ,"unadorned":10
71  ,"purist":10
72  ,"forsaken":100
73  ,"LIHW":50
74  ,"aera":10
75  ,"rlaan":10
76  ,"ISO":40
77  ,"luddite":100
78  ,"uln":150
79  ,"mechanist":9
80  }
81 
82 fightersPerFG= {"confed":10
83  ,"andolian":10
84  ,"highborn":10
85  ,"shaper":10
86  ,"unadorned":10
87  ,"purist":10
88  ,"forsaken":3
89  ,"LIHW":6
90  ,"aera":8
91  ,"rlaan":11
92  ,"ISO":8
93  ,"luddite":4
94  ,"uln":2
95  ,"merchant_guild":3
96  ,"pirates":6
97  ,"hunter":1
98  ,"homeland-security":6
99  ,"default":10
100  ,"dgn":4
101  ,"klkk":4
102  ,"mechanist":8
103  ,"shmrn":10
104  ,"rlaan_briin":2
105 
106  ,"andolian_citizen":24*2
107  ,"highborn_citizen":24*2
108  ,"shaper_citizen":24*2
109  ,"unadorned_citizen":24*2
110  ,"purist_citizen":24*2
111  ,"forsaken_citizen":6*2
112  ,"LIHW_citizen":12*2
113  ,"aeran_merchant_marine":24*2
114  ,"rlaan_citizen":36*2
115  ,"uln_citizen":12*2
116  ,"merchant_guild_citizen":48*2
117  ,"dgn_citizen":12*2
118  ,"klkk_citizen":24*2
119  ,"mechanist_citizen":12*2
120  ,"shmrn_citizen":12*2
121  }
122 
123 capitalsPerFG= {"confed":1
124  ,"andolian":1
125  ,"highborn":1
126  ,"shaper":1
127  ,"unadorned":1
128  ,"purist":1
129  ,"forsaken":1
130  ,"LIHW":1
131  ,"aera":1
132  ,"rlaan":1
133  ,"ISO":1
134  ,"luddite":1
135  ,"uln":1
136  ,"merchant_guild":1
137  ,"pirates":1
138  ,"hunter":1
139  ,"homeland-security":1
140  ,"default":1
141  ,"dgn":1
142  ,"klkk":1
143  ,"mechanist":1
144  ,"shmrn":1
145  ,"rlaan_briin":1
146  ,"andolian_citizen":2
147  ,"highborn_citizen":1
148  ,"shaper_citizen":0
149  ,"unadorned_citizen":0
150  ,"purist_citizen":0
151  ,"forsaken_citizen":0
152  ,"LIHW_citizen":0
153  ,"aeran_merchant_marine":1
154  ,"rlaan_citizen":0
155  ,"uln_citizen":0
156  ,"merchant_guild_citizen":2
157  ,"dgn_citizen":0
158  ,"klkk_citizen":0
159  ,"mechanist_citizen":0
160  ,"shmrn_citizen":0
161  }
162 
163 staticFighterProduction={"luddites":3, "pirates":1}
164 
165 fighterProductionRate= {"confed":.01
166  ,"andolian":.1
167  ,"highborn":.15
168  ,"shaper":.1
169  ,"unadorned":.1
170  ,"purist":.1
171  ,"forsaken":.1
172  ,"LIHW":.05
173  ,"aera":.12
174  ,"rlaan":.11
175  ,"ISO":.14
176  ,"luddite":.04
177  ,"uln":.1
178  ,"merchant_guild":.1
179  ,"pirates":.1
180  ,"hunter":.1
181  ,"homeland-security":.05
182  ,"default":.1
183  ,"dgn":.1
184  ,"klkk":.1
185  ,"mechanist":.1
186  ,"shmrn":.08
187  ,"rlaan_briin":.05
188 
189  ,"andolian_citizen":1
190  ,"highborn_citizen":1
191  ,"shaper_citizen":1
192  ,"unadorned_citizen":1
193  ,"purist_citizen":1
194  ,"forsaken_citizen":.3
195  ,"LIHW_citizen":.60
196  ,"aeran_merchant_marine":.80
197  ,"rlaan_citizen":1.10
198  ,"uln_citizen":1.00
199  ,"merchant_guild_citizen":3.00
200  ,"dgn_citizen":.40
201  ,"klkk_citizen":1.00
202  ,"mechanist_citizen":.80
203  ,"shmrn_citizen":.20
204  }
205 
206 capitalProductionRate= {"confed":.002
207  ,"andolian":.025
208  ,"highborn":.02
209  ,"shaper":.02
210  ,"unadorned":.02
211  ,"purist":.02
212  ,"forsaken":.02
213  ,"LIHW":.01
214  ,"aera":.024
215  ,"rlaan":.022
216  ,"ISO":.028
217  ,"luddite":.004
218  ,"uln":.02
219  ,"merchant_guild":.02
220  ,"pirates":.02
221  ,"hunter":.02
222  ,"homeland-security":.001
223  ,"default":.02
224  ,"dgn":.02
225  ,"klkk":.02
226  ,"mechanist":.02
227  ,"shmrn":.001
228  ,"rlaan_briin":.001
229 
230  ,"andolian_citizen":.1
231  ,"highborn_citizen":.05
232  ,"shaper_citizen":.01
233  ,"unadorned_citizen":.01
234  ,"purist_citizen":.01
235  ,"forsaken_citizen":.003
236  ,"LIHW_citizen":.0060
237  ,"aeran_merchant_marine":.0080
238  ,"rlaan_citizen":.110
239  ,"uln_citizen":.0100
240  ,"merchant_guild_citizen":.200
241  ,"dgn_citizen":.0040
242  ,"klkk_citizen":.00500
243  ,"mechanist_citizen":.0080
244  ,"shmrn_citizen":.0020
245  }
246 
247 #FIXME homeworlds should *exist*
248 homeworlds={"confed":"Sol/Sol"
249  ,"aera":"enigma_sector/shelton"
250  ,"rlaan":"enigma_sector/shanha"
251  ,"ISO":"enigma_sector/defiance"
252  }
253 production_centers={"confed":["Sol/Sol"]
254  ,"aera":["enigma_sector/shelton"]
255  ,"rlaan":["enigma_sector/shanha"]
256  ,"ISO":["enigma_sector/defiance"]
257  }
258 earnable_upgrades={} #tech tree (new)
259 
260 def Precache():
261  pass#fixme
262 
263 useStock = ( 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0, 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 1 , 1 , 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 )#close ones are all civvies
264 
265 enemies = ((aera,aera,luddites,pirates,ISO), #confed
266  (confed,confed,confed,confed,confed,confed,homeland_security,rlaan,rlaan,rlaan,rlaan,rlaan,rlaan_citizen,rlaan_citizen,rlaan_citizen,rlaan_citizen,rlaan_citizen,pirates,hunter,merchant_guild,merchant_guild_citizen,ISO,andolian,highborn,shaper,unadorned,purist,forsaken_citizen,LIHW,andolian_citizen,highborn_citizen,shaper_citizen,unadorned_citizen,purist_citizen,forsaken_citizen,LIHW_citizen), #aera
267  (aera,aera,aera,aera,aera,aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites,luddites,luddites,luddites,hunter,highborn,highborn_citizen),#rlaan
268  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,aeran_merchant_marine,luddites,pirates,pirates,pirates,pirates,pirates,pirates,pirates,pirates,pirates,forsaken,forsaken_citizen), #merchant_guild
269  (confed,confed,confed,homeland_security,rlaan,rlaan_citizen,rlaan_citizen,pirates,hunter,merchant_guild,merchant_guild,merchant_guild,merchant_guild,merchant_guild,merchant_guild,merchant_guild,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,ISO,ISO,ISO,ISO,hunter,hunter,hunter,hunter,hunter), #luddites
270  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,rlaan,rlaan,rlaan,rlaan_citizen,rlaan_citizen,rlaan_citizen,luddites,aera,aera,aera,aeran_merchant_marine,aeran_merchant_marine,aeran_merchant_marine,merchant_guild,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild_citizen,ISO,andolian,highborn,shaper,unadorned,purist,andolian_citizen,highborn_citizen,shaper_citizen,unadorned_citizen,purist_citizen), #pirates
271  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,aeran_merchant_marine,aeran_merchant_marine,luddites,luddites,luddites,rlaan,rlaan_citizen,pirates,pirates,ISO), #hunter
272  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,pirates,ISO,forsaken,forsaken_citizen), #homeland_security
273  (confed,confed,confed,confed,confed,confed,confed,homeland_security,homeland_security,homeland_security,aera,aera,aera,pirates,luddites,luddites,luddites,hunter,highborn,highborn_citizen,shaper,shaper_citizen,purist,purist_citizen), #ISO
274  (confed,aera,rlaan,merchant_guild,luddites,pirates,hunter,homeland_security,ISO,andolian,highborn,shaper,unadorned,purist,forsaken,LIHW,uln,dgn,aeran_merchant_marine,rlaan_citizen,merchant_guild_citizen,andolian_citizen,highborn_citizen,shaper_citizen,unadorned_citizen,purist_citizen,forsaken_citizen,LIHW_citizen,uln_citizen,dgn_citizen), #unknown
275  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,luddites,pirates), #andolian
276  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,pirates,ISO,ISO), #highborn
277  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites,ISO), #shaper
278  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites), #unadorned
279  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,ISO,ISO), #purist
280  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,homeland_security), #forsaken
281  (aera,aera,aeran_merchant_marine,luddites), #LIHW
282  (aera,rlaan,aeran_merchant_marine,rlaan_citizen,confed), #uln
283  (aera,aeran_merchant_marine,pirates), #dgn
284  (aera,aeran_merchant_marine,luddites,luddites,pirates), #klkk
285  (luddites,luddites,pirates,aera,aera,pirates),#mechanist
286  (aera,aeran_merchant_marine,rlaan,rlaan_citizen,confed), #shmrn
287  (aera,aeran_merchant_marine,luddites,pirates), #rlaan_briin
288  (confed,confed,confed,confed,confed,confed,homeland_security,rlaan,rlaan,rlaan,rlaan,rlaan,rlaan_citizen,rlaan_citizen,rlaan_citizen,rlaan_citizen,rlaan_citizen,pirates,hunter,merchant_guild,merchant_guild_citizen,ISO,andolian,highborn,shaper,unadorned,purist,forsaken_citizen,LIHW,andolian_citizen,highborn_citizen,shaper_citizen,unadorned_citizen,purist_citizen,forsaken_citizen,LIHW_citizen), #aeran_merchant_marine
289  (aera,aera,aera,aera,aera,aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites,luddites,luddites,luddites,hunter,highborn,highborn_citizen),#rlaan_citizen
290  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,aeran_merchant_marine,luddites,pirates,pirates,pirates,pirates,pirates,pirates,pirates,pirates,pirates,forsaken,forsaken_citizen), #merchant_guild_citizen
291  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,luddites,pirates), #andolian_citizen
292  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,pirates,ISO,ISO), #highborn_citizen
293  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites,ISO), #shaper_citizen
294  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,luddites,luddites), #unadorned_citizen
295  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,pirates,ISO,ISO), #purist_citizen
296  (aera,aera,aeran_merchant_marine,aeran_merchant_marine,luddites,homeland_security), #forsaken_citizen
297  (aera,aera,aeran_merchant_marine,luddites), #LIHW_citizen
298  (aera,rlaan,aeran_merchant_marine,rlaan_citizen,confed), #uln_citizen
299  (aera,aeran_merchant_marine,pirates), #dgn_citizen
300  (aera,aeran_merchant_marine,luddites,luddites,pirates), #klkk_citizen
301  (luddites,luddites,pirates,aera,aera,pirates),#mechanist_citizen
302  (aera,aeran_merchant_marine,rlaan,rlaan_citizen,confed) #shmrn_citizen
303  )
304 
305 
306 rabble = ((luddites,pirates,ISO,pirates,ISO,pirates,ISO,pirates,pirates,pirates,pirates,ISO,forsaken,forsaken_citizen), #confed
307  (pirates,pirates,pirates,hunter,hunter,pirates,pirates,pirates,hunter,hunter,confed,andolian,rlaan,uln,uln_citizen,uln_citizen), #aera
308  (pirates,pirates,pirates,pirates,aera,aera,aeran_merchant_marine,confed,hunter,hunter,hunter,uln,uln_citizen,uln_citizen),#rlaan
309  (pirates,luddites,pirates,luddites), #merchant_guild
310  (homeland_security,homeland_security,ISO,hunter,pirates), #luddites
311  (hunter,luddites,ISO,homeland_security), #pirates
312  (pirates,luddites,ISO), #hunter
313  (luddites,pirates,ISO,forsaken,forsaken_citizen), #homeland_security
314  (homeland_security,homeland_security,homeland_security,pirates,luddites,luddites,luddites,hunter), #ISO
315  (pirates,pirates,pirates,pirates,luddites,ISO,forsaken,forsaken_citizen,aera,aera,aeran_merchant_marine,rlaan,confed,uln,uln_citizen,uln_citizen,dgn), #unknown
316  (luddites,luddites,pirates,luddites,pirates,pirates,pirates,aera,aera,aeran_merchant_marine,rlaan), #andolian
317  (luddites,pirates,ISO,ISO,pirates,ISO,ISO,luddites,aera,aera,aeran_merchant_marine,rlaan), #highborn
318  (pirates,luddites,luddites,ISO,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #shaper
319  (pirates,luddites,luddites,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #unadorned
320  (pirates,ISO,ISO,pirates,ISO,ISO,aera,aera,aeran_merchant_marine,rlaan), #purist
321  (luddites,homeland_security), #forsaken
322  (luddites,luddites,luddites,aera,aera,aeran_merchant_marine,rlaan), #LIHW
323  (hunter,hunter,hunter,aera,aera,aeran_merchant_marine,rlaan,confed), #uln
324  (pirates,pirates,pirates,), #dgn,dgn_citizen
325  (luddites,luddites,pirates), #klkk
326  (pirates,luddites,luddites,ISO,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #mechanist
327  (hunter,hunter,hunter,aera,aera,aeran_merchant_marine,rlaan), #shmrn
328  (pirates,pirates,pirates,pirates,aera,aera,aeran_merchant_marine,confed,hunter,hunter,hunter,uln,uln_citizen,uln_citizen),#rlaan_briin
329  (pirates,pirates,pirates,hunter,hunter,pirates,pirates,pirates,hunter,hunter,confed,andolian,rlaan,uln,uln_citizen,uln_citizen), #aeran_merchant_marine
330  (pirates,pirates,pirates,pirates,aera,aera,aeran_merchant_marine,confed,hunter,hunter,hunter,uln,uln_citizen,uln_citizen),#rlaan_citizen
331  (pirates,luddites,pirates,luddites), #merchant_guild_citizen
332  (luddites,luddites,pirates,luddites,pirates,pirates,pirates,aera,aera,aeran_merchant_marine,rlaan), #andolian_citizen
333  (luddites,pirates,ISO,ISO,pirates,ISO,ISO,luddites,aera,aera,aeran_merchant_marine,rlaan), #highborn_citizen
334  (pirates,luddites,luddites,ISO,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #shaper_citizen
335  (pirates,luddites,luddites,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #unadorned_citizen
336  (pirates,ISO,ISO,pirates,ISO,ISO,aera,aera,aeran_merchant_marine,rlaan), #purist_citizen
337  (luddites,homeland_security), #forsaken_citizen
338  (luddites,luddites,luddites,aera,aera,aeran_merchant_marine,rlaan), #LIHW_citizen
339  (hunter,hunter,hunter,aera,aera,aeran_merchant_marine,rlaan,confed), #uln_citizen
340  (pirates,pirates,pirates,), #dgn_citizen
341  (luddites,luddites,pirates), #klkk_citizen
342  (pirates,luddites,luddites,ISO,pirates,luddites,luddites,ISO,aera,aera,aeran_merchant_marine,rlaan), #mechanist_citizen
343  (hunter,hunter,hunter,aera,aera,aeran_merchant_marine,rlaan), #shmrn_citizen
344  )
345 
346 insysenemies = enemies
347 
348 friendlies=((confed,confed,confed,confed,confed,confed,confed,confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,highborn,highborn_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,purist,purist_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #confed
349  (aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,uln,uln_citizen,uln_citizen), #aera
350  (uln,uln_citizen,uln_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen), #rlaan
351  (ISO,confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,hunter,rlaan,rlaan_citizen,andolian,andolian_citizen,highborn,highborn_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,purist,purist_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #merchant_guild
352  (luddites,luddites,luddites), #luddites
353  (forsaken,forsaken_citizen,uln,uln_citizen,uln_citizen,LIHW,LIHW_citizen,pirates,pirates,pirates,pirates,pirates), #pirates
354  (confed,confed,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,hunter,hunter,hunter,hunter,hunter,merchant_guild_citizen,merchant_guild_citizen,merchant_guild), #hunter
355  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,highborn,highborn_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,purist,purist_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #homeland_security
356  (ISO,ISO,ISO,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,ISO,ISO,ISO,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,ISO,ISO,ISO,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild), #ISO
357  (merchant_guild_citizen,merchant_guild_citizen,merchant_guild,), #unknown
358  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #andolian
359  (confed,confed,confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,purist,purist_citizen,unadorned,unadorned_citizen,shaper,shaper_citizen,purist,purist_citizen,unadorned,unadorned_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #highborn
360  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,shaper,shaper_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #shaper
361  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #unadorned
362  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,highborn,highborn_citizen,purist,purist_citizen,highborn,highborn_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #purist
363  (forsaken,forsaken_citizen,forsaken,forsaken_citizen,pirates,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen), #forsaken
364  (forsaken,forsaken_citizen,forsaken,forsaken_citizen,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen), #LIHW
365  (uln,uln_citizen,uln_citizen,uln,uln_citizen,uln_citizen,uln,uln_citizen,uln_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,pirates,rlaan,rlaan_citizen,forsaken,forsaken_citizen), #uln
366  (dgn,dgn_citizen,dgn,dgn_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen), #dgn
367  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,klkk,klkk_citizen,klkk,klkk_citizen), #klkk
368  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,uln,uln_citizen,uln_citizen), #mechanist
369  (uln,uln_citizen,uln_citizen,shmrn,shmrn_citizen,shmrn,shmrn_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,pirates,rlaan,rlaan_citizen,forsaken,forsaken_citizen), #shmrn
370  (confed,confed,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,hunter,rlaan_briin,rlaan_briin,rlaan_briin), #rlaan_briin
371  (aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,aera,aera,aeran_merchant_marine,uln,uln_citizen,uln_citizen), #aeran_merchant_marine
372  (uln,uln_citizen,uln_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen,rlaan,rlaan_citizen), #rlaan_citizen
373  (ISO,confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,hunter,rlaan,rlaan_citizen,andolian,andolian_citizen,highborn,highborn_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,purist,purist_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #merchant_guild_citizen
374  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #andolian_citizen
375  (confed,confed,confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,purist,purist_citizen,unadorned,unadorned_citizen,shaper,shaper_citizen,purist,purist_citizen,unadorned,unadorned_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #highborn_citizen
376  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,shaper,shaper_citizen,highborn,highborn_citizen,highborn,highborn_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #shaper_citizen
377  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #unadorned_citizen
378  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,highborn,highborn_citizen,purist,purist_citizen,highborn,highborn_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,purist,purist_citizen,dgn,dgn_citizen,uln,uln_citizen,uln_citizen), #purist_citizen
379  (forsaken,forsaken_citizen,forsaken,forsaken_citizen,pirates,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen), #forsaken_citizen
380  (forsaken,forsaken_citizen,forsaken,forsaken_citizen,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen,LIHW,LIHW_citizen), #LIHW_citizen
381  (uln,uln_citizen,uln_citizen,uln,uln_citizen,uln_citizen,uln,uln_citizen,uln_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,pirates,rlaan,rlaan_citizen,forsaken,forsaken_citizen), #uln_citizen
382  (dgn,dgn_citizen,dgn,dgn_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen), #dgn_citizen
383  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,andolian,andolian_citizen,unadorned,unadorned_citizen,forsaken,forsaken_citizen,LIHW,LIHW_citizen,klkk,klkk_citizen,klkk,klkk_citizen), #klkk_citizen
384  (confed,confed,confed,homeland_security,homeland_security,homeland_security,homeland_security,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,LIHW,LIHW_citizen,highborn,highborn_citizen,highborn,highborn_citizen,highborn,highborn_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,mechanist,mechanist_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,shaper,shaper_citizen,unadorned,unadorned_citizen,uln,uln_citizen,uln_citizen), #mechanist_citizen
385  (uln,uln_citizen,uln_citizen,shmrn,shmrn_citizen,shmrn,shmrn_citizen,merchant_guild_citizen,merchant_guild_citizen,merchant_guild,pirates,rlaan,rlaan_citizen,forsaken,forsaken_citizen), #shmrn_citizen
386  )
387 
388 fighters = (("Lancelot","Lancelot","Gawain","Lancelot","Gawain","Progeny","Progeny","Pacifier","Schroedinger","Pacifier","Schroedinger","Derivative","Convolution","Derivative","Convolution","Goddard","Franklin","Quicksilver"), #confed
389  ("Nicander","Ariston","Areus"), #aera
390  ("Shizu","Zhuangzong","Taizong"), #rlaan
391  ("Mule","Plowshare"), #merchant_guild
392  ("Redeemer",), #luddites
393  ("Hyena","Plowshare"), #pirates
394  ("Hyena","Robin","Hyena","Robin","Sickle","Hammer","Vendetta.hunter","Entourage"), #hunter
395  ("Admonisher",), #homeland_security
396  ("Hammer","Sickle","Hammer","Sickle","Hammer","Sickle","Hammer","Sickle","Hammer","Sickle","Sickle","Sickle","Franklin","Entourage"), #ISO
397  ("Beholder",), #unknown
398  ("Schroedinger","Schroedinger","Schroedinger","Schroedinger","Schroedinger","Goddard","Goddard","Franklin","Kierkegaard"),#andolian
399  ("Gawain","Lancelot"),#highborn
400  ("Ancestor","Progeny","Progeny"),#shaper
401  ("Derivative","Determinant","Convolution","Derivative","Determinant","Convolution","Franklin"),#unadorned
402  ("Pacifier","Admonisher","Plowshare"),#purist
403  ("Hyena",),#forsaken
404  ("Sickle","Robin","Robin","Robin","Robin","Robin","Hammer"),#LIHW
405  ("Ancestor","Llama","Hyena","Entourage"),#uln
406  ("Dodo","Dodo","Dodo","Quicksilver"), #dgn
407  ("Dostoevsky","Dostoevsky","Dostoevsky","Dostoevsky","Dostoevsky","Kierkegaard"), #klkk
408  ("Llama","Convolution"),#mechanist
409  ("Dirge","Dirge","Regret"),#shmrn
410  ("Zhuangzong","Zhuangzong","Zhuangzong","Gaozong","Shizong","Shizong","Shizong"), #rlaan_briin
411  ("Nicander.escort","Nicander.escort","Ariston"), #aeran_merchant_marine
412  ("Shizu.civvie","Shizu.civvie","Shizu.civvie","Shizu.civvie","Gaozong","Shizong","Shizong","Shizong","Shizong","Shizong"), #rlaan_citizen
413  ("Mule.civvie","Plowshare.civvie","Llama.civvie","Quicksilver.civvie","Entourage"), #merchant_guild_citizen
414  ("Franklin.civvie","Sartre.civvie","Sartre.civvie","Kafka.civvie","Kafka.civvie","Llama.civvie","Quicksilver.civvie","MacGyver"),#andolian_citizen
415  ("Hidalgo.civvie","GTIO.civvie","GTIO.civvie","H496","H496","H496","Entourage","Entourage","Entourage","Entourage","Entourage"),#highborn_citizen
416  ("Mule.civvie","Plowshare.civvie","Llama.civvie","Quicksilver.civvie","Entourage"),#shaper_citizen
417  ("Mule.civvie","Plowshare.civvie","Llama.civvie"),#unadorned_citizen
418  ("Mule.civvie","Llama.civvie","Plowshare.civvie","Mule.civvie","Llama.civvie","Plowshare.civvie","GTIO.civvie","Quicksilver.civvie","Diligence","H496","Entourage"),#purist_citizen
419  ("Koala.civvie","Koala.civvie","Hyena.civvie","Llama.civvie","H496"),#forsaken_citizen
420  ("Koala.civvie","Llama.civvie","Llama.civvie","Llama.civvie","Quicksilver.civvie","H496"),#LIHW_citizen
421  ("Koala.civvie","Koala.civvie","Koala.civvie","Dodo.civvie","Llama.civvie","Entourage"),#uln_citizen
422  ("Koala.civvie","Dodo.civvie","Quicksilver.civvie"), #dgn_citizen
423  ("Kafka.civvie","Kafka.civvie","Sartre.civvie","Llama.civvie",), #klkk_citizen
424  ("Koala.civvie","Kafka.civvie","Llama.civvie"),#mechanist_citizen
425  ("Koala.civvie","Koala.civvie","Kafka.civvie","Kafka.civvie","Sartre.civvie"),#shmrn_citizen
426 
427  )
428 isBomber = {"Areus":6,"Taizong":8,"Pacifier":5,"Goddard":4,"Kierkegaard":5,"Hammer":16,"Admonisher":10,"Areus.blank":6,"Taizong.blank":8,"Pacifier.blank":5,"Goddard.blank":4,"Hammer.blank":16,"Admonisher.blank":10}
429 unescortable = {"Tesla":"Ox",
430  "Kahan":"Mule",
431  "Clydesdale":"Ox",
432  "Shundi":"Zhuangzong",
433  "Ruizong":"Taizong",
434  "Agesipolis":"Agasicles",
435  "Watson":"Mule",
436  "Leonidas":"Agasicles",
437  "Anaxidamus":"Agasicles"}
438 
439 capitals = (("Clydesdale","Watson","Archimedes","Kahan","Hawking"), #confed
440  ("Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agasicles","Agesipolis","Leonidas","Anaxidamus","Anaxidamus","Anaxidamus","Anaxidamus","Anaxidamus",), #aera
441  ("Ruizong","Ruizong","Ruizong","Shundi"), #rlaan
442  ("Ox","Ox","Clydesdale"), #merchant_guild
443  ("Mule",), #luddites
444  ("Thales","Thales","Thales","Thales","Gleaner","Gleaner","Yeoman"), #pirates
445  ("Mule",), #hunter
446  ("Clydesdale",), #homeland_security
447  ("Thales","Mule","Gleaner"), #ISO
448  ("Beholder",), #unknown
449  ("Kahan","Watson","Archimedes","Tesla","Hawking"),#andolian
450  ("Clydesdale",),#highborn
451  ("Clydesdale","Midwife","Midwife","Midwife"),#shaper
452  ("Watson","Kahan"),#unadorned
453  ("Clydesdale","Vigilance","Vigilance","Vigilance"),#purist
454  ("Thales",),#forsaken
455  ("Ox",),#LIHW
456  ("Yeoman","Yeoman","Gleaner","Gleaner","Gleaner"),#uln
457  ("Dodo",), #dgn
458  ("Kahan",), #klk
459  ("Watson",),#mechanist
460  ("Yeoman","Gleaner"), #shmrn
461  ("Ruizong","Ruizong","Shenzong",), #rlaan_briin
462  ("Agasicles","Charillus","Charillus","Charillus","Charillus","Charillus","Charillus","Charillus"), #aeran_merchant_marine FIXME
463  ("Shenzong",), #rlaan_citizen FIXME
464  ("Mule","Mule","Mule","Mule","Mule","Mule","Ox","Ox","Clydesdale"), #merchant_guild_citizen
465  ("Ox","Mule"), #andolian_citizen #FIXME - all citizens a bit b0rken
466  ("Ox","Mule"), #highborn_citizen
467  ("Ox","Mule","Mule","Mule","Cultivator","Cultivator"), #shaper_citizen
468  ("Ox","Mule"), #unadorned_citizen
469  ("Ox","Mule"), #purist_citizen
470  ("Yeoman","Gleaner","Mule"), #forsaken_citizen
471  ("Ox","Mule"), #LIHW_citizen
472  ("Gleaner","Gleaner","Gleaner","Gleaner","Mule"), #uln_citizen
473  ("Ox","Mule"), #dgn_citizen
474  ("Ox","Mule"), #klk_citizen
475  ("Ox","Mule"), #mechanist_citizen
476  ("Ox","Mule"), #shmrn_citizen
477  )
478 
479 stattableexp={
480  #SHIPNAME:(CHANCE_TO_HIT,CHANCE_TO_DODGE,DAMAGE,SHIELDS,ORDINANCE_DAMAGE),
481  "Admonisher":(0.38,0.32,100,1410,2000),
482  "Ancestor":(0.48,0.58,160,410,400),
483  "Archimedes":(1,0.18,60000,2292530,1000000),
484  "Ariston":(0.54,0.32,500,1190,800),
485  "Areus":(0.64,0.34,400,1300,300000),
486  "Mk32":(1,0.18,60000,2292530,1000000), #dupe of Archimedes FIXME
487  "Beholder":(1,1,5000,6940,0),
488  "Convolution":(0.54,0.7,500,620,50000),
489  "Thales":(0.32,0.02,1000,10000,10000),
490  "Clydesdale":(1,0.14,40000,1683740,300000),
491  "Cultivator":(0.68,0.16,300,286770,0),
492  "Derivative":(0.5,0.46,500,1030,400),
493  "Determinant":(0.5,0.62,300,590,400),
494  "Diligence":(0.52,0.14,200,18720,400), # dupe of Mule FIXME
495  "Dirge":(0.38,0.38,180,290,200),
496  "Dodo":(0.4,0.16,10,2500,0),
497  "Dostoevsky":(0.6,0.68,200,540,2000),
498  "Franklin":(0.76,0.78,200,2590,2000),
499  "Gaozong":(0,0.9,0,40,0),
500  "Gawain":(0.67,0.7,500,400,400),
501  "Gleaner":(0.52,0.14,200,18720,400), #dupe of Mule FIXME
502  "Goddard":(0.86,0.24,800,5200,500000),
503  "GTIO":(0.4,0.16,10,2500,0),
504  "H496":(0.4,0.16,10,2500,0),
505  "Hammer":(0.36,0.28,600,550,50000),
506  "Hawking":(1,0.2,80000,1887640,0),
507  "Hidalgo":(0.52,0.14,200,18720,400),
508  "Ruizong":(1,0.19,25000,1800000,400000),
509  "Hyena":(0.44,0.52,150,300,200),
510  "Kafka":(0.4,0.16,10,2500,0),
511  "Koala":(0.4,0.16,10,2500,0), # dupe of Kafka FIXME
512  "Kahan":(1,0.18,25000,1400000,500000),
513  "Kierkegaard":(0.86,0.24,800,5200,500000), #dupe of Goddard FIXME
514  "Lancelot":(0.5,0.44,540,1250,600),
515  "Llama":(0.34,0.22,200,4630,400),
516  "MacGyver":(0.52,0.52,40,320,0),
517  "Midwife":(1,0.16,2000,269400,3210), #dupe of Watson FIXME
518  "Mule":(0.52,0.14,200,18720,400),
519  "Nietzsche":(1,0.18,20000,1564400,100000),
520  "Nicander":(0.52,0.46,300,910,300),
521  "Nicander.escort":(0.52,0.46,300,910,300),
522  "Ox":(0.68,0.16,300,286770,0),
523  "Pacifier":(0.3,0.2,400,1890,100000),
524  "Plowshare":(0.3,0.2,100,1380,400),
525  "Progeny":(0.68,0.86,200,470,400),
526  "Quicksilver":(0.52,0.52,40,320,0),
527  "Redeemer":(0.38,0.38,180,290,200),
528  "Robin":(0.44,0.48,300,350,200),
529  "Sartre":(0.3,0.2,100,1380,400),
530  "Schroedinger":(0.8,0.91,120,790,400),
531  "Seaxbane":(0.44,0.48,300,350,200), # dupe of Robin FIXME
532  "Shenzong":(0.52,0.52,40,320,0),
533  "Shizu":(0.52,0.52,40,320,0),
534  "Shizu.civvie":(0.52,0.52,40,320,0),
535  "Shundi":(1,0.18,50000,2017640,3210),
536  "Sickle":(0.34,0.34,480,390,800),
537  "Taizong":(0.78,0.42,440,1150,100000),
538  "Tesla":(1,0.22,100000,1887640,0),
539  "Tridacna":(0.68,0.16,300,286770,0), #dupe of Ox FIXME
540  "Agasicles":(1,0.22,20000,1366420,600000),
541  "Vendetta":(0.52,0.5,440,450,0), #dupe of Zhuangzong FIXME
542  "Agesipolis":(1,0.16,50000,5738710,3210),
543  "Watson":(1,0.16,2000,269400,3210),
544  "Leonidas":(1,0.12,300000,8138400,2000000),
545  "Yeoman":(0.68,0.16,300,286770,0), # dupe of Ox FIXME
546  "Anaxidamus":(1,0.24,50000,2495160,1000000),
547  "Zhuangzong":(0.52,0.5,440,450,0),
548  "Shizong":(0.52,0.5,440,450,0),
549  "Agricultural_Station":(1,0,10,21841060,0), #dupe of Commerce_Center FIXME
550  "AsteroidFighterBase":(0.52,0,200,1512400,3210), #dupe of Refinery FIXME
551  "Asteroid_Refinery":(0.4,0,10,33071210,0),
552  "Asteroid_Shipyard":(0.4,0,10,33071210,0), #dupe of Asteroid_Refinery FIXME
553  "Commerce_Center":(1,0,10,21841060,0),
554  "Diplomatic_Center":(1,0,10,21841060,0), #dupe of Commerce_Center FIXME
555  "Factory":(.02,0.02,10,13987040,0),
556  "Shaper_Bio_Adaptation":(0.12,0,10,9050760,3210),
557  "Fighter_Barracks":(0.12,0,100,9050760,3210),
558  "Gasmine":(.02,0.02,10,13987040,0), #dupe of Factory FIXME
559  "Medical":(1,0,0,2230130,0),
560  "MiningBase":(1,0,100,715750,0),
561  "Outpost":(0.12,0,100,9050760,3210), #dupe of Fighter_Barracks FIXME
562  "Refinery":(0.4,0,10,33071210,0),
563  "Relay":(0.24,0,10,3228510,0),
564  "Research":(0.12,0,0,5497290,0),
565  "Shipyard":(0.12,0,100,9050760,3210), #dupe of Fighter_Barracks FIXME
566  "Starfortress":(1,0,750000,475993990,4000000)
567  }
568 
569 # stattable is generated dynamically at module initialization
570 # Modify by adding your ship/base to stattableexp
571 
572 def GetStats ( name):
573  try:
574  return stattable[name]
575  except:
576  import debug
577  debug.error( 'cannot find '+name)
578  return (.5,.5,1,1,1)
579 
580 
581 capitols=capitals
582 capitaldict={}
583 for i in capitols:
584  for j in i:
585  capitaldict[j]=1
586 for i in capitols:
587  for j in i:
588  capitaldict[j+'.blank']=1
589 
590 def isCapital(type):
591  return type in capitaldict
592 
593 generic_bases = ("Starfortress","Starfortress",
594  "Research","Research",
595  "Medical","Medical","Medical",
596  "Commerce_Center","Commerce_Center","Commerce_Center",
597  "Diplomatic_Center","Diplomatic_Center",
598  "Agricultural_Station","Agricultural_Station","Agricultural_Station",
599  "Factory","Factory","Factory",
600  "Shipyard","Shipyard",
601  "Gasmine","Gasmine",
602  "AsteroidFighterBase",
603  "Outpost","Outpost","Outpost","Outpost",
604  "Fighter_Barracks","Fighter_Barracks","Fighter_Barracks","Fighter_Barracks",
605  "Relay","Relay","Relay","Relay","Relay",
606  "Refinery","Refinery","Refinery","Refinery","Refinery",
607  "MiningBase","MiningBase","MiningBase","MiningBase","MiningBase","MiningBase")
608 
609 bases = (generic_bases,
610  generic_bases, #aera
611  generic_bases, #rlaan
612  generic_bases, #merchant_guild
613  generic_bases, #luddites
614  generic_bases, #pirates
615  generic_bases, #hunter
616  generic_bases, #homeland_security
617  generic_bases, #ISO
618  generic_bases, #unknown
619  generic_bases, #andolian
620  generic_bases, #highborn
621  generic_bases+("Shaper_Bio_Adaptation","Shaper_Bio_Adaptation"), #shaper
622  generic_bases, #unadorned
623  generic_bases, #purist
624  generic_bases, #forsaken
625  generic_bases, #LIHW
626  generic_bases+("Asteroid_Refinery","Asteroid_Refinery"), #uln
627  generic_bases, #dgn
628  generic_bases, #klkk
629  generic_bases, #mechanist
630  generic_bases, #shmrn
631  generic_bases, #rlaan_briin
632  generic_bases, #aeran_merchant_marine
633  generic_bases, #rlaan_citizen
634  generic_bases, #merchant_guild_citizen
635  generic_bases, #andolian_citizen
636  generic_bases, #highborn_citizen
637  generic_bases, #shaper_citizen
638  generic_bases, #unadorned_citizen
639  generic_bases, #purist_citizen
640  generic_bases, #forsaken_citizen
641  generic_bases, #LIHW_citizen
642  generic_bases, #uln_citizen
643  generic_bases, #dgn_citizen
644  generic_bases, #klkk_citizen
645  generic_bases, #mechanist_citizen
646  generic_bases, #shmrn_citizen
647 
648  )
649 basedict={}
650 for i in bases:
651  for j in i:
652  basedict[j]=1
653 
654 def appendName(faction):
655  from difficulty import usingDifficulty
656  if (useStock[faction] and usingDifficulty()):
657  # DON'T USE .blanks directly if possible-- preserve as templates. Use .stock where possible
658  return ".stock"
659  else:
660  return ""
661 
662 def factionToInt (faction):
663  try:
664  return factiondict[faction]
665  except:
666  return 0
667  return 0
668 
669 def intToFaction (faction):
670  return factions[faction]
671 
673  return len(factions)
674 
675 def get_non_citizen_X_of (mylist, index):
676  import vsrandom
677  import VS
678  enemylist = mylist[index]
679  newindex = vsrandom.randrange(0,len(enemylist))
680  rez=intToFaction(enemylist[newindex])
681  if VS.isCitizen(rez):
682  while (newindex>0):
683  newindex-=1
684  rez=intToFaction(enemylist[newindex])
685  if not VS.isCitizen(rez):
686  return rez
687  while (newindex+1<len(enemylist)):
688  newindex+=1
689  rez=intToFaction(enemylist[newindex])
690  if not VS.isCitizen(rez):
691  return rez
692  return rez
693 
694 def get_X_of (mylist, index):
695  import vsrandom
696  enemylist = mylist[index]
697  newindex = vsrandom.randrange(0,len(enemylist))
698  return intToFaction(enemylist[newindex])
699 
700 
701 def get_enemy_of (factionname):
702  return get_X_of (enemies, factionToInt(factionname))
703 
704 def get_insys_enemy_of (factionname):
705  return get_X_of (insysenemies, factionToInt(factionname))
706 
707 def get_friend_of (factionname):
708  return get_X_of (friendlies, factionToInt(factionname))
709 
710 def get_rabble_of (factionname):
711  return get_X_of (rabble, factionToInt(factionname))
712 
713 def get_enemy_of_no_citizen (factionname):
714  return get_X_of (enemies, factionToInt(factionname))
715  #return get_non_citizen_X_of (enemies, factionToInt(factionname))
716 
718  return get_X_of (insysenemies, factionToInt(factionname))
719  #return get_non_citizen_X_of (insysenemies, factionToInt(factionname))
720 
721 def get_friend_of_no_citizen (factionname):
722  return get_X_of (friendlies, factionToInt(factionname))
723  #return get_non_citizen_X_of (friendlies, factionToInt(factionname))
724 
725 def get_rabble_of_no_citizen (factionname):
726  return get_X_of (rabble, factionToInt(factionname))
727  #return get_non_citizen_X_of (rabble, factionToInt(factionname))
728 
729 def getRandomShipType(ship_list):
730  import vsrandom
731  index=vsrandom.randrange(0,len(ship_list))
732  return ship_list[index]
733 
734 def getFigher(confed_aera_or_rlaan, fighter):
735  fighterlist = fighters[confed_aera_or_rlaan]
736  fighterlist = fighterlist[fighter]
737  return fighterlist+appendName(confed_aera_or_rlaan)
738 
739 def getRandomFighterInt(confed_aera_or_rlaan):
740  return getRandomShipType(fighters[confed_aera_or_rlaan])+appendName(confed_aera_or_rlaan)
741 
742 def getNumCapitol (confed_aera_or_rlaan):
743  return len(capitols[confed_aera_or_rlaan])
744 
745 def getNumFighters (confed_aera_or_rlaan):
746  lst = fighters[confed_aera_or_rlaan]
747  return len(lst)
748 
749 def getCapitol(confed_aera_or_rlaan, fighter):
750  caplist = capitols[confed_aera_or_rlaan]
751  caplist = caplist[fighter]
752  return caplist
753 
754 def getRandomCapitolInt(confed_aera_or_rlaan):
755  lst = capitols[confed_aera_or_rlaan]
756  return getRandomShipType(lst)
757 
758 def getRandomFighter(faction):
759  return getRandomFighterInt (factionToInt (faction))
760 
761 def getRandomCapitol (faction):
762  return getRandomCapitolInt (factionToInt (faction))
763 
764 launch_distance_factor=1
765 max_radius=10000
766 min_forward_distance=100000
767 min_distance=10000
768 #print len(fightersPerFG)
769 #print len (fighterProductionRate)
770 #print len(capitalProductionRate)
771 #print len(enemies)
772 #print len(rabble)
773 #print len (friendlies)
774 #print len(fighters)
775 #print len(capitals)
776 #print len(bases)
777 #print len(useStock)
778 
779 import math
780 
781 def make_stattable(stattableexp):
782  stattable={}
783 
784  def lg (num, log=math.log, ilog2=1.0/math.log(2)):
785  return log(1+num)*ilog2
786 
787  for i,t in stattableexp.iteritems():
788  stattable[i]=(t[0],t[1],lg(t[2]),lg(t[3]),lg(t[4]))
789  stattable[i+'.rgspec']=(t[0],t[1]*.8,lg(t[2])*.8,lg(t[3])*.8,lg(t[4])*.8)
790  stattable[i+'.milspec']=(t[0],t[1]*.65,lg(t[2])*.65,lg(t[3])*.65,lg(t[4])*.65)
791  stattable[i+'.stock']=(t[0],t[1]*.5,lg(t[2])*.5,lg(t[3])*.5,lg(t[4])*.5)
792  stattable[i+'.blank']=(t[0],t[1]*.1,lg(t[2])*.1,lg(t[3])*.1,lg(t[4])*.1)
793  stattable[i+'.civvie']=(t[0],t[1]*.2,lg(t[2])*.2,lg(t[3])*.2,lg(t[4])*.2)
794 
795  return stattable
796 
797 stattable = make_stattable(stattableexp)