Crossfire Server, Trunk
bwp.c File Reference
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <global.h>
#include <sys/stat.h>
+ Include dependency graph for bwp.c:

Go to the source code of this file.

Data Structures

struct  string_array
 

Macros

#define LO_NEWFILE   2
 
#define MAX_SIZE   64
 
#define NA   "n/a"
 

Typedefs

typedef struct string_array String_Array
 

Functions

int apply_auto (object *op)
 
void apply_auto_fix (mapstruct *m)
 
static char * cat_template (char *source, char *add)
 
void clean_tmp_files (void)
 
static char * do_template (const char *template, const char **vars, const char **values)
 
void dragon_ability_gain (object *ob, int x, int y)
 
void draw_ext_info (int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *txt)
 
void draw_ext_info_format (int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...)
 
void emergency_save (int x)
 
void esrv_del_item (player *pl, object *ob)
 
void esrv_send_item (object *ob, object *obx)
 
void esrv_update_spells (player *pl)
 
void ext_info_map (int color, const mapstruct *map, uint8_t type, uint8_t subtype, const char *str1)
 
objectfind_skill_by_number (object *who, int skillno)
 
void free_data (String_Array *array)
 
static void free_if_used (char *p)
 
const char * join_with_comma (String_Array *array)
 
int main (int argc, char *argv[])
 
void move_firewall (object *ob)
 
void push (String_Array *array, const char *string)
 
static int read_template (const char *name, char **buffer)
 
void set_darkness_map (mapstruct *m)
 
void set_map_timeout (void)
 
static int sort_archetypes (const void *a, const void *b)
 
static int sortbyname (const void *a, const void *b)
 

Variables

const char *const flag_names [NUM_FLAGS+1]
 
char * monster_attack_row
 
char * monster_canuse_row
 
char * monster_entry
 
char * monster_lore_row
 
char * monster_page_foot
 
char * monster_page_head
 
char * monster_protected_row
 
char * monster_special_row
 
char * monster_vulnerable_row
 

Macro Definition Documentation

◆ LO_NEWFILE

#define LO_NEWFILE   2

Definition at line 36 of file bwp.c.

◆ MAX_SIZE

#define MAX_SIZE   64

Definition at line 37 of file bwp.c.

◆ NA

#define NA   "n/a"

Definition at line 38 of file bwp.c.

Typedef Documentation

◆ String_Array

typedef struct string_array String_Array

Function Documentation

◆ apply_auto()

int apply_auto ( object op)

Map was just loaded, handle op's initialization.

Generates shop floor's item, and treasures.

Parameters
opobject to initialize.
Returns
1 if object was initialized, 0 else.

Definition at line 702 of file bwp.c.

References CLEAR_FLAG, create_treasure(), FLAG_AUTO_APPLY, FLAG_CURSED, FLAG_DAMNED, FLAG_UNPAID, generate_treasure(), GT_ENVIRONMENT, HAS_RANDOM_ITEMS, identify(), object_free_drop_inventory(), object_insert_in_map_at(), object_remove(), give::op, QUERY_FLAG, SET_FLAG, SHOP_FLOOR, Ice::tmp, and TREASURE.

Referenced by apply_auto_fix().

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

◆ apply_auto_fix()

void apply_auto_fix ( mapstruct m)

Go through the entire map (only the first time when an original map is loaded) and performs special actions for certain objects (most initialization of chests and creation of treasures and stuff). Calls apply_auto() if appropriate.

Parameters
mmap to fix.

Those are dummy functions defined to resolve all symboles. Added as part of glue cleaning. Ryo 2005-07-15

Definition at line 745 of file bwp.c.

References apply_auto(), check_trigger(), CONTAINER, create_treasure(), FLAG_AUTO_APPLY, FLAG_MONSTER, GET_MAP_OB, HAS_RANDOM_ITEMS, m, MAP_HEIGHT, MAP_WIDTH, monster_check_apply_all(), PLAYER, QUERY_FLAG, Ice::tmp, TREASURE, TRIGGER_BUTTON, TRIGGER_PEDESTAL, diamondslots::x, and diamondslots::y.

+ Here is the call graph for this function:

◆ cat_template()

static char* cat_template ( char *  source,
char *  add 
)
static

Concatenates a string, and free concatenated string.

Parameters
sourcestring to append to. Can be NULL.
addstring that is appened. Will be free()d after. Must not be NULL.
Returns
new string that should be free()d by caller.

Definition at line 113 of file bwp.c.

◆ clean_tmp_files()

void clean_tmp_files ( void  )

Save unique maps and clean up temporary map files unless recycling temporary maps. The function name is somewhat misleading.

Definition at line 814 of file bwp.c.

◆ do_template()

static char* do_template ( const char *  template,
const char **  vars,
const char **  values 
)
static

Processes a template.

Variables in the form #VARIABLE# will be substituted for specified values.

Parameters
templatetemplate to process.
varsvariables to replace. Array must be NULL-terminated.
valuesvariables to replace by. Must be the same size as vars, no NULL element allowed.
Returns
filled-in template, that must be free()d be caller. NULL if memory allocation error.
Note
returned string will be a memory block larger than required, for performance reasons.

Definition at line 186 of file bwp.c.

References disinfect::count, and rotate-tower::result.

Referenced by main().

+ Here is the caller graph for this function:

◆ dragon_ability_gain()

void dragon_ability_gain ( object ob,
int  x,
int  y 
)

When a dragon-player gains a new stage of evolution, he gets some treasure.

Parameters
whothe dragon player.
atnrthe attack-number of the ability focus.
levelability level.

Definition at line 820 of file bwp.c.

◆ draw_ext_info()

void draw_ext_info ( int  flags,
int  pri,
const object pl,
uint8_t  type,
uint8_t  subtype,
const char *  txt 
)

Those are dummy functions defined to resolve all symboles. Added as part of glue cleaning. Ryo 2005-07-15

Definition at line 793 of file bwp.c.

References logfile.

◆ draw_ext_info_format()

void draw_ext_info_format ( int  flags,
int  pri,
const object pl,
uint8_t  type,
uint8_t  subtype,
const char *  format,
  ... 
)

Definition at line 797 of file bwp.c.

References logfile.

◆ emergency_save()

void emergency_save ( int  x)

Save all players.

Parameters
flagif non zero, it means that we want to try and save everyone, but keep the game running. Thus, we don't want to free any information.

Definition at line 811 of file bwp.c.

◆ esrv_del_item()

void esrv_del_item ( player pl,
object ob 
)

Tells the client to delete an item. Uses the item command with a -1 location.

Definition at line 830 of file bwp.c.

◆ esrv_send_item()

void esrv_send_item ( object ob,
object obx 
)

Sends item's info to player.

Definition at line 817 of file bwp.c.

◆ esrv_update_spells()

void esrv_update_spells ( player pl)

This looks for any spells the player may have that have changed their stats. It then sends an updspell packet for each spell that has changed in this way.

Definition at line 833 of file bwp.c.

◆ ext_info_map()

void ext_info_map ( int  color,
const mapstruct map,
uint8_t  type,
uint8_t  subtype,
const char *  str1 
)

Writes to everyone on the specified map

Parameters
colorThe color of the message
mapThe map where the players receiving the message are located
typeThe message type
subtypeThe message subtype
str1The message to be sent

Definition at line 804 of file bwp.c.

References logfile.

◆ find_skill_by_number()

object* find_skill_by_number ( object who,
int  skillno 
)

This returns the first skill pointer of the given subtype (the one that accumulates exp, has the level, etc).

It is presumed that the player will be needing to actually use the skill, so a skill tool will be equipped if one if found to benefit from its bonuses.

This code is basically the same as find_skill_by_name() above, but instead of a skill name, we search by matching subtype.

Warning: skill subtypes are not unique to skills, various skills (eg harvesting-like) will share the same subtype, so this function should only be used if the skill's subtype is known to be used only by one skill.

Parameters
whoplayer applying a skill.
skillnoskill subtype.
Returns
skill object if player can use it, NULL else.

Definition at line 826 of file bwp.c.

◆ free_data()

void free_data ( String_Array array)

Frees the item's data of specified String_Array.

Will free array->item and its fields.

Parameters
arrayelement we want to clean.

Definition at line 326 of file bwp.c.

References say::item.

Referenced by main().

+ Here is the caller graph for this function:

◆ free_if_used()

static void free_if_used ( char *  p)
static

Frees memory if the pointer was ever given a string.

There's probably a cleaner way to do this, but this frees the memory given to a pointer if the pointer points to a string longer than zero length. It's to get rid of "in free(): warning: junk pointer, too high to make sense" errors.

Parameters
pPointer to free memory from

Definition at line 254 of file bwp.c.

◆ join_with_comma()

const char* join_with_comma ( String_Array array)

Joins strings with a comma and space.

Takes an array of strings and joins them togther with a comma and a space between each of them.

Parameters
arrayPointer to struct of type String_Array, containing strings to join

Definition at line 345 of file bwp.c.

References sortbyname().

Referenced by main().

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

◆ main()

◆ move_firewall()

void move_firewall ( object ob)

Move for FIREWALL.

firewalls fire other spells. The direction of the wall is stored in op->direction. walls can have hp, so they can be torn down.

Parameters
opfirewall.

Definition at line 808 of file bwp.c.

◆ push()

void push ( String_Array array,
const char *  string 
)

Add a string to a String_Array struct

Adds the new string to the struct's 'item' array, and updates the 'count'value.

Parameters
arrayThe array to be appended
stringThe new string to append

Definition at line 311 of file bwp.c.

References strdup_local.

Referenced by check_trigger(), and main().

+ Here is the caller graph for this function:

◆ read_template()

static int read_template ( const char *  name,
char **  buffer 
)
static

Reads a file in memory.

Parameters
namefile path to read.
bufferwhere to store. Can be left uninitialized in case of errors.
Returns
1 if error, 0 else.

Definition at line 132 of file bwp.c.

References mad_mage_user::file, and give::name.

Referenced by main().

+ Here is the caller graph for this function:

◆ set_darkness_map()

void set_darkness_map ( mapstruct m)

Set the darkness level for a map, based on the time of the day.

Parameters
mmap to alter.

Definition at line 823 of file bwp.c.

◆ set_map_timeout()

void set_map_timeout ( void  )

Definition at line 694 of file bwp.c.

◆ sort_archetypes()

static int sort_archetypes ( const void *  a,
const void *  b 
)
static

Sort archetypes alphabetically

Used by qsort to sort archetypes alphabetically without regard to case

Parameters
aFirst value
bSecond value

Definition at line 289 of file bwp.c.

References disinfect::a, Ice::b, archetype::clone, object::name, and strcasecmp().

Referenced by main().

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

◆ sortbyname()

static int sortbyname ( const void *  a,
const void *  b 
)
static

Sort values alphabetically

Used by qsort to sort values alphabetically without regard to case

Parameters
aFirst value
bSecond value

Definition at line 272 of file bwp.c.

References disinfect::a, Ice::b, and strcasecmp().

Referenced by join_with_comma().

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

Variable Documentation

◆ flag_names

const char* const flag_names[NUM_FLAGS+1]

This is a list of pointers that correspond to the FLAG_.. values. This is a simple 1:1 mapping - if FLAG_FRIENDLY is 15, then the 15'th element of this array should match that name. If an entry is NULL, that is a flag not to loaded/saved.

Copied from common/loader.c; perhaps should be defined elsewhere?

Definition at line 70 of file bwp.c.

Referenced by main().

◆ monster_attack_row

char* monster_attack_row

Definition at line 53 of file bwp.c.

Referenced by main().

◆ monster_canuse_row

char* monster_canuse_row

Definition at line 49 of file bwp.c.

Referenced by main().

◆ monster_entry

char* monster_entry

Definition at line 48 of file bwp.c.

Referenced by main().

◆ monster_lore_row

char* monster_lore_row

Definition at line 54 of file bwp.c.

Referenced by main().

◆ monster_page_foot

char* monster_page_foot

Definition at line 47 of file bwp.c.

Referenced by main().

◆ monster_page_head

char* monster_page_head

Definition at line 46 of file bwp.c.

Referenced by main().

◆ monster_protected_row

char* monster_protected_row

Definition at line 50 of file bwp.c.

Referenced by main().

◆ monster_special_row

char* monster_special_row

Definition at line 52 of file bwp.c.

Referenced by main().

◆ monster_vulnerable_row

char* monster_vulnerable_row

Definition at line 51 of file bwp.c.

Referenced by main().