Crossfire Server, Trunk  R20576
spellbook.c File Reference

Implimentation of spellbooks. More...

#include <global.h>
#include <ob_methods.h>
#include <ob_types.h>
#include <sounds.h>
#include <sproto.h>
#include "living.h"
Include dependency graph for spellbook.c:

Go to the source code of this file.


void init_type_spellbook (void)
 Initializer for the SPELLBOOK object type. More...
static method_ret spellbook_type_apply (ob_methods *context, object *book, object *applier, int aflags)
 Applies a spellbook. More...

Detailed Description

Implimentation of spellbooks.

Definition in file spellbook.c.

Function Documentation

◆ init_type_spellbook()

void init_type_spellbook ( void  )

Initializer for the SPELLBOOK object type.

Definition at line 41 of file spellbook.c.

References register_apply(), SPELLBOOK, and spellbook_type_apply().

Referenced by register_all_ob_types().

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

◆ spellbook_type_apply()

static method_ret spellbook_type_apply ( ob_methods context,
object book,
object applier,
int  aflags 

Applies a spellbook.

Checks whether player has knowledge of required skill, doesn't already know the spell, stuff like that. Random learning failure too.

contextmethod context.
bookSpellbook to apply.
applierobject attempting to apply the spellbook. Should be a player.
aflagsspecial flags (always apply/unapply).
METHOD_OK always.

handle failure differently for praying/magic.

split into multiple functions

Definition at line 66 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_levelnumber(), 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, obj::name, NDI_NAVY, NDI_UNIQUE, ob_describe(), object_decrease_nrof_by_one, play_sound_player_only(), PLAYER, PREFER_LOW, QUERY_FLAG, query_name(), random_roll(), rndm(), scroll_failure(), settings, obj::skill, pl::socket, SOUND_TYPE_SPELL, liv::sp, Settings::spell_failure_effects, obj::stats, TRUE, obj::type, UPD_FLAGS, UPD_NAME, socket_struct::update_look, and liv::Wis.

Referenced by init_type_spellbook().

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