#include "object-curse.h"
#include "artifact.h"
#include "player-status.h"
+#include "feature.h"
static void one_sustain(object_type *o_ptr);
*/
static void one_sustain(object_type *o_ptr)
{
- switch (randint0(6))
+ switch (randint0(A_MAX))
{
case 0: add_flag(o_ptr->art_flags, TR_SUST_STR); break;
case 1: add_flag(o_ptr->art_flags, TR_SUST_INT); break;
/* Dungeon */
else
{
- cave_type *c_ptr;
+ grid_type *g_ptr;
POSITION y = j_ptr->iy;
POSITION x = j_ptr->ix;
- c_ptr = &cave[y][x];
+ g_ptr = ¤t_floor_ptr->grid_array[y][x];
/* Scan all objects in the grid */
- for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
+ for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
o_ptr = &o_list[this_o_idx];
if (prev_o_idx == 0)
{
/* Remove from list */
- c_ptr->o_idx = next_o_idx;
+ g_ptr->o_idx = next_o_idx;
}
/* Real previous */
*/
void delete_object(POSITION y, POSITION x)
{
- cave_type *c_ptr;
+ grid_type *g_ptr;
OBJECT_IDX this_o_idx, next_o_idx = 0;
/* Refuse "illegal" locations */
if (!in_bounds(y, x)) return;
- c_ptr = &cave[y][x];
+ g_ptr = ¤t_floor_ptr->grid_array[y][x];
/* Scan all objects in the grid */
- for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
+ for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
o_ptr = &o_list[this_o_idx];
}
/* Objects are gone */
- c_ptr->o_idx = 0;
+ g_ptr->o_idx = 0;
/* Visual update */
lite_spot(y, x);
static void compact_objects_aux(OBJECT_IDX i1, OBJECT_IDX i2)
{
OBJECT_IDX i;
- cave_type *c_ptr;
+ grid_type *g_ptr;
object_type *o_ptr;
/* Do nothing */
x = o_ptr->ix;
/* Acquire grid */
- c_ptr = &cave[y][x];
+ g_ptr = ¤t_floor_ptr->grid_array[y][x];
/* Repair grid */
- if (c_ptr->o_idx == i1)
+ if (g_ptr->o_idx == i1)
{
/* Repair */
- c_ptr->o_idx = i2;
+ g_ptr->o_idx = i2;
}
}
* Delete all the items when player leaves the level
* @note we do NOT visually reflect these (irrelevant) changes
* @details
- * Hack -- we clear the "c_ptr->o_idx" field for every grid,
+ * Hack -- we clear the "g_ptr->o_idx" field for every grid,
* and the "m_ptr->next_o_idx" field for every monster, since
* we know we are clearing every object. Technically, we only
* clear those fields for grids/monsters containing objects,
/* Dungeon */
else
{
- cave_type *c_ptr;
+ grid_type *g_ptr;
/* Access location */
POSITION y = o_ptr->iy;
POSITION x = o_ptr->ix;
/* Access grid */
- c_ptr = &cave[y][x];
+ g_ptr = ¤t_floor_ptr->grid_array[y][x];
/* Hack -- see above */
- c_ptr->o_idx = 0;
+ g_ptr->o_idx = 0;
}
object_wipe(o_ptr);
}
if (level > MAX_DEPTH - 1) level = MAX_DEPTH - 1;
/* Boost level */
- if ((level > 0) && !(d_info[dungeon_type].flags1 & DF1_BEGINNER))
+ if ((level > 0) && !(d_info[p_ptr->dungeon_idx].flags1 & DF1_BEGINNER))
{
/* Occasional "boost" */
if (one_in_(GREAT_OBJ))
* @param o_ptr 未鑑定価格を確認したいオブジェクトの構造体参照ポインタ
* @return オブジェクトの未鑑定価格
*/
-static s32b object_value_base(object_type *o_ptr)
+static PRICE object_value_base(object_type *o_ptr)
{
/* Aware item -- use template cost */
if (object_is_aware(o_ptr)) return (k_info[o_ptr->k_idx].cost);
* @param plusses フラグに与える価格の基本重み
* @return オブジェクトのフラグ価格
*/
-s32b flag_cost(object_type *o_ptr, int plusses)
+PRICE flag_cost(object_type *o_ptr, int plusses)
{
- s32b total = 0;
+ PRICE total = 0;
BIT_FLAGS flgs[TR_FLAG_SIZE];
- s32b tmp_cost;
+ PRICE tmp_cost;
int count;
int i;
object_kind *k_ptr = &k_info[o_ptr->k_idx];
value = object_value_base(o_ptr);
}
-
/* Apply discount (if any) */
if (o_ptr->discount) value -= (value * o_ptr->discount / 100L);
-
/* Return the final value */
return (value);
}
/* We have "felt" it (again) */
o_ptr->ident |= (IDENT_SENSE);
-
- /* Combine the pack */
p_ptr->update |= (PU_COMBINE);
-
p_ptr->window |= (PW_INVEN | PW_EQUIP);
return FALSE;
msg_format_wizard(CHEAT_OBJECT, _("%sを生成しました。", "%s was generated."), o_name);
}
-/*!
- * @brief INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。
- * Mega-Hack -- Attempt to create one of the "Special Objects"
- * @param o_ptr 生成に割り当てたいオブジェクトの構造体参照ポインタ
- * @return 生成に成功したらTRUEを返す。
- * @details
- * We are only called from "make_object()", and we assume that\n
- * "apply_magic()" is called immediately after we return.\n
- *\n
- * Note -- see "make_artifact()" and "apply_magic()"\n
- */
-static bool make_artifact_special(object_type *o_ptr)
-{
- IDX i;
- KIND_OBJECT_IDX k_idx = 0;
-
- /*! @note 地上ではキャンセルする / No artifacts in the town */
- if (!dun_level) return (FALSE);
-
- /*! @note get_obj_num_hookによる指定がある場合は生成をキャンセルする / Themed object */
- if (get_obj_num_hook) return (FALSE);
-
- /*! @note 全固定アーティファクト中からIDの若い順に生成対象とその確率を走査する / Check the artifact list (just the "specials") */
- for (i = 0; i < max_a_idx; i++)
- {
- artifact_type *a_ptr = &a_info[i];
-
- /*! @note アーティファクト名が空の不正なデータは除外する / Skip "empty" artifacts */
- if (!a_ptr->name) continue;
-
- /*! @note 既に生成回数がカウントされたアーティファクト、QUESTITEMと非INSTA_ARTは除外 / Cannot make an artifact twice */
- if (a_ptr->cur_num) continue;
- if (a_ptr->gen_flags & TRG_QUESTITEM) continue;
- if (!(a_ptr->gen_flags & TRG_INSTA_ART)) continue;
-
- /*! @note アーティファクト生成階が現在に対して足りない場合は高確率で1/(不足階層*2)を満たさないと生成リストに加えられない /
- * XXX XXX Enforce minimum "depth" (loosely) */
- if (a_ptr->level > object_level)
- {
- /* @note / Acquire the "out-of-depth factor". Roll for out-of-depth creation. */
- int d = (a_ptr->level - object_level) * 2;
- if (!one_in_(d)) continue;
- }
-
- /*! @note 1/(レア度)の確率を満たさないと除外される / Artifact "rarity roll" */
- if (!one_in_(a_ptr->rarity)) continue;
-
- /*! @note INSTA_ART型固定アーティファクトのベースアイテムもチェック対象とする。ベースアイテムの生成階層が足りない場合1/(不足階層*5) を満たさないと除外される。 /
- * Find the base object. XXX XXX Enforce minimum "object" level (loosely). Acquire the "out-of-depth factor". Roll for out-of-depth creation. */
- k_idx = lookup_kind(a_ptr->tval, a_ptr->sval);
- if (k_info[k_idx].level > object_level)
- {
- int d = (k_info[k_idx].level - object_level) * 5;
- if (!one_in_(d)) continue;
- }
-
- /*! @note 前述の条件を満たしたら、後のIDのアーティファクトはチェックせずすぐ確定し生成処理に移す /
- * Assign the template. Mega-Hack -- mark the item as an artifact. Hack: Some artifacts get random extra powers. Success. */
- object_prep(o_ptr, k_idx);
-
- o_ptr->name1 = i;
- random_artifact_resistance(o_ptr, a_ptr);
- return (TRUE);
- }
-
- /*! @note 全INSTA_ART固定アーティファクトを試行しても決まらなかった場合 FALSEを返す / Failure */
- return (FALSE);
-}
-
-
-/*!
- * @brief 非INSTA_ART型の固定アーティファクトの生成を確率に応じて試行する。
- * Mega-Hack -- Attempt to create one of the "Special Objects"
- * @param o_ptr 生成に割り当てたいオブジェクトの構造体参照ポインタ
- * @return 生成に成功したらTRUEを返す。
- * @details
- * Attempt to change an object into an artifact\n
- * This routine should only be called by "apply_magic()"\n
- * Note -- see "make_artifact_special()" and "apply_magic()"\n
- */
-static bool make_artifact(object_type *o_ptr)
-{
- ARTIFACT_IDX i;
-
- /* No artifacts in the town */
- if (!dun_level) return (FALSE);
-
- /* Paranoia -- no "plural" artifacts */
- if (o_ptr->number != 1) return (FALSE);
-
- /* Check the artifact list (skip the "specials") */
- for (i = 0; i < max_a_idx; i++)
- {
- artifact_type *a_ptr = &a_info[i];
-
- /* Skip "empty" items */
- if (!a_ptr->name) continue;
-
- /* Cannot make an artifact twice */
- if (a_ptr->cur_num) continue;
-
- if (a_ptr->gen_flags & TRG_QUESTITEM) continue;
-
- if (a_ptr->gen_flags & TRG_INSTA_ART) continue;
-
- /* Must have the correct fields */
- if (a_ptr->tval != o_ptr->tval) continue;
- if (a_ptr->sval != o_ptr->sval) continue;
-
- /* XXX XXX Enforce minimum "depth" (loosely) */
- if (a_ptr->level > dun_level)
- {
- /* Acquire the "out-of-depth factor" */
- int d = (a_ptr->level - dun_level) * 2;
-
- /* Roll for out-of-depth creation */
- if (!one_in_(d)) continue;
- }
-
- /* We must make the "rarity roll" */
- if (!one_in_(a_ptr->rarity)) continue;
-
- /* Hack -- mark the item as an artifact */
- o_ptr->name1 = i;
-
- /* Hack: Some artifacts get random extra powers */
- random_artifact_resistance(o_ptr, a_ptr);
-
- /* Success */
- return (TRUE);
- }
-
- /* Failure */
- return (FALSE);
-}
-
/*!
* @brief アイテムのエゴをレア度の重みに合わせてランダムに選択する
r_ptr = &r_info[i];
- check = (dun_level < r_ptr->level) ? (r_ptr->level - dun_level) : 0;
+ check = (current_floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - current_floor_ptr->dun_level) : 0;
/* Ignore dead monsters */
if (!r_ptr->rarity) continue;
/* Pick a random non-unique monster race */
while (1)
{
- i = get_mon_num(dun_level);
+ i = get_mon_num(current_floor_ptr->dun_level);
r_ptr = &r_info[i];
- check = (dun_level < r_ptr->level) ? (r_ptr->level - dun_level) : 0;
+ check = (current_floor_ptr->dun_level < r_ptr->level) ? (r_ptr->level - current_floor_ptr->dun_level) : 0;
/* Ignore dead monsters */
if (!r_ptr->rarity) continue;
o_ptr->pval = randint1(obj_level);
if (o_ptr->sval == SV_CHEST_KANDUME) o_ptr->pval = 6;
- o_ptr->xtra3 = dun_level + 5;
+ o_ptr->xtra3 = current_floor_ptr->dun_level + 5;
/* Never exceed "difficulty" of 55 to 59 */
if (o_ptr->pval > 55) o_ptr->pval = 55 + (byte)randint0(5);
f1 = lev + 10;
/* Maximal chance of being "good" */
- if (f1 > d_info[dungeon_type].obj_good) f1 = d_info[dungeon_type].obj_good;
+ if (f1 > d_info[p_ptr->dungeon_idx].obj_good) f1 = d_info[p_ptr->dungeon_idx].obj_good;
/* Base chance of being "great" */
f2 = f1 * 2 / 3;
/* Maximal chance of being "great" */
- if ((p_ptr->pseikaku != SEIKAKU_MUNCHKIN) && (f2 > d_info[dungeon_type].obj_great))
- f2 = d_info[dungeon_type].obj_great;
+ if ((p_ptr->pseikaku != SEIKAKU_MUNCHKIN) && (f2 > d_info[p_ptr->dungeon_idx].obj_great))
+ f2 = d_info[p_ptr->dungeon_idx].obj_great;
if (p_ptr->muta3 & MUT3_GOOD_LUCK)
{
OBJECT_IDX o_idx;
/* Acquire grid */
- cave_type *c_ptr = &cave[y][x];
+ grid_type *g_ptr = ¤t_floor_ptr->grid_array[y][x];
object_type forge;
object_type *q_ptr;
if (!cave_drop_bold(y, x)) return;
/* Avoid stacking on other objects */
- if (c_ptr->o_idx) return;
+ if (g_ptr->o_idx) return;
q_ptr = &forge;
object_wipe(q_ptr);
o_ptr->ix = x;
/* Build a stack */
- o_ptr->next_o_idx = c_ptr->o_idx;
+ o_ptr->next_o_idx = g_ptr->o_idx;
/* Place the object */
- c_ptr->o_idx = o_idx;
+ g_ptr->o_idx = o_idx;
note_spot(y, x);
OBJECT_IDX o_idx;
/* Acquire grid */
- cave_type *c_ptr = &cave[y][x];
+ grid_type *g_ptr = ¤t_floor_ptr->grid_array[y][x];
object_type forge;
object_type *q_ptr;
if (!cave_drop_bold(y, x)) return;
/* Avoid stacking on other objects */
- if (c_ptr->o_idx) return;
+ if (g_ptr->o_idx) return;
q_ptr = &forge;
object_wipe(q_ptr);
o_ptr->ix = x;
/* Build a stack */
- o_ptr->next_o_idx = c_ptr->o_idx;
+ o_ptr->next_o_idx = g_ptr->o_idx;
/* Place the object */
- c_ptr->o_idx = o_idx;
+ g_ptr->o_idx = o_idx;
note_spot(y, x);
OBJECT_IDX o_idx = 0;
OBJECT_IDX this_o_idx, next_o_idx = 0;
- cave_type *c_ptr;
+ grid_type *g_ptr;
GAME_TEXT o_name[MAX_NLEN];
if (!projectable(y, x, ty, tx)) continue;
/* Obtain grid */
- c_ptr = &cave[ty][tx];
+ g_ptr = ¤t_floor_ptr->grid_array[ty][tx];
/* Require floor space */
if (!cave_drop_bold(ty, tx)) continue;
k = 0;
/* Scan objects in that grid */
- for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
+ for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
o_ptr = &o_list[this_o_idx];
{
int candidates = 0, pick;
- for (ty = 1; ty < cur_hgt - 1; ty++)
+ for (ty = 1; ty < current_floor_ptr->height - 1; ty++)
{
- for (tx = 1; tx < cur_wid - 1; tx++)
+ for (tx = 1; tx < current_floor_ptr->width - 1; tx++)
{
/* A valid space found */
if (cave_drop_bold(ty, tx)) candidates++;
/* Choose a random one */
pick = randint1(candidates);
- for (ty = 1; ty < cur_hgt - 1; ty++)
+ for (ty = 1; ty < current_floor_ptr->height - 1; ty++)
{
- for (tx = 1; tx < cur_wid - 1; tx++)
+ for (tx = 1; tx < current_floor_ptr->width - 1; tx++)
{
if (cave_drop_bold(ty, tx))
{
}
- c_ptr = &cave[by][bx];
+ g_ptr = ¤t_floor_ptr->grid_array[by][bx];
/* Scan objects in that grid for combination */
- for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
+ for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx)
{
object_type *o_ptr;
o_ptr = &o_list[this_o_idx];
j_ptr->held_m_idx = 0;
/* Build a stack */
- j_ptr->next_o_idx = c_ptr->o_idx;
+ j_ptr->next_o_idx = g_ptr->o_idx;
/* Place the object */
- c_ptr->o_idx = o_idx;
+ g_ptr->o_idx = o_idx;
/* Success */
done = TRUE;
/* Recalculate mana XXX */
p_ptr->update |= (PU_MANA);
-
- /* Combine the pack */
p_ptr->update |= (PU_COMBINE);
-
p_ptr->window |= (PW_INVEN | PW_EQUIP);
/* Hack -- Clear temporary elemental brands if player takes off weapons */
bool process_warning(POSITION xx, POSITION yy)
{
POSITION mx, my;
- cave_type *c_ptr;
+ grid_type *g_ptr;
GAME_TEXT o_name[MAX_NLEN];
#define WARNING_AWARE_RANGE 12
if (!in_bounds(my, mx) || (distance(my, mx, yy, xx) > WARNING_AWARE_RANGE)) continue;
- c_ptr = &cave[my][mx];
+ g_ptr = ¤t_floor_ptr->grid_array[my][mx];
- if (!c_ptr->m_idx) continue;
+ if (!g_ptr->m_idx) continue;
- m_ptr = &m_list[c_ptr->m_idx];
+ m_ptr = &m_list[g_ptr->m_idx];
if (MON_CSLEEP(m_ptr)) continue;
if (!is_hostile(m_ptr)) continue;
BIT_FLAGS f5 = r_ptr->a_ability_flags1;
BIT_FLAGS f6 = r_ptr->a_ability_flags2;
- if (!(d_info[dungeon_type].flags1 & DF1_NO_MAGIC))
+ if (!(d_info[p_ptr->dungeon_idx].flags1 & DF1_NO_MAGIC))
{
- if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(MS_BALL_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0);
- if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(MS_BALL_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
- if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(MS_BALL_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
- if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(MS_STARBURST, GF_LITE, c_ptr->m_idx, &dam_max0);
- if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(MS_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0);
- if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(MS_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(MS_BALL_CHAOS, GF_CHAOS, g_ptr->m_idx, &dam_max0);
+ if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(MS_BALL_MANA, GF_MANA, g_ptr->m_idx, &dam_max0);
+ if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(MS_BALL_DARK, GF_DARK, g_ptr->m_idx, &dam_max0);
+ if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(MS_STARBURST, GF_LITE, g_ptr->m_idx, &dam_max0);
+ if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(MS_HAND_DOOM, GF_HAND_DOOM, g_ptr->m_idx, &dam_max0);
+ if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(MS_PSY_SPEAR, GF_PSY_SPEAR, g_ptr->m_idx, &dam_max0);
}
- if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(MS_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(MS_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(MS_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(MS_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(MS_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(MS_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(MS_BR_NETHER, GF_NETHER, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(MS_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(MS_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(MS_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(MS_BR_SOUND, GF_SOUND, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(MS_BR_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(MS_BR_DISEN, GF_DISENCHANT, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(MS_BR_NEXUS, GF_NEXUS, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(MS_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(MS_BR_INERTIA, GF_INERTIAL, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(MS_BR_GRAVITY, GF_GRAVITY, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(MS_BR_SHARDS, GF_SHARDS, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(MS_BR_PLASMA, GF_PLASMA, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(MS_BR_FORCE, GF_FORCE, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(MS_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(MS_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0);
- if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(MS_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(MS_ROCKET, GF_ROCKET, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(MS_BR_ACID, GF_ACID, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(MS_BR_ELEC, GF_ELEC, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(MS_BR_FIRE, GF_FIRE, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(MS_BR_COLD, GF_COLD, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(MS_BR_POIS, GF_POIS, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(MS_BR_NETHER, GF_NETHER, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(MS_BR_LITE, GF_LITE, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(MS_BR_DARK, GF_DARK, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(MS_BR_CONF, GF_CONFUSION, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(MS_BR_SOUND, GF_SOUND, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(MS_BR_CHAOS, GF_CHAOS, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(MS_BR_DISEN, GF_DISENCHANT, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(MS_BR_NEXUS, GF_NEXUS, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(MS_BR_TIME, GF_TIME, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(MS_BR_INERTIA, GF_INERTIAL, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(MS_BR_GRAVITY, GF_GRAVITY, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(MS_BR_SHARDS, GF_SHARDS, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(MS_BR_PLASMA, GF_PLASMA, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(MS_BR_FORCE, GF_FORCE, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(MS_BR_MANA, GF_MANA, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(MS_BR_NUKE, GF_NUKE, g_ptr->m_idx, &dam_max0);
+ if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(MS_BR_DISI, GF_DISINTEGRATE, g_ptr->m_idx, &dam_max0);
}
/* Monster melee attacks */
- if (!(r_ptr->flags1 & RF1_NEVER_BLOW) && !(d_info[dungeon_type].flags1 & DF1_NO_MELEE))
+ if (!(r_ptr->flags1 & RF1_NEVER_BLOW) && !(d_info[p_ptr->dungeon_idx].flags1 & DF1_NO_MELEE))
{
if (mx <= xx + 1 && mx >= xx - 1 && my <= yy + 1 && my >= yy - 1)
{
}
else old_damage = old_damage / 2;
- c_ptr = &cave[yy][xx];
- if (((!easy_disarm && is_trap(c_ptr->feat))
- || (c_ptr->mimic && is_trap(c_ptr->feat))) && !one_in_(13))
+ g_ptr = ¤t_floor_ptr->grid_array[yy][xx];
+ if (((!easy_disarm && is_trap(g_ptr->feat))
+ || (g_ptr->mimic && is_trap(g_ptr->feat))) && !one_in_(13))
{
object_type *o_ptr = choose_warning_item();
if (!get_check(format(_("本当に%sから抽出してよろしいですか?", "Really extract from %s? "), o_name))) return;
}
- take_turn(p_ptr, 100);;
+ take_turn(p_ptr, 100);
object_flags(o_ptr, old_flgs);
if (have_flag(old_flgs, TR_KILL_DRAGON)) add_flag(old_flgs, TR_SLAY_DRAGON);
/* Apply autodestroy/inscription to the drained item */
autopick_alter_item(item, TRUE);
-
- /* Combine the pack */
p_ptr->update |= (PU_COMBINE | PU_REORDER);
-
p_ptr->window |= (PW_INVEN);
}
if ((o_ptr->to_h >= p_ptr->lev/5+5) && (o_ptr->to_d >= p_ptr->lev/5+5))
{
msg_print(_("改良に失敗した。", "You failed to enchant."));
- take_turn(p_ptr, 100);;
+ take_turn(p_ptr, 100);
return;
}
else
if (o_ptr->to_a >= p_ptr->lev/5+5)
{
msg_print(_("改良に失敗した。", "You failed to enchant."));
- take_turn(p_ptr, 100);;
+ take_turn(p_ptr, 100);
return;
}
else
}
}
- take_turn(p_ptr, 100);;
+ take_turn(p_ptr, 100);
#ifdef JP
- msg_format("%sに%sの能力を付加しました。", o_name, es_ptr->add_name);
+ msg_format(_("%sに%sの能力を付加しました。", "You have added ability of %s to %s."), o_name, es_ptr->add_name);
#else
- msg_format("You have added ability of %s to %s.", es_ptr->add_name, o_name);
+ msg_format(, es_ptr->add_name, o_name);
#endif
-
- /* Combine the pack */
p_ptr->update |= (PU_COMBINE | PU_REORDER);
-
p_ptr->window |= (PW_INVEN);
}
object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
if (!get_check(format(_("よろしいですか? [%s]", "Are you sure? [%s]"), o_name))) return;
- take_turn(p_ptr, 100);;
+ take_turn(p_ptr, 100);
if (o_ptr->xtra3 == 1 + ESSENCE_SLAY_GLOVE)
{
object_flags(o_ptr, flgs);
if (!(have_pval_flags(flgs))) o_ptr->pval = 0;
msg_print(_("エッセンスを取り去った。", "You removed all essence you have added."));
-
- /* Combine the pack */
p_ptr->update |= (PU_COMBINE | PU_REORDER);
-
p_ptr->window |= (PW_INVEN);
}