Crossfire Server, Trunk
special.cpp File Reference
#include "global.h"
#include <stdlib.h>
#include <string.h>
#include "random_map.h"
#include "rproto.h"
+ Include dependency graph for special.cpp:

Go to the source code of this file.

Macros

#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)
 
void include_map_in_map (mapstruct *dest_map, const mapstruct *in_map, int x, int y)
 
void nuke_map_region (mapstruct *map, int xstart, int ystart, int xsize, int ysize)
 
void place_fountain_with_specials (mapstruct *map)
 
void place_special_exit (mapstruct *map, int hole_type, const RMParms *RP)
 
void place_specials_in_map (mapstruct *map, char **layout, RMParms *RP)
 

Detailed Description

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

Definition in file special.cpp.

Macro Definition Documentation

◆ GLORY_HOLE

#define GLORY_HOLE   1

Definition at line 42 of file special.cpp.

◆ MINING_ZONE

#define MINING_ZONE   3

Definition at line 44 of file special.cpp.

◆ NO_SPECIAL

#define NO_SPECIAL   0

Definition at line 32 of file special.cpp.

◆ NR_OF_HOLE_TYPES

#define NR_OF_HOLE_TYPES   3

Definition at line 45 of file special.cpp.

◆ NUM_OF_SPECIAL_TYPES

#define NUM_OF_SPECIAL_TYPES   4

Definition at line 31 of file special.cpp.

◆ ORC_ZONE

#define ORC_ZONE   2

Definition at line 43 of file special.cpp.

◆ SPECIAL_EXIT

#define SPECIAL_EXIT   3

Definition at line 35 of file special.cpp.

◆ SPECIAL_FOUNTAIN

#define SPECIAL_FOUNTAIN   2

Definition at line 34 of file special.cpp.

◆ SPECIAL_SUBMAP

#define SPECIAL_SUBMAP   1

Definition at line 33 of file special.cpp.

Function Documentation

◆ find_spot_for_submap()

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 154 of file special.cpp.

References banquet::l, m, disinfect::map, MAP_HEIGHT, MAP_WIDTH, RANDOM, settings, and Settings::special_break_map.

Referenced by place_specials_in_map().

+ Here is the caller graph for this function:

◆ include_map_in_map()

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

Copy in_map into dest_map at point x,y. This also copies shop information if set in in_map.

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

Definition at line 86 of file special.cpp.

References add_button_link(), CALLOC, FLAG_IS_LINKED, FOR_MAP_FINISH, FOR_MAP_PREPARE, FREE_AND_CLEAR, shopitems::index, INS_NO_MERGE, INS_NO_WALK_ON, MAP_HEIGHT, MAP_WIDTH, nuke_map_region(), object_copy_with_inv(), object_create_arch(), object_insert_in_map_at(), QUERY_FLAG, mapstruct::shopgreed, mapstruct::shopitems, mapstruct::shopmax, mapstruct::shopmin, mapstruct::shoprace, strdup_local, Ice::tmp, diamondslots::x, and diamondslots::y.

Referenced by place_specials_in_map().

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

◆ nuke_map_region()

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 59 of file special.cpp.

References FLAG_IS_FLOOR, FOR_MAP_FINISH, FOR_MAP_PREPARE, HEAD, disinfect::map, object_free_drop_inventory(), object_remove(), QUERY_FLAG, and Ice::tmp.

Referenced by include_map_in_map().

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

◆ place_fountain_with_specials()

◆ place_special_exit()

◆ place_specials_in_map()

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 396 of file special.cpp.

References RMParms::difficulty, find_spot_for_submap(), find_style(), include_map_in_map(), disinfect::map, MAP_HEIGHT, MAP_WIDTH, NUM_OF_SPECIAL_TYPES, place_fountain_with_specials(), place_special_exit(), RANDOM, 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: