#include "main/sound-definitions-table.h"
#include "main/sound-of-music.h"
#include "perception/object-perception.h"
+#include "player/player-status-table.h"
#include "specific-object/chest.h"
#include "status/bad-status-setter.h"
#include "status/experience.h"
#include "term/screen-processor.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
-#include "player/player-status-table.h"
/*!
* @brief 「開ける」動作コマンドのサブルーチン /
}
return more;
-}
+}
\ No newline at end of file
#define MKEY_BOOTS _("靴", "boots")
concptr KEY_BOOTS = MKEY_BOOTS;
-command_menu_type menu_data[MENU_DATA_NUM] =
-{
- {MN_HELP, 0, -1, EC_HELP},
- {MN_QUIT, 0, KTRL('q'), EC_QUIT},
- {MN_SAVEQUIT, 0, KTRL('w'), EC_SAVEQUIT},
- {MN_REVERT, 0, KTRL('z'), EC_REVERT},
+command_menu_type menu_data[MENU_DATA_NUM] = { { MN_HELP, 0, -1, EC_HELP }, { MN_QUIT, 0, KTRL('q'), EC_QUIT }, { MN_SAVEQUIT, 0, KTRL('w'), EC_SAVEQUIT },
+ { MN_REVERT, 0, KTRL('z'), EC_REVERT },
- {MN_EDIT, 0, -1, -1},
- {MN_CUT, 1, KTRL('x'), EC_CUT},
- {MN_COPY, 1, KTRL('c'), EC_COPY},
- {MN_PASTE, 1, KTRL('v'), EC_PASTE},
- {MN_BLOCK, 1, KTRL('g'), EC_BLOCK},
- {MN_KILL_LINE, 1, KTRL('k'), EC_KILL_LINE},
- {MN_DELETE_CHAR, 1, KTRL('d'), EC_DELETE_CHAR},
- {MN_BACKSPACE, 1, KTRL('h'), EC_BACKSPACE},
- {MN_RETURN, 1, KTRL('j'), EC_RETURN},
- {MN_RETURN, 1, KTRL('m'), EC_RETURN},
+ { MN_EDIT, 0, -1, -1 }, { MN_CUT, 1, KTRL('x'), EC_CUT }, { MN_COPY, 1, KTRL('c'), EC_COPY }, { MN_PASTE, 1, KTRL('v'), EC_PASTE },
+ { MN_BLOCK, 1, KTRL('g'), EC_BLOCK }, { MN_KILL_LINE, 1, KTRL('k'), EC_KILL_LINE }, { MN_DELETE_CHAR, 1, KTRL('d'), EC_DELETE_CHAR },
+ { MN_BACKSPACE, 1, KTRL('h'), EC_BACKSPACE }, { MN_RETURN, 1, KTRL('j'), EC_RETURN }, { MN_RETURN, 1, KTRL('m'), EC_RETURN },
- {MN_SEARCH, 0, -1, -1},
- {MN_SEARCH_STR, 1, KTRL('s'), EC_SEARCH_STR},
- {MN_SEARCH_FORW, 1, -1, EC_SEARCH_FORW},
- {MN_SEARCH_BACK, 1, KTRL('r'), EC_SEARCH_BACK},
- {MN_SEARCH_OBJ, 1, KTRL('y'), EC_SEARCH_OBJ},
- {MN_SEARCH_DESTROYED, 1, -1, EC_SEARCH_DESTROYED},
+ { MN_SEARCH, 0, -1, -1 }, { MN_SEARCH_STR, 1, KTRL('s'), EC_SEARCH_STR }, { MN_SEARCH_FORW, 1, -1, EC_SEARCH_FORW },
+ { MN_SEARCH_BACK, 1, KTRL('r'), EC_SEARCH_BACK }, { MN_SEARCH_OBJ, 1, KTRL('y'), EC_SEARCH_OBJ }, { MN_SEARCH_DESTROYED, 1, -1, EC_SEARCH_DESTROYED },
- {MN_MOVE, 0, -1, -1},
- {MN_LEFT, 1, KTRL('b'), EC_LEFT},
- {MN_DOWN, 1, KTRL('n'), EC_DOWN},
- {MN_UP, 1, KTRL('p'), EC_UP},
- {MN_RIGHT, 1, KTRL('f'), EC_RIGHT},
- {MN_BOL, 1, KTRL('a'), EC_BOL},
- {MN_EOL, 1, KTRL('e'), EC_EOL},
- {MN_PGUP, 1, KTRL('o'), EC_PGUP},
- {MN_PGDOWN, 1, KTRL('l'), EC_PGDOWN},
- {MN_TOP, 1, KTRL('t'), EC_TOP},
- {MN_BOTTOM, 1, KTRL('u'), EC_BOTTOM},
+ { MN_MOVE, 0, -1, -1 }, { MN_LEFT, 1, KTRL('b'), EC_LEFT }, { MN_DOWN, 1, KTRL('n'), EC_DOWN }, { MN_UP, 1, KTRL('p'), EC_UP },
+ { MN_RIGHT, 1, KTRL('f'), EC_RIGHT }, { MN_BOL, 1, KTRL('a'), EC_BOL }, { MN_EOL, 1, KTRL('e'), EC_EOL }, { MN_PGUP, 1, KTRL('o'), EC_PGUP },
+ { MN_PGDOWN, 1, KTRL('l'), EC_PGDOWN }, { MN_TOP, 1, KTRL('t'), EC_TOP }, { MN_BOTTOM, 1, KTRL('u'), EC_BOTTOM },
- {MN_INSERT, 0, -1, -1},
- {MN_INSERT_OBJECT, 1, KTRL('i'), EC_INSERT_OBJECT},
- {MN_INSERT_DESTROYED, 1, -1, EC_INSERT_DESTROYED},
- {MN_INSERT_BLOCK, 1, -1, EC_INSERT_BLOCK},
- {MN_INSERT_MACRO, 1, -1, EC_INSERT_MACRO},
- {MN_INSERT_KEYMAP, 1, -1, EC_INSERT_KEYMAP},
+ { MN_INSERT, 0, -1, -1 }, { MN_INSERT_OBJECT, 1, KTRL('i'), EC_INSERT_OBJECT }, { MN_INSERT_DESTROYED, 1, -1, EC_INSERT_DESTROYED },
+ { MN_INSERT_BLOCK, 1, -1, EC_INSERT_BLOCK }, { MN_INSERT_MACRO, 1, -1, EC_INSERT_MACRO }, { MN_INSERT_KEYMAP, 1, -1, EC_INSERT_KEYMAP },
- {MN_ADJECTIVE_GEN, 0, -1, -1},
- {MKEY_UNAWARE, 1, -1, EC_IK_UNAWARE},
- {MKEY_UNIDENTIFIED, 1, -1, EC_IK_UNIDENTIFIED},
- {MKEY_IDENTIFIED, 1, -1, EC_IK_IDENTIFIED},
- {MKEY_STAR_IDENTIFIED, 1, -1, EC_IK_STAR_IDENTIFIED},
- {MKEY_COLLECTING, 1, -1, EC_OK_COLLECTING},
- {MKEY_ARTIFACT, 1, -1, EC_OK_ARTIFACT},
- {MKEY_EGO, 1, -1, EC_OK_EGO},
- {MKEY_GOOD, 1, -1, EC_OK_GOOD},
- {MKEY_NAMELESS, 1, -1, EC_OK_NAMELESS},
- {MKEY_AVERAGE, 1, -1, EC_OK_AVERAGE},
- {MKEY_WORTHLESS, 1, -1, EC_OK_WORTHLESS},
- {MN_RARE, 1, -1, EC_OK_RARE},
- {MN_COMMON, 1, -1, EC_OK_COMMON},
+ { MN_ADJECTIVE_GEN, 0, -1, -1 }, { MKEY_UNAWARE, 1, -1, EC_IK_UNAWARE }, { MKEY_UNIDENTIFIED, 1, -1, EC_IK_UNIDENTIFIED },
+ { MKEY_IDENTIFIED, 1, -1, EC_IK_IDENTIFIED }, { MKEY_STAR_IDENTIFIED, 1, -1, EC_IK_STAR_IDENTIFIED }, { MKEY_COLLECTING, 1, -1, EC_OK_COLLECTING },
+ { MKEY_ARTIFACT, 1, -1, EC_OK_ARTIFACT }, { MKEY_EGO, 1, -1, EC_OK_EGO }, { MKEY_GOOD, 1, -1, EC_OK_GOOD }, { MKEY_NAMELESS, 1, -1, EC_OK_NAMELESS },
+ { MKEY_AVERAGE, 1, -1, EC_OK_AVERAGE }, { MKEY_WORTHLESS, 1, -1, EC_OK_WORTHLESS }, { MN_RARE, 1, -1, EC_OK_RARE }, { MN_COMMON, 1, -1, EC_OK_COMMON },
- {MN_ADJECTIVE_SPECIAL, 0, -1, -1},
- {MN_BOOSTED, 1, -1, EC_OK_BOOSTED},
- {MN_MORE_DICE, 1, -1, EC_OK_MORE_DICE},
- {MN_MORE_BONUS, 1, -1, EC_OK_MORE_BONUS},
- {MN_WANTED, 1, -1, EC_OK_WANTED},
- {MN_UNIQUE, 1, -1, EC_OK_UNIQUE},
- {MN_HUMAN, 1, -1, EC_OK_HUMAN},
- {MN_UNREADABLE, 1, -1, EC_OK_UNREADABLE},
- {MN_REALM1, 1, -1, EC_OK_REALM1},
- {MN_REALM2, 1, -1, EC_OK_REALM2},
- {MN_FIRST, 1, -1, EC_OK_FIRST},
- {MN_SECOND, 1, -1, EC_OK_SECOND},
- {MN_THIRD, 1, -1, EC_OK_THIRD},
- {MN_FOURTH, 1, -1, EC_OK_FOURTH},
+ { MN_ADJECTIVE_SPECIAL, 0, -1, -1 }, { MN_BOOSTED, 1, -1, EC_OK_BOOSTED }, { MN_MORE_DICE, 1, -1, EC_OK_MORE_DICE },
+ { MN_MORE_BONUS, 1, -1, EC_OK_MORE_BONUS }, { MN_WANTED, 1, -1, EC_OK_WANTED }, { MN_UNIQUE, 1, -1, EC_OK_UNIQUE }, { MN_HUMAN, 1, -1, EC_OK_HUMAN },
+ { MN_UNREADABLE, 1, -1, EC_OK_UNREADABLE }, { MN_REALM1, 1, -1, EC_OK_REALM1 }, { MN_REALM2, 1, -1, EC_OK_REALM2 }, { MN_FIRST, 1, -1, EC_OK_FIRST },
+ { MN_SECOND, 1, -1, EC_OK_SECOND }, { MN_THIRD, 1, -1, EC_OK_THIRD }, { MN_FOURTH, 1, -1, EC_OK_FOURTH },
- {MN_NOUN, 0, -1, -1},
- {MKEY_WEAPONS, 1, -1, EC_KK_WEAPONS},
- {MKEY_FAVORITE_WEAPONS, 1, -1, EC_KK_FAVORITE_WEAPONS},
- {MKEY_ARMORS, 1, -1, EC_KK_ARMORS},
- {MKEY_MISSILES, 1, -1, EC_KK_MISSILES},
- {MKEY_DEVICES, 1, -1, EC_KK_DEVICES},
- {MKEY_LIGHTS, 1, -1, EC_KK_LIGHTS},
- {MKEY_JUNKS, 1, -1, EC_KK_JUNKS},
- {MKEY_CORPSES, 1, -1, EC_KK_CORPSES},
- {MKEY_SPELLBOOKS, 1, -1, EC_KK_SPELLBOOKS},
- {MKEY_SHIELDS, 1, -1, EC_KK_SHIELDS},
- {MKEY_BOWS, 1, -1, EC_KK_BOWS},
- {MKEY_RINGS, 1, -1, EC_KK_RINGS},
- {MKEY_AMULETS, 1, -1, EC_KK_AMULETS},
- {MKEY_SUITS, 1, -1, EC_KK_SUITS},
- {MKEY_CLOAKS, 1, -1, EC_KK_CLOAKS},
- {MKEY_HELMS, 1, -1, EC_KK_HELMS},
- {MKEY_GLOVES, 1, -1, EC_KK_GLOVES},
- {MKEY_BOOTS, 1, -1, EC_KK_BOOTS},
+ { MN_NOUN, 0, -1, -1 }, { MKEY_WEAPONS, 1, -1, EC_KK_WEAPONS }, { MKEY_FAVORITE_WEAPONS, 1, -1, EC_KK_FAVORITE_WEAPONS },
+ { MKEY_ARMORS, 1, -1, EC_KK_ARMORS }, { MKEY_MISSILES, 1, -1, EC_KK_MISSILES }, { MKEY_DEVICES, 1, -1, EC_KK_DEVICES },
+ { MKEY_LIGHTS, 1, -1, EC_KK_LIGHTS }, { MKEY_JUNKS, 1, -1, EC_KK_JUNKS }, { MKEY_CORPSES, 1, -1, EC_KK_CORPSES },
+ { MKEY_SPELLBOOKS, 1, -1, EC_KK_SPELLBOOKS }, { MKEY_SHIELDS, 1, -1, EC_KK_SHIELDS }, { MKEY_BOWS, 1, -1, EC_KK_BOWS }, { MKEY_RINGS, 1, -1, EC_KK_RINGS },
+ { MKEY_AMULETS, 1, -1, EC_KK_AMULETS }, { MKEY_SUITS, 1, -1, EC_KK_SUITS }, { MKEY_CLOAKS, 1, -1, EC_KK_CLOAKS }, { MKEY_HELMS, 1, -1, EC_KK_HELMS },
+ { MKEY_GLOVES, 1, -1, EC_KK_GLOVES }, { MKEY_BOOTS, 1, -1, EC_KK_BOOTS },
- {MN_COMMAND_LETTER, 0, -1, -1},
- {MN_CL_AUTOPICK, 1, -1, EC_CL_AUTOPICK},
- {MN_CL_DESTROY, 1, -1, EC_CL_DESTROY},
- {MN_CL_LEAVE, 1, -1, EC_CL_LEAVE},
- {MN_CL_QUERY, 1, -1, EC_CL_QUERY},
- {MN_CL_NO_DISP, 1, -1, EC_CL_NO_DISP},
+ { MN_COMMAND_LETTER, 0, -1, -1 }, { MN_CL_AUTOPICK, 1, -1, EC_CL_AUTOPICK }, { MN_CL_DESTROY, 1, -1, EC_CL_DESTROY }, { MN_CL_LEAVE, 1, -1, EC_CL_LEAVE },
+ { MN_CL_QUERY, 1, -1, EC_CL_QUERY }, { MN_CL_NO_DISP, 1, -1, EC_CL_NO_DISP },
- {MN_DELETE_CHAR, -1, 0x7F, EC_DELETE_CHAR},
+ { MN_DELETE_CHAR, -1, 0x7F, EC_DELETE_CHAR },
- {NULL, -1, -1, 0}
-};
+ { NULL, -1, -1, 0 } };
\ No newline at end of file
#define MENU_DATA_NUM 92
typedef struct command_menu_type {
- concptr name;
- int level;
- int key;
- int com_id;
+ concptr name;
+ int level;
+ int key;
+ int com_id;
} command_menu_type;
extern command_menu_type menu_data[MENU_DATA_NUM];
#include "object-enchant/apply-magic.h"
#include "object-enchant/item-apply-magic.h"
#include "object-enchant/object-ego.h"
-#include "perception/object-perception.h"
#include "object/object-generator.h"
+#include "object/object-info.h"
#include "object/object-kind-hook.h"
#include "object/object-kind.h"
-#include "object/object-info.h"
+#include "perception/object-perception.h"
#include "player/player-personalities-types.h"
#include "player/player-race-types.h"
#include "realm/realm-types.h"
}
k_info[lookup_kind(TV_POTION, SV_POTION_WATER)].aware = TRUE;
-}
+}
\ No newline at end of file
msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
return TRUE;
}
-
+
if (r_ptr->level <= randint1(100))
return FALSE;
msg_print(_("何も現れなかった。", "No one appeared."));
return TRUE;
-}
+}
\ No newline at end of file
#include "monster/monster-status.h"
#include "mspell/monster-power-table.h"
#include "mspell/mspell-type.h"
-#include "player/player-status.h"
#include "player/player-status-table.h"
+#include "player/player-status.h"
#include "spell-kind/spells-launcher.h"
#include "spell-kind/spells-lite.h"
#include "spell-kind/spells-neighbor.h"
/* spell code */
switch (spell) {
-
case MS_SHRIEK:
msg_print(_("かん高い金切り声をあげた。", "You make a high pitched shriek."));
aggravate_monsters(caster_ptr, 0);
creature_ptr->window |= (PW_SPELL);
return TRUE;
-}
+}
\ No newline at end of file
#include "mind/mind-types.h"
#include "player/player-class.h"
#include "player/player-damage.h"
-#include "spell-kind/spells-teleport.h"
#include "player/player-status-table.h"
+#include "spell-kind/spells-teleport.h"
#include "spell/spell-types.h"
#include "status/bad-status-setter.h"
#include "status/base-status.h"
break;
}
}
-}
+}
\ No newline at end of file
#include "io/input-key-requester.h"
#include "io/write-diary.h"
#include "mind/mind-ninja.h"
-#include "player/attack-defense-types.h"
#include "player-info/avatar.h"
+#include "player/attack-defense-types.h"
#include "player/player-move.h"
#include "player/special-defense-types.h"
#include "spell-realm/spells-hex.h"
update_output(creature_ptr);
if (need_term_fresh())
term_fresh();
-}
+}
\ No newline at end of file
#include "player/player-damage.h"
#include "player/player-move.h"
#include "player/player-skill.h"
+#include "player/player-status-flags.h"
#include "player/player-status.h"
#include "player/special-defense-types.h"
-#include "player/player-status-flags.h"
#include "status/action-setter.h"
#include "system/floor-type-definition.h"
#include "target/target-checker.h"
break;
}
}
-}
+}
\ No newline at end of file
#include "object-hook/hook-magic.h"
#include "object/item-tester-hooker.h"
#include "object/item-use-flags.h"
+#include "player-info/avatar.h"
#include "player-info/self-info.h"
#include "player/attack-defense-types.h"
-#include "player-info/avatar.h"
#include "player/eldritch-horror.h"
#include "player/player-class.h"
#include "player/player-damage.h"
caster_ptr->window |= (PW_PLAYER);
caster_ptr->window |= (PW_SPELL);
-}
+}
\ No newline at end of file
creature_ptr->redraw |= PR_MAP;
creature_ptr->window |= PW_OVERHEAD | PW_DUNGEON;
handle_stuff(creature_ptr);
-}
+}
\ No newline at end of file
screen_load();
if (need_redraw)
do_cmd_redraw(creature_ptr);
-}
+}
\ No newline at end of file
#include "cmd-io/cmd-lore.h"
#include "core/asking-player.h"
-#include "util/sort.h"
#include "core/stuff-handler.h"
-#include "game-option/game-play-options.h"
#include "game-option/cheat-options.h"
+#include "game-option/game-play-options.h"
#include "io/input-key-acceptor.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "term/screen-processor.h"
#include "term/term-color-types.h"
#include "util/int-char-converter.h"
+#include "util/sort.h"
#include "util/string-processor.h"
#include "view/display-lore.h"
C_KILL(who, max_r_idx, MONRACE_IDX);
prt(buf, 0, 0);
-}
+}
\ No newline at end of file
process_boomerang_back(creature_ptr, it_ptr);
drop_thrown_item(creature_ptr, it_ptr);
return TRUE;
-}
+}
\ No newline at end of file
/* Sniper - Repeat shooting when double shots */
for (i = 0; i < ((snipe_type == SP_DOUBLE) ? 2 : 1); i++) {
-
/* Start at the player */
y = shooter_ptr->y;
x = shooter_ptr->x;
}
return num;
-}
+}
\ No newline at end of file
}
if (creature_ptr->timewalk && (creature_ptr->energy_need > -1000)) {
-
creature_ptr->redraw |= (PR_MAP);
creature_ptr->update |= (PU_MONSTERS);
creature_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
creature_ptr->enchant_energy_need += ENERGY_NEED();
}
-}
+}
\ No newline at end of file
*/
static void show_file_aux_line(concptr str, int cy, concptr shower)
{
- char lcstr[1024];
- if (shower)
- {
- strcpy(lcstr, str);
- str_tolower(lcstr);
- }
-
- int cx = 0;
- term_gotoxy(cx, cy);
-
- static const char tag_str[] = "[[[[";
- byte color = TERM_WHITE;
- char in_tag = '\0';
- for (int i = 0; str[i];)
- {
- int len = strlen(&str[i]);
- int showercol = len + 1;
- int bracketcol = len + 1;
- int endcol = len;
- concptr ptr;
- if (shower)
- {
- ptr = angband_strstr(&lcstr[i], shower);
- if (ptr) showercol = ptr - &lcstr[i];
- }
-
- ptr = in_tag ? angband_strchr(&str[i], in_tag) : angband_strstr(&str[i], tag_str);
- if (ptr) bracketcol = ptr - &str[i];
- if (bracketcol < endcol) endcol = bracketcol;
- if (showercol < endcol) endcol = showercol;
-
- term_addstr(endcol, color, &str[i]);
- cx += endcol;
- i += endcol;
-
- if (shower && endcol == showercol)
- {
- int showerlen = strlen(shower);
- term_addstr(showerlen, TERM_YELLOW, &str[i]);
- cx += showerlen;
- i += showerlen;
- continue;
- }
-
- if (endcol != bracketcol) continue;
-
- if (in_tag)
- {
- i++;
- in_tag = '\0';
- color = TERM_WHITE;
- continue;
- }
-
- i += sizeof(tag_str) - 1;
- color = color_char_to_attr(str[i]);
- if (color == 255 || str[i + 1] == '\0')
- {
- color = TERM_WHITE;
- term_addstr(-1, TERM_WHITE, tag_str);
- cx += sizeof(tag_str) - 1;
- continue;
- }
-
- i++;
- in_tag = str[i];
- i++;
- }
-
- term_erase(cx, cy, 255);
-}
+ char lcstr[1024];
+ if (shower) {
+ strcpy(lcstr, str);
+ str_tolower(lcstr);
+ }
+ int cx = 0;
+ term_gotoxy(cx, cy);
+
+ static const char tag_str[] = "[[[[";
+ byte color = TERM_WHITE;
+ char in_tag = '\0';
+ for (int i = 0; str[i];) {
+ int len = strlen(&str[i]);
+ int showercol = len + 1;
+ int bracketcol = len + 1;
+ int endcol = len;
+ concptr ptr;
+ if (shower) {
+ ptr = angband_strstr(&lcstr[i], shower);
+ if (ptr)
+ showercol = ptr - &lcstr[i];
+ }
+
+ ptr = in_tag ? angband_strchr(&str[i], in_tag) : angband_strstr(&str[i], tag_str);
+ if (ptr)
+ bracketcol = ptr - &str[i];
+ if (bracketcol < endcol)
+ endcol = bracketcol;
+ if (showercol < endcol)
+ endcol = showercol;
+
+ term_addstr(endcol, color, &str[i]);
+ cx += endcol;
+ i += endcol;
+
+ if (shower && endcol == showercol) {
+ int showerlen = strlen(shower);
+ term_addstr(showerlen, TERM_YELLOW, &str[i]);
+ cx += showerlen;
+ i += showerlen;
+ continue;
+ }
+
+ if (endcol != bracketcol)
+ continue;
+
+ if (in_tag) {
+ i++;
+ in_tag = '\0';
+ color = TERM_WHITE;
+ continue;
+ }
+
+ i += sizeof(tag_str) - 1;
+ color = color_char_to_attr(str[i]);
+ if (color == 255 || str[i + 1] == '\0') {
+ color = TERM_WHITE;
+ term_addstr(-1, TERM_WHITE, tag_str);
+ cx += sizeof(tag_str) - 1;
+ continue;
+ }
+
+ i++;
+ in_tag = str[i];
+ i++;
+ }
+
+ term_erase(cx, cy, 255);
+}
/*!
* todo 表示とそれ以外を分割する
*/
bool show_file(player_type *creature_ptr, bool show_version, concptr name, concptr what, int line, BIT_FLAGS mode)
{
- int wid, hgt;
- term_get_size(&wid, &hgt);
-
- char finder_str[81];
- strcpy(finder_str, "");
-
- char shower_str[81];
- strcpy(shower_str, "");
-
- char caption[128];
- strcpy(caption, "");
-
- char hook[68][32];
- for (int i = 0; i < 68; i++)
- {
- hook[i][0] = '\0';
- }
-
- char filename[1024];
- strcpy(filename, name);
- int n = strlen(filename);
-
- concptr tag = NULL;
- for (int i = 0; i < n; i++)
- {
- if (filename[i] == '#')
- {
- filename[i] = '\0';
- tag = filename + i + 1;
- break;
- }
- }
-
- name = filename;
- FILE *fff = NULL;
- char path[1024];
- if (what)
- {
- strcpy(caption, what);
- strcpy(path, name);
- fff = angband_fopen(path, "r");
- }
-
- if (!fff)
- {
- sprintf(caption, _("ヘルプ・ファイル'%s'", "Help file '%s'"), name);
- path_build(path, sizeof(path), ANGBAND_DIR_HELP, name);
- fff = angband_fopen(path, "r");
- }
-
- if (!fff)
- {
- sprintf(caption, _("スポイラー・ファイル'%s'", "Info file '%s'"), name);
- path_build(path, sizeof(path), ANGBAND_DIR_INFO, name);
- fff = angband_fopen(path, "r");
- }
-
- if (!fff)
- {
- path_build(path, sizeof(path), ANGBAND_DIR, name);
-
- for (int i = 0; path[i]; i++)
- if ('\\' == path[i])
- path[i] = PATH_SEP[0];
-
- sprintf(caption, _("スポイラー・ファイル'%s'", "Info file '%s'"), name);
- fff = angband_fopen(path, "r");
- }
-
- if (!fff)
- {
- msg_format(_("'%s'をオープンできません。", "Cannot open '%s'."), name);
- msg_print(NULL);
-
- return TRUE;
- }
-
- int skey;
- int next = 0;
- int size = 0;
- int back = 0;
- bool menu = FALSE;
- char buf[1024];
- bool reverse = (line < 0);
- while (TRUE)
- {
- char *str = buf;
- if (angband_fgets(fff, buf, sizeof(buf))) break;
- if (!prefix(str, "***** "))
- {
- next++;
- continue;
- }
-
- if ((str[6] == '[') && isalpha(str[7]))
- {
- int k = str[7] - 'A';
- menu = TRUE;
- if ((str[8] == ']') && (str[9] == ' '))
- {
- strncpy(hook[k], str + 10, 31);
- hook[k][31] = '\0';
- }
-
- continue;
- }
-
- if (str[6] != '<') continue;
-
- size_t len = strlen(str);
- if (str[len - 1] == '>')
- {
- str[len - 1] = '\0';
- if (tag && streq(str + 7, tag)) line = next;
- }
- }
-
- size = next;
- int rows = hgt - 4;
- if (line == -1)
- line = ((size - 1) / rows)*rows;
-
- term_clear();
-
- concptr find = NULL;
- while (TRUE)
- {
- if (line >= size - rows)
- line = size - rows;
- if (line < 0) line = 0;
-
- if (next > line)
- {
- angband_fclose(fff);
- fff = angband_fopen(path, "r");
- if (!fff) return FALSE;
-
- next = 0;
- }
-
- while (next < line)
- {
- if (angband_fgets(fff, buf, sizeof(buf))) break;
- if (prefix(buf, "***** ")) continue;
- next++;
- }
-
- int row_count = 0;
- concptr shower = NULL;
- for (int i = 0; i < rows; i++)
- {
- concptr str = buf;
- if (!i) line = next;
- if (angband_fgets(fff, buf, sizeof(buf))) break;
- if (prefix(buf, "***** ")) continue;
- next++;
- if (find && !i)
- {
- char lc_buf[1024];
- strcpy(lc_buf, str);
- str_tolower(lc_buf);
- if (!angband_strstr(lc_buf, find)) continue;
- }
-
- find = NULL;
- show_file_aux_line(str, i + 2, shower);
- row_count++;
- }
-
- while (row_count < rows)
- {
- term_erase(0, row_count + 2, 255);
- row_count++;
- }
-
- if (find)
- {
- bell();
- line = back;
- find = NULL;
- continue;
- }
-
- prt(format(_("[変愚蛮怒 %d.%d.%d, %s, %d/%d]", "[Hengband %d.%d.%d, %s, Line %d/%d]"), FAKE_VER_MAJOR - 10, FAKE_VER_MINOR, FAKE_VER_PATCH,
- caption, line, size),
- 0, 0);
-
-
- if (show_version)
- {
- char title[127];
- put_version(title);
- prt(format("[%s]", title), 0, 0);
- }
- else
- {
- prt(format(_("[%s, %d/%d]", "[%s, Line %d/%d]"),
- caption, line, size), 0, 0);
- }
-
- if (size <= rows)
- {
- prt(_("[キー:(?)ヘルプ (ESC)終了]", "[Press ESC to exit.]"), hgt - 1, 0);
- }
- else
- {
+ int wid, hgt;
+ term_get_size(&wid, &hgt);
+
+ char finder_str[81];
+ strcpy(finder_str, "");
+
+ char shower_str[81];
+ strcpy(shower_str, "");
+
+ char caption[128];
+ strcpy(caption, "");
+
+ char hook[68][32];
+ for (int i = 0; i < 68; i++) {
+ hook[i][0] = '\0';
+ }
+
+ char filename[1024];
+ strcpy(filename, name);
+ int n = strlen(filename);
+
+ concptr tag = NULL;
+ for (int i = 0; i < n; i++) {
+ if (filename[i] == '#') {
+ filename[i] = '\0';
+ tag = filename + i + 1;
+ break;
+ }
+ }
+
+ name = filename;
+ FILE *fff = NULL;
+ char path[1024];
+ if (what) {
+ strcpy(caption, what);
+ strcpy(path, name);
+ fff = angband_fopen(path, "r");
+ }
+
+ if (!fff) {
+ sprintf(caption, _("ヘルプ・ファイル'%s'", "Help file '%s'"), name);
+ path_build(path, sizeof(path), ANGBAND_DIR_HELP, name);
+ fff = angband_fopen(path, "r");
+ }
+
+ if (!fff) {
+ sprintf(caption, _("スポイラー・ファイル'%s'", "Info file '%s'"), name);
+ path_build(path, sizeof(path), ANGBAND_DIR_INFO, name);
+ fff = angband_fopen(path, "r");
+ }
+
+ if (!fff) {
+ path_build(path, sizeof(path), ANGBAND_DIR, name);
+
+ for (int i = 0; path[i]; i++)
+ if ('\\' == path[i])
+ path[i] = PATH_SEP[0];
+
+ sprintf(caption, _("スポイラー・ファイル'%s'", "Info file '%s'"), name);
+ fff = angband_fopen(path, "r");
+ }
+
+ if (!fff) {
+ msg_format(_("'%s'をオープンできません。", "Cannot open '%s'."), name);
+ msg_print(NULL);
+
+ return TRUE;
+ }
+
+ int skey;
+ int next = 0;
+ int size = 0;
+ int back = 0;
+ bool menu = FALSE;
+ char buf[1024];
+ bool reverse = (line < 0);
+ while (TRUE) {
+ char *str = buf;
+ if (angband_fgets(fff, buf, sizeof(buf)))
+ break;
+ if (!prefix(str, "***** ")) {
+ next++;
+ continue;
+ }
+
+ if ((str[6] == '[') && isalpha(str[7])) {
+ int k = str[7] - 'A';
+ menu = TRUE;
+ if ((str[8] == ']') && (str[9] == ' ')) {
+ strncpy(hook[k], str + 10, 31);
+ hook[k][31] = '\0';
+ }
+
+ continue;
+ }
+
+ if (str[6] != '<')
+ continue;
+
+ size_t len = strlen(str);
+ if (str[len - 1] == '>') {
+ str[len - 1] = '\0';
+ if (tag && streq(str + 7, tag))
+ line = next;
+ }
+ }
+
+ size = next;
+ int rows = hgt - 4;
+ if (line == -1)
+ line = ((size - 1) / rows) * rows;
+
+ term_clear();
+
+ concptr find = NULL;
+ while (TRUE) {
+ if (line >= size - rows)
+ line = size - rows;
+ if (line < 0)
+ line = 0;
+
+ if (next > line) {
+ angband_fclose(fff);
+ fff = angband_fopen(path, "r");
+ if (!fff)
+ return FALSE;
+
+ next = 0;
+ }
+
+ while (next < line) {
+ if (angband_fgets(fff, buf, sizeof(buf)))
+ break;
+ if (prefix(buf, "***** "))
+ continue;
+ next++;
+ }
+
+ int row_count = 0;
+ concptr shower = NULL;
+ for (int i = 0; i < rows; i++) {
+ concptr str = buf;
+ if (!i)
+ line = next;
+ if (angband_fgets(fff, buf, sizeof(buf)))
+ break;
+ if (prefix(buf, "***** "))
+ continue;
+ next++;
+ if (find && !i) {
+ char lc_buf[1024];
+ strcpy(lc_buf, str);
+ str_tolower(lc_buf);
+ if (!angband_strstr(lc_buf, find))
+ continue;
+ }
+
+ find = NULL;
+ show_file_aux_line(str, i + 2, shower);
+ row_count++;
+ }
+
+ while (row_count < rows) {
+ term_erase(0, row_count + 2, 255);
+ row_count++;
+ }
+
+ if (find) {
+ bell();
+ line = back;
+ find = NULL;
+ continue;
+ }
+
+ prt(format(_("[変愚蛮怒 %d.%d.%d, %s, %d/%d]", "[Hengband %d.%d.%d, %s, Line %d/%d]"), FAKE_VER_MAJOR - 10, FAKE_VER_MINOR, FAKE_VER_PATCH, caption,
+ line, size),
+ 0, 0);
+
+ if (show_version) {
+ char title[127];
+ put_version(title);
+ prt(format("[%s]", title), 0, 0);
+ } else {
+ prt(format(_("[%s, %d/%d]", "[%s, Line %d/%d]"), caption, line, size), 0, 0);
+ }
+
+ if (size <= rows) {
+ prt(_("[キー:(?)ヘルプ (ESC)終了]", "[Press ESC to exit.]"), hgt - 1, 0);
+ } else {
#ifdef JP
- if (reverse)
- prt("[キー:(RET/スペース)↑ (-)↓ (?)ヘルプ (ESC)終了]", hgt - 1, 0);
- else
- prt("[キー:(RET/スペース)↓ (-)↑ (?)ヘルプ (ESC)終了]", hgt - 1, 0);
+ if (reverse)
+ prt("[キー:(RET/スペース)↑ (-)↓ (?)ヘルプ (ESC)終了]", hgt - 1, 0);
+ else
+ prt("[キー:(RET/スペース)↓ (-)↑ (?)ヘルプ (ESC)終了]", hgt - 1, 0);
#else
- prt("[Press Return, Space, -, =, /, |, or ESC to exit.]", hgt - 1, 0);
+ prt("[Press Return, Space, -, =, /, |, or ESC to exit.]", hgt - 1, 0);
#endif
- }
-
- skey = inkey_special(TRUE);
- switch (skey)
- {
- case '?':
- if (strcmp(name, _("jhelpinfo.txt", "helpinfo.txt")) != 0)
- show_file(creature_ptr, TRUE, _("jhelpinfo.txt", "helpinfo.txt"), NULL, 0, mode);
- break;
- case '=':
- prt(_("強調: ", "Show: "), hgt - 1, 0);
-
- char back_str[81];
- strcpy(back_str, shower_str);
- if (askfor(shower_str, 80))
- {
- if (shower_str[0])
- {
- str_tolower(shower_str);
- shower = shower_str;
- }
- else shower = NULL;
- }
- else strcpy(shower_str, back_str);
- break;
-
- case '/':
- case KTRL('s'):
- prt(_("検索: ", "Find: "), hgt - 1, 0);
- strcpy(back_str, finder_str);
- if (askfor(finder_str, 80))
- {
- if (finder_str[0])
- {
- find = finder_str;
- back = line;
- line = line + 1;
- str_tolower(finder_str);
- shower = finder_str;
- }
- else shower = NULL;
- }
- else strcpy(finder_str, back_str);
- break;
-
- case '#':
- {
- char tmp[81];
- prt(_("行: ", "Goto Line: "), hgt - 1, 0);
- strcpy(tmp, "0");
-
- if (askfor(tmp, 80)) line = atoi(tmp);
- break;
- }
-
- case SKEY_TOP:
- line = 0;
- break;
-
- case SKEY_BOTTOM:
- line = ((size - 1) / rows) * rows;
- break;
-
- case '%':
- {
- char tmp[81];
- prt(_("ファイル・ネーム: ", "Goto File: "), hgt - 1, 0);
- strcpy(tmp, _("jhelp.hlp", "help.hlp"));
-
- if (askfor(tmp, 80))
- {
- if (!show_file(creature_ptr, TRUE, tmp, NULL, 0, mode)) skey = 'q';
- }
-
- break;
- }
-
- case '-':
- line = line + (reverse ? rows : -rows);
- if (line < 0) line = 0;
- break;
-
- case SKEY_PGUP:
- line = line - rows;
- if (line < 0) line = 0;
- break;
-
- case '\n':
- case '\r':
- line = line + (reverse ? -1 : 1);
- if (line < 0) line = 0;
- break;
-
- case '8':
- case SKEY_UP:
- line--;
- if (line < 0) line = 0;
- break;
-
- case '2':
- case SKEY_DOWN:
- line++;
- break;
-
- case ' ':
- line = line + (reverse ? -rows : rows);
- if (line < 0) line = 0;
- break;
-
- case SKEY_PGDOWN:
- line = line + rows;
- break;
- }
-
- if (menu)
- {
- int key = -1;
- if (!(skey & SKEY_MASK) && isalpha(skey))
- key = skey - 'A';
-
- if ((key > -1) && hook[key][0])
- {
- /* Recurse on that file */
- if (!show_file(creature_ptr, TRUE, hook[key], NULL, 0, mode))
- skey = 'q';
- }
- }
-
- if (skey == '|')
- {
- FILE *ffp;
- char buff[1024];
- char xtmp[82];
-
- strcpy(xtmp, "");
-
- if (!get_string(_("ファイル名: ", "File name: "), xtmp, 80)) continue;
- angband_fclose(fff);
- path_build(buff, sizeof(buff), ANGBAND_DIR_USER, xtmp);
-
- /* Hack -- Re-Open the file */
- fff = angband_fopen(path, "r");
-
- ffp = angband_fopen(buff, "w");
-
- if (!(fff && ffp))
- {
- msg_print(_("ファイルを開けません。", "Failed to open file."));
- skey = ESCAPE;
- break;
- }
-
- sprintf(xtmp, "%s: %s", creature_ptr->name, what ? what : caption);
- angband_fputs(ffp, xtmp, 80);
- angband_fputs(ffp, "\n", 80);
-
- while (!angband_fgets(fff, buff, sizeof(buff)))
- angband_fputs(ffp, buff, 80);
- angband_fclose(fff);
- angband_fclose(ffp);
- fff = angband_fopen(path, "r");
- }
-
- if ((skey == ESCAPE) || (skey == '<')) break;
-
- if (skey == KTRL('q')) skey = 'q';
-
- if (skey == 'q') break;
- }
-
- angband_fclose(fff);
- return (skey != 'q');
+ }
+
+ skey = inkey_special(TRUE);
+ switch (skey) {
+ case '?':
+ if (strcmp(name, _("jhelpinfo.txt", "helpinfo.txt")) != 0)
+ show_file(creature_ptr, TRUE, _("jhelpinfo.txt", "helpinfo.txt"), NULL, 0, mode);
+ break;
+ case '=':
+ prt(_("強調: ", "Show: "), hgt - 1, 0);
+
+ char back_str[81];
+ strcpy(back_str, shower_str);
+ if (askfor(shower_str, 80)) {
+ if (shower_str[0]) {
+ str_tolower(shower_str);
+ shower = shower_str;
+ } else
+ shower = NULL;
+ } else
+ strcpy(shower_str, back_str);
+ break;
+
+ case '/':
+ case KTRL('s'):
+ prt(_("検索: ", "Find: "), hgt - 1, 0);
+ strcpy(back_str, finder_str);
+ if (askfor(finder_str, 80)) {
+ if (finder_str[0]) {
+ find = finder_str;
+ back = line;
+ line = line + 1;
+ str_tolower(finder_str);
+ shower = finder_str;
+ } else
+ shower = NULL;
+ } else
+ strcpy(finder_str, back_str);
+ break;
+
+ case '#': {
+ char tmp[81];
+ prt(_("行: ", "Goto Line: "), hgt - 1, 0);
+ strcpy(tmp, "0");
+
+ if (askfor(tmp, 80))
+ line = atoi(tmp);
+ break;
+ }
+
+ case SKEY_TOP:
+ line = 0;
+ break;
+
+ case SKEY_BOTTOM:
+ line = ((size - 1) / rows) * rows;
+ break;
+
+ case '%': {
+ char tmp[81];
+ prt(_("ファイル・ネーム: ", "Goto File: "), hgt - 1, 0);
+ strcpy(tmp, _("jhelp.hlp", "help.hlp"));
+
+ if (askfor(tmp, 80)) {
+ if (!show_file(creature_ptr, TRUE, tmp, NULL, 0, mode))
+ skey = 'q';
+ }
+
+ break;
+ }
+
+ case '-':
+ line = line + (reverse ? rows : -rows);
+ if (line < 0)
+ line = 0;
+ break;
+
+ case SKEY_PGUP:
+ line = line - rows;
+ if (line < 0)
+ line = 0;
+ break;
+
+ case '\n':
+ case '\r':
+ line = line + (reverse ? -1 : 1);
+ if (line < 0)
+ line = 0;
+ break;
+
+ case '8':
+ case SKEY_UP:
+ line--;
+ if (line < 0)
+ line = 0;
+ break;
+
+ case '2':
+ case SKEY_DOWN:
+ line++;
+ break;
+
+ case ' ':
+ line = line + (reverse ? -rows : rows);
+ if (line < 0)
+ line = 0;
+ break;
+
+ case SKEY_PGDOWN:
+ line = line + rows;
+ break;
+ }
+
+ if (menu) {
+ int key = -1;
+ if (!(skey & SKEY_MASK) && isalpha(skey))
+ key = skey - 'A';
+
+ if ((key > -1) && hook[key][0]) {
+ /* Recurse on that file */
+ if (!show_file(creature_ptr, TRUE, hook[key], NULL, 0, mode))
+ skey = 'q';
+ }
+ }
+
+ if (skey == '|') {
+ FILE *ffp;
+ char buff[1024];
+ char xtmp[82];
+
+ strcpy(xtmp, "");
+
+ if (!get_string(_("ファイル名: ", "File name: "), xtmp, 80))
+ continue;
+ angband_fclose(fff);
+ path_build(buff, sizeof(buff), ANGBAND_DIR_USER, xtmp);
+
+ /* Hack -- Re-Open the file */
+ fff = angband_fopen(path, "r");
+
+ ffp = angband_fopen(buff, "w");
+
+ if (!(fff && ffp)) {
+ msg_print(_("ファイルを開けません。", "Failed to open file."));
+ skey = ESCAPE;
+ break;
+ }
+
+ sprintf(xtmp, "%s: %s", creature_ptr->name, what ? what : caption);
+ angband_fputs(ffp, xtmp, 80);
+ angband_fputs(ffp, "\n", 80);
+
+ while (!angband_fgets(fff, buff, sizeof(buff)))
+ angband_fputs(ffp, buff, 80);
+ angband_fclose(fff);
+ angband_fclose(ffp);
+ fff = angband_fopen(path, "r");
+ }
+
+ if ((skey == ESCAPE) || (skey == '<'))
+ break;
+
+ if (skey == KTRL('q'))
+ skey = 'q';
+
+ if (skey == 'q')
+ break;
+ }
+
+ angband_fclose(fff);
+ return (skey != 'q');
}
/*
#endif
*str = (char)tolower(*str);
}
-}
+}
\ No newline at end of file
#include "term/term-color-types.h"
#include "view/display-messages.h"
#include "view/display-player.h"
-#include "window/display-sub-windows.h"
#include "window/display-sub-window-spells.h"
+#include "window/display-sub-windows.h"
#include "window/main-window-left-frame.h"
#include "window/main-window-row-column.h"
#include "window/main-window-stat-poster.h"
player_ptr->window &= ~(PW_OBJECT);
fix_object(player_ptr);
}
-}
+}
\ No newline at end of file
}
write_level = TRUE;
-}
+}
\ No newline at end of file
player_ptr->current_floor_ptr->inside_quest = player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].special;
player_ptr->leaving = TRUE;
-}
+}
\ No newline at end of file
#include "dungeon/quest.h"
#include "effect/effect-monster-util.h"
#include "effect/spells-effect-util.h"
+#include "monster-floor/monster-remover.h"
#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster/monster-flag-types.h"
#include "monster/monster-info.h"
#include "monster/monster-list.h"
-#include "monster-floor/monster-remover.h"
#include "monster/monster-status-setter.h"
#include "monster/monster-status.h"
#include "object-enchant/trc-types.h"
#include "pet/pet-fall-off.h"
#include "player-info/avatar.h"
#include "player/player-status-flags.h"
-#include "status/bad-status-setter.h"
#include "spell/spells-diceroll.h"
+#include "status/bad-status-setter.h"
#include "system/floor-type-definition.h"
#include "view/display-messages.h"
return TRUE;
}
- if ((em_ptr->r_ptr->flags1 & RF1_QUESTOR) || (em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->m_ptr->mflag2 & MFLAG2_NOPET)
- || has_aggravate(caster_ptr) || ((em_ptr->r_ptr->level + 10) > randint1(em_ptr->dam))) {
+ if ((em_ptr->r_ptr->flags1 & RF1_QUESTOR) || (em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->m_ptr->mflag2 & MFLAG2_NOPET) || has_aggravate(caster_ptr)
+ || ((em_ptr->r_ptr->level + 10) > randint1(em_ptr->dam))) {
if (one_in_(4))
em_ptr->m_ptr->mflag2 |= MFLAG2_NOPET;
msg_format(_("うまく捕まえられなかった。", "You failed to capture %s."), em_ptr->m_name);
em_ptr->skipped = TRUE;
return PROCESS_CONTINUE;
-}
+}
\ No newline at end of file
#include "effect/effect-monster-oldies.h"
#include "core/player-redraw-types.h"
#include "effect/effect-monster-util.h"
+#include "monster-floor/monster-generator.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags3.h"
#include "monster-race/race-flags7.h"
#include "monster-race/race-indice-types.h"
+#include "monster/monster-info.h"
#include "monster/monster-status-setter.h"
#include "monster/monster-status.h"
-#include "monster-floor/monster-generator.h"
-#include "monster/monster-info.h"
#include "player-info/avatar.h"
#include "system/floor-type-definition.h"
#include "view/display-messages.h"
// Powerful monsters can resist.
process_result effect_monster_old_poly(effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
- em_ptr->do_polymorph = TRUE;
-
- if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
- (em_ptr->r_ptr->flags1 & RF1_QUESTOR) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->do_polymorph = FALSE;
- em_ptr->obvious = FALSE;
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+ em_ptr->do_polymorph = TRUE;
+
+ if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->r_ptr->flags1 & RF1_QUESTOR)
+ || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->do_polymorph = FALSE;
+ em_ptr->obvious = FALSE;
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_old_clone(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if ((caster_ptr->current_floor_ptr->inside_arena) ||
- is_pet(em_ptr->m_ptr) ||
- (em_ptr->r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) ||
- (em_ptr->r_ptr->flags7 & (RF7_NAZGUL | RF7_UNIQUE2)))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
-
- em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
- if (multiply_monster(caster_ptr, em_ptr->g_ptr->m_idx, TRUE, 0L))
- em_ptr->note = _("が分裂した!", " spawns!");
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if ((caster_ptr->current_floor_ptr->inside_arena) || is_pet(em_ptr->m_ptr) || (em_ptr->r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR))
+ || (em_ptr->r_ptr->flags7 & (RF7_NAZGUL | RF7_UNIQUE2))) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
+
+ em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
+ if (multiply_monster(caster_ptr, em_ptr->g_ptr->m_idx, TRUE, 0L))
+ em_ptr->note = _("が分裂した!", " spawns!");
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_star_heal(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
-
- if (em_ptr->m_ptr->maxhp < em_ptr->m_ptr->max_maxhp)
- {
- if (em_ptr->seen_msg)
- msg_format(_("%^sの強さが戻った。", "%^s recovers %s vitality."), em_ptr->m_name, em_ptr->m_poss);
- em_ptr->m_ptr->maxhp = em_ptr->m_ptr->max_maxhp;
- }
-
- if (!em_ptr->dam)
- {
- if (caster_ptr->health_who == em_ptr->g_ptr->m_idx)
- caster_ptr->redraw |= (PR_HEALTH);
- if (caster_ptr->riding == em_ptr->g_ptr->m_idx)
- caster_ptr->redraw |= (PR_UHEALTH);
-
- return PROCESS_FALSE;
- }
-
- effect_monster_old_heal(caster_ptr, em_ptr);
- return PROCESS_TRUE;
-}
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
+
+ if (em_ptr->m_ptr->maxhp < em_ptr->m_ptr->max_maxhp) {
+ if (em_ptr->seen_msg)
+ msg_format(_("%^sの強さが戻った。", "%^s recovers %s vitality."), em_ptr->m_name, em_ptr->m_poss);
+ em_ptr->m_ptr->maxhp = em_ptr->m_ptr->max_maxhp;
+ }
+ if (!em_ptr->dam) {
+ if (caster_ptr->health_who == em_ptr->g_ptr->m_idx)
+ caster_ptr->redraw |= (PR_HEALTH);
+ if (caster_ptr->riding == em_ptr->g_ptr->m_idx)
+ caster_ptr->redraw |= (PR_UHEALTH);
+
+ return PROCESS_FALSE;
+ }
+
+ effect_monster_old_heal(caster_ptr, em_ptr);
+ return PROCESS_TRUE;
+}
// who == 0ならばプレーヤーなので、それの判定.
static void effect_monster_old_heal_check_player(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->who != 0) return;
-
- chg_virtue(caster_ptr, V_VITALITY, 1);
- if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
- chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
-
- if (is_friendly(em_ptr->m_ptr))
- chg_virtue(caster_ptr, V_HONOUR, 1);
- else if (!(em_ptr->r_ptr->flags3 & RF3_EVIL))
- {
- if (em_ptr->r_ptr->flags3 & RF3_GOOD)
- chg_virtue(caster_ptr, V_COMPASSION, 2);
- else
- chg_virtue(caster_ptr, V_COMPASSION, 1);
- }
-
- if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
- chg_virtue(caster_ptr, V_NATURE, 1);
+ if (em_ptr->who != 0)
+ return;
+
+ chg_virtue(caster_ptr, V_VITALITY, 1);
+ if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
+ chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
+
+ if (is_friendly(em_ptr->m_ptr))
+ chg_virtue(caster_ptr, V_HONOUR, 1);
+ else if (!(em_ptr->r_ptr->flags3 & RF3_EVIL)) {
+ if (em_ptr->r_ptr->flags3 & RF3_GOOD)
+ chg_virtue(caster_ptr, V_COMPASSION, 2);
+ else
+ chg_virtue(caster_ptr, V_COMPASSION, 1);
+ }
+
+ if (em_ptr->r_ptr->flags3 & RF3_ANIMAL)
+ chg_virtue(caster_ptr, V_NATURE, 1);
}
-
static void effect_monster_old_heal_recovery(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (monster_stunned_remaining(em_ptr->m_ptr))
- {
- if (em_ptr->seen_msg)
- msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), em_ptr->m_name);
+ if (monster_stunned_remaining(em_ptr->m_ptr)) {
+ if (em_ptr->seen_msg)
+ msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), em_ptr->m_name);
- (void)set_monster_stunned(caster_ptr, em_ptr->g_ptr->m_idx, 0);
- }
+ (void)set_monster_stunned(caster_ptr, em_ptr->g_ptr->m_idx, 0);
+ }
- if (monster_confused_remaining(em_ptr->m_ptr))
- {
- if (em_ptr->seen_msg)
- msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), em_ptr->m_name);
+ if (monster_confused_remaining(em_ptr->m_ptr)) {
+ if (em_ptr->seen_msg)
+ msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), em_ptr->m_name);
- (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, 0);
- }
+ (void)set_monster_confused(caster_ptr, em_ptr->g_ptr->m_idx, 0);
+ }
- if (monster_fear_remaining(em_ptr->m_ptr))
- {
- if (em_ptr->seen_msg)
- msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), em_ptr->m_name, em_ptr->m_poss);
+ if (monster_fear_remaining(em_ptr->m_ptr)) {
+ if (em_ptr->seen_msg)
+ msg_format(_("%^sは勇気を取り戻した。", "%^s recovers %s courage."), em_ptr->m_name, em_ptr->m_poss);
- (void)set_monster_monfear(caster_ptr, em_ptr->g_ptr->m_idx, 0);
- }
+ (void)set_monster_monfear(caster_ptr, em_ptr->g_ptr->m_idx, 0);
+ }
}
-
// todo サーペントのHPがマジックナンバー扱いになっている
process_result effect_monster_old_heal(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- /* Wake up */
- (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
- effect_monster_old_heal_recovery(caster_ptr, em_ptr);
- if (em_ptr->m_ptr->hp < 30000) em_ptr->m_ptr->hp += em_ptr->dam;
- if (em_ptr->m_ptr->hp > em_ptr->m_ptr->maxhp) em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
-
- effect_monster_old_heal_check_player(caster_ptr, em_ptr);
- if (em_ptr->m_ptr->r_idx == MON_LEPER)
- {
- em_ptr->heal_leper = TRUE;
- if (!em_ptr->who) chg_virtue(caster_ptr, V_COMPASSION, 5);
- }
-
- if (caster_ptr->health_who == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_HEALTH);
- if (caster_ptr->riding == em_ptr->g_ptr->m_idx) caster_ptr->redraw |= (PR_UHEALTH);
-
- em_ptr->note = _("は体力を回復したようだ。", " looks healthier.");
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ /* Wake up */
+ (void)set_monster_csleep(caster_ptr, em_ptr->g_ptr->m_idx, 0);
+ effect_monster_old_heal_recovery(caster_ptr, em_ptr);
+ if (em_ptr->m_ptr->hp < 30000)
+ em_ptr->m_ptr->hp += em_ptr->dam;
+ if (em_ptr->m_ptr->hp > em_ptr->m_ptr->maxhp)
+ em_ptr->m_ptr->hp = em_ptr->m_ptr->maxhp;
+
+ effect_monster_old_heal_check_player(caster_ptr, em_ptr);
+ if (em_ptr->m_ptr->r_idx == MON_LEPER) {
+ em_ptr->heal_leper = TRUE;
+ if (!em_ptr->who)
+ chg_virtue(caster_ptr, V_COMPASSION, 5);
+ }
+
+ if (caster_ptr->health_who == em_ptr->g_ptr->m_idx)
+ caster_ptr->redraw |= (PR_HEALTH);
+ if (caster_ptr->riding == em_ptr->g_ptr->m_idx)
+ caster_ptr->redraw |= (PR_UHEALTH);
+
+ em_ptr->note = _("は体力を回復したようだ。", " looks healthier.");
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_old_speed(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if (set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, monster_fast_remaining(em_ptr->m_ptr) + 100))
- {
- em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
- }
-
- if (!em_ptr->who)
- {
- if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
- chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
- if (is_friendly(em_ptr->m_ptr))
- chg_virtue(caster_ptr, V_HONOUR, 1);
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if (set_monster_fast(caster_ptr, em_ptr->g_ptr->m_idx, monster_fast_remaining(em_ptr->m_ptr) + 100)) {
+ em_ptr->note = _("の動きが速くなった。", " starts moving faster.");
+ }
+
+ if (!em_ptr->who) {
+ if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
+ chg_virtue(caster_ptr, V_INDIVIDUALISM, 1);
+ if (is_friendly(em_ptr->m_ptr))
+ chg_virtue(caster_ptr, V_HONOUR, 1);
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_old_slow(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- /* Powerful monsters can resist */
- if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
-
- if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
- em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ /* Powerful monsters can resist */
+ if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
+
+ if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
+ em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
/*!
* todo 「ユニークは (魔法では)常に眠らない」はr_infoの趣旨に反すると思われる
* 眠る確率を半分にするとかしておいた方が良さそう
*/
process_result effect_monster_old_sleep(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
- (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
- {
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
- }
-
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
- else
- {
- em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
- em_ptr->do_sleep = 500;
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
+ || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) {
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
+ }
+
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ } else {
+ em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
+ em_ptr->do_sleep = 500;
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
/*!
* todo 「ユニークは (魔法では)常に混乱しない」はr_infoの趣旨に反すると思われる
* 眠る確率を半分にするとかしておいた方が良さそう
*/
process_result effect_monster_old_conf(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- em_ptr->do_conf = damroll(3, (em_ptr->dam / 2)) + 1;
- if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
- (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
- {
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
- }
-
- em_ptr->do_conf = 0;
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ em_ptr->do_conf = damroll(3, (em_ptr->dam / 2)) + 1;
+ if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->flags3 & (RF3_NO_CONF))
+ || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ if (em_ptr->r_ptr->flags3 & (RF3_NO_CONF)) {
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags3 |= (RF3_NO_CONF);
+ }
+
+ em_ptr->do_conf = 0;
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_stasis(effect_monster_type *em_ptr, bool to_evil)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- int stasis_damage = (em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10);
- bool has_resistance = (em_ptr->r_ptr->flags1 & RF1_UNIQUE) != 0;
- has_resistance |= em_ptr->r_ptr->level > randint1(stasis_damage) + 10;
- if (to_evil) has_resistance |= (em_ptr->r_ptr->flags3 & RF3_EVIL) == 0;
-
- if (has_resistance)
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
- else
- {
- em_ptr->note = _("は動けなくなった!", " is suspended!");
- em_ptr->do_sleep = 500;
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ int stasis_damage = (em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10);
+ bool has_resistance = (em_ptr->r_ptr->flags1 & RF1_UNIQUE) != 0;
+ has_resistance |= em_ptr->r_ptr->level > randint1(stasis_damage) + 10;
+ if (to_evil)
+ has_resistance |= (em_ptr->r_ptr->flags3 & RF3_EVIL) == 0;
+
+ if (has_resistance) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ } else {
+ em_ptr->note = _("は動けなくなった!", " is suspended!");
+ em_ptr->do_sleep = 500;
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_stun(effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
- if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- em_ptr->do_stun = 0;
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
-}
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ em_ptr->do_stun = damroll((em_ptr->caster_lev / 20) + 3, (em_ptr->dam)) + 1;
+ if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ em_ptr->do_stun = 0;
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+}
\ No newline at end of file
#include "effect/effect-monster-resist-hurt.h"
#include "effect/effect-monster-spirit.h"
#include "effect/effect-monster-util.h"
+#include "monster-floor/monster-death.h"
+#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags2.h"
#include "monster-race/race-flags3.h"
-#include "monster-race/monster-race-hook.h"
-#include "monster-floor/monster-death.h"
+#include "monster/monster-info.h"
#include "monster/monster-status-setter.h"
#include "monster/monster-status.h"
-#include "monster/monster-info.h"
#include "player-info/avatar.h"
#include "player/player-damage.h"
#include "spell-kind/spells-genocide.h"
process_result effect_monster_hypodynamia(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if (monster_living(em_ptr->m_ptr->r_idx))
- {
- em_ptr->do_time = (em_ptr->dam + 7) / 8;
- return PROCESS_CONTINUE;
- }
-
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
- {
- if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
- if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
- if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
- }
-
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if (monster_living(em_ptr->m_ptr->r_idx)) {
+ em_ptr->do_time = (em_ptr->dam + 7) / 8;
+ return PROCESS_CONTINUE;
+ }
+
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) {
+ if (em_ptr->r_ptr->flags3 & RF3_DEMON)
+ em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
+ if (em_ptr->r_ptr->flags3 & RF3_UNDEAD)
+ em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (em_ptr->r_ptr->flags3 & RF3_NONLIVING)
+ em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
+ }
+
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
// todo リファクタリング前のコード時点で、単に耐性があるだけでもダメージ0だった.
process_result effect_monster_death_ray(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if (!monster_living(em_ptr->m_ptr->r_idx))
- {
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
- {
- if (em_ptr->r_ptr->flags3 & RF3_DEMON) em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
- if (em_ptr->r_ptr->flags3 & RF3_UNDEAD) em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
- if (em_ptr->r_ptr->flags3 & RF3_NONLIVING) em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
- }
-
- em_ptr->note = _("には完全な耐性がある!", " is immune.");
- em_ptr->obvious = FALSE;
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
-
- if (((em_ptr->r_ptr->flags1 & RF1_UNIQUE) &&
- (randint1(888) != 666)) ||
- (((em_ptr->r_ptr->level + randint1(20)) > randint1((em_ptr->caster_lev / 2) + randint1(10))) &&
- randint1(100) != 66))
- {
- em_ptr->note = _("には耐性がある!", " resists!");
- em_ptr->obvious = FALSE;
- em_ptr->dam = 0;
- }
-
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if (!monster_living(em_ptr->m_ptr->r_idx)) {
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) {
+ if (em_ptr->r_ptr->flags3 & RF3_DEMON)
+ em_ptr->r_ptr->r_flags3 |= (RF3_DEMON);
+ if (em_ptr->r_ptr->flags3 & RF3_UNDEAD)
+ em_ptr->r_ptr->r_flags3 |= (RF3_UNDEAD);
+ if (em_ptr->r_ptr->flags3 & RF3_NONLIVING)
+ em_ptr->r_ptr->r_flags3 |= (RF3_NONLIVING);
+ }
+
+ em_ptr->note = _("には完全な耐性がある!", " is immune.");
+ em_ptr->obvious = FALSE;
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
+
+ if (((em_ptr->r_ptr->flags1 & RF1_UNIQUE) && (randint1(888) != 666))
+ || (((em_ptr->r_ptr->level + randint1(20)) > randint1((em_ptr->caster_lev / 2) + randint1(10))) && randint1(100) != 66)) {
+ em_ptr->note = _("には耐性がある!", " resists!");
+ em_ptr->obvious = FALSE;
+ em_ptr->dam = 0;
+ }
+
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_kill_wall(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if ((em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK)) == 0)
- {
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
+ if ((em_ptr->r_ptr->flags3 & (RF3_HURT_ROCK)) == 0) {
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
- if (em_ptr->seen) em_ptr->obvious = TRUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags3 |= (RF3_HURT_ROCK);
- em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
- em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
- return PROCESS_CONTINUE;
+ em_ptr->note = _("の皮膚がただれた!", " loses some skin!");
+ em_ptr->note_dies = _("はドロドロに溶けた!", " dissolves!");
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_hand_doom(effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
-
- if (em_ptr->r_ptr->flags1 & RF1_UNIQUE)
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
-
- if ((em_ptr->who > 0) ? ((em_ptr->caster_lev + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + 10 + randint1(20))) :
- (((em_ptr->caster_lev / 2) + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + randint1(200))))
- {
- em_ptr->dam = ((40 + randint1(20)) * em_ptr->m_ptr->hp) / 100;
- if (em_ptr->m_ptr->hp < em_ptr->dam)
- em_ptr->dam = em_ptr->m_ptr->hp - 1;
- }
- else
- {
- em_ptr->note = _("は破滅の手に耐え切った!", "resists!");
- em_ptr->dam = 0;
- }
-
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+
+ if (em_ptr->r_ptr->flags1 & RF1_UNIQUE) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
+
+ if ((em_ptr->who > 0) ? ((em_ptr->caster_lev + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + 10 + randint1(20)))
+ : (((em_ptr->caster_lev / 2) + randint1(em_ptr->dam)) > (em_ptr->r_ptr->level + randint1(200)))) {
+ em_ptr->dam = ((40 + randint1(20)) * em_ptr->m_ptr->hp) / 100;
+ if (em_ptr->m_ptr->hp < em_ptr->dam)
+ em_ptr->dam = em_ptr->m_ptr->hp - 1;
+ } else {
+ em_ptr->note = _("は破滅の手に耐え切った!", "resists!");
+ em_ptr->dam = 0;
+ }
+
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_engetsu(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- int effect = 0;
- bool done = TRUE;
-
- if (em_ptr->seen) em_ptr->obvious = TRUE;
- if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND)
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->dam = 0;
- em_ptr->skipped = TRUE;
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
- return PROCESS_CONTINUE;
- }
-
- if (monster_csleep_remaining(em_ptr->m_ptr))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->dam = 0;
- em_ptr->skipped = TRUE;
- return PROCESS_CONTINUE;
- }
-
- if (one_in_(5)) effect = 1;
- else if (one_in_(4)) effect = 2;
- else if (one_in_(3)) effect = 3;
- else done = FALSE;
-
- if (effect == 1)
- {
- if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
- else
- {
- if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50))
- {
- em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
- }
- }
- }
- else if (effect == 2)
- {
- em_ptr->do_stun = damroll((caster_ptr->lev / 10) + 3, (em_ptr->dam)) + 1;
- if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- em_ptr->do_stun = 0;
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
- }
- else if (effect == 3)
- {
- if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) ||
- (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) ||
- (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10))
- {
- if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
- {
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
- }
-
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->obvious = FALSE;
- }
- else
- {
- /* Go to sleep (much) later */
- em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
- em_ptr->do_sleep = 500;
- }
- }
-
- if (!done)
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- }
-
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
+ int effect = 0;
+ bool done = TRUE;
+
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+ if (em_ptr->r_ptr->flags2 & RF2_EMPTY_MIND) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->dam = 0;
+ em_ptr->skipped = TRUE;
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags2 |= (RF2_EMPTY_MIND);
+ return PROCESS_CONTINUE;
+ }
+
+ if (monster_csleep_remaining(em_ptr->m_ptr)) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->dam = 0;
+ em_ptr->skipped = TRUE;
+ return PROCESS_CONTINUE;
+ }
+
+ if (one_in_(5))
+ effect = 1;
+ else if (one_in_(4))
+ effect = 2;
+ else if (one_in_(3))
+ effect = 3;
+ else
+ done = FALSE;
+
+ if (effect == 1) {
+ if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ } else {
+ if (set_monster_slow(caster_ptr, em_ptr->g_ptr->m_idx, monster_slow_remaining(em_ptr->m_ptr) + 50)) {
+ em_ptr->note = _("の動きが遅くなった。", " starts moving slower.");
+ }
+ }
+ } else if (effect == 2) {
+ em_ptr->do_stun = damroll((caster_ptr->lev / 10) + 3, (em_ptr->dam)) + 1;
+ if ((em_ptr->r_ptr->flags1 & (RF1_UNIQUE)) || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ em_ptr->do_stun = 0;
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ }
+ } else if (effect == 3) {
+ if ((em_ptr->r_ptr->flags1 & RF1_UNIQUE) || (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP)
+ || (em_ptr->r_ptr->level > randint1((em_ptr->dam - 10) < 1 ? 1 : (em_ptr->dam - 10)) + 10)) {
+ if (em_ptr->r_ptr->flags3 & RF3_NO_SLEEP) {
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags3 |= (RF3_NO_SLEEP);
+ }
+
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->obvious = FALSE;
+ } else {
+ /* Go to sleep (much) later */
+ em_ptr->note = _("は眠り込んでしまった!", " falls asleep!");
+ em_ptr->do_sleep = 500;
+ }
+ }
+
+ if (!done) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ }
+
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_genocide(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
- if (genocide_aux(caster_ptr, em_ptr->g_ptr->m_idx, em_ptr->dam, !em_ptr->who, (em_ptr->r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One")))
- {
- if (em_ptr->seen_msg) msg_format(_("%sは消滅した!", "%^s disappeared!"), em_ptr->m_name);
- chg_virtue(caster_ptr, V_VITALITY, -1);
- return PROCESS_TRUE;
- }
-
- em_ptr->skipped = TRUE;
- return PROCESS_CONTINUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
+ if (genocide_aux(caster_ptr, em_ptr->g_ptr->m_idx, em_ptr->dam, !em_ptr->who, (em_ptr->r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One"))) {
+ if (em_ptr->seen_msg)
+ msg_format(_("%sは消滅した!", "%^s disappeared!"), em_ptr->m_name);
+ chg_virtue(caster_ptr, V_VITALITY, -1);
+ return PROCESS_TRUE;
+ }
+
+ em_ptr->skipped = TRUE;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_photo(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- if (!em_ptr->who)
- msg_format(_("%sを写真に撮った。", "You take a photograph of %s."), em_ptr->m_name);
+ if (!em_ptr->who)
+ msg_format(_("%sを写真に撮った。", "You take a photograph of %s."), em_ptr->m_name);
- if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE))
- {
- if (em_ptr->seen) em_ptr->obvious = TRUE;
+ if (em_ptr->r_ptr->flags3 & (RF3_HURT_LITE)) {
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
- if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr)) em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
+ if (is_original_ap_and_seen(caster_ptr, em_ptr->m_ptr))
+ em_ptr->r_ptr->r_flags3 |= (RF3_HURT_LITE);
- em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
- em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
- }
- else
- {
- em_ptr->dam = 0;
- }
+ em_ptr->note = _("は光に身をすくめた!", " cringes from the light!");
+ em_ptr->note_dies = _("は光を受けてしぼんでしまった!", " shrivels away in the light!");
+ } else {
+ em_ptr->dam = 0;
+ }
- em_ptr->photo = em_ptr->m_ptr->r_idx;
- return PROCESS_CONTINUE;
+ em_ptr->photo = em_ptr->m_ptr->r_idx;
+ return PROCESS_CONTINUE;
}
-
process_result effect_monster_wounds(effect_monster_type *em_ptr)
{
- if (em_ptr->seen) em_ptr->obvious = TRUE;
+ if (em_ptr->seen)
+ em_ptr->obvious = TRUE;
- if (randint0(100 + em_ptr->dam) < (em_ptr->r_ptr->level + 50))
- {
- em_ptr->note = _("には効果がなかった。", " is unaffected.");
- em_ptr->dam = 0;
- }
+ if (randint0(100 + em_ptr->dam) < (em_ptr->r_ptr->level + 50)) {
+ em_ptr->note = _("には効果がなかった。", " is unaffected.");
+ em_ptr->dam = 0;
+ }
- return PROCESS_CONTINUE;
+ return PROCESS_CONTINUE;
}
-
/*!
* @brief 魔法の効果によって様々なメッセーを出力したり与えるダメージの増減を行ったりする
* @param em_ptr モンスター効果構造体への参照ポインタ
*/
process_result switch_effects_monster(player_type *caster_ptr, effect_monster_type *em_ptr)
{
- switch (em_ptr->effect_type)
- {
- case GF_PSY_SPEAR:
- case GF_MISSILE:
- case GF_ARROW:
- case GF_MANA:
- case GF_METEOR:
- case GF_BLOOD_CURSE:
- case GF_SEEKER:
- case GF_SUPER_RAY:
- return effect_monster_void(em_ptr);
- case GF_ACID:
- return effect_monster_acid(caster_ptr, em_ptr);
- case GF_ELEC:
- return effect_monster_elec(caster_ptr, em_ptr);
- case GF_FIRE:
- return effect_monster_fire(caster_ptr, em_ptr);
- case GF_COLD:
- return effect_monster_cold(caster_ptr, em_ptr);
- case GF_POIS:
- return effect_monster_pois(caster_ptr, em_ptr);
- case GF_NUKE:
- return effect_monster_nuke(caster_ptr, em_ptr);
- case GF_HELL_FIRE:
- return effect_monster_hell_fire(caster_ptr, em_ptr);
- case GF_HOLY_FIRE:
- return effect_monster_holy_fire(caster_ptr, em_ptr);
- case GF_PLASMA:
- return effect_monster_plasma(caster_ptr, em_ptr);
- case GF_NETHER:
- return effect_monster_nether(caster_ptr, em_ptr);
- case GF_WATER:
- return effect_monster_water(caster_ptr, em_ptr);
- case GF_CHAOS:
- return effect_monster_chaos(caster_ptr, em_ptr);
- case GF_SHARDS:
- return effect_monster_shards(caster_ptr, em_ptr);
- case GF_ROCKET:
- return effect_monster_rocket(caster_ptr, em_ptr);
- case GF_SOUND:
- return effect_monster_sound(caster_ptr, em_ptr);
- case GF_CONFUSION:
- return effect_monster_confusion(caster_ptr, em_ptr);
- case GF_DISENCHANT:
- return effect_monster_disenchant(caster_ptr, em_ptr);
- case GF_NEXUS:
- return effect_monster_nexus(caster_ptr, em_ptr);
- case GF_FORCE:
- return effect_monster_force(caster_ptr, em_ptr);
- case GF_INERTIAL:
- return effect_monster_inertial(caster_ptr, em_ptr);
- case GF_TIME:
- return effect_monster_time(caster_ptr, em_ptr);
- case GF_GRAVITY:
- return effect_monster_gravity(caster_ptr, em_ptr);
- case GF_DISINTEGRATE:
- return effect_monster_disintegration(caster_ptr, em_ptr);
- case GF_PSI:
- return effect_monster_psi(caster_ptr, em_ptr);
- case GF_PSI_DRAIN:
- return effect_monster_psi_drain(caster_ptr, em_ptr);
- case GF_TELEKINESIS:
- return effect_monster_telekinesis(caster_ptr, em_ptr);
- case GF_DOMINATION:
- return effect_monster_domination(caster_ptr, em_ptr);
- case GF_ICE:
- return effect_monster_icee_bolt(caster_ptr, em_ptr);
- case GF_HYPODYNAMIA:
- return effect_monster_hypodynamia(caster_ptr, em_ptr);
- case GF_DEATH_RAY:
- return effect_monster_death_ray(caster_ptr, em_ptr);
- case GF_OLD_POLY:
- return effect_monster_old_poly(em_ptr);
- case GF_OLD_CLONE:
- return effect_monster_old_clone(caster_ptr, em_ptr);
- case GF_STAR_HEAL:
- return effect_monster_star_heal(caster_ptr, em_ptr);
- case GF_OLD_HEAL:
- return effect_monster_old_heal(caster_ptr, em_ptr);
- case GF_OLD_SPEED:
- return effect_monster_old_speed(caster_ptr, em_ptr);
- case GF_OLD_SLOW:
- return effect_monster_old_slow(caster_ptr, em_ptr);
- case GF_OLD_SLEEP:
- return effect_monster_old_sleep(caster_ptr, em_ptr);
- case GF_STASIS_EVIL:
- return effect_monster_stasis(em_ptr, TRUE);
- case GF_STASIS:
- return effect_monster_stasis(em_ptr, FALSE);
- case GF_CHARM:
- return effect_monster_charm(caster_ptr, em_ptr);
- case GF_CONTROL_UNDEAD:
- return effect_monster_control_undead(caster_ptr, em_ptr);
- case GF_CONTROL_DEMON:
- return effect_monster_control_demon(caster_ptr, em_ptr);
- case GF_CONTROL_ANIMAL:
- return effect_monster_control_animal(caster_ptr, em_ptr);
- case GF_CHARM_LIVING:
- return effect_monster_charm_living(caster_ptr, em_ptr);
- case GF_OLD_CONF:
- return effect_monster_old_conf(caster_ptr, em_ptr);
- case GF_STUN:
- return effect_monster_stun(em_ptr);
- case GF_LITE_WEAK:
- return effect_monster_lite_weak(caster_ptr, em_ptr);
- case GF_LITE:
- return effect_monster_lite(caster_ptr, em_ptr);
- case GF_DARK:
- return effect_monster_dark(caster_ptr, em_ptr);
- case GF_KILL_WALL:
- return effect_monster_kill_wall(caster_ptr, em_ptr);
- case GF_AWAY_UNDEAD:
- return effect_monster_away_undead(caster_ptr, em_ptr);
- case GF_AWAY_EVIL:
- return effect_monster_away_evil(caster_ptr, em_ptr);
- case GF_AWAY_ALL:
- return effect_monster_away_all(caster_ptr, em_ptr);
- case GF_TURN_UNDEAD:
- return effect_monster_turn_undead(caster_ptr, em_ptr);
- case GF_TURN_EVIL:
- return effect_monster_turn_evil(caster_ptr, em_ptr);
- case GF_TURN_ALL:
- return effect_monster_turn_all(em_ptr);
- case GF_DISP_UNDEAD:
- return effect_monster_disp_undead(caster_ptr, em_ptr);
- case GF_DISP_EVIL:
- return effect_monster_disp_evil(caster_ptr, em_ptr);
- case GF_DISP_GOOD:
- return effect_monster_disp_good(caster_ptr, em_ptr);
- case GF_DISP_LIVING:
- return effect_monster_disp_living(em_ptr);
- case GF_DISP_DEMON:
- return effect_monster_disp_demon(caster_ptr, em_ptr);
- case GF_DISP_ALL:
- return effect_monster_disp_all(em_ptr);
- case GF_DRAIN_MANA:
- return effect_monster_drain_mana(caster_ptr, em_ptr);
- case GF_MIND_BLAST:
- return effect_monster_mind_blast(caster_ptr, em_ptr);
- case GF_BRAIN_SMASH:
- return effect_monster_brain_smash(caster_ptr, em_ptr);
- case GF_CAUSE_1:
- return effect_monster_curse_1(em_ptr);
- case GF_CAUSE_2:
- return effect_monster_curse_2(em_ptr);
- case GF_CAUSE_3:
- return effect_monster_curse_3(em_ptr);
- case GF_CAUSE_4:
- return effect_monster_curse_4(em_ptr);
- case GF_HAND_DOOM:
- return effect_monster_hand_doom(em_ptr);
- case GF_CAPTURE:
- return effect_monster_capture(caster_ptr, em_ptr);
- case GF_ATTACK:
- return (process_result)do_cmd_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam);
- case GF_ENGETSU:
- return effect_monster_engetsu(caster_ptr, em_ptr);
- case GF_GENOCIDE:
- return effect_monster_genocide(caster_ptr, em_ptr);
- case GF_PHOTO:
- return effect_monster_photo(caster_ptr, em_ptr);
- case GF_CRUSADE:
- return effect_monster_crusade(caster_ptr, em_ptr);
- case GF_WOUNDS:
- return effect_monster_wounds(em_ptr);
- default:
- {
- em_ptr->skipped = TRUE;
- em_ptr->dam = 0;
- return PROCESS_CONTINUE;
- }
- }
-}
+ switch (em_ptr->effect_type) {
+ case GF_PSY_SPEAR:
+ case GF_MISSILE:
+ case GF_ARROW:
+ case GF_MANA:
+ case GF_METEOR:
+ case GF_BLOOD_CURSE:
+ case GF_SEEKER:
+ case GF_SUPER_RAY:
+ return effect_monster_void(em_ptr);
+ case GF_ACID:
+ return effect_monster_acid(caster_ptr, em_ptr);
+ case GF_ELEC:
+ return effect_monster_elec(caster_ptr, em_ptr);
+ case GF_FIRE:
+ return effect_monster_fire(caster_ptr, em_ptr);
+ case GF_COLD:
+ return effect_monster_cold(caster_ptr, em_ptr);
+ case GF_POIS:
+ return effect_monster_pois(caster_ptr, em_ptr);
+ case GF_NUKE:
+ return effect_monster_nuke(caster_ptr, em_ptr);
+ case GF_HELL_FIRE:
+ return effect_monster_hell_fire(caster_ptr, em_ptr);
+ case GF_HOLY_FIRE:
+ return effect_monster_holy_fire(caster_ptr, em_ptr);
+ case GF_PLASMA:
+ return effect_monster_plasma(caster_ptr, em_ptr);
+ case GF_NETHER:
+ return effect_monster_nether(caster_ptr, em_ptr);
+ case GF_WATER:
+ return effect_monster_water(caster_ptr, em_ptr);
+ case GF_CHAOS:
+ return effect_monster_chaos(caster_ptr, em_ptr);
+ case GF_SHARDS:
+ return effect_monster_shards(caster_ptr, em_ptr);
+ case GF_ROCKET:
+ return effect_monster_rocket(caster_ptr, em_ptr);
+ case GF_SOUND:
+ return effect_monster_sound(caster_ptr, em_ptr);
+ case GF_CONFUSION:
+ return effect_monster_confusion(caster_ptr, em_ptr);
+ case GF_DISENCHANT:
+ return effect_monster_disenchant(caster_ptr, em_ptr);
+ case GF_NEXUS:
+ return effect_monster_nexus(caster_ptr, em_ptr);
+ case GF_FORCE:
+ return effect_monster_force(caster_ptr, em_ptr);
+ case GF_INERTIAL:
+ return effect_monster_inertial(caster_ptr, em_ptr);
+ case GF_TIME:
+ return effect_monster_time(caster_ptr, em_ptr);
+ case GF_GRAVITY:
+ return effect_monster_gravity(caster_ptr, em_ptr);
+ case GF_DISINTEGRATE:
+ return effect_monster_disintegration(caster_ptr, em_ptr);
+ case GF_PSI:
+ return effect_monster_psi(caster_ptr, em_ptr);
+ case GF_PSI_DRAIN:
+ return effect_monster_psi_drain(caster_ptr, em_ptr);
+ case GF_TELEKINESIS:
+ return effect_monster_telekinesis(caster_ptr, em_ptr);
+ case GF_DOMINATION:
+ return effect_monster_domination(caster_ptr, em_ptr);
+ case GF_ICE:
+ return effect_monster_icee_bolt(caster_ptr, em_ptr);
+ case GF_HYPODYNAMIA:
+ return effect_monster_hypodynamia(caster_ptr, em_ptr);
+ case GF_DEATH_RAY:
+ return effect_monster_death_ray(caster_ptr, em_ptr);
+ case GF_OLD_POLY:
+ return effect_monster_old_poly(em_ptr);
+ case GF_OLD_CLONE:
+ return effect_monster_old_clone(caster_ptr, em_ptr);
+ case GF_STAR_HEAL:
+ return effect_monster_star_heal(caster_ptr, em_ptr);
+ case GF_OLD_HEAL:
+ return effect_monster_old_heal(caster_ptr, em_ptr);
+ case GF_OLD_SPEED:
+ return effect_monster_old_speed(caster_ptr, em_ptr);
+ case GF_OLD_SLOW:
+ return effect_monster_old_slow(caster_ptr, em_ptr);
+ case GF_OLD_SLEEP:
+ return effect_monster_old_sleep(caster_ptr, em_ptr);
+ case GF_STASIS_EVIL:
+ return effect_monster_stasis(em_ptr, TRUE);
+ case GF_STASIS:
+ return effect_monster_stasis(em_ptr, FALSE);
+ case GF_CHARM:
+ return effect_monster_charm(caster_ptr, em_ptr);
+ case GF_CONTROL_UNDEAD:
+ return effect_monster_control_undead(caster_ptr, em_ptr);
+ case GF_CONTROL_DEMON:
+ return effect_monster_control_demon(caster_ptr, em_ptr);
+ case GF_CONTROL_ANIMAL:
+ return effect_monster_control_animal(caster_ptr, em_ptr);
+ case GF_CHARM_LIVING:
+ return effect_monster_charm_living(caster_ptr, em_ptr);
+ case GF_OLD_CONF:
+ return effect_monster_old_conf(caster_ptr, em_ptr);
+ case GF_STUN:
+ return effect_monster_stun(em_ptr);
+ case GF_LITE_WEAK:
+ return effect_monster_lite_weak(caster_ptr, em_ptr);
+ case GF_LITE:
+ return effect_monster_lite(caster_ptr, em_ptr);
+ case GF_DARK:
+ return effect_monster_dark(caster_ptr, em_ptr);
+ case GF_KILL_WALL:
+ return effect_monster_kill_wall(caster_ptr, em_ptr);
+ case GF_AWAY_UNDEAD:
+ return effect_monster_away_undead(caster_ptr, em_ptr);
+ case GF_AWAY_EVIL:
+ return effect_monster_away_evil(caster_ptr, em_ptr);
+ case GF_AWAY_ALL:
+ return effect_monster_away_all(caster_ptr, em_ptr);
+ case GF_TURN_UNDEAD:
+ return effect_monster_turn_undead(caster_ptr, em_ptr);
+ case GF_TURN_EVIL:
+ return effect_monster_turn_evil(caster_ptr, em_ptr);
+ case GF_TURN_ALL:
+ return effect_monster_turn_all(em_ptr);
+ case GF_DISP_UNDEAD:
+ return effect_monster_disp_undead(caster_ptr, em_ptr);
+ case GF_DISP_EVIL:
+ return effect_monster_disp_evil(caster_ptr, em_ptr);
+ case GF_DISP_GOOD:
+ return effect_monster_disp_good(caster_ptr, em_ptr);
+ case GF_DISP_LIVING:
+ return effect_monster_disp_living(em_ptr);
+ case GF_DISP_DEMON:
+ return effect_monster_disp_demon(caster_ptr, em_ptr);
+ case GF_DISP_ALL:
+ return effect_monster_disp_all(em_ptr);
+ case GF_DRAIN_MANA:
+ return effect_monster_drain_mana(caster_ptr, em_ptr);
+ case GF_MIND_BLAST:
+ return effect_monster_mind_blast(caster_ptr, em_ptr);
+ case GF_BRAIN_SMASH:
+ return effect_monster_brain_smash(caster_ptr, em_ptr);
+ case GF_CAUSE_1:
+ return effect_monster_curse_1(em_ptr);
+ case GF_CAUSE_2:
+ return effect_monster_curse_2(em_ptr);
+ case GF_CAUSE_3:
+ return effect_monster_curse_3(em_ptr);
+ case GF_CAUSE_4:
+ return effect_monster_curse_4(em_ptr);
+ case GF_HAND_DOOM:
+ return effect_monster_hand_doom(em_ptr);
+ case GF_CAPTURE:
+ return effect_monster_capture(caster_ptr, em_ptr);
+ case GF_ATTACK:
+ return (process_result)do_cmd_attack(caster_ptr, em_ptr->y, em_ptr->x, em_ptr->dam);
+ case GF_ENGETSU:
+ return effect_monster_engetsu(caster_ptr, em_ptr);
+ case GF_GENOCIDE:
+ return effect_monster_genocide(caster_ptr, em_ptr);
+ case GF_PHOTO:
+ return effect_monster_photo(caster_ptr, em_ptr);
+ case GF_CRUSADE:
+ return effect_monster_crusade(caster_ptr, em_ptr);
+ case GF_WOUNDS:
+ return effect_monster_wounds(em_ptr);
+ default: {
+ em_ptr->skipped = TRUE;
+ em_ptr->dam = 0;
+ return PROCESS_CONTINUE;
+ }
+ }
+}
\ No newline at end of file
postprocess_spell(caster_ptr, em_ptr);
return em_ptr->obvious;
-}
+}
\ No newline at end of file
#include "monster-race/monster-race.h"
#include "monster/monster-describer.h"
#include "monster/monster-description-types.h"
-#include "player/special-defense-types.h"
#include "player/player-status-flags.h"
+#include "player/special-defense-types.h"
#include "realm/realm-hex-numbers.h"
#include "spell-realm/spells-crusade.h"
#include "spell-realm/spells-hex.h"
#include "view/display-messages.h"
/*! 盲目時の代替メッセージ // TODO: 各種の盲目時メッセージからまとめ上げて統合
-*/
-concptr blind_spell_effect_messages[MAX_GF] =
-{
+ */
+concptr blind_spell_effect_messages[MAX_GF] = {
"", // GF_NONE = 0,
"", // GF_ELEC = 1, /*!< 魔法効果: 電撃*/
"", // GF_POIS = 2, /*!< 魔法効果: 毒*/
"", // GF_ACID = 3, /*!< 魔法効果: 酸*/
"", // GF_COLD = 4, /*!< 魔法効果: 冷気*/
"", // GF_FIRE = 5, /*!< 魔法効果: 火炎*/
- "",
- "",
- "",
+ "", "", "",
"", // GF_PSY_SPEAR = 9, /*!< 魔法効果: 光の剣*/
"", // GF_MISSILE = 10, /*!< 魔法効果: 弱魔力*/
"", // GF_ARROW = 11, /*!< 魔法効果: 射撃*/
"", // GF_NEXUS = 33, /*!< 魔法効果: 因果混乱*/
"", // GF_TIME = 34, /*!< 魔法効果: 時間逆転*/
"", // GF_GRAVITY = 35, /*!< 魔法効果: 重力*/
- "",
- "",
- "",
- "",
- "",
+ "", "", "", "", "",
"", // GF_KILL_WALL = 40, /*!< 魔法効果: 岩石溶解*/
"", // GF_KILL_DOOR = 41, /*!< 魔法効果: ドア破壊*/
"", // GF_KILL_TRAP = 42, /*!< 魔法効果: トラップ破壊*/
- "",
- "",
+ "", "",
"", // GF_MAKE_WALL = 45, /*!< 魔法効果: 壁生成*/
"", // GF_MAKE_DOOR = 46, /*!< 魔法効果: ドア生成*/
"", // GF_MAKE_TRAP = 47, /*!< 魔法効果: トラップ生成*/
"", // GF_OLD_CONF = 56, /*!< 魔法効果: パニック・モンスター*/
"", // GF_OLD_SLEEP = 57, /*!< 魔法効果: スリープ・モンスター*/
"", // GF_HYPODYNAMIA = 58, /*!< 魔法効果: 衰弱*/
- "",
- "",
+ "", "",
"", // GF_AWAY_UNDEAD = 61, /*!< 魔法効果: アンデッド・アウェイ*/
"", // GF_AWAY_EVIL = 62, /*!< 魔法効果: 邪悪飛ばし*/
"", // GF_AWAY_ALL = 63, /*!< 魔法効果: テレポート・アウェイ*/
}
return TRUE;
-}
+}
\ No newline at end of file
path_n = i;
second_step = i + 1;
+ path_n += projection_path(
+ caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x - 1, flag);
path_n
- += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x - 1, flag);
- path_n += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x, flag);
+ += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x, flag);
+ path_n += projection_path(
+ caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x + 1, flag);
path_n
- += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y - 1, x + 1, flag);
- path_n += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y, x - 1, flag);
- path_n += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y, x + 1, flag);
+ += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y, x - 1, flag);
path_n
- += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x - 1, flag);
- path_n += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x, flag);
+ += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y, x + 1, flag);
+ path_n += projection_path(
+ caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x - 1, flag);
path_n
- += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x + 1, flag);
+ += projection_path(caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x, flag);
+ path_n += projection_path(
+ caster_ptr, &(path_g[path_n + 1]), (project_length ? project_length : get_max_range(caster_ptr)), y, x, y + 1, x + 1, flag);
}
}
}
return (notice);
-}
+}
\ No newline at end of file
display_item_discount(flavor_ptr);
display_item_fake_inscription(flavor_ptr);
angband_strcpy(flavor_ptr->buf, flavor_ptr->tmp_val, MAX_NLEN);
-}
+}
\ No newline at end of file
#include "flavor/object-flavor.h"
#include "cmd-item/cmd-smith.h"
+#include "combat/shoot.h"
#include "flavor/flag-inscriptions-table.h"
#include "flavor/flavor-util.h"
#include "flavor/object-flavor-types.h"
#include "perception/object-perception.h"
#include "player/player-class.h"
#include "player/player-status.h"
-#include "combat/shoot.h"
#include "sv-definition/sv-food-types.h"
#include "sv-definition/sv-lite-types.h"
#include "util/bit-flags-calculator.h"
}
*t = '\0';
-}
+}
\ No newline at end of file
#include "info-reader/general-parser.h"
#include "info-reader/random-grid-effect-types.h"
#include "io/tokenizer.h"
+#include "monster-floor/monster-generator.h"
+#include "monster-floor/place-monster-types.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags7.h"
-#include "monster-floor/monster-generator.h"
#include "monster/monster-util.h"
-#include "monster-floor/place-monster-types.h"
#include "monster/smart-learn-types.h"
#include "object-enchant/apply-magic.h"
#include "object-enchant/item-apply-magic.h"
#include "object-enchant/object-ego.h"
#include "object-enchant/trg-types.h"
#include "object/object-generator.h"
+#include "object/object-info.h"
#include "object/object-kind-hook.h"
#include "object/object-kind.h"
-#include "object/object-info.h"
#include "room/rooms-vault.h"
#include "sv-definition/sv-scroll-types.h"
#include "system/artifact-type-definition.h"
return TRUE;
}
-
/**
- * @todo 処理がどうなっているのかいずれチェックする
+ * @todo 処理がどうなっているのかいずれチェックする
*/
static bool parse_qtw_QR(quest_type *q_ptr, char **zz, int num)
{
delete_monster(player_ptr, player_ptr->y, player_ptr->x);
return TRUE;
}
-
+
if (!player_ptr->oldpx && !player_ptr->oldpy) {
player_ptr->oldpy = atoi(zz[0]);
player_ptr->oldpx = atoi(zz[1]);
/* Process "F:<letter>:<terrain>:<cave_info>:<monster>:<object>:<ego>:<artifact>:<trap>:<special>" -- info for dungeon grid */
if (qtwg_ptr->buf[0] == 'F')
return parse_line_feature(player_ptr->current_floor_ptr, qtwg_ptr->buf);
-
+
if (qtwg_ptr->buf[0] == 'D') {
char *s = qtwg_ptr->buf + 2;
if (init_flags & INIT_ONLY_BUILDINGS)
(*qtwg_ptr->y)++;
return PARSE_ERROR_NONE;
}
-
+
parse_error_type parse_result_Q = parse_qtw_Q(qtwg_ptr, zz);
if (parse_result_Q != PARSE_CONTINUE)
return parse_result_Q;
if (qtwg_ptr->buf[0] == 'W')
return parse_line_wilderness(player_ptr, qtwg_ptr->buf, qtwg_ptr->xmin, qtwg_ptr->xmax, qtwg_ptr->y, qtwg_ptr->x);
-
+
if (parse_qtw_P(player_ptr, qtwg_ptr, zz))
return PARSE_ERROR_NONE;
if (qtwg_ptr->buf[0] == 'B')
return parse_line_building(qtwg_ptr->buf);
-
+
if (parse_qtw_M(qtwg_ptr, zz))
return PARSE_ERROR_NONE;
return PARSE_ERROR_GENERIC;
-}
+}
\ No newline at end of file
#include "player/player-class.h"
#include "player/player-damage.h"
#include "player/player-personalities-types.h"
-#include "player/player-status.h"
#include "player/player-status-flags.h"
+#include "player/player-status.h"
#include "spell-kind/spells-launcher.h"
#include "spell-kind/spells-random.h"
#include "spell-kind/spells-sight.h"
case TRAP_CONFUSE: {
hit_trap_set_abnormal_status_p(trapped_ptr, _("きらめくガスに包み込まれた!", "A gas of scintillating colors surrounds you!"),
- (has_resist_conf(trapped_ptr) != 0),
- set_confused, trapped_ptr->confused + (TIME_EFFECT)randint0(20) + 10);
+ (has_resist_conf(trapped_ptr) != 0), set_confused, trapped_ptr->confused + (TIME_EFFECT)randint0(20) + 10);
break;
}
cave_alter_feat(trapped_ptr, y, x, FF_DISARM);
msg_print(_("トラップを粉砕した。", "You destroyed the trap."));
}
-}
+}
\ No newline at end of file
return;
for (inventory_slot_type i = INVEN_RARM; i < INVEN_TOTAL; i++)
- if (owner_ptr->select_ring_slot ? is_ring_slot(i) : item_tester_okay(owner_ptr, &owner_ptr->inventory_list[i], fis_ptr->tval) || (fis_ptr->mode & USE_FULL))
+ if (owner_ptr->select_ring_slot ? is_ring_slot(i)
+ : item_tester_okay(owner_ptr, &owner_ptr->inventory_list[i], fis_ptr->tval) || (fis_ptr->mode & USE_FULL))
fis_ptr->max_equip++;
}
}
return fis_ptr->item;
-}
+}
\ No newline at end of file
dump_aux_home_museum(creature_ptr, fff);
fprintf(fff, _(" [チェックサム: \"%s\"]\n\n", " [Check Sum: \"%s\"]\n\n"), get_check_sum());
-}
+}
\ No newline at end of file
}
prt("", 0, 0);
-}
+}
\ No newline at end of file
#include "world/world.h"
// todo コールバック関数に変更するので、いずれ消す.
-#define PREF_TYPE_NORMAL 0
+#define PREF_TYPE_NORMAL 0
#define PREF_TYPE_AUTOPICK 1
#define PREF_TYPE_HISTPREF 2
* @param preftype prefファイルのタイプ
* @return エラーコード
*/
-static errr process_pref_file_aux(player_type *creature_ptr, concptr name, int preftype, void(*process_autopick_file_command)(char*))
+static errr process_pref_file_aux(player_type *creature_ptr, concptr name, int preftype, void (*process_autopick_file_command)(char *))
{
- FILE *fp;
- fp = angband_fopen(name, "r");
- if (!fp) return -1;
-
- int line = -1;
- errr err = 0;
- bool bypass = FALSE;
- while (angband_fgets(fp, file_read__buf, FILE_READ_BUFF_SIZE) == 0)
- {
- line++;
+ FILE *fp;
+ fp = angband_fopen(name, "r");
+ if (!fp)
+ return -1;
+
+ int line = -1;
+ errr err = 0;
+ bool bypass = FALSE;
+ while (angband_fgets(fp, file_read__buf, FILE_READ_BUFF_SIZE) == 0) {
+ line++;
if (!file_read__buf[0])
continue;
if (iswspace(file_read__buf[0]))
continue;
- if (file_read__buf[0] == '#')
+ if (file_read__buf[0] == '#')
continue;
strcpy(file_read__swp, file_read__buf);
- /* Process "?:<expr>" */
- if ((file_read__buf[0] == '?') && (file_read__buf[1] == ':'))
- {
- char f;
- char *s;
+ /* Process "?:<expr>" */
+ if ((file_read__buf[0] == '?') && (file_read__buf[1] == ':')) {
+ char f;
+ char *s;
s = file_read__buf + 2;
- concptr v = process_pref_file_expr(creature_ptr, &s, &f);
- bypass = streq(v, "0");
- continue;
- }
-
- if (bypass) continue;
-
- /* Process "%:<file>" */
- if (file_read__buf[0] == '%')
- {
- static int depth_count = 0;
- if (depth_count > 20) continue;
-
- depth_count++;
- switch (preftype)
- {
- case PREF_TYPE_AUTOPICK:
+ concptr v = process_pref_file_expr(creature_ptr, &s, &f);
+ bypass = streq(v, "0");
+ continue;
+ }
+
+ if (bypass)
+ continue;
+
+ /* Process "%:<file>" */
+ if (file_read__buf[0] == '%') {
+ static int depth_count = 0;
+ if (depth_count > 20)
+ continue;
+
+ depth_count++;
+ switch (preftype) {
+ case PREF_TYPE_AUTOPICK:
(void)process_autopick_file(creature_ptr, file_read__buf + 2, process_autopick_file_command);
- break;
- case PREF_TYPE_HISTPREF:
+ break;
+ case PREF_TYPE_HISTPREF:
(void)process_histpref_file(creature_ptr, file_read__buf + 2, process_autopick_file_command);
- break;
- default:
+ break;
+ default:
(void)process_pref_file(creature_ptr, file_read__buf + 2, process_autopick_file_command);
- break;
- }
-
- depth_count--;
- continue;
- }
-
- err = interpret_pref_file(creature_ptr, file_read__buf);
- if (err != 0)
- {
- if (preftype != PREF_TYPE_AUTOPICK)
- break;
-
- (*process_autopick_file_command)(file_read__buf);
- err = 0;
- }
- }
-
- if (err != 0)
- {
- /* Print error message */
- /* ToDo: Add better error messages */
- msg_format(_("ファイル'%s'の%d行でエラー番号%dのエラー。", "Error %d in line %d of file '%s'."),
- _(name, err), line, _(err, name));
- msg_format(_("('%s'を解析中)", "Parsing '%s'"), file_read__swp);
- msg_print(NULL);
- }
-
- angband_fclose(fp);
- return (err);
-}
+ break;
+ }
+
+ depth_count--;
+ continue;
+ }
+
+ err = interpret_pref_file(creature_ptr, file_read__buf);
+ if (err != 0) {
+ if (preftype != PREF_TYPE_AUTOPICK)
+ break;
+
+ (*process_autopick_file_command)(file_read__buf);
+ err = 0;
+ }
+ }
+
+ if (err != 0) {
+ /* Print error message */
+ /* ToDo: Add better error messages */
+ msg_format(_("ファイル'%s'の%d行でエラー番号%dのエラー。", "Error %d in line %d of file '%s'."), _(name, err), line, _(err, name));
+ msg_format(_("('%s'を解析中)", "Parsing '%s'"), file_read__swp);
+ msg_print(NULL);
+ }
+ angband_fclose(fp);
+ return (err);
+}
/*!
* @brief pref設定ファイルを読み込み設定を反映させる /
* allow conditional evaluation and filename inclusion.
* </pre>
*/
-errr process_pref_file(player_type *creature_ptr, concptr name, void(*process_autopick_file_command)(char*))
+errr process_pref_file(player_type *creature_ptr, concptr name, void (*process_autopick_file_command)(char *))
{
- char buf[1024];
- path_build(buf, sizeof(buf), ANGBAND_DIR_PREF, name);
+ char buf[1024];
+ path_build(buf, sizeof(buf), ANGBAND_DIR_PREF, name);
- errr err1 = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_NORMAL, process_autopick_file_command);
- if (err1 > 0) return err1;
+ errr err1 = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_NORMAL, process_autopick_file_command);
+ if (err1 > 0)
+ return err1;
- path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
- errr err2 = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_NORMAL, process_autopick_file_command);
- if (err2 < 0 && !err1)
- return -2;
+ path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
+ errr err2 = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_NORMAL, process_autopick_file_command);
+ if (err2 < 0 && !err1)
+ return -2;
- return err2;
+ return err2;
}
-
/*!
* @brief 自動拾いファイルを読み込む /
* @param creature_ptr プレーヤーへの参照ポインタ
* @param name ファイル名
* @details
*/
-errr process_autopick_file(player_type *creature_ptr, concptr name, void(*process_autopick_file_command)(char*))
+errr process_autopick_file(player_type *creature_ptr, concptr name, void (*process_autopick_file_command)(char *))
{
- char buf[1024];
- path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
- errr err = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_AUTOPICK, process_autopick_file_command);
- return err;
+ char buf[1024];
+ path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
+ errr err = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_AUTOPICK, process_autopick_file_command);
+ return err;
}
-
/*!
* @brief プレイヤーの生い立ちファイルを読み込む /
* Process file for player's history editor.
* @return エラーコード
* @details
*/
-errr process_histpref_file(player_type *creature_ptr, concptr name, void(*process_autopick_file_command)(char*))
+errr process_histpref_file(player_type *creature_ptr, concptr name, void (*process_autopick_file_command)(char *))
{
- bool old_character_xtra = current_world_ptr->character_xtra;
- char buf[1024];
- path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
-
- /* Hack -- prevent modification birth options in this file */
- current_world_ptr->character_xtra = TRUE;
- errr err = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_HISTPREF, process_autopick_file_command);
- current_world_ptr->character_xtra = old_character_xtra;
- return err;
-}
+ bool old_character_xtra = current_world_ptr->character_xtra;
+ char buf[1024];
+ path_build(buf, sizeof(buf), ANGBAND_DIR_USER, name);
+ /* Hack -- prevent modification birth options in this file */
+ current_world_ptr->character_xtra = TRUE;
+ errr err = process_pref_file_aux(creature_ptr, buf, PREF_TYPE_HISTPREF, process_autopick_file_command);
+ current_world_ptr->character_xtra = old_character_xtra;
+ return err;
+}
/*!
* @brief prfファイルのフォーマットに従った内容を出力する /
*/
void auto_dump_printf(FILE *auto_dump_stream, concptr fmt, ...)
{
- va_list vp;
- char buf[1024];
- va_start(vp, fmt);
- (void)vstrnfmt(buf, sizeof(buf), fmt, vp);
- va_end(vp);
- for (concptr p = buf; *p; p++)
- {
- if (*p == '\n') auto_dump_line_num++;
- }
-
- fprintf(auto_dump_stream, "%s", buf);
-}
+ va_list vp;
+ char buf[1024];
+ va_start(vp, fmt);
+ (void)vstrnfmt(buf, sizeof(buf), fmt, vp);
+ va_end(vp);
+ for (concptr p = buf; *p; p++) {
+ if (*p == '\n')
+ auto_dump_line_num++;
+ }
+ fprintf(auto_dump_stream, "%s", buf);
+}
/*!
* @brief prfファイルをファイルオープンする /
*/
bool open_auto_dump(FILE **fpp, concptr buf, concptr mark)
{
- char header_mark_str[80];
- concptr auto_dump_mark = mark;
- sprintf(header_mark_str, auto_dump_header, auto_dump_mark);
- remove_auto_dump(buf, mark);
- *fpp = angband_fopen(buf, "a");
- if (!fpp)
- {
- msg_format(_("%s を開くことができませんでした。", "Failed to open %s."), buf);
- msg_print(NULL);
- return FALSE;
- }
-
- fprintf(*fpp, "%s\n", header_mark_str);
- auto_dump_line_num = 0;
- auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n",
- "# *Warning!* The lines below are an automatic dump.\n"));
- auto_dump_printf(*fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
- "# Don't edit them; changes will be deleted and replaced automatically.\n"));
- return TRUE;
+ char header_mark_str[80];
+ concptr auto_dump_mark = mark;
+ sprintf(header_mark_str, auto_dump_header, auto_dump_mark);
+ remove_auto_dump(buf, mark);
+ *fpp = angband_fopen(buf, "a");
+ if (!fpp) {
+ msg_format(_("%s を開くことができませんでした。", "Failed to open %s."), buf);
+ msg_print(NULL);
+ return FALSE;
+ }
+
+ fprintf(*fpp, "%s\n", header_mark_str);
+ auto_dump_line_num = 0;
+ auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n", "# *Warning!* The lines below are an automatic dump.\n"));
+ auto_dump_printf(
+ *fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n", "# Don't edit them; changes will be deleted and replaced automatically.\n"));
+ return TRUE;
}
/*!
*/
void close_auto_dump(FILE **fpp, concptr auto_dump_mark)
{
- char footer_mark_str[80];
- sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
- auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n",
- "# *Warning!* The lines below are an automatic dump.\n"));
- auto_dump_printf(*fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
- "# Don't edit them; changes will be deleted and replaced automatically.\n"));
- fprintf(*fpp, "%s (%d)\n", footer_mark_str, auto_dump_line_num);
- angband_fclose(*fpp);
+ char footer_mark_str[80];
+ sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
+ auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n", "# *Warning!* The lines below are an automatic dump.\n"));
+ auto_dump_printf(
+ *fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n", "# Don't edit them; changes will be deleted and replaced automatically.\n"));
+ fprintf(*fpp, "%s (%d)\n", footer_mark_str, auto_dump_line_num);
+ angband_fclose(*fpp);
}
/*!
* Modified by Arcum Dagsson to support
* separate macro files for different realms.
*/
-void load_all_pref_files(player_type* player_ptr)
+void load_all_pref_files(player_type *player_ptr)
{
char buf[1024];
sprintf(buf, "user.prf");
histpref_buf = NULL;
return TRUE;
-}
+}
\ No newline at end of file
return 0;
}
-#endif /* WORLD_SCORE */
+#endif /* WORLD_SCORE */
\ No newline at end of file
o_ptr->weight = tmp16s;
if (flags & SAVE_ITEM_NAME1) {
-
if (h_older_than(3, 0, 0, 2)) {
rd_byte(&tmp8u);
o_ptr->name1 = tmp8u;
else
o_ptr->xtra1 = 0;
- if (flags & SAVE_ITEM_XTRA2){
-
+ if (flags & SAVE_ITEM_XTRA2) {
if (h_older_than(3, 0, 0, 2)) {
rd_byte(&tmp8u);
o_ptr->xtra2 = tmp8u;
rd_s16b(&tmp16s);
o_ptr->xtra2 = tmp16s;
}
- }
- else
+ } else
o_ptr->xtra2 = 0;
if (flags & SAVE_ITEM_XTRA3)
load_note(_("伝説のアイテムをロードしました", "Loaded Artifacts"));
return 0;
-}
+}
\ No newline at end of file
#include "load/load-v1-5-0.h"
#include "cmd-item/cmd-smith.h"
#include "dungeon/dungeon.h"
+#include "game-option/birth-options.h"
#include "grid/grid.h"
#include "grid/trap.h"
-#include "game-option/birth-options.h"
#include "load/angband-version-comparer.h"
#include "load/item-loader.h"
#include "load/load-util.h"
current_world_ptr->character_dungeon = TRUE;
return 0;
-}
+}
\ No newline at end of file
#include "floor/floor-events.h"
#include "game-option/runtime-arguments.h"
#include "game-option/special-options.h"
-#include "io/record-play-movie.h"
#include "io/files-util.h"
#include "io/inet.h"
#include "io/input-key-acceptor.h"
+#include "io/record-play-movie.h"
#include "io/signal-handlers.h"
#include "io/write-diary.h"
#include "main/angband-initializer.h"
td = &data[i];
my_td = td;
- td->w = CreateWindowEx(
- td->dwExStyle, AngList, td->s, td->dwStyle, td->pos_x, td->pos_y, td->size_wid, td->size_hgt, HWND_DESKTOP, NULL, hInstance, NULL);
+ td->w
+ = CreateWindowEx(td->dwExStyle, AngList, td->s, td->dwStyle, td->pos_x, td->pos_y, td->size_wid, td->size_hgt, HWND_DESKTOP, NULL, hInstance, NULL);
my_td = NULL;
if (!td->w)
quit(NULL);
return 0;
}
-#endif /* WINDOWS */
+#endif /* WINDOWS */
\ No newline at end of file
string_free(ANGBAND_DIR_USER);
string_free(ANGBAND_DIR_XTRA);
-
ANGBAND_DIR = string_make(libpath);
libtail = libpath + strlen(libpath);
vartail = varpath + strlen(varpath);
sprintf(buf, "pref-%s.prf", ANGBAND_SYS);
process_pref_file(player_ptr, buf, process_autopick_file_command);
init_note(_("[初期化終了]", "[Initialization complete]"));
-}
+}
\ No newline at end of file
C_KILL(elements, max_r_idx, tag_type);
(void)init_object_alloc();
return 0;
-}
+}
\ No newline at end of file
}
play_music(TERM_XTRA_MUSIC_MUTE, 0);
-}
+}
\ No newline at end of file
#include "cmd-building/cmd-building.h"
#include "core/asking-player.h"
#include "core/show-file.h"
-#include "status/buff-setter.h"
#include "core/stuff-handler.h"
#include "core/window-redrawer.h"
#include "dungeon/dungeon.h"
#include "market/arena-info-table.h"
#include "market/building-actions-table.h"
#include "market/building-util.h"
+#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags-ability1.h"
#include "monster-race/race-flags-ability2.h"
#include "monster-race/race-flags-resistance.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags7.h"
-#include "monster-race/monster-race-hook.h"
#include "monster/monster-list.h"
#include "monster/monster-util.h"
+#include "status/buff-setter.h"
#include "system/building-type-definition.h"
#include "system/floor-type-definition.h"
#include "term/screen-processor.h"
screen_load();
return TRUE;
-}
+}
\ No newline at end of file
}
}
}
-}
+}
\ No newline at end of file
#include "market/building-monster.h"
#include "core/asking-player.h"
-#include "util/sort.h"
#include "core/stuff-handler.h"
#include "game-option/game-play-options.h"
#include "io/input-key-acceptor.h"
+#include "lore/lore-store.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
-#include "lore/lore-store.h"
#include "term/gameterm.h"
#include "term/screen-processor.h"
#include "term/term-color-types.h"
#include "util/int-char-converter.h"
+#include "util/sort.h"
#include "util/string-processor.h"
#include "view/display-lore.h"
C_KILL(who, max_r_idx, MONRACE_IDX);
screen_load();
return !notpicked;
-}
+}
\ No newline at end of file
#include "market/building-quest.h"
#include "cmd-building/cmd-building.h"
-#include "info-reader/fixed-map-parser.h"
#include "dungeon/quest.h"
#include "grid/grid.h"
+#include "info-reader/fixed-map-parser.h"
#include "market/building-util.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
msg_format("Your quest: kill %d %s", q_ptr->max_num, name);
#endif
get_questinfo(player_ptr, q_index, TRUE);
-}
+}
\ No newline at end of file
caster_ptr->magic_num1[0] = 0;
return TRUE;
-}
+}
\ No newline at end of file
#include "object/object-generator.h"
#include "object/object-kind-hook.h"
#include "player/attack-defense-types.h"
-#include "player/special-defense-types.h"
#include "player/player-status-flags.h"
+#include "player/special-defense-types.h"
#include "spell-kind/spells-detection.h"
#include "spell-kind/spells-fetcher.h"
#include "spell-kind/spells-floor.h"
break;
}
return TRUE;
-}
+}
\ No newline at end of file
postprocess_monster_blows(target_ptr, monap_ptr);
return TRUE;
-}
+}
\ No newline at end of file
monap_ptr->alive = TRUE;
monap_ptr->fear = FALSE;
return monap_ptr;
-}
+}
\ No newline at end of file
}
target_ptr->redraw |= (PR_MANA);
-}
+}
\ No newline at end of file
return _("は爆発して粉々になった。", " explodes into tiny shreds.");
return _("を倒した。", " is destroyed.");
-}
+}
\ No newline at end of file
}
return FALSE;
-}
+}
\ No newline at end of file
#include "monster/monster-status.h"
#include "monster/monster-update.h"
#include "pet/pet-util.h"
+#include "player/player-status-flags.h"
#include "spell/spell-types.h"
#include "system/floor-type-definition.h"
#include "target/projection-path-calculator.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
-#include "player/player-status-flags.h"
static bool check_hp_for_feat_destruction(feature_type *f_ptr, monster_type *m_ptr)
{
return FALSE;
turn_flags_ptr->do_move = TRUE;
- if (((r_ptr->flags2 & RF2_PASS_WALL) != 0) && (!turn_flags_ptr->is_riding_mon || has_pass_wall(target_ptr))
- && has_flag(f_ptr->flags, FF_CAN_PASS)) {
+ if (((r_ptr->flags2 & RF2_PASS_WALL) != 0) && (!turn_flags_ptr->is_riding_mon || has_pass_wall(target_ptr)) && has_flag(f_ptr->flags, FF_CAN_PASS)) {
turn_flags_ptr->did_pass_wall = TRUE;
}
* @param m_ptr モンスターの参照ポインタ
* @return なし
*/
-void reset_target(monster_type *m_ptr) { set_target(m_ptr, 0, 0); }
+void reset_target(monster_type *m_ptr) { set_target(m_ptr, 0, 0); }
\ No newline at end of file
#include "system/floor-type-definition.h"
#include "target/projection-path-calculator.h"
- /*!
- * @brief モンスターが逃げ込める地点を走査する
- * @param target_ptr プレーヤーへの参照ポインタ
- * @param m_idx モンスターID
- * @param y_offsets
- * @param x_offsets
- * @param d モンスターがいる地点からの距離
- * @return 逃げ込める地点の候補地
- */
+/*!
+ * @brief モンスターが逃げ込める地点を走査する
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @param m_idx モンスターID
+ * @param y_offsets
+ * @param x_offsets
+ * @param d モンスターがいる地点からの距離
+ * @return 逃げ込める地点の候補地
+ */
static coordinate_candidate sweep_safe_coordinate(player_type *target_ptr, MONSTER_IDX m_idx, const POSITION *y_offsets, const POSITION *x_offsets, int d)
{
- coordinate_candidate candidate = init_coordinate_candidate();
- floor_type *floor_ptr = target_ptr->current_floor_ptr;
- monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
- for (POSITION i = 0, dx = x_offsets[0], dy = y_offsets[0];
- dx != 0 || dy != 0;
- i++, dx = x_offsets[i], dy = y_offsets[i])
- {
- POSITION y = m_ptr->fy + dy;
- POSITION x = m_ptr->fx + dx;
- if (!in_bounds(floor_ptr, y, x)) continue;
-
- grid_type *g_ptr;
- g_ptr = &floor_ptr->grid_array[y][x];
-
- BIT_FLAGS16 riding_mode = (m_idx == target_ptr->riding) ? CEM_RIDING : 0;
- if (!monster_can_cross_terrain(target_ptr, g_ptr->feat, &r_info[m_ptr->r_idx], riding_mode))
- continue;
-
- if (!(m_ptr->mflag2 & MFLAG2_NOFLOW))
- {
- if (g_ptr->dist == 0) continue;
- if (g_ptr->dist > floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].dist + 2 * d) continue;
- }
-
- if (projectable(target_ptr, target_ptr->y, target_ptr->x, y, x)) continue;
-
- POSITION dis = distance(y, x, target_ptr->y, target_ptr->x);
- if (dis <= candidate.gdis) continue;
-
- candidate.gy = y;
- candidate.gx = x;
- candidate.gdis = dis;
- }
-
- return candidate;
+ coordinate_candidate candidate = init_coordinate_candidate();
+ floor_type *floor_ptr = target_ptr->current_floor_ptr;
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
+ for (POSITION i = 0, dx = x_offsets[0], dy = y_offsets[0]; dx != 0 || dy != 0; i++, dx = x_offsets[i], dy = y_offsets[i]) {
+ POSITION y = m_ptr->fy + dy;
+ POSITION x = m_ptr->fx + dx;
+ if (!in_bounds(floor_ptr, y, x))
+ continue;
+
+ grid_type *g_ptr;
+ g_ptr = &floor_ptr->grid_array[y][x];
+
+ BIT_FLAGS16 riding_mode = (m_idx == target_ptr->riding) ? CEM_RIDING : 0;
+ if (!monster_can_cross_terrain(target_ptr, g_ptr->feat, &r_info[m_ptr->r_idx], riding_mode))
+ continue;
+
+ if (!(m_ptr->mflag2 & MFLAG2_NOFLOW)) {
+ if (g_ptr->dist == 0)
+ continue;
+ if (g_ptr->dist > floor_ptr->grid_array[m_ptr->fy][m_ptr->fx].dist + 2 * d)
+ continue;
+ }
+
+ if (projectable(target_ptr, target_ptr->y, target_ptr->x, y, x))
+ continue;
+
+ POSITION dis = distance(y, x, target_ptr->y, target_ptr->x);
+ if (dis <= candidate.gdis)
+ continue;
+
+ candidate.gy = y;
+ candidate.gx = x;
+ candidate.gdis = dis;
+ }
+
+ return candidate;
}
-
/*!
* @brief モンスターが逃げ込める安全な地点を返す /
* Choose a "safe" location near a monster for it to run toward.
*/
bool find_safety(player_type *target_ptr, MONSTER_IDX m_idx, POSITION *yp, POSITION *xp)
{
- monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
- for (POSITION d = 1; d < 10; d++)
- {
- const POSITION *y_offsets;
- y_offsets = dist_offsets_y[d];
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
+ for (POSITION d = 1; d < 10; d++) {
+ const POSITION *y_offsets;
+ y_offsets = dist_offsets_y[d];
- const POSITION *x_offsets;
- x_offsets = dist_offsets_x[d];
+ const POSITION *x_offsets;
+ x_offsets = dist_offsets_x[d];
- coordinate_candidate candidate = sweep_safe_coordinate(target_ptr, m_idx, y_offsets, x_offsets, d);
+ coordinate_candidate candidate = sweep_safe_coordinate(target_ptr, m_idx, y_offsets, x_offsets, d);
- if (candidate.gdis <= 0) continue;
+ if (candidate.gdis <= 0)
+ continue;
- *yp = m_ptr->fy - candidate.gy;
- *xp = m_ptr->fx - candidate.gx;
+ *yp = m_ptr->fy - candidate.gy;
+ *xp = m_ptr->fx - candidate.gx;
- return TRUE;
- }
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
-
/*!
* @brief モンスターが隠れられる地点を走査する
* @param target_ptr プレーヤーへの参照ポインタ
* @param candidate 隠れられる地点の候補地
* @return なし
*/
-static void sweep_hiding_candidate(player_type *target_ptr, monster_type *m_ptr, const POSITION *y_offsets, const POSITION *x_offsets, coordinate_candidate *candidate)
+static void sweep_hiding_candidate(
+ player_type *target_ptr, monster_type *m_ptr, const POSITION *y_offsets, const POSITION *x_offsets, coordinate_candidate *candidate)
{
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
- for (POSITION i = 0, dx = x_offsets[0], dy = y_offsets[0];
- dx != 0 || dy != 0;
- i++, dx = x_offsets[i], dy = y_offsets[i])
- {
- POSITION y = m_ptr->fy + dy;
- POSITION x = m_ptr->fx + dx;
- if (!in_bounds(target_ptr->current_floor_ptr, y, x)) continue;
- if (!monster_can_enter(target_ptr, y, x, r_ptr, 0)) continue;
- if (projectable(target_ptr, target_ptr->y, target_ptr->x, y, x) || !clean_shot(target_ptr, m_ptr->fy, m_ptr->fx, y, x, FALSE))
- continue;
-
- POSITION dis = distance(y, x, target_ptr->y, target_ptr->x);
- if (dis < candidate->gdis && dis >= 2)
- {
- candidate->gy = y;
- candidate->gx = x;
- candidate->gdis = dis;
- }
- }
+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ for (POSITION i = 0, dx = x_offsets[0], dy = y_offsets[0]; dx != 0 || dy != 0; i++, dx = x_offsets[i], dy = y_offsets[i]) {
+ POSITION y = m_ptr->fy + dy;
+ POSITION x = m_ptr->fx + dx;
+ if (!in_bounds(target_ptr->current_floor_ptr, y, x))
+ continue;
+ if (!monster_can_enter(target_ptr, y, x, r_ptr, 0))
+ continue;
+ if (projectable(target_ptr, target_ptr->y, target_ptr->x, y, x) || !clean_shot(target_ptr, m_ptr->fy, m_ptr->fx, y, x, FALSE))
+ continue;
+
+ POSITION dis = distance(y, x, target_ptr->y, target_ptr->x);
+ if (dis < candidate->gdis && dis >= 2) {
+ candidate->gy = y;
+ candidate->gx = x;
+ candidate->gdis = dis;
+ }
+ }
}
-
/*!
* @brief モンスターが隠れ潜める地点を返す /
* Choose a good hiding place near a monster for it to run toward.
*/
bool find_hiding(player_type *target_ptr, MONSTER_IDX m_idx, POSITION *yp, POSITION *xp)
{
- monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
- coordinate_candidate candidate = init_coordinate_candidate();
- candidate.gdis = 999;
+ monster_type *m_ptr = &target_ptr->current_floor_ptr->m_list[m_idx];
+ coordinate_candidate candidate = init_coordinate_candidate();
+ candidate.gdis = 999;
- for (POSITION d = 1; d < 10; d++)
- {
- const POSITION *y_offsets;
- y_offsets = dist_offsets_y[d];
+ for (POSITION d = 1; d < 10; d++) {
+ const POSITION *y_offsets;
+ y_offsets = dist_offsets_y[d];
- const POSITION *x_offsets;
- x_offsets = dist_offsets_x[d];
+ const POSITION *x_offsets;
+ x_offsets = dist_offsets_x[d];
- sweep_hiding_candidate(target_ptr, m_ptr, y_offsets, x_offsets, &candidate);
- if (candidate.gdis >= 999) continue;
+ sweep_hiding_candidate(target_ptr, m_ptr, y_offsets, x_offsets, &candidate);
+ if (candidate.gdis >= 999)
+ continue;
- *yp = m_ptr->fy - candidate.gy;
- *xp = m_ptr->fx - candidate.gx;
- return TRUE;
- }
+ *yp = m_ptr->fy - candidate.gy;
+ *xp = m_ptr->fx - candidate.gx;
+ return TRUE;
+ }
- return FALSE;
-}
+ return FALSE;
+}
\ No newline at end of file
return FALSE;
return place_monster_aux(player_ptr, who, y, x, r_idx, (mode | PM_NO_KAGE));
-}
+}
\ No newline at end of file
lite_spot(player_ptr, y, x);
return TRUE;
-}
+}
\ No newline at end of file
*/
#include "monster-floor/special-death-switcher.h"
-#include "artifact/fixed-art-types.h"
#include "artifact/fixed-art-generator.h"
+#include "artifact/fixed-art-types.h"
#include "effect/effect-characteristics.h"
#include "effect/effect-processor.h"
#include "floor/cave.h"
on_dead_mimics(player_ptr, md_ptr);
return;
}
-}
+}
\ No newline at end of file
bool vault_monster_okay(player_type *player_ptr, MONRACE_IDX r_idx)
{
return (mon_hook_dungeon(player_ptr, r_idx) && !(r_info[r_idx].flags1 & RF1_UNIQUE) && !(r_info[r_idx].flags7 & RF7_UNIQUE2)
- && !(r_info[r_idx].flagsr & RFR_RES_ALL)
- && !(r_info[r_idx].flags7 & RF7_AQUATIC));
-}
+ && !(r_info[r_idx].flagsr & RFR_RES_ALL) && !(r_info[r_idx].flags7 & RF7_AQUATIC));
+}
\ No newline at end of file
#include "floor/floor-object.h"
#include "floor/wild.h"
#include "game-option/birth-options.h"
+#include "game-option/cheat-options.h"
#include "grid/grid.h"
#include "monster-floor/monster-summon.h"
#include "monster-race/monster-race.h"
#include "system/floor-type-definition.h"
#include "view/display-messages.h"
#include "world/world.h"
-#include "game-option/cheat-options.h"
#define HORDE_NOGOOD 0x01 /*!< (未実装フラグ)HORDE生成でGOODなモンスターの生成を禁止する? */
#define HORDE_NOEVIL 0x02 /*!< (未実装フラグ)HORDE生成でEVILなモンスターの生成を禁止する? */
}
return count;
-}
+}
\ No newline at end of file
update_invisible_monster(subject_ptr, um_ptr, m_idx);
else
update_visible_monster(subject_ptr, um_ptr, m_idx);
-
+
if (update_clear_monster(subject_ptr, um_ptr) || ((um_ptr->m_ptr->mflag & MFLAG_VIEW) == 0))
return;
default:
break;
}
-}
+}
\ No newline at end of file
#include "dungeon/dungeon.h"
#include "dungeon/quest.h"
#include "floor/wild.h"
+#include "game-option/cheat-options.h"
#include "grid/grid.h"
#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "system/alloc-entries.h"
#include "system/floor-type-definition.h"
#include "util/bit-flags-calculator.h"
-#include "game-option/cheat-options.h"
#include "view/display-messages.h"
typedef enum dungeon_mode_type {
if (lev_max < entry->level)
lev_max = entry->level;
-
entry->prob2 = entry->prob1;
if (floor_ptr->dun_level && (!floor_ptr->inside_quest || is_fixed_quest_idx(floor_ptr->inside_quest))
&& !restrict_monster_to_dungeon(player_ptr, entry->index) && !player_ptr->phase_out) {
entry->prob2 = 1;
}
- total += entry->prob2;
-
+ total += entry->prob2;
}
if (cheat_hear) {
msg_format(_("モンスター第2次候補数:%d(%d-%dF)%d ", "monster second selection:%d(%d-%dF)&d "), mon_num, lev_min, lev_max, total);
}
return 0;
-}
+}
\ No newline at end of file
else
return -1;
}
-}
+}
\ No newline at end of file
return count;
}
-MONSTER_NUMBER summon_HIGHEST_DRAGON(player_type* target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_HIGHEST_DRAGON(player_type *target_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
{
int count = 0;
int num = 4 + randint1(4);
return count;
}
-MONSTER_NUMBER summon_PYRAMID(player_type* target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
+MONSTER_NUMBER summon_PYRAMID(player_type *target_ptr, POSITION y, POSITION x, int rlev, MONSTER_IDX m_idx)
{
int count = 0;
int num = 2 + randint1(3);
count += summon_specific(target_ptr, m_idx, y, x, rlev, SUMMON_VESPOID, PM_NONE);
return count;
-}
+}
\ No newline at end of file
bool activate_elec_ball_and_resistance(player_type *user_ptr, concptr name)
{
msg_format(_("%sが青く輝いた...", "The %s grows blue."), name);
-
+
DIRECTION dir;
if (!get_aim_dir(user_ptr, &dir))
return FALSE;
(void)set_oppose_pois(user_ptr, v, FALSE);
(void)set_ultimate_res(user_ptr, v, FALSE);
return TRUE;
-}
+}
\ No newline at end of file
msg_format(_("Unknown activation effect: %d.", "Unknown activation effect: %d."), act_ptr->index);
return FALSE;
}
-}
+}
\ No newline at end of file
{ "ANIM_DEAD", ACT_ANIM_DEAD, 30, 2000, { 10, 10 }, _("死者復活", "animate dead") },
{ "TREE_CREATION", ACT_TREE_CREATION, 50, 25000, { 1000, 0 }, _("森林生成", "tree creation") },
{ NULL, 0, 0, 0, { 0, 0 }, "" },
-};
+};
\ No newline at end of file
#include "artifact/random-art-generator.h"
#include "game-option/cheat-options.h"
#include "inventory/inventory-slot-types.h"
+#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags9.h"
#include "monster-race/race-indice-types.h"
-#include "monster-race/monster-race-hook.h"
#include "monster/monster-list.h"
#include "monster/monster-util.h"
#include "object-enchant/object-ego.h"
#include "object-enchant/tr-types.h"
#include "object-enchant/trc-types.h"
-#include "perception/object-perception.h"
#include "object/object-kind.h"
+#include "perception/object-perception.h"
#include "sv-definition/sv-lite-types.h"
#include "sv-definition/sv-other-types.h"
#include "system/floor-type-definition.h"
break;
}
}
-}
+}
\ No newline at end of file
*/
#include "object/object-info.h"
+#include "artifact/artifact-info.h"
#include "artifact/fixed-art-types.h"
#include "artifact/random-art-effects.h"
-#include "artifact/artifact-info.h"
#include "inventory/inventory-slot-types.h"
#include "monster-race/monster-race.h"
#include "object-enchant/activation-info-table.h"
: ((!o_ptr->k_idx || (o_ptr->tval != TV_CORPSE) || (o_ptr->sval != SV_CORPSE) || (k_info[o_ptr->k_idx].x_attr != TERM_DARK))
? (k_info[o_ptr->k_idx].x_attr)
: (r_info[o_ptr->pval].x_attr)));
-}
+}
\ No newline at end of file
(void)move_player_effect(creature_ptr, creature_ptr->y, creature_ptr->x, MPE_DONT_PICKUP | MPE_DONT_SWAP_MON);
return fall_dam;
-}
+}
\ No newline at end of file
if (g_ptr->m_idx && (m_ptr->ml || cave_has_flag_bold(caster_ptr->current_floor_ptr, y, x, FF_PROJECT)))
do_cmd_attack(caster_ptr, y, x, 0);
}
-}
+}
\ No newline at end of file
prt(_("[何かキーを押すとゲームに戻ります]", "[Press any key to continue]"), k, 13);
inkey();
screen_load();
-}
+}
\ No newline at end of file
*/
#include "player/eldritch-horror.h"
-#include "player/player-status-flags.h"
#include "core/player-update-types.h"
#include "core/stuff-handler.h"
+#include "monster-race/monster-race-hook.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags2.h"
#include "monster-race/race-flags3.h"
-#include "monster-race/monster-race-hook.h"
#include "monster/horror-descriptions.h"
#include "monster/monster-describer.h"
#include "monster/monster-info.h"
#include "monster/monster-util.h"
#include "monster/smart-learn-types.h"
#include "mutation/mutation-flag-types.h"
-#include "status/bad-status-setter.h"
-#include "player/player-status.h"
#include "player/mimic-info-table.h"
+#include "player/player-status-flags.h"
+#include "player/player-status.h"
+#include "status/bad-status-setter.h"
#include "status/base-status.h"
#include "system/floor-type-definition.h"
#include "view/display-messages.h"
}
see_eldritch_horror(m_name, r_ptr);
- if (is_specific_player_race(creature_ptr, RACE_IMP) || is_specific_player_race(creature_ptr, RACE_BALROG) || (mimic_info[creature_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)
- || current_world_ptr->wizard)
+ if (is_specific_player_race(creature_ptr, RACE_IMP) || is_specific_player_race(creature_ptr, RACE_BALROG)
+ || (mimic_info[creature_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON) || current_world_ptr->wizard)
return;
- if (is_specific_player_race(creature_ptr, RACE_SKELETON) || is_specific_player_race(creature_ptr, RACE_ZOMBIE) || is_specific_player_race(creature_ptr, RACE_VAMPIRE)
- || is_specific_player_race(creature_ptr, RACE_SPECTRE) || (mimic_info[creature_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_UNDEAD)) {
+ if (is_specific_player_race(creature_ptr, RACE_SKELETON) || is_specific_player_race(creature_ptr, RACE_ZOMBIE)
+ || is_specific_player_race(creature_ptr, RACE_VAMPIRE) || is_specific_player_race(creature_ptr, RACE_SPECTRE)
+ || (mimic_info[creature_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_UNDEAD)) {
if (saving_throw(25 + creature_ptr->lev))
return;
}
creature_ptr->update |= PU_BONUS;
handle_stuff(creature_ptr);
-}
+}
\ No newline at end of file
*/
static void add_class_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- switch (creature_ptr->pclass)
- {
- case CLASS_WARRIOR:
- {
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_RES_FEAR);
- if (creature_ptr->lev > 44)
- add_flag(flags, TR_REGEN);
-
- break;
- }
- case CLASS_SAMURAI:
- {
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_RES_FEAR);
-
- break;
- }
- case CLASS_PALADIN:
- {
- if (creature_ptr->lev > 39)
- add_flag(flags, TR_RES_FEAR);
-
- break;
- }
- case CLASS_CHAOS_WARRIOR:
- {
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_RES_CHAOS);
- if (creature_ptr->lev > 39)
- add_flag(flags, TR_RES_FEAR);
-
- break;
- }
- case CLASS_MONK:
- case CLASS_FORCETRAINER:
- {
- if ((creature_ptr->lev > 9) && !heavy_armor(creature_ptr))
- add_flag(flags, TR_SPEED);
- if ((creature_ptr->lev > 24) && !heavy_armor(creature_ptr))
- add_flag(flags, TR_FREE_ACT);
-
- break;
- }
- case CLASS_NINJA:
- {
- if (heavy_armor(creature_ptr))
- {
- add_flag(flags, TR_SPEED);
- }
- else
- {
- if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr)) &&
- (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr)))
- add_flag(flags, TR_SPEED);
- if (creature_ptr->lev > 24 && !creature_ptr->icky_wield[0] && !creature_ptr->icky_wield[1])
- add_flag(flags, TR_FREE_ACT);
- }
-
- add_flag(flags, TR_SLOW_DIGEST);
- add_flag(flags, TR_RES_FEAR);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_RES_POIS);
- if (creature_ptr->lev > 24)
- add_flag(flags, TR_SUST_DEX);
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_SEE_INVIS);
-
- break;
- }
- case CLASS_MINDCRAFTER:
- {
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_RES_FEAR);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_SUST_WIS);
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_RES_CONF);
- if (creature_ptr->lev > 39)
- add_flag(flags, TR_TELEPATHY);
-
- break;
- }
- case CLASS_BARD:
- {
- add_flag(flags, TR_RES_SOUND);
- break;
- }
- case CLASS_BERSERKER:
- {
- add_flag(flags, TR_SUST_STR);
- add_flag(flags, TR_SUST_DEX);
- add_flag(flags, TR_SUST_CON);
- add_flag(flags, TR_REGEN);
- add_flag(flags, TR_FREE_ACT);
- add_flag(flags, TR_SPEED);
- if (creature_ptr->lev > 39)
- add_flag(flags, TR_REFLECT);
-
- break;
- }
- case CLASS_MIRROR_MASTER:
- {
- if (creature_ptr->lev > 39)
- add_flag(flags, TR_REFLECT);
-
- break;
- }
- default:
- break;
- }
+ switch (creature_ptr->pclass) {
+ case CLASS_WARRIOR: {
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_RES_FEAR);
+ if (creature_ptr->lev > 44)
+ add_flag(flags, TR_REGEN);
+
+ break;
+ }
+ case CLASS_SAMURAI: {
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_RES_FEAR);
+
+ break;
+ }
+ case CLASS_PALADIN: {
+ if (creature_ptr->lev > 39)
+ add_flag(flags, TR_RES_FEAR);
+
+ break;
+ }
+ case CLASS_CHAOS_WARRIOR: {
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_RES_CHAOS);
+ if (creature_ptr->lev > 39)
+ add_flag(flags, TR_RES_FEAR);
+
+ break;
+ }
+ case CLASS_MONK:
+ case CLASS_FORCETRAINER: {
+ if ((creature_ptr->lev > 9) && !heavy_armor(creature_ptr))
+ add_flag(flags, TR_SPEED);
+ if ((creature_ptr->lev > 24) && !heavy_armor(creature_ptr))
+ add_flag(flags, TR_FREE_ACT);
+
+ break;
+ }
+ case CLASS_NINJA: {
+ if (heavy_armor(creature_ptr)) {
+ add_flag(flags, TR_SPEED);
+ } else {
+ if ((!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr))
+ && (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr)))
+ add_flag(flags, TR_SPEED);
+ if (creature_ptr->lev > 24 && !creature_ptr->icky_wield[0] && !creature_ptr->icky_wield[1])
+ add_flag(flags, TR_FREE_ACT);
+ }
+
+ add_flag(flags, TR_SLOW_DIGEST);
+ add_flag(flags, TR_RES_FEAR);
+ if (creature_ptr->lev > 19)
+ add_flag(flags, TR_RES_POIS);
+ if (creature_ptr->lev > 24)
+ add_flag(flags, TR_SUST_DEX);
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_SEE_INVIS);
+
+ break;
+ }
+ case CLASS_MINDCRAFTER: {
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_RES_FEAR);
+ if (creature_ptr->lev > 19)
+ add_flag(flags, TR_SUST_WIS);
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_RES_CONF);
+ if (creature_ptr->lev > 39)
+ add_flag(flags, TR_TELEPATHY);
+
+ break;
+ }
+ case CLASS_BARD: {
+ add_flag(flags, TR_RES_SOUND);
+ break;
+ }
+ case CLASS_BERSERKER: {
+ add_flag(flags, TR_SUST_STR);
+ add_flag(flags, TR_SUST_DEX);
+ add_flag(flags, TR_SUST_CON);
+ add_flag(flags, TR_REGEN);
+ add_flag(flags, TR_FREE_ACT);
+ add_flag(flags, TR_SPEED);
+ if (creature_ptr->lev > 39)
+ add_flag(flags, TR_REFLECT);
+
+ break;
+ }
+ case CLASS_MIRROR_MASTER: {
+ if (creature_ptr->lev > 39)
+ add_flag(flags, TR_REFLECT);
+
+ break;
+ }
+ default:
+ break;
+ }
}
-
/*!
* @brief 特定の種族に擬態中の耐性フラグを返す
* @param creature_ptr プレーヤーへの参照ポインタ
*/
static void add_mimic_form_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- switch (creature_ptr->mimic_form)
- {
- case MIMIC_DEMON:
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_CHAOS);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_RES_FIRE);
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_SPEED);
- break;
- case MIMIC_DEMON_LORD:
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_CHAOS);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_RES_FIRE);
- add_flag(flags, TR_RES_COLD);
- add_flag(flags, TR_RES_ELEC);
- add_flag(flags, TR_RES_ACID);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_RES_CONF);
- add_flag(flags, TR_RES_DISEN);
- add_flag(flags, TR_RES_NEXUS);
- add_flag(flags, TR_RES_FEAR);
- add_flag(flags, TR_IM_FIRE);
- add_flag(flags, TR_SH_FIRE);
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_TELEPATHY);
- add_flag(flags, TR_LEVITATION);
- add_flag(flags, TR_SPEED);
- break;
- case MIMIC_VAMPIRE:
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_DARK);
- add_flag(flags, TR_RES_NETHER);
- if (creature_ptr->pclass != CLASS_NINJA)
- add_flag(flags, TR_LITE_1);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_RES_COLD);
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_SPEED);
- break;
- }
+ switch (creature_ptr->mimic_form) {
+ case MIMIC_DEMON:
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_CHAOS);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_RES_FIRE);
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_SPEED);
+ break;
+ case MIMIC_DEMON_LORD:
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_CHAOS);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_RES_FIRE);
+ add_flag(flags, TR_RES_COLD);
+ add_flag(flags, TR_RES_ELEC);
+ add_flag(flags, TR_RES_ACID);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_RES_CONF);
+ add_flag(flags, TR_RES_DISEN);
+ add_flag(flags, TR_RES_NEXUS);
+ add_flag(flags, TR_RES_FEAR);
+ add_flag(flags, TR_IM_FIRE);
+ add_flag(flags, TR_SH_FIRE);
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_TELEPATHY);
+ add_flag(flags, TR_LEVITATION);
+ add_flag(flags, TR_SPEED);
+ break;
+ case MIMIC_VAMPIRE:
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_DARK);
+ add_flag(flags, TR_RES_NETHER);
+ if (creature_ptr->pclass != CLASS_NINJA)
+ add_flag(flags, TR_LITE_1);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_RES_COLD);
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_SPEED);
+ break;
+ }
}
-
/*!
* @brief 種族ベースの耐性フラグを返す
* @param creature_ptr プレーヤーへの参照ポインタ
if (rp_ptr->infra > 0)
add_flag(flags, TR_INFRA);
- /* Unique for each race */
- switch (creature_ptr->prace)
- {
- case RACE_ELF:
- {
- add_flag(flags, TR_RES_LITE);
- break;
- }
- case RACE_HOBBIT:
- {
- add_flag(flags, TR_HOLD_EXP);
- break;
- }
- case RACE_GNOME:
- {
- add_flag(flags, TR_FREE_ACT);
- break;
- }
- case RACE_DWARF:
- {
- add_flag(flags, TR_RES_BLIND);
- break;
- }
- case RACE_HALF_ORC:
- {
- add_flag(flags, TR_RES_DARK);
- break;
- }
- case RACE_HALF_TROLL:
- {
- add_flag(flags, TR_SUST_STR);
- if (creature_ptr->lev <= 14)
- break;
-
- add_flag(flags, TR_REGEN);
- if ((creature_ptr->pclass == CLASS_WARRIOR) || (creature_ptr->pclass == CLASS_BERSERKER))
- add_flag(flags, TR_SLOW_DIGEST);
-
- break;
- }
- case RACE_AMBERITE:
- {
- add_flag(flags, TR_SUST_CON);
- add_flag(flags, TR_REGEN);
- break;
- }
- case RACE_HIGH_ELF:
- {
- add_flag(flags, TR_RES_LITE);
- add_flag(flags, TR_SEE_INVIS);
- break;
- }
- case RACE_BARBARIAN:
- {
- add_flag(flags, TR_RES_FEAR);
- break;
- }
- case RACE_HALF_OGRE:
- {
- add_flag(flags, TR_SUST_STR);
- add_flag(flags, TR_RES_DARK);
- break;
- }
- case RACE_HALF_GIANT:
- {
- add_flag(flags, TR_RES_SHARDS);
- add_flag(flags, TR_SUST_STR);
- break;
- }
- case RACE_HALF_TITAN:
- {
- add_flag(flags, TR_RES_CHAOS);
- break;
- }
- case RACE_CYCLOPS:
- {
- add_flag(flags, TR_RES_SOUND);
- break;
- }
- case RACE_YEEK:
- {
- add_flag(flags, TR_RES_ACID);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_IM_ACID);
-
- break;
- }
- case RACE_KLACKON:
- {
- add_flag(flags, TR_RES_CONF);
- add_flag(flags, TR_RES_ACID);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_SPEED);
-
- break;
- }
- case RACE_KOBOLD:
- {
- add_flag(flags, TR_RES_POIS);
- break;
- }
- case RACE_NIBELUNG:
- {
- add_flag(flags, TR_RES_DISEN);
- add_flag(flags, TR_RES_DARK);
- break;
- }
- case RACE_DARK_ELF:
- {
- add_flag(flags, TR_RES_DARK);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_SEE_INVIS);
-
- break;
- }
- case RACE_DRACONIAN:
- {
- add_flag(flags, TR_LEVITATION);
- if (creature_ptr->lev > 4)
- add_flag(flags, TR_RES_FIRE);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_RES_COLD);
- if (creature_ptr->lev > 14)
- add_flag(flags, TR_RES_ACID);
- if (creature_ptr->lev > 19)
- add_flag(flags, TR_RES_ELEC);
- if (creature_ptr->lev > 34)
- add_flag(flags, TR_RES_POIS);
-
- break;
- }
- case RACE_MIND_FLAYER:
- {
- add_flag(flags, TR_SUST_INT);
- add_flag(flags, TR_SUST_WIS);
- if (creature_ptr->lev > 14)
- add_flag(flags, TR_SEE_INVIS);
- if (creature_ptr->lev > 29)
- add_flag(flags, TR_TELEPATHY);
-
- break;
- }
- case RACE_IMP:
- {
- add_flag(flags, TR_RES_FIRE);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_SEE_INVIS);
- break;
- }
- case RACE_GOLEM:
- {
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_FREE_ACT);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_SLOW_DIGEST);
- if (creature_ptr->lev > 34)
- add_flag(flags, TR_HOLD_EXP);
-
- break;
- }
- case RACE_SKELETON:
- {
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_RES_SHARDS);
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_POIS);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_RES_COLD);
-
- break;
- }
- case RACE_ZOMBIE:
- {
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_SLOW_DIGEST);
- if (creature_ptr->lev > 4)
- add_flag(flags, TR_RES_COLD);
-
- break;
- }
- case RACE_VAMPIRE:
- {
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_DARK);
- add_flag(flags, TR_RES_NETHER);
- if (creature_ptr->pclass != CLASS_NINJA)
- add_flag(flags, TR_LITE_1);
-
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_RES_COLD);
- break;
- }
- case RACE_SPECTRE:
- {
- add_flag(flags, TR_LEVITATION);
- add_flag(flags, TR_FREE_ACT);
- add_flag(flags, TR_RES_COLD);
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_SLOW_DIGEST);
- if (creature_ptr->lev > 34)
- add_flag(flags, TR_TELEPATHY);
-
- break;
- }
- case RACE_SPRITE:
- {
- add_flag(flags, TR_RES_LITE);
- add_flag(flags, TR_LEVITATION);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_SPEED);
-
- break;
- }
- case RACE_BEASTMAN:
- {
- add_flag(flags, TR_RES_SOUND);
- add_flag(flags, TR_RES_CONF);
- break;
- }
- case RACE_ARCHON:
- {
- add_flag(flags, TR_LEVITATION);
- add_flag(flags, TR_SEE_INVIS);
- break;
- }
- case RACE_BALROG:
- {
- add_flag(flags, TR_RES_FIRE);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_HOLD_EXP);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_SEE_INVIS);
-
- break;
- }
- case RACE_DUNADAN:
- {
- add_flag(flags, TR_SUST_CON);
- break;
- }
- case RACE_S_FAIRY:
- {
- add_flag(flags, TR_LEVITATION);
- break;
- }
- case RACE_KUTAR:
- {
- add_flag(flags, TR_RES_CONF);
- break;
- }
- case RACE_ANDROID:
- {
- add_flag(flags, TR_FREE_ACT);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_SLOW_DIGEST);
- add_flag(flags, TR_HOLD_EXP);
- break;
- }
- default:
- break;
- }
+ /* Unique for each race */
+ switch (creature_ptr->prace) {
+ case RACE_ELF: {
+ add_flag(flags, TR_RES_LITE);
+ break;
+ }
+ case RACE_HOBBIT: {
+ add_flag(flags, TR_HOLD_EXP);
+ break;
+ }
+ case RACE_GNOME: {
+ add_flag(flags, TR_FREE_ACT);
+ break;
+ }
+ case RACE_DWARF: {
+ add_flag(flags, TR_RES_BLIND);
+ break;
+ }
+ case RACE_HALF_ORC: {
+ add_flag(flags, TR_RES_DARK);
+ break;
+ }
+ case RACE_HALF_TROLL: {
+ add_flag(flags, TR_SUST_STR);
+ if (creature_ptr->lev <= 14)
+ break;
+
+ add_flag(flags, TR_REGEN);
+ if ((creature_ptr->pclass == CLASS_WARRIOR) || (creature_ptr->pclass == CLASS_BERSERKER))
+ add_flag(flags, TR_SLOW_DIGEST);
+
+ break;
+ }
+ case RACE_AMBERITE: {
+ add_flag(flags, TR_SUST_CON);
+ add_flag(flags, TR_REGEN);
+ break;
+ }
+ case RACE_HIGH_ELF: {
+ add_flag(flags, TR_RES_LITE);
+ add_flag(flags, TR_SEE_INVIS);
+ break;
+ }
+ case RACE_BARBARIAN: {
+ add_flag(flags, TR_RES_FEAR);
+ break;
+ }
+ case RACE_HALF_OGRE: {
+ add_flag(flags, TR_SUST_STR);
+ add_flag(flags, TR_RES_DARK);
+ break;
+ }
+ case RACE_HALF_GIANT: {
+ add_flag(flags, TR_RES_SHARDS);
+ add_flag(flags, TR_SUST_STR);
+ break;
+ }
+ case RACE_HALF_TITAN: {
+ add_flag(flags, TR_RES_CHAOS);
+ break;
+ }
+ case RACE_CYCLOPS: {
+ add_flag(flags, TR_RES_SOUND);
+ break;
+ }
+ case RACE_YEEK: {
+ add_flag(flags, TR_RES_ACID);
+ if (creature_ptr->lev > 19)
+ add_flag(flags, TR_IM_ACID);
+
+ break;
+ }
+ case RACE_KLACKON: {
+ add_flag(flags, TR_RES_CONF);
+ add_flag(flags, TR_RES_ACID);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_SPEED);
+
+ break;
+ }
+ case RACE_KOBOLD: {
+ add_flag(flags, TR_RES_POIS);
+ break;
+ }
+ case RACE_NIBELUNG: {
+ add_flag(flags, TR_RES_DISEN);
+ add_flag(flags, TR_RES_DARK);
+ break;
+ }
+ case RACE_DARK_ELF: {
+ add_flag(flags, TR_RES_DARK);
+ if (creature_ptr->lev > 19)
+ add_flag(flags, TR_SEE_INVIS);
+
+ break;
+ }
+ case RACE_DRACONIAN: {
+ add_flag(flags, TR_LEVITATION);
+ if (creature_ptr->lev > 4)
+ add_flag(flags, TR_RES_FIRE);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_RES_COLD);
+ if (creature_ptr->lev > 14)
+ add_flag(flags, TR_RES_ACID);
+ if (creature_ptr->lev > 19)
+ add_flag(flags, TR_RES_ELEC);
+ if (creature_ptr->lev > 34)
+ add_flag(flags, TR_RES_POIS);
+
+ break;
+ }
+ case RACE_MIND_FLAYER: {
+ add_flag(flags, TR_SUST_INT);
+ add_flag(flags, TR_SUST_WIS);
+ if (creature_ptr->lev > 14)
+ add_flag(flags, TR_SEE_INVIS);
+ if (creature_ptr->lev > 29)
+ add_flag(flags, TR_TELEPATHY);
+
+ break;
+ }
+ case RACE_IMP: {
+ add_flag(flags, TR_RES_FIRE);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_SEE_INVIS);
+ break;
+ }
+ case RACE_GOLEM: {
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_FREE_ACT);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_SLOW_DIGEST);
+ if (creature_ptr->lev > 34)
+ add_flag(flags, TR_HOLD_EXP);
+
+ break;
+ }
+ case RACE_SKELETON: {
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_RES_SHARDS);
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_POIS);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_RES_COLD);
+
+ break;
+ }
+ case RACE_ZOMBIE: {
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_SLOW_DIGEST);
+ if (creature_ptr->lev > 4)
+ add_flag(flags, TR_RES_COLD);
+
+ break;
+ }
+ case RACE_VAMPIRE: {
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_DARK);
+ add_flag(flags, TR_RES_NETHER);
+ if (creature_ptr->pclass != CLASS_NINJA)
+ add_flag(flags, TR_LITE_1);
+
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_RES_COLD);
+ break;
+ }
+ case RACE_SPECTRE: {
+ add_flag(flags, TR_LEVITATION);
+ add_flag(flags, TR_FREE_ACT);
+ add_flag(flags, TR_RES_COLD);
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_SLOW_DIGEST);
+ if (creature_ptr->lev > 34)
+ add_flag(flags, TR_TELEPATHY);
+
+ break;
+ }
+ case RACE_SPRITE: {
+ add_flag(flags, TR_RES_LITE);
+ add_flag(flags, TR_LEVITATION);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_SPEED);
+
+ break;
+ }
+ case RACE_BEASTMAN: {
+ add_flag(flags, TR_RES_SOUND);
+ add_flag(flags, TR_RES_CONF);
+ break;
+ }
+ case RACE_ARCHON: {
+ add_flag(flags, TR_LEVITATION);
+ add_flag(flags, TR_SEE_INVIS);
+ break;
+ }
+ case RACE_BALROG: {
+ add_flag(flags, TR_RES_FIRE);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_HOLD_EXP);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_SEE_INVIS);
+
+ break;
+ }
+ case RACE_DUNADAN: {
+ add_flag(flags, TR_SUST_CON);
+ break;
+ }
+ case RACE_S_FAIRY: {
+ add_flag(flags, TR_LEVITATION);
+ break;
+ }
+ case RACE_KUTAR: {
+ add_flag(flags, TR_RES_CONF);
+ break;
+ }
+ case RACE_ANDROID: {
+ add_flag(flags, TR_FREE_ACT);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_SLOW_DIGEST);
+ add_flag(flags, TR_HOLD_EXP);
+ break;
+ }
+ default:
+ break;
+ }
}
-
/*!
* @brief 突然変異による耐性フラグを返す
* @param creature_ptr プレーヤーへの参照ポインタ
*/
static void add_mutation_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- if (creature_ptr->muta3 == 0) return;
-
- if (creature_ptr->muta3 & MUT3_FLESH_ROT)
- remove_flag(flags, TR_REGEN);
- if ((creature_ptr->muta3 & MUT3_XTRA_FAT) ||
- (creature_ptr->muta3 & MUT3_XTRA_LEGS) ||
- (creature_ptr->muta3 & MUT3_SHORT_LEG))
- add_flag(flags, TR_SPEED);
- if (creature_ptr->muta3 & MUT3_ELEC_TOUC)
- add_flag(flags, TR_SH_ELEC);
- if (creature_ptr->muta3 & MUT3_FIRE_BODY)
- {
- add_flag(flags, TR_SH_FIRE);
- add_flag(flags, TR_LITE_1);
- }
-
- if (creature_ptr->muta3 & MUT3_WINGS)
- add_flag(flags, TR_LEVITATION);
- if (creature_ptr->muta3 & MUT3_FEARLESS)
- add_flag(flags, TR_RES_FEAR);
- if (creature_ptr->muta3 & MUT3_REGEN)
- add_flag(flags, TR_REGEN);
- if (creature_ptr->muta3 & MUT3_ESP)
- add_flag(flags, TR_TELEPATHY);
- if (creature_ptr->muta3 & MUT3_MOTION)
- add_flag(flags, TR_FREE_ACT);
+ if (creature_ptr->muta3 == 0)
+ return;
+
+ if (creature_ptr->muta3 & MUT3_FLESH_ROT)
+ remove_flag(flags, TR_REGEN);
+ if ((creature_ptr->muta3 & MUT3_XTRA_FAT) || (creature_ptr->muta3 & MUT3_XTRA_LEGS) || (creature_ptr->muta3 & MUT3_SHORT_LEG))
+ add_flag(flags, TR_SPEED);
+ if (creature_ptr->muta3 & MUT3_ELEC_TOUC)
+ add_flag(flags, TR_SH_ELEC);
+ if (creature_ptr->muta3 & MUT3_FIRE_BODY) {
+ add_flag(flags, TR_SH_FIRE);
+ add_flag(flags, TR_LITE_1);
+ }
+
+ if (creature_ptr->muta3 & MUT3_WINGS)
+ add_flag(flags, TR_LEVITATION);
+ if (creature_ptr->muta3 & MUT3_FEARLESS)
+ add_flag(flags, TR_RES_FEAR);
+ if (creature_ptr->muta3 & MUT3_REGEN)
+ add_flag(flags, TR_REGEN);
+ if (creature_ptr->muta3 & MUT3_ESP)
+ add_flag(flags, TR_TELEPATHY);
+ if (creature_ptr->muta3 & MUT3_MOTION)
+ add_flag(flags, TR_FREE_ACT);
}
-
/*!
* @brief 性格による耐性フラグを返す
* @param creature_ptr プレーヤーへの参照ポインタ
*/
static void add_personality_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- if (creature_ptr->pseikaku == PERSONALITY_SEXY)
- add_flag(flags, TR_AGGRAVATE);
- if (creature_ptr->pseikaku == PERSONALITY_CHARGEMAN)
- add_flag(flags, TR_RES_CONF);
-
- if (creature_ptr->pseikaku != PERSONALITY_MUNCHKIN) return;
-
- add_flag(flags, TR_RES_BLIND);
- add_flag(flags, TR_RES_CONF);
- add_flag(flags, TR_HOLD_EXP);
- if (creature_ptr->pclass != CLASS_NINJA)
- add_flag(flags, TR_LITE_1);
- if (creature_ptr->lev > 9)
- add_flag(flags, TR_SPEED);
+ if (creature_ptr->pseikaku == PERSONALITY_SEXY)
+ add_flag(flags, TR_AGGRAVATE);
+ if (creature_ptr->pseikaku == PERSONALITY_CHARGEMAN)
+ add_flag(flags, TR_RES_CONF);
+
+ if (creature_ptr->pseikaku != PERSONALITY_MUNCHKIN)
+ return;
+
+ add_flag(flags, TR_RES_BLIND);
+ add_flag(flags, TR_RES_CONF);
+ add_flag(flags, TR_HOLD_EXP);
+ if (creature_ptr->pclass != CLASS_NINJA)
+ add_flag(flags, TR_LITE_1);
+ if (creature_ptr->lev > 9)
+ add_flag(flags, TR_SPEED);
}
-
/*!
* @brief 剣術家の型による耐性フラグを返す
* @param creature_ptr プレーヤーへの参照ポインタ
*/
static void add_kata_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- if (creature_ptr->special_defense & KATA_FUUJIN)
- add_flag(flags, TR_REFLECT);
- if (creature_ptr->special_defense & KAMAE_GENBU)
- add_flag(flags, TR_REFLECT);
- if (creature_ptr->special_defense & KAMAE_SUZAKU)
- add_flag(flags, TR_LEVITATION);
- if (creature_ptr->special_defense & KAMAE_SEIRYU)
- {
- add_flag(flags, TR_RES_FIRE);
- add_flag(flags, TR_RES_COLD);
- add_flag(flags, TR_RES_ACID);
- add_flag(flags, TR_RES_ELEC);
- add_flag(flags, TR_RES_POIS);
- add_flag(flags, TR_LEVITATION);
- add_flag(flags, TR_SH_FIRE);
- add_flag(flags, TR_SH_ELEC);
- add_flag(flags, TR_SH_COLD);
- }
-
- if ((creature_ptr->special_defense & KATA_MUSOU) == 0) return;
-
- add_flag(flags, TR_RES_FEAR);
- add_flag(flags, TR_RES_LITE);
- add_flag(flags, TR_RES_DARK);
- add_flag(flags, TR_RES_BLIND);
- add_flag(flags, TR_RES_CONF);
- add_flag(flags, TR_RES_SOUND);
- add_flag(flags, TR_RES_SHARDS);
- add_flag(flags, TR_RES_NETHER);
- add_flag(flags, TR_RES_NEXUS);
- add_flag(flags, TR_RES_CHAOS);
- add_flag(flags, TR_RES_DISEN);
- add_flag(flags, TR_REFLECT);
- add_flag(flags, TR_HOLD_EXP);
- add_flag(flags, TR_FREE_ACT);
- add_flag(flags, TR_SH_FIRE);
- add_flag(flags, TR_SH_ELEC);
- add_flag(flags, TR_SH_COLD);
- add_flag(flags, TR_LEVITATION);
- add_flag(flags, TR_LITE_1);
- add_flag(flags, TR_SEE_INVIS);
- add_flag(flags, TR_TELEPATHY);
- add_flag(flags, TR_SLOW_DIGEST);
- add_flag(flags, TR_REGEN);
- add_flag(flags, TR_SUST_STR);
- add_flag(flags, TR_SUST_INT);
- add_flag(flags, TR_SUST_WIS);
- add_flag(flags, TR_SUST_DEX);
- add_flag(flags, TR_SUST_CON);
- add_flag(flags, TR_SUST_CHR);
+ if (creature_ptr->special_defense & KATA_FUUJIN)
+ add_flag(flags, TR_REFLECT);
+ if (creature_ptr->special_defense & KAMAE_GENBU)
+ add_flag(flags, TR_REFLECT);
+ if (creature_ptr->special_defense & KAMAE_SUZAKU)
+ add_flag(flags, TR_LEVITATION);
+ if (creature_ptr->special_defense & KAMAE_SEIRYU) {
+ add_flag(flags, TR_RES_FIRE);
+ add_flag(flags, TR_RES_COLD);
+ add_flag(flags, TR_RES_ACID);
+ add_flag(flags, TR_RES_ELEC);
+ add_flag(flags, TR_RES_POIS);
+ add_flag(flags, TR_LEVITATION);
+ add_flag(flags, TR_SH_FIRE);
+ add_flag(flags, TR_SH_ELEC);
+ add_flag(flags, TR_SH_COLD);
+ }
+
+ if ((creature_ptr->special_defense & KATA_MUSOU) == 0)
+ return;
+
+ add_flag(flags, TR_RES_FEAR);
+ add_flag(flags, TR_RES_LITE);
+ add_flag(flags, TR_RES_DARK);
+ add_flag(flags, TR_RES_BLIND);
+ add_flag(flags, TR_RES_CONF);
+ add_flag(flags, TR_RES_SOUND);
+ add_flag(flags, TR_RES_SHARDS);
+ add_flag(flags, TR_RES_NETHER);
+ add_flag(flags, TR_RES_NEXUS);
+ add_flag(flags, TR_RES_CHAOS);
+ add_flag(flags, TR_RES_DISEN);
+ add_flag(flags, TR_REFLECT);
+ add_flag(flags, TR_HOLD_EXP);
+ add_flag(flags, TR_FREE_ACT);
+ add_flag(flags, TR_SH_FIRE);
+ add_flag(flags, TR_SH_ELEC);
+ add_flag(flags, TR_SH_COLD);
+ add_flag(flags, TR_LEVITATION);
+ add_flag(flags, TR_LITE_1);
+ add_flag(flags, TR_SEE_INVIS);
+ add_flag(flags, TR_TELEPATHY);
+ add_flag(flags, TR_SLOW_DIGEST);
+ add_flag(flags, TR_REGEN);
+ add_flag(flags, TR_SUST_STR);
+ add_flag(flags, TR_SUST_INT);
+ add_flag(flags, TR_SUST_WIS);
+ add_flag(flags, TR_SUST_DEX);
+ add_flag(flags, TR_SUST_CON);
+ add_flag(flags, TR_SUST_CHR);
}
-
/*!
* @brief プレイヤーの職業、種族に応じた耐性フラグを返す
* Prints ratings on certain abilities
*/
void player_flags(player_type *creature_ptr, BIT_FLAGS *flags)
{
- for (int i = 0; i < TR_FLAG_SIZE; i++)
- flags[i] = 0L;
-
- add_class_flags(creature_ptr, flags);
- void(*race_flags_func)(player_type*, BIT_FLAGS*) = creature_ptr->mimic_form
- ? add_mimic_form_flags
- : add_race_flags;
- (*race_flags_func)(creature_ptr, flags);
-
- add_mutation_flags(creature_ptr, flags);
- add_personality_flags(creature_ptr, flags);
- add_kata_flags(creature_ptr, flags);
-}
+ for (int i = 0; i < TR_FLAG_SIZE; i++)
+ flags[i] = 0L;
+
+ add_class_flags(creature_ptr, flags);
+ void (*race_flags_func)(player_type *, BIT_FLAGS *) = creature_ptr->mimic_form ? add_mimic_form_flags : add_race_flags;
+ (*race_flags_func)(creature_ptr, flags);
+
+ add_mutation_flags(creature_ptr, flags);
+ add_personality_flags(creature_ptr, flags);
+ add_kata_flags(creature_ptr, flags);
+}
\ No newline at end of file
* @author deskull
*/
-#include "player/player-race.h"
#include "player/player-class.h"
#include "core/player-redraw-types.h"
#include "inventory/inventory-slot-types.h"
"Lord",
},
};
-#endif
+#endif
\ No newline at end of file
return result;
}
-
/*!
* @brief クリーチャーが邪悪感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_animal(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_ANIMAL);
-}
+BIT_FLAGS has_esp_animal(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_ANIMAL); }
/*!
* @brief クリーチャーがアンデッド感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_undead(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_UNDEAD);
-}
+BIT_FLAGS has_esp_undead(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_UNDEAD); }
/*!
* @brief クリーチャーが悪魔感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_demon(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_DEMON);
-}
+BIT_FLAGS has_esp_demon(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_DEMON); }
/*!
* @brief クリーチャーがオーク感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_orc(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_ORC);
-}
+BIT_FLAGS has_esp_orc(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_ORC); }
/*!
* @brief クリーチャーがトロル感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_troll(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_TROLL);
-}
+BIT_FLAGS has_esp_troll(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_TROLL); }
/*!
* @brief クリーチャーが巨人感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_giant(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_GIANT);
-}
+BIT_FLAGS has_esp_giant(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_GIANT); }
/*!
* @brief クリーチャーがドラゴン感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_dragon(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_DRAGON);
-}
+BIT_FLAGS has_esp_dragon(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_DRAGON); }
/*!
* @brief クリーチャーが人間感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_human(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_HUMAN);
-}
+BIT_FLAGS has_esp_human(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_HUMAN); }
/*!
* @brief クリーチャーが善良感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_good(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_GOOD);
-}
+BIT_FLAGS has_esp_good(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_GOOD); }
/*!
* @brief クリーチャーが無生物感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_nonliving(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_NONLIVING);
-}
+BIT_FLAGS has_esp_nonliving(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_NONLIVING); }
/*!
* @brief クリーチャーがユニーク感知を持っているかを返す。
* @param creature_ptr 判定対象のクリーチャー参照ポインタ
* @return 持っていたら所持前提ビットフラグを返す。
*/
-BIT_FLAGS has_esp_unique(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_ESP_UNIQUE);
-}
+BIT_FLAGS has_esp_unique(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_ESP_UNIQUE); }
/*!
* @brief クリーチャーがテレパシーを持っているかを返す。
return result;
}
-BIT_FLAGS has_bless_blade(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_BLESSED);
-}
+BIT_FLAGS has_bless_blade(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_BLESSED); }
-BIT_FLAGS has_easy2_weapon(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_EASY2_WEAPON);
-}
+BIT_FLAGS has_easy2_weapon(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_EASY2_WEAPON); }
-BIT_FLAGS has_down_saving(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_DOWN_SAVING);
-}
+BIT_FLAGS has_down_saving(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_DOWN_SAVING); }
-BIT_FLAGS has_no_ac(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_NO_AC);
-}
+BIT_FLAGS has_no_ac(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_NO_AC); }
BIT_FLAGS has_invuln_arrow(player_type *creature_ptr)
{
}
}
-BIT_FLAGS has_mighty_throw(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_MIGHTY_THROW);
-}
-
-BIT_FLAGS has_dec_mana(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_DEC_MANA);
-}
+BIT_FLAGS has_mighty_throw(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_MIGHTY_THROW); }
+BIT_FLAGS has_dec_mana(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_DEC_MANA); }
BIT_FLAGS has_reflect(player_type *creature_ptr)
{
return result;
}
-BIT_FLAGS has_anti_magic(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_NO_MAGIC);
-}
+BIT_FLAGS has_anti_magic(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_NO_MAGIC); }
-BIT_FLAGS has_anti_tele(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_NO_TELE);
-}
+BIT_FLAGS has_anti_tele(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_NO_TELE); }
BIT_FLAGS has_sh_fire(player_type *creature_ptr)
{
return result;
}
-BIT_FLAGS has_easy_spell(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_EASY_SPELL);
-}
+BIT_FLAGS has_easy_spell(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_EASY_SPELL); }
-BIT_FLAGS has_heavy_spell(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_HEAVY_SPELL);
-}
+BIT_FLAGS has_heavy_spell(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_HEAVY_SPELL); }
BIT_FLAGS has_hold_exp(player_type *creature_ptr)
{
return result;
}
-BIT_FLAGS has_magic_mastery(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_MAGIC_MASTERY);
-}
+BIT_FLAGS has_magic_mastery(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_MAGIC_MASTERY); }
BIT_FLAGS has_free_act(player_type *creature_ptr)
{
result |= 0x01 << FLAG_CAUSE_RACE;
}
- if (creature_ptr->pclass == CLASS_NINJA && !heavy_armor(creature_ptr) && (!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr))
+ if (creature_ptr->pclass == CLASS_NINJA && !heavy_armor(creature_ptr)
+ && (!creature_ptr->inventory_list[INVEN_RARM].k_idx || has_right_hand_weapon(creature_ptr))
&& (!creature_ptr->inventory_list[INVEN_LARM].k_idx || has_left_hand_weapon(creature_ptr))) {
if (creature_ptr->lev > 24)
result |= 0x01 << FLAG_CAUSE_CLASS;
creature_ptr->cursed &= ~(TRC_TELEPORT_SELF);
}
-BIT_FLAGS has_impact(player_type *creature_ptr)
-{
- return check_equipment_flags(creature_ptr, TR_IMPACT);
-}
+BIT_FLAGS has_impact(player_type *creature_ptr) { return check_equipment_flags(creature_ptr, TR_IMPACT); }
void has_extra_blow(player_type *creature_ptr)
{
return MELEE_TYPE_WEAPON_LEFT;
if (empty_hands(creature_ptr, FALSE) == (EMPTY_HAND_RARM | EMPTY_HAND_LARM))
- return MELEE_TYPE_BAREHAND_TWO;
+ return MELEE_TYPE_BAREHAND_TWO;
if (empty_hands(creature_ptr, FALSE) == EMPTY_HAND_RARM)
return MELEE_TYPE_BAREHAND_RIGHT;
is_suitable_weapon |= o_ptr->tval != TV_POLEARM;
return !is_bare_hands && !is_suitable_weapon;
}
-
+
if (creature_ptr->pclass == CLASS_SORCERER) {
bool is_suitable_weapon = o_ptr->tval == TV_HAFTED;
is_suitable_weapon &= (o_ptr->sval == SV_WIZSTAFF) || (o_ptr->sval == SV_NAMAKE_HAMMER);
if (has_not_monk_weapon(creature_ptr, i) || has_not_ninja_weapon(creature_ptr, i))
return TRUE;
-
+
return FALSE;
}
}
tval_type tval = creature_ptr->inventory_list[INVEN_RARM + i].tval - TV_WEAPON_BEGIN;
OBJECT_SUBTYPE_VALUE sval = creature_ptr->inventory_list[INVEN_RARM + i].sval;
- return ((creature_ptr->pclass == CLASS_MONK) || (creature_ptr->pclass == CLASS_FORCETRAINER))
- && !(s_info[creature_ptr->pclass].w_max[tval][sval]);
+ return ((creature_ptr->pclass == CLASS_MONK) || (creature_ptr->pclass == CLASS_FORCETRAINER)) && !(s_info[creature_ptr->pclass].w_max[tval][sval]);
}
bool has_good_luck(player_type *creature_ptr) { return (creature_ptr->pseikaku == PERSONALITY_LUCKY) || (creature_ptr->muta3 & MUT3_GOOD_LUCK); }
}
return AGGRAVATE_NORMAL;
}
-
- return AGGRAVATE_NONE;
+
+ return AGGRAVATE_NONE;
}
-bool has_aggravate(player_type *creature_ptr) { return player_aggravate_state(creature_ptr) == AGGRAVATE_NORMAL; }
+bool has_aggravate(player_type *creature_ptr) { return player_aggravate_state(creature_ptr) == AGGRAVATE_NORMAL; }
\ No newline at end of file
}
if (creature_ptr->muta3) {
-
if (creature_ptr->muta3 & MUT3_HYPER_STR) {
pow += 4;
}
}
if (creature_ptr->muta3) {
-
if (creature_ptr->muta3 & MUT3_HYPER_INT) {
pow += 4;
}
pow += 10;
if (creature_ptr->muta3) {
-
if (creature_ptr->muta3 & MUT3_XTRA_FAT) {
pow -= 2;
}
count = (int)calc_weight_limit(creature_ptr);
if (j > count)
pow -= ((j - count) / (count / 5));
-
} else {
monster_type *riding_m_ptr = &creature_ptr->current_floor_ptr->m_list[creature_ptr->riding];
monster_race *riding_r_ptr = &r_info[riding_m_ptr->r_idx];
object_type *o_ptr = &creature_ptr->inventory_list[slot];
BIT_FLAGS flgs[TR_FLAG_SIZE];
object_flags(creature_ptr, o_ptr, flgs);
-
+
player_hand calc_hand = PLAYER_HAND_OTHER;
if (slot == INVEN_RARM)
calc_hand = PLAYER_HAND_RIGHT;
if (slot == INVEN_LARM)
calc_hand = PLAYER_HAND_LEFT;
-
-
s16b damage = 0;
damage += ((int)(adj_str_td[creature_ptr->stat_ind[A_STR]]) - 128);
}
switch (player_melee_type(creature_ptr)) {
- case MELEE_TYPE_BAREHAND_TWO: /* fall through */
- case MELEE_TYPE_WEAPON_TWOHAND:
- if (calc_hand == get_default_hand(creature_ptr))
- damage += (s16b)bonus_to_d;
- break;
+ case MELEE_TYPE_BAREHAND_TWO: /* fall through */
+ case MELEE_TYPE_WEAPON_TWOHAND:
+ if (calc_hand == get_default_hand(creature_ptr))
+ damage += (s16b)bonus_to_d;
+ break;
- case MELEE_TYPE_BAREHAND_RIGHT: /* fall through */
- case MELEE_TYPE_WEAPON_RIGHT:
- if ((calc_hand == PLAYER_HAND_RIGHT) && (i != INVEN_LEFT))
- damage += (s16b)bonus_to_d;
- break;
+ case MELEE_TYPE_BAREHAND_RIGHT: /* fall through */
+ case MELEE_TYPE_WEAPON_RIGHT:
+ if ((calc_hand == PLAYER_HAND_RIGHT) && (i != INVEN_LEFT))
+ damage += (s16b)bonus_to_d;
+ break;
- case MELEE_TYPE_BAREHAND_LEFT: /* fall through */
- case MELEE_TYPE_WEAPON_LEFT:
- if ((calc_hand == PLAYER_HAND_LEFT) && (i != INVEN_RIGHT))
- damage += (s16b)bonus_to_d;
- break;
+ case MELEE_TYPE_BAREHAND_LEFT: /* fall through */
+ case MELEE_TYPE_WEAPON_LEFT:
+ if ((calc_hand == PLAYER_HAND_LEFT) && (i != INVEN_RIGHT))
+ damage += (s16b)bonus_to_d;
+ break;
- case MELEE_TYPE_WEAPON_DOUBLE:
- if ((calc_hand == PLAYER_HAND_RIGHT)) {
- if (i == INVEN_RIGHT) {
- damage += (s16b)bonus_to_d;
- }
- else if (i != INVEN_LEFT) {
- damage += (bonus_to_d > 0) ? (bonus_to_d + 1) / 2 : bonus_to_d;
- }
+ case MELEE_TYPE_WEAPON_DOUBLE:
+ if ((calc_hand == PLAYER_HAND_RIGHT)) {
+ if (i == INVEN_RIGHT) {
+ damage += (s16b)bonus_to_d;
+ } else if (i != INVEN_LEFT) {
+ damage += (bonus_to_d > 0) ? (bonus_to_d + 1) / 2 : bonus_to_d;
}
- if ((calc_hand == PLAYER_HAND_LEFT)) {
- if (i == INVEN_LEFT) {
- damage += (s16b)bonus_to_d;
- } else if (i != INVEN_RIGHT) {
- damage += (bonus_to_d > 0) ? bonus_to_d / 2 : bonus_to_d;
- }
+ }
+ if ((calc_hand == PLAYER_HAND_LEFT)) {
+ if (i == INVEN_LEFT) {
+ damage += (s16b)bonus_to_d;
+ } else if (i != INVEN_RIGHT) {
+ damage += (bonus_to_d > 0) ? bonus_to_d / 2 : bonus_to_d;
}
- break;
+ }
+ break;
- case MELEE_TYPE_SHIELD_DOUBLE:
- break;
+ case MELEE_TYPE_SHIELD_DOUBLE:
+ break;
- default:
- break;
+ default:
+ break;
}
}
if (creature_ptr->riding != 0 && !(o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE))
&& !has_flag(flgs, TR_RIDING)) {
-
int penalty;
if ((creature_ptr->pclass == CLASS_BEASTMASTER) || (creature_ptr->pclass == CLASS_CAVALRY)) {
penalty = 5;
object_type *o_ptr = &creature_ptr->inventory_list[i];
/* Ignore empty hands, handed weapons, bows and capture balls */
- if (!o_ptr->k_idx
- || o_ptr->tval == TV_CAPTURE
- || (i == INVEN_RARM && has_melee_weapon(creature_ptr, i))
- || (i == INVEN_LARM && has_melee_weapon(creature_ptr, i))
- || i == INVEN_BOW)
+ if (!o_ptr->k_idx || o_ptr->tval == TV_CAPTURE || (i == INVEN_RARM && has_melee_weapon(creature_ptr, i))
+ || (i == INVEN_LARM && has_melee_weapon(creature_ptr, i)) || i == INVEN_BOW)
continue;
/* Fake value does not include unknown objects' value */
}
switch (player_melee_type(creature_ptr)) {
- case MELEE_TYPE_BAREHAND_TWO: /* fall through */
- case MELEE_TYPE_WEAPON_TWOHAND:
- if (calc_hand == get_default_hand(creature_ptr))
- hit += (s16b)bonus_to_h;
- break;
+ case MELEE_TYPE_BAREHAND_TWO: /* fall through */
+ case MELEE_TYPE_WEAPON_TWOHAND:
+ if (calc_hand == get_default_hand(creature_ptr))
+ hit += (s16b)bonus_to_h;
+ break;
- case MELEE_TYPE_BAREHAND_RIGHT: /* fall through */
- case MELEE_TYPE_WEAPON_RIGHT:
- if ((calc_hand == PLAYER_HAND_RIGHT) && (i != INVEN_LEFT))
- hit += (s16b)bonus_to_h;
- break;
+ case MELEE_TYPE_BAREHAND_RIGHT: /* fall through */
+ case MELEE_TYPE_WEAPON_RIGHT:
+ if ((calc_hand == PLAYER_HAND_RIGHT) && (i != INVEN_LEFT))
+ hit += (s16b)bonus_to_h;
+ break;
- case MELEE_TYPE_BAREHAND_LEFT: /* fall through */
- case MELEE_TYPE_WEAPON_LEFT:
- if ((calc_hand == PLAYER_HAND_LEFT) && (i != INVEN_RIGHT))
- hit += (s16b)bonus_to_h;
- break;
+ case MELEE_TYPE_BAREHAND_LEFT: /* fall through */
+ case MELEE_TYPE_WEAPON_LEFT:
+ if ((calc_hand == PLAYER_HAND_LEFT) && (i != INVEN_RIGHT))
+ hit += (s16b)bonus_to_h;
+ break;
- case MELEE_TYPE_WEAPON_DOUBLE:
- if ((calc_hand == PLAYER_HAND_RIGHT)) {
- if (i == INVEN_RIGHT) {
- hit += (s16b)bonus_to_h;
- } else if (i != INVEN_LEFT) {
- hit += (bonus_to_h > 0) ? (bonus_to_h + 1) / 2 : bonus_to_h;
- }
+ case MELEE_TYPE_WEAPON_DOUBLE:
+ if ((calc_hand == PLAYER_HAND_RIGHT)) {
+ if (i == INVEN_RIGHT) {
+ hit += (s16b)bonus_to_h;
+ } else if (i != INVEN_LEFT) {
+ hit += (bonus_to_h > 0) ? (bonus_to_h + 1) / 2 : bonus_to_h;
}
- if ((calc_hand == PLAYER_HAND_LEFT)) {
- if (i == INVEN_LEFT) {
- hit += (s16b)bonus_to_h;
- } else if (i != INVEN_RIGHT) {
- hit += (bonus_to_h > 0) ? bonus_to_h / 2 : bonus_to_h;
- }
+ }
+ if ((calc_hand == PLAYER_HAND_LEFT)) {
+ if (i == INVEN_LEFT) {
+ hit += (s16b)bonus_to_h;
+ } else if (i != INVEN_RIGHT) {
+ hit += (bonus_to_h > 0) ? bonus_to_h / 2 : bonus_to_h;
}
- break;
+ }
+ break;
- case MELEE_TYPE_SHIELD_DOUBLE:
- break;
+ case MELEE_TYPE_SHIELD_DOUBLE:
+ break;
- default:
- break;
+ default:
+ break;
}
}
DICE_NUMBER dn = 0;
if (creature_ptr->riding) {
-
if ((o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE))) {
dn += 2;
}
static player_hand get_default_hand(player_type *creature_ptr)
{
switch (player_melee_type(creature_ptr)) {
- case MELEE_TYPE_BAREHAND_TWO: return PLAYER_HAND_RIGHT;
- case MELEE_TYPE_BAREHAND_RIGHT: return PLAYER_HAND_RIGHT;
- case MELEE_TYPE_BAREHAND_LEFT: return PLAYER_HAND_LEFT;
- case MELEE_TYPE_WEAPON_RIGHT: return PLAYER_HAND_RIGHT;
- case MELEE_TYPE_WEAPON_LEFT: return PLAYER_HAND_LEFT;
- case MELEE_TYPE_WEAPON_TWOHAND: return PLAYER_HAND_RIGHT;
- case MELEE_TYPE_WEAPON_DOUBLE: return PLAYER_HAND_RIGHT;
- case MELEE_TYPE_SHIELD_DOUBLE: return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_BAREHAND_TWO:
+ return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_BAREHAND_RIGHT:
+ return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_BAREHAND_LEFT:
+ return PLAYER_HAND_LEFT;
+ case MELEE_TYPE_WEAPON_RIGHT:
+ return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_WEAPON_LEFT:
+ return PLAYER_HAND_LEFT;
+ case MELEE_TYPE_WEAPON_TWOHAND:
+ return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_WEAPON_DOUBLE:
+ return PLAYER_HAND_RIGHT;
+ case MELEE_TYPE_SHIELD_DOUBLE:
+ return PLAYER_HAND_RIGHT;
}
return 0;
-}
+}
\ No newline at end of file
PLAYER_HAND_OTHER = 0x0002 /*!<default hand is NOT RIGHT or LEFT */
} player_hand;
-
/*
* Player sex constants (hard-coded by save-files, arrays, etc)
*/
POSITION x; /*!< ダンジョンの現在X座標 / Player location in dungeon */
GAME_TEXT name[32]; /*!< 現在のプレイヤー名 / Current player's character name */
char base_name[32]; /*!< Stripped version of "player_name" */
-
} player_type;
extern player_type *p_ptr;
return;
show_dead_home_items(creature_ptr);
-}
+}
\ No newline at end of file
}
return TRUE;
-}
+}
\ No newline at end of file
#include "grid/feature.h"
#include "grid/grid.h"
#include "grid/object-placer.h"
-#include "monster-race/monster-race-hook.h"
#include "monster-floor/monster-generator.h"
+#include "monster-floor/place-monster-types.h"
+#include "monster-race/monster-race-hook.h"
#include "monster/monster-list.h"
#include "monster/monster-util.h"
-#include "monster-floor/place-monster-types.h"
#include "object-enchant/item-apply-magic.h"
#include "object/object-kind-hook.h"
#include "room/space-finder.h"
#include "wizard/wizard-messages.h"
/*!
-* @brief タイプ15の部屋…ガラス部屋の生成 / Type 15 -- glass rooms
-* @param player_ptr プレーヤーへの参照ポインタ
-* @return なし
-*/
+ * @brief タイプ15の部屋…ガラス部屋の生成 / Type 15 -- glass rooms
+ * @param player_ptr プレーヤーへの参照ポインタ
+ * @return なし
+ */
bool build_type15(player_type *player_ptr, dun_data_type *dd_ptr)
{
- POSITION y, x, y2, x2, yval, xval;
- POSITION y1, x1, xsize, ysize;
- bool light;
-
- grid_type *g_ptr;
-
- /* Pick a room size */
- xsize = rand_range(9, 13);
- ysize = rand_range(9, 13);
-
- /* Find and reserve some space in the dungeon. Get center of room. */
- floor_type *floor_ptr = player_ptr->current_floor_ptr;
- if (!find_space(player_ptr, dd_ptr, &yval, &xval, ysize + 2, xsize + 2)) return FALSE;
-
- /* Choose lite or dark */
- light = ((floor_ptr->dun_level <= randint1(25)) && !(d_info[floor_ptr->dungeon_idx].flags1 & DF1_DARKNESS));
-
- /* Get corner values */
- y1 = yval - ysize / 2;
- x1 = xval - xsize / 2;
- y2 = yval + (ysize - 1) / 2;
- x2 = xval + (xsize - 1) / 2;
-
- /* Place a full floor under the room */
- for (y = y1 - 1; y <= y2 + 1; y++)
- {
- for (x = x1 - 1; x <= x2 + 1; x++)
- {
- g_ptr = &floor_ptr->grid_array[y][x];
- place_grid(player_ptr, g_ptr, GB_FLOOR);
- g_ptr->feat = feat_glass_floor;
- g_ptr->info |= (CAVE_ROOM);
- if (light) g_ptr->info |= (CAVE_GLOW);
- }
- }
-
- /* Walls around the room */
- for (y = y1 - 1; y <= y2 + 1; y++)
- {
- g_ptr = &floor_ptr->grid_array[y][x1 - 1];
- place_grid(player_ptr, g_ptr, GB_OUTER);
- g_ptr->feat = feat_glass_wall;
- g_ptr = &floor_ptr->grid_array[y][x2 + 1];
- place_grid(player_ptr, g_ptr, GB_OUTER);
- g_ptr->feat = feat_glass_wall;
- }
-
- for (x = x1 - 1; x <= x2 + 1; x++)
- {
- g_ptr = &floor_ptr->grid_array[y1 - 1][x];
- place_grid(player_ptr, g_ptr, GB_OUTER);
- g_ptr->feat = feat_glass_wall;
- g_ptr = &floor_ptr->grid_array[y2 + 1][x];
- place_grid(player_ptr, g_ptr, GB_OUTER);
- g_ptr->feat = feat_glass_wall;
- }
-
- switch (randint1(3))
- {
- case 1: /* 4 lite breathers + potion */
- {
- DIRECTION dir1, dir2;
- get_mon_num_prep(player_ptr, vault_aux_lite, NULL);
-
- /* Place fixed lite berathers */
- for (dir1 = 4; dir1 < 8; dir1++)
- {
- MONRACE_IDX r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
-
- y = yval + 2 * ddy_ddd[dir1];
- x = xval + 2 * ddx_ddd[dir1];
- if (r_idx) place_monster_aux(player_ptr, 0, y, x, r_idx, PM_ALLOW_SLEEP);
-
- /* Walls around the breather */
- for (dir2 = 0; dir2 < 8; dir2++)
- {
- g_ptr = &floor_ptr->grid_array[y + ddy_ddd[dir2]][x + ddx_ddd[dir2]];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- }
- }
-
- /* Walls around the potion */
- for (dir1 = 0; dir1 < 4; dir1++)
- {
- y = yval + 2 * ddy_ddd[dir1];
- x = xval + 2 * ddx_ddd[dir1];
- g_ptr = &floor_ptr->grid_array[y][x];
- place_grid(player_ptr, g_ptr, GB_INNER_PERM);
- g_ptr->feat = feat_permanent_glass_wall;
- floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]].info |= (CAVE_ICKY);
- }
-
- /* Glass door */
- dir1 = randint0(4);
- y = yval + 2 * ddy_ddd[dir1];
- x = xval + 2 * ddx_ddd[dir1];
- place_secret_door(player_ptr, y, x, DOOR_GLASS_DOOR);
- g_ptr = &floor_ptr->grid_array[y][x];
- if (is_closed_door(player_ptr, g_ptr->feat)) g_ptr->mimic = feat_glass_wall;
-
- /* Place a potion */
- get_obj_num_hook = kind_is_potion;
- place_object(player_ptr, yval, xval, AM_NO_FIXED_ART);
- floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
- }
- break;
-
- case 2: /* 1 lite breather + random object */
- {
- MONRACE_IDX r_idx;
- DIRECTION dir1;
-
- /* Pillars */
- g_ptr = &floor_ptr->grid_array[y1 + 1][x1 + 1];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
-
- g_ptr = &floor_ptr->grid_array[y1 + 1][x2 - 1];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
-
- g_ptr = &floor_ptr->grid_array[y2 - 1][x1 + 1];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
-
- g_ptr = &floor_ptr->grid_array[y2 - 1][x2 - 1];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- get_mon_num_prep(player_ptr, vault_aux_lite, NULL);
-
- r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
- if (r_idx) place_monster_aux(player_ptr, 0, yval, xval, r_idx, 0L);
-
- /* Walls around the breather */
- for (dir1 = 0; dir1 < 8; dir1++)
- {
- g_ptr = &floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- }
-
- /* Curtains around the breather */
- for (y = yval - 1; y <= yval + 1; y++)
- {
- place_secret_door(player_ptr, y, xval - 2, DOOR_CURTAIN);
- place_secret_door(player_ptr, y, xval + 2, DOOR_CURTAIN);
- }
-
- for (x = xval - 1; x <= xval + 1; x++)
- {
- place_secret_door(player_ptr, yval - 2, x, DOOR_CURTAIN);
- place_secret_door(player_ptr, yval + 2, x, DOOR_CURTAIN);
- }
-
- /* Place an object */
- place_object(player_ptr, yval, xval, AM_NO_FIXED_ART);
- floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
- }
- break;
-
- case 3: /* 4 shards breathers + 2 potions */
- {
- DIRECTION dir1;
-
- /* Walls around the potion */
- for (y = yval - 2; y <= yval + 2; y++)
- {
- g_ptr = &floor_ptr->grid_array[y][xval - 3];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- g_ptr = &floor_ptr->grid_array[y][xval + 3];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- }
-
- for (x = xval - 2; x <= xval + 2; x++)
- {
- g_ptr = &floor_ptr->grid_array[yval - 3][x];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- g_ptr = &floor_ptr->grid_array[yval + 3][x];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- }
-
- for (dir1 = 4; dir1 < 8; dir1++)
- {
- g_ptr = &floor_ptr->grid_array[yval + 2 * ddy_ddd[dir1]][xval + 2 * ddx_ddd[dir1]];
- place_grid(player_ptr, g_ptr, GB_INNER);
- g_ptr->feat = feat_glass_wall;
- }
-
- get_mon_num_prep(player_ptr, vault_aux_shards, NULL);
-
- /* Place shard berathers */
- for (dir1 = 4; dir1 < 8; dir1++)
- {
- MONRACE_IDX r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
-
- y = yval + ddy_ddd[dir1];
- x = xval + ddx_ddd[dir1];
- if (r_idx) place_monster_aux(player_ptr, 0, y, x, r_idx, 0L);
- }
-
- /* Place two potions */
- if (one_in_(2))
- {
- get_obj_num_hook = kind_is_potion;
- place_object(player_ptr, yval, xval - 1, AM_NO_FIXED_ART);
- get_obj_num_hook = kind_is_potion;
- place_object(player_ptr, yval, xval + 1, AM_NO_FIXED_ART);
- }
- else
- {
- get_obj_num_hook = kind_is_potion;
- place_object(player_ptr, yval - 1, xval, AM_NO_FIXED_ART);
- get_obj_num_hook = kind_is_potion;
- place_object(player_ptr, yval + 1, xval, AM_NO_FIXED_ART);
- }
-
- for (y = yval - 2; y <= yval + 2; y++)
- for (x = xval - 2; x <= xval + 2; x++)
- floor_ptr->grid_array[y][x].info |= (CAVE_ICKY);
-
- }
- break;
- }
-
- msg_print_wizard(player_ptr, CHEAT_DUNGEON, _("ガラスの部屋が生成されました。", "Glass room was generated."));
- return TRUE;
-}
+ POSITION y, x, y2, x2, yval, xval;
+ POSITION y1, x1, xsize, ysize;
+ bool light;
+
+ grid_type *g_ptr;
+
+ /* Pick a room size */
+ xsize = rand_range(9, 13);
+ ysize = rand_range(9, 13);
+
+ /* Find and reserve some space in the dungeon. Get center of room. */
+ floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ if (!find_space(player_ptr, dd_ptr, &yval, &xval, ysize + 2, xsize + 2))
+ return FALSE;
+
+ /* Choose lite or dark */
+ light = ((floor_ptr->dun_level <= randint1(25)) && !(d_info[floor_ptr->dungeon_idx].flags1 & DF1_DARKNESS));
+
+ /* Get corner values */
+ y1 = yval - ysize / 2;
+ x1 = xval - xsize / 2;
+ y2 = yval + (ysize - 1) / 2;
+ x2 = xval + (xsize - 1) / 2;
+
+ /* Place a full floor under the room */
+ for (y = y1 - 1; y <= y2 + 1; y++) {
+ for (x = x1 - 1; x <= x2 + 1; x++) {
+ g_ptr = &floor_ptr->grid_array[y][x];
+ place_grid(player_ptr, g_ptr, GB_FLOOR);
+ g_ptr->feat = feat_glass_floor;
+ g_ptr->info |= (CAVE_ROOM);
+ if (light)
+ g_ptr->info |= (CAVE_GLOW);
+ }
+ }
+
+ /* Walls around the room */
+ for (y = y1 - 1; y <= y2 + 1; y++) {
+ g_ptr = &floor_ptr->grid_array[y][x1 - 1];
+ place_grid(player_ptr, g_ptr, GB_OUTER);
+ g_ptr->feat = feat_glass_wall;
+ g_ptr = &floor_ptr->grid_array[y][x2 + 1];
+ place_grid(player_ptr, g_ptr, GB_OUTER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ for (x = x1 - 1; x <= x2 + 1; x++) {
+ g_ptr = &floor_ptr->grid_array[y1 - 1][x];
+ place_grid(player_ptr, g_ptr, GB_OUTER);
+ g_ptr->feat = feat_glass_wall;
+ g_ptr = &floor_ptr->grid_array[y2 + 1][x];
+ place_grid(player_ptr, g_ptr, GB_OUTER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ switch (randint1(3)) {
+ case 1: /* 4 lite breathers + potion */
+ {
+ DIRECTION dir1, dir2;
+ get_mon_num_prep(player_ptr, vault_aux_lite, NULL);
+
+ /* Place fixed lite berathers */
+ for (dir1 = 4; dir1 < 8; dir1++) {
+ MONRACE_IDX r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
+
+ y = yval + 2 * ddy_ddd[dir1];
+ x = xval + 2 * ddx_ddd[dir1];
+ if (r_idx)
+ place_monster_aux(player_ptr, 0, y, x, r_idx, PM_ALLOW_SLEEP);
+
+ /* Walls around the breather */
+ for (dir2 = 0; dir2 < 8; dir2++) {
+ g_ptr = &floor_ptr->grid_array[y + ddy_ddd[dir2]][x + ddx_ddd[dir2]];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ }
+ }
+
+ /* Walls around the potion */
+ for (dir1 = 0; dir1 < 4; dir1++) {
+ y = yval + 2 * ddy_ddd[dir1];
+ x = xval + 2 * ddx_ddd[dir1];
+ g_ptr = &floor_ptr->grid_array[y][x];
+ place_grid(player_ptr, g_ptr, GB_INNER_PERM);
+ g_ptr->feat = feat_permanent_glass_wall;
+ floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]].info |= (CAVE_ICKY);
+ }
+
+ /* Glass door */
+ dir1 = randint0(4);
+ y = yval + 2 * ddy_ddd[dir1];
+ x = xval + 2 * ddx_ddd[dir1];
+ place_secret_door(player_ptr, y, x, DOOR_GLASS_DOOR);
+ g_ptr = &floor_ptr->grid_array[y][x];
+ if (is_closed_door(player_ptr, g_ptr->feat))
+ g_ptr->mimic = feat_glass_wall;
+
+ /* Place a potion */
+ get_obj_num_hook = kind_is_potion;
+ place_object(player_ptr, yval, xval, AM_NO_FIXED_ART);
+ floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
+ } break;
+
+ case 2: /* 1 lite breather + random object */
+ {
+ MONRACE_IDX r_idx;
+ DIRECTION dir1;
+
+ /* Pillars */
+ g_ptr = &floor_ptr->grid_array[y1 + 1][x1 + 1];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+
+ g_ptr = &floor_ptr->grid_array[y1 + 1][x2 - 1];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+
+ g_ptr = &floor_ptr->grid_array[y2 - 1][x1 + 1];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+
+ g_ptr = &floor_ptr->grid_array[y2 - 1][x2 - 1];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ get_mon_num_prep(player_ptr, vault_aux_lite, NULL);
+
+ r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
+ if (r_idx)
+ place_monster_aux(player_ptr, 0, yval, xval, r_idx, 0L);
+
+ /* Walls around the breather */
+ for (dir1 = 0; dir1 < 8; dir1++) {
+ g_ptr = &floor_ptr->grid_array[yval + ddy_ddd[dir1]][xval + ddx_ddd[dir1]];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ /* Curtains around the breather */
+ for (y = yval - 1; y <= yval + 1; y++) {
+ place_secret_door(player_ptr, y, xval - 2, DOOR_CURTAIN);
+ place_secret_door(player_ptr, y, xval + 2, DOOR_CURTAIN);
+ }
+
+ for (x = xval - 1; x <= xval + 1; x++) {
+ place_secret_door(player_ptr, yval - 2, x, DOOR_CURTAIN);
+ place_secret_door(player_ptr, yval + 2, x, DOOR_CURTAIN);
+ }
+
+ /* Place an object */
+ place_object(player_ptr, yval, xval, AM_NO_FIXED_ART);
+ floor_ptr->grid_array[yval][xval].info |= (CAVE_ICKY);
+ } break;
+
+ case 3: /* 4 shards breathers + 2 potions */
+ {
+ DIRECTION dir1;
+
+ /* Walls around the potion */
+ for (y = yval - 2; y <= yval + 2; y++) {
+ g_ptr = &floor_ptr->grid_array[y][xval - 3];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ g_ptr = &floor_ptr->grid_array[y][xval + 3];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ for (x = xval - 2; x <= xval + 2; x++) {
+ g_ptr = &floor_ptr->grid_array[yval - 3][x];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ g_ptr = &floor_ptr->grid_array[yval + 3][x];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ for (dir1 = 4; dir1 < 8; dir1++) {
+ g_ptr = &floor_ptr->grid_array[yval + 2 * ddy_ddd[dir1]][xval + 2 * ddx_ddd[dir1]];
+ place_grid(player_ptr, g_ptr, GB_INNER);
+ g_ptr->feat = feat_glass_wall;
+ }
+
+ get_mon_num_prep(player_ptr, vault_aux_shards, NULL);
+
+ /* Place shard berathers */
+ for (dir1 = 4; dir1 < 8; dir1++) {
+ MONRACE_IDX r_idx = get_mon_num(player_ptr, 0, floor_ptr->dun_level, 0);
+
+ y = yval + ddy_ddd[dir1];
+ x = xval + ddx_ddd[dir1];
+ if (r_idx)
+ place_monster_aux(player_ptr, 0, y, x, r_idx, 0L);
+ }
+
+ /* Place two potions */
+ if (one_in_(2)) {
+ get_obj_num_hook = kind_is_potion;
+ place_object(player_ptr, yval, xval - 1, AM_NO_FIXED_ART);
+ get_obj_num_hook = kind_is_potion;
+ place_object(player_ptr, yval, xval + 1, AM_NO_FIXED_ART);
+ } else {
+ get_obj_num_hook = kind_is_potion;
+ place_object(player_ptr, yval - 1, xval, AM_NO_FIXED_ART);
+ get_obj_num_hook = kind_is_potion;
+ place_object(player_ptr, yval + 1, xval, AM_NO_FIXED_ART);
+ }
+
+ for (y = yval - 2; y <= yval + 2; y++)
+ for (x = xval - 2; x <= xval + 2; x++)
+ floor_ptr->grid_array[y][x].info |= (CAVE_ICKY);
+ } break;
+ }
+
+ msg_print_wizard(player_ptr, CHEAT_DUNGEON, _("ガラスの部屋が生成されました。", "Glass room was generated."));
+ return TRUE;
+}
\ No newline at end of file
tmp8u |= 0x02;
wr_byte(tmp8u);
-}
+}
\ No newline at end of file
#include "monster/monster-status-setter.h"
#include "monster/monster-update.h"
#include "monster/smart-learn-types.h"
-#include "status/bad-status-setter.h"
#include "player/player-damage.h"
#include "player/player-move.h"
-#include "player/special-defense-types.h"
#include "player/player-status-flags.h"
+#include "player/special-defense-types.h"
+#include "status/bad-status-setter.h"
#include "system/floor-type-definition.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
if (!sn) {
msg_print(_("あなたはひどい怪我を負った!", "You are severely crushed!"));
damage = 200;
- }
- else {
+ } else {
switch (randint1(3)) {
case 1: {
msg_print(_("降り注ぐ岩をうまく避けた!", "You nimbly dodge the blast!"));
}
return TRUE;
-}
+}
\ No newline at end of file
#include "grid/grid.h"
#include "io/cursor.h"
#include "io/write-diary.h"
+#include "monster-floor/monster-remover.h"
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags3.h"
#include "monster/monster-flag-types.h"
#include "monster/monster-info.h"
#include "monster/monster-status-setter.h"
-#include "monster-floor/monster-remover.h"
#include "monster/monster-status.h"
#include "player-info/avatar.h"
#include "player/player-damage.h"
}
return result;
-}
+}
\ No newline at end of file
if (health_tracked)
health_track(caster_ptr, hack_m_idx_ii);
return polymorphed;
-}
+}
\ No newline at end of file
}
return (probe);
-}
+}
\ No newline at end of file
#include "floor/floor-town.h"
#include "game-option/birth-options.h"
#include "game-option/game-play-options.h"
+#include "object/object-generator.h"
#include "object/object-stack.h"
#include "object/object-value.h"
-#include "object/object-generator.h"
#include "player-info/avatar.h"
#include "store/store-util.h"
#include "util/object-sort.h"
}
return flag;
-}
+}
\ No newline at end of file
-#include "system/angband.h"
-#include "system/angband-version.h"
+#include "system/angband-version.h"
+#include "system/angband.h"
void put_version(char *buf)
{
if (IS_ALPHA_VERSION) {
sprintf(buf, _("変愚蛮怒 %d.%d.%dAlpha%d", "Hengband %d.%d.%dAlpha%d"), H_VER_MAJOR, H_VER_MINOR, H_VER_PATCH, H_VER_EXTRA);
-
} else {
char *mode = IS_STABLE_VERSION ? _("安定版", "Stable") : _("開発版", "Developing");
sprintf(buf, _("変愚蛮怒 %d.%d.%d.%d(%s)", "Hengband %d.%d.%d.%d(%s)"), H_VER_MAJOR, H_VER_MINOR, H_VER_PATCH, H_VER_EXTRA, mode);
}
-}
+}
\ No newline at end of file
#define FAKE_VER_EXTRA 3 /*!< ゲームのバージョン番号定義(エクストラ番号) */
/*!
- * @brief バージョンが開発版が安定版かを返す
- */
+ * @brief バージョンが開発版が安定版かを返す
+ */
#define IS_STABLE_VERSION (FAKE_VER_MINOR % 2 == 0 && FAKE_VER_EXTRA == 0)
/*!
#define IS_ALPHA_VERSION 1
/*!
- * @brief セーブファイル上のバージョン定義(メジャー番号) / "Savefile Version Number" for Hengband 1.1.1 and later
- * @details
- * 当面FAKE_VER_*を参照しておく。
- * <pre>
- * First three digits may be same as the Program Version. But not
- * always same. It means that newer version may preserves lower
- * compatibility with the older version.
- * For example, newer Hengband 1.4.4 creates savefiles marked with
- * Savefile Version 1.4.0.0 . It means that Hengband 1.4.0 can load a
- * savefile of Hengband 1.4.4 (lower compatibility!).
- * Upper compatibility is always guaranteed.
- * </pre>
- */
+ * @brief セーブファイル上のバージョン定義(メジャー番号) / "Savefile Version Number" for Hengband 1.1.1 and later
+ * @details
+ * 当面FAKE_VER_*を参照しておく。
+ * <pre>
+ * First three digits may be same as the Program Version. But not
+ * always same. It means that newer version may preserves lower
+ * compatibility with the older version.
+ * For example, newer Hengband 1.4.4 creates savefiles marked with
+ * Savefile Version 1.4.0.0 . It means that Hengband 1.4.0 can load a
+ * savefile of Hengband 1.4.4 (lower compatibility!).
+ * Upper compatibility is always guaranteed.
+ * </pre>
+ */
#define H_VER_MAJOR (FAKE_VER_MAJOR - 10) /*!< セーブファイル上のバージョン定義(メジャー番号) */
#define H_VER_MINOR FAKE_VER_MINOR /*!< セーブファイル上のバージョン定義(マイナー番号) */
#define H_VER_PATCH FAKE_VER_PATCH /*!< セーブファイル上のバージョン定義(パッチ番号) */
#endif
/*** Special 4 letter names for some standard types ***/
-typedef void *vptr; /*!< void型ポインタ定義 / A standard pointer (to "void" because ANSI C says so) */
+typedef void *vptr; /*!< void型ポインタ定義 / A standard pointer (to "void" because ANSI C says so) */
typedef const char *concptr; /*!< 文字列定数用ポインタ定義 / A simple pointer (to unmodifiable strings) */
/*!
* @brief エラーコードの定義 / Error codes for function return values
* @details
* 一般に成功時0、失敗時負数、何らかの問題時正数とする。
- * Success = 0, Failure = -N, Problem = +N
+ * Success = 0, Failure = -N, Problem = +N
*/
typedef int errr;
-#define MAX_UCHAR 255 /*!< Maximum value storable in a "byte" (hard-coded) */
-#define MAX_SHORT 32767 /*!< Maximum value storable in a "s16b" (hard-coded) */
+#define MAX_UCHAR 255 /*!< Maximum value storable in a "byte" (hard-coded) */
+#define MAX_SHORT 32767 /*!< Maximum value storable in a "s16b" (hard-coded) */
-#define MAX_NLEN 160 /*!< Maximum length of object's name */
+#define MAX_NLEN 160 /*!< Maximum length of object's name */
#define MAX_MONSTER_NAME 160 /*!< モンスター名称の最大バイト数 / Max characters of monster's name */
/* Note that "signed char" is not always "defined" */
typedef unsigned long u32b;
#endif
-typedef s16b IDX; /*!< ゲーム中のID型を定義 */
-
-typedef s16b TOWN_IDX; /*!< ゲーム中の町ID型を定義 */
-typedef s16b FEAT_IDX; /*!< ゲーム中の地形ID型を定義 */
-typedef s16b FLOOR_IDX; /*!< ゲーム中のフロアID型を定義 */
-
-typedef byte SEX_IDX; /*!< ゲーム中のプレイヤー性別ID型を定義 */
-typedef s16b MIMIC_RACE_IDX; /*!< ゲーム中のプレイヤー変身種族ID型を定義 */
-typedef s16b PATRON_IDX; /*!< ゲーム中のプレイヤーパトロンID型を定義 */
-typedef s32b ACTION_IDX; /*!< プレイヤーが現在取っている常時行動のID定義 */
-typedef s16b BACT_IDX; /*!< 町の施設処理のID定義 */
-typedef s16b BACT_RESTRICT_IDX; /*!< 町の施設処理の規制処理ID定義 */
-
-typedef s16b MONRACE_IDX; /*!< todo monster_race_typeに差し替えて消滅させる ゲーム中のモンスター種族ID型を定義 */
-typedef s16b MONSTER_IDX; /*!< todo monster_race_typeに差し替えて消滅させる ゲーム中のモンスター個体ID型を定義 */
-typedef s16b DUNGEON_IDX; /*!< ゲーム中のダンジョンID型を定義 */
-typedef s16b REALM_IDX; /*!< ゲーム中の魔法領域ID型を定義 */
-typedef s16b ARTIFACT_IDX; /*!< ゲーム中のアーティファクトID型を定義 */
-typedef s16b EGO_IDX; /*!< アイテムエゴのID型を定義 */
-typedef s16b ACTIVATION_IDX; /*!< アイテムの発動効果ID型を定義 */
-typedef s16b VIRTUES_IDX; /*!< ゲーム中の徳ID型を定義 */
-typedef s16b QUEST_IDX; /*!< ゲーム中のクエストID型を定義 */
-typedef byte ROOM_IDX; /*!< 部屋のID型を定義 */
-
-typedef s16b INVENTORY_IDX; /*!< ゲーム中の所持品ID型を定義 */
-typedef s16b OBJECT_IDX; /*!< ゲーム中のアイテムID型を定義 */
-typedef s32b ESSENCE_IDX; /*!< 鍛冶エッセンスのID型 */
-typedef s16b KIND_OBJECT_IDX; /*!< ゲーム中のベースアイテムID型を定義 */
-typedef s16b VAULT_IDX; /*!< 固定部屋のID型を定義 */
-typedef int MUTATION_IDX; /*!< 突然変異のID型を定義 */
-
-typedef s32b POSITION; /*!< ゲーム中の座標型を定義 */
-typedef s16b POSITION_IDX; /*!< ゲーム中の座標リストID型 */
-
-typedef s32b ALIGNMENT; /*!< 善悪属性の型定義 */
-typedef byte FEAT_SUBTYPE; /*!< 地形情報の副値 (トラップ種別/パターン種別/店舗種別)*/
-
-typedef char GAME_TEXT; /*!< ゲーム中のテキスト型定義 */
+typedef s16b IDX; /*!< ゲーム中のID型を定義 */
+
+typedef s16b TOWN_IDX; /*!< ゲーム中の町ID型を定義 */
+typedef s16b FEAT_IDX; /*!< ゲーム中の地形ID型を定義 */
+typedef s16b FLOOR_IDX; /*!< ゲーム中のフロアID型を定義 */
+
+typedef byte SEX_IDX; /*!< ゲーム中のプレイヤー性別ID型を定義 */
+typedef s16b MIMIC_RACE_IDX; /*!< ゲーム中のプレイヤー変身種族ID型を定義 */
+typedef s16b PATRON_IDX; /*!< ゲーム中のプレイヤーパトロンID型を定義 */
+typedef s32b ACTION_IDX; /*!< プレイヤーが現在取っている常時行動のID定義 */
+typedef s16b BACT_IDX; /*!< 町の施設処理のID定義 */
+typedef s16b BACT_RESTRICT_IDX; /*!< 町の施設処理の規制処理ID定義 */
+
+typedef s16b MONRACE_IDX; /*!< todo monster_race_typeに差し替えて消滅させる ゲーム中のモンスター種族ID型を定義 */
+typedef s16b MONSTER_IDX; /*!< todo monster_race_typeに差し替えて消滅させる ゲーム中のモンスター個体ID型を定義 */
+typedef s16b DUNGEON_IDX; /*!< ゲーム中のダンジョンID型を定義 */
+typedef s16b REALM_IDX; /*!< ゲーム中の魔法領域ID型を定義 */
+typedef s16b ARTIFACT_IDX; /*!< ゲーム中のアーティファクトID型を定義 */
+typedef s16b EGO_IDX; /*!< アイテムエゴのID型を定義 */
+typedef s16b ACTIVATION_IDX; /*!< アイテムの発動効果ID型を定義 */
+typedef s16b VIRTUES_IDX; /*!< ゲーム中の徳ID型を定義 */
+typedef s16b QUEST_IDX; /*!< ゲーム中のクエストID型を定義 */
+typedef byte ROOM_IDX; /*!< 部屋のID型を定義 */
+
+typedef s16b INVENTORY_IDX; /*!< ゲーム中の所持品ID型を定義 */
+typedef s16b OBJECT_IDX; /*!< ゲーム中のアイテムID型を定義 */
+typedef s32b ESSENCE_IDX; /*!< 鍛冶エッセンスのID型 */
+typedef s16b KIND_OBJECT_IDX; /*!< ゲーム中のベースアイテムID型を定義 */
+typedef s16b VAULT_IDX; /*!< 固定部屋のID型を定義 */
+typedef int MUTATION_IDX; /*!< 突然変異のID型を定義 */
+
+typedef s32b POSITION; /*!< ゲーム中の座標型を定義 */
+typedef s16b POSITION_IDX; /*!< ゲーム中の座標リストID型 */
+
+typedef s32b ALIGNMENT; /*!< 善悪属性の型定義 */
+typedef byte FEAT_SUBTYPE; /*!< 地形情報の副値 (トラップ種別/パターン種別/店舗種別)*/
+
+typedef char GAME_TEXT; /*!< ゲーム中のテキスト型定義 */
/*!
* @var typedef s32b HIT_POINT
* @brief HPとその増減量の型定義
- * @details
+ * @details
* HIT_POINTはプレイヤー及びモンスターのHPの各値とその増減量の型である。
*/
typedef s32b HIT_POINT;
* @details
* MANA_POINTはプレイヤーのMPの各地とその増減量の型である。
*/
-typedef s32b MANA_POINT; /*!< ゲーム中のMP型を定義 */
+typedef s32b MANA_POINT; /*!< ゲーム中のMP型を定義 */
-typedef int ARTIFACT_BIAS_IDX; /*!< ランダムアーティファクトのバイアス型 */
+typedef int ARTIFACT_BIAS_IDX; /*!< ランダムアーティファクトのバイアス型 */
-typedef s16b HIT_PROB; /*!< ゲーム中の装備命中修正値を定義 */
-typedef int HIT_RELIABILITY; /*!< 最終算出命中力を定義 */
-typedef s16b BASE_STATUS; /*!< ゲーム中の基礎能力値型を定義 */
+typedef s16b HIT_PROB; /*!< ゲーム中の装備命中修正値を定義 */
+typedef int HIT_RELIABILITY; /*!< 最終算出命中力を定義 */
+typedef s16b BASE_STATUS; /*!< ゲーム中の基礎能力値型を定義 */
-typedef s32b MONSTER_NUMBER; /*!< ゲーム中のモンスター数型を定義 */
-typedef s32b ITEM_NUMBER; /*!< ゲーム中のアイテム数型を定義 */
+typedef s32b MONSTER_NUMBER; /*!< ゲーム中のモンスター数型を定義 */
+typedef s32b ITEM_NUMBER; /*!< ゲーム中のアイテム数型を定義 */
-typedef s16b ACTION_ENERGY; /*!< ゲーム中の行動エネルギー型を定義 */
-typedef s16b ARMOUR_CLASS; /*!< ゲーム中の行動アーマークラス型を定義 */
-typedef s16b TIME_EFFECT; /*!< ゲーム中の時限期間の型を定義 */
-typedef byte DISCOUNT_RATE; /*!< ゲーム中の値引き率の型を定義 */
-typedef s16b SPEED; /*!< ゲーム中の加速値の型定義 */
+typedef s16b ACTION_ENERGY; /*!< ゲーム中の行動エネルギー型を定義 */
+typedef s16b ARMOUR_CLASS; /*!< ゲーム中の行動アーマークラス型を定義 */
+typedef s16b TIME_EFFECT; /*!< ゲーム中の時限期間の型を定義 */
+typedef byte DISCOUNT_RATE; /*!< ゲーム中の値引き率の型を定義 */
+typedef s16b SPEED; /*!< ゲーム中の加速値の型定義 */
/*!
* @var typedef s16b ENEGRY
* @details
* ENERGYはプレイヤーとモンスターの行動順を定める行動エネルギーを示す型定義である。
*/
-typedef s16b ENERGY; /*!< ゲーム中の行動エネルギーの型定義 */
-
+typedef s16b ENERGY; /*!< ゲーム中の行動エネルギーの型定義 */
-typedef s16b SLEEP_DEGREE; /*!< モンスターの睡眠度の型定義 */
+typedef s16b SLEEP_DEGREE; /*!< モンスターの睡眠度の型定義 */
-typedef s16b PLAYER_LEVEL; /*!< ゲーム中のプレイヤーレベルの型を定義 */
-typedef int DIRECTION; /*!< ゲーム中の方角の型定義 */
-typedef s32b EXP; /*!< ゲーム中の主経験値の型定義 */
-typedef s16b SUB_EXP; /*!< ゲーム中の副経験値の型定義 */
+typedef s16b PLAYER_LEVEL; /*!< ゲーム中のプレイヤーレベルの型を定義 */
+typedef int DIRECTION; /*!< ゲーム中の方角の型定義 */
+typedef s32b EXP; /*!< ゲーム中の主経験値の型定義 */
+typedef s16b SUB_EXP; /*!< ゲーム中の副経験値の型定義 */
typedef s32b OBJECT_SUBTYPE_VALUE; /*!< ゲーム中のアイテム副分類の型定義 */
-typedef s16b PARAMETER_VALUE; /*!< ゲーム中のアイテム能力値の型定義 */
-typedef s32b WEIGHT; /*!< ゲーム中の重量の型定義(ポンド) */
+typedef s16b PARAMETER_VALUE; /*!< ゲーム中のアイテム能力値の型定義 */
+typedef s32b WEIGHT; /*!< ゲーム中の重量の型定義(ポンド) */
typedef int DICE_NUMBER; /*!< ゲーム中のダイス数の型定義 */
-typedef int DICE_SID; /*!< ゲーム中のダイス面の型定義 */
-typedef s32b PRICE; /*!< ゲーム中の金額価値の型定義 */
-typedef s16b FEED; /*!< ゲーム中の滋養度の型定義 */
+typedef int DICE_SID; /*!< ゲーム中のダイス面の型定義 */
+typedef s32b PRICE; /*!< ゲーム中の金額価値の型定義 */
+typedef s16b FEED; /*!< ゲーム中の滋養度の型定義 */
-typedef u32b STR_OFFSET; /*!< テキストオフセットの型定義 */
+typedef u32b STR_OFFSET; /*!< テキストオフセットの型定義 */
-typedef int POWER; /*!< 魔法の効力定義*/
+typedef int POWER; /*!< 魔法の効力定義*/
-typedef s32b DEPTH; /*!< ゲーム中の階層レベルの型定義 */
-typedef byte RARITY; /*!< ゲーム中の希少度の型定義 */
+typedef s32b DEPTH; /*!< ゲーム中の階層レベルの型定義 */
+typedef byte RARITY; /*!< ゲーム中の希少度の型定義 */
-typedef s32b GAME_TURN; /*!< ゲーム中のターンの型定義 */
-typedef u32b REAL_TIME; /*!< 実時刻の型定義 */
+typedef s32b GAME_TURN; /*!< ゲーム中のターンの型定義 */
+typedef u32b REAL_TIME; /*!< 実時刻の型定義 */
-typedef s32b PERCENTAGE; /*!< ゲーム中のパーセント表記の型定義(/100倍) */
-typedef s16b MULTIPLY; /*!< ゲーム中の倍率の型定義(/10倍) */
+typedef s32b PERCENTAGE; /*!< ゲーム中のパーセント表記の型定義(/100倍) */
+typedef s16b MULTIPLY; /*!< ゲーム中の倍率の型定義(/10倍) */
-typedef u32b BIT_FLAGS; /*!< 32ビットのフラグ配列の型定義 */
-typedef u16b BIT_FLAGS16; /*!< 16ビットのフラグ配列の型定義 */
-typedef byte BIT_FLAGS8; /*!< 8ビットのフラグ配列の型定義 */
+typedef u32b BIT_FLAGS; /*!< 32ビットのフラグ配列の型定義 */
+typedef u16b BIT_FLAGS16; /*!< 16ビットのフラグ配列の型定義 */
+typedef byte BIT_FLAGS8; /*!< 8ビットのフラグ配列の型定義 */
-typedef s16b XTRA16; /*!< 汎用変数16ビットの型定義 */
-typedef byte XTRA8; /*!< 汎用変数8ビットの型定義 */
+typedef s16b XTRA16; /*!< 汎用変数16ビットの型定義 */
+typedef byte XTRA8; /*!< 汎用変数8ビットの型定義 */
-typedef s16b COMMAND_CODE; /*!< コマンド内容の型定義 */
-typedef s16b COMMAND_ARG; /*!< コマンド引数の型定義 */
-typedef s16b COMMAND_NUM; /*!< コマンド数の型定義 */
+typedef s16b COMMAND_CODE; /*!< コマンド内容の型定義 */
+typedef s16b COMMAND_ARG; /*!< コマンド引数の型定義 */
+typedef s16b COMMAND_NUM; /*!< コマンド数の型定義 */
-typedef int TERM_LEN; /*!< コンソール表示座標の型定義 */
-typedef byte TERM_COLOR; /*!< テキスト表示色の型定義 */
+typedef int TERM_LEN; /*!< コンソール表示座標の型定義 */
+typedef byte TERM_COLOR; /*!< テキスト表示色の型定義 */
typedef char SYMBOL_CODE; /*!< キャラの文字の型定義 */
-typedef s32b MAGIC_NUM1; /*!< プレイヤーの汎用魔法情報配列1の型定義*/
-typedef byte MAGIC_NUM2; /*!< プレイヤーの汎用魔法情報配列2の型定義*/
+typedef s32b MAGIC_NUM1; /*!< プレイヤーの汎用魔法情報配列1の型定義*/
+typedef byte MAGIC_NUM2; /*!< プレイヤーの汎用魔法情報配列2の型定義*/
-typedef s32b SPELL_IDX; /*!< 各魔法領域/職業能力ごとの呪文ID型定義 */
-typedef s16b PROB; /*!< 確率の重みの型定義 */
-typedef byte FEAT_POWER; /*!< 地形強度の型定義 */
+typedef s32b SPELL_IDX; /*!< 各魔法領域/職業能力ごとの呪文ID型定義 */
+typedef s16b PROB; /*!< 確率の重みの型定義 */
+typedef byte FEAT_POWER; /*!< 地形強度の型定義 */
typedef int QUANTITY; /*!< インターフェース上の指定個数 */
typedef int EFFECT_ID; /*!< 効果属性ID */
-typedef s16b QUEST_TYPE; /*!< クエストの種別ID */
+typedef s16b QUEST_TYPE; /*!< クエストの種別ID */
typedef s16b QUEST_STATUS; /*!< クエストの状態ID */
typedef s16b ACTION_SKILL_POWER; /*!< 行動技能値 */
typedef int PET_COMMAND_IDX; /*!< ペットへの指示ID */
-typedef byte FF_FLAGS_IDX; /*!< 地形特性ID */
+typedef byte FF_FLAGS_IDX; /*!< 地形特性ID */
typedef s16b FEAT_PRIORITY; /*!< 地形の縮小表示優先順位 */
/*** Pointers to Functions of special types (for various purposes) ***/
/* A generic function takes a user data and a special data */
-typedef errr (*func_gen)(vptr, vptr);
+typedef errr (*func_gen)(vptr, vptr);
/* An equality testing function takes two things to compare (bool) */
-typedef bool (*func_eql)(vptr, vptr);
+typedef bool (*func_eql)(vptr, vptr);
/* A hasher takes a thing (and a max hash size) to hash (0 to siz - 1) */
-typedef uint (*func_hsh)(vptr, uint);
+typedef uint (*func_hsh)(vptr, uint);
/* A key extractor takes a thing and returns (a pointer to) some key */
-typedef vptr (*func_key)(vptr);
+typedef vptr (*func_key)(vptr);
typedef enum process_result {
PROCESS_FALSE = 0,
#pragma once
-#include "system/angband.h"
#include "object/tval-types.h"
+#include "system/angband.h"
#define TR_FLAG_SIZE 5
*/
#include "term/z-term.h"
+#include "game-option/map-screen-options.h"
#include "game-option/runtime-arguments.h"
#include "game-option/special-options.h"
+#include "term/gameterm.h"
#include "term/term-color-types.h"
#include "term/z-virt.h"
-#include "term/gameterm.h"
-#include "game-option/map-screen-options.h"
/* Special flags in the attr data */
#define AF_BIGTILE2 0xf0
*/
void term_queue_bigchar(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc)
{
-
#ifdef JP
/*
* A table which relates each ascii character to a multibyte
* (条件追加:タイルの1文字目でない事を確かめるように。)
*/
{
-
int w, h;
term_get_size(&w, &h);
if (x != w && !(scr_aa[x] & AF_TILE1) && (scr_aa[x] & AF_KANJI2)) {
}
}
-bool macro_running(void) {
+bool macro_running(void)
+{
int diff = angband_term[0]->key_head - angband_term[0]->key_tail;
- return diff < -1 || 1 < diff;
+ return diff < -1 || 1 < diff;
}
bool need_term_fresh(void) { return !macro_running() || fresh_after; }
C_KILL(t->key_queue, t->key_size, char);
return 0;
}
-#endif
+#endif
\ No newline at end of file
#include "system/angband.h"
#include "system/h-basic.h"
- /*!
+/*!
* @brief A term_win is a "window" for a Term
*/
typedef struct term_win {
- bool cu, cv; //!< Cursor Useless / Visible codes
- TERM_LEN cx, cy; //!< Cursor Location (see "Useless")
+ bool cu, cv; //!< Cursor Useless / Visible codes
+ TERM_LEN cx, cy; //!< Cursor Location (see "Useless")
- TERM_COLOR **a; //!< Array[h*w] -- Attribute array
- char **c; //!< Array[h*w] -- Character array
+ TERM_COLOR **a; //!< Array[h*w] -- Attribute array
+ char **c; //!< Array[h*w] -- Character array
- TERM_COLOR *va; //!< Array[h] -- Access to the attribute array
- char *vc; //!< Array[h] -- Access to the character array
+ TERM_COLOR *va; //!< Array[h] -- Access to the attribute array
+ char *vc; //!< Array[h] -- Access to the character array
- TERM_COLOR **ta; //!< Note that the attr pair at(x, y) is a[y][x]
- char **tc; //!< Note that the char pair at(x, y) is c[y][x]
+ TERM_COLOR **ta; //!< Note that the attr pair at(x, y) is a[y][x]
+ char **tc; //!< Note that the char pair at(x, y) is c[y][x]
- TERM_COLOR *vta; //!< Note that the row of attr at(0, y) is a[y]
- char *vtc; //!< Note that the row of chars at(0, y) is c[y]
+ TERM_COLOR *vta; //!< Note that the row of attr at(0, y) is a[y]
+ char *vtc; //!< Note that the row of chars at(0, y) is c[y]
} term_win;
/*!
*/
typedef struct term_type term_type;
typedef struct term_type {
- vptr user; //!< Extra "user" info (used by application)
- vptr data; //!< Extra "data" info (used by implementation)
-
- bool user_flag; //!< Flag "user_flag" An extra "user" flag (used by application)
- bool data_flag; //!< Flag "data_flag" An extra "data" flag (used by implementation)
-
- bool active_flag; //!< Flag "active_flag" This "term" is "active"
- bool mapped_flag; //!< Flag "mapped_flag" This "term" is "mapped"
- bool total_erase; //!< Flag "total_erase" This "term" should be fully erased
- bool fixed_shape; //!< Flag "fixed_shape" This "term" is not allowed to resize
- bool icky_corner; //!< Flag "icky_corner" This "term" has an "icky" corner grid
- bool soft_cursor; //!< Flag "soft_cursor" This "term" uses a "software" cursor
- bool always_pict; //!< Flag "always_pict" Use the "Term_pict()" routine for all text
- bool higher_pict; //!< Flag "higher_pict" Use the "Term_pict()" routine for special text
- bool always_text; //!< Flag "always_text" Use the "Term_text()" routine for invisible text
- bool unused_flag; //!< Flag "unused_flag" Reserved for future use
- bool never_bored; //!< Flag "never_bored" Never call the "TERM_XTRA_BORED" action
- bool never_frosh; //!< Flag "never_frosh" Never call the "TERM_XTRA_FROSH" action
-
- byte attr_blank; //!< Value "attr_blank" Use this "attr" value for "blank" grids
- char char_blank; //!< Value "char_blank" Use this "char" value for "blank" grids
-
- char *key_queue; //!< Keypress Queue -- various data / Keypress Queue -- pending keys
- u16b key_head;
- u16b key_tail;
- u16b key_xtra;
- u16b key_size;
-
- TERM_LEN wid; //!< Window Width(max 255)
- TERM_LEN hgt; //!< Window Height(max 255)
-
- TERM_LEN y1; //!< Minimum modified row
- TERM_LEN y2; //!< Maximum modified row
-
- TERM_LEN *x1; //!< Minimum modified column(per row)
- TERM_LEN *x2; //!< Maximum modified column(per row)
-
- term_win *old; //!< Displayed screen image
- term_win *scr; //!< Requested screen image
-
- term_win *tmp; //!< Temporary screen image
- term_win *mem; //!< Memorized screen image
-
- void (*init_hook)(term_type *t); //!< Hook for init - ing the term
- void (*nuke_hook)(term_type *t); //!< Hook for nuke - ing the term
-
- errr (*user_hook)(int n); //!< ユーザ設定項目実装部 / Hook for user actions
- errr (*xtra_hook)(int n, int v); //!< 拡張機能実装部 / Hook for extra actions
- errr (*curs_hook)(TERM_LEN x, TERM_LEN y); //!< カーソル描画実装部 / Hook for placing the cursor
- errr (*bigcurs_hook)(TERM_LEN x, TERM_LEN y); //!< 大型タイル時カーソル描画実装部 / Hook for placing the cursor on bigtile mode
- errr (*wipe_hook)(TERM_LEN x, TERM_LEN y, int n); //!< 指定座標テキスト消去実装部 / Hook for drawing some blank spaces
- errr (*text_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s); //!< テキスト描画実装部 / Hook for drawing a string of chars using an attr
- void (*resize_hook)(void); //!< 画面リサイズ実装部
- errr (*pict_hook)(TERM_LEN x, TERM_LEN y, int n, const TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap, concptr tcp); //!< タイル描画実装部 / Hook for drawing a sequence of special attr / char pairs
+ vptr user; //!< Extra "user" info (used by application)
+ vptr data; //!< Extra "data" info (used by implementation)
+
+ bool user_flag; //!< Flag "user_flag" An extra "user" flag (used by application)
+ bool data_flag; //!< Flag "data_flag" An extra "data" flag (used by implementation)
+
+ bool active_flag; //!< Flag "active_flag" This "term" is "active"
+ bool mapped_flag; //!< Flag "mapped_flag" This "term" is "mapped"
+ bool total_erase; //!< Flag "total_erase" This "term" should be fully erased
+ bool fixed_shape; //!< Flag "fixed_shape" This "term" is not allowed to resize
+ bool icky_corner; //!< Flag "icky_corner" This "term" has an "icky" corner grid
+ bool soft_cursor; //!< Flag "soft_cursor" This "term" uses a "software" cursor
+ bool always_pict; //!< Flag "always_pict" Use the "Term_pict()" routine for all text
+ bool higher_pict; //!< Flag "higher_pict" Use the "Term_pict()" routine for special text
+ bool always_text; //!< Flag "always_text" Use the "Term_text()" routine for invisible text
+ bool unused_flag; //!< Flag "unused_flag" Reserved for future use
+ bool never_bored; //!< Flag "never_bored" Never call the "TERM_XTRA_BORED" action
+ bool never_frosh; //!< Flag "never_frosh" Never call the "TERM_XTRA_FROSH" action
+
+ byte attr_blank; //!< Value "attr_blank" Use this "attr" value for "blank" grids
+ char char_blank; //!< Value "char_blank" Use this "char" value for "blank" grids
+
+ char *key_queue; //!< Keypress Queue -- various data / Keypress Queue -- pending keys
+ u16b key_head;
+ u16b key_tail;
+ u16b key_xtra;
+ u16b key_size;
+
+ TERM_LEN wid; //!< Window Width(max 255)
+ TERM_LEN hgt; //!< Window Height(max 255)
+
+ TERM_LEN y1; //!< Minimum modified row
+ TERM_LEN y2; //!< Maximum modified row
+
+ TERM_LEN *x1; //!< Minimum modified column(per row)
+ TERM_LEN *x2; //!< Maximum modified column(per row)
+
+ term_win *old; //!< Displayed screen image
+ term_win *scr; //!< Requested screen image
+
+ term_win *tmp; //!< Temporary screen image
+ term_win *mem; //!< Memorized screen image
+
+ void (*init_hook)(term_type *t); //!< Hook for init - ing the term
+ void (*nuke_hook)(term_type *t); //!< Hook for nuke - ing the term
+
+ errr (*user_hook)(int n); //!< ユーザ設定項目実装部 / Hook for user actions
+ errr (*xtra_hook)(int n, int v); //!< 拡張機能実装部 / Hook for extra actions
+ errr (*curs_hook)(TERM_LEN x, TERM_LEN y); //!< カーソル描画実装部 / Hook for placing the cursor
+ errr (*bigcurs_hook)(TERM_LEN x, TERM_LEN y); //!< 大型タイル時カーソル描画実装部 / Hook for placing the cursor on bigtile mode
+ errr (*wipe_hook)(TERM_LEN x, TERM_LEN y, int n); //!< 指定座標テキスト消去実装部 / Hook for drawing some blank spaces
+ errr (*text_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s); //!< テキスト描画実装部 / Hook for drawing a string of chars using an attr
+ void (*resize_hook)(void); //!< 画面リサイズ実装部
+ errr (*pict_hook)(TERM_LEN x, TERM_LEN y, int n, const TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap,
+ concptr tcp); //!< タイル描画実装部 / Hook for drawing a sequence of special attr / char pairs
} term_type;
/**** Available Constants ****/
*
* The other actions do not need a "v" code, so "zero" is used.
*/
-#define TERM_XTRA_EVENT 1 /* Process some pending events */
-#define TERM_XTRA_FLUSH 2 /* Flush all pending events */
-#define TERM_XTRA_CLEAR 3 /* Clear the entire window */
-#define TERM_XTRA_SHAPE 4 /* Set cursor shape (optional) */
-#define TERM_XTRA_FROSH 5 /* Flush one row (optional) */
-#define TERM_XTRA_FRESH 6 /* Flush all rows (optional) */
-#define TERM_XTRA_NOISE 7 /* Make a noise (optional) */
-#define TERM_XTRA_SOUND 8 /* Make a sound (optional) */
-#define TERM_XTRA_BORED 9 /* Handle stuff when bored (optional) */
-#define TERM_XTRA_REACT 10 /* React to global changes (optional) */
-#define TERM_XTRA_ALIVE 11 /* Change the "hard" level (optional) */
-#define TERM_XTRA_LEVEL 12 /* Change the "soft" level (optional) */
-#define TERM_XTRA_DELAY 13 /* Delay some milliseconds (optional) */
-#define TERM_XTRA_MUSIC_BASIC 14 /* Play a music(basic) (optional) */
+#define TERM_XTRA_EVENT 1 /* Process some pending events */
+#define TERM_XTRA_FLUSH 2 /* Flush all pending events */
+#define TERM_XTRA_CLEAR 3 /* Clear the entire window */
+#define TERM_XTRA_SHAPE 4 /* Set cursor shape (optional) */
+#define TERM_XTRA_FROSH 5 /* Flush one row (optional) */
+#define TERM_XTRA_FRESH 6 /* Flush all rows (optional) */
+#define TERM_XTRA_NOISE 7 /* Make a noise (optional) */
+#define TERM_XTRA_SOUND 8 /* Make a sound (optional) */
+#define TERM_XTRA_BORED 9 /* Handle stuff when bored (optional) */
+#define TERM_XTRA_REACT 10 /* React to global changes (optional) */
+#define TERM_XTRA_ALIVE 11 /* Change the "hard" level (optional) */
+#define TERM_XTRA_LEVEL 12 /* Change the "soft" level (optional) */
+#define TERM_XTRA_DELAY 13 /* Delay some milliseconds (optional) */
+#define TERM_XTRA_MUSIC_BASIC 14 /* Play a music(basic) (optional) */
#define TERM_XTRA_MUSIC_DUNGEON 15 /* Play a music(dungeon) (optional) */
-#define TERM_XTRA_MUSIC_QUEST 16 /* Play a music(quest) (optional) */
-#define TERM_XTRA_MUSIC_TOWN 17 /* Play a music(floor) (optional) */
+#define TERM_XTRA_MUSIC_QUEST 16 /* Play a music(quest) (optional) */
+#define TERM_XTRA_MUSIC_TOWN 17 /* Play a music(floor) (optional) */
#define TERM_XTRA_MUSIC_MUTE 18
/**** Available Variables ****/
(void)close(fd);
return 0;
-}
+}
\ No newline at end of file
}
}
-bool is_msg_window_flowed(void) {
+bool is_msg_window_flowed(void)
+{
int i;
for (i = 0; i < 8; i++) {
if (angband_term[i] && (window_flag[i] & PW_MESSAGE))
if (num_more < angband_term[i]->hgt)
return FALSE;
}
- return TRUE;
+ return TRUE;
}
/*
(void)vstrnfmt(buf, 1024, fmt, vp);
va_end(vp);
msg_print(buf);
-}
+}
\ No newline at end of file
#include "window/display-sub-window-spells.h"
#include "core/window-redrawer.h"
#include "game-option/option-flags.h"
-#include "mind/mind-sniper.h"
#include "mind/mind-explanations-table.h"
#include "mind/mind-info.h"
+#include "mind/mind-sniper.h"
#include "mind/mind-types.h"
#include "player/player-class.h"
#include "player/player-status-table.h"
}
term_activate(old);
}
-}
+}
\ No newline at end of file
}
msg_print("Successfully created a spoiler file.");
-}
+}
\ No newline at end of file
#include "object/object-generator.h"
#include "object/object-kind.h"
#include "object/object-value.h"
-#include "system/object-type-definition.h"
#include "system/angband-version.h"
+#include "system/object-type-definition.h"
#include "util/angband-files.h"
#include "view/display-messages.h"
#include "wizard/spoiler-util.h"
}
msg_print("Successfully created a spoiler file.");
-}
+}
\ No newline at end of file
fprintf(spoiler_file, "------------------------------------------\n\n");
fprintf(spoiler_file, "%-162.162s %4s %4s %4s %7s %7s %19.19s\n", "Name", "Lev", "Rar", "Spd", "Hp", "Ac", "Visual Info");
fprintf(spoiler_file, "%-166.166s%4s %4s %4s %7s %7s %4.19s\n",
- "----------------------------------------------------------------------------------------------------------------------------------------------------------"
+ "------------------------------------------------------------------------------------------------------------------------------------------------------"
+ "----"
"----------",
"---", "---", "---", "-----", "-----", "-------------------");
}
msg_print("Successfully created a spoiler file.");
-}
+}
\ No newline at end of file
*roff_p++ = ch;
}
-}
+}
\ No newline at end of file
} else {
msg_print("Changes ignored.");
}
-}
+}
\ No newline at end of file
exe_write_diary(creature_ptr, DIARY_DESCRIPTION, 1, _(" しかし、生き返った。", " but revived."));
leave_floor(creature_ptr);
-}
+}
\ No newline at end of file
msg_erase();
}
-}
+}
\ No newline at end of file