Crossfire Server, Trunk  R20513
Functions
time.c File Reference

Routines that is executed from objects based on their speed have been collected in this file. More...

#include "global.h"
#include <stdlib.h>
#include "spells.h"
#include "sproto.h"
Include dependency graph for time.c:

Go to the source code of this file.

Functions

static void animate_trigger (object *op)
 Animate a TRIGGER. More...
 
void change_object (object *op)
 Replaces op with its other_arch if it has reached its end of life. More...
 
objectfix_stopped_arrow (object *op)
 An ARROW stops moving. More...
 
void fix_stopped_item (object *op, mapstruct *map, object *originator)
 Put stopped item where stop_item() had found it. More...
 
int free_no_drop (object *op)
 Check whether the given object is FLAG_NO_DROP. More...
 
static void generate_monster (object *gen)
 Main generator function. More...
 
static int generate_monster_arch (object *gen)
 Generate a monster from the other_arch field. More...
 
static int generate_monster_inv (object *gen)
 Will generate a monster according to parameters of generator. More...
 
void legacy_animate_trigger (object *op)
 
void legacy_move_hole (object *op)
 
void legacy_remove_force (object *op)
 
void move_firewall (object *op)
 Move for FIREWALL. More...
 
static void move_hole (object *op)
 Move a HOLE. More...
 
void move_player_mover (object *op)
 This function takes a PLAYERMOVER as an argument, and performs the function of a player mover, which is: More...
 
int process_object (object *op)
 Main object move function. More...
 
void remove_door (object *op)
 Remove non locked doors. More...
 
static void remove_force (object *op)
 Move for FORCE objects. More...
 
void remove_locked_door (object *op)
 Same as remove_door() but for locked doors. More...
 
objectstop_item (object *op)
 An item (ARROW or such) stops moving. More...
 

Detailed Description

Routines that is executed from objects based on their speed have been collected in this file.

Definition in file time.c.

Function Documentation

static void animate_trigger ( object op)
static

Animate a TRIGGER.

Parameters
optrigger.

Definition at line 378 of file time.c.

References check_trigger(), NUM_ANIMATIONS, object_update(), SET_ANIMATION, obj::stats, UP_OBJ_FACE, and liv::wc.

Referenced by legacy_animate_trigger().

Here is the call graph for this function:

Here is the caller graph for this function:

void change_object ( object op)

Replaces op with its other_arch if it has reached its end of life.

This routine doesnt seem to work for "inanimate" objects that are being carried, ie a held torch leaps from your hands!. Modified this routine to allow held objects. b.t.

Parameters
opobject to change. Will be removed and replaced.

Definition at line 583 of file time.c.

References add_friendly_object(), arch_to_object(), obj::attack_movement, obj::env, FLAG_ALIVE, FLAG_FRIENDLY, FLAG_UNAGGRESSIVE, liv::food, liv::hp, LAMP, llevError, LOG(), obj::map, obj::name, object_free_drop_inventory(), object_get_owner(), object_insert_in_ob(), object_insert_to_free_spot_or_free(), object_remove(), object_set_owner(), obj::other_arch, PETMOVE, QUERY_FLAG, remove_friendly_object(), SET_FLAG, SIZEOFFREE1, obj::stats, obj::type, obj::x, and obj::y.

Referenced by hit_player(), and process_object().

Here is the call graph for this function:

Here is the caller graph for this function:

object* fix_stopped_arrow ( object op)

An ARROW stops moving.

Parameters
oparrow stopping.
Returns
arrow, or NULL if it was broken.

Definition at line 507 of file time.c.

References add_string(), animate_object(), obj::attacktype, liv::dam, obj::direction, liv::food, FREE_AND_CLEAR_STR, free_no_drop(), liv::grace, liv::hp, obj::level, obj::move_on, obj::move_type, object_clear_owner(), object_free_drop_inventory(), object_remove(), object_update(), object_update_speed(), rndm(), obj::skill, obj::slaying, liv::sp, obj::speed, obj::spellarg, obj::stats, UP_OBJ_FACE, and liv::wc.

Referenced by hit_with_arrow(), stop_item(), and stop_projectile().

Here is the call graph for this function:

Here is the caller graph for this function:

void fix_stopped_item ( object op,
mapstruct map,
object originator 
)

Put stopped item where stop_item() had found it.

Inserts item into the old map, or merges it if it already is on the map.

Parameters
opobject to stop.
mapmust be the value of op->map before stop_item() was called.
originatorwhat caused op to be stopped.

Definition at line 490 of file time.c.

References ARROW, FLAG_REMOVED, object_insert_in_map(), object_merge(), QUERY_FLAG, and obj::type.

Referenced by save_throw_object().

Here is the call graph for this function:

Here is the caller graph for this function:

int free_no_drop ( object op)

Check whether the given object is FLAG_NO_DROP.

If so, (optionally) remove and free it.

Parameters
opthe object to check
Returns
whether the object was freed

Definition at line 560 of file time.c.

References FLAG_NO_DROP, FLAG_REMOVED, FREE_OBJ_FREE_INVENTORY, object_free2(), object_remove(), and QUERY_FLAG.

Referenced by fix_stopped_arrow(), hit_with_arrow(), and stop_item().

Here is the call graph for this function:

Here is the caller graph for this function:

static void generate_monster ( object gen)
static

Main generator function.

Will generate a monster based on the parameters.

Parameters
gengenerator.

Definition at line 228 of file time.c.

References FLAG_CONTENT_ON_GEN, FOR_MAP_FINISH, FOR_MAP_PREPARE, generate_monster_arch(), generate_monster_inv(), GENERATE_SPEED, obj::map, MAP_HEIGHT, MAP_WIDTH, obj::name, object_free_drop_inventory(), object_get_value(), object_remove(), object_set_value(), QUERY_FLAG, rndm(), and snprintf.

Referenced by process_object().

Here is the call graph for this function:

Here is the caller graph for this function:

static int generate_monster_arch ( object gen)
static

Generate a monster from the other_arch field.

See generate_monster() for the main generator function.

Parameters
gengenerator.
Returns
TRUE if monster was put on map, FALSE if not

Definition at line 163 of file time.c.

References arch_to_object(), archt::clone, create_treasure(), mapdef::difficulty, FALSE, FLAG_FREED, FLAG_MONSTER, generate_artifact(), HAS_RANDOM_ITEMS, obj::head, llevError, LOG(), obj::map, monster_check_apply_all(), obj::more, archt::more, obj::name, object_find_multi_free_spot_within_radius(), object_get_value(), object_insert_in_map(), object_set_value(), obj::other_arch, QUERY_FLAG, obj::randomitems, rndm(), TRUE, obj::x, and obj::y.

Referenced by generate_monster().

Here is the call graph for this function:

Here is the caller graph for this function:

static int generate_monster_inv ( object gen)
static

Will generate a monster according to parameters of generator.

What is generated should be in the generator's inventory.

See generate_monster() for the main generator function.

Parameters
gengenerator.
Returns
TRUE if put a monster on a map, FALSE if did not

Definition at line 96 of file time.c.

References CLEAR_FLAG, create_treasure(), mapdef::difficulty, FALSE, FLAG_FREED, FLAG_IS_A_TEMPLATE, FLAG_MONSTER, FOR_INV_FINISH, FOR_INV_PREPARE, generate_artifact(), HAS_RANDOM_ITEMS, llevError, LOG(), obj::map, monster_check_apply_all(), obj::name, object_create_clone(), object_find_multi_free_spot_within_radius(), object_fix_multipart(), object_get_value(), object_insert_in_map_at(), object_set_value(), object_unset_flag_inv(), QUERY_FLAG, obj::randomitems, rndm(), and TRUE.

Referenced by generate_monster().

Here is the call graph for this function:

Here is the caller graph for this function:

void legacy_animate_trigger ( object op)

Definition at line 831 of file time.c.

References animate_trigger().

Referenced by legacy_ob_process().

Here is the call graph for this function:

Here is the caller graph for this function:

void legacy_move_hole ( object op)

Definition at line 835 of file time.c.

References move_hole().

Referenced by legacy_ob_process().

Here is the call graph for this function:

Here is the caller graph for this function:

void legacy_remove_force ( object op)

Definition at line 827 of file time.c.

References remove_force().

Referenced by legacy_ob_process().

Here is the call graph for this function:

Here is the caller graph for this function:

void move_firewall ( object op)

Move for FIREWALL.

firewalls fire other spells. The direction of the wall is stored in op->direction. walls can have hp, so they can be torn down.

Parameters
opfirewall.

Definition at line 646 of file time.c.

References cast_spell(), obj::direction, get_random_dir(), obj::inv, llevError, LOG(), obj::map, obj::name, mapdef::name, obj::x, and obj::y.

Here is the call graph for this function:

static void move_hole ( object op)
static

Move a HOLE.

Parameters
ophole to move.

Definition at line 394 of file time.c.

References animate_object(), FOR_ABOVE_FINISH, FOR_ABOVE_PREPARE, obj::move_on, MOVE_WALK, NUM_ANIMATIONS, ob_move_on(), object_update(), object_update_speed(), obj::speed, obj::state, obj::stats, UP_OBJ_FACE, obj::value, and liv::wc.

Referenced by legacy_move_hole().

Here is the call graph for this function:

Here is the caller graph for this function:

void move_player_mover ( object op)

This function takes a PLAYERMOVER as an argument, and performs the function of a player mover, which is:

a player mover finds any players that are sitting on it. It moves them in the op->stats.sp direction. speed is how often it'll move.

  • If attacktype is nonzero it will paralyze the player. If lifesave is set,
  • it'll dissapear after hp+1 moves. If hp is set and attacktype is set,
  • it'll paralyze the victim for hp*his speed/op->speed
Parameters
opmover.

Definition at line 675 of file time.c.

References obj::attacktype, obj::env, FABS, FLAG_ALIVE, FLAG_LIFESAVE, FLAG_WIZPASS, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), get_random_dir(), HEAD, liv::hp, obj::level, llevError, LOG(), obj::map, liv::maxsp, move_object(), move_player(), obj::move_type, object_free_drop_inventory(), object_remove(), object_update_speed(), P_OUT_OF_MAP, mapdef::path, PLAYER, PLAYERMOVER, QUERY_FLAG, should_director_abort(), liv::sp, obj::speed, obj::speed_left, obj::stats, obj::x, and obj::y.

Referenced by legacy_ob_process().

Here is the call graph for this function:

Here is the caller graph for this function:

int process_object ( object op)
void remove_door ( object op)

Remove non locked doors.

The functions check to see if similar doors are next to the one that is being removed, and if so, set it so those will be removed shortly (in a cascade like fashion.)

See also
remove_locked_door().
Parameters
opdoor to remove.

Definition at line 37 of file time.c.

References arch_to_object(), DOOR, freearr_x, freearr_y, obj::level, obj::map, map_find_by_type(), object_free_drop_inventory(), object_insert_in_map_at(), object_remove(), object_update_speed(), obj::other_arch, obj::speed, obj::speed_left, obj::x, and obj::y.

Referenced by attempt_pick_lock(), legacy_ob_process(), and player_attack_door().

Here is the call graph for this function:

Here is the caller graph for this function:

static void remove_force ( object op)
static
void remove_locked_door ( object op)

Same as remove_door() but for locked doors.

Parameters
opdoor to remove.

Definition at line 63 of file time.c.

References arch_to_object(), freearr_x, freearr_y, obj::level, LOCKED_DOOR, obj::map, map_find_by_type(), object_free_drop_inventory(), object_insert_in_map_at(), object_remove(), object_update_speed(), obj::other_arch, obj::slaying, obj::speed, obj::speed_left, obj::x, and obj::y.

Referenced by legacy_ob_process(), and player_attack_door().

Here is the call graph for this function:

Here is the caller graph for this function:

object* stop_item ( object op)

An item (ARROW or such) stops moving.

stop_item() returns a pointer to the stopped object. The stopped object may or may not have been removed from maps or inventories. It will not have been merged with other items.

This function assumes that only items on maps need special treatment.

If the object can't be stopped, or it was destroyed while trying to stop it, NULL is returned.

fix_stopped_item() should be used if the stopped item should be put on the map.

Parameters
opobject to check.
Returns
pointer to stopped object, NULL if destroyed or can't be stopped.

Definition at line 450 of file time.c.

References ARROW, fix_stopped_arrow(), free_no_drop(), obj::inv, obj::map, MIN_ACTIVE_SPEED, object_free_drop_inventory(), object_remove(), obj::speed, THROWN_OBJ, and obj::type.

Referenced by pick_up(), and save_throw_object().

Here is the call graph for this function:

Here is the caller graph for this function: