|
Crossfire Server, Trunk
|
#include "global.h"#include <assert.h>#include <ctype.h>#include <stdlib.h>#include <string.h>#include "living.h"#include "object.h"#include "shop.h"#include "sounds.h"#include "spells.h"#include "sproto.h"#include "assets.h"
Include dependency graph for spell_effect.c:Go to the source code of this file.
Macros | |
| #define | _GNU_SOURCE |
| #define | LARGE_NUGGET "largenugget" |
| #define | SMALL_NUGGET "smallnugget" |
Functions | |
| int | alchemy (object *op, object *caster, object *spell_ob) |
| static void | alchemy_object (float value_adj, object *obj, int *small_nuggets, int *large_nuggets, int *weight) |
| int | animate_weapon (object *op, object *caster, object *spell, int dir) |
| int | cast_bless (object *op, object *caster, object *spell_ob, int dir) |
| int | cast_change_ability (object *op, object *caster, object *spell_ob, int dir, int silent) |
| int | cast_change_map_lightlevel (object *op, object *spell) |
| int | cast_consecrate (object *op, object *caster, object *spell) |
| int | cast_create_food (object *op, object *caster, object *spell_ob, int dir, const char *stringarg) |
| int | cast_create_missile (object *op, object *caster, object *spell, int dir, const char *stringarg) |
| int | cast_create_town_portal (object *op, object *caster, object *spell) |
| int | cast_detection (object *op, object *caster, object *spell) |
| int | cast_earth_to_dust (object *op, object *caster, object *spell_ob) |
| int | cast_heal (object *op, object *caster, object *spell, int dir) |
| int | cast_identify (object *op, object *caster, object *spell) |
| int | cast_invisible (object *op, object *caster, object *spell_ob) |
| int | cast_item_curse_or_curse (object *op, object *spell_ob) |
| void | cast_magic_storm (object *op, object *tmp, int lvl) |
| int | cast_polymorph (object *op, object *caster, object *spell_ob, int dir) |
| int | cast_transfer (object *op, object *caster, object *spell, int dir) |
| int | cast_wonder (object *op, object *caster, int dir, object *spell_ob) |
| int | cast_word_of_recall (object *op, object *caster, object *spell_ob) |
| static void | charge_mana_effect (object *victim, int caster_level) |
| void | counterspell (object *op, int dir) |
| int | create_aura (object *op, object *caster, object *spell) |
| int | dimension_door (object *op, object *caster, object *spob, int dir) |
| static void | food_each (archetype *arch) |
| int | magic_wall (object *op, object *caster, int dir, object *spell_ob) |
| int | makes_invisible_to (object *pl, object *mon) |
| int | perceive_self (object *op) |
| static void | place_alchemy_objects (object *op, mapstruct *m, int small_nuggets, int large_nuggets, int x, int y) |
| void | polymorph (object *op, object *who, int level) |
| static void | polymorph_item (object *who, object *op, int level) |
| static void | polymorph_living (object *op, int level) |
| static void | polymorph_melt (object *who, object *op) |
| int | probe (object *op, object *caster, object *spell_ob, int dir, int level) |
| int | recharge (object *op, object *caster, object *spell_ob) |
| int | remove_curse (object *op, object *caster, object *spell) |
| static int | town_portal_destroy_existing (object *op, object *spell) |
| static object * | town_portal_find_force (object *op, object *spell) |
| int | write_mark (object *op, object *spell, const char *msg) |
Variables | |
| static archetype * | food_choice |
| static int | food_value_choice |
| static const char *const | no_gain_msgs [NUM_STATS] |
Various spell effects, non attacks.
Definition in file spell_effect.c.
| #define _GNU_SOURCE |
Definition at line 19 of file spell_effect.c.
| #define LARGE_NUGGET "largenugget" |
Definition at line 2183 of file spell_effect.c.
| #define SMALL_NUGGET "smallnugget" |
Definition at line 2182 of file spell_effect.c.
Change items to gold nuggets. Only works for players.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| 0 | op isn't a player. |
| 1 | op is a player. |
Definition at line 2309 of file spell_effect.c.
References alchemy_object(), obj::duration, FLAG_ALIVE, FLAG_IS_CAULDRON, FLAG_NO_PICK, FOR_INV_FINISH, FOR_INV_PREPARE, FOR_MAP_FINISH, FOR_MAP_PREPARE, get_map_flags(), GET_MAP_MOVE_BLOCK, MOVE_WALK, give::op, P_NO_MAGIC, P_OUT_OF_MAP, place_alchemy_objects(), PLAYER, QUERY_FLAG, SP_level_dam_adjust(), SP_level_duration_adjust(), Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Compute how many nuggets an object is worth, and remove it.
| value_adj | how much to adjust the cost of obj. | |
| obj | object to convert. | |
| [out] | small_nuggets | how many small nuggets obj gives. |
| [out] | large_nuggets | how many large nuggets obj gives. |
| [out] | weight | the weight of the object. |
< Value of nuggets.
Definition at line 2199 of file spell_effect.c.
References archt::clone, disinfect::count, FLAG_UNPAID, FREE_OBJ_NO_DESTROY_CALLBACK, GEM, LARGE_NUGGET, MONEY, object_free(), object_remove(), price_base(), QUERY_FLAG, rndm(), SMALL_NUGGET, try_find_archetype(), obj::type, autojail::value, obj::value, and obj::weight.
Referenced by alchemy().
Here is the call graph for this function:
Here is the caller graph for this function:Generalization of staff_to_snake(). Makes a golem out of the caster's weapon. The golem is based on the archetype specified, modified by the caster's level and the attributes of the weapon. The weapon is inserted in the golem's inventory so that it falls to the ground when the golem dies. This code was very odd - code early on would only let players use the spell, yet the code was full of player checks. I've presumed that the code that only let players use it was correct, and removed all the other player checks. MSW 2003-01-06
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| dir | casting direction. |
| 0 | spell failure. |
| 1 | spell was successful. |
Definition at line 3068 of file spell_effect.c.
References disinfect::a, add_friendly_object(), add_string(), obj::anim_speed, obj::animation, obj::arch, arch_to_object(), AT_PHYSICAL, ATNR_BLIND, ATNR_CONFUSION, ATNR_DEATH, ATNR_DEPLETE, ATNR_FEAR, ATNR_PARALYZE, ATNR_PHYSICAL, ATNR_POISON, ATNR_SLOW, ATNR_TURN_UNDEAD, buf, caster_level(), CLEAR_FLAG, archt::clone, liv::Con, liv::dam, liv::Dex, draw_ext_info(), draw_ext_info_format(), obj::duration, esrv_update_item(), obj::face, find_marked_object(), fix_object(), FLAG_ANIMATE, FLAG_APPLIED, FLAG_FRIENDLY, FLAG_MONSTER, FLAG_REMOVED, FLAG_UNPAID, FLAG_USE_WEAPON, free_string(), freearr_x, freearr_y, get_map_flags(), GET_MAP_MOVE_BLOCK, GOLEM, make_face_from_files::int, obj::last_anim, llevError, LOG(), m, obj::magic, MAX, MAX_BUF, liv::maxgrace, obj::move_type, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, obj::name, archt::name, name_to_material(), NDI_BLACK, NDI_UNIQUE, obj::nrof, NROFATTACKS, object_find_free_spot(), object_insert_in_map_at(), object_insert_in_ob(), object_remove(), object_set_owner(), object_split(), object_update_speed(), give::op, obj::other_arch, P_OUT_OF_MAP, pets_control_golem(), PLAYER, QUERY_FLAG, query_name(), obj::race, range_golem, _materialtype::save, SET_FLAG, set_spell_skill(), liv::sp, SP_level_dam_adjust(), SP_level_duration_adjust(), SP_level_range_adjust(), obj::state, obj::stats, liv::Str, Ice::tmp, obj::type, UPD_NROF, WEAPON, diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Improve statistics of some living object.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| dir | casting direction. |
| 0 | spell failed. |
| 1 | spell was successful. |
Definition at line 2057 of file spell_effect.c.
References liv::ac, add_refcount(), add_string(), arch_to_object(), AT_PHYSICAL, ATNR_GODPOWER, obj::attacktype, change_abil(), create_archetype(), determine_god(), draw_ext_info(), draw_ext_info_format(), obj::duration, find_god(), find_target_for_friendly_spell(), FLAG_APPLIED, FOR_INV_FINISH, FOR_INV_PREPARE, dragon_attune::force, FORCE, FORCE_CHANGE_ABILITY, FORCE_NAME, free_string(), INS_ON_TOP, MIN, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, MSG_TYPE_SPELL_TARGET, obj::name, NDI_UNIQUE, NROFATTACKS, object_insert_in_map_at(), object_insert_in_ob(), give::op, obj::other_arch, obj::path_attuned, obj::race, obj::resist, SET_FLAG, obj::slaying, SP_level_duration_adjust(), obj::stats, store_spell_expiry(), Ice::tmp, and liv::wc.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Cast some stat-improving spell.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| dir | casting direction. |
| silent | if non zero, don't say when the spell is already is effect. |
| 0 | spell failed. |
| 1 | spell was successful. |
Definition at line 1909 of file spell_effect.c.
References liv::ac, add_refcount(), arch_to_object(), obj::attacktype, change_abil(), CLEAR_FLAG, create_archetype(), draw_ext_info(), draw_ext_info_format(), obj::duration, liv::exp, find_target_for_friendly_spell(), FLAG_APPLIED, FLAG_NO_FIX_PLAYER, FLAG_SEE_IN_DARK, FLAG_XRAYS, FOR_INV_FINISH, FOR_INV_PREPARE, dragon_attune::force, FORCE, FORCE_CHANGE_ABILITY, FORCE_NAME, free_string(), get_attr_value(), liv::hp, INS_ON_TOP, obj::move_type, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, obj::name, NDI_UNIQUE, no_gain_msgs, NROFATTACKS, NUM_STATS, object_insert_in_map_at(), object_insert_in_ob(), give::op, obj::other_arch, PLAYER, QUERY_FLAG, obj::race, obj::resist, rndm(), set_attr_value(), SET_FLAG, SP_level_dam_adjust(), SP_level_duration_adjust(), obj::stats, store_spell_expiry(), Ice::tmp, and liv::wc.
Referenced by cast_spell(), and god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:This changes the light level for the entire map.
| op | who is casting. |
| spell | actual spell object. |
| 0 | light not affected. |
| 1 | light changed. |
Definition at line 3298 of file spell_effect.c.
References change_map_light(), liv::dam, draw_ext_info(), MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, NDI_UNIQUE, give::op, and obj::stats.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:A spell to make an altar your god's.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| 0 | no consecration happened. |
| 1 | an altar waas consecrated. |
Definition at line 2990 of file spell_effect.c.
References arch_to_object(), buf, caster_level(), determine_god(), draw_ext_info(), draw_ext_info_format(), find_god(), FLAG_IS_BUILDABLE, FLAG_IS_FLOOR, FOR_BELOW_FINISH, FOR_BELOW_PREPARE, HOLY_ALTAR, INS_BELOW_ORIGINATOR, obj::level, llevError, LOG(), MAX_BUF, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, obj::name, NDI_UNIQUE, object_insert_in_map_at(), object_remove(), give::op, QUERY_FLAG, SET_FLAG, Ice::tmp, tolower, and try_find_archetype().
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:| int cast_create_food | ( | object * | op, |
| object * | caster, | ||
| object * | spell_ob, | ||
| int | dir, | ||
| const char * | stringarg | ||
| ) |
Create food. Allows the choice of what sort of food object to make. If stringarg is NULL, it will create food dependent on level –PeterM
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| dir | casting direction. |
| stringarg | optional parameter specifying what kind of items to create. |
| 0 | no food created. |
| food | was created. |
Definition at line 640 of file spell_effect.c.
References archetypes_for_each(), cast_create_obj(), archt::clone, draw_ext_info(), DRINK, find_archetype_by_object_type_name(), liv::food, FOOD, food_choice, food_each(), food_value_choice, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, NDI_UNIQUE, obj::nrof, object_copy(), object_new(), give::op, SP_level_duration_adjust(), obj::stats, and obj::value.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:| int cast_create_missile | ( | object * | op, |
| object * | caster, | ||
| object * | spell, | ||
| int | dir, | ||
| const char * | stringarg | ||
| ) |
Create a missile (nonmagic - magic +4). Will either create bolts or arrows based on whether a crossbow or bow is equiped. If neither, it defaults to arrows. Sets the plus based on the casters level. It is also settable with the invoke command. If the caster attempts to create missiles with too great a plus, the default is used. The # of arrows created also goes up with level, so if a 30th level mage wants LOTS of arrows, and doesn't care what the plus is he could create nonnmagic arrows, or even -1, etc...
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| dir | casting direction. |
| stringarg | optional parameter specifying what kind of items to create. |
| 0 | no missile created. |
| missiles | were created. |
Definition at line 503 of file spell_effect.c.
References BOW, cast_create_obj(), obj::count, create_archetype(), liv::dam, draw_ext_info_format(), obj::duration, find_artifactlist(), FLAG_IDENTIFIED, FREE_OBJ_NO_DESTROY_CALLBACK, give_artifact_abilities(), artifactstruct::item, artifactliststruct::items, llevDebug, LOG(), obj::magic, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, obj::name, NDI_UNIQUE, artifactstruct::next, obj::nrof, object_find_by_type_applied(), object_free(), object_was_destroyed, give::op, pick_up(), PLAYER, SET_FLAG, obj::slaying, SP_level_dam_adjust(), SP_level_duration_adjust(), obj::stats, strcasecmp(), CFweardisguise::tag, Ice::tmp, try_find_archetype(), obj::type, and obj::value.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This function cast the spell of town portal for op.
The spell operates in two passes. During the first one a place is marked as a destination for the portal. During the second one, 2 portals are created, one in the position the player cast it and one in the destination place. The portal are synchronized and 2 forces are inserted in the player to destruct the portal next time player creates a new portal pair. This spell has a side effect that it allows people to meet each other in a permanent, private, apartments by making a town portal from it to the town or another public place. So, check if the map is unique and if so return an error
Code by Tchize (david.delbecq@usa.net)
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| 0 | spell was insuccessful for some reason. |
| 1 | spell worked. |
Definition at line 1250 of file spell_effect.c.
References add_string(), ARCH_PORTAL_FAILED, cast_create_obj(), caster_level(), create_archetype(), Settings::create_home_portals, draw_ext_info(), EXIT_PATH, EXIT_X, EXIT_Y, dragon_attune::force, FREE_AND_COPY, mapdef::last_reset_time, llevError, Settings::localdir, LOG(), MAP_PLAYER_UNIQUE, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, obj::name, obj::name_pl, NDI_NAVY, NDI_UNIQUE, object_free(), object_insert_in_map_at(), object_insert_in_ob(), object_remove(), object_set_msg(), give::op, obj::race, ready_map_name(), settings, obj::slaying, Ice::tmp, town_portal_destroy_existing(), town_portal_find_force(), diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Detect magic or invisible items.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
Definition at line 2583 of file spell_effect.c.
References ALTAR, archininventory::arch, obj::arch, arch_to_object(), AT_MAGIC, BOOK, BUTTON, caster_level(), CF_HANDLE, CLEAR_FLAG, archt::clone, determine_god(), esrv_send_item(), EXIT, find_god(), FLAG_ANIMATE, FLAG_CURSED, FLAG_DAMNED, FLAG_IS_FLOOR, FLAG_KNOWN_CURSED, FLAG_KNOWN_MAGICAL, FLAG_MAKE_INVIS, FLAG_MONSTER, FLAG_WIZ, obj::flags, liv::food, FOR_INV_FINISH, FOR_INV_PREPARE, FOR_MAP_FINISH, FOR_MAP_PREPARE, FOR_OB_AND_BELOW_FINISH, FOR_OB_AND_BELOW_PREPARE, FREE_AND_COPY, GATE, get_map_flags(), obj::glow_radius, HEAD, HOLE, HOLY_ALTAR, obj::invisible, is_magical(), obj::last_anim, level, LOCKED_DOOR, m, obj::map_layer, obj::more, obj::move_allow, obj::move_block, obj::move_type, obj::name, object_create_arch(), object_insert_in_map_at(), object_update_speed(), give::op, obj::other_arch, P_OUT_OF_MAP, PLAYER, PREFER_HIGH, QUERY_FLAG, obj::race, random_roll(), obj::range, archt::reference_count, RUNE, SET_FLAG, SIGN, obj::slaying, SP_level_range_adjust(), SPECIAL_KEY, obj::speed, obj::speed_left, obj::stats, TELEPORTER, Ice::tmp, TRAPDOOR, TREASURE, TRIGGER_PEDESTAL, obj::type, WEAPON, obj::weight, diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Basically destroys earthwalls in the area.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| 0 | op isn't a player. |
| 1 | op is a player. |
Definition at line 864 of file spell_effect.c.
References AT_PHYSICAL, FLAG_TEAR_DOWN, FOR_MAP_FINISH, FOR_MAP_PREPARE, get_map_flags(), GET_MAP_MOVE_BLOCK, hit_player(), m, give::op, P_OUT_OF_MAP, PLAYER, QUERY_FLAG, obj::range, SP_level_range_adjust(), and Ice::tmp.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Heals something.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| dir | casting direction. |
Definition at line 1754 of file spell_effect.c.
References arch_present_in_ob(), arch_to_object(), AT_BLIND, AT_CONFUSION, AT_DISEASE, AT_POISON, obj::attacktype, cure_disease(), liv::dam, draw_ext_info(), obj::duration, find_target_for_friendly_spell(), liv::food, FORCE, liv::grace, liv::hp, INS_ON_TOP, obj::last_grace, obj::last_sp, obj::map, MAX_FOOD, liv::maxgrace, liv::maxhp, liv::maxsp, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_HEAL, NDI_UNIQUE, object_insert_in_map_at(), object_present_in_ob_by_name(), give::op, obj::other_arch, PLAYER, PREFER_HIGH, random_roll(), obj::skill, liv::sp, obj::stats, try_find_archetype(), obj::type, obj::x, and obj::y.
Referenced by cast_spell(), and god_intervention().
Here is the call graph for this function:
Here is the caller graph for this function:Identifies objects in the players inventory/on the ground.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| 0 | nothing was identified. |
| 1 | at least one object was identified. |
Definition at line 2508 of file spell_effect.c.
References liv::dam, draw_ext_info(), draw_ext_info_format(), esrv_update_item(), FOR_INV_FINISH, FOR_INV_PREPARE, FOR_MAP_FINISH, FOR_MAP_PREPARE, identify(), is_identified(), MAX_BUF, MSG_TYPE_ITEM, MSG_TYPE_ITEM_INFO, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, NDI_UNIQUE, ob_describe(), give::op, PLAYER, SP_level_dam_adjust(), spell_effect(), obj::stats, Ice::tmp, UPD_FLAGS, and UPD_NAME.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Makes the player or character invisible. Note the spells to 'stack', but perhaps in odd ways. the duration for all is cumulative. In terms of invis undead/normal invis, it is the last one cast that will determine if you are invisible to undead or normal monsters. For improved invis, if you cast it with a one of the others, you lose the improved part of it, and the above statement about undead/ normal applies.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| 0 | invisibility was already in action. |
| 1 | op is now invisible. |
Definition at line 812 of file spell_effect.c.
References add_refcount(), draw_ext_info(), obj::duration, FLAG_MAKE_INVIS, FREE_AND_CLEAR_STR, makes_invisible_to(), MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, NDI_UNIQUE, object_update(), give::op, PLAYER, QUERY_FLAG, obj::race, SP_level_duration_adjust(), and UP_OBJ_FACE.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This alters player's marked item's cursed or blessed status, based on the spell_ob's fields.
| op | player casting the spell. |
| spell_ob | spell itself. |
Definition at line 2457 of file spell_effect.c.
References CLEAR_FLAG, draw_ext_info(), draw_ext_info_format(), esrv_update_item(), find_marked_object(), FLAG_BLESSED, FLAG_CURSED, FLAG_IDENTIFIED, FLAG_KNOWN_BLESSED, FLAG_KNOWN_CURSED, FLAG_STARTEQUIP, HUGE_BUF, positioning_system::marked, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, give::name, NDI_UNIQUE, give::op, QUERY_FLAG, query_short_name(), SET_FLAG, and UPD_FLAGS.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This is really used mostly for spell fumbles and the like.
| op | what is casting this. |
| tmp | object to propagate. |
| lvl | how nasty should the propagation be. |
Definition at line 46 of file spell_effect.c.
References object_insert_in_map_at(), give::op, and Ice::tmp.
Referenced by alchemy_failure_effect(), become_follower(), god_examines_priest(), pray_at_altar(), prayer_failure(), and scroll_failure().
Here is the call graph for this function:
Here is the caller graph for this function:Polymorph spell casting.
| op | who is casting the spell. |
| caster | object used to cast spell. |
| spell_ob | spell itself. |
| dir | casting direction. 0 won't have any effect. |
Definition at line 435 of file spell_effect.c.
References arch_to_object(), caster_level(), FLAG_IS_FLOOR, liv::food, FOR_OB_AND_BELOW_FINISH, FOR_OB_AND_BELOW_PREPARE, freearr_x, freearr_y, get_map_flags(), GET_MAP_MOVE_BLOCK, GET_MAP_OB, level, m, MOVE_FLY_LOW, object_insert_in_map_at(), give::op, obj::other_arch, P_NO_MAGIC, P_OUT_OF_MAP, polymorph(), QUERY_FLAG, obj::range, SP_level_range_adjust(), obj::speed_left, obj::stats, Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This spell transfers sp from the player to another person. We let the target go above their normal maximum SP.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
| dir | casting direction. |
| 0 | no transfer happened. |
| 1 | transfer happened. |
Definition at line 2841 of file spell_effect.c.
References caster_level(), charge_mana_effect(), liv::dam, draw_ext_info(), FLAG_ALIVE, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), m, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, NDI_BLACK, give::op, P_IS_ALIVE, P_OUT_OF_MAP, QUERY_FLAG, liv::sp, SP_level_dam_adjust(), obj::stats, Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:wonder is really just a spell that will likely cast another spell.
| op | who is casting. |
| caster | what is casting. |
| dir | casting direction. |
| spell_ob | actual spell object. |
Definition at line 977 of file spell_effect.c.
References cast_cone(), cast_spell(), generate_treasure(), obj::level, llevError, LOG(), obj::name, give::op, obj::randomitems, rndm(), SP_WONDER, SPELL, obj::subtype, and obj::type.
Referenced by cast_spell(), and scroll_failure().
Here is the call graph for this function:
Here is the caller graph for this function:Word of recall causes the player to return 'home'. we put a force into the player object, so that there is a time delay effect.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | actual spell object. |
| 0 | op isn't a player. |
| 1 | word of recall initiated. |
Definition at line 915 of file spell_effect.c.
References add_string(), create_archetype(), draw_ext_info(), obj::duration, EXIT_PATH, EXIT_X, EXIT_Y, FORCE_NAME, llevError, LOG(), MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_SUCCESS, NDI_UNIQUE, object_find_by_type_subtype(), object_insert_in_ob(), object_update_speed(), give::op, PLAYER, SP_level_duration_adjust(), SP_WORD_OF_RECALL, obj::speed, obj::speed_left, SPELL_EFFECT, obj::subtype, obj::type, and nlohmann::detail::void().
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Checks if victim has overcharged mana, and if so does some fireball.
| victim | who may have overcharged. |
| caster_level | caster's (skill) level whose spell did cause the overcharge. |
Definition at line 2786 of file spell_effect.c.
References caster_level(), confuse_living(), create_archetype(), draw_ext_info(), EXPLODING_FIREBALL, MSG_TYPE_SPELL, MSG_TYPE_SPELL_TARGET, MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_SPELL, NDI_ORANGE, NDI_UNIQUE, object_insert_in_map_at(), PREFER_LOW, random_roll(), Ice::tmp, and reputation::victim.
Referenced by cast_transfer().
Here is the call graph for this function:
Here is the caller graph for this function:| void counterspell | ( | object * | op, |
| int | dir | ||
| ) |
Nullifies spell effects. Basically, if the object has a magic attacktype, this may nullify it.
| op | counterspell object. |
| dir | direction it was cast in. |
Definition at line 2914 of file spell_effect.c.
References AT_COUNTERSPELL, AT_MAGIC, obj::attacktype, FLAG_MONSTER, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), HEAD, liv::hp, obj::level, m, object_free(), object_get_owner(), object_remove(), give::op, P_OUT_OF_MAP, QUERY_FLAG, rndm(), RUNE, SPELL_EFFECT, obj::stats, Ice::tmp, and obj::type.
Referenced by hit_map().
Here is the call graph for this function:
Here is the caller graph for this function:Create an aura spell object and put it in the player's inventory. This is also used for elemental shields - the creation is the same just the 'move' code is different.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
Definition at line 3330 of file spell_effect.c.
References add_refcount(), arch_present_in_ob(), arch_to_object(), obj::attacktype, caster_level(), change_abil(), create_archetype(), liv::dam, draw_ext_info(), obj::duration, fix_object(), FLAG_APPLIED, dragon_attune::force, FORCE, FORCE_CHANGE_ABILITY, FORCE_NAME, free_string(), obj::level, MAX, MSG_TYPE_SPELL, MSG_TYPE_SPELL_SUCCESS, obj::name, NDI_UNIQUE, NROFATTACKS, object_insert_in_ob(), object_present_in_ob_by_name(), object_set_owner(), give::op, obj::other_arch, PLAYER, obj::range, obj::resist, SET_FLAG, set_spell_skill(), SP_level_dam_adjust(), SP_level_duration_adjust(), SP_level_range_adjust(), obj::speed, obj::stats, and store_spell_expiry().
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Teleport through some doors and space.
| op | who is casting. |
| caster | what is casting. |
| spob | actual spell object. |
| dir | casting direction. |
| 0 | spell failure. |
| 1 | spell was successful. |
Definition at line 1618 of file spell_effect.c.
References draw_ext_info(), FABS, freearr_x, freearr_y, get_map_flags(), GET_MAP_MOVE_BLOCK, m, map_newmap_cmd(), MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, NDI_UNIQUE, ob_apply(), OB_TYPE_MOVE_BLOCK, object_insert_in_map_at(), object_remove(), give::op, P_BLOCKSVIEW, P_IS_ALIVE, P_NO_MAGIC, P_OUT_OF_MAP, PLAYER, player_update_bg_music(), obj::range, SP_level_range_adjust(), and TRANSPORT.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 608 of file spell_effect.c.
References archininventory::arch, archt::clone, DRINK, liv::food, FOOD, food_choice, food_value_choice, and obj::stats.
Referenced by cast_create_food().
Here is the caller graph for this function:This creates magic walls. Really, it can create most any object, within some reason.
| op | who is casting. |
| caster | what is casting. |
| dir | casting direction. |
| spell_ob | actual spell object. |
| 0 | spell failed. |
| 1 | spell was successful. |
Definition at line 1465 of file spell_effect.c.
References arch_to_object(), obj::attacktype, caster_level(), archt::clone, liv::dam, draw_ext_info(), draw_ext_info_format(), obj::duration, FLAG_ALIVE, FLAG_BLOCKSVIEW, FLAG_IS_USED_UP, FLAG_TEAR_DOWN, freearr_x, freearr_y, get_map_flags(), GET_MAP_MOVE_BLOCK, llevError, LOG(), m, MAX_BUF, obj::move_block, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, give::name, obj::name, NDI_UNIQUE, object_copy(), object_insert_in_map_at(), object_insert_in_ob(), object_new(), object_set_owner(), give::op, obj::other_arch, P_IS_ALIVE, P_OUT_OF_MAP, QUERY_FLAG, obj::race, obj::range, SET_FLAG, set_spell_skill(), SP_level_dam_adjust(), SP_level_duration_adjust(), SP_level_range_adjust(), SPELL, SPELL_EFFECT, obj::stats, Ice::tmp, try_find_archetype(), obj::type, update_all_los(), diamondslots::x, and diamondslots::y.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This checks to see if 'pl' is invisible to 'mon'. Does race check, undead check, etc Returns TRUE if mon can't see pl, false otherwise. This doesn't check range, walls, etc. It only checks the racial adjustments, and in fact that pl is invisible.
| pl | potentially invisible object. |
| mon | who may see pl. |
| 0 | mon can see pl. |
| 1 | mon can't see pl. |
Definition at line 765 of file spell_effect.c.
References FLAG_UNDEAD, pl::invis_race, is_true_undead(), mon, PLAYER, QUERY_FLAG, and obj::race.
Referenced by cast_invisible(), and monster_can_see_enemy().
Here is the call graph for this function:
Here is the caller graph for this function:| int perceive_self | ( | object * | op | ) |
Living thing wants to know information.
| op | who wants information. |
Definition at line 1011 of file spell_effect.c.
References ARCH_DEPLETION, arch_present_in_ob(), atnr_is_dragon_enabled(), buf, change_resist_msg, describe_item(), determine_god(), draw_ext_info(), draw_ext_info_format(), find_god(), FORCE, get_attr_value(), is_dragon_pl(), levels, MAX_BUF, MSG_TYPE_SPELL, MSG_TYPE_SPELL_PERCEIVE_SELF, obj::name, NDI_UNIQUE, NROFATTACKS, NUM_STATS, object_find_by_type_and_arch_name(), give::op, SIGN, statname, stringbuffer_append_printf(), stringbuffer_append_string(), stringbuffer_finish(), stringbuffer_new(), Ice::tmp, and try_find_archetype().
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Place gold nuggets on the map.
| op | player who is casting the spell. Just used so nuggets are inserted below her. |
| m | map to insert to. |
| small_nuggets | |
| large_nuggets | how many nuggets to place. |
| x | |
| y | where to place the nuggets. |
Definition at line 2273 of file spell_effect.c.
References create_archetype(), INS_BELOW_ORIGINATOR, LARGE_NUGGET, m, object_insert_in_map_at(), give::op, SMALL_NUGGET, Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by alchemy().
Here is the call graph for this function:
Here is the caller graph for this function:Handles polymorphing an object, living or not. Will avoid some specific items (flying arrows and such).
| op | object being polymorphed. |
| who | spell caster. |
| level | spell level. |
Definition at line 381 of file spell_effect.c.
References FABS, FLAG_ALIVE, FLAG_ANIMATE, FLAG_GENERATOR, FLAG_MONSTER, FLAG_NO_PICK, give::op, PLAYER, polymorph_item(), polymorph_living(), polymorph_melt(), QUERY_FLAG, rndm(), Ice::tmp, TREASURE, and autojail::who.
Referenced by cast_polymorph().
Here is the call graph for this function:
Here is the caller graph for this function:Changes an item to another item of similar type.
| who | spell caster. |
| op | object being polymorphed. Should be a non living thing. |
| level | spell level, required for monster resistance. |
Definition at line 280 of file spell_effect.c.
References archt::clone, FABS, fix_generated_item(), FLAG_NO_DROP, FLAG_STARTEQUIP, FOOD, FREE_OBJ_NO_DESTROY_CALLBACK, get_next_archetype(), GT_ENVIRONMENT, INS_NO_MERGE, INS_NO_WALK_ON, obj::invisible, llevError, LOG(), m, obj::name, obj::nrof, object_copy(), object_free(), object_insert_in_map_at(), object_new(), object_remove(), give::op, polymorph_melt(), QUERY_FLAG, RING, rndm(), obj::type, obj::value, autojail::who, diamondslots::x, and diamondslots::y.
Referenced by polymorph().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Takes a living object (op) and turns it into another monster of some sort.
| op | object to try to polymorph. Should be monster. |
| level | level of the polymorph spell. |
Definition at line 159 of file spell_effect.c.
References add_friendly_object(), apply_manual(), ATNR_MAGIC, obj::attack_movement, CLEAR_FLAG, archt::clone, create_treasure(), did_make_save(), FLAG_APPLIED, FLAG_FRIENDLY, FLAG_MONSTER, FOR_INV_FINISH, FOR_INV_PREPARE, FREE_OBJ_FREE_INVENTORY, FREE_OBJ_NO_DESTROY_CALLBACK, freearr_x, freearr_y, get_next_archetype(), GT_INVISIBLE, HAS_RANDOM_ITEMS, archt::head, HEAD, disinfect::map, monster_check_apply_all(), object_create_arch(), object_find_first_free_spot(), object_free(), object_get_owner(), object_insert_in_map_at(), object_remove(), object_set_owner(), give::op, PETMOVE, QUERY_FLAG, obj::randomitems, remove_friendly_object(), rndm(), SET_FLAG, SPELL, Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by polymorph().
Here is the call graph for this function:
Here is the caller graph for this function:Destroys item from polymorph failure
| who | who cast the spell. |
| op | spell victim. |
Definition at line 252 of file spell_effect.c.
References draw_ext_info_format(), MAX_BUF, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, give::name, NDI_GREY, object_free(), object_remove(), give::op, play_sound_map(), query_name(), SOUND_TYPE_ITEM, and autojail::who.
Referenced by polymorph(), and polymorph_item().
Here is the call graph for this function:
Here is the caller graph for this function:Try to get information about a living thing.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | spell object being cast. |
| dir | cast direction. |
| level | probe level. |
| 0 | nothing probed. |
| 1 | something was probed. |
Definition at line 708 of file spell_effect.c.
References CAN_PROBE(), draw_ext_info(), examine_monster(), FLAG_WIZCAST, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), HEAD, m, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, NDI_UNIQUE, give::op, P_IS_ALIVE, P_NO_MAGIC, P_OUT_OF_MAP, QUERY_FLAG, ring_occidental_mages::r, obj::range, SP_level_range_adjust(), Ice::tmp, diamondslots::x, and diamondslots::y.
Referenced by cast_spell(), check_probe(), and examine_monster().
Here is the call graph for this function:
Here is the caller graph for this function:Recharge wands.
| op | who is casting. |
| caster | what is casting. |
| spell_ob | spell object. |
| 0 | nothing happened. |
| 1 | wand was recharged, or destroyed. |
Definition at line 81 of file spell_effect.c.
References obj::arch, archt::clone, create_archetype(), liv::dam, draw_ext_info(), draw_ext_info_format(), find_marked_object(), FLAG_ANIMATE, liv::food, obj::inv, obj::level, MAX_BUF, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, give::name, NDI_UNIQUE, object_free(), object_insert_in_map_at(), object_remove(), object_update_speed(), give::op, play_sound_map(), PREFER_HIGH, QUERY_FLAG, query_name(), random_roll(), SET_FLAG, SOUND_TYPE_ITEM, SP_level_dam_adjust(), obj::speed, obj::stats, Ice::tmp, obj::type, and WAND.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:This function removes the cursed/damned status on equipped items.
| op | who is casting. |
| caster | what is casting. |
| spell | actual spell object. |
Definition at line 2409 of file spell_effect.c.
References caster_level(), CLEAR_FLAG, draw_ext_info(), esrv_update_item(), FLAG_APPLIED, FLAG_CURSED, FLAG_DAMNED, FLAG_KNOWN_CURSED, FOR_INV_FINISH, FOR_INV_PREPARE, MSG_TYPE_SPELL, MSG_TYPE_SPELL_FAILURE, MSG_TYPE_SPELL_SUCCESS, NDI_UNIQUE, give::op, PLAYER, QUERY_FLAG, Ice::tmp, and UPD_FLAGS.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:Remove op's existing town portals. Returns 0 on success.
Definition at line 1158 of file spell_effect.c.
References archininventory::arch, check_inv_recursive(), create_archetype(), draw_ext_info(), EXIT_X, EXIT_Y, FOR_OB_AND_ABOVE_FINISH, FOR_OB_AND_ABOVE_PREPARE, FREE_OBJ_FREE_INVENTORY, FREE_OBJ_NO_DESTROY_CALLBACK, llevDebug, llevError, Settings::localdir, LOG(), map_find_by_archetype(), MAP_PLAYER_UNIQUE, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, obj::name, NDI_UNIQUE, object_free(), object_remove(), give::op, obj::race, ready_map_name(), settings, obj::slaying, Ice::tmp, and try_find_archetype().
Referenced by cast_create_town_portal().
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 1119 of file spell_effect.c.
References add_string(), arch_to_object(), check_inv_recursive(), draw_ext_info(), EXIT_X, EXIT_Y, dragon_attune::force, FREE_OBJ_NO_DESTROY_CALLBACK, free_string(), llevError, LOG(), MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, MSG_TYPE_SPELL_SUCCESS, obj::name, NDI_NAVY, NDI_UNIQUE, object_free(), object_insert_in_ob(), give::op, obj::other_arch, and obj::weapontype.
Referenced by cast_create_town_portal().
Here is the call graph for this function:
Here is the caller graph for this function:This writes a rune that contains the appropriate message. There really aren't any adjustments we make.
| op | who is casting. |
| spell | actual spell cast. |
| msg | message to write. |
| 0 | failure. |
| 1 | success. |
Definition at line 3416 of file spell_effect.c.
References add_string(), arch_to_object(), draw_ext_info(), HUGE_BUF, INS_BELOW_ORIGINATOR, llevInfo, LOG(), navar-midane_pickup::msg, MSG_TYPE_SPELL, MSG_TYPE_SPELL_ERROR, NDI_UNIQUE, object_insert_in_map_at(), object_set_msg(), give::op, obj::other_arch, strcasestr_local, and Ice::tmp.
Referenced by cast_spell().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 606 of file spell_effect.c.
Referenced by cast_create_food(), and food_each().
|
static |
Definition at line 607 of file spell_effect.c.
Referenced by cast_create_food(), and food_each().
|
static |
This is used for the spells that gain stats. There are no spells right now that icnrease wis/int/pow on a temp basis, so no good comments for those.
Definition at line 1880 of file spell_effect.c.
Referenced by cast_change_ability().