Example #1
0
def AllFGsInSystem(faction, system):
    key = MakeStarSystemFGKey(system)
    leg = Director.getSaveStringLength(ccp, key)
    #       if 1:#(not (Director.dontdoprint)):
    #               debug.info(faction)
    facnum = VS.GetFactionIndex(faction)
    ret = []
    if (leg > facnum):
        st = Director.getSaveString(ccp, key, facnum)
        if (len(st) > 0):
            ret = st.split('|')
    return ret
Example #2
0
def _RemoveFGFromSystem(fgname, faction, starsystem):
    key = MakeStarSystemFGKey(starsystem)
    leg = Director.getSaveStringLength(ccp, key)
    index = VS.GetFactionIndex(faction)
    if (leg > index):
        tup = Director.getSaveString(ccp, key, index).split('|')
        try:
            del tup[tup.index(fgname)]
            Director.putSaveString(ccp, key, index, ListToPipe(tup))
        except:
            debug.info('fg ' + fgname + ' not found in ' + starsystem)
    else:
        debug.info('no ships of faction ' + faction + ' in ' + starsystem)
Example #3
0
def NumFactionFGsInSystem(faction, system):
    key = MakeStarSystemFGKey(system)
    leg = Director.getSaveStringLength(ccp, key)
    facnum = VS.GetFactionIndex(faction)
    st = ''
    if (leg > facnum):
        #debug.debug("ccp=%s" % (ccp))
        #debug.debug("key=%s" % (key))
        #debug.debug("facnum=%s" % (facnum))
        st = Director.getSaveString(ccp, key, facnum)
        #debug.debug(">>%s<< = Director.getSaveString(ccp=%s, key=%s, facnum=%s)" % (st, ccp, key, facnum))
    if (st):
        return st.count('|') + 1
    return 0
def updatePlayerKillList(playernum,faction):
    fac = VS.GetFactionIndex(faction)
    ret=0
    for i in xrange(VS.getNumPlayers()-len(player_kill_list)):
        player_kill_list.append([]);
    for i in xrange(VS.getNumPlayers()):
        numfac=Director.getSaveDataLength(i,"kills")
        for j in xrange(numfac-len(player_kill_list[i])):
            player_kill_list[i].append(0)
        for j in xrange(numfac):
            if (i==playernum and j==fac):
                ret = Director.getSaveData(i,"kills",j)-player_kill_list[i][j];
            player_kill_list[i][j]=Director.getSaveData(i,"kills",j)
    return ret
Example #5
0
def _AddFGToSystem(fgname, faction, starsystem):
    key = MakeStarSystemFGKey(starsystem)
    leg = Director.getSaveStringLength(ccp, key)
    index = VS.GetFactionIndex(faction)
    if (leg > index):
        st = Director.getSaveString(ccp, key, index)
        if (len(st) > 0):
            st += '|'
        try:
            test = st + fgname
        except:
            fgname = fgname.decode('utf8', 'ignore')
        Director.putSaveString(ccp, key, index, st + fgname)
    else:
        for i in range(leg, index):
            Director.pushSaveString(ccp, key, '')
        Director.pushSaveString(ccp, key, fgname)
Example #6
0
def Siege(fac):
    global siegenumber
    global siegenumtimes
    global siegeprob
    #       turns_till_siege_effective=100
    if (not fac in faction_ships.siegingfactions):
        return
    numfg= fg_util.NumAllFlightgroups(fac)
    if (numfg):
        if (siegenumber==0):
            siegeprob = float(numfg)/float(faction_ships.siegingfactions[fac]);
            siegenumtimes = int (siegeprob)
            if (siegenumtimes==0):
                siegenumtimes=1
            else:
                siegeprob =1
        if siegenumber>=siegenumtimes:
            siegenumber=0
            return 0
        else:
            if (vsrandom.uniform(0,1)<siegeprob):
                fg =fg_util.RandomFlightgroup(fac)
                sys = fg_util.FGSystem(fg,fac)
                enfac=VS.GetGalaxyFaction(sys)
                if (not sys in faction_ships.invincible_systems):
                    #fg_util.CheckAllShips(fac)
                    #fg_util.CheckAllShips(enfac)
                    if enfac == "unknown":
                        debug.debug("exploration: "+sys)
                        fgleader = fg_util.getFgLeaderType(fg,fac)
                        exploration = 1

                    else:
                        exploration = 0
                    if (VS.GetRelation(fac,enfac)<0 and neighborFaction(sys,fac)):#FIXME maybe even less than that
                        numenemyfg = fg_util.NumFactionFGsInSystem(enfac,sys)
                        numfriendfg = fg_util.NumFactionFGsInSystem(fac,sys)
                        #debug.debug('siegarol enemioes '+str(numenemyfg)+ ' friends '+str(numfriendfg))
                        global dnewsman_
                        if exploration:
                            if sys != 'nil':
                                generate_dyn_universe.TakeoverSystem(fac,sys)
                                #HACK, regenerate bases instnatly
                                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"])
                                                                        #FIXME use keyword (ignore
                                                                        #keyword for now Daniel)

                        elif (numenemyfg==0 and numfriendfg==0): #If both annihalate each other completely (unlikely but possible)
                            facnum = VS.GetFactionIndex (fac)
                            debug.debug('cehcking started')
                            debug.error("DRAW error "+fg+" sys has "+sys+" has " +str(fg_util.NumFactionFGsInSystem(fac,sys))+" String is "+Director.getSaveString(0,fg_util.MakeStarSystemFGKey(sys),facnum))
                            if sys != 'nil':
                                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"])
                                                                        #FIXME use keyword (ignore
                                                                        #keyword for now Daniel)

                        elif (numenemyfg==0 and (fg_util.CapshipInFG(fg,fac) or moveSurroundingCapshipsToSiege(fac,sys))):      #If aggressor succeeded
                            debug.debug(fac + ' took over '+ sys + ' originally owned by '+enfac)
                            #ok now we have him... while the siege is going on the allies had better initiate the battle--because we're now defending the place...  so that means if the owners are gone this place is ours at this point in time
                            fgs = fg_util.FGsInSystem(fac,sys)
                            if (len(fgs)>0):
                                fgs=fgs[0]
                            else:
                                fgs = "unknown"
                            if sys != 'nil':
                                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"])
                                                                        #FIXME use keyword (ignore
                                                                        #keyword for now Daniel)

                            generate_dyn_universe.TakeoverSystem(fac,sys)
                            #HACK, regenerate bases instnatly

                        elif (numfriendfg==0):  #If aggressor lost
                            debug.error('wtf!!')
                            fgs = fg_util.FGsInSystem(enfac,sys)
                            if (len(fgs)>0):
                                fgs=fgs[0]
                            else:
                                fgs = "unknown"
                            if sys != 'nil':
                                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"])
                                                                        #FIXME use keyword (ignore
                                                                        #keyword for now Daniel)


                        #FIXME add if statements if there is instead a (non appocalyptic) draw (if waring factions have relations "almost neutral" you could have a cease fire, or if the two factions are evenly matched and go nowhere a withdraw of the attackers might occur)!!!
            siegenumber+=1
        return 1
    else:
        return 0
Example #7
0
def MakeStarSystemFactionFGKey(starsystem,faction):
    skey = MakeStarSystemFGKey (starsystem)
    index = VS.GetFactionIndex (faction)
    key = "%s[%d]" % (skey,index)
    return key
Example #8
0
def MakeFGKey (fgname,faction):
    return 'FG:'+str(fgname)+'|'+str(VS.GetFactionIndex(faction))
Example #9
0
def MakeFactionKey (faction):
    return 'FF:'+str(VS.GetFactionIndex(faction))