summaryrefslogtreecommitdiff
path: root/src/util.pkg
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.pkg')
-rw-r--r--src/util.pkg2683
1 files changed, 0 insertions, 2683 deletions
diff --git a/src/util.pkg b/src/util.pkg
deleted file mode 100644
index 39f70b40..00000000
--- a/src/util.pkg
+++ /dev/null
@@ -1,2683 +0,0 @@
-/* File: util.pkg */
-
-/*
- * Purpose: Lua interface defitions for miscellaneous routines.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-$#include "plots.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 TRUE */
-#define TRUE
-
-/** @def FALSE */
-#define FALSE
-
-
-/** @def ESCAPE */
-#define ESCAPE '\033'
-
-/** @name Terminal Colours
- * @{
- */
-/** @def TERM_DARK
- * @note 'd' (0,0,0)
- */
-#define TERM_DARK 0 /* 'd' */
-/** @def TERM_WHITE
- * @note 'w' (4,4,4)
- */
-#define TERM_WHITE 1 /* 'w' */
-/** @def TERM_SLATE
- * @note 's' (2,2,2)
- */
-#define TERM_SLATE 2 /* 's' */
-/** @def TERM_ORANGE
- * @note 'o' (4,2,0)
- */
-#define TERM_ORANGE 3 /* 'o' */
-/** @def TERM_RED
- * @note 'r' (3,0,0)
- */
-#define TERM_RED 4 /* 'r' */
-/** @def TERM_GREEN
- * @note 'g' (0,2,1)
- */
-#define TERM_GREEN 5 /* 'g' */
-/** @def TERM_BLUE
- * @note 'b' (0,0,4)
- */
-#define TERM_BLUE 6 /* 'b' */
-/** @def TERM_UMBER
- * @note 'u' (2,1,0)
- */
-#define TERM_UMBER 7 /* 'u' */
-/** @def TERM_L_DARK
- * @note 'D' (1,1,1)
- */
-#define TERM_L_DARK 8 /* 'D' */
-/** @def TERM_L_WHITE
- * @note 'W' (3,3,3)
- */
-#define TERM_L_WHITE 9 /* 'W' */
-/** @def TERM_VIOLET
- * @note 'v' (4,0,4)
- */
-#define TERM_VIOLET 10 /* 'v' */
-/** @def TERM_YELLOW
- * @note 'y' (4,4,0)
- */
-#define TERM_YELLOW 11 /* 'y' */
-/** @def TERM_L_RED
- * @note 'R' (4,0,0)
- */
-#define TERM_L_RED 12 /* 'R' */
-/** @def TERM_L_GREEN
- * @note 'G' (0,4,0)
- */
-#define TERM_L_GREEN 13 /* 'G' */
-/** @def TERM_L_BLUE
- * @note 'B' (0,4,4)
- */
-#define TERM_L_BLUE 14 /* 'B' */
-/** @def TERM_L_UMBER
- * @note 'U' (3,2,1)
- */
-#define TERM_L_UMBER 15 /* 'U' */
-/** @} */
-
-/** @name Event Hooks
- * @{
- */
-/** @def HOOK_MONSTER_DEATH
- * @brief Monster dies.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @note (see file xtra2.c)
- */
-#define HOOK_MONSTER_DEATH 0
-
-/** @def HOOK_OPEN
- * @brief Open door or chest.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file cmd2.c)
- */
-#define HOOK_OPEN 1
-
-/** @def HOOK_GEN_QUEST
- * @brief Generate quest level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file generate.c)
- */
-#define HOOK_GEN_QUEST 2
-
-/** @def HOOK_END_TURN
- * @brief Turn ends.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file dungeon.c)
- */
-#define HOOK_END_TURN 3
-
-/** @def HOOK_FEELING
- * @brief Display level feeling.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @return Boolean \n TRUE if a level feeling was displayed, otherwise FALSE.
- * @note
- * If the hook returns TRUE, then no other feelings are displayed and
- * do_cmd_feeling() returns.
- * @note (see file cmd4.c)
- */
-#define HOOK_FEELING 4
-
-/** @def HOOK_NEW_MONSTER
- * @brief Generate monster.\n
- * @param Number r_idx \n index of monster in monster race (r_info) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster is not allowed to be created,
- * otherwise FALSE.
- * @note
- * If the hook returns TRUE, then the monster is "killed".
- * @note (see file monster2.c)
- */
-#define HOOK_NEW_MONSTER 5
-
-/** @def HOOK_GEN_LEVEL
- * @brief Generate dungeon level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file generate.c)
- */
-#define HOOK_GEN_LEVEL 6
-
-/** @def HOOK_BUILD_ROOM1
- * @brief Generate room (type 1 - normal rectangular room).\n
- * @param Number by0 \n y-coordinate of dungeon block where room is built.
- * @brief Block y-coordinate
- * @param Number bx0 \n x-coordinate of dungeon block where room is built.
- * @brief Block x-coordinate
- * @return Boolean \n TRUE if room was created, otherwise FALSE.
- * @note
- * If the hook returns TRUE, then the room has been built and build_type1()
- * returns.
- * @note (see file generate.c)
- */
-#define HOOK_BUILD_ROOM1 7
-
-/** @def HOOK_NEW_LEVEL
- * @brief Start dungeon level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file dungeon.c)
- */
-#define HOOK_NEW_LEVEL 8
-
-/** @def HOOK_QUEST_FINISH
- * @brief Quest finished.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @note (see file bldg.c)
- */
-#define HOOK_QUEST_FINISH 9
-
-/** @def HOOK_QUEST_FAIL
- * @brief Quest failed.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @note (see file bldg.c)
- */
-#define HOOK_QUEST_FAIL 10
-
-/** @def HOOK_GIVE
- * @brief Give item to monster.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @param Number item \n the item to be given.
- * @brief Item number
- * @return Boolean \n TRUE if item was given to monster, otherwise FALSE.
- * @note
- * If the hook returns FALSE, then the message "The monster does not want
- * your item." is displayed.
- * @note (see file cmd2.c)
- */
-#define HOOK_GIVE 11
-
-/** @def HOOK_CHAR_DUMP
- * @brief Add a line to the character sheet.
- * @note (see files.c)
- */
-#define HOOK_CHAR_DUMP 12
-
-/** @def HOOK_INIT_QUEST
- * @brief Quest initialised.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @return Boolean \n TRUE if quest was not initialised, otherwise FALSE.
- * @note
- * If the hook returns TRUE, castle_quest() returns FALSE.
- * @note (see file bldg.c)
- */
-#define HOOK_INIT_QUEST 13
-
-/** @def HOOK_WILD_GEN
- * @brief Generate wilderness.\n
- * @param Number wilderness \n if TRUE, then this is overhead wilderness
- * processing, otherwise it is regular wilderness processing.
- * @brief Overhead?
- * @note (see file wild.c)
- */
-#define HOOK_WILD_GEN 14
-
-/** @def HOOK_DROP
- * @brief Drop an item.\n
- * @param Number item \n the item to drop.
- * @brief Item number
- * @return Boolean \n TRUE if item was dropped, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_drop() returns, otherwise the function
- * continues.
- * @note (see file cmd3.c)
- */
-#define HOOK_DROP 15
-
-/** @def HOOK_IDENTIFY
- * @brief Identfy an item.\n
- * @param Number item \n the item to identify.
- * @brief Item number
- * @param String type \n "normal" to identify the item, or "full" to fully
- * identify an item.
- * @brief Type
- * @note (see files spells1.c, spells2.c)
- */
-#define HOOK_IDENTIFY 16
-
-/** @def HOOK_MOVE
- * @brief Player moves.\n
- * @param Number y \n the y-coordinate of the new location.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the new location.
- * @brief X-coordinate
- * @return Boolean \n TRUE if player is not allowed to move, otherwise FALSE.
- * @note
- * If the hook returns TRUE, move_player_aux() returns, otherwise the function
- * continues.
- * @note (see file cmd1.c)
- */
-#define HOOK_MOVE 17
-
-/** @def HOOK_STAIR
- * @brief Player uses stairs.\n
- * @param String direction \n "up" if the player is going up stairs, or
- * "down" if the player is going down stairs.
- * @brief Direction
- * @return Boolean \n TRUE if player is not allowed to use stairs, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_go_up() or do_cmd_go_down() returns,
- * otherwise the function continues.
- * @note (see file cmd2.c)
- */
-#define HOOK_STAIR 18
-
-/** @def HOOK_MONSTER_AI
- * @brief Monster moves.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster AI was applied, otherwise FALSE.
- * @return Number y2 \n New y-coordinate of monster target.
- * @return Number x2 \n New x-coordinate of monster target.
- * @note
- * If the hook returns TRUE, the monster moves toward the hook position.
- * @note (see file melee2.c)
- */
-#define HOOK_MONSTER_AI 19
-
-/** @def HOOK_PLAYER_LEVEL
- * @brief Player gains (or loses) a level.\n
- * @param Number gained \n the number of levels gained (or lost).
- * @brief Levels gained
- * @note (see file xtra2.c)
- */
-#define HOOK_PLAYER_LEVEL 20
-
-/** @def HOOK_WIELD
- * @brief Player wields an item.\n
- * @param Number item \n the item to wield.
- * @brief Item number
- * @return Boolean \n TRUE if item was not wielded, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_wield() returns, otherwise the function
- * continues.
- * @note (see file cmd3.c)
- */
-#define HOOK_WIELD 21
-
-/** @def HOOK_INIT
- * @brief Game initialised.
- * @note (see file dungeon.c)
- */
-#define HOOK_INIT 22
-
-/** @def HOOK_QUAFF
- * @brief Player quaffs a potion.\n
- * @param Object o_ptr \n the potion to quaff.
- * @brief Potion
- * @return Boolean \n TRUE if potion was quaffed, otherwise FALSE.
- * @return Number ident \n TRUE if the potion was identifed, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "potion identified" flag.
- * @note (see file cmd6.c)
- */
-#define HOOK_QUAFF 23
-
-/** @def HOOK_AIM */
-#define HOOK_AIM 24
-
-/** @def HOOK_USE */
-#define HOOK_USE 25
-
-/** @def HOOK_ACTIVATE
- * @brief Player activates an item.\n
- * @param Number item \n the item to activate.
- * @brief Item number
- * @return Boolean \n TRUE if item was activated, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_activate() returns, otherwise the function
- * continues.
- * @note (see file cmd6.c)
- */
-#define HOOK_ACTIVATE 26
-
-/** @def HOOK_ZAP
- * @brief Player zaps a rod.\n
- * @param Number tval \n type of rod to zap.
- * @brief Type
- * @param Number sval \n sub-type of rod to zap.
- * @brief Sub-type
- * @note (see file cmd6.c)
- */
-#define HOOK_ZAP 27
-
-/** @def HOOK_READ
- * @brief Player reads a scroll.\n
- * @param Object o_ptr \n the scroll to read.
- * @brief Scroll
- * @return Boolean \n TRUE if scroll was read, otherwise FALSE.
- * @return Number used_up \n TRUE if the scroll was used up, otherwise FALSE.
- * @return Number ident \n TRUE if the scroll was identifed, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "scroll used up" and
- * "scroll identified" flags.
- * @note (see file cmd6.c)
- */
-#define HOOK_READ 28
-
-/** @def HOOK_CALC_BONUS
- * @brief Calculate player "state" bonuses.
- * @note (see xtra1.c)
- */
-#define HOOK_CALC_BONUS 29
-
-/** @def HOOK_CALC_BONUS
- * @brief Calculate player "state" bonuses, after all calcs are done.
- * @note (see xtra1.c)
- */
-#define HOOK_CALC_BONUS_END 77
-
-/** @def HOOK_CALC_POWERS
- * @brief Calculate player powers.
- * @note (see xtra1.c)
- */
-#define HOOK_CALC_POWERS 30
-
-/** @def HOOK_KEYPRESS
- * @brief User enters a command.\n
- * @param Number command \n the pressed key (command_cmd).
- * @brief Command
- * @return Boolean \n TRUE if special processing was done, otherwise FALSE.
- * @note
- * If the hook returns TRUE, process_command() returns, otherwise the function
- * continues.
- * @note (see file dungeon.c)
- */
-#define HOOK_KEYPRESS 31
-
-/** @def HOOK_CHAT
- * @brief Player chats to monster.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster chats, otherwise FALSE.
- * @note
- * If the hook returns FALSE, the message "There is no monster there." is
- * printed.
- * @note (see file cmd2.c)
- */
-#define HOOK_CHAT 32
-
-/** @def HOOK_MON_SPEAK
- * @brief Monster speaks.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @param String m_name \n name of the monster.
- * @brief Monster name
- * @return Boolean \n TRUE if monster speaks, otherwise FALSE.
- * @note
- * If the hook returns FALSE, the monster may say something else.
- * @note (see file melee2.c)
- */
-#define HOOK_MON_SPEAK 33
-
-/** @def HOOK_MKEY
- * @brief Player uses skill.\n
- * @param Number x_idx \n the skill to execute.
- * @brief Skill index
- * @note (see file skills.c)
- */
-#define HOOK_MKEY 34
-
-/** @def HOOK_BIRTH_OBJECTS
- * @brief Player receives objects at birth.
- * @note (see file birth.c)
- */
-#define HOOK_BIRTH_OBJECTS 35
-
-/** @def HOOK_ACTIVATE_DESC
- * @brief Display activation description.\n
- * @param Object o_ptr \n the item to activate.
- * @brief Object
- * @return Boolean \n TRUE if item has an activation, otherwise FALSE.
- * @return String desc \n the activation description.
- * @note
- * If the hook returns TRUE, item_activation() returns the hook's activation
- * description.
- * @note (see file object1.c)
- */
-#define HOOK_ACTIVATE_DESC 36
-
-/** @def HOOK_INIT_GAME
- * @brief Game initialised.\n
- * @param String when \n "begin" if done at the start of game initialisation,
- * or "end" if done at end of game initialisation.
- * @brief When?
- * @note (see file init2.c)
- */
-#define HOOK_INIT_GAME 37
-
-/** @def HOOK_ACTIVATE_POWER
- * @brief Player activates a power.\n
- * @param Number power \n the power to activate.
- * @brief Power
- * @return Boolean \n TRUE if power was activated, otherwise FALSE.
- * @note
- * If the hook returns FALSE, power_activate() displays the message
- * "Warning power_activate() called with invalid power(xx)." where
- * xx = power.
- * @note (see file powers.c)
- */
-#define HOOK_ACTIVATE_POWER 38
-
-/** @def HOOK_ITEM_NAME
- * @brief Get an item name.\n
- * @param Object o_ptr \n the item whose name is required.
- * @brief Object
- * @return Boolean \n TRUE if name was found, otherwise FALSE.
- * @return String basenm \n The item name.
- * @return String modstr \n The item modifier string.
- * @note (see file object1.c)
- */
-#define HOOK_ITEM_NAME 39
-
-/** @def HOOK_SAVE_GAME
- * @brief Save the game.
- * @note (see file loadsave.c)
- */
-#define HOOK_SAVE_GAME 40
-
-/** @def HOOK_LOAD_GAME
- * @brief Load the game.
- * @note (see file loadsave.c)
- */
-#define HOOK_LOAD_GAME 41
-
-/** @def HOOK_LEVEL_REGEN
- * @brief Start generation of a special level.
- * @note (see file generate.c)
- */
-#define HOOK_LEVEL_REGEN 42
-
-/** @def HOOK_LEVEL_END_GEN
- * @brief End generation of a special level.
- * @note (see file generate.c)
- */
-#define HOOK_LEVEL_END_GEN 43
-
-/** @def HOOK_BUILDING_ACTION
- * @brief Player performs an action in a building.\n
- * @param Number action \n the action performed in the building
- * @brief Action flag
- * @return Boolean \n TRUE if player performed the action, otherwise FALSE.
- * @return Number paid \n TRUE if player paid to perform the action, otherwise
- * FALSE.
- * @return Number recreate \n TRUE if something is recreated, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "paid" and "recreate" flags.
- * @note (see file bldg.c)
- */
-#define HOOK_BUILDING_ACTION 44
-
-/** @def HOOK_PROCESS_WORLD
- * @brief Update world every ten turns.
- * @note (see file dungeon.c)
- */
-#define HOOK_PROCESS_WORLD 45
-
-/** @def HOOK_WIELD_SLOT
- * @brief Find equipment slot for object.\n
- * @param Object o_ptr \n the object to wield.
- * @brief Object
- * @param Number ideal \n TRUE if current body and stuff is ignore, otherwise
- * FALSE.
- * @return Boolean \n TRUE if hook processed the object, otherwise FALSE.
- * @return Number slot \n The equipent slot where the object will go (-1 if
- * there are no available slots).
- * @note
- * If the hook returns TRUE, wield_slot_ideal() returns the slot from the hook.
- * @note (see file objects1.c)
- */
-#define HOOK_WIELD_SLOT 46
-
-/** @def HOOK_STORE_STOCK
- * @brief Stock a store.\n
- * @param Number st_idx \n the index of the store in st_info array.
- * @brief Store index
- * @param String name \n the name of the store.
- * @brief Store name
- * @param Number level \n the "dungeon level" of the store.
- * @brief Store level
- * @return Boolean \n TRUE if hook has selected an object, otherwise FALSE.
- * @return Object q_ptr \n The item to be stocked in the store.
- * @note
- * If the hook returns TRUE, store_create() will create the hook's object and
- * put it in the store.
- * @note (see file store.c)
- */
-#define HOOK_STORE_STOCK 47
-
-/** @def HOOK_STORE_BUY
- * @brief Store buys an item.\n
- * @param Number st_idx \n the index of the store in st_info array.
- * @brief Store index
- * @param String name \n the name of the store.
- * @brief Store name
- * @param Object o_ptr \n the object to buy.
- * @brief Object
- * @return Boolean \n TRUE if the hook has processed the object, otherwise
- * FALSE.
- * @return Number buy \n TRUE if the store will buy the object, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, store_will_buy() will return "buy".
- * @note (see file store.c)
- */
-#define HOOK_STORE_BUY 48
-
-/** @def HOOK_GEN_LEVEL_BEGIN
- * @brief Generate a random dungeon level.
- * @note (see file generate.c)
- */
-#define HOOK_GEN_LEVEL_BEGIN 49
-
-/** @def HOOK_GET
- * @brief Player gets an object.\n
- * @param Object o_ptr \n the object to get.
- * @brief Object
- * @param Number o_idx \n the index of the object in o_list array.
- * @brief Object index
- * @return Boolean \n TRUE if hooks processes the object, otherwise FALSE.
- * @note
- * If the hook returns TRUE, object_pickup() returns, otherwise the function
- * continues.
- * @note (see object1.c)
- */
-#define HOOK_GET 50
-
-/** @def HOOK_REDRAW
- * @brief Redraw the screen.
- * @note (see file xtra1.c)
- */
-#define HOOK_REDRAW 51
-
-/** @def HOOK_RECALC_SKILLS
- * @brief Recalculate player skills.
- * @note (see skills.c)
- */
-#define HOOK_RECALC_SKILLS 52
-
-/** @def HOOK_ENTER_DUNGEON
- * @brief Player goes down one dungeon level.\n
- * @param Number special \n special information for player's dungeon grid.
- * @brief Special info
- * @return Boolean \n TRUE if the hook prevents the player going down,
- * otherwise FALSE.
- * @note
- * If the hook returns TRUE, the player remains on the current dungeon level
- * and do_cmd_go_down() returns.
- * @note (see file cmd2.c)
- */
-#define HOOK_ENTER_DUNGEON 53
-
-/** @def HOOK_FIRE
- * @brief Player fires an object (bow slot of inventory).\n
- * @param Object \n the object to fire.
- * @brief Object
- * @return Boolean \n TRUE if the hook has fired the object, otherwise FALSE.
- * @note
- * If the hook returns TRUE, process_command() returns.
- * @note (see file dungeon.c)
- */
-#define HOOK_FIRE 54
-
-/** @def HOOK_EAT
- * @brief Player eats.\n
- * @param Object o_ptr \n the object the player eats.
- * @brief Object
- * @return Boolean \n TRUE if hook processes the object, otherwise FALSE.
- * @return Number ident \n TRUE if the object was identified, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "food identified" flag.
- * @note (see file cmd6.c)
- */
-#define HOOK_EAT 55
-
-/** @def HOOK_DIE
- * @brief Player dies.
- * @return Boolean \n TRUE if player does not die, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the player cheats death.
- * @note (see file dungeon.c)
- */
-#define HOOK_DIE 56
-
-/** @def HOOK_CALC_HP
- * @brief Recalculate player HP (hit points).\n
- * @param Number mhp \n the player's new maximum hit points.
- * @brief Maximum hit points.
- * @return Boolean \n TRUE if hook has processed player hit points, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, the player's maximum hit points are updated.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_HP 57
-
-/** @def HOOK_GF_COLOR
- * @brief Set color for spell.
- * @param Number type \n type of spell.
- * @brief Type
- * @param Number file \n if this is 0 use ANGBAND_GRAF, otherwise use "new".
- * @brief File
- * @return Boolean \n TRUE if hook sets a color, otherwise FALSE.
- * @return Number color \n The color for the spell.
- * @note
- * If the hook returns TRUE, spell_color() returns the hook's color, otherwise
- * the function continues.
- * @note (see file spells1.c)
- */
-#define HOOK_GF_COLOR 58
-
-/** @def HOOK_GF_EXEC
- * @brief A spell to damage terrain features.\n
- * @param String target \n "grid" to indicate spell damages terrain.
- * @brief Target
- * @param Number who \n the source of the spell.
- * @brief Source
- * @param Number type \n the type of spell.
- * @brief Type
- * @param Number dam \n the number of hit points of damage.
- * @brief Damage
- * @param Number r \n the radius of the spell.
- * @brief Radius
- * @param Number y \n the y-coordinate of the target.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the target.
- * @brief X-coordinate
- * @return Boolean \n TRUE if spell was cast, otherwise FALSE.
- * @return Number obvious \n TRUE if the player notices the spell, otherwise
- * FALSE.
- * @return Number flag \n TRUE if the player is affected, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "obvious" and "flag" fields.
- * @note (see file spells1.c)
- */
-/** @def HOOK_GF_EXEC
- * @brief A spell to damage objects.\n
- * @param String target \n "object" to indicate spell damages objects.
- * @brief Target
- * @param Number who \n the source of the spell.
- * @brief Source
- * @param Number type \n the type of spell.
- * @brief Type
- * @param Number dam \n the number of hit points of damage.
- * @brief Damage
- * @param Number r \n the radius of the spell.
- * @brief Radius
- * @param Number y \n the y-coordinate of the target.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the target.
- * @brief X-coordinate
- * @param Object o_ptr \n the object which is the target of the spell.
- * @brief Object
- * @return Boolean \n TRUE if spell was cast, otherwise FALSE.
- * @return Number obvious \n TRUE if the player notices the spell, otherwise
- * FALSE.
- * @return Number flag \n TRUE if the player is affected, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "obvious" and "do_kill" fields.
- * @note (see file spells1.c)
- */
-/** @def HOOK_GF_EXEC
- * @brief A spell to damage monsters.\n
- * @param String target \n "angry" to indicate spell angers a friend.
- * @brief Target
- * @param Number who \n the source of the spell.
- * @brief Source
- * @param Number type \n the type of spell.
- * @brief Type
- * @param Number dam \n the number of hit points of damage.
- * @brief Damage
- * @param Number r \n the radius of the spell.
- * @brief Radius
- * @param Number y \n the y-coordinate of the target.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the target.
- * @brief X-coordinate
- * @param Monster m_ptr \n the monster which is the target of the spell.
- * @brief Monster
- * @return Boolean \n TRUE if spell was cast, otherwise FALSE.
- * @return Number get_angry \n TRUE if the monster gets angry, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "get_angry" field.
- * @note (see file spells1.c)
- */
-/** @def HOOK_GF_EXEC
- * @brief A spell to damage monsters.\n
- * @param String target \n "monster" to indicate spell damages monsters.
- * @brief Target
- * @param Number who \n the source of the spell.
- * @brief Source
- * @param Number type \n the type of spell.
- * @brief Type
- * @param Number dam \n the number of hit points of damage.
- * @brief Damage
- * @param Number r \n the radius of the spell.
- * @brief Radius
- * @param Number y \n the y-coordinate of the target.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the target.
- * @brief X-coordinate
- * @param Monster m_ptr \n the monster which is the target of the spell.
- * @brief Monster
- * @return Boolean \n TRUE if spell was cast, otherwise FALSE.
- * @return Number obvious \n TRUE if the player notices the spell, otherwise
- * FALSE.
- * @return Number dam \n The damage the monster takes.
- * @return Number do_stun \n TRUE if the monster is stunned, otherwise FALSE.
- * @return Number do_fear \n TRUE if the monster is frightened, otherwise
- * FALSE.
- * @return Number do_conf \n TRUE if the monster is confused, otherwise FALSE.
- * @return Number do_dist \n TRUE if the monster is disturbed, otherwise FALSE.
- * @return Number do_pois \n TRUE if the monster is poisoned, otherwise FALSE.
- * @return Number do_cut \n TRUE if the monster is wounded, otherwise FALSE.
- * @return Number do_poly \n TRUE if the monster is polymorphed, otherwise
- * FALSE.
- * @return String note \n The message displayed if the monster if affected.
- * @return String note_dies \n The message displayed if the monster dies.
- * @note
- * If the hook returns TRUE, the hook sets the "obvious", "dam", "do_stun",
- * "do_fear", "do_conf", "do_dist", "do_pois", "do_cut", "do_poly", "note",
- * and "note dies" fields, otherwise the spell has no effect and does no
- * damage.
- * @note (see file spells1.c)
- */
-/** @def HOOK_GF_EXEC
- * @brief A spell to damage the player.\n
- * @param String target \n "player" to indicate spell damages the player.
- * @brief Target
- * @param Number who \n the source of the spell.
- * @brief Source
- * @param Number type \n the type of spell.
- * @brief Type
- * @param Number dam \n the number of hit points of damage.
- * @brief Damage
- * @param Number r \n the radius of the spell.
- * @brief Radius
- * @param Number y \n the y-coordinate of the target.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the target.
- * @brief X-coordinate
- * @return Boolean \n TRUE if spell was cast, otherwise FALSE.
- * @return Number obvious \n TRUE if the player notices the spell, otherwise
- * FALSE.
- * @return Number dam \n The damage the player takes.
- * @note
- * If the hook returns TRUE, the hook sets the "obvious" and "dam" fields,
- * otherwise there is no damage.
- * @note (see file spells1.c)
- */
-#define HOOK_GF_EXEC 59
-
-/** @def HOOK_CALC_MANA
- * @brief Recalculate player SP (spell points).\n
- * @param Number msp \n the player's new maximum spell points.
- * @brief Maximum spell points.
- * @return Boolean \n TRUE if hook has processed player spell points, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, the player's maximum spell points are updated.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_MANA 60
-
-/** @def HOOK_LOAD_END
- * @brief Load a savefile.\n
- * @param Number death \n TRUE if the character is dead, otherwise FALSE.
- * @brief Dead character?
- * @return Boolean \n TRUE if hook has processed savefile, otherwise FALSE.
- * @return Number death \n
- * @note
- * If the hook returns TRUE, then "character_loaded" (real living player) is
- * set to TRUE. The player has been revived.
- * @note (see file loadsave.c)
- */
-#define HOOK_LOAD_END 61
-
-/** @def HOOK_RECALL
- * @brief Player recalls from/to dungeon/town.
- * @return Boolean \n TRUE if player is not allowed to recall, otherwise
- * FALSE.
- * @note (see file dungeon.c)
- */
-#define HOOK_RECALL 62
-
-/** @def HOOK_FOLLOW_GOD
- * @brief Player follows a god (gets religion).\n
- * @param Number god \n the god to follow.
- * @brief God
- * @param String action \n "ask" to check if player can follow the god, or
- * "done" to do something with the god.
- * @brief Action
- * @return Boolean \n For "ask": TRUE if player can not follow the god,
- * otherwise FALSE.
- * @note
- * If the action is "ask" and the hook returns TRUE, follow_god() returns.
- * If the action is "done" the return code is ignored.
- * @note (see file gods.c)
- */
-#define HOOK_FOLLOW_GOD 63
-
-/** @def HOOK_SACRIFICE_GOD
- * @brief Player sacrifices to a god.
- * @note (see file cmd2.c)
- */
-#define HOOK_SACRIFICE_GOD 64
-
-/** @def HOOK_BODY_PARTS
- * @brief Calculate which body parts the player has.
- * @note (see file xtra1.c)
- */
-#define HOOK_BODY_PARTS 65
-
-/** @def HOOK_APPLY_MAGIC
- * @brief Apply magic to an item.\n
- * @param Object o_ptr \n the item to which magic is applied
- * @brief Object
- * @param Number level \n the level of the object
- * @brief Object level
- * @param Number power \n the power of the object (0 = normal, 1 = good,
- * 2 = great, -1 = cursed, -2 = broken)
- * @brief Power
- * @return Boolean \n TRUE if hook has applied magic, otherwise FALSE.
- * @note
- * If the hook returns TRUE, a_m_aux_n() (where n=1 to 4) returns.
- * @note (see file object2.c)
- */
-#define HOOK_APPLY_MAGIC 66
-
-/** @def HOOK_PLAYER_EXP
- * @brief Player gains/loses experience points (XP).\n
- * @param Number amount \n the number of experience points to gain/lose
- * @brief Points
- * @note (see file xtra2.c)
- */
-#define HOOK_PLAYER_EXP 67
-
-/** @def HOOK_BIRTH
- * @brief Player is born.
- * @note (see file birth.c)
- */
-#define HOOK_BIRTH 68
-
-/** @def HOOK_CALC_LITE
- * @brief Calculate the lite radius.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_LITE 69
-
-/** @def HOOK_LEARN_ABILITY
- * @brief Player learns an ability.\n
- * @param Number ab \n index of ability in ability (ab_info) array.
- * @brief Ability index
- * @return Boolean \n TRUE if player is not to gain the ability, otherwise
- * FALSE.
- * @note If the hook returns TRUE, can_learn_ability() returns FALSE.
- * @note (see file skills.c)
- */
-#define HOOK_LEARN_ABILITY 70
-
-/** @def HOOK_MOVED
- * @brief Player finishes moving.
- * @note (see file cmd1.c)
- */
-#define HOOK_MOVED 71
-
-/** @def HOOK_GAME_START
- * @brief Game begins.
- * @note (see file dungeon.c)
- */
-#define HOOK_GAME_START 72
-
-/** @def HOOK_TAKEOFF
- * @brief Player takes off an item.\n
- * @param Number item \n the item to take off.
- * @brief Item
- * @return Booelan \n TRUE if item can not be taken off, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_takeoff() returns.
- * @note (see file cmd3.c)
- */
-#define HOOK_TAKEOFF 73
-
-/** @def HOOK_CALC_WEIGHT
- * @brief Calculate player weight limit.\n
- * @param Number weight \n the current weight limit.
- * @brief Weight
- * @return Boolean \n TRUE if weight was processed, otherwise FALSE.
- * @return Number weight \n The new maximum weight.
- * @note
- * If the hook returns TRUE, weight_limit() returns the hook's weight.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_WEIGHT 74
-
-/** @def HOOK_FORBID_TRAVEL
- * @brief Check if the player may press < and travel.\n
- * @return Boolean \n TRUE if travel is forbidden, otherwise FALSE.
- */
-#define HOOK_FORBID_TRAVEL 75
-
-/** @def HOOK_DEBUG_COMMAND
- * @brief User enters a debug command.\n
- * @param Number command \n the pressed key (cmd).
- * @brief Command
- * @return Boolean \n TRUE if special processing was done, otherwise FALSE.
- */
-#define HOOK_DEBUG_COMMAND 76
-
-
-/** @} */
-
-
-/** @var turn
- * @brief Number
- * @note Current game turn
- */
-extern s32b turn;
-/** @var old_turn
- * @brief Number
- * @note Turn when level began (feelings)
- */
-extern s32b old_turn;
-/** @var cur_wid
- * @brief Number
- * @note Current dungeon width
- */
-extern s16b cur_wid;
-/** @var cur_hgt
- * @brief Number
- * @note Current dungeon height
- */
-extern s16b cur_hgt;
-
-/** @fn disturb(int stop_search, int flush_output)
- * @brief Disturb the player.\n
- * @param stop_search Number \n if 0, this will not disturb searching,
- * otherwise searching is stopped.
- * @brief Stop search?
- * @param flush_output Number \n *unused*
- * @brief *Unused*
- * @note
- * Something has happened to disturb the player.\n\n
- * The first arg indicates a major disturbance, which affects search.\n
- * The second arg is currently unused, but could induce output flush.\n\n
- * All disturbance cancels repeated commands, resting, and running.
- * @note (see file cave.c)
- */
-extern void disturb(int stop_search, int flush_output);
-
-/** @fn bst(s32b what, s32b t)
- * @brief Break scalar time.\n
- * @param what Number \n the unit time "t" is to be broken into. The following
- * values can be used: MINUTE, HOUR, DAY, YEAR
- * @brief Unit of time
- * @param t Number \n the time to be broken.
- * @brief Time
- * @return Number \n The number of unit in time "t".
- * @note (see file util.c)
- */
-extern s32b bst(s32b what, s32b t);
-
-$static char *path_build_lua(cptr path, cptr file){static char buf[1025]; path_build(buf, 1024, path, file); return buf;}
-
-/** @fn path_build(cptr path, cptr file);
- * @brief Create a new path by appending a file (or directory) to a path.\n
- * @param path String \n the original path.
- * @brief Path
- * @param file String \n the file or directory to append to the path.
- * @brief File or directory
- * @return String \n The new path.
- * @note
- * This requires no special processing on simple machines, except
- * for verifying the size of the filename, but note the ability to
- * bypass the given "path" with certain special file-names.\n\n
- * Note that the "file" may actually be a "sub-path", including
- * a path and a file.\n\n
- * @note (see file util.c)
- */
-static char *path_build_lua@path_build(cptr path, cptr file);
-
-/** @fn move_cursor(int row, int col)
- * @brief Move the cursor of a terminal to row "row" and column "col".\n
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void move_cursor(int row, int col);
-
-/** @fn flush(void)
- * @brief Flush all input chars.
- * @note
- * Actually, remember the flush, and do a "special flush" before the next
- * "inkey()".
- * This is not only more efficient, but also necessary to make sure
- * that various "inkey()" codes are not "lost" along the way.
- * @note (see file util.c)
- */
-extern void flush(void);
-
-/** @var inkey_scan
- * @brief Boolean
- * @note
- * If "inkey_scan" is TRUE, then we will immediately return "zero" if no
- * keypress is available, instead of waiting for a keypress.
- */
-extern bool inkey_scan;
-
-/** @fn inkey(void)
- * @brief Get a keypress from the user.
- * @return String \n the key pressed by the user.
- * @note
- * This function recognizes a few "global parameters". These are variables
- * which, if set to TRUE before calling this function, will have an effect
- * on this function, and which are always reset to FALSE by this function
- * before this function returns. Thus they function just like normal
- * parameters, except that most calls to this function can ignore
- * them.\n\n
- * If "inkey_xtra" is TRUE, then all pending keypresses will be flushed,
- * and any macro processing in progress will be aborted. This flag is
- * set by the "flush()" function, which does not actually flush anything
- * itself, but rather, triggers delayed input flushing via
- * "inkey_xtra".\n\n
- * If "inkey_scan" is TRUE, then we will immediately return "zero" if no
- * keypress is available, instead of waiting for a
- * keypress.\n\n
- * If "inkey_base" is TRUE, then all macro processing will be bypassed.
- * If "inkey_base" and "inkey_scan" are both TRUE, then this function will
- * not return immediately, but will wait for a keypress for as long as the
- * normal macro matching code would, allowing the direct entry of macro
- * triggers. The "inkey_base" flag is extremely
- * dangerous!\n\n
- * If "inkey_flag" is TRUE, then we will assume that we are waiting for a
- * normal command, and we will only show the cursor if "hilite_player" is
- * TRUE (or if the player is in a store), instead of always showing the
- * cursor. The various "main-xxx.c" files should avoid saving the game
- * in response to a "menu item" request unless "inkey_flag" is TRUE, to
- * prevent savefile
- * corruption.\n\n
- * If we are waiting for a keypress, and no keypress is ready, then we will
- * refresh (once) the window which was active when this function was
- * called.\n\n
- * Note that "back-quote" is automatically converted into "escape" for
- * convenience on machines with no "escape" key. This is done after the
- * macro matching, so the user can still make a macro for
- * "backquote".\n\n
- * Note the special handling of "ascii 30" (ctrl-caret, aka ctrl-shift-six)
- * and "ascii 31" (ctrl-underscore, aka ctrl-shift-minus), which are used to
- * provide support for simple keyboard "macros". These keys are so strange
- * that their loss as normal keys will probably be noticed by nobody. The
- * "ascii 30" key is used to indicate the "end" of a macro action, which
- * allows recursive macros to be avoided. The "ascii 31" key is used by
- * some of the "main-xxx.c" files to introduce macro trigger
- * sequences.\n\n
- * Hack -- we use "ascii 29" (ctrl-right-bracket) as a special "magic" key,
- * which can be used to give a variety of "sub-commands" which can be used
- * any time. These sub-commands could include commands to take a picture of
- * the current screen, to start/stop recording a macro action,
- * etc.\n\n
- * If "angband_term[0]" is not active, we will make it active during this
- * function, so that the various "main-xxx.c" files can assume that input
- * is only requested (via "Term_inkey()") when "angband_term[0]" is
- * active.\n\n
- * Mega-Hack -- This function is used as the entry point for clearing the
- * "signal_count" variable, and of the "character_saved"
- * variable.\n\n
- * Hack -- Note the use of "inkey_next" to allow "keymaps" to be
- * processed.\n\n
- * Mega-Hack -- Note the use of "inkey_hack" to allow the "Borg" to steal
- * control of the keyboard from the user.
- * @note (see file util.c)
- */
-extern char inkey(void);
-
-/** @fn cmsg_print(byte color, cptr msg)
- * @brief Output message "msg" in colour "color" to the top line of the
- * screen.\n
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @param msg String \n the message.
- * @brief Message
- * @note
- * Break long messages into multiple pieces (40-72 chars).\n\n
- * Allow multiple short messages to "share" the top line.\n\n
- * Prompt the user to make sure he has a chance to read them.\n\n
- * These messages are memorized for later reference (see above).\n\n
- * We could do "Term_fresh()" to provide "flicker" if needed.\n\n
- * The global "msg_flag" variable can be cleared to tell us to
- * "erase" any "pending" messages still on the
- * screen.\n\n
- * XXX XXX XXX Note that we must be very careful about using the
- * "msg_print()" functions without explicitly calling the special
- * "msg_print(NULL)" function, since this may result in the loss
- * of information if the screen is cleared, or if anything is
- * displayed on the top
- * line.\n\n
- * XXX XXX XXX Note that "msg_print(NULL)" will clear the top line
- * even if no messages are pending. This is probably a hack.
- * @note (see file util.c)
- */
-extern void cmsg_print(byte color, cptr msg);
-
-/** @fn msg_print(cptr msg)
- * @brief Output message "msg" in white to the top line of the screen.\n
- * @param msg String \n the message.
- * @brief Message
- * @note (see file util.c)
- */
-extern void msg_print(cptr msg);
-
-/** @fn screen_save(void)
- * @brief Save the screen.
- * @note
- * Increase the "icky" depth.\n\n
- * This function must match exactly one call to "screen_load()".
- * @note (see file util.c)
- */
-extern void screen_save(void);
-
-/** @fn screen_load(void)
- * @brief Load the screen.
- * @note
- * Decrease the "icky" depth.\n\n
- * This function must match exactly one call to "screen_save()".
- * @note (see file util.c)
- */
-extern void screen_load(void);
-
-/** @fn Term_save(void)
- * @brief Save the "requested" screen into the "memorized" screen.
- * @return Number \n 0 (always).
- * @note
- * Every "Term_save()" should match exactly one "Term_load()"
- * @note (see file z-term.c)
- */
-extern errr Term_save(void);
-
-/** @fn Term_load(void)
- * @brief Restore the "requested" contents from the "memorized" screen.
- * @return Number \n 0 (always).
- * @note
- * Every "Term_save()" should match exactly one "Term_load()"
- * @note (see file z-term.c)
- */
-extern errr Term_load(void);
-
-/** @fn c_put_str(byte attr, cptr str, int row, int col)
- * @brief Add string "str" with attributes "attr" to screen at row "row"
- * and column "col".\n
- * @param attr Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note
- * Display a string on the screen using an attribute.\n\n
- * At the given location, using the given attribute, if allowed,
- * add the given string. Do not clear the line.
- * @note (see file util.c)
- */
-extern void c_put_str(byte attr, cptr str, int row, int col);
-
-/** @fn c_prt(byte attr, cptr str, int row, int col)
- * @brief Add string "str" with attributes "attr" to screen at row "row"
- * and column "col", clearing to the end of the row.\n
- * @param attr Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void c_prt(byte attr, cptr str, int row, int col);
-
-/** @fn prt(cptr str, int row, int col)
- * @brief Add white string "str" to screen at row "row" and column "col",
- * clearing to the end of the row.\n
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void prt(cptr str, int row, int col);
-
-/** @fn message_add(byte type, cptr msg, byte color)
- * @brief Add a message "msg" of type "type" and colour "color" to the
- * message array.\n
- * @param type Number \n the type of message. MESSAGE_MSG for regular
- * messages.
- * @brief Type
- * @param msg String \n the message.
- * @brief Message
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @note
- * Use "msg_print() instead. If you insist on using this function, be
- * careful.
- * @note (see file util.c)
- */
-extern void message_add(byte type, cptr msg, byte color);
-
-/** @fn display_message(int x, int y, int split, byte color, cptr t)
- * @brief Display a message.\n
- * @param x Number \n the x-coordinate of the screen where the message starts.
- * @brief X-coordinate
- * @param y Number \n the y-coordinate of the screen where the message starts.
- * @brief Y-coordinate
- * @param split Number \n the position in the message where it is split. The
- * rest of the message will not appear.
- * @brief Split position
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @param t String \n the message.
- * @brief Message
- * @note
- * @note (see file util.c)
- */
-extern void display_message(int x, int y, int split, byte color, cptr t);
-
-/** @fn clear_from(int row)
- * @brief Clear part of the screen.\n
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @note
- * Clear all rows from the starting row to the end of the screen.
- * @note (see file util.c)
- */
-extern void clear_from(int row);
-
-/** @fn askfor_aux(char *buf, int len)
- * @brief Get some input at the cursor location.\n
- * @param *buf String \n Default string (optional).
- * @brief String
- * @param len Number \n the maximum length of the string.
- * @brief Length of string
- * @return Boolean \n TRUE if string was entered, otherwise FALSE.
- * @return *buf \n The entered string.
- * @note
- * Assume the buffer is initialized to a default string.\n
- * Note that this string is often "empty" (see below).\n
- * The default buffer is displayed in yellow until cleared.\n
- * Pressing RETURN right away accepts the default entry.\n
- * Normal chars clear the default and append the char.\n
- * Backspace clears the default or deletes the final char.\n
- * ESCAPE clears the buffer and the window and returns FALSE.\n
- * RETURN accepts the current buffer contents and returns TRUE.
- * @note (see file util.c)
- */
-extern bool askfor_aux(char *buf, int len);
-
-/** @fn get_string(cptr prompt, char *buf, int len)
- * @brief Get a string from the user.\n
- * @param prompt String \n the prompt, which should take the form "Prompt: "
- * @brief Prompt
- * @param *buf String
- * @brief String
- * @param len Number \n the maximum length of the string.
- * @brief Length of string
- * @return Boolean \n TRUE if string was entered, otherwise FALSE.
- * @return *buf \n The entered string.
- * @note
- * Note that the initial contents of the string is used as
- * the default response, so be sure to "clear" it if needed.\n\n
- * We clear the input, and return FALSE, on "ESCAPE".
- * @note (see file util.c)
- */
-extern bool get_string(cptr prompt, char *buf, int len);
-
-/** @fn get_check(cptr prompt)
- * @brief Verify something with the user.\n
- * @param prompt String \n the prompt, which should take the form "Query? "
- * @brief Prompt
- * @return Boolean \n TRUE if "y" or "Y" is entered, otherwise FALSE.
- * @note
- * Note that "[y/n]" is appended to the prompt.
- * @note (see file util.c)
- */
-extern bool get_check(cptr prompt);
-
-/** @fn get_com(cptr promtp, int *com = 0);
- * @brief Prompts for a keypress.\n
- * @param promtp String \n the prompt, which should take the form "Command: "
- * @brief Prompt
- * @param *com Number
- * @brief Command
- * @return Boolean \n FALSE if "Escape" was pressed, otherwise TRUE.
- * @return *com \n The entered command.
- * @note (see file util.c)
- */
-extern bool get_com_lua @ get_com(cptr promtp, int *com = 0);
-
-/** @fn get_quantity(cptr prompt, s32b max)
- * @brief Request a "quantity" from the user.\n
- * @param prompt String \n the prompt
- * @brief Prompt
- * @param max Number \n the maximum quantity
- * @brief Maximum quantity
- * @return Number \n the returned quantity.
- * @note
- * Hack -- allow "command_arg" to specify a quantity\n\n
- * The quantity is in the range 0 to "max" inclusive. The default is 1. A
- * letter means the maximum.
- * @note (see file util.c)
- */
-extern s32b get_quantity(cptr prompt, s32b max);
-
-/** @fn test_monster_name(cptr name)
- * @brief Given monster name as string, return the index in r_info array.\n
- * @param name String \n the monster name.
- * @brief Monster name
- * @return Number \n The index of the monster in r_info[], or 0 if the name
- * does not match a monster.
- * @note
- * Name must exactly match (look out for commas and the like!), or else 0 is
- * returned. Case doesn't matter.
- * @note (see file util.c)
- */
-extern int test_monster_name(cptr name);
-
-/** @fn test_item_name(cptr name)
- * @brief Given item name as string, return the index in k_info array.\n
- * @param name String \n the item name.
- * @brief Item name
- * @return Number \n The index of the item in k_info[], or 0 if the name
- * does not match an item.
- * @note
- * Name must exactly match (look out for commas and the like!), or else 0 is
- * returned. Case doesn't matter.
- * @note (see file util.c)
- */
-extern int test_item_name(cptr name);
-
-/** @fn luck(int min, int max)
- * @brief Return a luck number between a certain range.\n
- * @param min Number \n the minimum luck value returned.
- * @brief Mimimum
- * @param max Number \n the maximum luck value returned.
- * @brief Maximum
- * @return Number \n The scaled value of player's luck.
- * @note
- * Player lucked is cap at a minimum of -30 and maximum of +30 before it is
- * scaled to the range defined by "min" and "max".
- * @note (see file xtra1.c)
- */
-extern int luck(int min, int max);
-
-/** @fn get_player_race_name(int pr, int ps)
- * @brief Return the player's race (and sub-race) name.\n
- * @param pr Number \n the player's race. It is an index to race_info[].
- * @brief Player race
- * @param ps Number \n the player's subrace, if any. It is an index to
- * race_mod_info[].
- * @brief Player subrace
- * @return String \n The player's full race name.
- * @note (see file util.c)
- */
-extern cptr get_player_race_name(int pr, int ps);
-
-/** @fn quit(cptr str)
- * @brief Quit the game.
- * @param str String \n an error code or a message which is logged.
- * @brief String
- * @note
- * Exit (ala "exit()"). If 'str' is NULL, do "exit(0)".\n
- * If 'str' begins with "+" or "-", do "exit(atoi(str))".\n
- * Otherwise, plog() 'str' and exit with an error code of -1.\n
- * But always use 'quit_aux', if set, before anything else.
- * @note (see file z-util.c)
- */
-extern void quit(cptr str);
-
-/** @fn value_scale(int value, int vmax, int max, int min)
- * @brief Rescale a value
- * @param value Number \n the original value
- * @brief Original value
- * @param vmax Number \n the maximum the original value can be
- * @brief Original maximum
- * @param max Number \n the maximum new value
- * @brief New maximum
- * @param min Number \n the minimum new value
- * @brief New minimum
- * @return Number \n The rescaled value
- * @note (see file util.c)
- */
-extern s32b value_scale(int value, int vmax, int max, int min);
-
-/*
- * compass, approximate_distance
- */
-extern cptr compass(int y, int x, int y2, int x2);
-extern cptr approximate_distance(int y, int x, int y2, int x2);
-
-/** @fn text_out_c(byte a, cptr str)
- * @brief Output text to the screen (in color) or to a file depending on the
- * selected hook.\n
- * @param a Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @note (see file util.c)
- */
-extern void text_out_c(byte a, cptr str);
-
-/** @fn text_out(cptr str)
- * @brief Output text to the screen (in white) or to a file depending on the
- * selected hook.\n
- * @param str String \n the string
- * @brief String
- * @note (see file util.c)
- */
-extern void text_out(cptr str);
-
-/** @fn change_option(cptr name, bool value)
- * @brief Switch an option by only knowing its name.\n
- * @param name String \n the name of the option.
- * @brief Option name
- * @param value Boolean \n the new value of the option.
- * @brief Option value
- * @return Boolean \n the old value of the option, or FALSE if "name" is not
- * an option.
- * @note (see file cmd4.c)
- */
-extern bool change_option(cptr name, bool value);
-
-/** @var process_hooks_restart
- * @brief Number
- * @note
- * Set this to TRUE after deleting a C-hook (from a quest) to clean up hook
- * processing. This is not required for Lua hooks as they are not deleted.
- */
-extern int process_hooks_restart;
-
-/** @fn dump_hooks(int h_idx)
- * @brief Print the name and type (language) of all hooks in a hook chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * If this is -1, then all hook chains will be printed.
- * @brief Hook chain index
- * @note (see file plots.c)
- */
-extern void dump_hooks(int h_idx);
-
-/** @fn add_hook_script(int h_idx, char *script, cptr name)
- * @brief Add Lua script "name" in file "script" to hook_chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * @brief Hook chain index
- * @param *script String \n the name of the Lua script file.
- * @brief Script filename
- * @param name String \n the name of the script.
- * @brief Script name
- * @note (see file plots.c)
- */
-extern void add_hook_script(int h_idx, char *script, cptr name);
-
-/** @fn del_hook_name(int h_idx, cptr name)
- * @brief Delete hook with name "name" from a hook chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * @brief Hook chain index
- * @param name String \n the name of the hook to delete
- * @brief Hook name
- * @note (see file plots.c)
- */
-extern void del_hook_name(int h_idx, cptr name);
-
-/** @fn tome_dofile(char *file)
- * @brief Load a Lua file from lib/scpts.\n
- * @param *file String \n the name of a Lua file to load.
- * @brief Filename
- * @return Boolean \n TRUE if file was loaded, otherwise FALSE.
- * @note (see file script.c)
- */
-extern bool tome_dofile(char *file);
-
-/** @fn tome_dofile_anywhere(cptr dir, char *file, bool test_exist = TRUE)
- * @brief Load a Lua file from any directory.\n
- * @param dir String \n the name of a Lua file directory
- * @brief Directory
- * @param *file String \n the name of a Lua file to load.
- * @brief Filename
- * @param test_exist Boolean \n TRUE if a message is printed if the file does
- * not exist, otherwise FALSE.
- * @brief Message if file does not exist?
- * @return Boolean \n TRUE if file was loaded, otherwise FALSE.
- * @note (see file script.c)
- */
-extern bool tome_dofile_anywhere(cptr dir, char *file, bool test_exist = TRUE);
-
-/** @fn exec_lua(char *file)
- * @brief Execute Lua command "file" and return the integer result.\n
- * @param *file String \n the Lua command to execute.
- * @brief Command
- * @return Number \n the result of the Lua command.
- * @note (see file script.c)
- */
-extern int exec_lua(char *file);
-
-/** @fn dump_lua_stack(int min, int max)
- * @brief Display part of the Lua stack.\n
- * @param min Number \n the starting item of the stack dump.
- * @brief Start item
- * @param max Number \n the ending item of the stack dump.
- * @brief End item
- * @note (see file script.c)
- */
-extern void dump_lua_stack(int min, int max);
-
-/** @fn string_exec_lua(char *file)
- * @brief Execute Lua command "file" and return the string result.\n
- * @param *file String \n the Lua command to execute.
- * @brief Command
- * @return String \n the result of the Lua command.
- * @note (see file script.c)
- */
-extern cptr string_exec_lua(char *file);
-
-/** @fn print_hook(cptr str);
- * @brief Print string "string" to the hook file.\n
- * @param str String \ the string.
- * @brief String
- * @note (see file lua_bind.c)
- */
-extern void lua_print_hook@print_hook(cptr str);
-
-/* Savefile stuff */
-/** @fn register_savefile(int num)
- * @brief Add "num" slots to the savefile.\n
- * @param num Number \n the number of slots to add.
- * @brief Slots
- * @note (see file loadsave.c)
- */
-extern void register_savefile(int num);
-
-/** @fn save_number_key(char *key, s32b val)
- * @brief Save a key-value combination in the save file.\n
- * @param *key String \n the key to save.
- * @brief Key
- * @param val Number \n the value of the key.
- * @brief Value
- * @note
- * The length of the key is stored first, then the key, then the value.
- * @note (see file loadsave.c)
- */
-extern void save_number_key(char *key, s32b val);
-
-
-/* Tables */
-/** @var adj_mag_study[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Number of half-spells per level
- */
-extern byte adj_mag_study[100];
-
-/** @var adj_mag_mana[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- extra half-mana-points per level
- */
-extern byte adj_mag_mana[100];
-
-/** @var adj_mag_fail[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Minimum failure rate (percentage)
- */
-extern byte adj_mag_fail[100];
-
-/** @var adj_mag_stat[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Various things
- */
-extern byte adj_mag_stat[100];
-
-/** @var adj_chr_gold[100]
- * @brief Number
- * @note Stat Table (CHR) -- payment percentages
- */
-extern byte adj_chr_gold[100];
-
-/** @var adj_int_dev[100]
- * @brief Number
- * @note Stat Table (INT) -- Magic devices
- */
-extern byte adj_int_dev[100];
-
-/** @var adj_wis_sav[100]
- * @brief Number
- * @note Stat Table (WIS) -- Saving throw
- */
-extern byte adj_wis_sav[100];
-
-/** @var adj_dex_dis[100]
- * @brief Number
- * @note Stat Table (DEX) -- disarming
- */
-extern byte adj_dex_dis[100];
-
-/** @var adj_int_dis[100]
- * @brief Number
- * @note Stat Table (INT) -- disarming
- */
-extern byte adj_int_dis[100];
-
-/** @var adj_dex_ta[100]
- * @brief Number
- * @note Stat Table (DEX) -- bonus to ac (plus 128)
- */
-extern byte adj_dex_ta[100];
-
-/** @var adj_str_td[100]
- * @brief Number
- * @note Stat Table (STR) -- bonus to dam (plus 128)
- */
-extern byte adj_str_td[100];
-
-/** @var adj_dex_th[100]
- * @brief Number
- * @note Stat Table (DEX) -- bonus to hit (plus 128)
- */
-extern byte adj_dex_th[100];
-
-/** @var adj_str_th[100]
- * @brief Number
- * @note Stat Table (STR) -- bonus to hit (plus 128)
- */
-extern byte adj_str_th[100];
-
-/** @var adj_str_wgt[100]
- * @brief Number
- * @note Stat Table (STR) -- weight limit in deca-pounds
- */
-extern byte adj_str_wgt[100];
-
-/** @var adj_str_hold[100]
- * @brief Number
- * @note Stat Table (STR) -- weapon weight limit in pounds
- */
-extern byte adj_str_hold[100];
-
-/** @var adj_str_dig[100]
- * @brief Number
- * @note Stat Table (STR) -- digging value
- */
-extern byte adj_str_dig[100];
-
-/** @var adj_str_blow[100]
- * @brief Number
- * @note Stat Table (STR) -- help index into the "blow" table
- */
-extern byte adj_str_blow[100];
-
-/** @var adj_dex_blow[100]
- * @brief Number
- * @note Stat Table (DEX) -- index into the "blow" table
- */
-extern byte adj_dex_blow[100];
-
-/** @var adj_dex_safe[100]
- * @brief Number
- * @note Stat Table (DEX) -- chance of avoiding "theft" and "falling"
- */
-extern byte adj_dex_safe[100];
-
-/** @var adj_con_fix[100]
- * @brief Number
- * @note Stat Table (CON) -- base regeneration rate
- */
-extern byte adj_con_fix[100];
-
-/** @var adj_con_mhp[100]
- * @brief Number
- * @note Stat Table (CON) -- extra half-hitpoints per level (plus 128)
- */
-extern byte adj_con_mhp[100];
-
-/* Repeat stuff */
-/** @fn repeat_push(int what)
- * @brief Push key "what" onto the end of the repeat_key array.\n
- * @param what Number \n the key to be repeated.
- * @brief Key
- * @note (see file util.c)
- */
-extern void repeat_push(int what);
-
-/** @fn repeat_pull(int *what = 0)
- * @brief Pull key from the repeat__key array.\n
- * @param *what Number
- * @brief Key
- * @return Boolean \n TRUE if key was pulled, otherwise FALSE.
- * @return *what Number \n the key pulled.
- * @note
- * This functions starts from an index, which may not be at the start of the
- * array.
- * @note (see file util.c)
- */
-extern bool repeat_pull(int *what = 0);
-
-/** @fn repeat_check(void)
- * @brief Check if the last command is repeated.
- * @note
- * Ignore certain commands: ESC, space, newline.\n
- * 'n' repeats the last command (index is set to 0).\n
- * Other commands reset the repeat array (index and count are set to 0).
- * @note (see file util.c)
- */
-extern void repeat_check(void);
-
-/** @fn get_count(int number, int max)
- * @brief Allow the user to select multiple items without pressing '0'.\n
- * @param number Number \n the default number.
- * @brief Default
- * @param max Number \n the maximum value allowed.
- * @brief Maximum
- * The user is prompted with "How many?"
- * @note (see file util.c)
- */
-extern void get_count(int number, int max);
-
-/** @name Feature Flags
- * @{
- */
-/** @def FF1_NO_WALK */
-#define FF1_NO_WALK 0x00000001L
-
-/** @def FF1_NO_VISION */
-#define FF1_NO_VISION 0x00000002L
-
-/** @def FF1_CAN_LEVITATE */
-#define FF1_CAN_LEVITATE 0x00000004L
-
-/** @def FF1_CAN_PASS */
-#define FF1_CAN_PASS 0x00000008L
-
-/** @def FF1_FLOOR */
-#define FF1_FLOOR 0x00000010L
-
-/** @def FF1_WALL */
-#define FF1_WALL 0x00000020L
-
-/** @def FF1_PERMANENT */
-#define FF1_PERMANENT 0x00000040L
-
-/** @def FF1_CAN_FLY */
-#define FF1_CAN_FLY 0x00000080L
-
-/** @def FF1_REMEMBER */
-#define FF1_REMEMBER 0x00000100L
-
-/** @def FF1_NOTICE */
-#define FF1_NOTICE 0x00000200L
-
-/** @def FF1_DONT_NOTICE_RUNNING */
-#define FF1_DONT_NOTICE_RUNNING 0x00000400L
-
-/** @def FF1_CAN_RUN */
-#define FF1_CAN_RUN 0x00000800L
-
-/** @def FF1_DOOR */
-#define FF1_DOOR 0x00001000L
-
-/** @def FF1_SUPPORT_LIGHT */
-#define FF1_SUPPORT_LIGHT 0x00002000L
-
-/** @def FF1_CAN_CLIMB */
-#define FF1_CAN_CLIMB 0x00004000L
-
-/** @def FF1_TUNNELABLE */
-#define FF1_TUNNELABLE 0x00008000L
-
-/** @def FF1_WEB */
-#define FF1_WEB 0x00010000L
-
-/** @def FF1_ATTR_MULTI */
-#define FF1_ATTR_MULTI 0x00020000L
-
-/** @def FF1_SUPPORT_GROWTH */
-#define FF1_SUPPORT_GROWTH 0x00040000L
-/** @} */
-
-
-/* Cave stuff */
-/** @struct cave_type
- */
-struct cave_type
-{
- /** @structvar info
- * @brief Number
- * @note Hack -- cave flags
- */
- u16b info;
-
- /** @structvar feat
- * @brief Number
- * @note Hack -- feature type
- */
- byte feat;
-
- /** @structvar o_idx
- * @brief Number
- * @note Object in this grid
- */
- s16b o_idx;
-
- /** @structvar m_idx
- * @brief Number
- * @note Monster in this grid
- */
- s16b m_idx;
-
- /** @structvar t_idx
- * @brief Number
- * @note trap index (in t_list) or zero
- */
- s16b t_idx;
-
- /** @structvar special
- * @brief Number
- */
- s16b special;
- /** @structvar special2
- * @brief Number
- * @note Special cave info
- */
- s16b special2;
-
- /** @structvar inscription
- * @brief Number
- * @note Inscription of the grid
- */
- s16b inscription;
-
- /** @structvar mana
- * @brief Number
- * @note Magical energy of the grid
- */
- byte mana;
-
- /** @structvar mimic
- * @brief Number
- * @note Feature to mimic
- */
- byte mimic;
-
- /** @structvar effect
- * @brief Number
- * @note The lasting effects
- */
- s16b effect;
-};
-
-/** @var ANGBAND_SYS
- * @brief String
- * @note
- * Hack -- The special Angband "System Suffix"\n
- * This variable is used to choose an appropriate "pref-xxx" file
- */
-extern cptr ANGBAND_SYS;
-
-/** @var ANGBAND_KEYBOARD
- * @brief String
- * @note
- * Hack -- The special Angband "Keyboard Suffix"\n
- * This variable is used to choose an appropriate macro-trigger definition
- */
-extern cptr ANGBAND_KEYBOARD;
-
-/** @var ANGBAND_GRAF
- * @brief String
- * @note
- * Hack -- The special Angband "Graphics Suffix"\n
- * This variable is used to choose an appropriate "graf-xxx" file
- */
-extern cptr ANGBAND_GRAF;
-
-/** @var ANGBAND_DIR
- * @brief String
- * @note
- * Path name: The main "lib" directory\n
- * This variable is not actually used anywhere in the code
- */
-extern cptr ANGBAND_DIR;
-
-/** @var ANGBAND_DIR_APEX
- * @brief String
- * @note
- * High score files (binary)\n
- * These files may be portable between platforms
- */
-extern cptr ANGBAND_DIR_APEX;
-
-/** @var ANGBAND_DIR_CORE
- * @brief String
- * @note
- * Core lua system\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_CORE;
-
-/** @var ANGBAND_DIR_DNGN
- * @brief String
- * @note
- * Textual dungeon level definition files\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_DNGN;
-
-/** @var ANGBAND_DIR_DATA
- * @brief String
- * @note
- * Binary image files for the "*_info" arrays (binary)\n
- * These files are not portable between platforms
- */
-extern cptr ANGBAND_DIR_DATA;
-
-/** @var ANGBAND_DIR_EDIT
- * @brief String
- * @note
- * Textual template files for the "*_info" arrays (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_EDIT;
-
-/** @var ANGBAND_DIR_FILE
- * @brief String
- * @note
- * Various extra files (ascii)\n
- * These files may be portable between platforms
- */
-extern cptr ANGBAND_DIR_FILE;
-
-/** @var ANGBAND_DIR_HELP
- * @brief String
- * @note
- * Help files (normal) for the online help (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_HELP;
-
-/** @var ANGBAND_DIR_INFO
- * @brief String
- * @note
- * Help files (spoilers) for the online help (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_INFO;
-
-/** @var ANGBAND_DIR_MODULES
- * @brief String
- * @note
- * Modules, those subdirectories are half-mirrors of lib/
- */
-extern cptr ANGBAND_DIR_MODULES;
-
-/** @var ANGBAND_DIR_NOTE
- * @brief String
- * @note
- * Textual template files for the plot files (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_NOTE;
-
-/** @var ANGBAND_DIR_SAVE
- * @brief String
- * @note
- * Savefiles for current characters (binary)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_SAVE;
-
-/** @var ANGBAND_DIR_SCPT
- * @brief String
- * @note
- * Scripts.\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_SCPT;
-
-/** @var ANGBAND_DIR_PREF
- * @brief String
- * @note
- * Default "preference" files (ascii)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_PREF;
-
-/** @var ANGBAND_DIR_PATCH
- * @brief String
- * @note
- * Patches, contains one subdir per patch with a patch.lua file
- * in it and a patch_init() function in it
- */
-extern cptr ANGBAND_DIR_PATCH;
-
-/** @var ANGBAND_DIR_USER
- * @brief String
- * @note
- * User "preference" files (ascii)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_USER;
-
-/** @var ANGBAND_DIR_XTRA
- * @brief String
- * @note
- * Various extra files (binary)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_XTRA;
-
-/** @var ANGBAND_DIR_CMOV
- * @brief String
- * @note
- * Cmovie files of entire games (ascii)\n
- * Apart from possible newline things, likely portable btw platforms
- */
-extern cptr ANGBAND_DIR_CMOV;
-
-
-/** @fn los(int y1, int x1, int y2, int x2)
- * @brief Determine if a line of sight can be traced from (x1,y1) to (x2,y2).\n
- * @param y1 Number \n y-coordinate of the origin.
- * @brief Origin y-coordinate
- * @param x1 Number \n x-coordinate of the origin.
- * @brief Origin x-coordinate
- * @param y2 Number \n y-coordinate of the target.
- * @brief Target y-coordinate
- * @param x2 Number \n x-coordinate of the target.
- * @brief Target x-coordinate
- * @return Boolean \n TRUE if origin has line of sight to target, otherwise
- * FALSE.
- * @note
- * A simple, fast, integer-based line-of-sight algorithm. By Joseph Hall,
- * 4116 Brewster Drive, Raleigh NC 27606. Email to jnh@ecemwl.ncsu.edu.\n\n
- * Returns TRUE if a line of sight can be traced from (x1,y1) to (x2,y2).\n\n
- * The LOS begins at the center of the tile (x1,y1) and ends at the center of
- * the tile (x2,y2). If los() is to return TRUE, all of the tiles this line
- * passes through must be floor tiles, except for (x1,y1) and (x2,y2).\n\n
- * We assume that the "mathematical corner" of a non-floor tile does not
- * block line of sight.\n\n
- * Because this function uses (short) ints for all calculations, overflow may
- * occur if dx and dy exceed 90.\n\n
- * Once all the degenerate cases are eliminated, the values "qx", "qy", and
- * "m" are multiplied by a scale factor "f1 = abs(dx * dy * 2)", so that
- * we can use integer arithmetic.\n\n
- * We travel from start to finish along the longer axis, starting at the border
- * between the first and second tiles, where the y offset = .5 * slope, taking
- * into account the scale factor. See below.\n\n
- * Also note that this function and the "move towards target" code do NOT
- * share the same properties. Thus, you can see someone, target them, and
- * then fire a bolt at them, but the bolt may hit a wall, not them. However,
- * by clever choice of target locations, you can sometimes throw a "curve".\n\n
- * Note that "line of sight" is not "reflexive" in all cases.\n\n
- * Use the "projectable()" routine to test "spell/missile line of sight".\n\n*
- * Use the "update_view()" function to determine player line-of-sight.\n\n
- * @note (see file cave.c)
- */
-extern bool los(int y1, int x1, int y2, int x2);
-$static bool lua_cave_is(cave_type *c_ptr, s32b flag) { return (f_info[c_ptr->feat].flags1 & flag) ? TRUE : FALSE; }
-
-/** @fn cave_is(cave_type *c_ptr, s32b flag);
- * @brief Determine if cave "c_ptr" has feature "flag".\n
- * @param *c_ptr cave_type \n the cave.
- * @brief Cave
- * @param flag Number \n the required feature flag.
- * @brief Feature
- * @return Boolean \n TRUE if the cave features include "flag", otherwise
- * FALSE.
- * @note (see file w_util.c)
- */
-static bool lua_cave_is @ cave_is(cave_type *c_ptr, s32b flag);
-
-/** @fn cave(int y, int x);
- * @brief Return the type of cave at grid coordinate (x,y).\n
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @return cave_type \n The type of cave at grid coordinate (x,y).
- * @note (see file lua_bind.c)
- */
-extern cave_type *lua_get_cave @ cave(int y, int x);
-
-/** @fn set_target(int y, int x)
- * @brief Set grid coordinate (x,y) as the target grid.\n
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @note (see file lua_bind.c)
- */
-extern void set_target(int y, int x);
-
-/** @fn get_target(int dir, int *y = 0, int *x = 0)
- * @brief Get a target based on direction "dir" from the player.\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param *y Number
- * @brief Target y-coordinate
- * @param *x Number
- * @brief Target x-coordinate
- * @return *y Number \n The y-coordinate of the target.
- * @return *x Number \n The x-coordinate of the target.
- * @note
- * The target is actually 100 grids away in direction "dir". If "dir" is 5,
- * the actual target, if one is set, is returned.
- * @note (see file lua_bind.c)
- */
-extern void get_target(int dir, int *y = 0, int *x = 0);
-
-/** @var m_allow_special[max_r_idx]
- * @brief Boolean
- * @note "Special gene" flags for monsters
- */
-extern bool m_allow_special[max_r_idx];
-
-/** @var k_allow_special[max_k_idx]
- * @brief Boolean
- * @note "Special gene" flags for objects
- */
-extern bool k_allow_special[max_k_idx];
-
-/** @var a_allow_special[max_a_idx]
- * @brief Boolean
- * @note "Special gene" flags for artifacts
- */
-extern bool a_allow_special[max_a_idx];
-
-/** @fn cave_set_feat(int y, int x, int feat)
- * @brief Change the "feat" flag for a grid, and notice/redraw the grid
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @param feat Number \n new set of feature flags.
- * @brief Features
- * @note (see file cave.c)
- */
-extern void cave_set_feat(int y, int x, int feat);
-
-/** @fn show_file(cptr name, cptr what, int line, int mode)
- * @brief Show a help file.\n
- * @param name String \n name of the help file.
- * @brief Filename
- * @param what String \n hyperlink caption.
- * @brief Caption
- * @param line Number \n the line number from where to start the display of
- * the file.
- * @brief Starting line
- * @param mode Number \n *unused*
- * @brief *Unused*
- * @return Boolean \n TRUE if file was shown successfully, otherwise FALSE.\n
- * @note
- * If the file is not found, the function will search the help, info, and file
- * directories for the file. If it is still not found, a message is displayed
- * and the function returns FALSE.\n\n
- * The file is parsed once to extract colour, tag, and hyperlink
- * information.\n\n
- * The file is parse again to show it on the screen.
- * @note (see file files.c)
- */
-extern bool show_file(cptr name, cptr what, int line, int mode);
-
-/** @var target_who
- * @brief Number
- * @note
- * If this is -1, the target is the player.\n
- * If this is 0, there is no target.\n
- * If this is >0, the target is the monster m_idx[target_who].
- */
-extern s16b target_who;
-
-/** @var target_col
- * @brief Number
- * @note The column of the target grid
- */
-extern s16b target_col;
-
-/** @var target_row
- * @brief Number
- * @note The row of the target grid
- */
-extern s16b target_row;
-
-/** @var max_bact
- * @brief Number
- * @note Maximum building actions
- */
-extern int max_bact;
-
-/** @var ddd[9]
- * @brief Number
- * @note Global array for looping through the "keypad directions"
- */
-extern s16b ddd[9];
-
-/** @var ddx[10]
- * @brief Number
- * @note Global array for converting "keypad direction" into x offsets
- */
-extern s16b ddx[10];
-
-/** @var ddy[10]
- * @brief Number
- * @note Global array for converting "keypad direction" into y offsets
- */
-extern s16b ddy[10];
-
-/** @var ddx_ddd[9]
- * @brief Number
- * @note Global array for optimizing "ddx[ddd[i]]"
- */
-extern s16b ddx_ddd[9];
-
-/** @var ddy_ddd[9]
- * @brief Number
- * @note Global array for optimizing "ddy[ddd[i]]"
- */
-extern s16b ddy_ddd[9];
-
-
-/* Gen stuff */
-
-/** @fn load_map(char *name, int *y = 2, int *x = 2)
- * @brief Load the map in file "name".\n
- * @param *name String \n the name of the map file.
- * @brief Map
- * @param *y Number
- * @brief Maximum y-coordinate
- * @param *x Number
- * @brief Maximum x-coordinate
- * @return *y Number \n The maximum y-coordinate of the map.
- * @return *x Number \n The maximum x-coordinate of the map.
- * @note
- * The map is loaded and the player is placed at the starting position.
- * @note (see file lua_bind.c)
- */
-extern void load_map(char *name, int *y = 2, int *x = 2);
-
-/** @fn alloc_room(int by0, int bx0, int ysize, int xsize, int *y1 = 0, int *x1 = 0, int *y2 = 0, int *x2 = 0)
- * @brief Allocate the space needed by a room in the room_map array.\n
- * @param by0 Number \n the y-coordinate of the block to contain the room.
- * @brief Block y-coordinate
- * @param bx0 Number \n the x-coordinate of the block to contain the room.
- * @brief Block x-coordinate
- * @param ysize Number \n the vertical size (height) of the room.
- * @brief Room height
- * @param xsize Number \n the horizontal size (width) of the room.
- * @brief Room width
- * @param *y1 Number
- * @brief Top-right y-coordinate
- * @param *x1 Number
- * @brief Top-right x-coordinate
- * @param *y2 Number
- * @brief Bottom-left y-coordinate
- * @param *x2 Number
- * @brief Bottom-right x-coordinate
- * @return Boolean \n TRUE if the room was allocated successfully, otherwise
- * FALSE.
- * @return *y1 Number \n The y-coordinate of the top left corner.
- * @return *x1 Number \n The x-coordinate of the top left corner.
- * @return *y2 Number \n The y-coordinate of the bottom right corner.
- * @return *x2 Number \n The x-coordinate of the bottom right corner.
- * @note
- * Dungeon generation is not something to be messed around with unless you
- * really, really, really know what you are doing (or you are DarkGod).
- * @note (see file lua_bind.c, generate.c)
- */
-extern bool alloc_room(int by0, int bx0, int ysize, int xsize, int *y1 = 0, int *x1 = 0, int *y2 = 0, int *x2 = 0);
-
-/** @var option_ingame_help
- * @brief Boolean
- * @note Ingame contextual help flag
- */
-extern bool option_ingame_help;
-
-/* Misc stuff */
-/** @fn input_box(cptr title, int max);
- * @brief Create an input box and ask the user a question.\n
- * @param title String \n the title of the box, which should take the form of
- * a question. For example, "New name?".
- * @brief Title
- * @param max Number \n the maximum length of the response.
- * @brief Maximum response length
- * @return String \n The answer to the question.
- * @note
- * The input box is placed in the middle of the screen. The default reponse is
- * blank, and can be up to 79 characters long.
- * @note (see file lua_bind.c, util.c)
- */
-extern char *lua_input_box@input_box(cptr title, int max);
-
-/** @fn msg_box(cptr title);
- * @brief Create a msg box and ask a question.\n
- * @param title String \n the question.
- * @brief Question
- * @return String \n The answer.
- * @note
- * The message box is placed in the middle of the screen. The answer is a
- * single character / key press.
- * @note (see file lua_bind.c, util.c)
- */
-extern char lua_msg_box@msg_box(cptr title);
-
-/** @fn rescale(s32b x, s32b max, s32b new_max)
- * @brief Rescale value "x".\n
- * @param x Number \n the original value.
- * @brief Value
- * @param max Number \n the original maximum that value could have.
- * @brief Original maximum
- * @param new_max Number \n the new maximum that value can have.
- * @brief New maximum
- * @return Number \n The rescaled value of "x".
- * @note
- * There is no error checking here. Please don't set "max" to zero.
- * @note (see file util.c)
- */
-extern s32b rescale(s32b x, s32b max, s32b new_max);
-$static const char *player_name_lua(void){return (const char *)player_name;}
-
-/** @fn player_name()
- * @brief Return the player's name.
- * @return String \n The player's name.
- * @note (see file w_util.c)
- */
-const char *player_name_lua@player_name();
-
-/* Quarks */
-/** @fn quark_str(s16b num)
- * @brief Return a quark (inscription) from the quark array.\n
- * @param num Number \n the index to the quark string array. If this is less
- * than zero or more than the maximum number of quarks, it is treated as zero.
- * @brief Quark index
- * @return String \n The quark.
- * @note
- * We use a global array for all inscriptions to reduce the memory
- * spent maintaining inscriptions. Of course, it is still possible
- * to run out of inscription memory, especially if too many different
- * inscriptions are used, but hopefully this will be rare.\n\n
- * We use dynamic string allocation because otherwise it is necessary
- * to pre-guess the amount of quark activity. We limit the total
- * number of quarks, but this is much easier to "expand" as needed.\n\n
- * Any two items with the same inscription will have the same "quark"
- * index, which should greatly reduce the need for inscription space.\n\n
- * Note that "quark zero" is NULL and should not be "dereferenced".
- * @note (see file util.c)
- */
-extern cptr quark_str(s16b num);
-
-/** @fn quark_add(cptr str)
- * @brief Add a quark (inscription) to the quark array.\n
- * @param str String \n the quark to add to the array.
- * @brief Quark
- * @return Number \n The index to the quark array for this quark
- * @note
- * The array is searched to see if the quark already exists. If so, the index
- * to the existing quark is returned.\n
- * If there is no room, 0 (NULL reference) is returned.
- * @note (see file util.c)
- */
-extern s16b quark_add(cptr str);
-
-/* Modules */
-/** @fn module_reset_dir(cptr dir, cptr new_path)
- * @brief Redirect one of the ToME directories.\n
- * @param dir String \n the name of the directory (not the full path).
- * @brief Directory
- * @param new_path String \n the new path of "dir" under ANGBAND_DIR_MODULES.\n
- * @brief New path
- * @note (see file modules.c)
- */
-extern void module_reset_dir(cptr dir, cptr new_path);
-
-/** @fn scansubdir(cptr dir)
- * @brief Scan sub-directory "dir".\n
- * @param dir String \n the sub-directory to scan.
- * @brief Directory
- * @note
- * Nicer wrapper around TERM_XTRA_SCANSUBDIR\n\n
- * This function sets scansubdir_dir and calls the SCANSUBDIR terminal hook.
- * @note (see file util.c)
- */
-extern void scansubdir(cptr dir);
-
-/** @fn file_exist(char *buf)
- * @brief Check if file "buf" exists.\n
- * @param *buf String \n the file to be tested.
- * @brief Filename
- * @return Boolean \n TRUE if the file exists, otherwise FALSE.
- * @note (see file loadsave.c)
- */
-extern bool file_exist(char *buf);
-
-/** @var game_module
- * @brief String
- * @note The name of the current game module
- */
-extern cptr game_module;
-
-/* Input */
-/** @fn get_keymap_dir(char ch)
- * @brief Get a direction from the keyboard according to the keymap.\n
- * @param ch String \n the character representing a direction.
- * @brief Direction
- * @return Number \n The direction represented by "ch". It will be in the
- * range 0 to 9.
- * @note
- * If "ch" is a number, the number is used. Otherwise the direction is
- * chosen from the Original or Rogue keymaps.\n
- * If the direction is 5, it is set to 0.
- * @note (see file util.c)
- */
-extern int get_keymap_dir(char ch);
-
-/*
- * Timers
- */
-/** @struct timer_type
- */
-struct timer_type
-{
- /** @structvar *next
- * @brief timer_type
- * @note The next timer in the list
- */
- timer_type *next;
-
- /** @structvar enabled
- * @brief Boolean
- * @note Is it currently counting?
- */
- bool enabled;
-
- /** @structvar delay
- * @brief Number
- * @note Delay between activations
- */
- s32b delay;
- /** @structvar countdown
- * @brief Number
- * @note The current number of turns passed, when it reaches delay it fires
- */
- s32b countdown;
-
- /** @structvar callback
- * @brief String
- * @note The lua function to call upon firing(no C callback yet .. maybe)
- */
- cptr callback;
-};
-
-/** @fn *new_timer(cptr callback, s32b delay)
- * @brief Create a timer with callback "callback" and delay "delay".\n
- * @param callback String \n the callback associated with the timer.
- * @brief Callback
- * @param delay Number \n the delay associated with the timer.
- * @brief Delay
- * @return timer_type \n The new timer.
- * @note
- * The timer's countdown is also set to "delay". The timer is disabled.
- * @note (see file util.c)
- */
-extern timer_type *new_timer(cptr callback, s32b delay);
-
-/** @fn del_timer(timer_type *t_ptr)
- * @brief Delete timer "t_ptr".\n
- * @param *t_ptr timer_type \n the timer to be deleted.
- * @brief Timer
- * @note (see file util.c)
- */
-extern void del_timer(timer_type *t_ptr);
-
-/*
- * Lists
- */
-/** @struct list_type
- */
-struct list_type
-{
-};
-
-/** @fn create_list(int size);
- * @dgonly
- * @brief Create an empty list big enough to store "size" strings.\n
- * @param size Number \n the number of strings the list will hold.
- * @brief List size
- * @return list_type \n The empty list.
- * @note (see file lua_bind.c)
- */
-extern list_type *lua_create_list@create_list(int size);
-
-/** @fn delete_list(list_type *, int size);
- * @dgonly
- * @brief Delete the list of strings.\n
- * @param * list_type \n the list of strings.
- * @brief List
- * @param size Number \n the number of strings the list holds.
- * @brief List size
- * @note
- * All the strings in the list are deleted first, then the list is deleted.
- * @note (see file lua_bind.c)
- */
-extern void lua_delete_list@delete_list(list_type *, int size);
-
-/** @fn add_to_list(list_type *, int idx, cptr str);
- * @dgonly
- * @brief Add string "str" to list in position "idx".\n
- * @param * list_type \n the list of strings.
- * @brief List
- * @param idx Number \n the index of the list where the string will be added.
- * @brief Index
- * @param str String \n the string to be added.
- * @brief String
- * @note
- * Too bad if there was something in that position already.
- * You have been warned.
- * @note (see file lua_bind.c)
- */
-extern void lua_add_to_list@add_to_list(list_type *, int idx, cptr str);
-
-/** @fn display_list(int y, int x, int h, int w, cptr title, list_type *list, int max, int begin, int sel, byte sel_color);
- * @dgonly
- * @brief Display a scrollable boxed list with a selected item.\n
- * @param y Number \n the y-coordinate of the top-left corner of the box.
- * @brief Top-left y-coordinate
- * @param x Number \n the x-coordinate of the top-left corner of the box.
- * @brief Top-left x-coordinate
- * @param h Number \n the height of the box.
- * @brief Height
- * @param w Number \n the width of the box.
- * @brief Width
- * @param title String \n the title for the list box.
- * @brief Title
- * @param *list list_type \n the list of strings to be displayed.
- * @brief List
- * @param max Number \n the maximum number of strings to display.
- * @brief Maximum displayed strings
- * @param begin Number \n the index of the first string to display.
- * @brief Start index
- * @param sel Number \n the index of the selected string.
- * @brief Selected index
- * @param sel_color Number \n the colour of the selected string.
- * @brief Selected colour
- * @note
- * The title of the list is displayed in TERM_L_BLUE and the unselected strings
- * are displayed in TERM_WHITE.
- * @note (see file util.c)
- */
-extern void lua_display_list@display_list(int y, int x, int h, int w, cptr title, list_type *list, int max, int begin, int sel, byte sel_color);
-
-extern errr file_character(cptr name, bool full);
-extern void calc_bonuses(bool silent);
-
-extern void note_spot(int y, int x);
-extern void lite_spot(int y, int x);
-
-extern bool drop_text_left(byte c, cptr s, int y, int o);
-extern bool drop_text_right(byte c, cptr s, int y, int o);