Crossfire Server, Trunk
creator.c File Reference
#include <global.h>
#include <ob_methods.h>
#include <ob_types.h>
#include <sounds.h>
#include <sproto.h>
+ Include dependency graph for creator.c:

Go to the source code of this file.

Functions

static method_ret creator_type_process (object *op)
 
static method_ret creator_type_trigger (object *op, object *cause, int state)
 
void init_type_creator (void)
 
static void move_creator (object *creator)
 

Detailed Description

The implementation of creator objects.

Definition in file creator.c.

Function Documentation

◆ creator_type_process()

static method_ret creator_type_process ( object op)
static

Processes a creator.

Parameters
opThe teleporter to process
Return values
METHOD_OK

Definition at line 124 of file creator.c.

References METHOD_OK, move_creator(), and give::op.

Referenced by init_type_creator().

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

◆ creator_type_trigger()

static method_ret creator_type_trigger ( object op,
object cause,
int  state 
)
static

A creator is triggered.

Parameters
opThe object being triggered
causeIgnored.
stateIgnored.
Return values
METHOD_OK

Definition at line 136 of file creator.c.

References METHOD_OK, move_creator(), give::op, quest::state, and nlohmann::detail::void().

Referenced by init_type_creator().

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

◆ init_type_creator()

void init_type_creator ( void  )

Initializer for the creator object type.

Definition at line 40 of file creator.c.

References CREATOR, creator_type_process(), creator_type_trigger(), register_process(), and register_trigger().

Referenced by register_all_ob_types().

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

◆ move_creator()

static void move_creator ( object creator)
static

Move function for creator objects.

It has the creator object create it's other_arch right on top of it. connected: what will trigger it

  • hp: how many times it may create before stopping
  • lifesave: if set, it'll never disappear but will go on creating everytime it's triggered
  • other_arch: the object to create

Note this can create large objects, however, in that case, it has to make sure that there is in fact space for the object. It should really do this for small objects also, but there is more concern with large objects, most notably a part being placed outside of the map which would cause the server to crash

Parameters
creatorcreator to move.

Definition at line 64 of file creator.c.

References obj::arch, CLEAR_FLAG, fix_generated_item(), FLAG_FREED, FLAG_IS_A_TEMPLATE, FLAG_LIFESAVE, FOR_BELOW_FINISH, FOR_BELOW_PREPARE, FREE_AND_CLEAR_STR, FREE_AND_COPY, GT_MINIMAL, liv::hp, obj::inv, obj::level, llevError, LOG(), obj::map, archt::more, obj::name, guildjoin::ob, ob_blocked(), object_create_arch(), object_create_clone(), object_free_drop_inventory(), object_insert_in_map_at(), object_unset_flag_inv(), obj::other_arch, mapdef::path, QUERY_FLAG, rndm(), obj::slaying, obj::stats, obj::title, obj::x, and obj::y.

Referenced by creator_type_process(), and creator_type_trigger().

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