|
Crossfire Server, Branches 1.12
R18729
|
#include <global.h>#include <living.h>#include <object.h>#include <spells.h>#include <sounds.h>#include <sproto.h>
Include dependency graph for gods.c:Go to the source code of this file.
Functions | |
| void | become_follower (object *op, const object *new_god) |
| static void | check_special_prayers (object *op, const object *god) |
| const char * | determine_god (object *op) |
| archetype * | determine_holy_arch (const object *god, const char *type) |
| const object * | find_god (const char *name) |
| static int | follower_has_similar_item (object *op, object *item) |
| static int | follower_level_to_enchantments (int level, int difficulty) |
| static void | follower_remove_given_items (object *pl, object *op, const object *god) |
| static const char * | get_god_for_race (const char *race) |
| static int | god_enchants_weapon (object *op, const object *god, object *tr, object *skill) |
| static int | god_examines_item (const object *god, object *item) |
| static int | god_examines_priest (object *op, const object *god) |
| static int | god_gives_present (object *op, const object *god, treasure *tr) |
| static void | god_intervention (object *op, const object *god, object *skill) |
| static int | god_removes_curse (object *op, int remove_damnation) |
| static int | improve_weapon_magic (object *op, object *tr, object *weapon, object *skill) |
| static int | lookup_god_by_name (const char *name) |
| void | pray_at_altar (object *pl, object *altar, object *skill) |
| static int | same_string (const char *s1, const char *s2) |
| static void | stop_using_item (object *op, int type, int number) |
| int | tailor_god_spell (object *spellop, object *caster) |
| static void | update_priest_flag (const object *god, object *exp_ob, uint32 flag) |
| static int | worship_forbids_use (object *op, object *exp_obj, uint32 flag, const char *string) |
All this functions handle gods: give presents, punish, and so on.
Oct 3, 1995 - Code laid down for initial gods, priest alignment, and monster race initialization. b.t.
Sept 1996 - moved code over to object -oriented gods -b.t.
Definition in file gods.c.
This function is called whenever a player has switched to a new god. It handles basically all the stat changes that happen to the player, including the removal of godgiven items (from the former cult).
| op | player switching cults. |
| new_god | new god to worship. |
Definition at line 502 of file gods.c.
References add_string(), ARMOUR, ATNR_COLD, ATNR_ELECTRICITY, ATNR_FIRE, ATNR_POISON, obj::below, BOOK, BOOTS, cast_magic_storm(), change_abil(), check_special_prayers(), CLEAR_FLAG, archt::clone, obj::contr, create_archetype(), determine_god(), draw_ext_info_format(), EXPERIENCE, find_god(), FLAG_APPLIED, FLAG_BLIND, FLAG_MAKE_INVIS, FLAG_REFL_MISSILE, FLAG_REFL_SPELL, FLAG_SEE_IN_DARK, FLAG_STARTEQUIP, FLAG_STEALTH, FLAG_UNDEAD, FLAG_USE_ARMOUR, FLAG_USE_SHIELD, FLAG_USE_WEAPON, FLAG_XRAYS, follower_remove_given_items(), liv::food, FORCE, free_object(), free_string(), get_archetype_by_type_subtype(), give_skill_by_name(), GLOVES, god_gives_present(), liv::grace, HELMET, liv::hp, obj::inv, obj::invisible, treasurestruct::item, treasureliststruct::items, obj::last_eat, obj::last_grace, obj::last_heal, obj::last_sp, obj::level, link_player_skills(), LOOSE_MANA, liv::luck, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, NDI_NAVY, NDI_UNIQUE, treasurestruct::next, NROFATTACKS, obj::path_attuned, obj::path_denied, obj::path_repelled, player_unready_range_ob(), PREFER_LOW, present_in_ob_by_name(), QUERY_FLAG, obj::race, random_roll(), obj::randomitems, remove_ob(), obj::resist, SET_FLAG, SHIELD, SK_PRAYING, SKILL, obj::slaying, liv::sp, SPELL, SPELLBOOK, obj::stats, stop_using_item(), obj::subtype, obj::title, obj::type, update_priest_flag(), WEAPON, and worship_forbids_use().
Referenced by command_setgod(), and pray_at_altar().
Here is the call graph for this function:
Here is the caller graph for this function:Removes special prayers given by a god.
| op | player to remove prayers from. |
| god | god we're removing the prayers. |
Definition at line 431 of file gods.c.
References obj::below, archt::clone, obj::contr, do_forget_spell(), draw_ext_info_format(), FLAG_STARTEQUIP, free_object(), obj::inv, treasurestruct::item, treasureliststruct::items, llevError, LOG(), MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, NDI_NAVY, NDI_UNIQUE, treasurestruct::next, player_unready_range_ob(), QUERY_FLAG, obj::randomitems, remove_ob(), SPELL, and obj::type.
Referenced by become_follower(), and god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:| const char* determine_god | ( | object * | op | ) |
Determines if op worships a god. Returns the godname if they do or "none" if they have no god. In the case of an NPC, if they have no god, we try and guess who they should worship based on their race. If that fails we give them a random one.
| op | object to get name of. |
Definition at line 118 of file gods.c.
References add_string(), obj::below, first_god, FLAG_ALIVE, get_god_for_race(), glnk::id, obj::inv, lookup_god_by_name(), glnk::name, glnk::next, PLAYER, QUERY_FLAG, obj::race, rndm(), SK_PRAYING, SKILL, SPELL, SPELL_EFFECT, obj::subtype, obj::title, and obj::type.
Referenced by become_follower(), cast_bless(), cast_consecrate(), cast_curse(), cast_detection(), cast_smite_spell(), cast_spell(), cfapi_object_get_property(), hit_player(), hit_with_one_attacktype(), kill_player(), mood_change(), perceive_self(), pray_at_altar(), prayer_failure(), show_skills(), summon_golem(), summon_object(), and tailor_god_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Determines the archetype for holy servant and god avatar.
Possible monsters are stored as invisible books in god's inventory, one having the right name is selected randomly.
| god | god for which we want something. |
| type | what the summon type is. Must be a shared string. |
Definition at line 782 of file gods.c.
References BOOK, archt::clone, obj::invisible, treasurestruct::item, treasureliststruct::items, llevError, LOG(), obj::name, treasurestruct::next, obj::other_arch, obj::randomitems, rndm(), and obj::type.
Referenced by summon_golem().
Here is the call graph for this function:
Here is the caller graph for this function:| const object* find_god | ( | const char * | name | ) |
Returns pointer to specified god's object through pntr_to_god_obj().
| name | god's name. |
Definition at line 92 of file gods.c.
References first_god, glnk::name, glnk::next, and pntr_to_god_obj().
Referenced by become_follower(), cast_bless(), cast_consecrate(), cast_curse(), cast_detection(), cast_smite_spell(), command_setgod(), hit_player(), hit_with_one_attacktype(), mood_change(), perceive_self(), pray_at_altar(), summon_golem(), summon_object(), and tailor_god_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Checks for any occurrence of the given 'item' in the inventory of 'op' (recursively).
| op | object to check. |
| item | object to check for. |
Definition at line 252 of file gods.c.
References obj::below, obj::inv, obj::msg, obj::name, same_string(), obj::slaying, obj::title, and obj::type.
Referenced by god_gives_present().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Converts a level and difficulty to a magic/enchantment value for eg weapons.
| level | level |
| difficulty | difficulty. Must be 1 or more. |
Definition at line 866 of file gods.c.
References llevError, and LOG().
Referenced by improve_weapon_magic().
Here is the call graph for this function:
Here is the caller graph for this function:Removes from a player's inventory all items bestowed by a particular god. Intended mainly for use in punishing characters for switching gods.
| pl | the player object |
| op | the object to be searched for items |
| god | the god whose objects to remove |
Definition at line 211 of file gods.c.
References obj::below, draw_ext_info_format(), free_object(), get_ob_key_value(), HUGE_BUF, obj::inv, MSG_TYPE_ITEM, MSG_TYPE_ITEM_REMOVE, obj::name, NDI_UNIQUE, obj::nrof, query_short_name(), and remove_ob().
Referenced by become_follower().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
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
| race | race we're getting the god of. |
Definition at line 1367 of file gods.c.
References glnk::arch, archt::clone, first_god, glnk::name, glnk::next, obj::race, and strcasecmp().
Referenced by determine_god().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
God wants to enchant weapon. Affected weapon is the applied one (weapon or bow). It's checked to make sure it isn't a weapon for another god. If all is all right, update weapon with attacktype, slaying and such.
| op | player |
| god | god enchanting weapon. |
| tr | treasure list item for enchanting weapon, contains the enchantment level. |
| skill | praying skill of op. |
Definition at line 930 of file gods.c.
References add_string(), AT_PHYSICAL, obj::attacktype, obj::below, BOW, draw_ext_info(), draw_ext_info_format(), esrv_update_item(), liv::exp, find_skill_by_number(), FLAG_APPLIED, get_ob_key_value(), god_examines_item(), improve_weapon_magic(), obj::inv, obj::item_power, llevError, LOG(), MAX_BUF, MAX_WEAPON_ITEM_POWER, MSG_TYPE_ITEM, MSG_TYPE_ITEM_CHANGE, MSG_TYPE_ITEM_INFO, obj::name, NDI_UNIQUE, Settings::personalized_blessings, PLAYER, QUERY_FLAG, set_ob_key_value(), settings, SK_PRAYING, obj::slaying, snprintf(), obj::stats, obj::title, TRUE, obj::type, UPD_NAME, and WEAPON.
Referenced by god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:God checks item the player is using. If you are using the item of an enemy god, it can be bad...-b.t.
| god | god checking. |
| item | item to check. |
| -1 | item is bad. |
| 0 | item is neutral. |
| 1 | item is good. |
Definition at line 1326 of file gods.c.
References draw_ext_info_format(), obj::env, MAX_BUF, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, NDI_NAVY, NDI_UNIQUE, query_name(), snprintf(), and obj::title.
Referenced by god_enchants_weapon(), and god_examines_priest().
Here is the call graph for this function:
Here is the caller graph for this function:Checks and maybe punishes someone praying. All applied items are examined, if player is using more items of other gods, s/he loses experience in praying or general experience if no praying.
| op | player the god examines. |
| god | god examining the player. |
Definition at line 1275 of file gods.c.
References obj::below, cast_magic_storm(), change_exp(), create_archetype(), draw_ext_info_format(), FLAG_APPLIED, god_examines_item(), obj::inv, obj::level, LOOSE_MANA, obj::magic, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, NDI_NAVY, NDI_UNIQUE, PREFER_LOW, QUERY_FLAG, random_roll(), SK_PRAYING, SK_SUBTRACT_SKILL_EXP, and SKILL.
Referenced by god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:God gives an item to the player. Inform player of the present.
| op | who is getting the treasure. |
| god | god giving the present. |
| tr | object to give. Should be a single object on list. |
Mark what god gave it, so it can be taken vengefully later!
Definition at line 280 of file gods.c.
References arch_to_object(), archt::clone, draw_ext_info_format(), fix_generated_item(), follower_has_similar_item(), free_object2(), GT_ONLY_GOOD, HUGE_BUF, insert_ob_in_ob(), obj::inv, treasurestruct::item, MSG_TYPE_ITEM, MSG_TYPE_ITEM_ADD, obj::name, NDI_UNIQUE, query_short_name(), ROD, set_ob_key_value(), TRUE, obj::type, and WAND.
Referenced by become_follower(), and god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:Every once in a while the god will intervene to help the worshiper. Later, this fctn can be used to supply quests, etc for the priest. -b.t. called from pray_at_altar() currently.
| op | player praying. |
| god | god player is praying to. |
| skill | player's praying skill. |
Definition at line 1047 of file gods.c.
References ARCH_DEPLETION, BOOK, cast_change_ability(), cast_heal(), treasurestruct::chance, check_special_prayers(), check_spell_known(), archt::clone, create_archetype(), create_archetype_by_object_name(), create_treasure(), do_learn_spell(), draw_ext_info(), draw_ext_info_format(), find_archetype(), find_treasurelist(), fix_object(), free_object(), get_attr_value(), god_enchants_weapon(), god_examines_priest(), god_gives_present(), god_removes_curse(), liv::grace, GT_ONLY_GOOD, GT_STARTEQUIP, GT_UPDATE_INV, HOLY_POSSESSION, liv::hp, obj::invisible, treasurestruct::item, treasureliststruct::items, obj::level, llevError, LOG(), liv::maxgrace, liv::maxhp, liv::maxsp, obj::msg, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_END, MSG_TYPE_ITEM, MSG_TYPE_ITEM_ADD, MSG_TYPE_SKILL, MSG_TYPE_SKILL_PRAY, treasurestruct::name, obj::name, NDI_UNIQUE, NDI_WHITE, treasurestruct::next, NUM_STATS, PREFER_HIGH, present_arch_in_ob(), random_roll(), obj::randomitems, remove_ob(), restore_msg, obj::slaying, liv::sp, SPELL, obj::stats, and obj::type.
Referenced by pray_at_altar().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
God helps player by removing curse and/or damnation.
| op | player to help. |
| remove_damnation | if set, also removes damned items. |
Definition at line 832 of file gods.c.
References obj::below, CLEAR_FLAG, draw_ext_info(), esrv_update_item(), FLAG_CURSED, FLAG_DAMNED, FLAG_KNOWN_CURSED, obj::inv, obj::invisible, MSG_TYPE_SKILL, MSG_TYPE_SKILL_PRAY, NDI_UNIQUE, PLAYER, QUERY_FLAG, obj::type, and UPD_FLAGS.
Referenced by god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Utility function for improving the magic on a weapon. Affected weapon is the applied one (weapon or bow). This utility function improves the weapon magic on a weapon being enchanted by a god. This was necessary because the same block of the code was being called from two places in the god_enchants_weapon(...) function.
| op | player |
| tr | treasure list item for enchanting weapon, contains the enchantment level. |
| weapon | weapon being modified |
| skill | praying skill of op. |
Definition at line 897 of file gods.c.
References draw_ext_info(), esrv_update_item(), follower_level_to_enchantments(), obj::item_power, obj::level, obj::magic, MSG_TYPE_ITEM, MSG_TYPE_ITEM_CHANGE, NDI_UNIQUE, PLAYER, obj::type, and UPD_NAME.
Referenced by god_enchants_weapon().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Returns the id of specified god.
| name | god to search for. |
Definition at line 66 of file gods.c.
References first_god, glnk::id, MIN, glnk::name, and glnk::next.
Referenced by determine_god().
Here is the caller graph for this function:Player prays at altar. Checks for god changing, divine intervention, and so on.
| pl | player praying. |
| altar | altar player's praying on. Doesn't need to be consecrated. |
| skill | praying skill. |
Definition at line 325 of file gods.c.
References absdir(), become_follower(), cast_magic_storm(), change_exp(), archt::clone, create_archetype(), determine_god(), draw_ext_info(), draw_ext_info_format(), EVENT_APPLY, execute_event(), liv::exp, obj::facing, find_god(), god_intervention(), liv::grace, obj::level, LOOSE_MANA, liv::luck, MAX, liv::maxgrace, move_player(), MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, archt::name, NDI_NAVY, NDI_UNIQUE, obj::other_arch, PREFER_LOW, random_roll(), random_roll64(), SCRIPT_FIX_ALL, SK_SUBTRACT_SKILL_EXP, obj::skill, obj::stats, and liv::Wis.
Referenced by pray().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Compares 2 strings.
| s1 | |
| s2 | strings to compare. |
Definition at line 183 of file gods.c.
Referenced by follower_has_similar_item().
Here is the caller graph for this function:
|
static |
Unapplies up to number worth of items of type type, ignoring curse status. This is used when the player gets forbidden to use eg weapons.
| op | player we're considering. |
| type | item type to remove. |
| number | maximum number of items to unapply. |
Definition at line 728 of file gods.c.
References AP_IGNORE_CURSE, AP_UNAPPLY, apply_special(), obj::below, FLAG_APPLIED, obj::inv, QUERY_FLAG, and obj::type.
Referenced by become_follower().
Here is the call graph for this function:
Here is the caller graph for this function:Changes the attributes of cone, smite, and ball spells as needed by the code.
| spellop | spell object to change. |
| caster | what is casting spellop (player, spell, ...). |
Definition at line 1394 of file gods.c.
References add_string(), AT_GODPOWER, AT_HOLYWORD, obj::attacktype, determine_god(), draw_ext_info(), find_god(), FREE_AND_COPY, free_object(), free_string(), get_owner(), llevError, LOG(), MAX_BUF, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, obj::name, obj::name_pl, NDI_UNIQUE, obj::race, obj::slaying, snprintf(), SPELL, SPELL_EFFECT, obj::title, and obj::type.
Referenced by cast_cone(), cast_smite_spell(), explode_bullet(), fire_arch_from_position(), and fire_swarm().
Here is the call graph for this function:
Here is the caller graph for this function:If the god does/doesnt have this flag, we give/remove it from the experience object if it doesnt/does already exist.
| god | god object. |
| exp_ob | player's praying skill object. |
| flag | flag to consider. |
Definition at line 750 of file gods.c.
References CLEAR_FLAG, QUERY_FLAG, and SET_FLAG.
Referenced by become_follower(), and worship_forbids_use().
Here is the caller graph for this function:
|
static |
Forbids or let player use something item type.
| op | player. |
| exp_obj | praying skill. |
| flag | FLAG_xxx to check against. |
| string | what flag corresponds to ("weapons", "shield", ...). |
Definition at line 696 of file gods.c.
References obj::arch, archt::clone, draw_ext_info_format(), MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_GOD, NDI_UNIQUE, QUERY_FLAG, and update_priest_flag().
Referenced by become_follower().
Here is the call graph for this function:
Here is the caller graph for this function: