def cast_confuse(*args, **kwargs): entities = kwargs.get('entities') fov_map = kwargs.get('fov_map') target_x = kwargs.get('target_x') target_y = kwargs.get('target_y') results = [] if not libtcod.map_is_in_fov(fov_map, target_x, target_y): results.append({'consumed': False, 'message': Message('You cannot target a tile outside your field of view.', libtcod.yellow)}) return results for entity in entities: if entity.x == target_x and entity.y == target_y and entity.ai: confused_ai = ConfusedMonster(entity.ai, 10) confused_ai.owner = entity entity.ai = confused_ai results.append({'consumed': True, 'message': Message('The eyes of the {0} look vacant, as he starts to stumble around!'.format(entity.name), libtcod.light_green)}) break else: results.append({'consumed': False, 'message': Message('There is not targetable enemy at that location.', libtcod.yellow)}) return results
def cast_shadow_vanish_feat(*args, **kwargs): entities = kwargs.get('entities') duration = kwargs.get('duration') ability_power = kwargs.get('ability_power') results = [] for entity in entities: if entity.ai: confused_ai = ConfusedMonster(entity.ai, duration + ability_power, fade=True) confused_ai.owner = entity entity.ai = confused_ai results.append({ 'performed': True, 'message': Message( 'You fade into the shadows for {0} turns.'.format(duration + ability_power), libtcod.black) }) return results
def cast_confuse(*args, **kwargs): caster = args[0] entities = kwargs.get("entities") target_x = kwargs.get("target_x") target_y = kwargs.get("target_y") results = [] if not caster.fov_map.fov[target_y][target_x]: msg_str = f"You cannot target a tile outside of your field of view." msg = Message(msg_str, tcod.yellow) results.append({"consumed": False, "message": msg}) for entity in entities: if entity.ai and entity.x == target_x and entity.y == target_y: confused_ai = ConfusedMonster(entity.ai, 10) confused_ai.owner = entity entity.ai = confused_ai msg_str = (f"The eyes of the {entity.name} look vacant, " f"as he starts to stumble around!") msg = Message(msg_str, tcod.light_green) results.append({"consumed": True, "message": msg}) break else: msg_str = "There is no targetable enemy at that location." msg = Message(msg_str, tcod.yellow) results.append({"consumed": False, "message": msg}) return results
def cast_confuse(*args, **kwargs): entities = kwargs.get('entities') fov_map = kwargs.get('fov_map') target_x = kwargs.get('target_x') target_y = kwargs.get('target_y') results = [] if not tc.map_is_in_fov(fov_map, target_x, target_y): results.append({'consumed': False, 'message': Message('You cannot target a tile outside your field of view.', tc.yellow)}) return results for entity in entities: if entity.x == target_x and entity.y == target_y and entity.ai: confused_ai = ConfusedMonster(entity.ai, 10) confused_ai.owner = entity entity.ai = confused_ai results.append({'consumed': True, 'message': Message('The {0} is visibly confused, and begins to stumble!'.format(entity.name), tc.light_green)}) break else: results.append({'consumed': False, 'message': Message('There is no targetable enemy there.', tc.yellow)}) return results
def cast_confuse(*args, **kwargs): """ Targeting spell - cast confusion on target for a duration """ entities = kwargs.get("entities") fov_map = kwargs.get("fov_map") target_x_pos = kwargs.get("target_x_pos") target_y_pos = kwargs.get("target_y_pos") results = [] if not tcod.map_is_in_fov(fov_map, target_x_pos, target_y_pos): results.append({ "consumed": False, "message": Message("You cannot target a tile outside your field of view.", tcod.yellow), }) return results for entity in entities: if entity.x_pos == target_x_pos and entity.y_pos == target_y_pos and entity.ai: confused_ai = ConfusedMonster(entity.ai) confused_ai.owner = entity entity.ai = confused_ai results.append({ "consumed": True, "message": Message( f"The eyes of the {entity.name} look vacant, as he starts to stumble around!", tcod.light_green, ), }) break else: results.append({ "consumed": False, "message": Message("There is no targetable enemy at that location", tcod.yellow), }) return results
def cast_confuse(*args, **kwargs): entities = kwargs.get("entities") # The entities list. fov_map = kwargs.get("fov_map") target_x = kwargs.get("target_x") target_y = kwargs.get("target_y") results = [] # If the selected tile is not in the FOV. if not libtcod.map_is_in_fov(fov_map, target_x, target_y): results.append({ "consumed": False, "message": Message("You cannot target a tile outside your field of view.", libtcod.yellow) }) return results # If the selected tile contains an entity with an AI it will cast confuse on it. for entity in entities: if entity.x == target_x and entity.y == target_y and entity.ai: # Creates a new confused_ai for the monster(which takes the previous AI as an argument) confused_ai = ConfusedMonster(entity.ai, 10) # Must set the owner of the new confused_ai. confused_ai.owner = entity # Finally, sets the entity's AI to the new confused AI. entity.ai = confused_ai results.append({ "consumed": True, "message": Message("The {0} looks confused!".format(entity.name), libtcod.light_green) }) break # No entity on the target tile was found. else: results.append({ "consumed": False, "message": Message("There is not targetable enemy at that location.", libtcod.yellow) }) return results
def cast_confuse(*args, **kwargs) -> List[dict]: entities: Optional[List[Entity]] = kwargs.get("entities") fov_map: Optional[tcod.map.Map] = kwargs.get("fov_map") target_position: Optional[Point] = kwargs.get("target_position") results = [] if not fov_map.fov[target_position.x, target_position.y]: results.append({ "consumed": False, "message": Message( "You cannot target a tile outside your field of view.", Colors.YELLOW, ), }) return results for entity in entities: if entity.position == target_position and entity.ai: confused_ai = ConfusedMonster(entity.ai, 10) confused_ai.owner = entity entity.ai = confused_ai results.append({ "consumed": True, "message": Message( f"The eyes of the {entity.name} look vacant, as they start to stumble around!", Colors.LIGHT_GREEN, ), }) break else: results.append({ "consumed": False, "message": Message(f"There is no enemy to target at that location.", Colors.YELLOW), }) return results
def cast_confusion(*args, **kwargs): #Fireball function to be assigned to items #args[0] = caster #kwargs['entities'] list of entities around #kwargs['fov_map'] what caster is able to seet #kwargs['target_x'] targeted square's x to effect #kwargs['target_y'] targeted square's y to effect caster = args[0] entities = kwargs.get('entities') fov_map = kwargs.get('fov_map') target_x = kwargs.get('target_x') target_y = kwargs.get('target_y') results = [] if not libtcod.map_is_in_fov(fov_map, target_x, target_y): results.append({ 'consumed': False, 'message': Message('You cannot target a tile you cannot see') }) return results target = None for entity in entities: if entity.ai and entity.x == target_x and entity.y == target_y: confused_ai = ConfusedMonster(entity.ai, 10) confused_ai.owner = entity entity.ai = confused_ai results.append({ 'consumed': True, 'message': Message('The eyes of the {0} look vacant and they begin to stumble around'.format(entity.name), libtcod.light_green) }) break else: results.append({ 'consumed': False, 'message': Message('There is no targetable enemy on that tile'.format(entity.name, damage), libtcod.yellow) }) return results