Crossfire Server, Trunk
holy.cpp 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 <vector>
#include <algorithm>
+ Include dependency graph for holy.cpp:

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)
 
const objectfind_god (const char *name)
 
void free_all_god (void)
 
const char * get_god_for_race (const char *race)
 
const objectget_rand_god (void)
 
void init_gods (void)
 

Variables

static std::vector< object * > gods
 

Detailed Description

God-related common functions.

Definition in file holy.cpp.

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 333 of file holy.cpp.

◆ 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 348 of file holy.cpp.

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 41 of file holy.cpp.

References archt::clone, GOD, gods, llevDebug, llevError, LOG(), obj::name, and obj::type.

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 111 of file holy.cpp.

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, obj::msg, give::name, obj::name, NROFATTACKS, nstrtok(), obj::path_attuned, obj::path_denied, obj::path_repelled, PATH_SUMMON, PATH_TURNING, obj::race, obj::resist, obj::slaying, stringbuffer_append_printf(), stringbuffer_append_string(), stringbuffer_append_stringbuffer(), stringbuffer_finish(), stringbuffer_length(), stringbuffer_new(), strtoktolin(), guildbuy::temp, and obj::title.

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()

◆ find_god()

const object* find_god ( const char *  name)

Returns a god(s object from its name.

Note
returned object shouldn't be modified.
Parameters
namegod's name.
Returns
pointer to god's object, NULL if doesn't match any god.

Definition at line 319 of file holy.cpp.

References is_valid_types_gen::found, and gods.

Referenced by become_follower(), cast_bless(), cast_consecrate(), cast_curse(), cast_detection(), cast_smite_spell(), command_setgod(), determine_god(), hit_player(), hit_with_one_attacktype(), mood_change(), perceive_self(), pets_summon_golem(), pets_summon_object(), pray_at_altar(), START_TEST(), and tailor_god_spell().

+ Here is the caller graph for this function:

◆ free_all_god()

void free_all_god ( void  )

Frees all god information.

Definition at line 329 of file holy.cpp.

References gods.

Referenced by cleanup().

+ Here is the caller graph for this function:

◆ get_god_for_race()

const char* get_god_for_race ( const char *  race)

Returns a string that is the name of the god that should be natively worshipped by a creature of who has race *race if we can't find a god that is appropriate, we return NULL

Parameters
racerace we're getting the god of.
Returns
NULL if no matching race, else god's name.

Definition at line 92 of file holy.cpp.

References gods.

Referenced by determine_god(), and START_TEST().

+ Here is the caller graph for this function:

◆ get_rand_god()

const object* get_rand_god ( void  )

Returns a random god.

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

Definition at line 75 of file holy.cpp.

References gods, and RANDOM.

Referenced by determine_god(), god_info_msg(), and START_TEST().

+ 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 61 of file holy.cpp.

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

Referenced by generate_map(), init_beforeplay(), ResourcesManager::load(), main(), and setup().

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

Variable Documentation

◆ gods

std::vector<object *> gods
static

Definition at line 33 of file holy.cpp.

Referenced by add_god_to_list(), find_god(), free_all_god(), get_god_for_race(), and get_rand_god().

spellpathnames
const char *const spellpathnames[NRSPELLPATHS]
Definition: init.cpp:239
NROFATTACKS
#define NROFATTACKS
Definition: attack.h:17
attacks
const char *const attacks[NROFATTACKS]
Definition: living.cpp:129
NRSPELLPATHS
#define NRSPELLPATHS
Definition: spells.h:40
give.name
name
Definition: give.py:27