Exemple #1
0
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
Exemple #3
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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