Crossfire Server, Trunk
|
#include "global.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "living.h"
#include "material.h"
#include "skills.h"
#include "sounds.h"
#include "sproto.h"
Go to the source code of this file.
Functions | |
static int | abort_attack (object *target, object *hitter, int simple_attack) |
static int | adj_attackroll (object *hitter, object *target) |
static void | attack_message (int dam, int type, object *op, object *hitter) |
int | attack_ob (object *op, object *hitter) |
static int | attack_ob_simple (object *op, object *hitter, int base_dam, int wc) |
object * | blame (object *op) |
void | blind_living (object *op, object *hitter, int dam) |
static void | cancellation (object *op) |
void | confuse_living (object *op, object *hitter, int dam) |
static void | deathstrike_living (object *op, object *hitter, int *dam) |
static int | did_make_save_item (object *op, int type, object *originator) |
int | friendly_fire (object *op, object *hitter) |
static void | get_attack_message (int dam, int type, const object *op, const object *hitter, char *buf1, char *buf2) |
void | get_attack_message_for_attack_type (int dam, uint8_t atm_type, const char *victim_name, char *buf1, char *buf2) |
static uint8_t | get_attack_message_type (int type, const object *op, const object *hitter) |
static int | get_attack_mode (object **target, object **hitter, int *simple_attack) |
int | hit_map (object *op, int dir, uint32_t type, int full_hit) |
int | hit_player (object *op, int dam, object *hitter, uint32_t type, int full_hit) |
object * | hit_with_arrow (object *op, object *victim) |
static int | hit_with_drain (object *op, object *hitter, int dam) |
static int | hit_with_one_attacktype (object *op, object *hitter, int dam, uint32_t attacknum) |
static int | is_aimed_missile (object *op) |
static int | kill_object (object *op, int dam, object *hitter) |
static void | object_get_materialtype (object *op, materialtype_t **mt) |
void | paralyze_living (object *op, int dam) |
static void | poison_living (object *op, object *hitter, int dam) |
static void | put_in_icecube (object *op, object *originator) |
void | save_throw_object (object *op, uint32_t type, object *originator) |
static void | scare_creature (object *target, object *hitter) |
static void | slow_living (object *op, object *hitter, int dam) |
int | slow_living_by (object *op, const int speed_penalty) |
static int | stick_arrow (object *op, object *tmp) |
static void | tear_down_wall (object *op) |
static void | thrown_item_effect (object *, object *) |
This handles all attacks, magical or not.
Definition in file attack.cpp.
Check if target and hitter are still in a relation similar to the one determined by get_attack_mode().
target | who is attacked. |
hitter | who is attacking. |
simple_attack | previous mode as returned by get_attack_mode(). |
Definition at line 724 of file attack.cpp.
References object::env, FLAG_REMOVED, death_message::hitter, on_same_map(), and QUERY_FLAG.
Referenced by attack_ob_simple(), and hit_player().
Adjustments to attack rolls by various conditions
hitter | who is hitting. |
target | victim of the attack. |
Definition at line 2562 of file attack.cpp.
References mapstruct::darkness, FLAG_ALIVE, FLAG_BLIND, FLAG_CONFUSED, FLAG_REMOVED, FLAG_SCARED, FLAG_UNAGGRESSIVE, death_message::hitter, object::invisible, is_aimed_missile(), llevError, LOG(), object::map, monster_can_see_enemy(), monster_stand_in_light(), object::move_type, object_get_owner(), on_same_map(), PLAYER, player_can_view(), and QUERY_FLAG.
Referenced by attack_ob_simple().
Send an attack message to someone.
dam | amount of damage done. |
type | attack type. |
op | victim of the attack. |
hitter | who is hitting. |
Definition at line 608 of file attack.cpp.
References AT_MAGIC, buf, draw_ext_info(), draw_ext_info_format(), FOR_MAP_FINISH, FOR_MAP_PREPARE, get_attack_message(), death_message::hitter, disinfect::map, MAX_BUF, MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_HIT, MSG_TYPE_ATTACK_PET_HIT, MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_WAS_HIT, object::name, NDI_BLACK, give::next, object_get_owner(), give::op, OUT_OF_REAL_MAP, play_sound_map(), PLAYER, rndm(), SOUND_TYPE_HIT, SP_BULLET, SP_CONE, SP_EXPLOSION, SPELL_EFFECT, is_valid_types_gen::type, object::type, and VERY_BIG_BUF.
Referenced by hit_player().
Simple wrapper for attack_ob_simple(), will use hitter's values.
op | victim. |
hitter | attacker. |
Definition at line 937 of file attack.cpp.
References attack_ob_simple(), HEAD, death_message::hitter, and give::op.
Referenced by do_skill_attack(), CRECombatSimulator::fight(), monsterFight(), and pets_move_golem().
Handles simple attack cases.
If rolling 1d20 > WC - AC, deal damage. Otherwise, miss. In other words, if WC is less than or equal to AC, the attack will always hit. Otherwise, for each point of WC above the target's AC, there is a 5% more chance of missing the target up to a maximum of 95% miss.
Some adjustments in adj_attackroll() increase or decrease the attacker's roll.
Deal between 1-base_dam damage. The actual amount of damage may be adjusted by the victim's resistances.
op | victim. Should be the head part. |
hitter | attacked. Should be the head part. |
base_dam | Maximum base damage, before resistances, to deal. |
wc | Attacker's weapon class (see living::wc). |
Definition at line 767 of file attack.cpp.
References abort_attack(), adj_attackroll(), apply_anim_suffix(), AT_ACID, AT_PHYSICAL, Settings::casting_time, CLEAR_FLAG, draw_ext_info(), draw_ext_info_format(), EVENT_ATTACKS, events_execute_object_event(), FABS, FLAG_ALIVE, FLAG_HITBACK, FLAG_MONSTER, FLAG_SLEEP, get_attack_mode(), hit_player(), death_message::hitter, is_criminal(), make_visible(), monster_can_see_enemy(), monster_npc_call_help(), MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_FUMBLE, MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_WAS_HIT, MSG_TYPE_VICTIM_WAS_PUSHED, NDI_ALL, NDI_UNIQUE, object_get_owner(), object_value_set(), object_was_destroyed, give::op, play_sound_map(), PLAYER, player_arrest(), PREFER_HIGH, PREFER_LOW, process_object(), QUERY_FLAG, random_roll(), rndm(), SCRIPT_FIX_ALL, settings, SOUND_TYPE_HIT, thrown_item_effect(), TRUE, and is_valid_types_gen::type.
Referenced by attack_ob(), and hit_with_arrow().
Definition at line 176 of file attack.cpp.
References object_get_owner(), give::op, PLAYER, and object::type.
Referenced by save_throw_object().
Blind a living thing.
op | victim. |
hitter | who is attacking. |
dam | damage to deal. |
Definition at line 2354 of file attack.cpp.
References ATNR_BLIND, BLINDNESS, change_abil(), create_archetype(), draw_ext_info_format(), fix_object(), FLAG_APPLIED, FLAG_BLIND, death_message::hitter, MAX_BUF, MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_HIT, NDI_UNIQUE, object_get_owner(), object_insert_in_ob(), object_present_in_ob(), give::op, query_name(), SET_FLAG, Ice::tmp, and sword_of_souls::victim.
Referenced by hit_with_one_attacktype(), and scroll_failure().
|
static |
Cancels object *op. Cancellation basically means an object loses its magical benefits.
op | item to cancel. Its inventory will also be cancelled. |
Definition at line 51 of file attack.cpp.
References AT_CANCELLATION, CLEAR_FLAG, CONTAINER, did_make_save_item(), esrv_update_item(), FABS, FLAG_ALIVE, FLAG_CURSED, FLAG_DAMNED, FLAG_KNOWN_CURSED, FLAG_KNOWN_MAGICAL, FOR_INV_FINISH, FOR_INV_PREPARE, commongive::inv, give::op, PLAYER, QUERY_FLAG, rndm(), THROWN_OBJ, UPD_FLAGS, and UPD_NAME.
Referenced by hit_with_one_attacktype(), and save_throw_object().
Confuse a living thing.
op | victim. |
hitter | who is attacking, unused. |
dam | damage to deal, unused. |
Definition at line 2311 of file attack.cpp.
References add_string(), ATNR_CONFUSION, create_archetype(), draw_ext_info(), FLAG_APPLIED, FLAG_CONFUSED, FORCE, FORCE_CONFUSION, FORCE_NAME, free_string(), death_message::hitter, MAX, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_UNIQUE, object_insert_in_ob(), object_present_in_ob_by_name(), give::op, PLAYER, QUERY_FLAG, SET_FLAG, Ice::tmp, and nlohmann::detail::void().
Referenced by charge_mana_effect(), hit_with_one_attacktype(), prayer_failure(), scroll_failure(), spell_failure(), START_TEST(), and write_scroll().
Attempts to kill 'op'.
The intention of a death attack is to kill outright things that are a lot weaker than the attacker, have a chance of killing things somewhat weaker than the caster, and no chance of killing something equal or stronger than the attacker.
If a deathstrike attack has a slaying, only a monster whose name or race matches a comma-delimited list in the slaying field of the deathstriking object is affected (this includes undead). If no slaying set, only undead are unaffected.
op | victim. | |
hitter | attacker. | |
[out] | dam | damage to deal, will contain computed damage or 0 if strike failed. |
Definition at line 2449 of file attack.cpp.
References ATNR_DEATH, FLAG_UNDEAD, death_message::hitter, llevError, LOG(), give::op, PREFER_HIGH, QUERY_FLAG, random_roll(), and undead_name.
Referenced by hit_with_one_attacktype().
Checks to make sure the item actually made its saving throw based on the tables. It does not take any further action (like destroying the item).
op | object to check. |
type | attack type. |
originator | what it attacking? |
Definition at line 104 of file attack.cpp.
References AT_BLIND, AT_CONFUSION, AT_COUNTERSPELL, AT_DEATH, AT_DEPLETE, AT_DRAIN, AT_FEAR, AT_GHOSTHIT, AT_HOLYWORD, AT_LIFE_STEALING, AT_MAGIC, AT_PARALYZE, AT_POISON, AT_SLOW, AT_TURN_UNDEAD, attacks, living::dam, FALSE, NROFATTACKS, object_get_materialtype(), give::op, rndm(), materialtype_t::save, object::stats, TRUE, and is_valid_types_gen::type.
Referenced by cancellation(), and save_throw_object().
Find out if this is friendly fire (PVP and attacker is peaceful) or not
op | victim. |
hitter | attacker. |
Definition at line 1854 of file attack.cpp.
References object::contr, DISEASE, HEAD, death_message::hitter, object_get_owner(), give::op, player::peaceful, PLAYER, POISONING, RUNE, SPELL, and object::type.
Referenced by hit_player().
|
static |
Compute attack messages. Two versions are done, one for the living doing the action, the other for the victim of the attack.
dam | amount of damage done. | |
type | attack type. | |
op | victim of the attack. | |
hitter | who is hitting. | |
[out] | buf1 | where to write the message for the one doing the attack, must be at least MAX_BUF long. |
[out] | buf2 | where to write the message for the victim of the attack, must be at least MAX_BUF long. |
Definition at line 569 of file attack.cpp.
References DOOR, get_attack_message_for_attack_type(), get_attack_message_type(), death_message::hitter, MAX_BUF, give::op, and is_valid_types_gen::type.
Referenced by attack_message().
void get_attack_message_for_attack_type | ( | int | dam, |
uint8_t | atm_type, | ||
const char * | victim_name, | ||
char * | buf1, | ||
char * | buf2 | ||
) |
Get the attack message for a damage and a type.
dam | damage done. | |
atm_type | one Attack types of type ATM_xxx. | |
victim_name | name of the victim of the attack. | |
[out] | buf1 | where to write the message for the one doing the attack, must be at least MAX_BUF long. |
[out] | buf2 | where to write the message for the victim of the attack, must be at least MAX_BUF long. |
Definition at line 538 of file attack.cpp.
References attack_mess, attackmess_t::level, MAX_BUF, and MAXATTACKMESS.
Referenced by AttackMessagePanel::currentCellChanged(), and get_attack_message().
|
static |
Figure the Attack types ATM_xxx type for an attack.
type | base attack type. |
op | victim of the attack. |
hitter | who is hitting. |
Definition at line 463 of file attack.cpp.
References AT_COLD, AT_DRAIN, AT_ELECTRICITY, AT_FIRE, AT_MAGIC, AT_PHYSICAL, AT_POISON, ATM_ARROW, ATM_BASIC, ATM_BLUD, ATM_CLAW, ATM_CLEAVE, ATM_COLD, ATM_CRUSH, ATM_DOOR, ATM_DRAIN, ATM_ELEC, ATM_FIRE, ATM_KARATE, ATM_PIERCE, ATM_PUNCH, ATM_SLASH, ATM_SLICE, ATM_STAB, ATM_SUFFER, ATM_WHIP, ATM_WRAITH_FEED, DISEASE, DOOR, death_message::hitter, IS_ARROW, IS_LIVE, give::op, PLAYER, POISONING, SK_CLAWING, SK_KARATE, SK_PUNCHING, SK_WRAITH_FEED, SYMPTOM, is_valid_types_gen::type, USING_SKILL, WEAP_BLUD, WEAP_CLEAVE, WEAP_CRUSH, WEAP_HIT, WEAP_PIERCE, WEAP_SLASH, WEAP_SLICE, WEAP_STAB, and WEAP_WHIP.
Referenced by get_attack_message().
Find correct parameters for attack, do some sanity checks.
target | will point to victim's head. |
hitter | will point to hitter's head. |
simple_attack | will be 1 if one of victim or target isn't on a map, 0 else. |
Definition at line 688 of file attack.cpp.
References FLAG_FREED, FLAG_REMOVED, HEAD, death_message::hitter, llevError, LOG(), on_same_map(), and QUERY_FLAG.
Referenced by attack_ob_simple(), and hit_player().
int hit_map | ( | object * | op, |
int | dir, | ||
uint32_t | type, | ||
int | full_hit | ||
) |
Attack a spot on the map.
op | object hitting the map. |
dir | direction op is hitting/going. |
type | attacktype. |
full_hit | if set then monster area does not matter, it gets all damage. Else damage is proportional to affected area vs full monster area. |
Definition at line 355 of file attack.cpp.
References AT_CHAOS, AT_COUNTERSPELL, AT_MAGIC, counterspell(), FLAG_ALIVE, FLAG_FREED, FLAG_REMOVED, FOR_INV_FINISH, FOR_INV_PREPARE, FOR_MAP_FINISH, FOR_MAP_PREPARE, freearr_x, freearr_y, get_map_flags(), HEAD, hit_player(), llevError, LOG(), disinfect::map, object_update(), object_was_destroyed, give::op, P_OUT_OF_MAP, altar_valkyrie::pl, PLAYER, QUERY_FLAG, save_throw_object(), shuffle_attack(), Ice::tmp, TRANSPORT, is_valid_types_gen::type, UP_OBJ_FACE, diamondslots::x, and diamondslots::y.
Referenced by explode_bullet(), explosion(), move_aura(), move_ball_spell(), move_bolt(), move_cone(), and rune_attack().
Object is attacked by something.
This isn't used just for players, but in fact most objects.
Oct 95 - altered the following slightly for MULTIPLE_GODS hack which needs new attacktype AT_HOLYWORD to work . b.t.
op | object to be hit |
dam | base damage - protections/vulnerabilities/slaying matches can modify it. |
hitter | what is hitting the object |
type | attacktype |
full_hit | set if monster area does not matter. |
Definition at line 1903 of file attack.cpp.
References abort_attack(), AT_CHAOS, AT_DEATH, AT_HOLYWORD, AT_MAGIC, AT_PARALYZE, AT_PHYSICAL, AT_SLOW, ATNR_MAGIC, attack_message(), ATTACKS, change_object(), CLEAR_FLAG, determine_god(), did_make_save(), DOOR, EVENT_ATTACKED, events_execute_object_event(), find_god(), FLAG_ALIVE, FLAG_FREED, FLAG_FRIENDLY, FLAG_MONSTER, FLAG_NO_DAMAGE, FLAG_ONE_HIT, FLAG_REMOVED, FLAG_RUN_AWAY, FLAG_SPLITTING, FLAG_TEAR_DOWN, FLAG_UNAGGRESSIVE, FLAG_UNDEAD, FLAG_WIZ, FOR_INV_FINISH, FOR_INV_PREPARE, friendly_fire(), get_attack_mode(), hit_with_one_attacktype(), death_message::hitter, commongive::inv, kill_object(), llevDebug, LOG(), monster_npc_call_help(), archetype::more, NROFATTACKS, object_find_by_type2(), object_free_drop_inventory(), object_get_owner(), object_remove(), object_set_enemy(), object_was_destroyed, give::op, op_on_battleground(), PLAYER, QUERY_FLAG, RANDOM, remove_friendly_object(), rndm(), RUNE, scare_creature(), SCRIPT_FIX_ALL, SET_FLAG, Settings::set_friendly_fire, settings, spring_trap(), tear_down_wall(), Ice::tmp, TRAP, is_valid_types_gen::type, and undead_name.
Referenced by attack_ob_simple(), cast_destruction(), cast_earth_to_dust(), cast_light(), check_bullet(), check_heal_and_mana(), enter_exit(), gate_type_process(), hit_map(), legacy_ob_process(), monster_check_doors(), monster_check_earthwalls(), move_symptom(), poison_type_apply(), poisoning_type_process(), rune_attack(), spell_effect_type_move_on(), spell_failure(), and START_TEST().
hit_with_arrow() disassembles the missile, attacks the victim and reassembles the missile.
op | missile hitting. |
victim | who is hit by op. |
Definition at line 979 of file attack.cpp.
References add_refcount(), attack_ob_simple(), object::count, EVENT_ATTACKS, EVENT_CONNECTOR, events_execute_object_event(), fix_stopped_arrow(), FOR_OB_AND_BELOW_FINISH, FOR_OB_AND_BELOW_PREPARE, free_no_drop(), free_string(), death_message::hitter, INS_NO_MERGE, INS_NO_WALK_ON, object::map, object_free_drop_inventory(), object_insert_in_map_at(), object_insert_in_ob(), object_merge(), object_remove(), object_set_owner(), object_was_destroyed, give::op, SCRIPT_FIX_ALL, object::skill, stick_arrow(), sword_of_souls::victim, object::x, and object::y.
Referenced by common_process_projectile(), and common_projectile_move_on().
Definition at line 1174 of file attack.cpp.
References ATNR_DRAIN, ATNR_PHYSICAL, change_exp(), FLAG_WAS_WIZ, GOLEM, hit_with_one_attacktype(), death_message::hitter, MIN, object_get_owner(), give::op, op_on_battleground(), PLAYER, PREFER_HIGH, QUERY_FLAG, random_roll(), SK_EXP_ADD_SKILL, and SK_EXP_TOTAL.
Referenced by hit_with_one_attacktype().
|
static |
Handles one attacktype's damage. This doesn't damage the creature, but returns how much it should take. However, it will do other effects (paralyzation, slow, etc.).
op | victim of the attack. |
hitter | attacker. |
dam | maximum dealt damage. |
attacknum | number of the attacktype of the attack. See the ATNR_xxx values. |
Definition at line 1270 of file attack.cpp.
References AMULET, ATNR_ACID, ATNR_BLIND, ATNR_CANCELLATION, ATNR_CHAOS, ATNR_CONFUSION, ATNR_COUNTERSPELL, ATNR_DEATH, ATNR_DEPLETE, ATNR_DRAIN, ATNR_FEAR, ATNR_HOLYWORD, ATNR_INTERNAL, ATNR_LIFE_STEALING, ATNR_PARALYZE, ATNR_PHYSICAL, ATNR_POISON, ATNR_SLOW, ATNR_TURN_UNDEAD, blind_living(), cancellation(), check_physically_infect(), confuse_living(), deathstrike_living(), determine_god(), did_make_save(), DOOR, drain_stat(), draw_ext_info_format(), esrv_update_item(), find_god(), fix_object(), FLAG_ALIVE, FLAG_APPLIED, FLAG_GENERATOR, FLAG_MONSTER, FLAG_UNDEAD, FOR_INV_FINISH, FOR_INV_PREPARE, get_turn_bonus(), GIRDLE, GOLEM, hit_with_drain(), death_message::hitter, is_wraith_pl(), object::level, llevError, LOG(), M_IRON, MAX, MAX_BUF, MAX_FOOD, MIN, MSG_TYPE_VICTIM, MSG_TYPE_VICTIM_WAS_HIT, NDI_RED, NDI_UNIQUE, NROFATTACKS, object_get_owner(), give::op, op_on_battleground(), paralyze_living(), PLAYER, poison_living(), PREFER_HIGH, PREFER_LOW, QUERY_FLAG, query_name(), random_roll(), RING, rndm(), ROD, scare_creature(), object::slaying, slow_living(), object::stats, Ice::tmp, undead_name, UPD_NAME, WAND, and living::Wis.
Referenced by hit_player(), and hit_with_drain().
|
static |
Determine if the object is an 'aimed' missile.
op | object to check. |
Definition at line 2629 of file attack.cpp.
References ARROW, MOVE_FLYING, give::op, SP_BULLET, SP_EXPLOSION, SPELL_EFFECT, and THROWN_OBJ.
Referenced by adj_attackroll().
An object was killed, handle various things (logging, messages, ...).
GROS: This code comes from hit_player. It has been made external to allow script procedures to "kill" objects in a combat-like fashion. It was initially used by (kill-object) developed for the Collector's Sword. Note that nothing has been changed from the original version of the following code.
Will LOG pk, handles battleground, and so on.
This function was a bit of a mess with hitter getting changed, values being stored away but not used, etc. I've cleaned it up a bit - I think it should be functionally equivalant. MSW 2002-07-17
op | what is being killed. |
dam | damage done to it. |
hitter | what is hitting it. |
Definition at line 1582 of file attack.cpp.
References BIG_NAME, buf, calc_skill_exp(), change_luck(), check_exp_loss(), object::chosen_skill, object::contr, object::current_weapon, DOOR, draw_ext_info(), draw_ext_info_format(), EVENT_DEATH, EVENT_GKILL, events_execute_global_event(), events_execute_object_event(), find_applied_skill_by_name(), FLAG_BLOCKSVIEW, FLAG_FRIENDLY, FLAG_MONSTER, FLAG_READY_WEAPON, FLAG_WAS_WIZ, FLAG_WIZ, player::golem_count, death_message::hitter, socket_struct::host, kill_player(), object::level, llevError, llevInfo, LOG(), MAX_BUF, MIN, MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_PLAYER, MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_KILL, MSG_TYPE_ATTACK_PET_DIED, give::name, object::name, NDI_ALL, NDI_BLACK, NDI_UNIQUE, object_free_drop_inventory(), object_get_owner(), object_handle_death_animation(), object_remove(), object_update_speed(), give::op, op_on_battleground(), player::party, player::peaceful, Settings::pk_luck_penalty, Settings::pk_max_experience, Settings::pk_max_experience_percent, play_sound_map(), PLAYER, QUERY_FLAG, query_name(), range_golem, player::ranges, remove_friendly_object(), SCRIPT_FIX_ALL, settings, share_exp(), Settings::simple_exp, SK_EXP_TOTAL, SKILL, object::skill, player::socket, SOUND_TYPE_HIT, Floor::t, player::title, object::type, update_all_los(), and VERY_BIG_BUF.
Referenced by hit_player().
|
static |
Definition at line 75 of file attack.cpp.
References materials, name_to_material(), give::op, and set_materialname().
Referenced by did_make_save_item().
void paralyze_living | ( | object * | op, |
int | dam | ||
) |
Paralyze a living thing.
op | victim. |
dam | damage to deal. |
Definition at line 2398 of file attack.cpp.
References ATNR_PARALYZE, draw_ext_info(), FABS, FLAG_PARALYZED, say::max, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_UNIQUE, give::op, PLAYER, QUERY_FLAG, and SET_FLAG.
Referenced by hit_with_one_attacktype(), prayer_failure(), scroll_failure(), and spell_failure().
Poison a living thing.
op | victim. |
hitter | who is attacking. |
dam | damage to deal. |
Definition at line 2154 of file attack.cpp.
References add_refcount(), arch_present_in_ob(), arch_to_object(), draw_ext_info(), draw_ext_info_format(), find_archetype(), fix_object(), FLAG_ALIVE, FLAG_APPLIED, free_string(), death_message::hitter, llevError, LOG(), MAX, MSG_TYPE_ATTACK, MSG_TYPE_ATTACK_DID_HIT, MSG_TYPE_ATTACK_PET_HIT, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_UNIQUE, object_copy_owner(), object_get_owner(), object_insert_in_ob(), give::op, PLAYER, QUERY_FLAG, SET_FLAG, Ice::tmp, and object::type.
Referenced by hit_with_one_attacktype().
Definition at line 151 of file attack.cpp.
References arch_to_object(), find_archetype(), FLAG_REMOVED, map_find_by_archetype(), object_insert_in_map_at(), object_insert_in_ob(), object_remove(), give::op, QUERY_FLAG, stop_item(), Ice::tmp, and nlohmann::detail::void().
Referenced by save_throw_object().
Object is attacked with some attacktype (fire, ice, ...). Calls did_make_save_item(). It then performs the appropriate actions to the item (such as burning the item up, calling cancellation(), etc.)
op | victim of the attack. |
type | attacktype. |
originator | what is attacking. |
Definition at line 202 of file attack.cpp.
References archininventory::arch, AT_CANCELLATION, AT_COLD, AT_ELECTRICITY, AT_FIRE, ATNR_COLD, ATNR_FIRE, blame(), cancellation(), commit_crime(), create_archetype(), did_make_save_item(), draw_ext_info_format(), env, fix_stopped_item(), FLAG_APPLIED, FLAG_CURSED, FLAG_DAMNED, FLAG_IS_LIGHTABLE, FLAG_NO_PICK, FLAG_REMOVED, FLAG_UNPAID, FOR_INV_FINISH, FOR_INV_PREPARE, commongive::inv, kill_player(), llevError, LOG(), m, MAX_BUF, MSG_TYPE_APPLY, MSG_TYPE_APPLY_SUCCESS, MSG_TYPE_APPLY_UNAPPLY, give::name, NDI_RED, NDI_UNIQUE, object_decrease_nrof(), object_free_drop_inventory(), object_insert_in_map_at(), object_insert_in_ob(), object_remove(), object_replace_insert_in_map(), give::op, put_in_icecube(), QUERY_FLAG, query_name(), RANDOM, rndm(), RUNE, SET_FLAG, spring_trap(), stop_item(), TRANSPORT, is_valid_types_gen::type, diamondslots::x, and diamondslots::y.
Referenced by do_light(), hit_map(), and spell_effect_type_move_on().
Creature is scared, update its values.
target | scared creature. |
hitter | who scared target. |
Definition at line 1163 of file attack.cpp.
References object::enemy, FLAG_SCARED, death_message::hitter, object_get_owner(), object_set_enemy(), and SET_FLAG.
Referenced by hit_player(), and hit_with_one_attacktype().
Slow a living thing.
op | victim. |
hitter | who is attacking. |
dam | damage to deal. |
Give slow attacks some oomph – always speed -1 was REALLY weak
Neila Hawkins 2018-05-31
Definition at line 2266 of file attack.cpp.
References ATNR_SLOW, draw_ext_info(), death_message::hitter, MSG_TYPE_ATTRIBUTE, MSG_TYPE_ATTRIBUTE_BAD_EFFECT_START, NDI_UNIQUE, give::op, PREFER_LOW, random_roll(), slow_living_by(), and nlohmann::detail::void().
Referenced by hit_with_one_attacktype().
int slow_living_by | ( | object * | op, |
const int | speed_penalty | ||
) |
Definition at line 2227 of file attack.cpp.
References arch_present_in_ob(), arch_to_object(), find_archetype(), fix_object(), FLAG_APPLIED, object_insert_in_ob(), give::op, SET_FLAG, and Ice::tmp.
Referenced by eat_common(), and slow_living().
Try to put an arrow in inventory.
op | arrow to try to insert. |
tmp | what is stopping the arrow. |
Definition at line 952 of file attack.cpp.
References HEAD, object_insert_in_ob(), object_remove(), give::op, and Ice::tmp.
Referenced by hit_with_arrow().
|
static |
Handles wall tearing animation. Will change the face according to the hp/maxhp ration.
If the wall reaches its last animation, either free it or set it non living so it doesn't block anymore.
op | wall to update. |
Definition at line 1114 of file attack.cpp.
References blank_face, CLEAR_FLAG, FLAG_ALIVE, FLAG_BLOCKSVIEW, GET_ANIM_ID, if(), make_face_from_files::int, llevError, LOG(), NUM_ANIMATIONS, object_free_drop_inventory(), object_remove(), object_update(), give::op, SET_ANIMATION, UP_OBJ_FACE, and update_all_los().
Referenced by hit_player().
Handles any special effects of thrown items (like attacking living creatures–a potion thrown at a monster).
hitter | thrown item. |
victim | object that is hit by hitter. |
Definition at line 2522 of file attack.cpp.
References ATNR_MAGIC, ATNR_POISON, FLAG_ALIVE, FLAG_UNDEAD, death_message::hitter, ob_apply(), POISON, POTION, QUERY_FLAG, sword_of_souls::victim, and nlohmann::detail::void().
Referenced by attack_ob_simple().