9 import generate_dyn_universe
15 persystemattacklist= cpsal
21 stardatelen = Director.getSaveDataLength(0,
"stardate")
23 Director.pushSaveData(0,
"stardate",151.2)
26 if not generate_dyn_universe.hasUniverse:
29 Director.putSaveData(0,
"stardate",0,Director.getSaveData(0,
"stardate",0)+stardateinc)
32 nfac=VS.GetNumFactions()
39 fac = VS.GetFactionName(lastfac)
41 lookorsiege=LookForTrouble (fac)
54 if (VS.GetGalaxyProperty(sys,
"faction")==VS.GetGalaxyFaction(sys)):
66 for i
in xrange(VS.GetNumAdjacentSystems(sys)):
67 asys=VS.GetAdjacentSystem(sys,i)
79 for i
in xrange(VS.GetNumAdjacentSystems(sys)):
80 asys=VS.GetAdjacentSystem(sys,i)
81 if (VS.GetGalaxyFaction(asys)==fac):
91 if (
not fac
in faction_ships.siegingfactions):
96 siegeprob = float(numfg)/float(faction_ships.siegingfactions[fac]);
97 siegenumtimes = int (siegeprob)
98 if (siegenumtimes==0):
102 if siegenumber>=siegenumtimes:
109 enfac=VS.GetGalaxyFaction(sys)
110 if (
not sys
in faction_ships.invincible_systems):
113 if enfac ==
"unknown":
129 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),dnewsman_.TYPE_EXPLORATION,dnewsman_.STAGE_END,fac,enfac,dnewsman_.SUCCESS_WIN,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fg,fgleader,
"unknown",
"unknown"])
133 elif (numenemyfg==0
and numfriendfg==0):
134 facnum = VS.GetFactionIndex (fac)
138 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),dnewsman_.TYPE_SIEGE,dnewsman_.STAGE_END,fac,enfac,dnewsman_.SUCCESS_WIN,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fg,
"unknown",
"unknown",
"unknown"])
143 debug.debug(fac +
' took over '+ sys +
' originally owned by '+enfac)
151 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),dnewsman_.TYPE_SIEGE,dnewsman_.STAGE_END,fac,enfac,dnewsman_.SUCCESS_WIN,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fgs,
"unknown",
"unknown",
"unknown"])
158 elif (numfriendfg==0):
166 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),dnewsman_.TYPE_SIEGE,dnewsman_.STAGE_END,fac,enfac,dnewsman_.SUCCESS_LOSS,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,
"unknown",
"unknown",fgs,
"unknown"])
188 global deadbattlesiter
189 if simulateiter==
None:
190 if (deadbattlesiter!=-2):
191 if (deadbattlesiter<0):
195 stopAttack(deadbattles[deadbattlesiter][0],deadbattles[deadbattlesiter][1])
199 persystemattacklist=cpsal
201 simulateiter= attacklist.iteritems()
204 ally = simulateiter.next()
206 except StopIteration:
208 deadbattlesiter = len(deadbattles)-1
215 if (
not attackFlightgroup (ally[0],ally[1],enemy[0],enemy[1],enemy[2])):
216 deadbattles+=[(ally[0],ally[1])]
219 if not (sys
in cpsal):
221 cpsal[sys]+=[((ally[0],ally[1]),(enemy[0],enemy[1]))]
231 enemyfac = faction_ships.get_enemy_of (faction)
240 citizen=VS.isCitizen(fac)
242 convoywhere=fg.find(
"->")
243 if (convoywhere!=-1):
244 endpoints=[fg[0:convoywhere],fg[convoywhere+2:]]
246 if fg.find(
"Insys")!=-1:
253 sugfac=VS.GetGalaxyFaction(suggestednewsys)
254 sugrel=VS.GetRelation(fac,sugfac)
256 if convoywhere==-1
and (((fac.find(sugfac)!=-1
or sugrel>.5)
and citizen)
or not citizen):
261 ifac = VS.GetGalaxyFaction(i)
266 if endpoints[0]==i
or endpoints[1]==i:
268 elif VS.GetRelation(fac,ifac)>.5:
279 sys = VS.getSystemFile()
281 numsystems = generate_dyn_universe.systemcount[fac]
282 if (VS.GetGalaxyFaction(sys)!=fac):
284 homeworlds=faction_ships.production_centers
286 homeworlds=faction_ships.homeworlds
287 if fac
in homeworlds:
288 if type(homeworlds[fac])==type(
""):
294 if fac
in faction_ships.staticFighterProduction:
295 numfighters+=faction_ships.staticFighterProduction[fac]
307 if fac
in faction_ships.fightersPerFG:
308 stat=faction_ships.fightersPerFG[fac]
309 elif "default" in faction_ships.fightersPerFG:
310 stat=faction_ships.fightersPerFG[
"default"]
323 if (1
or VS.GetGalaxyFaction(sys)!=fac):
325 homeworlds=faction_ships.production_centers
327 homeworlds=faction_ships.homeworlds
328 if fac
in homeworlds:
329 if type(homeworlds[fac])==type(
""):
343 numfg=Director.getSaveStringLength(fg_util.ccp,key)
348 if faction
in faction_ships.fighterProductionRate:
351 i = Director.getSaveString(fg_util.ccp,key,lftiter)
353 sys = fg_util.FGSystem (i,faction)
354 citizen=VS.isCitizen(faction)
366 randomMovement (i,faction)
368 randomMovement (i,faction)
375 if ((un.getFactionName()==enfaction
and un.getFlightgroupName()==enfgname)
or
376 (un.getFactionName()==faction
and un.getFlightgroupName()==fgname)):
377 un.setFgDirective (
'b')
386 while (un
and ((
not en)
or (
not al))):
387 if (un.getFactionName()==enfaction
and un.getFlightgroupName()==enfgname):
390 if (un.getFactionName()==faction
and un.getFlightgroupName()==fgname):
394 al.setFlightgroupLeader(al)
396 al.setFgDirective (
'A.')
397 en.setFlightgroupLeader(en)
399 en.setFgDirective (
'h')
406 if (ejectbuildup>=(1-chancetoeject)**numkilled):
408 rescuelist[sys]=(fac,enfg,enfac)
412 ejectbuildup+=chancetoeject
429 tmpdam=damage+int(dampool/len(shiptypes))
430 numshipstokill=int(tmpdam/stats[3])
433 damage -=
KillOne(fg,fac,shiptypes[rnum],numshipstokill,enfg,enfac)*stats[3]
440 if (len(enemy)
and len(ally)):
446 if (enfgname==fgname
and enfaction==faction):
449 ApplyDamage(fgname,faction,ally,allyvictim,allystats,endam,enfgname,enfaction)
460 uni = VS.getUnitList()
462 while (uni.notDone()):
464 if (un.getFlightgroupName()==fgname
and un.getFactionName()==faction):
469 while nums>0
and len(landedtn)>0:
471 nums-=
numShips(landedtn[index])/landedtn[index][1]
472 shiplaunchlist += [(landedtn[index][0],1)]
473 if (landedtn[index][1]>1):
474 landedtn[index]=(landedtn[index][0],landedtn[index][1]-1)
478 if len(shiplaunchlist):
479 k = findLaunchedShipInFGInSystem (fgname,faction)
483 for i
in shiplaunchlist:
484 while j
in xrange(i[1]):
498 if (numenland==0
or numland==0
or (numlaunch==0
and numenlaunch==0) ):
500 if (numlaunch/numland > numenlaunch/numenland):
501 LaunchMoreShips (fgname,faction,land,int((numland*numenlaunch/numenland)-numlaunch))
503 LaunchMoreShips (enfgname,enfaction,enland,int((numenland*numlaunch/numland)-numenlaunch))
506 ally=(fgname,faction)
507 if ally
in attacklist:
508 enemy = attacklist[ally]
509 sys = fg_util.FGSystem (fgname,faction)
510 if (VS.systemInMemory(sys)):
512 VS.StopTargettingEachOther(fgname,faction,enemy[0],enemy[1])
514 del defendlist[(enemy[0],enemy[1])]
522 if capitala
and capitalb:
523 iscap = capitala+
','+capitalb
525 fg=(enfgname,enfaction)
528 fg = (fgname,faction)
529 efg = (enfgname,enfaction)
531 if (
not efg
in defendlist):
536 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),dnewsman_.TYPE_FLEETBATTLE,dnewsman_.STAGE_BEGIN,faction,enfaction,dnewsman_.SUCCESS_DRAW,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fgname,capitala,enfgname,capitalb])
538 reportbegin=reportbegin%10
539 if (fg
in attacklist):
540 defender = attacklist[fg]
541 del defendlist[(defender[0],defender[1])]
542 attacklist[fg]=(efg[0],efg[1],iscap)
543 defendlist[efg]=(fg[0],fg[1],iscap)
550 battlename=dnewsman_.TYPE_FLEETBATTLE
551 (leader,enleader)=iscap.split(
",")
553 battlename = dnewsman_.TYPE_BATTLE
556 sys = fg_util.FGSystem (fgname,faction)
557 ensys = fg_util.FGSystem (enfgname,enfaction)
559 if (0
and VS.systemInMemory(sys)):
561 LaunchEqualShips (fgname,faction,enfgname,enfaction)
562 VS.TargetEachOther (fgname,faction,enfgname,enfaction)
565 SimulatedDukeItOut (fgname,faction,enfgname,enfaction)
566 elif (sys!=
'nil' and ensys!=
'nil'):
570 if ensys
in adjSystemList:
571 fg_util.TransferFG (fgname,faction,ensys)
578 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),battlename,dnewsman_.STAGE_END,faction,enfaction,dnewsman_.SUCCESS_DRAW,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fgname,leader,enfgname,enleader])
580 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),battlename,dnewsman_.STAGE_END,faction,enfaction,dnewsman_.SUCCESS_LOSS,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fgname,leader,enfgname,enleader])
583 dnewsman_.writeDynamicString([
str(Director.getSaveData(0,
"stardate",0)),battlename,dnewsman_.STAGE_END,faction,enfaction,dnewsman_.SUCCESS_WIN,
str(
getImportanceOfSystem(sys)),sys,dnewsman_.KEYWORD_DEFAULT,fgname,leader,enfgname,enleader])
594 num=VS.GetNumAdjacentSystems(ensys)
597 fg_util.TransferFG (fgname,faction,ensys)