#include "angband.h"
#include "util.h"
+#include "main/sound-definitions-table.h"
#include "object-flavor.h"
#include "object-hook.h"
#include "player-effects.h"
#include "player-inventory.h"
#include "rumor.h"
-#include "realm-hex.h"
+#include "realm/realm-hex.h"
-#include "spells.h"
#include "spells-object.h"
#include "spells-floor.h"
#include "spells-summon.h"
#include "spells-status.h"
-#include "cmd-basic.h"
+#include "cmd/cmd-basic.h"
+#include "core/show-file.h"
#include "files.h"
-#include "floor.h"
-#include "objectkind.h"
-#include "realm-song.h"
-#include "view-mainwindow.h"
+#include "floor/floor.h"
+#include "object/object-kind.h"
+#include "view/display-main-window.h"
+#include "spell/spells-type.h"
+#include "spell/spells2.h"
+#include "spell/spells3.h"
/*!
* @brief 巻物を読むコマンドのサブルーチン
{
for (k = 0; k < randint1(3); k++)
{
- if (summon_specific(0, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
+ if (summon_specific(creature_ptr, 0, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
{
ident = TRUE;
}
{
for (k = 0; k < randint1(3); k++)
{
- if (summon_specific(0, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
+ if (summon_specific(creature_ptr, 0, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET)))
{
ident = TRUE;
}
case SV_SCROLL_SUMMON_PET:
{
- if (summon_specific(-1, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET)))
+ if (summon_specific(creature_ptr, -1, creature_ptr->y, creature_ptr->x, creature_ptr->current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_FORCE_PET)))
{
ident = TRUE;
}
case SV_SCROLL_SUMMON_KIN:
{
- if (summon_kin_player(creature_ptr->lev, creature_ptr->y, creature_ptr->x, (PM_FORCE_PET | PM_ALLOW_GROUP)))
+ if (summon_kin_player(creature_ptr, creature_ptr->lev, creature_ptr->y, creature_ptr->x, (PM_FORCE_PET | PM_ALLOW_GROUP)))
{
ident = TRUE;
}
case SV_SCROLL_PHASE_DOOR:
{
- teleport_player(creature_ptr, 10, 0L);
+ teleport_player(creature_ptr, 10, TELEPORT_SPONTANEOUS);
ident = TRUE;
break;
}
case SV_SCROLL_TELEPORT:
{
- teleport_player(creature_ptr, 100, 0L);
+ teleport_player(creature_ptr, 100, TELEPORT_SPONTANEOUS);
ident = TRUE;
break;
}
case SV_SCROLL_IDENTIFY:
{
- if (!ident_spell(creature_ptr, FALSE)) used_up = FALSE;
+ if (!ident_spell(creature_ptr, FALSE, 0)) used_up = FALSE;
ident = TRUE;
break;
}
case SV_SCROLL_STAR_IDENTIFY:
{
- if (!identify_fully(FALSE)) used_up = FALSE;
+ if (!identify_fully(creature_ptr, FALSE, 0)) used_up = FALSE;
ident = TRUE;
break;
}
case SV_SCROLL_TRAP_DOOR_DESTRUCTION:
{
- if (destroy_doors_touch()) ident = TRUE;
+ if (destroy_doors_touch(creature_ptr)) ident = TRUE;
break;
}
case SV_SCROLL_STAR_DESTRUCTION:
{
- if (destroy_area(creature_ptr->current_floor_ptr, creature_ptr->y, creature_ptr->x, 13 + randint0(5), FALSE))
+ if (destroy_area(creature_ptr, creature_ptr->y, creature_ptr->x, 13 + randint0(5), FALSE))
ident = TRUE;
else
msg_print(_("ダンジョンが揺れた...", "The dungeon trembles..."));
case SV_SCROLL_ACQUIREMENT:
{
- acquirement(creature_ptr->y, creature_ptr->x, 1, TRUE, FALSE, FALSE);
+ acquirement(creature_ptr, creature_ptr->y, creature_ptr->x, 1, TRUE, FALSE, FALSE);
ident = TRUE;
break;
}
case SV_SCROLL_STAR_ACQUIREMENT:
{
- acquirement(creature_ptr->y, creature_ptr->x, randint1(2) + 1, TRUE, FALSE, FALSE);
+ acquirement(creature_ptr, creature_ptr->y, creature_ptr->x, randint1(2) + 1, TRUE, FALSE, FALSE);
ident = TRUE;
break;
}
{
fire_ball(creature_ptr, GF_FIRE, 0, 666, 4);
/* Note: "Double" damage since it is centered on the player ... */
- if (!(IS_OPPOSE_FIRE() || creature_ptr->resist_fire || creature_ptr->immune_fire))
+ if (!(is_oppose_fire(creature_ptr) || creature_ptr->resist_fire || creature_ptr->immune_fire))
take_hit(creature_ptr, DAMAGE_NOESCAPE, 50+randint1(50), _("炎の巻物", "a Scroll of Fire"), -1);
ident = TRUE;
case SV_SCROLL_ICE:
{
fire_ball(creature_ptr, GF_ICE, 0, 777, 4);
- if (!(IS_OPPOSE_COLD() || creature_ptr->resist_cold || creature_ptr->immune_cold))
+ if (!(is_oppose_cold(creature_ptr) || creature_ptr->resist_cold || creature_ptr->immune_cold))
take_hit(creature_ptr, DAMAGE_NOESCAPE, 100+randint1(100), _("氷の巻物", "a Scroll of Ice"), -1);
ident = TRUE;
{
msg_print(_("巻物にはメッセージが書かれている:", "There is message on the scroll. It says:"));
msg_print(NULL);
- display_rumor(TRUE);
+ display_rumor(creature_ptr, TRUE);
msg_print(NULL);
msg_print(_("巻物は煙を立てて消え去った!", "The scroll disappears in a puff of smoke!"));
case SV_SCROLL_ARTIFACT:
{
ident = TRUE;
- if (!artifact_scroll()) used_up = FALSE;
+ if (!artifact_scroll(creature_ptr)) used_up = FALSE;
break;
}
case SV_SCROLL_RESET_RECALL:
{
ident = TRUE;
- if (!reset_recall()) used_up = FALSE;
+ if (!reset_recall(creature_ptr)) used_up = FALSE;
break;
}
case SV_SCROLL_AMUSEMENT:
{
ident = TRUE;
- amusement(creature_ptr->y, creature_ptr->x, 1, FALSE);
+ amusement(creature_ptr, creature_ptr->y, creature_ptr->x, 1, FALSE);
break;
}
case SV_SCROLL_STAR_AMUSEMENT:
{
ident = TRUE;
- amusement(creature_ptr->y, creature_ptr->x, randint1(2) + 1, FALSE);
+ amusement(creature_ptr, creature_ptr->y, creature_ptr->x, randint1(2) + 1, FALSE);
break;
}
}
q=format("book-%d_jp.txt",o_ptr->sval);
/* Display object description */
- object_desc(o_name, o_ptr, OD_NAME_ONLY);
+ object_desc(creature_ptr, o_name, o_ptr, OD_NAME_ONLY);
path_build(buf, sizeof(buf), ANGBAND_DIR_FILE, q);
/* Peruse the help file */
- (void)show_file(TRUE, buf, o_name, 0, 0);
+ (void)show_file(creature_ptr, TRUE, buf, o_name, 0, 0);
screen_load();
used_up=FALSE;
}
- creature_ptr->update |= (PU_COMBINE | PU_REORDER);
+ /*
+ * Store what may have to be updated for the inventory (including
+ * autodestroy if set by something else). Then turn off those flags
+ * so that updates triggered by calling gain_exp() below do not
+ * rearrange the inventory before destroying the scroll in the pack.
+ */
+ BIT_FLAGS inventory_flags = (PU_COMBINE | PU_REORDER | (creature_ptr->update & PU_AUTODESTROY));
+ creature_ptr->update &= ~(PU_COMBINE | PU_REORDER | PU_AUTODESTROY);
if (!(object_is_aware(o_ptr)))
{
/* An identification was made */
if (ident && !object_is_aware(o_ptr))
{
- object_aware(o_ptr);
+ object_aware(creature_ptr, o_ptr);
gain_exp(creature_ptr, (lev + (creature_ptr->lev >> 1)) / creature_ptr->lev);
}
creature_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
-
+ creature_ptr->update |= inventory_flags;
/* Hack -- allow certain scrolls to be "preserved" */
if (!used_up)
}
sound(SOUND_SCROLL);
- vary_item(item, -1);
+ vary_item(creature_ptr, item, -1);
}
+
/*!
* @brief 読むコマンドのメインルーチン /
* Eat some food (from the pack or floor)