Crossfire Server, Trunk
holy.c File Reference
#include "global.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "libproto.h"
#include "living.h"
#include "spells.h"
#include "assets.h"
+ Include dependency graph for holy.c:

Go to the source code of this file.

Macros

#define DESCRIBE_ABILITY(retbuf, variable, name)
 
#define DESCRIBE_PATH(retbuf, variable, name)
 

Functions

static void add_god_to_list (archetype *god_arch)
 
int describe_god (const object *god, int what, StringBuffer *buf, size_t maxlen)
 
void dump_gods (void)
 
void free_all_god (void)
 
godlinkget_rand_god (void)
 
void init_gods (void)
 
static godlinkinit_godslist (void)
 
const object * pntr_to_god_obj (godlink *godlnk)
 

Detailed Description

God-related common functions.

Definition in file holy.c.

Macro Definition Documentation

◆ DESCRIBE_ABILITY

#define DESCRIBE_ABILITY (   retbuf,
  variable,
  name 
)
Value:
if (variable) { \
int i, j = 0; \
strcat(retbuf, "(" name ": "); \
for (i = 0; i < NROFATTACKS; i++) \
if (variable&(1<<i)) { \
if (j) \
strcat(retbuf, ", "); \
else \
j = 1; \
strcat(retbuf, attacks[i]); \
} \
strcat(retbuf, ")"); \
}

Definition at line 349 of file holy.c.

◆ DESCRIBE_PATH

#define DESCRIBE_PATH (   retbuf,
  variable,
  name 
)
Value:
if (variable) { \
int i, j = 0; \
strcat(retbuf, "(" name ": "); \
for (i = 0; i < NRSPELLPATHS; i++) \
if (variable&(1<<i)) { \
if (j) \
strcat(retbuf, ", "); \
else \
j = 1; \
strcat(retbuf, spellpathnames[i]); \
} \
strcat(retbuf, ")"); \
}

Definition at line 364 of file holy.c.

Function Documentation

◆ add_god_to_list()

static void add_god_to_list ( archetype *  god_arch)
static

Adds specified god to linked list if god, gives it an id.

Parameters
god_archGod to add. If NULL, will log an error.

Definition at line 55 of file holy.c.

References add_string(), glnk::arch, first_god, glnk::id, init_godslist(), llevDebug, llevError, LOG(), glnk::name, and glnk::next.

Referenced by init_gods().

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

◆ describe_god()

int describe_god ( const object *  god,
int  what,
StringBuffer buf,
size_t  maxlen 
)

Describe a god. The reason we return a combination is to know what exactly was written for knowledge management.

Parameters
godwhich god to describe.
whatinformation to describe, combination of GOD_xxx flags.
bufwhere to describe, must not be NULL.
maxlenmaximum wanted length of the description, if 0 no maximum length.
Returns
information actually written, combination of GOD_xxx, based on maxlen.

Definition at line 136 of file holy.c.

References attacktype_desc, buf, describe_resistance(), describe_spellpath_attenuation(), GOD_BLESSED, GOD_ENEMY, GOD_HOLYWORD, GOD_IMMUNITIES, GOD_PATHS, GOD_RESISTANCES, GOD_SACRED, HUGE_BUF, MAX_BUF, give::name, NROFATTACKS, nstrtok(), PATH_SUMMON, PATH_TURNING, stringbuffer_append_printf(), stringbuffer_append_string(), stringbuffer_append_stringbuffer(), stringbuffer_finish(), stringbuffer_length(), stringbuffer_new(), strtoktolin(), and guildbuy::temp.

Referenced by god_info_msg(), and knowledge_god_detail().

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

◆ dump_gods()

void dump_gods ( void  )

Prints all gods to stderr.

Todo:
use LOG instead of fprintf().

Definition at line 385 of file holy.c.

References DESCRIBE_ABILITY, DESCRIBE_PATH, describe_resistance(), first_god, FLAG_BLIND, FLAG_MAKE_INVIS, FLAG_REFL_MISSILE, FLAG_REFL_SPELL, FLAG_SEE_IN_DARK, FLAG_STEALTH, FLAG_UNDEAD, FLAG_USE_ARMOUR, FLAG_USE_WEAPON, FLAG_XRAYS, HUGE_BUF, glnk::next, pntr_to_god_obj(), QUERY_FLAG, and stringbuffer_finish().

Referenced by init_beforeplay().

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

◆ free_all_god()

void free_all_god ( void  )

Frees all god information.

Definition at line 336 of file holy.c.

References first_god, free_string(), llevDebug, LOG(), glnk::name, and glnk::next.

Referenced by cleanup().

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

◆ get_rand_god()

godlink* get_rand_god ( void  )

Returns a random god.

Returns
a random god, or NULL if no god was found.

Definition at line 100 of file holy.c.

References first_god, glnk::id, llevError, LOG(), glnk::next, and RANDOM.

Referenced by god_info_msg().

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

◆ init_gods()

void init_gods ( void  )

This takes a look at all of the archetypes to find the objects which correspond to the GODS (type GOD)

Definition at line 86 of file holy.c.

References add_god_to_list(), archetypes_for_each(), llevDebug, and LOG().

Referenced by generate_map(), init_beforeplay(), main(), and setup().

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

◆ init_godslist()

static godlink* init_godslist ( void  )
static

Initializes a god structure.

Note
Will never return NULL.

Definition at line 37 of file holy.c.

References glnk::arch, fatal(), glnk::id, glnk::name, glnk::next, and OUT_OF_MEMORY.

Referenced by add_god_to_list().

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

◆ pntr_to_god_obj()

const object* pntr_to_god_obj ( godlink godlnk)

Returns a pointer to the object We need to be VERY careful about using this, as we are returning a pointer to the CLONE object. -b.t.

Parameters
godlnkgod to get object.

Definition at line 122 of file holy.c.

References glnk::arch.

Referenced by dump_gods(), find_god(), and god_info_msg().

+ Here is the caller graph for this function:
NROFATTACKS
#define NROFATTACKS
Definition: attack.h:17
attacks
const char *const attacks[NROFATTACKS]
Definition: living.c:130
spellpathnames
const char *const spellpathnames[NRSPELLPATHS]
Definition: init.c:106
NRSPELLPATHS
#define NRSPELLPATHS
Definition: spells.h:40
give.name
name
Definition: give.py:27