/* File: player.pkg */ /* * Purpose: Lua interface defitions for the player. * To be processed by tolua to generate C source code. */ $#include "angband.h" /** @typedef cptr * @note String */ typedef char* cptr; /** @typedef errr * @note Number */ typedef int errr; /** @typedef bool * @note Boolean */ typedef unsigned char bool; /** @typedef byte * @note Number */ typedef unsigned char byte; /** @typedef s16b * @note Number */ typedef signed short s16b; /** @typedef u16b * @note Number */ typedef unsigned short u16b; /** @typedef s32b * @note Number */ typedef signed int s32b; /** @typedef u32b * @note Number */ typedef unsigned int u32b; /** @def PY_MAX_LEVEL * @note Maximum level */ #define PY_MAX_LEVEL 50 /** @var player_exp[PY_MAX_LEVEL] * @brief Number * @note Array of experience points per level. */ extern s32b player_exp[PY_MAX_LEVEL]; /** @name Attributes * @brief Indexes of the various "stats" (hard-coded by savefiles, etc). * @{ */ /** @def A_STR * @note Strength */ #define A_STR 0 /** @def A_INT * @note Intelligence */ #define A_INT 1 /** @def A_WIS * @note Wisdom */ #define A_WIS 2 /** @def A_DEX * @note Dexterity */ #define A_DEX 3 /** @def A_CON * @note Constitution */ #define A_CON 4 /** @def A_CHR * @note Charisma */ #define A_CHR 5 /** @} */ /* Ugly hack, should be in foo-info, the subrace saved to the savefile */ /** @def SUBRACE_SAVE */ #define SUBRACE_SAVE 9 /** @name Sex * @brief Player sex constants (hard-coded by save-files, arrays, etc) * @{ */ /** @def SEX_FEMALE */ #define SEX_FEMALE 0 /** @def SEX_MALE */ #define SEX_MALE 1 /** @def SEX_NEUTER */ #define SEX_NEUTER 2 /** @def MAX_SEXES */ #define MAX_SEXES 3 /** @} */ /** @name Race flags * @{ */ /** @def PR1_EXPERIMENTAL * @note Is still under developemnt */ #define PR1_EXPERIMENTAL 0x00000001L /* XXX */ /** @def PR1_RESIST_BLACK_BREATH * @note Resist black breath */ #define PR1_RESIST_BLACK_BREATH 0x00000004L /** @def PR1_NO_STUN * @note Never stunned */ #define PR1_NO_STUN 0x00000008L /** @def PR1_XTRA_MIGHT_BOW * @note Xtra might with bows */ #define PR1_XTRA_MIGHT_BOW 0x00000010L /** @def PR1_XTRA_MIGHT_XBOW * @note Xtra might with xbows */ #define PR1_XTRA_MIGHT_XBOW 0x00000020L /** @def PR1_XTRA_MIGHT_SLING * @note Xtra might with slings */ #define PR1_XTRA_MIGHT_SLING 0x00000040L /** @def PR1_AC_LEVEL * @note More AC with levels */ #define PR1_AC_LEVEL 0x00000080L /** @def PR1_HURT_LITE * @note Hurt by light */ #define PR1_HURT_LITE 0x00000100L /** @def PR1_VAMPIRE * @note Vampire */ #define PR1_VAMPIRE 0x00000200L /** @def PR1_UNDEAD * @note Undead */ #define PR1_UNDEAD 0x00000400L /** @def PR1_NO_CUT * @note no cuts */ #define PR1_NO_CUT 0x00000800L /** @def PR1_CORRUPT * @note hack-- corrupted */ #define PR1_CORRUPT 0x00001000L /** @def PR1_NO_FOOD * @note little gain from food */ #define PR1_NO_FOOD 0x00002000L /** @def PR1_NO_GOD * @note cannot worship */ #define PR1_NO_GOD 0x00004000L /* XXX */ /** @def PR1_ELF * @note Is an elf */ #define PR1_ELF 0x00010000L /** @def PR1_SEMI_WRAITH * @note Takes damage when going in walls */ #define PR1_SEMI_WRAITH 0x00020000L /** @def PR1_NO_SUBRACE_CHANGE * @note Impossible to change subrace */ #define PR1_NO_SUBRACE_CHANGE 0x00040000L /* XXX */ /** @def PR1_ANTIMAGIC * @note antimagic ... hack */ #define PR1_ANTIMAGIC 0x00100000L /** @def PR1_MOLD_FRIEND * @note Not attacked by molds wielded */ #define PR1_MOLD_FRIEND 0x00200000L /** @def PR1_GOD_FRIEND * @note Better grace */ #define PR1_GOD_FRIEND 0x00400000L /* XXX */ /** @def PR1_INNATE_SPELLS * @note KNown all spells, only need books */ #define PR1_INNATE_SPELLS 0x01000000L /* XXX */ /* XXX */ /** @def PR1_EASE_STEAL * @note Gain xp by stealing */ #define PR1_EASE_STEAL 0x08000000L /* XXX */ /* XXX */ /* XXX */ /* XXX */ /* XXX */ /** @def PR2_ASTRAL * @note Is it an astral being coming from th halls of mandos ? */ #define PR2_ASTRAL 0x00000002L /* XXX */ /** @} */ /** @name Notice flags * @brief Bit flags for the "p_ptr->notice" variable * @{ */ /** @def PN_COMBINE * @note Combine the pack */ #define PN_COMBINE 0x00000001L /** @def PN_REORDER * @note Reorder the pack */ #define PN_REORDER 0x00000002L /* xxx (many) */ /** @} */ /** @name Update flags * @brief Bit flags for the "p_ptr->update" variable * @{ */ /** @def PU_BONUS * @note Calculate bonuses */ #define PU_BONUS 0x00000001L /** @def PU_TORCH * @note Calculate torch radius */ #define PU_TORCH 0x00000002L /** @def PU_BODY * @note Calculate body parts */ #define PU_BODY 0x00000004L /** @def PU_SANITY * @note Calculate csan and msan */ #define PU_SANITY 0x00000008L /** @def PU_HP * @note Calculate chp and mhp */ #define PU_HP 0x00000010L /** @def PU_MANA * @note Calculate csp and msp */ #define PU_MANA 0x00000020L /** @def PU_SPELLS * @note Calculate spells */ #define PU_SPELLS 0x00000040L /** @def PU_POWERS * @note Calculate powers */ #define PU_POWERS 0x00000080L /* xxx (many) */ /** @def PU_UN_VIEW * @note Forget view */ #define PU_UN_VIEW 0x00010000L /* xxx (many) */ /** @def PU_VIEW * @note Update view */ #define PU_VIEW 0x00100000L /** @def PU_MON_LITE * @note Update monster light */ #define PU_MON_LITE 0x00200000L /* xxx */ /** @def PU_MONSTERS * @note Update monsters */ #define PU_MONSTERS 0x01000000L /** @def PU_DISTANCE * @note Update distances */ #define PU_DISTANCE 0x02000000L /* xxx */ /** @def PU_FLOW * @note Update flow */ #define PU_FLOW 0x10000000L /* xxx (many) */ /** @} */ /** @name Redraw flags * @brief Bit flags for the "p_ptr->redraw" variable * @{ */ /** @def PR_MISC * @note Display Race/Class */ #define PR_MISC 0x00000001L /** @def PR_TITLE * @note Display Title */ #define PR_TITLE 0x00000002L /** @def PR_LEV * @note Display Level */ #define PR_LEV 0x00000004L /** @def PR_EXP * @note Display Experience */ #define PR_EXP 0x00000008L /** @def PR_STATS * @note Display Stats */ #define PR_STATS 0x00000010L /** @def PR_ARMOR * @note Display Armor */ #define PR_ARMOR 0x00000020L /** @def PR_HP * @note Display Hitpoints */ #define PR_HP 0x00000040L /** @def PR_MANA * @note Display Mana */ #define PR_MANA 0x00000080L /** @def PR_GOLD * @note Display Gold */ #define PR_GOLD 0x00000100L /** @def PR_DEPTH * @note Display Depth */ #define PR_DEPTH 0x00000200L /****/ /** @def PR_HEALTH * @note Display Health Bar */ #define PR_HEALTH 0x00000800L /** @def PR_CUT * @note Display Extra (Cut) */ #define PR_CUT 0x00001000L /** @def PR_STUN * @note Display Extra (Stun) */ #define PR_STUN 0x00002000L /** @def PR_HUNGER * @note Display Extra (Hunger) */ #define PR_HUNGER 0x00004000L /** @def PR_PIETY * @note Display Piety */ #define PR_PIETY 0x00008000L /** @def PR_BLIND * @note Display Extra (Blind) */ #define PR_BLIND 0x00010000L /** @def PR_CONFUSED * @note Display Extra (Confused) */ #define PR_CONFUSED 0x00020000L /** @def PR_AFRAID * @note Display Extra (Afraid) */ #define PR_AFRAID 0x00040000L /** @def PR_POISONED * @note Display Extra (Poisoned) */ #define PR_POISONED 0x00080000L /** @def PR_STATE * @note Display Extra (State) */ #define PR_STATE 0x00100000L /** @def PR_SPEED * @note Display Extra (Speed) */ #define PR_SPEED 0x00200000L /** @def PR_STUDY * @note Display Extra (Study) */ #define PR_STUDY 0x00400000L /** @def PR_SANITY * @note Display Sanity */ #define PR_SANITY 0x00800000L /** @def PR_EXTRA * @note Display Extra Info */ #define PR_EXTRA 0x01000000L /** @def PR_BASIC * @note Display Basic Info */ #define PR_BASIC 0x02000000L /** @def PR_MAP * @note Display Map */ #define PR_MAP 0x04000000L /** @def PR_WIPE * @note Hack -- Total Redraw */ #define PR_WIPE 0x08000000L /** @def PR_MH * @note Display Monster hitpoints */ #define PR_MH 0x10000000L /** @def PR_MH * @note Display Monster hitpoints */ #define PR_MH 0x10000000L /** @def PR_DTRAP * @note Display Extra (DTrap) */ #define PR_DTRAP 0x20000000L /* xxx */ /* xxx */ /** @} */ /** @name Window flags * @brief Bit flags for the "p_ptr->window" variable (etc) * @{ */ /** @def PW_INVEN * @note Display inven/equip */ #define PW_INVEN 0x00000001L /** @def PW_EQUIP * @note Display equip/inven */ #define PW_EQUIP 0x00000002L /* xxx */ /** @def PW_PLAYER * @note Display character */ #define PW_PLAYER 0x00000008L /** @def PW_M_LIST * @note Show monster list */ #define PW_M_LIST 0x00000010L /* xxx */ /** @def PW_MESSAGE * @note Display messages */ #define PW_MESSAGE 0x00000040L /** @def PW_OVERHEAD * @note Display overhead view */ #define PW_OVERHEAD 0x00000080L /** @def PW_MONSTER * @note Display monster recall */ #define PW_MONSTER 0x00000100L /** @def PW_OBJECT * @note Display object recall */ #define PW_OBJECT 0x00000200L /* xxx */ /** @def PW_SNAPSHOT * @note Display snap-shot */ #define PW_SNAPSHOT 0x00000800L /* xxx */ /* xxx */ /** @def PW_BORG_1 * @note Display borg messages */ #define PW_BORG_1 0x00004000L /** @def PW_BORG_2 * @note Display borg status */ #define PW_BORG_2 0x00008000L /** @} */ /** @struct deity_type */ struct deity_type { /** @structvar name * @brief String */ cptr name; }; /** @var deity_info[max_gods] * @brief deity_type * @note Array of gods. */ extern deity_type deity_info[max_gods]; /** @name Body parts * @{ */ /** @def BODY_WEAPON */ #define BODY_WEAPON 0 /** @def BODY_TORSO */ #define BODY_TORSO 1 /** @def BODY_ARMS */ #define BODY_ARMS 2 /** @def BODY_FINGER */ #define BODY_FINGER 3 /** @def BODY_HEAD */ #define BODY_HEAD 4 /** @def BODY_LEGS */ #define BODY_LEGS 5 /** @def BODY_MAX */ #define BODY_MAX 6 /** @} */ /** @struct player_type */ struct player_type { /** @structvar lives * @brief Number * @note How many times we resurected */ s32b lives; /** @structvar oldpy * @brief Number * @note Previous player location -KMW- */ s16b oldpy; /** @structvar oldpx * @brief Number * @note Previous player location -KMW- */ s16b oldpx; /** @structvar py * @brief Number * @note Player location */ s16b py; /** @structvar px * @brief Number * @note Player location */ s16b px; /** @structvar psex * @brief Number * @note Sex index */ byte psex; /** @structvar prace * @brief Number * @note Race index */ byte prace; /** @structvar pracem * @brief Number * @note Race Mod index */ byte pracem; /** @structvar pclass * @brief Number * @note Class index */ byte pclass; /** @structvar mimic_form * @brief Number * @note Actualy transformation */ byte mimic_form; /** @structvar mimic_level * @brief Number * @note Level of the mimic effect */ s16b mimic_level; /** @structvar oops * @brief Number * @note Unused */ byte oops; object_type inventory[INVEN_TOTAL] @inventory_real; /** @structvar hitdie * @brief Number * @note Hit dice (sides) */ byte hitdie; /** @structvar expfact * @brief Number * @note Experience factor */ u16b expfact; /** @structvar allow_one_death * @brief Number * @note Blood of life */ byte allow_one_death; /** @structvar age * @brief Number * @note Characters age */ s16b age; /** @structvar ht * @brief Number * @note Height */ s16b ht; /** @structvar wt * @brief Number * @note Weight */ s16b wt; /** @structvar sc * @brief Number * @note Social Class */ s16b sc; /** @structvar au * @brief Number * @note Current Gold */ s32b au; /** @structvar max_exp * @brief Number * @note Max experience */ s32b max_exp; /** @structvar exp * @brief Number * @note Cur experience */ s32b exp; /** @structvar exp_frac * @brief Number * @note Cur exp frac (times 2^16) */ u16b exp_frac; /** @structvar lev * @brief Number * @note Level */ s16b lev; /** @structvar town_num * @brief Number * @note Current town number */ s16b town_num; /** @structvar inside_quest * @brief Number * @note Inside quest level */ s16b inside_quest; /** @structvar exit_bldg * @brief Boolean * @note Goal obtained in arena? -KMW- */ bool exit_bldg; /** @structvar wilderness_x * @brief Number * @note Coordinates in the wilderness */ s32b wilderness_x; /** @structvar wilderness_y * @brief Number */ s32b wilderness_y; /** @structvar wild_mode * @brief Boolean * @note TRUE = Small map, FLASE = Big map */ bool wild_mode; /** @structvar old_wild_mode * @brief Boolean * @note TRUE = Small map, FLASE = Big map */ bool old_wild_mode; /** @structvar mhp * @brief Number * @note Max hit pts */ s16b mhp; /** @structvar chp * @brief Number * @note Cur hit pts */ s16b chp; /** @structvar chp_frac * @brief Number * @note Cur hit frac (times 2^16) */ u16b chp_frac; /** @structvar hp_mod * @brief Number * @note A modificator(permanent) */ s16b hp_mod; /** @structvar msp * @brief Number * @note Max mana pts */ s16b msp; /** @structvar csp * @brief Number * @note Cur mana pts */ s16b csp; /** @structvar csp_frac * @brief Number * @note Cur mana frac (times 2^16) */ u16b csp_frac; /** @structvar msane * @brief Number * @note Max sanity */ s16b msane; /** @structvar csane * @brief Number * @note Cur sanity */ s16b csane; /** @structvar csane_frac * @brief Number * @note Cur sanity frac */ u16b csane_frac; /** @structvar grace * @brief Number * @note Your God's appreciation factor. */ s32b grace; /** @structvar pgod * @brief Number * @note Your God. */ byte pgod; /** @structvar praying * @brief Boolean * @note Praying to your god. */ bool praying; /** @structvar max_plv * @brief Number * @note Max Player Level */ s16b max_plv; /** @structvar stat_max[6] * @brief Number * @note Current "maximal" stat values */ s16b stat_max[6]; /** @structvar stat_cur[6] * @brief Number * @note Current "natural" stat values */ s16b stat_cur[6]; /** @structvar luck_cur * @brief Number * @note Current "natural" luck value (range -30 <> 30) */ s16b luck_cur; /** @structvar luck_max * @brief Number * @note Current "maximal base" luck value (range -30 <> 30) */ s16b luck_max; /** @structvar luck_base * @brief Number * @note Current "base" luck value (range -30 <> 30) */ s16b luck_base; /** @structvar fast * @brief Number * @note Timed -- Fast */ s16b fast; /** @structvar lightspeed * @brief Number * @note Timed -- Light Speed */ s16b lightspeed; /** @structvar slow * @brief Number * @note Timed -- Slow */ s16b slow; /** @structvar blind * @brief Number * @note Timed -- Blindness */ s16b blind; /** @structvar paralyzed * @brief Number * @note Timed -- Paralysis */ s16b paralyzed; /** @structvar confused * @brief Number * @note Timed -- Confusion */ s16b confused; /** @structvar afraid * @brief Number * @note Timed -- Fear */ s16b afraid; /** @structvar image * @brief Number * @note Timed -- Hallucination */ s16b image; /** @structvar poisoned * @brief Number * @note Timed -- Poisoned */ s16b poisoned; /** @structvar cut * @brief Number * @note Timed -- Cut */ s16b cut; /** @structvar stun * @brief Number * @note Timed -- Stun */ s16b stun; /** @structvar protevil * @brief Number * @note Timed -- Protection from Evil */ s16b protevil; /** @structvar protgood * @brief Number * @note Timed -- Protection from Good */ s16b protgood; /** @structvar protundead * @brief Number * @note Timed -- Protection from Undead */ s16b protundead; /** @structvar invuln * @brief Number * @note Timed -- Invulnerable */ s16b invuln; /** @structvar hero * @brief Number * @note Timed -- Heroism */ s16b hero; /** @structvar shero * @brief Number * @note Timed -- Super Heroism */ s16b shero; /** @structvar shield * @brief Number * @note Timed -- Shield Spell */ s16b shield; /** @structvar shield_power * @brief Number * @note Timed -- Shield Spell Power */ s16b shield_power; /** @structvar shield_opt * @brief Number * @note Timed -- Shield Spell options */ s16b shield_opt; /** @structvar blessed * @brief Number * @note Timed -- Blessed */ s16b blessed; /** @structvar tim_invis * @brief Number * @note Timed -- See Invisible */ s16b tim_invis; /** @structvar tim_infra * @brief Number * @note Timed -- Infra Vision */ s16b tim_infra; /** @structvar oppose_acid * @brief Number * @note Timed -- oppose acid */ s16b oppose_acid; /** @structvar oppose_elec * @brief Number * @note Timed -- oppose lightning */ s16b oppose_elec; /** @structvar oppose_fire * @brief Number * @note Timed -- oppose heat */ s16b oppose_fire; /** @structvar oppose_cold * @brief Number * @note Timed -- oppose cold */ s16b oppose_cold; /** @structvar oppose_pois * @brief Number * @note Timed -- oppose poison */ s16b oppose_pois; /** @structvar oppose_ld * @brief Number * @note Timed -- oppose light & dark */ s16b oppose_ld; /** @structvar oppose_cc * @brief Number * @note Timed -- oppose chaos & confusion */ s16b oppose_cc; /** @structvar oppose_ss * @brief Number * @note Timed -- oppose sound & shards */ s16b oppose_ss; /** @structvar oppose_nex * @brief Number * @note Timed -- oppose nexus */ s16b oppose_nex; /** @structvar tim_esp * @brief Number * @note Timed ESP */ s16b tim_esp; /** @structvar tim_wraith * @brief Number * @note Timed wraithform */ s16b tim_wraith; /** @structvar tim_ffall * @brief Number * @note Timed Levitation */ s16b tim_ffall; /** @structvar tim_fly * @brief Number * @note Timed Levitation */ s16b tim_fly; /** @structvar tim_fire_aura * @brief Number * @note Timed Fire Aura */ s16b tim_fire_aura; /** @structvar tim_regen * @brief Number * @note Timed regen */ s16b tim_regen; /** @structvar tim_regen_pow * @brief Number * @note Timed regen */ s16b tim_regen_pow; /** @structvar tim_poison * @brief Number * @note Timed poison hands */ s16b tim_poison; /** @structvar tim_thunder * @brief Number * @note Timed thunderstorm */ s16b tim_thunder; /** @structvar tim_thunder_p1 * @brief Number * @note Timed thunderstorm */ s16b tim_thunder_p1; /** @structvar tim_thunder_p2 * @brief Number * @note Timed thunderstorm */ s16b tim_thunder_p2; /** @structvar resist_magic * @brief Number * @note Timed Resist Magic (later) */ s16b resist_magic; /** @structvar tim_invisible * @brief Number * @note Timed Invisibility */ s16b tim_invisible; /** @structvar tim_inv_pow * @brief Number * @note Power of timed invisibility */ s16b tim_inv_pow; /** @structvar tim_mimic * @brief Number * @note Timed Mimic */ s16b tim_mimic; /** @structvar tim_lite * @brief Number * @note Timed Lite */ s16b tim_lite; /** @structvar holy * @brief Number * @note Holy Aura */ s16b holy; /** @structvar walk_water * @brief Number * @note Walk over water as a god */ s16b walk_water; /** @structvar tim_mental_barrier * @brief Number * @note Sustain Int&Wis */ s16b tim_mental_barrier; /** @structvar strike * @brief Number * @note True Strike(+25 hit) */ s16b strike; /** @structvar meditation * @brief Number * @note Meditation(+50 mana -25 to hit/to dam) */ s16b meditation; /** @structvar tim_reflect * @brief Number * @note Timed Reflection */ s16b tim_reflect; /** @structvar tim_res_time * @brief Number * @note Timed Resistance to Time */ s16b tim_res_time; /** @structvar tim_deadly * @brief Number * @note Timed deadly blow */ s16b tim_deadly; /** @structvar prob_travel * @brief Number * @note Timed probability travel */ s16b prob_travel; /** @structvar disrupt_shield * @brief Number * @note Timed disruption shield */ s16b disrupt_shield; /** @structvar parasite * @brief Number * @note Timed parasite */ s16b parasite; /** @structvar parasite_r_idx * @brief Number * @note Timed parasite monster */ s16b parasite_r_idx; /** @structvar loan * @brief Number */ u32b loan; /** @structvar loan_time * @brief Number * @note Timer -- loan */ u32b loan_time; /** @structvar tim_magic_breath * @brief Number * @note Magical breathing -- can breath anywhere */ s16b tim_magic_breath; /** @structvar tim_water_breath * @brief Number * @note Water breathing -- can breath underwater */ s16b tim_water_breath; /** @structvar immov_cntr * @brief Number * @note Timed -- Last ``immovable'' command. */ s16b immov_cntr; /** @structvar music_extra * @brief Number * @note Music songs */ u32b music_extra; /** @structvar music_extra2 * @brief Number * @note Music songs */ u32b music_extra2; /** @structvar chaos_patron * @brief Number */ s16b chaos_patron; /** @structvar recall_dungeon * @brief Number * @note Recall in which dungeon */ s16b recall_dungeon; /** @structvar word_recall * @brief Number * @note Word of recall counter */ s16b word_recall; /** @structvar energy * @brief Number * @note Current energy */ s32b energy; /** @structvar food * @brief Number * @note Current nutrition */ s16b food; /** @structvar confusing * @brief Number * @note Glowing hands */ byte confusing; /** @structvar searching * @brief Number * @note Currently searching */ byte searching; /** @structvar new_spells * @brief Number * @note Number of spells available */ s16b new_spells; /** @structvar old_spells * @brief Number */ s16b old_spells; /** @structvar xtra_spells * @brief Number * @note Number of xtra spell learned(via potion) */ s16b xtra_spells; /** @structvar cur_lite * @brief Number * @note Radius of lite (if any) */ s16b cur_lite; /*** Extra flags -- used for lua and easying stuff ***/ /** @structvar xtra_f1 * @brief Number */ u32b xtra_f1; /** @structvar xtra_f2 * @brief Number */ u32b xtra_f2; /** @structvar xtra_f3 * @brief Number */ u32b xtra_f3; /** @structvar xtra_f4 * @brief Number */ u32b xtra_f4; /** @structvar xtra_f5 * @brief Number */ u32b xtra_f5; /** @structvar xtra_esp * @brief Number */ u32b xtra_esp; /** @structvar pspeed * @brief Number * @note Current speed */ s16b pspeed; /** @structvar notice * @brief Number * @note Special Updates (bit flags) */ u32b notice; /** @structvar update * @brief Number * @note Pending Updates (bit flags) */ u32b update; /** @structvar redraw * @brief Number * @note Normal Redraws (bit flags) */ u32b redraw; /** @structvar window * @brief Number * @note Window Redraws (bit flags) */ u32b window; /** @structvar stat_use[6] * @brief Number * @note Current modified stats */ s16b stat_use[6]; /** @structvar stat_top[6] * @brief Number * @note Maximal modified stats */ s16b stat_top[6]; /** @structvar stat_add[6] * @brief Number * @note Modifiers to stat values */ s16b stat_add[6]; /** @structvar stat_ind[6] * @brief Number * @note Indexes into stat tables */ s16b stat_ind[6]; /** @structvar stat_cnt[6] * @brief Number * @note Counter for temporary drains */ s16b stat_cnt[6]; /** @structvar stat_los[6] * @brief Number * @note Amount of temporary drains */ s16b stat_los[6]; /** @structvar immune_acid * @brief Boolean * @note Immunity to acid */ bool immune_acid; /** @structvar immune_elec * @brief Boolean * @note Immunity to lightning */ bool immune_elec; /** @structvar immune_fire * @brief Boolean * @note Immunity to fire */ bool immune_fire; /** @structvar immune_cold * @brief Boolean * @note Immunity to cold */ bool immune_cold; /** @structvar immune_neth * @brief Boolean * @note Immunity to nether */ bool immune_neth; /** @structvar resist_acid * @brief Boolean * @note Resist acid */ bool resist_acid; /** @structvar resist_elec * @brief Boolean * @note Resist lightning */ bool resist_elec; /** @structvar resist_fire * @brief Boolean * @note Resist fire */ bool resist_fire; /** @structvar resist_cold * @brief Boolean * @note Resist cold */ bool resist_cold; /** @structvar resist_pois * @brief Boolean * @note Resist poison */ bool resist_pois; /** @structvar resist_conf * @brief Boolean * @note Resist confusion */ bool resist_conf; /** @structvar resist_sound * @brief Boolean * @note Resist sound */ bool resist_sound; /** @structvar resist_lite * @brief Boolean * @note Resist light */ bool resist_lite; /** @structvar resist_dark * @brief Boolean * @note Resist darkness */ bool resist_dark; /** @structvar resist_chaos * @brief Boolean * @note Resist chaos */ bool resist_chaos; /** @structvar resist_disen * @brief Boolean * @note Resist disenchant */ bool resist_disen; /** @structvar resist_shard * @brief Boolean * @note Resist shards */ bool resist_shard; /** @structvar resist_nexus * @brief Boolean * @note Resist nexus */ bool resist_nexus; /** @structvar resist_blind * @brief Boolean * @note Resist blindness */ bool resist_blind; /** @structvar resist_neth * @brief Boolean * @note Resist nether */ bool resist_neth; /** @structvar resist_fear * @brief Boolean * @note Resist fear */ bool resist_fear; /** @structvar resist_continuum * @brief Boolean * @note Resist space-time continuum disruption */ bool resist_continuum; /** @structvar sensible_fire * @brief Boolean * @note Fire does more damage on the player */ bool sensible_fire; /** @structvar sensible_lite * @brief Boolean * @note Lite does more damage on the player and blinds her/him */ bool sensible_lite; /** @structvar reflect * @brief Boolean * @note Reflect 'bolt' attacks */ bool reflect; /** @structvar sh_fire * @brief Boolean * @note Fiery 'immolation' effect */ bool sh_fire; /** @structvar sh_elec * @brief Boolean * @note Electric 'immolation' effect */ bool sh_elec; /** @structvar wraith_form * @brief Boolean * @note wraithform */ bool wraith_form; /** @structvar anti_magic * @brief Boolean * @note Anti-magic */ bool anti_magic; /** @structvar anti_tele * @brief Boolean * @note Prevent teleportation */ bool anti_tele; /** @structvar sustain_str * @brief Boolean * @note Keep strength */ bool sustain_str; /** @structvar sustain_int * @brief Boolean * @note Keep intelligence */ bool sustain_int; /** @structvar sustain_wis * @brief Boolean * @note Keep wisdom */ bool sustain_wis; /** @structvar sustain_dex * @brief Boolean * @note Keep dexterity */ bool sustain_dex; /** @structvar sustain_con * @brief Boolean * @note Keep constitution */ bool sustain_con; /** @structvar sustain_chr * @brief Boolean * @note Keep charisma */ bool sustain_chr; /** @structvar aggravate * @brief Boolean * @note Aggravate monsters */ bool aggravate; /** @structvar teleport * @brief Boolean * @note Random teleporting */ bool teleport; /** @structvar exp_drain * @brief Boolean * @note Experience draining */ bool exp_drain; /** @structvar drain_mana * @brief Number * @note mana draining */ byte drain_mana; /** @structvar drain_life * @brief Number * @note hp draining */ byte drain_life; /** @structvar magical_breath * @brief Boolean * @note Magical breathing -- can breath anywhere */ bool magical_breath; /** @structvar water_breath * @brief Boolean * @note Water breathing -- can breath underwater */ bool water_breath; /** @structvar climb * @brief Boolean * @note Can climb mountains */ bool climb; /** @structvar fly * @brief Boolean * @note Can fly over some features */ bool fly; /** @structvar ffall * @brief Boolean * @note No damage falling */ bool ffall; /** @structvar lite * @brief Boolean * @note Permanent light */ bool lite; /** @structvar free_act * @brief Boolean * @note Never paralyzed */ bool free_act; /** @structvar see_inv * @brief Boolean * @note Can see invisible */ bool see_inv; /** @structvar regenerate * @brief Boolean * @note Regenerate hit pts */ bool regenerate; /** @structvar hold_life * @brief Boolean * @note Resist life draining */ bool hold_life; /** @structvar telepathy * @brief Number * @note Telepathy */ u32b telepathy; /** @structvar slow_digest * @brief Boolean * @note Slower digestion */ bool slow_digest; /** @structvar bless_blade * @brief Boolean * @note Blessed blade */ bool bless_blade; /** @structvar xtra_might * @brief Number * @note Extra might bow */ byte xtra_might; /** @structvar impact * @brief Boolean * @note Earthquake blows */ bool impact; /** @structvar auto_id * @brief Boolean * @note Auto id items */ bool auto_id; /** @structvar dis_to_h * @brief Number * @note Known bonus to hit */ s16b dis_to_h; /** @structvar dis_to_d * @brief Number * @note Known bonus to dam */ s16b dis_to_d; /** @structvar dis_to_a * @brief Number * @note Known bonus to ac */ s16b dis_to_a; /** @structvar dis_ac * @brief Number * @note Known base ac */ s16b dis_ac; /** @structvar to_m * @brief Number * @note Bonus to mana */ s16b to_m; /** @structvar to_s * @brief Number * @note Bonus to spell */ s16b to_s; /** @structvar to_h * @brief Number * @note Bonus to hit */ s16b to_h; /** @structvar to_d * @brief Number * @note Bonus to dam */ s16b to_d; /** @structvar to_a * @brief Number * @note Bonus to ac */ s16b to_a; /** @structvar to_h_melee * @brief Number * @note Bonus to hit */ s16b to_h_melee; /** @structvar to_d_melee * @brief Number * @note Bonus to dam */ s16b to_d_melee; /** @structvar to_h_ranged * @brief Number * @note Bonus to hit */ s16b to_h_ranged; /** @structvar to_d_ranged * @brief Number * @note Bonus to dam */ s16b to_d_ranged; /** @structvar num_blow * @brief Number * @note Number of blows */ s16b num_blow; /** @structvar num_fire * @brief Number * @note Number of shots */ s16b num_fire; /** @structvar ac * @brief Number * @note Base ac */ s16b ac; /** @structvar antimagic * @brief Number * @note Power of the anti magic field */ byte antimagic; /** @structvar antimagic_dis * @brief Number * @note Radius of the anti magic field */ byte antimagic_dis; /** @structvar see_infra * @brief Number * @note Infravision range */ s16b see_infra; /** @structvar skill_dis * @brief Number * @note Skill: Disarming */ s16b skill_dis; /** @structvar skill_dev * @brief Number * @note Skill: Magic Devices */ s16b skill_dev; /** @structvar skill_sav * @brief Number * @note Skill: Saving throw */ s16b skill_sav; /** @structvar skill_stl * @brief Number * @note Skill: Stealth factor */ s16b skill_stl; /** @structvar skill_srh * @brief Number * @note Skill: Searching ability */ s16b skill_srh; /** @structvar skill_fos * @brief Number * @note Skill: Searching frequency */ s16b skill_fos; /** @structvar skill_thn * @brief Number * @note Skill: To hit (normal) */ s16b skill_thn; /** @structvar skill_thb * @brief Number * @note Skill: To hit (shooting) */ s16b skill_thb; /** @structvar skill_tht * @brief Number * @note Skill: To hit (throwing) */ s16b skill_tht; /** @structvar skill_dig * @brief Number * @note Skill: Digging */ s16b skill_dig; /** @structvar skill_points * @brief Number */ s16b skill_points; /** @structvar control * @brief Number * @note Controlled monster */ s16b control; /** @structvar control_dir * @brief Number * @note Controlled monster */ byte control_dir; /** @structvar companion_killed * @brief Number * @note Number of companion death */ s16b companion_killed; /** @structvar black_breath * @brief Boolean * @note The Tolkien's Black Breath */ bool black_breath; /** @structvar body_monster * @brief Number * @note In which body is the player */ u16b body_monster; /** @structvar body_parts[28] * @brief Number * @note Various body modifiers */ byte body_parts[28]; /** @structvar extra_body_parts[BODY_MAX] * @brief Number * @note Various body modifiers */ s16b extra_body_parts[BODY_MAX]; /** @structvar powers_mod[POWER_MAX_INIT] * @brief Boolean * @note Intrinsinc powers */ bool powers_mod[POWER_MAX_INIT]; /** @structvar powers[power_max] * @brief Boolean */ bool powers[power_max]; /** @structvar spellbinder_num * @brief Number * @note Number of spells bound */ byte spellbinder_num; /** @structvar spellbinder[4] * @brief Number * @note Spell bounds */ u32b spellbinder[4]; /** @structvar spellbinder_trigger * @brief Number * @note Spellbinder trigger condition */ byte spellbinder_trigger; /* Corruptions */ /** @structvar corruptions_aux; * @brief Boolean */ bool corruptions[max_corruptions] @ corruptions_aux; /* Astral */ /** @structvar astral * @brief Boolean * @note We started at the bottom ? */ bool astral; /*** Temporary fields ***/ /** @structvar leaving * @brief Boolean * @note True if player is leaving */ bool leaving; }; /** @name Spellbinder triggers * @{ */ /** @def SPELLBINDER_HP75 * @note Trigger spellbinder at 75% maximum hit points */ #define SPELLBINDER_HP75 1 /** @def SPELLBINDER_HP50 * @note Trigger spellbinder at 50% maximum hit points */ #define SPELLBINDER_HP50 2 /** @def SPELLBINDER_HP25 * @note Trigger spellbinder at 25% maximum hit points */ #define SPELLBINDER_HP25 3 /** @} */ /** @struct player_race */ struct player_race { /** @structvar title * @brief Number * @note Type of race */ s32b title; /** @structvar desc * @brief Number */ s32b desc; /** @structvar infra * @brief Number * @note Infra-vision range */ byte infra; }; /** @struct player_race_mod */ struct player_race_mod { /** @structvar title * @brief Number * @note Type of race mod */ s32b title; /** @structvar desc * @brief Number * @note Desc */ s32b desc; /** @structvar place * @brief Boolean * @note TRUE = race race modifier, FALSE = Race modifier race */ bool place; /** @structvar r_adj[6] * @brief Number * @note (+) Racial stat bonuses */ s16b r_adj[6]; /** @structvar luck * @brief String * @note Luck */ char luck; /** @structvar mana * @brief Number * @note Mana % */ s16b mana; /** @structvar r_dis * @brief Number * @note (+) disarming */ s16b r_dis; /** @structvar r_dev * @brief Number * @note (+) magic devices */ s16b r_dev; /** @structvar r_sav * @brief Number * @note (+) saving throw */ s16b r_sav; /** @structvar r_stl * @brief Number * @note (+) stealth */ s16b r_stl; /** @structvar r_srh * @brief Number * @note (+) search ability */ s16b r_srh; /** @structvar r_fos * @brief Number * @note (+) search frequency */ s16b r_fos; /** @structvar r_thn * @brief Number * @note (+) combat (normal) */ s16b r_thn; /** @structvar r_thb * @brief Number * @note (+) combat (shooting) */ s16b r_thb; /** @structvar r_mhp * @brief String * @note (+) Race mod hit-dice modifier */ char r_mhp; /** @structvar r_exp * @brief Number * @note (+) Race mod experience factor */ s16b r_exp; /** @structvar b_age * @brief String * @note (+) base age */ char b_age; /** @structvar m_age * @brief String * @note (+) mod age */ char m_age; /** @structvar m_b_ht * @brief String * @note (+) base height (males) */ char m_b_ht; /** @structvar m_m_ht * @brief String * @note (+) mod height (males) */ char m_m_ht; /** @structvar m_b_wt * @brief String * @note (+) base weight (males) */ char m_b_wt; /** @structvar m_m_wt * @brief String * @note (+) mod weight (males) */ char m_m_wt; /** @structvar f_b_ht * @brief String * @note (+) base height (females) */ char f_b_ht; /** @structvar f_m_ht * @brief String * @note (+) mod height (females) */ char f_m_ht; /** @structvar f_b_wt * @brief String * @note (+) base weight (females) */ char f_b_wt; /** @structvar f_m_wt * @brief String * @note (+) mod weight (females) */ char f_m_wt; /** @structvar infra * @brief String * @note (+) Infra-vision range */ char infra; /** @structvar choice[2] * @brief Number * @note Legal race choices */ u32b choice[2]; /** @structvar pclass[2] * @brief Number * @note Classes allowed */ u32b pclass[2]; /** @structvar mclass[2] * @brief Number * @note Classes restricted */ u32b mclass[2]; /** @structvar powers[4] * @brief Number * @note Powers of the subrace */ s16b powers[4]; /** @structvar body_parts[BODY_MAX] * @brief String * @note To help to decide what to use when body changing */ char body_parts[BODY_MAX]; /** @structvar flags1 * @brief Number */ u32b flags1; /** @structvar flags2 * @brief Number * @note flags */ u32b flags2; /** @structvar oflags1[51] * @brief Number */ u32b oflags1[51]; /** @structvar oflags2[51] * @brief Number */ u32b oflags2[51]; /** @structvar oflags3[51] * @brief Number */ u32b oflags3[51]; /** @structvar oflags4[51] * @brief Number */ u32b oflags4[51]; /** @structvar oflags5[51] * @brief Number */ u32b oflags5[51]; /** @structvar oesp[51] * @brief Number */ u32b oesp[51]; /** @structvar opval[51] * @brief Number */ s16b opval[51]; /** @structvar g_attr * @brief Number * @note Overlay graphic attribute */ byte g_attr; /** @structvar g_char * @brief String * @note Overlay graphic character */ char g_char; /** @structvar skill_basem[MAX_SKILLS] * @brief String */ char skill_basem[MAX_SKILLS]; /** @structvar skill_base[MAX_SKILLS] * @brief Number */ u32b skill_base[MAX_SKILLS]; /** @structvar skill_modm[MAX_SKILLS] * @brief String */ char skill_modm[MAX_SKILLS]; /** @structvar skill_mod[MAX_SKILLS] * @brief Number */ s16b skill_mod[MAX_SKILLS]; }; /** @var energy_use * @brief Number * @note Energy use for an action (0 if action does not take a turn). */ extern s32b energy_use; /** @var player; * @brief player_type * @note The player. */ extern player_type *p_ptr @ player; /** @var max_rp_idx * @brief Number * @note Maximum number of entries in player race array. */ extern u16b max_rp_idx; /** @var race_info[max_rp_idx] * @brief player_race * @note Array of player races. */ extern player_race race_info[max_rp_idx]; /** @var *rp_name * @brief String * @note Name of player race. */ extern char *rp_name; /** @var *rp_text * @brief String */ extern char *rp_text; /** @var max_rmp_idx * @brief Number * @note Maximum number of player subraces. */ extern u16b max_rmp_idx; /** @var _mod race_mod_info[max_rmp_idx] * @brief player_race * @note Array of player subraces. */ extern player_race_mod race_mod_info[max_rmp_idx]; /** @var *rmp_name * @brief String * @note Name of player subrace. */ extern char *rmp_name; /** @var *rmp_text * @brief String */ extern char *rmp_text; /** @var class_info[max_c_idx] * @brief player_class * @note Array of classes. */ extern player_class class_info[max_c_idx]; /** @var *c_name * @brief String * @note Name of player class. */ extern char *c_name; /** @var *c_text * @brief String */ extern char *c_text; /** @var flush_failure * @brief Boolean * @note TRUE if flush input on any failure, otherwise FALSE. */ extern bool flush_failure; /** @fn set_roots(int v, s16b ac, s16b dam) * @brief Player has timed roots.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param ac Number \n bonus to AC * @brief AC bonus * @param dam Number \n bonus to melee to-damage * @brief To-damage bonus * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_roots(int v, s16b ac, s16b dam); /** @fn set_shadow(int v) * @brief Player has wraith form.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_shadow(int v); /** @fn set_parasite(int v, int r) * @brief Player has timed parasite.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param r Number \n index of race in monster race array * @brief Parasite race index * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * When the time remaining reaches 0, there is an 80% chance the parasite will * be born, otherwise it will die away. * @note (see file xtra2.c) */ extern bool set_parasite(int v, int r); /** @fn set_disrupt_shield(int v) * @brief Player has timed disrupt shield (feels invulnerable).\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_disrupt_shield(int v); /** @fn set_prob_travel(int v) * @brief Player has timed probability travel.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_prob_travel(int v); /** @fn set_project(int v, s16b gf, s16b dam, s16b rad, s16b flag) * @brief Player's weapon has a spell effect.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param gf Number \n spell effect * @brief Spell effect * @param dam Number \n damage caused by spell effect * @brief Spell damage * @param rad Number \n radius of spell effect * @brief Spell radius * @param flag Number \n spell projection effect * @brief Spell properties * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_project(int v, s16b gf, s16b dam, s16b rad, s16b flag); /** @fn set_tim_deadly(int v) * @brief Player has deadly accuracy.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_deadly(int v); /** @fn set_tim_res_time(int v) * @brief Player has timed time resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_res_time(int v); /** @fn set_tim_reflect(int v) * @brief Player has timed reflection.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_reflect(int v); /** @fn set_meditation(int v) * @brief Player can meditate (forcibly pseudo-id).\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_meditation(int v); /** @fn set_strike(int v) * @brief Player has true strike.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_strike(int v); /** @fn set_walk_water(int v) * @brief Player can walk on water.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_walk_water(int v); /** @fn set_tim_ffall(int v) * @brief Player has timed levitation (feather-fall).\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_ffall(int v); /** @fn set_tim_fire_aura(int v) * @brief Player has a timed fiery aura.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_fire_aura(int v); /** @fn set_tim_regen(int v, int p) * @brief Player has timed regeneration.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p Number \n power of regeneration * @brief Regeneration power * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_regen(int v, int p); /** @fn set_holy(int v) * @brief Player has a timed holy aura.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_holy(int v); /** @fn set_grace(s32b v) * @brief Set the amount of grace a player has with a god.\n * @param v Number \n time remaining until effect expires * (must be in the range -30,000 to 30,000) * @brief Grace * @note (see file xtra2.c) */ extern void set_grace(s32b v); /** @fn set_mimic(int v, int p, int level) * @brief Player has mimic form.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p Number \n the mimic form * @brief Mimic form * @param level Number \n the level of the mimic form * @brief Mimic level * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_mimic(int v, int p, int level); /** @fn set_no_breeders(int v) * @brief Player has timed breeder prevention.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_no_breeders(int v); /** @fn set_tim_esp(int v) * @brief Player has timed ESP.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_esp(int v); /** @fn set_invis(int v, int p) * @brief Player has timed invisibility.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p Number \n power of invisibility * @brief Invisibility power * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_invis(int v, int p); /** @fn set_lite(int v) * @brief Player has timed light.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Note the use of "PU_VIEW", which is needed to * memorize any terrain features which suddenly become "visible". * @note * Note that blindness is currently the only thing which can affect * "player_can_see_bold()". * @note (see file xtra2.c) */ extern bool set_lite(int v); /** @fn set_blind(int v) * @brief Player has timed blindness.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Note the use of "PU_UN_VIEW", which is needed to memorize any terrain * features which suddenly become "visible". * @note * Note that blindness is currently the only thing which can affect * "player_can_see_bold()". * @note (see file xtra2.c) */ extern bool set_blind(int v); /** @fn set_confused(int v) * @brief Player has timed confusion.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_confused(int v); /** @fn set_poisoned(int v) * @brief Player has timed poisoning.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_poisoned(int v); /** @fn set_afraid(int v) * @brief Player has timed fear.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_afraid(int v); /** @fn set_paralyzed(int v) * @brief Player has timed paralysis.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_paralyzed(int v); /** @fn set_image(int v) * @brief Player has timed hallucination.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Note that we must redraw the map when hallucination changes. * @note (see file xtra2.c) */ extern bool set_image(int v); /** @fn set_fast(int v, int p) * @brief Player has timed speed boost.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p Number \n speed factor * @brief Speed factor * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_fast(int v, int p); /** @fn set_light_speed(int v) * @brief Player has timed light speed.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_light_speed(int v); /** @fn set_slow(int v) * @brief Player has timed slowness.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_slow(int v); /** @fn set_shield(int v, int p, s16b o, s16b d1, s16b d2) * @brief Player has timed mystic shield.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p Number \n bonus to AC * @brief AC bonus * @param o Number \n type of shield (see SHIELD_foo fields) * @brief Shield type * @param d1 Number \n number of dice for damage roll * @brief Damage dice * @param d2 Number \n number of sides per die for damage roll * @brief Damage sides * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_shield(int v, int p, s16b o, s16b d1, s16b d2); /* For calc_bonus hooks */ /** @fn apply_flags(u32b f1, u32b f2, u32b f3, u32b f4, u32b f5, u32b esp, s16b pval = 0, s16b tval = 0, s16b to_h = 0, s16b to_d = 0, s16b to_a = 0) * @brief Apply flags and values to the player.\n * @param f1 Number \n flags to be applied to the player * @brief Flag1 * @param f2 Number \n flags to be applied to the player * @brief Flag2 * @param f3 Number \n flags to be applied to the player * @brief Flag3 * @param f4 Number \n flags to be applied to the player * @brief Flag4 * @param f5 Number \n flags to be applied to the player * @brief Flag5 * @param esp Number \n ESP flag * @brief Esp flag * @param pval Number \n PVal to be applied to the player * @brief Pval * @param tval Number \n TVal to be applied to the player * @brief Tval * @param to_h Number \n to-hit bonus to be applied to the player * @brief To-hit * @param to_d Number \n to-damage bonus to be applied to the player * @brief To-damage * @param to_a Number \n AC bonus to be applied to the player * @brief AC * @note * f1 can apply to attribuets, spell power, mana capacity, stealth, searching * ability and frequency, infravision, digging, speed, extra blows, and * earthquakes. * @note * f2 can apply to life capacity, sensible fire, invisibility, free action, * hold life, immunities (except neither), resistances, reflection, and * sustains. * @note * f3 can apply to extra shots, aggravate, teleport, drain XP, blessed, extra * might, slow digestion, regeneration, lite, see invisible, wraith form, * feather fall, fire sheath, electricity sheath, anti magic, and anti * teleport. * @note * f4 can apply to lite, flying, climbing, nether immunity, precognition, and * anti-magic power and radius. * @note * f5 can apply to luck, critical hits, drain mana, drain life, immovable, * water breath, and magic breath. * @note * esp can apply to, well, just telepathy. * @note * pval can apply to attributes, luck, spell power, mana capacity, life * capacity, stealth, search ability and frequency (x 5), infravision, digging * (x 20), speed, extra blows, critical blows, invisibility (x 10), extra * might, anti-magic power and radius. * @note * tval can apply to lite * @note * to_h, to_d, and to_ac can apply to anti-magic power and radius. * @note (see file xtra1.c) */ extern void apply_flags(u32b f1, u32b f2, u32b f3, u32b f4, u32b f5, u32b esp, s16b pval = 0, s16b tval = 0, s16b to_h = 0, s16b to_d = 0, s16b to_a = 0); /** @name Shield effect options * @{ */ /** @def SHIELD_NONE */ #define SHIELD_NONE 0x0000 /** @def SHIELD_COUNTER */ #define SHIELD_COUNTER 0x0001 /** @def SHIELD_FIRE */ #define SHIELD_FIRE 0x0002 /** @def SHIELD_GREAT_FIRE */ #define SHIELD_GREAT_FIRE 0x0004 /** @def SHIELD_FEAR */ #define SHIELD_FEAR 0x0008 /** @} */ /** @fn set_tim_thunder(int v, int p1, int p2) * @brief Player has timed thunderstorm.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param p1 Number \n number of dice for damage roll * @brief Damage dice * @param p2 Number \n number of sides per die for damage roll * @brief Damage sides * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_thunder(int v, int p1, int p2); /** @fn set_tim_breath(int v, bool magical) * @brief Player has timed magic/water breath.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @param magical Boolean \n TRUE if player has magic breath, or FALSE if the * player has water breath * @brief Magic breath? * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_breath(int v, bool magical); /** @fn set_tim_fly(int v) * @brief Player has timed flight.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_fly(int v); /** @fn set_blessed(int v) * @brief Player has timed blessing.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Blessing gives +5 bonus AC and +10 bonus to-hit. * @note (see file xtra2.c) */ extern bool set_blessed(int v); /** @fn set_hero(int v) * @brief Player has timed heroism.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Heroism gives +10 bonus max HP, +12 bonus to-hit, and resist fear. * @note (see file xtra2.c) */ extern bool set_hero(int v); /** @fn set_shero(int v) * @brief Player has timed berserk strength.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Berserk strength gives +30 bonus max HP, +24 bonus to-hit, -10 penalty AC, * and resist fear. * @note (see file xtra2.c) */ extern bool set_shero(int v); /** @fn set_protevil(int v) * @brief Player has timed protection from evil.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Protection from evil gives the player a chance to repel evil monsters. * @note (see file xtra2.c) */ extern bool set_protevil(int v); /** @fn set_protgood(int v) * @brief Player has timed protection from good.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Protection from good gives the player a chance to repel good monsters. * @note (see file xtra2.c) */ extern bool set_protgood(int v); /** @fn set_protundead(int v) * @brief Player has timed protection from undead.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Protection from undead protects against getting the Black Breath in a melee * attack. * @note (see file xtra2.c) */ extern bool set_protundead(int v); /** @fn set_invuln(int v) * @brief Player has timed invulnerability.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Invulnerability prevents damage from walking on lava, walking the Straight * Road, poison, cuts, and starvation. It gives +100 bonus to AC. * @note * It can be ended by the player attacking a monster, firing a missile, * throwing an object, or activating a power. * @note (see file xtra2.c) */ extern bool set_invuln(int v); /** @fn set_tim_invis(int v) * @brief Player has timed "see invisibile".\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_invis(int v); /** @fn set_tim_infra(int v) * @brief Player has timed infravision.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_tim_infra(int v); /** @fn set_mental_barrier(int v) * @brief Player has timed mental barrier.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Mental barrier sustains intelligence and wisdom. * @note (see file xtra2.c) */ extern bool set_mental_barrier(int v); /** @fn set_poison(int v) * @brief Player has timed poison hands.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_poison(int v); /** @fn set_oppose_acid(int v) * @brief Player has timed acid resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_acid(int v); /** @fn set_oppose_elec(int v) * @brief Player has timed electricity resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_elec(int v); /** @fn set_oppose_fire(int v) * @brief Player has timed fire resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_fire(int v); /** @fn set_oppose_cold(int v) * @brief Player has timed cold resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_cold(int v); /** @fn set_oppose_pois(int v) * @brief Player has timed poison resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_pois(int v); /** @fn set_oppose_ld(int v) * @brief Player has timed light and dark resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_ld(int v); /** @fn set_oppose_cc(int v) * @brief Player has timed chaos and confusion resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_cc(int v); /** @fn set_oppose_ss(int v) * @brief Player has timed sound and shard resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_ss(int v); /** @fn set_oppose_nex(int v) * @brief Player has timed nexus resistance.\n * @param v Number \n time remaining until effect expires * (must be in the range 0 to 10,000) * @brief Time remaining * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note (see file xtra2.c) */ extern bool set_oppose_nex(int v); /** @fn set_stun(int v) * @brief Player stun level changes.\n * @param v Number \n the level of stun (must be in the range 0 to 10,000) * @brief Stun level * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Note the special code to only notice "range" changes. * @note * Some races resist stunning. * @note * There is a v chance in 1000 or 1 in 16 that a stun will be the result of * a vicious blow to the head. If so, the player will lose a point of * intelligence, or wisdom, or both unless the stat is sustained. * @note (see file xtra2.c) */ extern bool set_stun(int v); /** @fn set_cut(int v) * @brief Player cut level changes.\n * @param v Number \n the level of cut (must be in the range 0 to 10,000) * @brief Cut level * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * Note the special code to only notice "range" changes. * @note * Some races resist cutting. * @note * There is a v chance in 1000 or 1 in 16 that a cut will result in scarrring. * If so, the player will lose a point of charisma unless it is sustained. * @note (see file xtra2.c) */ extern bool set_cut(int v); /** @fn set_food(int v) * @brief Player hunger level changes.\n * @param v Number \n the level of cut (must be in the range 0 to 10,000) * @brief Cut level * @return Boolean \n TRUE if player notices the effect, otherwise FALSE. * @note * The "p_ptr->food" variable can get as large as 20000, allowing the * addition of the most "filling" item, Elvish Waybread, which adds * 7500 food units, without overflowing the 32767 maximum limit. * @note * Perhaps we should disturb the player with various messages, * especially messages about hunger status changes. XXX XXX XXX * @note * Digestion of food is handled in "dungeon.c", in which, normally, * the player digests about 20 food units per 100 game turns, more * when "fast", more when "regenerating", less with "slow digestion", * but when the player is "gorged", he digests 100 food units per 10 * game turns, or a full 1000 food units per 100 game turns. * @note * Note that the player's speed is reduced by 10 units while gorged, * so if the player eats a single food ration (5000 food units) when * full (15000 food units), he will be gorged for (5000/100)*10 = 500 * game turns, or 500/(100/5) = 25 player turns (if nothing else is * affecting the player speed). * @note (see file xtra2.c) */ extern bool set_food(int v); /** @name Hunger flags * @brief Player "food" crucial values * @{ */ /** @def PY_FOOD_MAX * @note Food value (Bloated) */ #define PY_FOOD_MAX 15000 /** @def PY_FOOD_FULL * @note Food value (Normal) */ #define PY_FOOD_FULL 10000 /** @def PY_FOOD_ALERT * @note Food value (Hungry) */ #define PY_FOOD_ALERT 2000 /** @def PY_FOOD_WEAK * @note Food value (Weak) */ #define PY_FOOD_WEAK 1000 /** @def PY_FOOD_FAINT * @note Food value (Fainting) */ #define PY_FOOD_FAINT 500 /** @def PY_FOOD_STARVE * @note Food value (Starving) */ #define PY_FOOD_STARVE 100 /** @} */ /** @fn check_experience(void) * @brief Check if player experience level has changed.\n * @note * If a player has achieved a level for the first time, give a corruption * (1 chance in 3) if it applies, increase skill points, check ability levels, * and add a note if notes are taken. * @note (see file xtra2.c) */ extern void check_experience(void); /** @fn check_experience_obj(object_type *o_ptr) * @brief Check if object "o_ptr" experience level has changed.\n * @param *o_ptr object_type \n the object * @brief Object * @note * If an object has achieved a level for the first time, apply gains. * @note (see file xtra2.c) */ extern void check_experience_obj(object_type *o_ptr); /** @fn gain_exp(s32b amount) * @brief Gain "amount" of experience.\n * @param amount Number \n the experience points to gain. * @brief Experience * @note * Count the number of objects which will gain experience. The objects share * equally 2/3 of "amount". Give corruption if it applies. Gain experience. * If experience is less than maximum, then increase maximum experience by 20% * of "amount". Check for level change and print experience (check_experience). * @note (see file xtra2.c) */ extern void gain_exp(s32b amount); /** @fn lose_exp(s32b amount) * @brief Decrease experience by "amount".\n * @param amount Number \n the experience points to lose. * @brief Experience * @note * Experience can not fall below zero. Check for level change and print * experience (check_experience). * @note (see file xtra2.c) */ extern void lose_exp(s32b amount); /** @fn no_lite(void) * @brief Return true if the player's grid is dark. * @return Boolean \n TRUE if the player's grid is dark, otherwise FALSE. * @note (see file cave.c) */ extern bool no_lite(void); /** @var dun_level * @brief Number * @note Current dungeon level */ extern s16b dun_level; /** @name Gods * @{ */ /** @def GOD_ALL */ #define GOD_ALL -1 /** @def GOD_NONE */ #define GOD_NONE 0 /** @def GOD_ERU */ #define GOD_ERU 1 /** @def GOD_MANWE */ #define GOD_MANWE 2 /** @def GOD_TULKAS */ #define GOD_TULKAS 3 /** @def GOD_MELKOR */ #define GOD_MELKOR 4 /** @def GOD_YAVANNA */ #define GOD_YAVANNA 5 /** @} */ /** @fn inc_piety(int god, s32b amt) * @brief Increase piety for god "god" by amount "amt".\n * @param god Number \n the god * @brief God * @param amt Number \n the amount of piety * @brief Piety * @note * If the player worships all gods, or "god", the piety (grace) will increase. * @note (see file gods.c) */ extern void inc_piety(int god, s32b amt); /** @fn abandon_god(int god) * @brief Player renounces their religion.\n * @param god Number \n the god * @brief God * @note * If the player worships all gods or "god", the player worships no god and * the piety score is set to 0. * @note (see file gods.c) */ extern void abandon_god(int god); /** @fn wisdom_scale(int max) * @brief Rescale the wisdom value to a 0 <-> max range.\n * @param max Number \n the new maximum value of the rescaled wisdom * @brief New maximum wisdom * @return Number \n The rescaled value of player wisdom. * @note (see file gods.c) */ extern int wisdom_scale(int max); /** @fn follow_god(int god, bool silent) * @brief Player starts to follow god "god".\n * @param god Number \n the god * @brief God * @param silent Boolean \n TRUE if Melkor message is displayed, otherwise * FALSE. * @brief Show message? * @note * Unbelievers can not follow a god. * @note * If the player does not worship a god, they start worshipping "god". If the * god is Melkor, the player gains the Udun skill (show a message if silent is * FALSE). * @note (see file gods.c) */ extern void follow_god(int god, bool silent); /** @fn add_new_gods(char *name) * @brief Add a new god to the deity array.\n * @param *name String \n the name of the god * @brief God name * @return Number \n The index of the new god inthe deity array. * @note (see file lua_bind.c) */ extern s16b add_new_gods(char *name); /** @fn desc_god(int g_idx, int d, char *desc) * @brief Return line "d" of the description of god with god index "g_idx".\n * @param g_idx Number \n the index of god in the deity array. * @brief God index * @param d Number \n the line of the description * (must be in the range 0 to 9). * @brief Line of description * @param *desc String * @brief Description * @return *desc String \n Line "d" of the god description. * @note (see file lua_bind.c) */ extern void desc_god(int g_idx, int d, char *desc); /** @name Powers * @{ */ /** @def PWR_SPIT_ACID * @note Spit acid (GF_ACID) */ #define PWR_SPIT_ACID 0 /** @def PWR_BR_FIRE * @note Breathe fire (GF_FIRE) */ #define PWR_BR_FIRE 1 /** @def PWR_HYPN_GAZE * @note Hypnotic gaze */ #define PWR_HYPN_GAZE 2 /** @def PWR_TELEKINES * @note Telekinesis (fetch an object) */ #define PWR_TELEKINES 3 /** @def PWR_VTELEPORT * @note Teleport */ #define PWR_VTELEPORT 4 /** @def PWR_MIND_BLST * @note Mind blast (GF_PSI) */ #define PWR_MIND_BLST 5 /** @def PWR_RADIATION * @note Emit radiation (GF_NUKE) */ #define PWR_RADIATION 6 /** @def PWR_VAMPIRISM * @note Vampire bite */ #define PWR_VAMPIRISM 7 /** @def PWR_SMELL_MET * @note Detect treasure */ #define PWR_SMELL_MET 8 /** @def PWR_SMELL_MON * @note Detect normal monsters */ #define PWR_SMELL_MON 9 /** @def PWR_BLINK * @note Short teleport (up to 10 grids) */ #define PWR_BLINK 10 /** @def PWR_EAT_ROCK * @note Eat rock for food (wall to mud) */ #define PWR_EAT_ROCK 11 /** @def PWR_SWAP_POS * @note Swap position with a monster */ #define PWR_SWAP_POS 12 /** @def PWR_SHRIEK * @note Shriek (GF_SOUND and aggravate) */ #define PWR_SHRIEK 13 /** @def PWR_ILLUMINE * @note Lite area */ #define PWR_ILLUMINE 14 /** @def PWR_DET_CURSE * @note Detect cursed items in inventory */ #define PWR_DET_CURSE 15 /** @def PWR_BERSERK * @note Berserk rage */ #define PWR_BERSERK 16 /** @def PWR_POLYMORPH * @note Polymorph self */ #define PWR_POLYMORPH 17 /** @def PWR_MIDAS_TCH * @note Midas touch - turn an item into gold */ #define PWR_MIDAS_TCH 18 /** @def PWR_GROW_MOLD * @note Summon mold */ #define PWR_GROW_MOLD 19 /** @def PWR_RESIST * @note Temporary elemental resist */ #define PWR_RESIST 20 /** @def PWR_EARTHQUAKE * @note Cause an earthquake (destruction) */ #define PWR_EARTHQUAKE 21 /** @def PWR_EAT_MAGIC * @note Absorb energy from magic items */ #define PWR_EAT_MAGIC 22 /** @def PWR_WEIGH_MAG * @note Report magic affecting player */ #define PWR_WEIGH_MAG 23 /** @def PWR_STERILITY * @note Player experiences forced abstinence */ #define PWR_STERILITY 24 /** @def PWR_PANIC_HIT * @note Hit a monster and run away */ #define PWR_PANIC_HIT 25 /** @def PWR_DAZZLE * @note Stun, confuse, and turn monsters */ #define PWR_DAZZLE 26 /** @def PWR_DARKRAY * @note Fire a beam of light (GF_LITE) */ #define PWR_DARKRAY 27 /** @def PWR_RECALL * @note Recall to dungeon/town */ #define PWR_RECALL 28 /** @def PWR_BANISH * @note Banish evil creatures */ #define PWR_BANISH 29 /** @def PWR_COLD_TOUCH * @note Bolt of cold (GF_COLD) */ #define PWR_COLD_TOUCH 30 /** @def PWR_LAUNCHER * @note Increase the multiplier for a thrown object */ #define PWR_LAUNCHER 31 /** @def PWR_PASSWALL * @note Walk through a wall */ #define PWR_PASSWALL 32 /** @def PWR_DETECT_TD * @note Detect traps, doors, and stairs */ #define PWR_DETECT_TD 33 /** @def PWR_COOK_FOOD * @note Create some food */ #define PWR_COOK_FOOD 34 /** @def PWR_UNFEAR * @note Remove fear */ #define PWR_UNFEAR 35 /** @def PWR_EXPL_RUNE * @note Set an explosive rune */ #define PWR_EXPL_RUNE 36 /** @def PWR_STM * @note Bash a wall (stone to mud) */ #define PWR_STM 37 /** @def PWR_POIS_DART * @note Throw a poison dart (GF_POIS) */ #define PWR_POIS_DART 38 /** @def PWR_MAGIC_MISSILE * @note Fire a magic missile (GF_MISSILE) */ #define PWR_MAGIC_MISSILE 39 /** @def PWR_GROW_TREE * @note Grow trees around the player */ #define PWR_GROW_TREE 40 /** @def PWR_BR_COLD * @note Breathe cold (GF_COLD) */ #define PWR_BR_COLD 41 /** @def PWR_BR_CHAOS * @note Breathe chaos (GF_CHAOS) */ #define PWR_BR_CHAOS 42 /** @def PWR_BR_ELEM * @note Breath elements (GF_MISSILE) */ #define PWR_BR_ELEM 43 /** @def PWR_WRECK_WORLD * @note Change the world (new level) */ #define PWR_WRECK_WORLD 44 /** @def PWR_SCARE * @note Howl to scare monsters */ #define PWR_SCARE 45 /** @def PWR_REST_LIFE * @note Restore life levels */ #define PWR_REST_LIFE 46 /** @def PWR_SUMMON_MONSTER * @note Beastmaster powers (summon pets) */ #define PWR_SUMMON_MONSTER 47 /** @def PWR_NECRO * @note Cast a necromancy spell */ #define PWR_NECRO 48 /** @def PWR_ROHAN * @note Use flash aura or light speed jump */ #define PWR_ROHAN 49 /** @def PWR_THUNDER * @note Use thunder strike, ride the straight road, or go back in town */ #define PWR_THUNDER 50 /** @def PWR_DEATHMOLD * @note Use deathmold powers:\n * (a) Teleport to a specific place\n * (b) Fetch an item\n * (c) Go up 50'\n * (d) Go down 50' */ #define PWR_DEATHMOLD 51 /** @def PWR_HYPNO * @note Hypnotise a pet */ #define PWR_HYPNO 52 /** @def PWR_UNHYPNO * @note Unhypnotise a pet */ #define PWR_UNHYPNO 53 /** @def PWR_INCARNATE * @note Incarnate into a body */ #define PWR_INCARNATE 54 /** @def PWR_MAGIC_MAP * @note Magic mapping */ #define PWR_MAGIC_MAP 55 /** @def PWR_LAY_TRAP * @note Set a trap */ #define PWR_LAY_TRAP 56 /** @def PWR_MERCHANT * @note Appraise item, warp item, or identify item */ #define PWR_MERCHANT 57 /** @def PWR_COMPANION * @note Create a companion */ #define PWR_COMPANION 58 /** @def PWR_BEAR * @note Mimic a bear */ #define PWR_BEAR 59 /** @def PWR_DODGE * @note Report chance of dodging a monster */ #define PWR_DODGE 60 /** @def PWR_BALROG * @note Mimic a balrog */ #define PWR_BALROG 61 /** @} */ /* Misc */ /** @fn do_cmd_throw(void) * @brief Throw an object from the pack or floor. * @note * Note: "unseen" monsters are very hard to hit. * @note * Should throwing a weapon do full damage? Should it allow the magic * to hit bonus of the weapon to have an effect? Should it ever cause * the item to be destroyed? Should it do any damage at all? * @note (see file cmd2.c) */ extern void do_cmd_throw(void); /** @fn change_wild_mode() * @brief Toggle between big map and little map. * @note * If the player is immovable, and the map is big, the player receives a * warning and is allowed to proceed. * @note * If the player is about to be recalled, and the map is big, the map is * not changed. * @note * The map is changed. The game is saved if autosave is set to "levels". * @note (see file spells2.c) */ extern void change_wild_mode(); /** @fn switch_class(int sclass) * @brief Change to an other class.\n * @param sclass Number \n the inex of the new class in the class array * @brief Class index * @note (see file xtra2.c) */ extern void switch_class(int sclass); /** @fn switch_subclass(int sclass) * @brief Change to an other subclass.\n * @param sclass Number \n the new subclass * @brief Subclass * @note (see file xtra2.c) */ extern void switch_subclass(int sclass); /** @fn switch_subrace(int racem, bool copy_old) * @brief Change to an other subrace.\n * @param racem Number \n index of subrace in subrace array * @brief Subrace index * @param copy_old Boolean \n TRUE if the new subrace is to be saved, * otherwise FALSE. * @brief Copy old subrace? * @note (see file xtra2.c) */ extern void switch_subrace(int racem, bool copy_old); /** @fn get_subrace_title(int racem) * @brief Return the subrace title.\n * @param racem Number \n index of subrace in subrace array * @brief Subrace index * @return String \n Title of subrace. * @note (see file xtra2.c) */ extern cptr get_subrace_title(int racem); /** @fn set_subrace_title(int racem, cptr name) * @brief Set the subrace title.\n * @param racem Number \n index of subrace in subrace array * @brief Subrace index * @param name String \n new title of subrace * @brief New title * @note (see file xtra2.c) */ extern void set_subrace_title(int racem, cptr name); /** @fn do_rebirth() * @brief The player is reborn after a class, race, or subrace change. * @note * The experience factor is recalculated. The hit dice are reset and new HP * are calculated. There may be a level change involved. * @note (see file xtra2.c) */ extern void do_rebirth(); /* Player race flags */ $static bool lua_test_race_flags(int slot, u32b flags) { if (slot == 1) return (PRACE_FLAG(flags)) ? TRUE : FALSE; else return (PRACE_FLAG2(flags)) ? TRUE : FALSE; } /** @fn test_race_flags(int slot, u32b flags); * @brief Test flag "flags" against race flags, race modifier flags, class * flags, and specialist flags.\n * @param slot Number \n 1 if testing against first set of flags (PRACE_FLAG), * 2 if testing against second set of flags (PRACE_FLAG2) * @brief Flag selecter. * @param flags Number \n the flags to be tested * @brief Test flags * @return Boolean \n TRUE if test flags match any of the corresponding race, * race modifier, class, and specialist flags. * @note (see file w_player.c) */ static bool lua_test_race_flags@test_race_flags(int slot, u32b flags); /** @name Winner states * @{ */ /** @def WINNER_NORMAL * @note Player has killed Morgoth */ #define WINNER_NORMAL 1 /** @def WINNER_ULTRA * @note Player has killed Melkor */ #define WINNER_ULTRA 2 /** @} */ /** @var wizard * @brief Boolean * @note TRUE if player currently in Wizard mode, otherwise FALSE. */ extern bool wizard; /** @var total_winner * @brief Number * @note Game has been won (see WINNER_foo fields). */ extern u16b total_winner; /** @var has_won * @brief Number * @note Game has been won (see WINNER_foo fields). */ extern u16b has_won; /** @var joke_monsters * @brief Boolean * @note TRUE if allowing joke monsters, otherwise FALSE. */ extern bool joke_monsters; extern s16b max_dlv[999999];