def in_slf(self): self._touch() if not self.mothership or not self.mothership.supports_slf(): self.mothership = EDVehicleFactory.unknown_vehicle() if not self.slf: self.slf = EDVehicleFactory.unknown_slf() self.piloted_vehicle = self.slf
def in_srv(self): self._touch() if not self.mothership or not self.mothership.supports_srv(): self.mothership = EDVehicleFactory.unknown_vehicle() if not self.srv: self.srv = EDVehicleFactory.default_srv() self.piloted_vehicle = self.srv
def npc(self, name, rank=None, ship_internal_name=None): hopefully_unique_name = "{}{}{}".format(name, rank, EDVehicleFactory.canonicalize(ship_internal_name) if ship_internal_name else "") if hopefully_unique_name in self.npcs: return self.npcs[hopefully_unique_name][u"pilot"] if name in self.npc_names_to_npcs: return self.npcs[next(iter(self.npc_names_to_npcs[name]))][u"pilot"] return None
def swap(self, swap_event, star_system, storing_ship_name): if self.db is None: return if swap_event.get("event", None) != "ShipyardSwap": return if "SellShipID" in swap_event: self.__sold(swap_event["SellShipID"]) else: storing_ship_id = swap_event.get("StoreShipID", None) ship_type = swap_event.get("StoreOldShip", None).lower() localised = EDVehicleFactory.canonicalize(ship_type) market_id = swap_event.get("MarketID", None) self.db.execute( '''INSERT INTO ships(id, type, localised, name, star_system, ship_market_id, value, hot) VALUES(?,?,?,?,?,?,?,?)''', (storing_ship_id, ship_type, localised, storing_ship_name, star_system, market_id, 0, 0)) self.db.execute('DELETE from transits WHERE ship_id=?', (storing_ship_id, )) piloting_ship_id = swap_event.get("ShipID", None) self.db.execute( 'UPDATE ships SET ship_market_id="", star_system="", piloted=1, eta=0 WHERE id=?', (piloting_ship_id, )) self.db.execute('DELETE from transits WHERE ship_id=?', (piloting_ship_id, )) self.db.commit()
def leave_vehicle(self): self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership self.slf = None self.srv = None self.instance.reset() self.recon_box.reset() self._touch()
def join_crew(self, captain): self.wing = EDWing() self.instance.reset() self.crew = EDRCrew(captain) self.crew.add(self.name) self.instanced(captain) self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership self.slf = None self.srv = None self._touch()
def instanced(self, cmdr_name, ship_internal_name=None, piloted=True): self._touch() cmdr = self.instance.player(cmdr_name) if not cmdr: cmdr = EDPlayer(cmdr_name) cmdr.location = self.location if ship_internal_name: vehicle = EDVehicleFactory.from_internal_name(ship_internal_name) cmdr.update_vehicle_if_obsolete(vehicle, piloted) self.instance.player_in(cmdr) return cmdr
def instanced_npc(self, name, rank=None, ship_internal_name=None, piloted=True): self._touch() npc = self.instance.npc(name, rank, ship_internal_name) if not npc: npc = EDPilot(name, rank) npc.location = self.location if ship_internal_name: vehicle = EDVehicleFactory.from_internal_name(ship_internal_name) npc.update_vehicle_if_obsolete(vehicle, piloted) self.instance.npc_in(npc) return npc
def update_vehicle_if_obsolete(self, vehicle, piloted=True): if vehicle is None: return False updated = False if EDVehicleFactory.is_ship_launched_fighter(vehicle): updated = self.__update_slf_if_obsolete(vehicle) if not self.mothership.supports_slf(): self.mothership = EDVehicleFactory.unknown_vehicle() if piloted: self.piloted_vehicle = self.slf elif EDVehicleFactory.is_surface_vehicle(vehicle): updated = self.__update_srv_if_obsolete(vehicle) if not self.mothership.supports_srv(): self.mothership = EDVehicleFactory.unknown_vehicle() if piloted: self.piloted_vehicle = self.srv else: updated = self.__update_mothership_if_obsolete(vehicle) if piloted: self.piloted_vehicle = self.mothership if updated: self._touch() return updated
def targeting(self, pilot, ship_internal_name=None): if pilot.is_human(): self.instance.player_in(pilot) else: self.instance.npc_in(pilot) if self._target: self._target.untargeted() self._target._touch() self._target = pilot mothership = True slf = False srv = False if ship_internal_name: vehicle = EDVehicleFactory.from_internal_name(ship_internal_name) slf = EDVehicleFactory.is_ship_launched_fighter(vehicle) srv = EDVehicleFactory.is_surface_vehicle(vehicle) mothership = not(slf or srv) pilot.targeted(mothership, slf, srv) pilot._touch() self._touch()
def npc_out(self, name, ship_internal_name=None, rank=None): now = EDTime.py_epoch_now() try: if ship_internal_name: hopefully_unique_name = "{}{}{}".format(name, rank, EDVehicleFactory.canonicalize(ship_internal_name)) del self.npcs[hopefully_unique_name] self.npc_names_to_npcs[name].remove(hopefully_unique_name) else: for hopefully_unique_name in self.npc_names_to_npcs[name]: del self.npcs[hopefully_unique_name] del self.npc_names_to_npcs[name] self.timestamp = now self._touched = True except KeyError: pass
def __init__(self, name=None): now = EDTime.py_epoch_now() self._name = name self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership self.srv = None self.slf = None self.location = EDLocation() self.powerplay = EDRPowerplayUnknown() self.squadron = None self.sqid = None self.destroyed = False self.wanted = False self.enemy = False self._bounty = None self._fine = None self.targeted = False self.timestamp = now
def inception(self, genesis=False): if genesis: self.from_genesis = True self.previous_mode = None self.previous_wing = set() self.wing = EDWing() self.crew = None self.destroyed = False self.target = None self.wanted = False self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership self.srv = None self.slf = None self.location = EDLocation() self._bounty = None self.instance.reset() self.to_normal_space() self._touch() self.reset_mining_stats()
def buy(self, buy_event, star_system, storing_ship_name): if self.db is None: return if buy_event.get("event", None) != "ShipyardBuy": return market_id = buy_event.get("MarketID", None) if buy_event.get("StoreShipID", None): storing_ship_id = buy_event["StoreShipID"] ship_type = buy_event["StoreOldShip"].lower() localised = EDVehicleFactory.canonicalize(ship_type) self.db.execute( '''INSERT INTO ships(id, type, localised, name, star_system, ship_market_id, value, hot) VALUES(?,?,?,?,?,?,?,?)''', (storing_ship_id, ship_type, localised, storing_ship_name, star_system, market_id, 0, 0)) self.db.execute('DELETE from transits WHERE ship_id=?', (storing_ship_id, )) self.db.commit() elif buy_event.get("SellShipID", None): self.__sold(buy_event["SellShipID"])
def resurrect(self, rebought=True): self.game_mode = self.previous_mode self.private_group = self.previous_private_group self.wing = EDWing(self.previous_wing) self.previous_mode = None self.previous_wing = set() self.destroyed = False self.target = None self.to_normal_space() self.instance.reset() self._touch() if rebought: self.mothership.reset() if self.slf: self.slf.reset() if self.srv: self.srv.reset() else: self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership self.slf = None self.srv = None
def in_mothership(self): self._touch() if not self.mothership: self.mothership = EDVehicleFactory.unknown_vehicle() self.piloted_vehicle = self.mothership