Crossfire Server, Branches 1.12  R18729
bwp.c File Reference
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <global.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 auto_apply (object *op)
 
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 type, uint8 subtype, const char *txt, const char *txt2)
 
void draw_ext_info_format (int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *new_format, const char *old_format,...)
 
void emergency_save (int x)
 
void esrv_del_item (player *pl, int tag)
 
void esrv_send_item (object *ob, object *obx)
 
void esrv_update_spells (player *pl)
 
int execute_event (object *op, int eventcode, object *activator, object *third, const char *message, int fix)
 
int execute_global_event (int eventcode,...)
 
void ext_info_map (int color, const mapstruct *map, uint8 type, uint8 subtype, const char *str1, const char *str2)
 
objectfind_skill_by_number (object *who, int skillno)
 
void fix_auto_apply (mapstruct *m)
 
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 monster_check_apply (object *ob, object *obt)
 
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)
 
void trap_adjust (object *ob, int x)
 

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

#define LO_NEWFILE   2

Definition at line 36 of file bwp.c.

#define MAX_SIZE   64

Definition at line 37 of file bwp.c.

#define NA   "n/a"

Definition at line 38 of file bwp.c.

Referenced by main().

Typedef Documentation

typedef struct string_array String_Array

Function Documentation

int auto_apply ( object op)

Map was just loaded, handle op's initialisation.

Generates shop floor's item, and treasures.

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

Definition at line 701 of file bwp.c.

References CLEAR_FLAG, create_treasure(), mapdef::difficulty, liv::exp, FLAG_AUTO_APPLY, FLAG_CURSED, FLAG_DAMNED, FLAG_UNPAID, free_object(), generate_treasure(), GT_ENVIRONMENT, HAS_RANDOM_ITEMS, liv::hp, identify(), insert_ob_in_map(), obj::map, QUERY_FLAG, obj::randomitems, remove_ob(), SET_FLAG, SHOP_FLOOR, obj::stats, TREASURE, obj::type, obj::x, and obj::y.

Referenced by fix_auto_apply().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 112 of file bwp.c.

void clean_tmp_files ( void  )

Remove temporary map files.

Todo:
check logic, why is file only removed if map is in memory?

Definition at line 811 of file bwp.c.

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 185 of file bwp.c.

Referenced by main().

+ Here is the caller graph for this function:

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 817 of file bwp.c.

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

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

Definition at line 790 of file bwp.c.

References logfile.

void draw_ext_info_format ( int  flags,
int  pri,
const object pl,
uint8  type,
uint8  subtype,
const char *  new_format,
const char *  old_format,
  ... 
)

Sends message to player(s).

This function is the same as draw_ext_info, but takes varargs format. Otherwise, the meaning of all the fields is the same. This is perhaps not the most efficient as we do vsnprintf on both the old and newbuf, but it simplifies the code greatly since we can just call draw_ext_info. Also, hopefully at some point, need for old_format will go away.

Parameters
flagsVarious flags - mostly color, plus a few specials.
priPriority. It is a little odd - the lower the value, the more important it is. Thus, 0 gets sent no matter what. Otherwise, the value must be less than the listening level that the player has set. Unfortunately, there is no clear guideline on what each level does what.
plCan be passed as NULL - in fact, this will be done if NDI_ALL is set in the flags.

If message is black, and not NDI_UNIQUE, gets sent through output buffers. If the client supports the new readables, this is sent to the client without processing in the output buffers.

Parameters
typeThe type MSG_TYPE for the type of message.
subtypeThe type MSG_TYPE for the type of message.
new_format
old_format

Definition at line 794 of file bwp.c.

References logfile.

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 808 of file bwp.c.

void esrv_del_item ( player pl,
int  tag 
)

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

Definition at line 827 of file bwp.c.

void esrv_send_item ( object ob,
object obx 
)

Sends item's info to player.

Definition at line 814 of file bwp.c.

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 830 of file bwp.c.

int execute_event ( object op,
int  eventcode,
object activator,
object third,
const char *  message,
int  fix 
)

Definition at line 839 of file bwp.c.

int execute_global_event ( int  eventcode,
  ... 
)

Definition at line 843 of file bwp.c.

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

Writes to everyone on the specified map

Definition at line 801 of file bwp.c.

References logfile.

object* find_skill_by_number ( object who,
int  skillno 
)

This returns the skill pointer of the given name (the one that accumlates 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 number.

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

Definition at line 823 of file bwp.c.

void fix_auto_apply ( 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 auto_apply() 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 746 of file bwp.c.

References obj::above, obj::arch, auto_apply(), check_trigger(), CONTAINER, create_treasure(), mapdef::difficulty, FLAG_AUTO_APPLY, GET_MAP_OB, GT_APPLY, HAS_RANDOM_ITEMS, liv::hp, MAP_HEIGHT, MAP_WIDTH, PLAYER, QUERY_FLAG, obj::randomitems, obj::stats, TREASURE, TRIGGER_BUTTON, TRIGGER_PEDESTAL, and obj::type.

+ Here is the call graph for this function:

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 325 of file bwp.c.

References string_array::count, and string_array::item.

Referenced by main().

+ Here is the caller graph for this function:

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 253 of file bwp.c.

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 344 of file bwp.c.

References string_array::count, string_array::item, and sortbyname().

Referenced by main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void monster_check_apply ( object ob,
object obt 
)

Definition at line 833 of file bwp.c.

void move_firewall ( object ob)

Move for FIREWALL.

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

Parameters
opfirewall.

Definition at line 805 of file bwp.c.

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 310 of file bwp.c.

References string_array::count, string_array::item, and strdup_local().

Referenced by check_trigger(), and main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 131 of file bwp.c.

Referenced by main().

+ Here is the caller graph for this function:

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 820 of file bwp.c.

void set_map_timeout ( void  )

Definition at line 693 of file bwp.c.

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 288 of file bwp.c.

References archt::clone, obj::name, and strcasecmp().

Referenced by main().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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 271 of file bwp.c.

References strcasecmp().

Referenced by join_with_comma().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void trap_adjust ( object ob,
int  x 
)

Adjust trap difficulty to the map. The default traps are too strong for wimpy level 1 players, and unthreatening to anyone of high level

Parameters
traptrap to adjust.
difficultymap difficulty.

Definition at line 836 of file bwp.c.

Variable Documentation

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 69 of file bwp.c.

Referenced by main().

char* monster_attack_row

Definition at line 52 of file bwp.c.

Referenced by main().

char* monster_canuse_row

Definition at line 48 of file bwp.c.

Referenced by main().

char* monster_entry

Definition at line 47 of file bwp.c.

Referenced by main().

char* monster_lore_row

Definition at line 53 of file bwp.c.

Referenced by main().

char* monster_page_foot

Definition at line 46 of file bwp.c.

Referenced by main().

char* monster_page_head

Definition at line 45 of file bwp.c.

Referenced by main().

char* monster_protected_row

Definition at line 49 of file bwp.c.

Referenced by main().

char* monster_special_row

Definition at line 51 of file bwp.c.

Referenced by main().

char* monster_vulnerable_row

Definition at line 50 of file bwp.c.

Referenced by main().