Crossfire Server, Trunk
rune.c File Reference
#include "global.h"
#include <string.h>
#include "sproto.h"
#include "spells.h"
+ Include dependency graph for rune.c:

Go to the source code of this file.

Macros

#define sqr(x)   ((x)*(x))
 

Functions

int dispel_rune (object *op, object *skill, int dir)
 
static void rune_attack (object *op, object *victim)
 
void spring_trap (object *trap, object *victim)
 
int trap_disarm (object *disarmer, object *trap, int risk, object *skill)
 
int trap_see (object *op, object *trap)
 
int trap_show (object *trap, object *where)
 
int write_rune (object *op, object *caster, object *spell, int dir, const char *runename)
 

Detailed Description

All rune-related functions.

Definition in file rune.c.

Macro Definition Documentation

◆ sqr

#define sqr (   x)    ((x)*(x))

Definition at line 28 of file rune.c.

Function Documentation

◆ dispel_rune()

int dispel_rune ( object op,
object skill,
int  dir 
)

Someone is trying to disarm a rune. The actual attempt is done in trap_disarm().

Parameters
opobject trying to disarm.
skillskill to disarm runes.
dirdirection to disarm.
Return values
0rune wasn't disarmed.
1a rune was disarmed.

Definition at line 295 of file rune.c.

References draw_ext_info(), FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), m, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, NDI_UNIQUE, object_find_by_type2(), object_free_drop_inventory(), object_remove(), give::op, P_OUT_OF_MAP, RUNE, SIGN, Ice::tmp, TRAP, trap_disarm(), diamondslots::x, and diamondslots::y.

Referenced by cast_spell().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rune_attack()

static void rune_attack ( object op,
object victim 
)
static

This function handles those runes which detonate but do not cast spells. Typically, poisoned or diseased runes.

Parameters
oprune.
victimvictim of the rune.

Definition at line 175 of file rune.c.

References create_treasure(), DISEASE, HAS_RANDOM_ITEMS, hit_map(), hit_player(), infect_object(), object_free_drop_inventory(), object_remove(), object_was_destroyed, give::op, CFweardisguise::tag, and reputation::victim.

Referenced by spring_trap().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ spring_trap()

void spring_trap ( object trap,
object victim 
)

This function generalizes attacks by runes/traps. This ought to make it possible for runes to attack from the inventory, it'll spring the trap on the victim.

Parameters
traptrap that activates.
victimvictim of the trap.

Definition at line 205 of file rune.c.

References arch_to_object(), cast_spell(), archt::clone, obj::count, obj::direction, rv_vector::distance, draw_ext_info(), env, FLAG_ALIVE, FLAG_IS_LINKED, FLAG_IS_USED_UP, FLAG_LIFESAVE, liv::food, get_rangevector(), liv::hp, obj::inv, MAX, liv::maxhp, obj::msg, MSG_TYPE_APPLY, MSG_TYPE_APPLY_TRAP, NDI_UNIQUE, object_free_drop_inventory(), object_get_env_recursive(), object_insert_in_map_at(), object_remove(), object_was_destroyed, obj::other_arch, PLAYER, QUERY_FLAG, rune_attack(), SET_FLAG, SIGN, SPELL, obj::stats, trap_show(), obj::type, use_trigger(), and reputation::victim.

Referenced by attempt_pick_lock(), cfapi_object_spring_trap(), common_trap_type_move_on(), hit_player(), player_attack_door(), save_throw_object(), trap_disarm(), and treasure_type_apply().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ trap_disarm()

int trap_disarm ( object disarmer,
object trap,
int  risk,
object skill 
)

Try to disarm a trap/rune.

Parameters
disarmerobject disarming the trap/rune.
traptrap to disarm.
riskif 0, trap/rune won't spring if disarm failure. Else it will spring.
skillspell used to disarm.
Returns
experience to award, 0 for failure.

Definition at line 433 of file rune.c.

References liv::dam, destroy_object(), liv::Dex, mapdef::difficulty, draw_ext_info(), draw_ext_info_format(), obj::inv, obj::level, obj::map, MAX, MIN, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_FAILURE, MSG_TYPE_COMMAND_SUCCESS, obj::name, NDI_UNIQUE, object_get_owner(), PLAYER, PREFER_LOW, random_roll(), spring_trap(), sqr, obj::stats, and obj::type.

Referenced by dispel_rune(), and remove_trap().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ trap_see()

int trap_see ( object op,
object trap 
)

Should op see trap?

Parameters
opliving that could spot the trap.
traptrap that is invisible.
Return values
0trap wasn't spotted.
1trap was spotted.

Definition at line 376 of file rune.c.

References liv::Cha, draw_ext_info_format(), obj::level, MAX, MIN, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_SUCCESS, obj::name, NDI_UNIQUE, give::op, PREFER_HIGH, random_roll(), and obj::stats.

Referenced by find_traps().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ trap_show()

int trap_show ( object trap,
object where 
)

Handles showing a trap/rune detonation.

Parameters
traptrap that detonates.
whereobject at the location to detonate.
Return values
0no animation inserted.
1animation inserted.

Definition at line 403 of file rune.c.

References obj::animation, create_archetype(), obj::face, GET_ANIMATION, object_insert_in_map_at(), obj::temp_animation, and python_pickup::where.

Referenced by find_traps(), remove_trap(), and spring_trap().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ write_rune()

int write_rune ( object op,
object caster,
object spell,
int  dir,
const char *  runename 
)

Player is attempting to write a magical rune. This function does all checks for paths, sp/gr, ...

Parameters
oprune writer.
casterobject used for casting this rune.
spellwriting spell.
dirorientation of rune, direction rune's contained spell will be cast in, if applicable
runenamename of the rune or message displayed by the rune for a rune of marking.
Return values
0no rune was written.
1rune written.

Definition at line 50 of file rune.c.

References arch_to_object(), blank_face, buf, caster_level(), liv::Cha, create_archetype(), obj::direction, draw_ext_info(), draw_ext_info_format(), obj::face, FOR_INV_FINISH, FOR_INV_PREPARE, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, GENERIC_RUNE, get_map_flags(), obj::level, m, MAX_BUF, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, obj::name, NDI_UNIQUE, object_copy(), object_insert_in_map_at(), object_insert_in_ob(), object_matches_string(), object_new(), object_set_msg(), object_set_owner(), give::op, obj::other_arch, obj::path_attuned, obj::path_denied, RUNE, set_spell_skill(), obj::skill, SP_level_spellpoint_cost(), SPELL, SPELL_GRACE, SPELL_MANA, obj::stats, Ice::tmp, and obj::type.

Referenced by cast_spell().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: