Crossfire Server, Branch 1.12  R12190
Defines | Functions
special.c File Reference

Those functions handle placement of fountains, submaps, and so on. More...

#include <global.h>
#include <random_map.h>
#include <rproto.h>
Include dependency graph for special.c:

Go to the source code of this file.

Defines

#define GLORY_HOLE   1
#define MINING_ZONE   3
#define NO_SPECIAL   0
#define NR_OF_HOLE_TYPES   3
#define NUM_OF_SPECIAL_TYPES   4
#define ORC_ZONE   2
#define SPECIAL_EXIT   3
#define SPECIAL_FOUNTAIN   2
#define SPECIAL_SUBMAP   1

Functions

int find_spot_for_submap (mapstruct *map, char **layout, int *ix, int *iy, int xsize, int ysize)
 Finds a place to put a submap into.
void include_map_in_map (mapstruct *dest_map, mapstruct *in_map, int x, int y)
 Copy in_map into dest_map at point x,y.
void nuke_map_region (mapstruct *map, int xstart, int ystart, int xsize, int ysize)
 Erases all objects (except floor) in the given rectangle.
void place_fountain_with_specials (mapstruct *map)
 Places a special fountain on the map.
void place_special_exit (mapstruct *map, int hole_type, RMParms *RP)
 Place an exit with a resource map.
void place_specials_in_map (mapstruct *map, char **layout, RMParms *RP)
 Main function for specials.

Detailed Description

Those functions handle placement of fountains, submaps, and so on.

Definition in file special.c.


Function Documentation

int find_spot_for_submap ( mapstruct map,
char **  layout,
int *  ix,
int *  iy,
int  xsize,
int  ysize 
)

Finds a place to put a submap into.

Parameters:
mapmap to insert.
layoutwhere to insert into.
ix
iycoordinates of suitable location if return is 1.
xsize
ysizesize of layout.
Returns:
0 if no space found, 1 else.

Definition at line 141 of file special.c.

References MAP_HEIGHT, and MAP_WIDTH.

Referenced by place_specials_in_map().

Here is the caller graph for this function:

void include_map_in_map ( mapstruct dest_map,
mapstruct in_map,
int  x,
int  y 
)

Copy in_map into dest_map at point x,y.

Parameters:
dest_mapmap where to copy to.
in_mapmap to copy from.
x
ycoordinates to put in_map to.

Definition at line 100 of file special.c.

References add_button_link(), arch_to_object(), copy_object_with_inv(), FLAG_IS_LINKED, GET_MAP_OB, insert_multisquare_ob_in_map(), MAP_HEIGHT, MAP_WIDTH, nuke_map_region(), and QUERY_FLAG.

Referenced by place_specials_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void nuke_map_region ( mapstruct map,
int  xstart,
int  ystart,
int  xsize,
int  ysize 
)

Erases all objects (except floor) in the given rectangle.

Parameters:
mapmap to process.
xstart
ystarttop-left coordinates of zone.
xsize
ysizesize of zone.

Definition at line 70 of file special.c.

References FLAG_IS_FLOOR, free_object(), GET_MAP_OB, QUERY_FLAG, and remove_ob().

Referenced by include_map_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

Places a special fountain on the map.

Parameters:
mapmap to place to.
Todo:
change logic to allocate potion only if success?

Definition at line 192 of file special.c.

References add_string(), copy_object(), create_archetype(), find_first_free_spot(), find_style(), FLAG_IDENTIFIED, FLAG_NO_PICK, free_object(), freearr_x, freearr_y, get_object(), insert_ob_in_map(), M_ADAMANT, MAP_HEIGHT, MAP_WIDTH, pick_random_object(), and SET_FLAG.

Referenced by place_specials_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void place_special_exit ( mapstruct map,
int  hole_type,
RMParms RP 
)

Place an exit with a resource map.

Parameters:
mapwhere to put the exit.
hole_typetype of random map to link to, see HOLE_xxx.
RPparameters from which map was generated.

Definition at line 235 of file special.c.

References add_string(), copy_object(), RMParms::difficulty, RMParms::difficulty_increase, RMParms::dungeon_level, RMParms::exitstyle, find_first_free_spot(), find_style(), RMParms::floorstyle, freearr_x, freearr_y, get_object(), GLORY_HOLE, HUGE_BUF, insert_ob_in_map(), llevError, LOG(), MAP_HEIGHT, MAP_WIDTH, MIN_RANDOM_MAP_SIZE, MINING_ZONE, mon, NR_OF_HOLE_TYPES, OPT_WALLS_ONLY, ORC_ZONE, pick_random_object(), RMParms::wallstyle, and write_parameters_to_string().

Referenced by place_specials_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void place_specials_in_map ( mapstruct map,
char **  layout,
RMParms RP 
)

Main function for specials.

Parameters:
mapmap to alter.
layoutlayout the map was generated from.
RPparameters the map was generated from.

Definition at line 323 of file special.c.

References RMParms::difficulty, find_spot_for_submap(), find_style(), include_map_in_map(), MAP_HEIGHT, MAP_WIDTH, NUM_OF_SPECIAL_TYPES, place_fountain_with_specials(), place_special_exit(), SPECIAL_EXIT, SPECIAL_FOUNTAIN, and SPECIAL_SUBMAP.

Referenced by generate_random_map().

Here is the call graph for this function:

Here is the caller graph for this function: