Macros | Functions | Variables
player-timed.c File Reference

Timed effects handling. More...

#include "angband.h"
#include "cave.h"
#include "datafile.h"
#include "init.h"
#include "mon-util.h"
#include "obj-gear.h"
#include "obj-knowledge.h"
#include "obj-util.h"
#include "player-calcs.h"
#include "player-timed.h"
#include "player-util.h"
#include "list-player-flags.h"
#include "list-player-timed.h"


#define PF(a, b, c)   #a,
#define TMD(a, b, c)   { #a, b, c },
#define TMD(a, b, c)   #a,


int timed_name_to_idx (const char *name)
static enum parser_error parse_player_timed_name (struct parser *p)
static enum parser_error parse_player_timed_desc (struct parser *p)
static enum parser_error parse_player_timed_end_message (struct parser *p)
static enum parser_error parse_player_timed_increase_message (struct parser *p)
static enum parser_error parse_player_timed_decrease_message (struct parser *p)
static enum parser_error parse_player_timed_message_type (struct parser *p)
static enum parser_error parse_player_timed_fail (struct parser *p)
static enum parser_error parse_player_timed_grade (struct parser *p)
static struct parserinit_parse_player_timed (void)
static errr run_parse_player_timed (struct parser *p)
static errr finish_parse_player_timed (struct parser *p)
static void cleanup_player_timed (void)
void player_fix_scramble (struct player *p)

Utilities for more complex or anomolous effects

bool player_set_food (struct player *p, int v)
 Set "player->food", notice observable changes. More...
bool player_set_timed (struct player *p, int idx, int v, bool notify)

Setting, increasing, decreasing and clearing timed effects

bool player_inc_check (struct player *p, int idx, bool lore)
 Check whether a timed effect will affect the player. More...
bool player_inc_timed (struct player *p, int idx, int v, bool notify, bool check)
 Increase the timed effect idx by v. More...
bool player_dec_timed (struct player *p, int idx, int v, bool notify)
 Decrease the timed effect idx by v. More...
bool player_clear_timed (struct player *p, int idx, bool notify)
 Clear the timed effect idx. More...


const char * list_player_flag_names []

Parsing functions for player_timed.txt

struct timed_effect_data timed_effects [TMD_MAX]
static const char * list_timed_effect_names []
 List of timed effect names. More...
struct file_parser player_timed_parser

Detailed Description

Timed effects handling.

Copyright (c) 1997 Ben Harrison Copyright (c) 2007 Andi Sidwell

This work is free software; you can redistribute it and/or modify it under the terms of either:

a) the GNU General Public License as published by the Free Software Foundation, version 2, or

b) the "Angband licence": This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies. Other copyrights may also apply.

Macro Definition Documentation

◆ PF

#define PF (   a,
)    #a,

◆ TMD [1/2]

#define TMD (   a,
)    { #a, b, c },

◆ TMD [2/2]

#define TMD (   a,
)    #a,

Function Documentation

◆ cleanup_player_timed()

static void cleanup_player_timed ( void  )

◆ finish_parse_player_timed()

static errr finish_parse_player_timed ( struct parser p)

References parser_destroy().

◆ init_parse_player_timed()

static struct parser* init_parse_player_timed ( void  )

◆ parse_player_timed_decrease_message()

static enum parser_error parse_player_timed_decrease_message ( struct parser p)

◆ parse_player_timed_desc()

static enum parser_error parse_player_timed_desc ( struct parser p)

◆ parse_player_timed_end_message()

static enum parser_error parse_player_timed_end_message ( struct parser p)

◆ parse_player_timed_fail()

static enum parser_error parse_player_timed_fail ( struct parser p)

◆ parse_player_timed_grade()

static enum parser_error parse_player_timed_grade ( struct parser p)

◆ parse_player_timed_increase_message()

static enum parser_error parse_player_timed_increase_message ( struct parser p)

◆ parse_player_timed_message_type()

static enum parser_error parse_player_timed_message_type ( struct parser p)

◆ parse_player_timed_name()

static enum parser_error parse_player_timed_name ( struct parser p)

◆ player_clear_timed()

bool player_clear_timed ( struct player p,
int  idx,
bool  notify 

◆ player_dec_timed()

bool player_dec_timed ( struct player p,
int  idx,
int  v,
bool  notify 

Decrease the timed effect idx by v.

Mention this if notify is true.

References player_set_timed(), player::timed, and TMD_MAX.

Referenced by decrease_timeouts(), and effect_handler_TIMED_DEC().

◆ player_fix_scramble()

void player_fix_scramble ( struct player p)

Utilities for more complex or anomolous effects

Undo scrambled stats when effect runs out.

References i, player::stat_cur, player::stat_map, STAT_MAX, and player::stat_max.

Referenced by player_set_timed().

◆ player_inc_check()

bool player_inc_check ( struct player p,
int  idx,
bool  lore 

◆ player_inc_timed()

bool player_inc_timed ( struct player p,
int  idx,
int  v,
bool  notify,
bool  check 

◆ player_set_food()

bool player_set_food ( struct player p,
int  v 

Set "player->food", notice observable changes.

The "player->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.

Perhaps we should disturb the player with various messages, especially messages about hunger status changes. XXX XXX XXX

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".

References disturb(), player::food, handle_stuff(), MAX, MIN, msg, msgt(), PR_STATUS, PU_BONUS, PY_FOOD_ALERT, PY_FOOD_FAINT, PY_FOOD_FULL, PY_FOOD_MAX, PY_FOOD_WEAK, player_upkeep::redraw, player_upkeep::update, and player::upkeep.

Referenced by do_cmd_wiz_cure_all(), effect_handler_JUMP_AND_BITE(), effect_handler_NOURISH(), effect_handler_SET_NOURISH(), process_world(), and wiz_cheat_death().

◆ player_set_timed()

bool player_set_timed ( struct player p,
int  idx,
int  v,
bool  notify 

◆ run_parse_player_timed()

static errr run_parse_player_timed ( struct parser p)

◆ timed_name_to_idx()

int timed_name_to_idx ( const char *  name)

References i, my_stricmp(), and N_ELEMENTS.

Referenced by effect_subtype().

Variable Documentation

◆ list_player_flag_names

const char* list_player_flag_names[]
Initial value:
= {
#define PF(a, b, c)

Parsing functions for player_timed.txt

Referenced by parse_player_timed_fail().

◆ list_timed_effect_names

const char* list_timed_effect_names[]

List of timed effect names.

Referenced by parse_player_timed_name().

◆ player_timed_parser

struct file_parser player_timed_parser
Initial value:
= {
"player timed effects",
static void cleanup_player_timed(void)
Definition: player-timed.c:244
static struct parser * init_parse_player_timed(void)
Definition: player-timed.c:218
static errr finish_parse_player_timed(struct parser *p)
Definition: player-timed.c:238
static errr run_parse_player_timed(struct parser *p)
Definition: player-timed.c:233

◆ timed_effects

struct timed_effect_data timed_effects[TMD_MAX]