Crossfire Server, Trunk  R20513
Functions
projectile.c File Reference

This file contains code common to projectile objects. More...

#include <global.h>
#include <sproto.h>
#include <ob_methods.h>
#include <ob_types.h>
Include dependency graph for projectile.c:

Go to the source code of this file.

Functions

method_ret common_process_projectile (ob_methods *context, object *op)
 Move an arrow or thrown object along its course. More...
 
method_ret common_projectile_move_on (ob_methods *context, object *trap, object *victim, object *originator)
 Move on this Thrown Object object. More...
 
void stop_projectile (object *op)
 Handle an arrow or thrown object stopping. More...
 

Detailed Description

This file contains code common to projectile objects.

For now it is limited to arrows and thrown objects.

Definition in file projectile.c.

Function Documentation

method_ret common_process_projectile ( ob_methods context,
object op 
)

Move an arrow or thrown object along its course.

Parameters
contextThe method context
opThe arrow or thrown object being moved.
Todo:
Split this function up.
Returns
METHOD_ERROR if op is not in a map, otherwise METHOD_OK

Definition at line 78 of file projectile.c.

References absdir(), obj::direction, DIRX, DIRY, FLAG_ALIVE, FLAG_REFL_MISSILE, FLAG_REFLECTING, freearr_x, freearr_y, GET_ANIM_ID, get_map_flags(), GET_MAP_MOVE_BLOCK, hit_with_arrow(), obj::level, llevError, LOG(), obj::map, map_find_by_flag(), METHOD_ERROR, METHOD_OK, OB_TYPE_MOVE_BLOCK, object_free_drop_inventory(), object_get_owner(), object_insert_in_map_at(), object_remove(), object_update_turn_face(), P_IS_ALIVE, P_OUT_OF_MAP, QUERY_FLAG, rndm(), obj::speed, obj::state, stop_projectile(), obj::x, and obj::y.

Referenced by arrow_type_process(), and thrown_object_type_process().

Here is the call graph for this function:

Here is the caller graph for this function:

method_ret common_projectile_move_on ( ob_methods context,
object trap,
object victim,
object originator 
)

Move on this Thrown Object object.

Parameters
contextThe method context
trapThe thrown object or arrow we're moving on
victimThe object moving over this one
originatorThe object that caused the move_on event
Returns
METHOD_OK

Definition at line 226 of file projectile.c.

References common_post_ob_move_on(), common_pre_ob_move_on(), FLAG_ALIVE, hit_with_arrow(), obj::inv, METHOD_ERROR, METHOD_OK, object_get_owner(), QUERY_FLAG, and obj::speed.

Referenced by init_type_arrow(), and init_type_thrown_object().

Here is the call graph for this function:

Here is the caller graph for this function:

void stop_projectile ( object op)

Handle an arrow or thrown object stopping.

Parameters
opThe arrow or thrown object that is stopping.

Definition at line 36 of file projectile.c.

References obj::count, EVENT_STOP, execute_event(), fix_stopped_arrow(), FREE_OBJ_FREE_INVENTORY, obj::inv, obj::map, object_clear_owner(), object_free2(), object_free_drop_inventory(), object_insert_in_map_at(), object_merge(), object_remove(), object_was_destroyed, SCRIPT_FIX_NOTHING, obj::x, and obj::y.

Referenced by arrow_type_process(), common_process_projectile(), and thrown_object_type_process().

Here is the call graph for this function:

Here is the caller graph for this function: