Crossfire Server, Trunk
|
#include <global.h>
#include <ob_methods.h>
#include <ob_types.h>
#include <sounds.h>
#include <sproto.h>
#include <stdlib.h>
#include <string.h>
#include "living.h"
Go to the source code of this file.
Functions | |
void | init_type_spellbook (void) |
static method_ret | spellbook_type_apply (object *book, object *applier, int aflags) |
static void | spellbook_type_describe (const object *book, const object *observer, const int use_media_tags, char *buf, const size_t size) |
static void | stringbuffer_append_spelldesc (StringBuffer *sb, const object *spell) |
Implimentation of spellbooks.
Definition in file spellbook.c.
void init_type_spellbook | ( | void | ) |
Initializer for the SPELLBOOK object type.
Definition at line 46 of file spellbook.c.
References register_apply(), register_describe(), SPELLBOOK, spellbook_type_apply(), and spellbook_type_describe().
Referenced by register_all_ob_types().
|
static |
Applies a spellbook. Checks whether player has knowledge of required skill, doesn't already know the spell, stuff like that. Random learning failure too.
book | Spellbook to apply. |
applier | object attempting to apply the spellbook. Should be a player. |
aflags | special flags (always apply/unapply). |
handle failure differently for praying/magic.
split into multiple functions
Definition at line 156 of file spellbook.c.
References calc_skill_exp(), change_exp(), check_spell_known(), obj::contr, die_roll(), do_forget_spell(), do_learn_spell(), draw_ext_info(), draw_ext_info_format(), obj::env, esrv_update_item(), find_skill_by_name(), FLAG_BLESSED, FLAG_BLIND, FLAG_CONFUSED, FLAG_CURSED, FLAG_DAMNED, FLAG_IDENTIFIED, FLAG_STARTEQUIP, FLAG_WIZ, get_learn_spell(), get_readable_message_type(), liv::grace, identify(), liv::Int, obj::inv, obj::level, llevError, LOG(), MAX, MAX_BUF, readable_message_type::message_subtype, readable_message_type::message_type, METHOD_OK, obj::msg, MSG_TYPE_APPLY, MSG_TYPE_APPLY_ERROR, MSG_TYPE_APPLY_FAILURE, MSG_TYPE_APPLY_SUCCESS, MSG_TYPE_SPELL, MSG_TYPE_SPELL_INFO, give::name, obj::name, NDI_BLUE, NDI_NAVY, NDI_UNIQUE, object_decrease_nrof_by_one, play_sound_player_only(), PLAYER, PREFER_LOW, QUERY_FLAG, query_name(), query_short_name(), random_roll(), rndm(), scroll_failure(), settings, obj::skill, pl::socket, SOUND_TYPE_SPELL, liv::sp, Settings::spell_failure_effects, obj::stats, stringbuffer_append_spelldesc(), stringbuffer_append_string(), stringbuffer_finish(), stringbuffer_new(), stringbuffer_trim_whitespace(), TRUE, obj::type, UPD_FLAGS, UPD_NAME, socket_struct::update_look, nlohmann::detail::void(), and liv::Wis.
Referenced by init_type_spellbook().
|
static |
Describe a spellbook.
If identified, displays the level and description of the spell inside it.
book | Spellbook to describe |
observer | Player examining the spellbook |
use_media_tags | True if we should use mediatags in the output |
buf | Output buffer to append description to |
size | Total output buffer size |
Definition at line 103 of file spellbook.c.
References buf, common_ob_describe(), obj::inv, is_identified(), query_name(), safe_strcat(), stringbuffer_append_spelldesc(), stringbuffer_append_string(), stringbuffer_finish(), and stringbuffer_new().
Referenced by init_type_spellbook().
|
static |
Append a terse description of the spell's name, level, discipline, and paths to a stringbuffer. What comes out is something like: "medium fireball (a third level pyromancy) (paths: Fire)" this is used in both spellbook_type_describe() to generate the one-line description for a spellbook, and in spellbook_type_apply to summarize what the spellbook contains if you don't ID it until you start reading it.
sb | The StringBuffer to append to |
spell | The spell to describe |
Definition at line 64 of file spellbook.c.
References describe_spellpath_attenuation(), liv::grace, obj::level, obj::path_attuned, obj::skill, obj::stats, stringbuffer_append_printf(), and stringbuffer_append_string().
Referenced by spellbook_type_apply(), and spellbook_type_describe().