def setup_empire(empire, empire_name, home_system, starting_species, player_name): """ Sets up various aspects of an empire, like empire name, homeworld, etc. """ # set empire name, if no one is given, pick one randomly if not empire_name: print "No empire name set for player", player_name, ", picking one randomly" empire_name = next(empire_name_generator) fo.empire_set_name(empire, empire_name) print "Empire name for player", player_name, "is", empire_name # check starting species, if no one is given, pick one randomly if starting_species == "RANDOM" or not starting_species: print "Picking random starting species for player", player_name starting_species = next(starting_species_pool) print "Starting species for player", player_name, "is", starting_species universe_statistics.empire_species[starting_species] += 1 # pick a planet from the specified home system as homeworld planet_list = fo.sys_get_planets(home_system) # if the system is empty, report an error and return false, indicating failure if not planet_list: report_error("Python setup_empire: got home system with no planets") return False homeworld = random.choice(planet_list) # set selected planet as empire homeworld with selected starting species fo.empire_set_homeworld(empire, homeworld, starting_species) # set homeworld focus # check if the preferred focus for the starting species is among # the foci available on the homeworld planet available_foci = fo.planet_available_foci(homeworld) preferred_focus = fo.species_preferred_focus(starting_species) if preferred_focus in available_foci: # if yes, set the homeworld focus to the preferred focus print "Player", player_name, ": setting preferred focus", preferred_focus, "on homeworld" fo.planet_set_focus(homeworld, preferred_focus) elif len(available_foci) > 0: # if no, and there is at least one available focus, # just take the first of the list if preferred_focus == "": print "Player", player_name, ": starting species", starting_species, "has no preferred focus, using",\ available_foci[0], "instead" else: print "Player", player_name, ": preferred focus", preferred_focus, "for starting species",\ starting_species, "not available on homeworld, using", available_foci[0], "instead" fo.planet_set_focus(homeworld, available_foci[0]) else: # if no focus is available on the homeworld, don't set any focus print "Player", player_name, ": no available foci on homeworld for starting species", starting_species # give homeworld starting buildings print "Player", player_name, ": add starting buildings to homeworld" for item in fo.load_starting_buildings(): fo.create_building(item.name, homeworld, empire) # unlock starting techs, buildings, hulls, ship parts, etc. # use default content file print "Player", player_name, ": add unlocked items" for item in fo.load_item_spec_list(): fo.empire_unlock_item(empire, item.type, item.name) # add premade ship designs to empire print "Player", player_name, ": add premade ship designs" for ship_design in fo.design_get_premade_list(): fo.empire_add_ship_design(empire, ship_design) # add starting fleets to empire # use default content file print "Player", player_name, ": add starting fleets" fleet_plans = fo.load_fleet_plan_list() for fleet_plan in fleet_plans: # first, create the fleet fleet = fo.create_fleet(fleet_plan.name(), home_system, empire) # if the fleet couldn't be created, report an error and try to continue with the next fleet plan if fleet == fo.invalid_object(): report_error("Python setup empire: couldn't create fleet %s" % fleet_plan.name()) continue # second, iterate over the list of ship design names in the fleet plan for ship_design in fleet_plan.ship_designs(): # create a ship in the fleet # if the ship couldn't be created, report an error and try to continue with the next ship design if fo.create_ship("", ship_design, starting_species, fleet) == fo.invalid_object(): report_error( "Python setup empire: couldn't create ship %s for fleet %s" % (ship_design, fleet_plan.name())) return True
def setup_empire(empire, empire_name, home_system, starting_species, player_name): """ Sets up various aspects of an empire, like empire name, homeworld, etc. """ # set empire name, if no one is given, pick one randomly if not empire_name: print "No empire name set for player", player_name, ", picking one randomly" empire_name = next(empire_name_generator) fo.empire_set_name(empire, empire_name) print "Empire name for player", player_name, "is", empire_name # check starting species, if no one is given, pick one randomly if starting_species == "RANDOM" or not starting_species: print "Picking random starting species for player", player_name starting_species = next(starting_species_pool) print "Starting species for player", player_name, "is", starting_species statistics.empire_species[starting_species] += 1 # pick a planet from the specified home system as homeworld planet_list = fo.sys_get_planets(home_system) # if the system is empty, report an error and return false, indicating failure if not planet_list: report_error("Python setup_empire: got home system with no planets") return False homeworld = random.choice(planet_list) # set selected planet as empire homeworld with selected starting species fo.empire_set_homeworld(empire, homeworld, starting_species) # set homeworld focus # check if the preferred focus for the starting species is among # the foci available on the homeworld planet available_foci = fo.planet_available_foci(homeworld) preferred_focus = fo.species_preferred_focus(starting_species) if preferred_focus in available_foci: # if yes, set the homeworld focus to the preferred focus print "Player", player_name, ": setting preferred focus", preferred_focus, "on homeworld" fo.planet_set_focus(homeworld, preferred_focus) elif len(available_foci) > 0: # if no, and there is at least one available focus, # just take the first of the list if preferred_focus == "": print "Player", player_name, ": starting species", starting_species, "has no preferred focus, using",\ available_foci[0], "instead" else: print "Player", player_name, ": preferred focus", preferred_focus, "for starting species",\ starting_species, "not available on homeworld, using", available_foci[0], "instead" fo.planet_set_focus(homeworld, available_foci[0]) else: # if no focus is available on the homeworld, don't set any focus print "Player", player_name, ": no available foci on homeworld for starting species", starting_species # give homeworld starting buildings # use the list provided in scripting/starting_unlocks/buildings.inf print "Player", player_name, ": add starting buildings to homeworld" for building in load_string_list(os.path.join(fo.get_resource_dir(), "scripting/starting_unlocks/buildings.inf")): fo.create_building(building, homeworld, empire) # unlock starting techs, buildings, hulls, ship parts, etc. # use default content file print "Player", player_name, ": add unlocked items" for item in fo.load_item_spec_list(): fo.empire_unlock_item(empire, item.type, item.name) # add premade ship designs to empire print "Player", player_name, ": add premade ship designs" for ship_design in fo.design_get_premade_list(): fo.empire_add_ship_design(empire, ship_design) # add starting fleets to empire # use default content file print "Player", player_name, ": add starting fleets" fleet_plans = fo.load_fleet_plan_list() for fleet_plan in fleet_plans: # first, create the fleet fleet = fo.create_fleet(fleet_plan.name(), home_system, empire) # if the fleet couldn't be created, report an error and try to continue with the next fleet plan if fleet == fo.invalid_object(): report_error("Python setup empire: couldn't create fleet %s" % fleet_plan.name()) continue # second, iterate over the list of ship design names in the fleet plan for ship_design in fleet_plan.ship_designs(): # create a ship in the fleet # if the ship couldn't be created, report an error and try to continue with the next ship design if fo.create_ship("", ship_design, starting_species, fleet) == fo.invalid_object(): report_error("Python setup empire: couldn't create ship %s for fleet %s" % (ship_design, fleet_plan.name())) return True