Crossfire Server, Trunk  R22047
Random house generation plugin

Files

file  cfrhg.c
 
file  cfrhg.h
 

Data Structures

struct  house_zone_struct
 

Typedefs

typedef struct house_zone_struct house_zone_struct
 

Functions

static void add_exit_to_item (object *exit, const house_zone_struct *zone, const mapstruct *map)
 
static void add_exits_to_map (const mapstruct *map)
 
CF_PLUGIN int cfrhg_globalEventListener (int *type,...)
 
CF_PLUGIN int cfrhg_runPluginCommand (object *op, char *params)
 
CF_PLUGIN int closePlugin (void)
 
CF_PLUGIN int eventListener (int *type,...)
 
static int get_exit_seed (const object *exit, const mapstruct *map)
 
static const house_zone_structget_map_zone (const mapstruct *map)
 
CF_PLUGIN void * getPluginProperty (int *type,...)
 
CF_PLUGIN int initPlugin (const char *iversion, f_plug_api gethooksptr)
 
static int is_suitable_exit (object *exit)
 
CF_PLUGIN int postInitPlugin (void)
 

Variables

CF_PLUGIN char SvnRevPlugin [] = SVN_REV
 
static const house_zone_struct zones []
 

Detailed Description

This plugin links unused exits to random maps. The random map parameters vary based on the map it is in, but each exit will always use the same random seed to have the same layout and content.

Exits will only point to a random map if both their slaying and msg fields are empty.

Todo:
  • make more parameters vary based on maps
  • add exits to all towns

Typedef Documentation

◆ house_zone_struct

Link between a map and the exits to generate for it.

Function Documentation

◆ add_exit_to_item()

static void add_exit_to_item ( object *  exit,
const house_zone_struct zone,
const mapstruct map 
)
static

Change an empty exit to point to a random map.

Parameters
exitexit to alter.
zonezone we're part of, to know the random map parameters.
mapmap the exit is on.

Definition at line 152 of file cfrhg.c.

References cf_object_set_string_property(), CFAPI_OBJECT_PROP_MESSAGE, CFAPI_OBJECT_PROP_SLAYING, get_exit_seed(), MAX_BUF, house_zone_struct::monsterstyle, and snprintf.

Referenced by add_exits_to_map().

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

◆ add_exits_to_map()

static void add_exits_to_map ( const mapstruct map)
static

Checks if the map should be processed, and if so process it.

Parameters
mapmap to work on.

Definition at line 178 of file cfrhg.c.

References add_exit_to_item(), FOR_MAP_FINISH, FOR_MAP_PREPARE, get_map_zone(), is_suitable_exit(), MAP_HEIGHT, and MAP_WIDTH.

Referenced by cfrhg_globalEventListener().

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

◆ cfrhg_globalEventListener()

CF_PLUGIN int cfrhg_globalEventListener ( int *  type,
  ... 
)

Global server event handling. Only uses EVENT_MAPLOAD.

Parameters
typeunused.
Returns
0.

Definition at line 202 of file cfrhg.c.

References add_exits_to_map(), and EVENT_MAPLOAD.

Referenced by postInitPlugin().

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

◆ cfrhg_runPluginCommand()

CF_PLUGIN int cfrhg_runPluginCommand ( object *  op,
char *  params 
)

Unused.

Parameters
opunused.
paramsunused.
Returns
-1.

Definition at line 292 of file cfrhg.c.

◆ closePlugin()

CF_PLUGIN int closePlugin ( void  )

Unloading of plugin.

Returns
0.

Definition at line 314 of file cfrhg.c.

References cf_log(), llevDebug, and PLUGIN_VERSION.

+ Here is the call graph for this function:

◆ eventListener()

CF_PLUGIN int eventListener ( int *  type,
  ... 
)

Unused.

Parameters
typeunused.
Returns
0.
Todo:
build from current map's path, probably

Definition at line 229 of file cfrhg.c.

◆ get_exit_seed()

static int get_exit_seed ( const object *  exit,
const mapstruct map 
)
static

Get the random map seed. Will always yield the same value for the same (position included) exit.

Parameters
exitexit to get the seed of.
mapmap the exit is on.
Returns
random seed.

Definition at line 126 of file cfrhg.c.

References mapdef::path, and snprintf.

Referenced by add_exit_to_item().

+ Here is the caller graph for this function:

◆ get_map_zone()

static const house_zone_struct* get_map_zone ( const mapstruct map)
static

Get the random map parameters of a map.

Parameters
mapmap to get the zone of.
Returns
NULL if the map shouldn't be processed, else its parameters.

Definition at line 88 of file cfrhg.c.

References house_zone_struct::mappath, and mapdef::path.

Referenced by add_exits_to_map().

+ Here is the caller graph for this function:

◆ getPluginProperty()

CF_PLUGIN void* getPluginProperty ( int *  type,
  ... 
)

Get the plugin identification or full name.

Parameters
typeunused.
Returns
NULL.

Definition at line 257 of file cfrhg.c.

References buf, PLUGIN_NAME, PLUGIN_VERSION, and snprintf.

◆ initPlugin()

CF_PLUGIN int initPlugin ( const char *  iversion,
f_plug_api  gethooksptr 
)

Plugin initialization.

Parameters
iversionserver version.
gethooksptrfunction to get hooks.
Returns
0.

Definition at line 242 of file cfrhg.c.

References cf_init_plugin(), cf_log(), llevDebug, and PLUGIN_VERSION.

+ Here is the call graph for this function:

◆ is_suitable_exit()

static int is_suitable_exit ( object *  exit)
static

Should we add a random map to this exit?

Parameters
exitexit to check.
Returns
1 if a map should be set, 0 else.

Definition at line 106 of file cfrhg.c.

References cf_object_get_int_property(), cf_object_get_sstring_property(), CFAPI_OBJECT_PROP_MESSAGE, CFAPI_OBJECT_PROP_SLAYING, and CFAPI_OBJECT_PROP_TYPE.

Referenced by add_exits_to_map().

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

◆ postInitPlugin()

CF_PLUGIN int postInitPlugin ( void  )

Plugin initialisation.

Returns
0.

Definition at line 301 of file cfrhg.c.

References cf_log(), cf_system_register_global_event(), cfrhg_globalEventListener(), EVENT_MAPLOAD, llevDebug, PLUGIN_NAME, and PLUGIN_VERSION.

+ Here is the call graph for this function:

Variable Documentation

◆ SvnRevPlugin

CF_PLUGIN char SvnRevPlugin[] = SVN_REV

Definition at line 58 of file cfrhg.c.

◆ zones

const house_zone_struct zones[]
static
Initial value:
= {
{ "/world/world_104_115", "city" },
{ "/world/world_105_115", "city" },
{ "/world/world_104_116", "city" },
{ "/world/world_105_116", "city" },
{ "/world/world_122_116", "city" },
{ "/world/world_121_116", "city" },
{ "/world/world_122_117", "city" },
{ "/world/world_121_117", "city" },
{ NULL, NULL }
}

Maps we work on.

Definition at line 67 of file cfrhg.c.

Referenced by add_npc_to_random_map().