def die(self, cause: str = "low_hp") -> None: self.parent.actor_state.is_dead = True if cause == "low_hp": death_message = "" elif cause == "lack_of_strength": death_message = f"{self.parent.name} is too weak to maintain itself!\n" elif cause == "starvation": death_message = f"{self.parent.name} has no nutrition to sustain itself!\n" elif cause == "drowning": death_message = f"{self.parent.name} has no oxygen!\n" else: death_message = "UNDEFINED" if self.engine.player is self.parent: death_message += "You died!" death_message_color = color.player_die self.engine.event_handler = GameOverEventHandler(self.engine) elif self.engine.game_map.visible[ self.parent.x, self.parent.y]: # if dead entity is in player's visible range death_message += f"{self.parent.name} is dead!" death_message_color = color.enemy_die else: death_message_color = color.white pass # Show nothing if entity is not in visible radius. # Drop Everything drop_list = [] for item in self.parent.inventory.items: drop_list.append(item) for drop_item in drop_list: self.parent.inventory.drop(item=drop_item, show_msg=False) # Spawn corpse entity if self.parent.edible: # if edible is None, no corpse is spawned. new_corpse = copy.deepcopy(item_factories.corpse) new_corpse.weight = max( round(self.parent.actor_state.weight / 2, 2), 0.01) new_corpse.name = self.parent.name + " corpse" new_corpse.edible = self.parent.edible # copy edible value from parent new_corpse.edible.parent = new_corpse new_corpse.spawn(self.parent.gamemap, self.parent.x, self.parent.y) #TODO: might have to save self.parent to new_corpse (for resurrection feature) # Add messagen to log self.engine.message_log.add_message(death_message, fg=death_message_color, target=self.parent) # Remove all actor states to prevent bugs self.parent.actor_state.remove_all_actor_states() # Delete dead entity self.parent.remove_self()
def die(self) -> None: if self.engine.player is self.entity: death_message = "You died!" self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f"{self.entity.name} is dead!" self.entity.char = "%" self.entity.color = (191, 0, 0) self.entity.blocks_movement = False self.entity.ai = None self.entity.name = f"remains of {self.entity.name}" self.entity.render_order = RenderOrder.CORPSE print(death_message)
def die(self) -> None: if self.engine.player is self.entity: death_message = 'You died!' death_message_color = color.player_die self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f'{self.entity.name} is dead!' death_message_color = color.enemy_die self.entity.char = '%' self.entity.color = (191, 0, 0) self.entity.blocks_movement = False self.entity.ai = None self.entity.name = f'remains of {self.entity.name}' self.entity.render_order = RenderOrder.CORPSE self.engine.message_log.add_message(death_message, death_message_color)
def die(self) -> None: if self.engine.player is self.parent: death_message = "You died!" death_message_color = color.player_die self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f"{self.parent.name} is dead!" death_message_color = color.enemy_die self.parent.char = "%" self.parent.color = (191, 0, 0) self.parent.blocks_movement = False self.parent.ai = None self.parent.name = f"remains of {self.parent.name}" self.parent.render_order = RenderOrder.CORPSE self.engine.message_log.add_message(death_message, death_message_color)
def kill_entity(engine: Engine, entity: Actor) -> None: entity.char = '%' entity.color = (191, 0, 0) if engine.player == entity: death_message = 'You died!' death_message_color = (191, 0, 0) engine.event_handler = GameOverEventHandler(engine) else: death_message = f'{entity.name} is dead!' death_message_color = (255, 127, 0) entity.blocks_movement = False entity.ai = DeadAI() entity.name = f'remains of {entity.name}' entity.render_order = RenderOrder.CORPSE engine.message_log.add_message(death_message, death_message_color)
def die(self) -> None: if self.engine.player is self.entity: death_message = "You died!" death_message_color = color.player_die self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f"{self.entity.name} is killed!" death_message_color = color.enemy_die self.entity.char = "%" self.entity.color = (127, 0, 0) self.entity.blocks_movement = False self.entity.ai = None self.entity.name = f"{self.entity.name}'s mangled corpse" self.entity.render_order = RenderOrder.CORPSE self.engine.message_log.add_message(death_message, death_message_color)
def die(self) -> None: if self.engine.player is self.entity: death_message = "You collapse. Your journey has come to an end." death_message_color = color.player_die self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f"{self.entity.name} crumbles into dust" death_message_color = color.enemy_die self.entity.char = "%" self.entity.color = (250, 250, 180) self.entity.blocks_movement = False self.entity.ai = None self.entity.name = f"remains of {self.entity.name}" self.entity.render_order = RenderOrder.CORPSE self.engine.message_log.add_message(death_message, death_message_color)
def die(self) -> None: ''' Calling this method on the entity will set its attributes to a 'dead' entity. - Its 'ai' is removed so its 'is_alive' property will return 'False' when called. - The player can now walk over it. ''' if self.engine.player is self.entity: death_message = "You died!" self.engine.event_handler = GameOverEventHandler(self.engine) else: death_message = f"{self.entity.name} is dead!" # Set entity's new attributes: self.entity.char = "%" self.entity.color = (191, 0, 0) self.entity.blocks_movement = False self.entity.ai = None self.entity.name = f"The twisted corpse of {self.entity.name}." self.entity.render_order = RenderOrder.CORPSE print(death_message)