Crossfire Server, Branch 1.12  R12190
Functions
libproto.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int absdir (int d)
 Computes an absolute direction.
void add_abilities (object *op, object *change)
 Used in artifact generation.
void add_button_link (object *button, mapstruct *map, int connected)
 Links specified object in the map.
void add_friendly_object (object *op)
 Add a new friendly object to the linked list of friendly objects.
sstring add_refcount (sstring str)
 This will increase the refcount of the string str.
void add_statbonus (object *op)
 Adds stat-bonuses given by the class which the player has chosen.
sstring add_string (const char *str)
 This will add 'str' to the hash table.
void add_weight (object *op, signed long weight)
 add_weight(object, weight) adds the specified weight to an object, and also updates how much the environment(s) is/are carrying.
int allowed_class (const object *op)
 Returns true if the given player is a legal class.
void animate_object (object *op, int dir)
 Updates the face-variable of an object.
void animate_turning (object *op)
 Animates one step of object.
void apply_anim_suffix (object *who, sstring suffix)
 Applies a compound animation to an object.
void apply_death_exp_penalty (object *op)
 Applies a death penalty experience, the size of this is defined by the settings death_penalty_percentage and death_penalty_levels, and by the amount of permenent experience, whichever gives the lowest loss.
void arch_info (object *op)
 Stores debug-information about how efficient the hashtable used for archetypes has been in the static errmsg array.
object * arch_to_object (archetype *at)
 Creates and returns a new object which is a copy of the given archetype.
int atnr_is_dragon_enabled (int attacknr)
 Determine if the attacktype represented by the specified attack-number is enabled for dragon players.
void bitstostring (long bits, int num, char *str)
 Writes num ones and zeros to the given string based on the bits variable.
int blocked_link (object *ob, mapstruct *m, int sx, int sy)
 Returns true if the given coordinate is blocked except by the object passed is not blocking.
int book_overflow (const char *buf1, const char *buf2, size_t booksize)
 Checks if buf1 and buf2 can be combined.
int buf_overflow (const char *buf1, const char *buf2, size_t bufsize)
 We don't want to exceed the buffer size of buf1 by adding on buf2!
int calc_item_power (const object *op, int flag)
 This takes an object 'op' and figures out what its item_power rating should be.
void calc_perm_exp (object *op)
 Ensure that the permanent experience requirements in an exp object are met.
int calculate_difficulty (mapstruct *m)
 This routine is supposed to find out the difficulty of the map.
int can_merge (object *ob1, object *ob2)
 Examines the 2 objects given to it, and returns true if they can be merged together, including inventory.
int can_pick (const object *who, const object *item)
 Finds out if an object can be picked up.
int can_see_monsterP (mapstruct *m, int x, int y, int dir)
 Recursive routine to see if we can find a path to a certain point.
int change_abil (object *op, object *tmp)
 Permanently alters an object's stats/flags based on another object.
void change_attr_value (living *stats, int attr, sint8 value)
 Like set_attr_value(), but instead the value (which can be negative) is added to the specified stat.
void change_exp (object *op, sint64 exp, const char *skill_name, int flag)
 Changes experience to a player/monster.
void change_luck (object *op, int value)
 Alter the object's luck.
int change_map_light (mapstruct *m, int change)
 Used to change map light level (darkness) up or down.
int check_altar_sacrifice (const object *altar, const object *sacrifice, int remove_others, int *toremove)
 Checks whether the altar has enough to sacrifice.
sint64 check_exp_adjust (const object *op, sint64 exp)
 Returns the maximum experience the object can gain or lose.
sint64 check_exp_loss (const object *op, sint64 exp)
 This function checks to make sure that object 'op' can lose 'exp' experience.
void check_generators (void)
void check_inv (object *op, object *trig)
 Function to search the inventory, of a player and then based on a set of conditions, the square will activate connected items.
object * check_inv_recursive (object *op, const object *trig)
 Checks object and its inventory for specific item.
int check_move_on (object *op, object *originator)
 Checks if any objects has a move_type that matches objects that effect this object on this space.
int check_path (const char *name, int prepend_dir)
 This function checks if a file with the given path exists.
void check_stat_bounds (living *stats)
 Ensures that all stats (str/dex/con/wis/cha/int) are within the 1-30 stat limit.
int check_trigger (object *op, object *cause)
void clean_friendly_list (void)
 It traverses the friendly list removing objects that should not be here (ie, do not have friendly flag set, freed, etc)
void clean_object (object *op)
 Remove and free all objects in the inventory of the given object.
void clean_tmp_map (mapstruct *m)
 Removse the temporary file used by the map.
void clear_archetable (void)
 Initialise the hashtable used by the archetypes.
void clear_los (object *op)
 Clears/initialises the los-array associated to the player controlling the object.
void clear_object (object *op)
 Frees everything allocated by an object, and also clears all variables and flags to default settings.
void clear_owner (object *op)
 Clears the owner of specified object.
void clear_player (player *pl)
 Clears data in player structure.
void close_and_delete (FILE *fp, int compressed)
 Closes specified file.
void copy_object (object *op2, object *op)
 Copy object first frees everything allocated by the second object, and then copies the contents of the first object into the second object, allocating what needs to be allocated.
void copy_object_with_inv (object *src_ob, object *dest_ob)
 copy an object with an inventory...
void copy_owner (object *op, object *clone)
 Set the owner to clone's current owner and set the skill and experience objects to clone's objects (typically those objects that where the owner's current skill and experience objects at the time when clone's owner was set - not the owner's current skill and experience objects).
int count_active (void)
 Objects statistics.
int count_free (void)
 Objects statistics.
int count_used (void)
 Object statistics.
object * create_archetype (const char *name)
 Finds which archetype matches the given name, and returns a new object containing a copy of the archetype.
object * create_archetype_by_object_name (const char *name)
 Creates an object given the name that appears during the game (for example, "writing pen" instead of "stylus").
void create_overlay_pathname (const char *name, char *buf, size_t size)
 Same as create_pathname(), but for the overlay maps.
char * create_pathname (const char *name, char *buf, size_t size)
 This makes a path absolute outside the world of Crossfire.
object * create_singularity (const char *name)
 Creates a dummy object.
void create_template_pathname (const char *name, char *buf, size_t size)
 same as create_pathname(), but for the template maps.
void create_treasure (treasurelist *t, object *op, int flag, int difficulty, int tries)
 This calls the appropriate treasure creation function.
void decay_objects (mapstruct *m)
 Decay and destroy persihable items in a map.
object * decrease_ob_nr (object *op, uint32 i)
 Decreases a specified number from the amount of an object.
void delete_map (mapstruct *m)
 Frees the map, including the mapstruct.
void describe_item (const object *op, const object *owner, char *retbuf, size_t size)
 Describes an item, in all its details.
void describe_monster (const object *op, char *retbuf, size_t size)
 Describes a monster.
void describe_resistance (const object *op, int newline, char *buf, size_t size)
 Generates the visible naming for resistances.
int did_make_save (const object *op, int level, int bonus)
 This function takes an object (monster/player, op), and determines if it makes a basic save throw by looking at the save_throw table.
int die_roll (int num, int size, const object *op, int goodbad)
 Roll a number of dice (2d3, 4d6).
int dirdiff (int dir1, int dir2)
 Computes a direction difference.
int distance (const object *ob1, const object *ob2)
 Return the square of the distance between the two given objects.
void drain_specific_stat (object *op, int deplete_stats)
 Drain a specified stat from op.
void drain_stat (object *op)
 Drains a random stat from op.
void dump_abilities (void)
 Dump to standard out the abilities of all monsters.
void dump_alchemy (void)
 Dumps alchemy recipes to output.
void dump_alchemy_costs (void)
 Dumps to output all costs of recipes.
void dump_all_archetypes (void)
 Dumps _all_ archetypes to debug-level output.
void dump_all_maps (void)
 Prints out debug-information about all maps.
void dump_all_objects (void)
 Dumps all objects to console.
void dump_arch (archetype *at, StringBuffer *sb)
 Dumps an archetype to buffer.
void dump_artifacts (void)
 For debugging purposes.
void dump_experience (void)
 Dump the experience table, then calls exit() - useful in terms of debugging to make sure the format of the exp_table is correct.
void dump_friendly_objects (void)
 Dumps all friendly objects.
void dump_gods (void)
 Prints all gods to stderr.
void dump_map (const mapstruct *m)
 Prints out debug-information about a map.
void dump_monster_treasure (const char *name)
 For debugging purposes.
void dump_object (object *op, StringBuffer *sb)
 Dumps an object.
int enough_elapsed_time (void)
 Checks elapsed time since last tick.
void fatal (int err)
 fatal() is meant to be called whenever a fatal signal is intercepted.
int find_animation (const char *name)
 Finds the animation id that matches name.
archetype * find_archetype (const char *name)
 Finds, using the hashtable, which archetype matches the given name.
archetype * find_archetype_by_object_name (const char *name)
 This function retrieves an archetype given the name that appears during the game (for example, "writing pen" instead of "stylus").
archetype * find_archetype_by_object_type_name (int type, const char *name)
 This function retrieves an archetype by type and name that appears during the game.
artifactlistfind_artifactlist (int type)
 Searches the artifact lists and returns one that has the same type of objects on it.
int find_dir (mapstruct *m, int x, int y, object *exclude)
 Search some close squares in the given map at the given coordinates for live objects.
int find_dir_2 (int x, int y)
 Computes a direction which you should travel to move of x and y.
unsigned find_face (const char *name, unsigned error)
 This returns an the face number of face 'name'.
int find_first_free_spot (const object *ob, mapstruct *m, int x, int y)
 find_first_free_spot(archetype, mapstruct, x, y) works like find_free_spot(), but it will search max number of squares.
int find_free_spot (const object *ob, mapstruct *m, int x, int y, int start, int stop)
 find_free_spot(object, map, x, y, start, stop) will search for a spot at the given map and coordinates which will be able to contain the given object.
int find_multi_free_spot_around (object *ob, object *gen, int *hx, int *hy)
 Sets hx and hy to the coords to insert a possibly multi-tile ob at, around gen.
int find_multi_free_spot_within_radius (object *ob, object *gen, int *hx, int *hy)
 Sets hx and hy to the coords to insert a possibly multi-tile ob at, within radius of generator, which is stored in key_value "generator_radius".
object * find_obj_by_type_subtype (const object *who, int type, int subtype)
 Find object in inventory.
object * find_object (tag_t i)
 Returns the object which has the count-variable equal to the argument.
object * find_object_name (const char *str)
 Finds an object by name.
int find_smooth (uint16 face, uint16 *smoothed)
 Find the smooth face for a given face.
sstring find_string (const char *str)
 Searches a string in the shared strings.
archetype * find_treasure_by_name (const treasure *t, const char *name, int depth)
 Find a treasure with a matching name.
treasurelistfind_treasurelist (const char *name)
 Searches for the given treasurelist in the globally linked list of treasurelists which has been built by load_treasures().
void fix_container (object *container)
 When the map is loaded, load_object() does not actually insert objects into inventory, but just links them.
void fix_generated_item (object *op, object *creator, int difficulty, int max_magic, int flags)
 fix_generated_item(): This is called after an item is generated, in order to set it up right.
void fix_multipart_object (object *tmp)
 Ensures specified object has its more parts correctly inserted in map.
void fix_object (object *op)
 Updates all abilities given by applied objects in the inventory of the given object.
void flag_inv (object *op, int flag)
 Activate recursively a flag on an object's inventory.
void free_all_anim (void)
 Clears all animation-related memory.
void free_all_archs (void)
 Frees all memory allocated to archetypes.
void free_all_god (void)
 Frees all god information.
void free_all_images (void)
 Deallocates memory allocated by read_bmap_names() and read_smooth().
void free_all_maps (void)
 Frees all allocated maps.
void free_all_object_data (void)
 Destroys all allocated objects.
void free_all_readable (void)
void free_all_recipes (void)
 Frees all memory allocated to recipes and recipes lists.
void free_all_treasures (void)
 Free all treasure-related memory.
void free_arch (archetype *at)
 Frees archetype.
void free_dialog_information (object *op)
 Frees obj::dialog_information.
void free_experience (void)
 Frees experience-related memory.
void free_globals (void)
 Cleans all memory allocated for global variables.
void free_key_values (object *op)
 Zero the key_values on op, decrementing the shared-string refcounts and freeing the links.
void free_loader (void)
void free_map (mapstruct *m)
 Frees everything allocated by the given mapstructure.
void free_object (object *ob)
 Frees everything allocated by an object, removes it from the list of used objects, and puts it on the list of free objects.
void free_object2 (object *ob, int free_inventory)
 Frees everything allocated by an object, removes it from the list of used objects, and puts it on the list of free objects.
void free_objectlink (objectlink *ol)
 Recursively frees all objectlinks.
void free_objectlinkpt (oblinkpt *obp)
 Recursively frees all linked list of objectlink pointers.
void free_player (player *pl)
 Clears player structure, including pointed object (through free_object()).
void free_socket_images (void)
 Frees all faceset information.
void free_string (sstring str)
 This will reduce the refcount, and if it has reached 0, str will be freed.
void generate_artifact (object *op, int difficulty)
 Decides randomly which artifact the object should be turned into.
object * generate_treasure (treasurelist *t, int difficulty)
 This is similar to the old generate treasure function.
archetype * get_archetype_by_skill_name (const char *skill, int type)
 Retrieves an archetype by skill name and type.
archetype * get_archetype_by_type_subtype (int type, int subtype)
 Retrieves an archetype by type and subtype.
archetype * get_archetype_struct (void)
 Allocates, initialises and returns the pointer to an archetype structure.
sint8 get_attr_value (const living *stats, int attr)
 Gets the value of a stat.
int get_button_value (const object *button)
 Returns the first value linked to this button.
client_spellget_client_spell_state (player *pl, object *spell)
 Gets the (client-side) spell state for specified spell.
int get_dialog_message (object *op, const char *text, struct_dialog_message **message, struct_dialog_reply **reply)
 Tries to find a message matching the said text.
mapstructget_empty_map (int sizex, int sizey)
 Creates and returns a map of the specific size.
int get_face_fallback (int faceset, int imageno)
 This returns the set we will actually use when sending a face.
recipelistget_formulalist (int i)
 Gets a formula list by ingredients count.
object * get_jail_exit (object *op)
 Returns an object which is an exit through which the player represented by op should be sent in order to be imprisoned.
int get_language (object *op)
 Returns the i18n language index associated with the given object.
void get_levelnumber (int i, char *buf, size_t size)
 Formats a level.
mapstructget_linked_map (void)
 Allocates, initialises, and returns a pointer to a mapstruct.
int get_map_flags (mapstruct *oldmap, mapstruct **newmap, sint16 x, sint16 y, sint16 *nx, sint16 *ny)
 This rolls up wall, blocks_magic, blocks_view, etc, all into one function that just returns a P_.
mapstructget_map_from_coord (mapstruct *m, sint16 *x, sint16 *y)
 This is basically the same as out_of_map above(), but instead we return NULL if no map is valid (coordinates out of bounds and no tiled map), otherwise it returns the map as that the coordinates are really on, and updates x and y to be the localized coordinates.
const char * get_month_name (const int index)
 give access to month names
void get_multi_size (object *ob, int *sx, int *sy, int *hx, int *hy)
 Computes the size of a multitile object.
const char * get_name_of_region_for_map (const mapstruct *m)
 Gets the name of a region for a map.
void get_ob_diff (StringBuffer *sb, object *op, object *op2)
key_value * get_ob_key_link (const object *ob, const char *key)
 Search for a field by key.
const char * get_ob_key_value (const object *op, const char *const key)
 Get an extra value by key.
object * get_object (void)
 Grabs an object from the list of unused objects, makes sure it is initialised, and returns it.
objectlink * get_objectlink (void)
 Allocates a new objectlink structure, initialises it, and returns a pointer to it.
oblinkpt * get_objectlinkpt (void)
 Allocates a new oblinkpt structure, initialises it, and returns a pointer to it.
object * get_owner (object *op)
 Returns the object which this object marks as being the owner.
const char * get_periodofday (const int index)
 give access to weekday names
object * get_player_container (object *op)
 Finds the player carrying an object.
int get_power_from_ench (int ench)
godlinkget_rand_god (void)
 Returns a random god.
object * get_random_mon (int level)
 Returns a random monster selected from linked list of all monsters in the current game.
recipeget_random_recipe (recipelist *rpl)
 Gets a random recipe from a list, based on chance.
void get_rangevector (object *op1, const object *op2, rv_vector *retval, int flags)
 From map.c This is used by get_player to determine where the other creature is.
void get_rangevector_from_mapcoord (const mapstruct *m, int x, int y, const object *op2, rv_vector *retval, int flags)
 This is basically the same as get_rangevector() above, but instead of the first parameter being an object, it instead is the map and x,y coordinates - this is used for path to player - since the object is not infact moving but we are trying to traverse the path, we need this.
const readable_message_typeget_readable_message_type (object *readable)
 Get the readable type for an object (hopefully book).
regionget_region_by_map (mapstruct *m)
 Gets a region from a map.
regionget_region_by_name (const char *region_name)
 Gets a region by name.
regionget_region_from_string (const char *name)
 Tries to find a region that 'name' corresponds to.
const char * get_region_longname (const region *r)
 Gets the longname of a region.
const char * get_region_msg (const region *r)
 Gets a message for a region.
regionget_region_struct (void)
 Allocates and zeros a region struct, this isn't free()'d anywhere, so might be a memory leak, but it shouldn't matter too much since it isn't called that often....
void get_search_arr (int *search_arr)
 New function to make monster searching more efficient, and effective! This basically returns a randomized array (in the passed pointer) of the spaces to find monsters.
const char * get_season_name (const int index)
 give access to season names
object * get_split_ob (object *orig_ob, uint32 nr, char *err, size_t size)
 get_split_ob(ob,nr) splits up ob into two parts.
void get_tod (timeofday_t *tod)
 Computes the ingame time of the day.
const typedataget_typedata (int itemtype)
const typedataget_typedata_by_name (const char *name)
const char * get_weekday (const int index)
 give access to weekday names
void give_artifact_abilities (object *op, object *artifact)
 Fixes the given object, giving it the abilities and titles it should have due to the second artifact-template.
object * give_skill_by_name (object *op, const char *skill_name)
 Given the skill name skill_name, we find the skill archetype/object, set appropriate values, and insert it into the object (op) that is passed.
int has_ability (const object *ob)
 Checks whether object has innate abilities (spell/spellbook in inventory).
mapstructhas_been_loaded (const char *name)
 Checks whether map has been loaded.
int has_carried_lights (const object *op)
 Checks if op has a light source.
void i18n_init (void)
 Initializes the i18n subsystem.
const char * i18n_translate (int language, int id)
 Translates a given i18n string into the provided language.
void identify (object *op)
 Identifies an item.
void init_anim (void)
 Loads the lib/animations file.
void init_archetype_pointers (void)
 Initialize global archtype pointers:
void init_archetypes (void)
 Initialises the internal linked list of archetypes (read from file).
void init_artifacts (void)
 Builds up the lists of artifacts from the file in the libdir.
void init_block (void)
 initialises the array used by the LOS routines.
void init_experience (void)
 This loads the experience table from the exp_table file.
void init_formulae (void)
 Builds up the lists of formula from the file in the libdir.
void init_globals (void)
 Initialises all global variables.
void init_gods (void)
 This takes a look at all of the archetypes to find the objects which correspond to the GODS (type GOD)
void init_hash_table (void)
 Initialises the hash-table used by the shared string library.
void init_library (void)
 It is vital that init_library() is called by any functions using this library.
void init_ob_method_struct (ob_methods *methods, ob_methods *fallback)
 Initializes a ob_methods struct.
void init_ob_types (ob_methods *base_type)
 Initializes the object system.
void init_objects (void)
 Sets up and initialises the linked list of free and used objects.
void init_readable (void)
 Initialize linked lists utilized by message functions in tailor_readable_ob()
void init_regions (void)
 Initialises regions from the regions file.
void init_vars (void)
object * insert_ob_in_map (object *op, mapstruct *m, object *originator, int flag)
 This function inserts the object in the two-way linked list which represents what is on a map.
object * insert_ob_in_map_at (object *op, mapstruct *m, object *originator, int flag, int x, int y)
 Same as insert_ob_in_map() except it handle separate coordinates and do a clean job preparing multi-part monsters.
object * insert_ob_in_ob (object *op, object *where)
 This function inserts the object op in the linked list inside the object environment.
int is_dragon_pl (const object *op)
 Checks if player is a dragon.
int is_friendly (const object *op)
 Checks if the given object is already in the friendly list or not Lauwenmark - 31/07/05.
int is_magical (const object *op)
 Checks whether object is magical.
int is_old_wraith_pl (object *op)
 Checks if player is a wraith without the 'wraith feed' skill.
int is_valid_faceset (int fsn)
 Checks specified faceset is valid.
int is_wraith_pl (object *op)
 Tests if a player is a wraith.
int isqrt (int n)
 Computes the square root.
int item_matched_string (object *pl, object *op, const char *name)
 This is a subset of the parse_id command.
int legal_artifact_combination (object *op, artifact *art)
 Checks if op can be combined with art.
sint64 level_exp (int level, double expmul)
 Returns how much experience is needed for a player to become the given level.
int lex_load (int *depth, object **items, int maxdepth, int map_flags, int linemode)
int load_object (FILE *fp, object *op, int bufstate, int map_flags)
mapstructload_original_map (const char *filename, int flags)
 Opens the file "filename" and reads information about the map from the given file, and stores it in a newly allocated mapstruct.
void load_treasures (void)
 Opens LIBDIR/treasure and reads all treasure-declarations from it.
artifactlocate_recipe_artifact (const recipe *rp, size_t idx)
 Finds an artifact for a recipe.
void LOG (LogLevel logLevel, const char *format,...)
 Logs a message to stderr, or to file.
void make_list_like (char *input)
 Taking a string as an argument, mutate it into a string that looks like a list.
void make_path_to_file (const char *filename)
 Checks if any directories in the given path doesn't exist, and creates if necessary.
void make_sure_not_seen (const object *op)
 The object which is supposed to be visible through walls has just been removed from the map, so update the los of any players within its range.
void make_sure_seen (const object *op)
 The object is supposed to be visible through walls, thus check if any players are nearby, and edit their LOS array.
void map_remove_unique_files (const mapstruct *map)
 Remove files containing the map's unique items.
object * merge_ob (object *op, object *top)
 This function goes through all objects below and including top, and merges op to the first matching object.
void merge_spell (object *op, sint16 x, sint16 y)
 This sees if there are any objects on the space that can merge with op.
materialtype_tname_to_material (const char *name)
 Convert materialname to materialtype_t.
int need_identify (const object *op)
 This function really should not exist - by default, any item not identified should need it.
sint64 new_exp (const object *ob)
 Alternative way to calculate experience based on the ability of a monster.
method_ret ob_apply (object *op, object *applier, int aflags)
 Applies an object.
int ob_blocked (const object *ob, mapstruct *m, sint16 x, sint16 y)
 Returns true if the given object can't fit in the given spot.
char * ob_describe (const object *op, const object *observer, char *buf, size_t size)
 Returns the description of an object, as seen by the given observer.
method_ret ob_move_on (object *op, object *victim, object *originator)
 Makes an object move on top of another one.
method_ret ob_process (object *op)
 Processes an object, giving it the opportunity to move or react.
method_ret ob_trigger (object *op, object *cause, int state)
 An object is triggered by another one.
object * object_create_arch (archetype *at)
 Create a full object using the given archetype.
object * object_create_clone (object *asrc)
 Create clone from object to another.
object * object_get_env_recursive (object *op)
 Utility function.
int on_same_map (const object *op1, const object *op2)
 Checks whether 2 objects are on the same map or not.
FILE * open_and_uncompress (const char *name, int flag, int *compressed)
 open_and_uncompress() first searches for the original filename.
int operate_altar (object *altar, object **sacrifice)
 Checks if sacrifice was accepted and removes sacrificed objects.
int out_of_map (mapstruct *m, int x, int y)
 this returns TRUE if the coordinates (x,y) are out of map m.
char * path_combine (const char *src, const char *dst, char *path, size_t size)
 Combines 2 paths, which can be relative.
char * path_combine_and_normalize (const char *src, const char *dst, char *path, size_t size)
 Combines the 2 paths.
void path_normalize (char *path)
 Cleans specified path.
void player_lvl_adj (object *who, object *op)
 For the new exp system.
const object * pntr_to_god_obj (godlink *godlnk)
 Returns a pointer to the object We need to be VERY careful about using this, as we are returning a pointer to the CLONE object.
object * present (uint8 type, mapstruct *m, int x, int y)
 Searches for any objects with a matching type variable at the given map and coordinates.
object * present_arch (const archetype *at, mapstruct *m, int x, int y)
 Searches for any objects with a matching archetype at the given map and coordinates.
object * present_arch_in_ob (const archetype *at, const object *op)
 Searches for any objects with a matching archetype in the inventory of the given object.
object * present_in_ob (uint8 type, const object *op)
 Searches for any objects with a matching type variable in the inventory of the given object.
object * present_in_ob_by_name (int type, const char *str, const object *op)
 Searches for any objects with a matching type & name variable in the inventory of the given object.
void print_los (object *op)
 Debug-routine which dumps the array which specifies the visible area of a player.
void print_monsters (void)
 As dump_abilities(), but with an alternative way of output.
void push_button (object *op)
 Push the specified object.
void query_base_name (const object *op, int plural, char *buf, size_t size)
 Query a short name for the item.
void query_name (const object *op, char *buf, size_t size)
 Describes an item.
int query_refcount (sstring str)
 This will return the refcount of the string str.
void query_short_name (const object *op, char *buf, size_t size)
 query_short_name(object) is similar to query_name(), but doesn't contain any information about object status (worn/cursed/etc.)
void query_weight (const object *op, char *buf, size_t size)
 Formats the item's weight.
int random_roll (int min, int max, const object *op, int goodbad)
 Roll a random number between min and max.
sint64 random_roll64 (sint64 min, sint64 max, const object *op, int goodbad)
 This is a 64 bit version of random_roll() above.
const char * re_cmp (const char *str, const char *regexp)
 re-cmp - get regular expression match.
void read_bmap_names (void)
 This reads the bmaps file to get all the bitmap names and stuff.
void read_client_images (void)
 Loads all the image types into memory.
int read_smooth (void)
 Reads the smooth file to know how to smooth datas.
mapstructready_map_name (const char *name, int flags)
 Makes sure the given map is loaded and swapped in.
int region_is_child_of_region (const region *child, const region *r)
 Checks if a region is a child of another.
void register_apply (int ob_type, apply_func method)
 Registers the apply method for the given type.
void register_describe (int ob_type, describe_func method)
 Registers the describe method for the given type.
void register_move_on (int ob_type, move_on_func method)
 Registers the move_on method for the given type.
void register_process (int ob_type, process_func method)
 Registers the process method for the given type.
void register_trigger (int ob_type, trigger_func method)
 Registers the trigger method for the given type.
void remove_button_link (object *op)
 Remove the object from the linked lists of buttons in the map.
void remove_directory (const char *path)
 This function removes everything in the directory, and the directory itself.
void remove_friendly_object (object *op)
 Removes the specified object from the linked list of friendly objects.
void remove_from_active_list (object *op)
 This function removes object 'op' from the list of active objects.
void remove_ob (object *op)
 This function removes the object op from the linked list of objects which it is currently tied to.
void remove_statbonus (object *op)
 Subtracts stat-bonuses given by the class which the player has chosen.
void replace (const char *src, const char *key, const char *replacement, char *result, size_t resultsize)
 Replace in string src all occurrences of key by replacement.
void replace_insert_ob_in_map (const char *arch_string, object *op)
 This function inserts an object of a specified archetype in the map, but if it finds objects of its own type, it'll remove them first.
void replace_unprintable_chars (char *buf)
 Replaces any unprintable character in the given buffer with a space.
void reset_object (object *op)
 Sets to 0 vital variables in an object.
void reset_sleep (void)
 Initialise all variables used in the timing routines.
int rndm (int min, int max)
 Returns a number between min and max.
int save_map (mapstruct *m, int flag)
 Saves a map to file.
int save_object (FILE *fp, object *op, int flag)
long seconds (void)
 Gets the seconds.
void set_abs_magic (object *op, int magic)
 Sets magical bonus in an object, and recalculates the effect on the armour variable, and the effect on speed of armour.
void set_attr_value (living *stats, int attr, sint8 value)
 Sets Str/Dex/con/Wis/Cha/Int/Pow in stats to value, depending on what attr is (STR to POW).
void set_cheat (object *op)
 set_cheat(object) sets the cheat flag (WAS_WIZ) in the object and in all it's inventory (recursively).
void set_dragon_name (object *pl, const object *abil, const object *skin)
 Set the new dragon name after gaining levels or changing ability focus (later this can be extended to eventually change the player's face and animation)
void set_map_reset_time (mapstruct *map)
 Updates the map's timeout.
void set_materialname (object *op, int difficulty, materialtype_t *nmt)
 Set the materialname and type for an item.
void set_max_time (long t)
 Sets the max speed.
int set_ob_key_value (object *op, const char *key, const char *value, int add_key)
 Updates the key in op to value.
void set_owner (object *op, object *owner)
 Sets the owner and sets the skill and exp pointers to owner's current skill and experience objects.
int set_variable (object *op, char *buf)
void share_exp (object *op, sint64 exp, const char *skill, int flag)
 Gives experience to a player/monster, sharing it with party if applicable.
void sleep_delta (void)
 sleep_delta checks how much time has elapsed since last tick.
void ss_dump_statistics (char *buf, size_t size)
 A call to this function will cause the statistics to be dumped into specified buffer.
char * ss_dump_table (int what, char *buf, size_t size)
 Dump the contents of the share string tables.
const char * strcasestr_local (const char *s, const char *find)
 Finds a substring in a string, in a case-insensitive manner.
char * strdup_local (const char *str)
 A replacement of strdup(), since it's not defined at some unix variants.
char * strerror_local (int errnum, char *buf, size_t size)
 This takes an err number and returns a string with a description of the error.
void stringbuffer_append_printf (StringBuffer *sb, const char *format,...)
void stringbuffer_append_string (StringBuffer *sb, const char *str)
void stringbuffer_append_stringbuffer (StringBuffer *sb, const StringBuffer *sb2)
char * stringbuffer_finish (StringBuffer *sb)
sstring stringbuffer_finish_shared (StringBuffer *sb)
void stringbuffer_finish_socklist (StringBuffer *sb, SockList *sl)
StringBufferstringbuffer_new (void)
void strip_endline (char *buf)
 Removes endline from buffer (modified in place).
void strip_media_tag (char *message)
 Strip out the media tags from a String.
const char * strrstr (const char *haystack, const char *needle)
 Finds a string in a string.
int strtoint (const char *buf)
 Convert buf into an integer equal to the coadded sum of the (lowercase) character.
void sub_weight (object *op, signed long weight)
 Recursively (outwards) subtracts a number from the weight of an object (and what is carried by it's environment(s)).
signed long sum_weight (object *op)
 sum_weight() is a recursive function which calculates the weight an object is carrying.
void tailor_readable_ob (object *book, int msg_type)
 The main routine.
char * tempnam_local (const char *dir, const char *pfx)
 A replacement for the tempnam() function since it's not defined at some unix variants.
FILE * tempnam_secure (const char *dir, const char *pfx, char **filename)
 A replacement for the tempnam_local() function since that one is not very secure.
void time_info (object *op)
 Players wants to know the time.
void transmute_materialname (object *op, const object *change)
 When doing transmutation of objects, we have to recheck the resistances, as some that did not apply previously, may apply now.
void trigger_connected (objectlink *ol, object *cause, const int state)
 Trigger every object in an objectlink.
int try_find_animation (const char *name)
 Tries to find the animation id that matches name, don't LOG() an error if not found.
archetype * try_find_archetype (const char *name)
 Finds, using the hashtable, which archetype matches the given name.
void unflag_inv (object *op, int flag)
 Desactivate recursively a flag on an object inventory.
void update_all_los (const mapstruct *map, int x, int y)
 This function makes sure that update_los() will be called for all players on the given map within the next frame.
void update_all_map_los (mapstruct *map)
 update all_map_los is like update_all_los() below, but updates everyone on the map, no matter where they are.
void update_button (object *op)
 Updates everything connected with the button op.
void update_buttons (mapstruct *m)
 Updates every button on the map (by calling update_button() for them).
void update_los (object *op)
 Recalculates the array which specifies what is visible for the given player-object.
void update_ob_speed (object *op)
 Updates the speed of an object.
void update_object (object *op, int action)
 update_object() updates the array which represents the map.
void update_position (mapstruct *m, int x, int y)
 This function updates various attributes about a specific space on the map (what it looks like, whether it blocks magic, has a living creatures, prevents people from passing through, etc)
void update_turn_face (object *op)
 If an object with the IS_TURNABLE() flag needs to be turned due to the closest player being on the other side, this function can be called to update the face variable, _and_ how it looks on the map.
void use_trigger (object *op)
 Toggles the state of specified button.
void verify_button_links (const mapstruct *map)
 This does a minimal check of the button link consistency for object map.
void write_book_archive (void)
 Write out the updated book archive to bookarch file.
void write_todclock (void)
 Write out the current time to the file so time does not reset every time the server reboots.
void yyfree (void *ptr)
int yyget_debug (void)
FILE * yyget_in (void)
int yyget_leng (void)
int yyget_lineno (void)
FILE * yyget_out (void)
char * yyget_text (void)
int yylex_destroy (void)
void yypop_buffer_state (void)
void yyrestart (FILE *input_file)
void yyset_debug (int bdebug)
void yyset_in (FILE *in_str)
void yyset_lineno (int line_number)
void yyset_out (FILE *out_str)

Function Documentation

int absdir ( int  d)

Computes an absolute direction.

Parameters:
ddirection to convert.
Returns:
number between 1 and 8, which represent the "absolute" direction of a number (it actually takes care of "overflow" in previous calculations of a direction).

Definition at line 3417 of file object.c.

Referenced by check_spell_knockback(), common_process_projectile(), compute_path(), dist_att(), disthit_att(), fire_bolt(), fire_bullet(), flee_player(), forklightning(), hitrun_att(), monster_cast_spell(), monster_use_bow(), monster_use_range(), monster_use_scroll(), monster_use_skill(), move_ball_spell(), move_bolt(), move_bullet(), move_cone(), move_monster(), move_player(), move_swarm_spell(), path_to_player(), pet_move(), player_fire_bow(), pray_at_altar(), run_att(), spinner_type_move_on(), summon_object(), turn_transport(), wait_att(), and wait_att2().

Here is the caller graph for this function:

void add_abilities ( object *  op,
object *  change 
)

Used in artifact generation.

The bonuses of the first object is modified by the bonuses of the second object.

Definition at line 1653 of file treasure.c.

References add_refcount(), animate_object(), arch_to_object(), blank_face, change_attr_value(), CLEAR_FLAG, copy_object(), FLAG_ALIVE, FLAG_ANIMATE, FLAG_BLIND, FLAG_CURSED, FLAG_DAMNED, FLAG_LIFESAVE, FLAG_MAKE_INVIS, FLAG_REFL_MISSILE, FLAG_REFL_SPELL, FLAG_SEE_IN_DARK, FLAG_STAND_STILL, FLAG_STEALTH, FLAG_XRAYS, free_object(), free_string(), get_attr_value(), get_object(), HORN, insert_ob_in_ob(), llevDebug, LOG(), NROFATTACKS, NUM_STATS, POTION, QUERY_FLAG, remove_ob(), set_abs_magic(), SET_FLAG, and update_ob_speed().

Referenced by artifact_msg(), and give_artifact_abilities().

Here is the call graph for this function:

Here is the caller graph for this function:

void add_button_link ( object *  button,
mapstruct map,
int  connected 
)

Links specified object in the map.

Parameters:
buttonobject to link. Must not be NULL.
mapmap we are on. Should not be NULL.
connectedconnection value for the item.

Definition at line 663 of file button.c.

References mapdef::buttons, FLAG_IS_LINKED, free_objectlink(), get_objectlink(), get_objectlinkpt(), llevError, LOG(), and SET_FLAG.

Referenced by apply_builder_item(), and include_map_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void add_friendly_object ( object *  op)

Add a new friendly object to the linked list of friendly objects.

Will log an error if the object is already on that list.

Parameters:
opobject to add to the list.

Definition at line 43 of file friend.c.

References first_friendly_object, get_objectlink(), is_friendly(), llevError, and LOG().

Referenced by add_player(), animate_weapon(), cfapi_object_set_property(), do_mood_floor(), fix_summon_pet(), hit_player(), mood_change(), polymorph_living(), receive_play_again(), summon_golem(), summon_object(), and use_oratory().

Here is the call graph for this function:

Here is the caller graph for this function:

This will increase the refcount of the string str.

Parameters:
strstring which *must *have been returned from a previous add_string().
Returns:
str

Definition at line 202 of file shstr.c.

References GATHER, and SS.

Referenced by add_abilities(), adjust_sign_msg(), animate_bomb(), attack_ob_simple(), cast_bless(), cast_change_ability(), cast_curse(), cast_invisible(), cone_drop(), copy_object(), do_symptoms(), explode_bullet(), fire_bolt(), fire_bow(), fire_bullet(), fix_object(), hit_with_arrow(), identify(), infect_object(), init_skills(), move_monster(), poison_living(), receive_play_again(), set_ob_key_value_s(), set_spell_skill(), and START_TEST().

Here is the caller graph for this function:

void add_statbonus ( object *  op)

Adds stat-bonuses given by the class which the player has chosen.

Parameters:
opobject which must be a player with contr not NULL.

Definition at line 863 of file living.c.

Referenced by key_change_class(), and key_roll_stat().

Here is the caller graph for this function:

sstring add_string ( const char *  str)

This will add 'str' to the hash table.

If there's no entry for this string, a copy will be allocated, and a pointer to that is returned.

Parameters:
strstring to share.
Returns:
pointer to string identical to str, but shared.

Definition at line 116 of file shstr.c.

References _shared_string::array, GATHER, hashstr(), new_shared_string(), _shared_string::next, _shared_string::previous, _shared_string::refcount, _shared_string::string, TOPBIT, and _shared_string::u.

Referenced by add_author(), add_book_to_list(), add_god_to_list(), add_to_racelist(), adjust_sign_msg(), alchemy_failure_effect(), animate_weapon(), become_follower(), cast_bless(), cast_create_town_portal(), cast_word_of_recall(), cctk_set_object_strings(), cfapi_system_add_string(), change_abil(), change_book(), change_treasure(), check_output_buffers(), command_follow(), command_goto(), command_reset(), command_summon(), command_teleport(), confuse_living(), create_singularity(), determine_god(), do_symptoms(), do_throw(), enter_player_savebed(), enter_random_map(), find_archetype_by_object_name(), find_object_name(), find_or_create_connection_for_map(), fire_bow(), fix_container_multipart(), fix_generated_item(), fix_multipart_object(), fix_stopped_arrow(), get_jail_exit(), get_player(), give_artifact_abilities(), god_enchants_weapon(), grant_immunity(), init_anim(), init_artifacts(), init_book_archive(), init_formulae(), init_globals(), init_msgfile(), init_races(), init_skills(), key_change_class(), keyplace(), kill_player(), load_materials(), load_treasure(), load_treasures(), local_check_loaded_object(), lock_and_hide_doors(), main(), make_formula_book(), move_marker(), new_text_name(), place_chest(), place_exits(), place_fountain_with_specials(), place_special_exit(), receive_play_again(), set_materialname(), set_ob_key_value(), set_ob_key_value_s(), START_TEST(), stringbuffer_finish_shared(), summon_golem(), tailor_god_spell(), tailor_readable_ob(), write_mark(), write_note(), and write_rune().

Here is the call graph for this function:

void add_weight ( object *  op,
signed long  weight 
)

add_weight(object, weight) adds the specified weight to an object, and also updates how much the environment(s) is/are carrying.

Takes container weight reduction into account.

Parameters:
opobject to which we add weight.
weightweight to add.
Todo:
check if mergeable with sub_weight().

Definition at line 2486 of file object.c.

References CONTAINER.

Referenced by increase_ob_nr(), insert_ob_in_ob(), and make_item_from_recipe().

Here is the caller graph for this function:

int allowed_class ( const object *  op)

Returns true if the given player is a legal class.

The function to add and remove class-bonuses to the stats doesn't check if the stat becomes negative, thus this function merely checks that all stats are 1 or more, and returns false otherwise.

Parameters:
opobject to check.
Returns:
1 if allowed, 0 else.

Definition at line 1543 of file living.c.

Referenced by key_change_class().

Here is the caller graph for this function:

void animate_object ( object *  op,
int  dir 
)

Updates the face-variable of an object.

If the object is the head of a multi-object, all objects are animated. The object's state is not changed, but merely updated if needed (out of bounds of new animation, reached end of animation, ...)

Parameters:
opis the object to animate.
diris the direction the object is facing. This is generally same as op->direction, but in some cases, op->facing is used instead - the caller has a better idea which one it really wants to be using, so let it pass along the right one.

Definition at line 186 of file anim.c.

References animate_object(), blank_face, CLEAR_FLAG, dump_object(), FLAG_ALIVE, llevError, LOG(), NUM_ANIMATIONS, NUM_FACINGS, PLAYER, QUERY_FLAG, SET_ANIMATION, SET_FLAG, stringbuffer_finish(), stringbuffer_new(), and update_object().

Referenced by add_abilities(), animate_object(), apply_anim_suffix(), apply_changes_to_player(), dragon_ability_gain(), monster_use_scroll(), move_hole(), move_monster(), move_player(), process_events(), process_object(), turn_one_transport(), and turn_transport().

Here is the call graph for this function:

Here is the caller graph for this function:

void animate_turning ( object *  op)

Animates one step of object.

Parameters:
opobject to animate.
Note:
animate_object() should be used instead of this, but it can't handle animations in the 8 directions
Todo:
check if object is really animated?

Definition at line 284 of file button.c.

References NUM_ANIMATIONS, SET_ANIMATION, and update_object().

Referenced by legacy_ob_process(), and trigger_connected().

Here is the call graph for this function:

Here is the caller graph for this function:

void apply_anim_suffix ( object *  who,
sstring  suffix 
)

Applies a compound animation to an object.

Parameters:
whoobject to apply the animation to. Must not be NULL.
suffixanimation suffix to apply. Must not be NULL.

Definition at line 289 of file anim.c.

References animate_object(), animations, animations_struct::facings, MAX_BUF, animations_struct::name, animations_struct::num_animations, snprintf(), and try_find_animation().

Referenced by attack_ob_simple(), cast_spell(), do_skill(), and player_apply().

Here is the call graph for this function:

Here is the caller graph for this function:

void apply_death_exp_penalty ( object *  op)

Applies a death penalty experience, the size of this is defined by the settings death_penalty_percentage and death_penalty_levels, and by the amount of permenent experience, whichever gives the lowest loss.

Parameters:
opvictim of the penalty. Must not be NULL.

Definition at line 2073 of file living.c.

References check_exp_loss(), Settings::death_penalty_level, Settings::death_penalty_ratio, levels, MAX, MIN, player_lvl_adj(), settings, and SKILL.

Referenced by kill_player().

Here is the call graph for this function:

Here is the caller graph for this function:

void arch_info ( object *  op)

Stores debug-information about how efficient the hashtable used for archetypes has been in the static errmsg array.

Definition at line 209 of file arch.c.

References arch_cmp, arch_search, draw_ext_info_format(), MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_DEBUG, and NDI_UNIQUE.

Referenced by command_archs().

Here is the call graph for this function:

Here is the caller graph for this function:

object* arch_to_object ( archetype *  at)

Creates and returns a new object which is a copy of the given archetype.

This function returns NULL if given a NULL pointer, else an object.

Parameters:
atarchetype from which to get an object.
Returns:
object of specified type.
Note:
get_object() will either allocate memory or call fatal(), so returned value is never NULL.

Definition at line 576 of file arch.c.

References copy_object_with_inv(), get_object(), llevError, LOG(), and warn_archetypes.

Referenced by add_abilities(), animate_bomb(), animate_weapon(), apply_builder_floor(), apply_builder_window(), cast_cause_disease(), cast_cone(), cast_consecrate(), cast_create_town_portal(), cast_destruction(), cast_detection(), cast_light(), cast_polymorph(), cast_raise_dead_spell(), cast_smite_spell(), change_luck(), change_object(), command_create(), cone_drop(), create_all_treasures(), create_archetype(), create_archetype_by_object_name(), create_aura(), create_bomb(), create_one_treasure(), do_turn(), dragon_ability_gain(), drain_specific_stat(), explode_bullet(), fire_arch_from_position(), fire_bolt(), fire_bullet(), fire_swarm(), fix_container_multipart(), fix_multipart_object(), fix_summon_pet(), fix_walls(), generate_monster_arch(), get_player(), get_spell_by_name(), give_skill_by_name(), god_gives_present(), hit_player(), include_map_in_map(), insert_multisquare_ob_in_map(), kill_player(), magic_wall(), make_map_floor(), make_map_walls(), mood_change(), move_aura(), move_ball_spell(), move_symptom(), object_create_arch(), pick_joined_wall(), place_chest(), place_exits(), place_monsters(), poison_living(), print_monsters(), put_a_monster(), put_decor(), put_doors(), put_floor(), remove_door(), remove_locked_door(), replace_insert_ob_in_map(), retrofit_joined_wall(), save_throw_object(), slow_living(), spell_effect(), spring_trap(), START_TEST(), summon_object(), write_mark(), and write_rune().

Here is the call graph for this function:

int atnr_is_dragon_enabled ( int  attacknr)

Determine if the attacktype represented by the specified attack-number is enabled for dragon players.

A dragon player (quetzal) can gain resistances for all enabled attacktypes.

Parameters:
attacknrattacktype to check
Returns:
TRUE if player can gain resistances in that, FALSE else.

Definition at line 106 of file player.c.

References ATNR_ACID, ATNR_COLD, ATNR_ELECTRICITY, ATNR_FIRE, ATNR_MAGIC, and ATNR_POISON.

Referenced by command_resistances(), describe_item(), describe_resistance(), dragon_eat_flesh(), dragon_level_gain(), and set_dragon_name().

Here is the caller graph for this function:

void bitstostring ( long  bits,
int  num,
char *  str 
)

Writes num ones and zeros to the given string based on the bits variable.

Parameters:
bitsvariable to convert to binary string
numnumber of bits to dump. Values above 32 will be ignored.
strstring to write to. Must be long enough.
Note:
no check is done whether str has enough space to write or not. Final \0 is appended to str.

Definition at line 110 of file info.c.

Referenced by print_monsters().

Here is the caller graph for this function:

int blocked_link ( object *  ob,
mapstruct m,
int  sx,
int  sy 
)

Returns true if the given coordinate is blocked except by the object passed is not blocking.

This is used with multipart monsters - if we want to see if a 2x2 monster can move 1 space to the left, we don't want its own area to block it from moving there.

Parameters:
obobject we ignore. Must not be NULL.
mmap we're considering.
sx
sytarget coordinates
Returns:
TRUE if the space is blocked by something other than ob.
Note:
the coordinates & map passed in should have been updated for tiling by the caller.

Definition at line 373 of file map.c.

References CHECK_INV, check_inv_recursive(), DOOR, draw_ext_info(), FLAG_ALIVE, FLAG_WIZ, MapSpace::flags, GET_MAP_MOVE_BLOCK, GET_MAP_OB, llevError, LOG(), MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_NOKEY, NDI_NAVY, NDI_UNIQUE, OB_MOVE_BLOCK, OB_TYPE_MOVE_BLOCK, OUT_OF_REAL_MAP, P_IS_ALIVE, PLAYER, QUERY_FLAG, mapdef::spaces, TRANSPORT, and mapdef::width.

Referenced by move_ob(), and path_to_player().

Here is the call graph for this function:

Here is the caller graph for this function:

int book_overflow ( const char *  buf1,
const char *  buf2,
size_t  booksize 
)

Checks if buf1 and buf2 can be combined.

Parameters:
buf1
buf2buffer we plan on combining.
booksizemaximum book size.
Returns:
0 if buffers can be combined, 1 else.

Definition at line 696 of file readable.c.

References BOOK_BUF, and buf_overflow().

Referenced by artifact_msg(), god_info_msg(), mon_info_msg(), msgfile_msg(), spellpath_msg(), and write_note().

Here is the call graph for this function:

Here is the caller graph for this function:

int buf_overflow ( const char *  buf1,
const char *  buf2,
size_t  bufsize 
)

We don't want to exceed the buffer size of buf1 by adding on buf2!

Parameters:
buf1
buf2buffers we plan on concatening. Can be NULL.
bufsizesize of buf1. Can be NULL.
Returns:
true if overflow will occur.
Todo:
This could maybe overflow. Make sure it doesn't.

Definition at line 393 of file shstr.c.

Referenced by book_overflow(), init_msgfile(), and START_TEST().

Here is the caller graph for this function:

int calc_item_power ( const object *  op,
int  flag 
)

This takes an object 'op' and figures out what its item_power rating should be.

This should only really be used by the treasure generation code, and when loading legacy objects. It returns the item_power it calculates. If flag is 1, we return the number of enchantment, and not the the power. This is used in the treasure code.

Parameters:
opobject of which to compute the item_power
flagunused
Todo:
fix function, and remove unused flag variable.

Definition at line 264 of file item.c.

References AMULET, ARMOUR, BOOTS, BRACERS, CLOAK, FLAG_LIFESAVE, FLAG_MAKE_INVIS, FLAG_REFL_MISSILE, FLAG_REFL_SPELL, FLAG_SEE_IN_DARK, FLAG_STEALTH, FLAG_XRAYS, get_attr_value(), get_power_from_ench(), GIRDLE, GLOVES, HELMET, NROFATTACKS, NRSPELLPATHS, NUM_STATS, QUERY_FLAG, RING, SHIELD, and WEAPON.

Referenced by add_one_item(), fix_generated_item(), and local_check_loaded_object().

Here is the call graph for this function:

Here is the caller graph for this function:

void calc_perm_exp ( object *  op)

Ensure that the permanent experience requirements in an exp object are met.

This really just checks 'op to make sure the perm_exp value is within proper range. Note that the checking of what is passed through has been reduced. Since there is now a proper field for perm_exp, this can now work on a much larger set of objects.

Parameters:
opobject to check.

Definition at line 1804 of file living.c.

References MAX_EXPERIENCE, Settings::permanent_exp_ratio, and settings.

Referenced by add_player_exp(), and command_addexp().

Here is the caller graph for this function:

This routine is supposed to find out the difficulty of the map.

Difficulty does not have a lot to do with character level, but does have a lot to do with treasure on the map.

Difficulty can now be set by the map creature. If the value stored in the map is zero, then use this routine. Maps should really have a difficulty set than using this function - human calculation is much better than this functions guesswork.

Parameters:
mmap for which to compute difficulty.
Returns:
difficulty of the map.

Definition at line 1917 of file map.c.

References FLAG_GENERATOR, FLAG_MONSTER, GENERATE_TYPE, get_archetype_by_type_subtype(), GET_MAP_OB, level_exp(), MAP_DIFFICULTY, MAP_HEIGHT, MAP_WIDTH, and QUERY_FLAG.

Referenced by cfapi_map_get_map_property(), generate_random_map(), and load_original_map().

Here is the call graph for this function:

Here is the caller graph for this function:

int can_merge ( object *  ob1,
object *  ob2 
)

Examines the 2 objects given to it, and returns true if they can be merged together, including inventory.

Note that this function appears a lot longer than the macro it replaces - this is mostly for clarity - a decent compiler should hopefully reduce this to the same efficiency.

Check nrof variable *before *calling can_merge()

Improvements made with merge: Better checking on potion, and also check weight

Parameters:
ob1
ob2objects to try to merge.
Returns:
TRUE if they can be merged, FALSE else.
Todo:
check the function at places marked.

Definition at line 178 of file object.c.

References can_merge(), compare_ob_value_lists(), FABS, FLAG_ANIMATE, FLAG_APPLIED, FLAG_BEEN_APPLIED, FLAG_IDENTIFIED, MIN_ACTIVE_SPEED, QUERY_FLAG, SCROLL, and SET_FLAG.

Referenced by can_merge(), cfapi_object_get_property(), insert_ob_in_map(), insert_ob_in_ob(), local_check_loaded_object(), merge_ob(), and START_TEST().

Here is the call graph for this function:

Here is the caller graph for this function:

int can_pick ( const object *  who,
const object *  item 
)

Finds out if an object can be picked up.

Add a check so we can't pick up invisible objects (0.93.8)

Parameters:
whowho is trying to pick up. Can be a monster or a player.
itemitem we're trying to pick up.
Returns:
1 if it can be picked up, otherwise 0.
Note:
this introduces a weight limitation for monsters.

Definition at line 3569 of file object.c.

References FLAG_ALIVE, FLAG_NO_PICK, PLAYER, and QUERY_FLAG.

Referenced by cfapi_object_get_property(), check_pick(), command_take(), do_skill_detect_curse(), do_skill_detect_magic(), esrv_move_object(), monster_can_pick(), and pick_up().

Here is the caller graph for this function:

int can_see_monsterP ( mapstruct m,
int  x,
int  y,
int  dir 
)

Recursive routine to see if we can find a path to a certain point.

Modified to be map tile aware -.MSW

Parameters:
mmap we're on
x
yorigin coordinates
dirdirection we're going to. Must be less than SIZEOFFREE.
Returns:
1 if we can see a direct way to get it
Todo:
better document, can't figure what it does :)

Definition at line 3524 of file object.c.

References can_see_monsterP(), freearr_x, freearr_y, get_map_flags(), P_BLOCKSVIEW, P_OUT_OF_MAP, and reduction_dir.

Referenced by can_see_monsterP(), do_skill_ident(), find_nearest_living_creature(), and spell_find_dir().

Here is the call graph for this function:

Here is the caller graph for this function:

int change_abil ( object *  op,
object *  tmp 
)

Permanently alters an object's stats/flags based on another object.

Returns:
1 if we sucessfully changed a stat, 0 if nothing was changed.
Note:
flag is set to 1 if we are applying the object, -1 if we are removing the object.
It is the calling functions responsibilty to check to see if the object can be applied or not. The main purpose of calling this function is the messages that are displayed - fix_object should really always be called after this when removing an object - that is because it is impossible to know if some object is the only source of an attacktype or spell attunement, so this function will clear the bits, but the player may still have some other object that gives them that ability.
Todo:
check logic, and things like that. Is the call to fix_object always required?

Definition at line 443 of file living.c.

References add_string(), AT_CONFUSION, ATNR_PHYSICAL, BOW, change_attr_value(), change_resist_msg, check_move_on(), check_stat_bounds(), CLEAR_FLAG, DIFF_MSG, draw_ext_info(), draw_ext_info_format(), EXPERIENCE, fix_object(), FLAG_APPLIED, FLAG_BLIND, FLAG_LIFESAVE, FLAG_MAKE_INVIS, FLAG_REFL_MISSILE, FLAG_REFL_SPELL, FLAG_SEE_IN_DARK, FLAG_STEALTH, FLAG_UNDEAD, FLAG_WIZ, FLAG_XRAYS, free_string(), gain_msg, get_attr_value(), lose_msg, MOVE_FLY_HIGH, MOVE_FLY_LOW, MOVE_SWIM, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_ATTACKTYPE_GAIN, MSG_TYPE_ATTRIBUTE_ATTACKTYPE_LOSS, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_END, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_END, MSG_TYPE_ATTRIBUTE_GOOD_EFFECT_START, MSG_TYPE_ATTRIBUTE_MOVE, MSG_TYPE_ATTRIBUTE_PROTECTION_GAIN, MSG_TYPE_ATTRIBUTE_PROTECTION_LOSS, MSG_TYPE_ATTRIBUTE_RACE, MSG_TYPE_ATTRIBUTE_STAT_GAIN, MSG_TYPE_ATTRIBUTE_STAT_LOSS, NDI_BLUE, NDI_UNIQUE, NROFATTACKS, NUM_STATS, PLAYER, POTION, QUERY_FLAG, set_attr_value(), SET_FLAG, and SKILL.

Referenced by apply_special(), become_follower(), blind_living(), blindness_type_process(), cast_bless(), cast_change_ability(), cast_curse(), cfapi_object_change_abil(), eat_special_food(), potion_type_apply(), remove_force(), swap_random_stats(), and unapply_special().

Here is the call graph for this function:

Here is the caller graph for this function:

void change_attr_value ( living stats,
int  attr,
sint8  value 
)

Like set_attr_value(), but instead the value (which can be negative) is added to the specified stat.

Parameters:
statsitem to modify. Must not be NULL.
attrattribute to change.
valuedelta (can be positive).
Todo:
check if attr is valid? Checks result valus is valid?

Definition at line 336 of file living.c.

References CHA, liv::Cha, CON, liv::Con, DEX, liv::Dex, INT, liv::Int, llevError, LOG(), POW, liv::Pow, STR, liv::Str, WIS, and liv::Wis.

Referenced by add_abilities(), alchemy_failure_effect(), apply_changes_to_player(), change_abil(), drain_specific_stat(), fix_object(), and kill_player().

Here is the call graph for this function:

Here is the caller graph for this function:

void change_exp ( object *  op,
sint64  exp,
const char *  skill_name,
int  flag 
)

Changes experience to a player/monster.

This does bounds checking to make sure we don't overflow the max exp.

The exp passed is typically not modified much by this function - it is assumed the caller has modified the exp as needed. skill_name is the skill that should get the exp added. flag is what to do if player doesn't have the skill. these last two values are only used for players.

Parameters:
opvictim to alter.
expexperience to gain (positive) or lose (negative).
skill_nameskill to change. Can be NULL.
flag
  • if experience gain, what to do if player doesn't have the skill
  • if experience loss, whether to remove from all skills or only specified skill
See also:
share_exp() for a party-aware version.

Definition at line 2015 of file living.c.

References add_player_exp(), FABS, FLAG_ALIVE, llevDebug, llevError, LOG(), MAX_BUF, MAX_EXPERIENCE, PLAYER, QUERY_FLAG, query_name(), and subtract_player_exp().

Referenced by attempt_do_alchemy(), book_type_apply(), cfapi_object_change_exp(), cure_disease(), do_harvest(), do_hidden_move(), do_skill(), god_examines_priest(), hit_with_one_attacktype(), pay_for_item(), peacemaker_type_process(), pray_at_altar(), scroll_type_apply(), sell_item(), share_exp(), and spellbook_type_apply().

Here is the call graph for this function:

Here is the caller graph for this function:

void change_luck ( object *  op,
int  value 
)

Alter the object's luck.

Parameters:
opobject to altar.
valuedelta to apply. 0 indicates timeout (moves luck towards 0), otherwise change the luck of the object via an applied bad_luck object in inventory.

Definition at line 791 of file living.c.

References arch_to_object(), FABS, find_archetype(), FLAG_APPLIED, insert_ob_in_ob(), llevError, LOG(), present_arch_in_ob(), and SET_FLAG.

Referenced by fix_luck(), and kill_object().

Here is the call graph for this function:

Here is the caller graph for this function:

int change_map_light ( mapstruct m,
int  change 
)

Used to change map light level (darkness) up or down.

It should now be possible to change a value by more than 1.

Move this from los.c to map.c since this is more related to maps than los. postive values make it darker, negative make it brighter

Will inform players on the map.

Parameters:
mmap to change.
changedelta of light.
Returns:
TRUE if light changed, FALSE else.

Definition at line 2000 of file map.c.

References mapdef::darkness, ext_info_map(), MAX_DARKNESS, MSG_SUBTYPE_NONE, MSG_TYPE_MISC, NDI_BLACK, and update_all_map_los().

Referenced by cast_change_map_lightlevel(), cfapi_map_change_light(), dawn_to_dusk(), and set_darkness_map().

Here is the call graph for this function:

Here is the caller graph for this function:

int check_altar_sacrifice ( const object *  altar,
const object *  sacrifice,
int  remove_others,
int *  toremove 
)

Checks whether the altar has enough to sacrifice.

Function put in (0.92.1) so that identify altars won't grab money unnecessarily - we can see if there is sufficient money, see if something needs to be identified, and then remove money if needed.

0.93.4: Linked objects (ie, objects that are connected) can not be sacrificed. This fixes a bug of trying to put multiple altars/related objects on the same space that take the same sacrifice.

The function will now check for all items sitting on the altar, so that the player can put various matching but non merging items on the altar.

This function can potentially remove other items, if remove_others is set.

Parameters:
altaritem to which there is a sacrifice
sacrificeobject that may be sacrifed
remove_othersif 1, will remove enough items apart sacrifice to compensate for not having enough in sacrifice itself.
[out]toremovewill contain the nrof of sacrifice to really remove to finish operating. Will be set if not NULL only if the function returns 1.
Returns:
1 if the sacrifice meets the needs of the altar, 0 else

Definition at line 355 of file button.c.

References ARCH_SACRIFICE, decrease_ob_nr(), FLAG_UNPAID, llevError, LOG(), matches_sacrifice(), NROF_SACRIFICE, QUERY_FLAG, and remove_ob().

Referenced by identify_altar_type_move_on(), and operate_altar().

Here is the call graph for this function:

Here is the caller graph for this function:

sint64 check_exp_adjust ( const object *  op,
sint64  exp 
)

Returns the maximum experience the object can gain or lose.

Parameters:
opobject which will be the victim.
expexperience to gain or lose.
Returns:
maximum value op can gain or lose (can be positive or negative).

Definition at line 1937 of file living.c.

References check_exp_loss(), MAX_EXPERIENCE, and MIN.

Referenced by command_addexp().

Here is the call graph for this function:

Here is the caller graph for this function:

sint64 check_exp_loss ( const object *  op,
sint64  exp 
)

This function checks to make sure that object 'op' can lose 'exp' experience.

It basically makes adjustments based on permanent exp and the like. This function should always be used for losing experience - the 'exp' value passed should be positive - this is the amount that should get subtract from the player.

Parameters:
opobject to which to substract.
expexperience to lose.
Returns:
the amount of exp object 'op' can in fact lose -

Definition at line 1915 of file living.c.

References PERM_EXP_MAX_LOSS_RATIO, Settings::permanent_exp_ratio, and settings.

Referenced by apply_death_exp_penalty(), check_exp_adjust(), kill_object(), and subtract_player_exp().

Here is the caller graph for this function:

void check_generators ( void  )

Referenced by load_archetypes().

Here is the caller graph for this function:

void check_inv ( object *  op,
object *  trig 
)

Function to search the inventory, of a player and then based on a set of conditions, the square will activate connected items.

Monsters can't trigger this square (for now) Values are: last_sp = 1/0 obj/no obj triggers last_heal = 1/0 remove/dont remove obj if triggered -b.t. (thomas@nomad.astro.psu.edu

Parameters:
opobject to check. Must be a player.
trigtrigger object that may be activated.

Definition at line 828 of file button.c.

References check_inv_recursive(), decrease_ob, PLAYER, and use_trigger().

Referenced by cfapi_object_check_inventory(), and check_inv_type_move_on().

Here is the call graph for this function:

Here is the caller graph for this function:

object* check_inv_recursive ( object *  op,
const object *  trig 
)

Checks object and its inventory for specific item.

It will descend through containers to find the object. slaying = match object slaying flag race = match object archetype name flag hp = match object type (excpt type '0'== PLAYER) title = match object title Searching by title only is not recommended, as it can be a rather slow operation; use it in combination with archetype or type.

Parameters:
opobject of which to search inventory
trigwhat to search
Returns:
object that matches, or NULL if none matched.

Definition at line 788 of file button.c.

References check_inv_recursive().

Referenced by blocked_link(), cast_create_town_portal(), cfapi_object_check_inventory(), check_inv(), and check_inv_recursive().

Here is the call graph for this function:

Here is the caller graph for this function:

int check_move_on ( object *  op,
object *  originator 
)

Checks if any objects has a move_type that matches objects that effect this object on this space.

Call apply() to process these events.

Any speed-modification due to SLOW_MOVE() of other present objects will affect the speed_left of the object. 4-21-95 added code to check if appropriate skill was readied - this will permit faster movement by the player through this terrain. -b.t.

MSW 2001-07-08: Check all objects on space, not just those below object being inserted. insert_ob_in_map may not put new objects on top.

Parameters:
opobject that may trigger something.
originatorplayer, monster or other object that caused 'op' to be inserted into 'map'. May be NULL.
Returns:
1 if 'op' was destroyed, 0 otherwise.

Definition at line 2651 of file object.c.

References FABS, find_skill_by_number(), FLAG_IS_HILLY, FLAG_IS_WOODED, FLAG_NO_APPLY, FLAG_NO_PICK, FLAG_WIZPASS, GET_MAP_MOVE_BLOCK, GET_MAP_MOVE_ON, GET_MAP_MOVE_SLOW, GET_MAP_OB, MOVE_FLY_LOW, MOVE_WALK, ob_move_on(), PLAYER, QUERY_FLAG, SK_CLIMBING, and SK_WOODSMAN.

Referenced by change_abil(), and insert_ob_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

int check_path ( const char *  name,
int  prepend_dir 
)

This function checks if a file with the given path exists.

It tries out all the compression suffixes listed in the uncomp[] array, except for Windows which checks an exact file.

Parameters:
namemap path to check.
prepend_dirIf set, then we call create_pathname (which prepends libdir & mapdir). Otherwise, we assume the name given is fully complete.
Returns:
-1 if it fails, otherwise the mode of the file is returned.
Note:
Only the editor actually cares about the writablity of this - the rest of the code only cares that the file is readable. when the editor goes away, the call to stat should probably be replaced by an access instead (similar to the windows one, but that seems to be missing the prepend_dir processing

Definition at line 216 of file map.c.

References create_pathname(), MAX_BUF, NROF_COMPRESS_METHODS, S_IRGRP, S_IROTH, S_IRUSR, S_ISREG, S_IWGRP, S_IWOTH, S_IWUSR, snprintf(), and uncomp.

Referenced by cfapi_system_check_path(), check_login(), and load_map_header().

Here is the call graph for this function:

Here is the caller graph for this function:

void check_stat_bounds ( living stats)

Ensures that all stats (str/dex/con/wis/cha/int) are within the 1-30 stat limit.

Parameters:
statsattributes to check.

Definition at line 404 of file living.c.

References get_attr_value(), MAX_STAT, MIN_STAT, NUM_STATS, and set_attr_value().

Referenced by change_abil(), fix_object(), and kill_player().

Here is the call graph for this function:

Here is the caller graph for this function:

int check_trigger ( object *  op,
object *  cause 
)
Todo:
document properly cause != NULL: something has moved on top of op

cause == NULL: nothing has moved, we have been called from animate_trigger().

TRIGGER_ALTAR: Returns 1 if 'cause' was destroyed, 0 if not.

TRIGGER: Returns 1 if handle could be moved, 0 if not.

TRIGGER_BUTTON, TRIGGER_PEDESTAL: Returns 0.

Definition at line 525 of file button.c.

References llevDebug, LOG(), NUM_ANIMATIONS, operate_altar(), PLAYER, push(), SET_ANIMATION, TRIGGER, TRIGGER_ALTAR, TRIGGER_BUTTON, trigger_move(), TRIGGER_PEDESTAL, update_ob_speed(), and update_object().

Referenced by animate_trigger(), cfapi_object_check_trigger(), do_auto_apply(), fix_auto_apply(), trigger_altar_type_move_on(), trigger_button_type_move_on(), trigger_pedestal_type_move_on(), trigger_type_apply(), and trigger_type_process().

Here is the call graph for this function:

Here is the caller graph for this function:

void clean_friendly_list ( void  )

It traverses the friendly list removing objects that should not be here (ie, do not have friendly flag set, freed, etc)

Definition at line 124 of file friend.c.

References first_friendly_object, FLAG_FREED, FLAG_FRIENDLY, llevDebug, LOG(), and QUERY_FLAG.

Referenced by do_specials().

Here is the call graph for this function:

Here is the caller graph for this function:

void clean_object ( object *  op)

Remove and free all objects in the inventory of the given object.

Parameters:
opobject to clean.
Todo:
move to common/object.c ?

Definition at line 1640 of file map.c.

References clean_object(), FLAG_IS_LINKED, free_object(), QUERY_FLAG, remove_button_link(), and remove_ob().

Referenced by cfapi_object_clean_object(), clean_object(), delete_unique_items(), and free_all_objects().

Here is the call graph for this function:

Here is the caller graph for this function:

void clean_tmp_map ( mapstruct m)

Removse the temporary file used by the map.

Parameters:
mmap, which mustn't be NULL but can have no temporary file set.

Definition at line 1959 of file map.c.

References mapdef::tmpname, and unlink.

Referenced by clean_tmp_files(), flush_old_maps(), and ready_map_name().

Here is the caller graph for this function:

void clear_archetable ( void  )

Initialise the hashtable used by the archetypes.

Definition at line 219 of file arch.c.

References arch_table, and ARCHTABLE.

Referenced by free_all_archs(), load_archetypes(), and START_TEST().

Here is the caller graph for this function:

void clear_los ( object *  op)

Clears/initialises the los-array associated to the player controlling the object.

Parameters:
opplayer's object.
Todo:
use player *instead of object *to show it must be a player?

Definition at line 258 of file los.c.

References MAP_CLIENT_X, and MAP_CLIENT_Y.

Referenced by do_wizard_dm(), get_player(), and update_los().

Here is the caller graph for this function:

void clear_object ( object *  op)

Frees everything allocated by an object, and also clears all variables and flags to default settings.

Parameters:
opobject to clear

Definition at line 688 of file object.c.

References blank_face, Settings::casting_time, FLAG_FRIENDLY, FLAG_REMOVED, FREE_AND_CLEAR, FREE_AND_CLEAR_STR, free_dialog_information(), free_key_values(), offsetof, QUERY_FLAG, remove_friendly_object(), SET_FLAG, and settings.

Referenced by cfapi_object_clear(), first_arch_pass(), get_archetype_struct(), get_object(), reset_object(), and START_TEST().

Here is the call graph for this function:

Here is the caller graph for this function:

void clear_owner ( object *  op)

Clears the owner of specified object.

Parameters:
opobject we want to clear the owner of. Can be NULL.

Definition at line 544 of file object.c.

Referenced by set_owner(), START_TEST(), and stop_projectile().

Here is the caller graph for this function:

void clear_player ( player pl)

Clears data in player structure.

Socket isn't touched. Nor is anything that doesn't need to be freed. So you may need to do a memset() to clear out values.

Parameters:
plplayer to clear. Pointer is still valid, and can be reused for "play again".

Definition at line 45 of file player.c.

References client_spell::next, pl::spell_state, pl::stack_items, and pl::stack_position.

Referenced by free_player(), and get_player().

Here is the caller graph for this function:

void close_and_delete ( FILE *  fp,
int  compressed 
)
void copy_object ( object *  op2,
object *  op 
)

Copy object first frees everything allocated by the second object, and then copies the contents of the first object into the second object, allocating what needs to be allocated.

Basically, any data that is malloc'd needs to be re-malloc/copied. Otherwise, if the first object is freed, the pointers in the new object will point at garbage.

Parameters:
op2object that we copy.from
opobject that we copy to.

Definition at line 758 of file object.c.

References add_refcount(), CLEAR_FLAG, FLAG_DIALOG_PARSED, FLAG_FREED, FLAG_REMOVED, FREE_AND_CLEAR, free_dialog_information(), free_key_values(), free_string(), NROFATTACKS, offsetof, QUERY_FLAG, SET_FLAG, and update_ob_speed().

Referenced by add_abilities(), cast_create_food(), cfapi_object_clone(), change_book(), command_create(), copy_object_with_inv(), do_learn_spell(), explosion(), first_arch_pass(), forklightning(), infect_object(), key_change_class(), local_check_loaded_object(), magic_wall(), make_throw_ob(), move_bolt(), move_cone(), object_create_clone(), pay_from_container(), place_alchemy_objects(), place_chest(), place_fountain_with_specials(), place_special_exit(), polymorph_item(), polymorph_living(), put_decor(), put_doors(), sell_item(), setup(), START_TEST(), write_note(), write_rune(), and write_scroll().

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_object_with_inv ( object *  src_ob,
object *  dest_ob 
)

copy an object with an inventory...

i.e., duplicate the inv too.

Parameters:
src_obobject to copy.
dest_obwhere to copy.
Todo:
replace with a function in common library (there is certainly one).

Definition at line 862 of file object.c.

References copy_object(), get_object(), and insert_ob_in_ob().

Referenced by arch_to_object(), do_harvest(), include_map_in_map(), and place_monsters().

Here is the call graph for this function:

Here is the caller graph for this function:

void copy_owner ( object *  op,
object *  clone 
)

Set the owner to clone's current owner and set the skill and experience objects to clone's objects (typically those objects that where the owner's current skill and experience objects at the time when clone's owner was set - not the owner's current skill and experience objects).

Use this function if player created an object (e.g. fire bullet, swarm spell), and this object creates further objects whose kills should be accounted for the player's original skill, even if player has changed skills meanwhile.

Parameters:
opobject to update.
cloneobject from which to get the owner.

Definition at line 614 of file object.c.

References get_owner(), PLAYER, and set_owner().

Referenced by animate_bomb(), explode_bullet(), fire_arch_from_position(), poison_living(), and START_TEST().

Here is the call graph for this function:

Here is the caller graph for this function:

int count_active ( void  )

Objects statistics.

Returns:
number of objects on the list of active objects.

Definition at line 1465 of file object.c.

References active_objects.

Referenced by malloc_info(), and START_TEST().

Here is the caller graph for this function:

int count_free ( void  )

Objects statistics.

Returns:
number of objects on the list of free objects.

Definition at line 1433 of file object.c.

References free_objects.

Referenced by malloc_info(), and START_TEST().

Here is the caller graph for this function:

int count_used ( void  )

Object statistics.

Returns:
number of objects on the list of used objects.

Definition at line 1449 of file object.c.

References objects.

Referenced by malloc_info(), and START_TEST().

Here is the caller graph for this function:

object* create_archetype ( const char *  name)
object* create_archetype_by_object_name ( const char *  name)

Creates an object given the name that appears during the game (for example, "writing pen" instead of "stylus").

Parameters:
namethe name we're searching for (ex: "writing pen"), must not be null
Returns:
a corresponding object if found; a singularity object if not found.
Note:
Note by MSW - it appears that it takes the full name and keeps shortening it until it finds a match. I re-wrote this so that it doesn't malloc it each time - not that this function is used much, but it otherwise had a big memory leak.

Definition at line 173 of file arch.c.

References arch_to_object(), create_singularity(), find_archetype_by_object_name(), and MAX_BUF.

Referenced by god_intervention(), local_check_loaded_object(), and START_TEST().

Here is the call graph for this function:

Here is the caller graph for this function:

void create_overlay_pathname ( const char *  name,
char *  buf,
size_t  size 
)

Same as create_pathname(), but for the overlay maps.

/

Parameters:
namepath of the overlay map.
bufbuffer that will contain the full path.
sizebuffer's length.

Definition at line 135 of file map.c.

References Settings::localdir, Settings::mapdir, settings, and snprintf().

Referenced by cfapi_map_create_path(), command_overlay_reset(), load_original_map(), load_overlay_map(), and save_map().

Here is the call graph for this function:

Here is the caller graph for this function:

char* create_pathname ( const char *  name,
char *  buf,
size_t  size 
)

This makes a path absolute outside the world of Crossfire.

In other words, it prepends LIBDIR/MAPDIR/ to the given path and returns the pointer to a static array containing the result. it really should be called create_mapname

Parameters:
namepath of the map.
bufbuffer that will contain the full path.
sizebuffer's length.
Returns:
buf.

Definition at line 114 of file map.c.

References Settings::datadir, Settings::mapdir, settings, and snprintf().

Referenced by cfapi_map_create_path(), check_path(), enter_fixed_template_map(), enter_unique_map()</