00001
00002
00003
00004
00005
00006
00007
00008 #ifndef OUCH_H
00009 #define OUCH_H
00010
00011
00012 #define DEATH_NAME_LENGTH 10
00013
00014 #include "enum.h"
00015 #include "beam.h"
00016
00017
00018 enum kill_method_type
00019 {
00020 KILLED_BY_MONSTER,
00021 KILLED_BY_POISON,
00022 KILLED_BY_CLOUD,
00023 KILLED_BY_BEAM,
00024 KILLED_BY_LAVA,
00025 KILLED_BY_WATER,
00026 KILLED_BY_STUPIDITY,
00027 KILLED_BY_WEAKNESS,
00028 KILLED_BY_CLUMSINESS,
00029 KILLED_BY_TRAP,
00030 KILLED_BY_LEAVING,
00031 KILLED_BY_WINNING,
00032 KILLED_BY_QUITTING,
00033 KILLED_BY_DRAINING,
00034 KILLED_BY_STARVATION,
00035 KILLED_BY_FREEZING,
00036 KILLED_BY_BURNING,
00037 KILLED_BY_WILD_MAGIC,
00038 KILLED_BY_XOM,
00039 KILLED_BY_ROTTING,
00040 KILLED_BY_TARGETING,
00041 KILLED_BY_SPORE,
00042 KILLED_BY_TSO_SMITING,
00043 KILLED_BY_PETRIFICATION,
00044 KILLED_BY_SOMETHING,
00045 KILLED_BY_FALLING_DOWN_STAIRS,
00046 KILLED_BY_ACID,
00047 KILLED_BY_CURARE,
00048 KILLED_BY_BEOGH_SMITING,
00049 KILLED_BY_DIVINE_WRATH,
00050 KILLED_BY_BOUNCE,
00051 KILLED_BY_REFLECTION,
00052 KILLED_BY_SELF_AIMED,
00053 KILLED_BY_FALLING_THROUGH_GATE,
00054 KILLED_BY_DISINT,
00055
00056 NUM_KILLBY
00057 };
00058
00059 int check_your_resists(int hurted, beam_type flavour, std::string source,
00060 bolt *beam = 0, bool doEffects = true);
00061 void splash_with_acid(int acid_strength, bool corrode_items = true,
00062 std::string hurt_msg = "");
00063 void weapon_acid(int acid_strength);
00064
00065 class actor;
00066 int actor_to_death_source(const actor* agent);
00067
00068 void reset_damage_counters();
00069 void ouch(int dam, int death_source, kill_method_type death_type,
00070 const char *aux = NULL, bool see_source = true,
00071 const char *death_source_name = NULL);
00072
00073 void lose_level(void);
00074 bool drain_exp(bool announce_full = true);
00075
00076 bool expose_items_to_element(beam_type flavour, const coord_def& where,
00077 int strength = 0);
00078 bool expose_player_to_element(beam_type flavour, int strength = 0);
00079
00080 #endif