p_can_kill_walls &= f_ptr->flags.has(TerrainCharacteristics::HURT_DISI);
p_can_kill_walls &= !p_can_enter || f_ptr->flags.has_not(TerrainCharacteristics::LOS);
p_can_kill_walls &= f_ptr->flags.has_not(TerrainCharacteristics::PERMANENT);
- GAME_TEXT m_name[MAX_NLEN];
+ std::string m_name;
bool can_move = true;
bool do_past = false;
if (g_ptr->m_idx && (m_ptr->ml || p_can_enter || p_can_kill_walls)) {
can_cast &= player_ptr->muta.has_not(PlayerMutationType::BERS_RAGE) || !is_shero(player_ptr);
if (!m_ptr->is_hostile() && can_cast && pattern_seq(player_ptr, player_ptr->y, player_ptr->x, y, x) && (p_can_enter || p_can_kill_walls)) {
(void)set_monster_csleep(player_ptr, g_ptr->m_idx, 0);
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ m_name = monster_desc(player_ptr, m_ptr, 0);
if (m_ptr->ml) {
if (!is_hallucinated) {
monster_race_track(player_ptr, m_ptr->ap_r_idx);
} else if (monster_can_cross_terrain(player_ptr, floor_ptr->grid_array[player_ptr->y][player_ptr->x].feat, r_ptr, 0)) {
do_past = true;
} else {
- msg_format(_("%^sが邪魔だ!", "%^s is in your way!"), m_name);
+ msg_format(_("%^sが邪魔だ!", "%^s is in your way!"), m_name.data());
PlayerEnergy(player_ptr).reset_player_turn();
can_move = false;
}
can_move = false;
disturb(player_ptr, false, true);
} else if (riding_m_ptr->is_fearful()) {
- GAME_TEXT steed_name[MAX_NLEN];
- monster_desc(player_ptr, steed_name, riding_m_ptr, 0);
- msg_format(_("%sが恐怖していて制御できない。", "%^s is too scared to control."), steed_name);
+ const auto steed_name = monster_desc(player_ptr, riding_m_ptr, 0);
+ msg_format(_("%sが恐怖していて制御できない。", "%^s is too scared to control."), steed_name.data());
can_move = false;
disturb(player_ptr, false, true);
} else if (player_ptr->riding_ryoute) {
}
if (can_move && riding_m_ptr->is_stunned() && one_in_(2)) {
- GAME_TEXT steed_name[MAX_NLEN];
- monster_desc(player_ptr, steed_name, riding_m_ptr, 0);
- msg_format(_("%sが朦朧としていてうまく動けない!", "You cannot control stunned %s!"), steed_name);
+ const auto steed_name = monster_desc(player_ptr, riding_m_ptr, 0);
+ msg_format(_("%sが朦朧としていてうまく動けない!", "You cannot control stunned %s!"), steed_name.data());
can_move = false;
disturb(player_ptr, false, true);
}
}
if (do_past) {
- msg_format(_("%sを押し退けた。", "You push past %s."), m_name);
+ msg_format(_("%sを押し退けた。", "You push past %s."), m_name.data());
}
if (player_ptr->wild_mode) {
r_ptr = &monraces_info[m_ptr->r_idx];
if (r_ptr->kind_flags.has(MonsterKindType::EVIL) && none_bits(r_ptr->flags1, RF1_QUESTOR) && r_ptr->kind_flags.has_not(MonsterKindType::UNIQUE) && !player_ptr->current_floor_ptr->inside_arena && !inside_quest(player_ptr->current_floor_ptr->quest_number) && (r_ptr->level < randint1(player_ptr->lev + 50)) && m_ptr->mflag2.has_not(MonsterConstantFlagType::NOGENO)) {
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name.data());
}
delete_monster_idx(player_ptr, g_ptr->m_idx);
return true;
}
-static bool exe_blue_teleport_back(PlayerType *player_ptr, GAME_TEXT *m_name)
+static std::pair<bool, std::string> exe_blue_teleport_back(PlayerType *player_ptr)
{
MonsterEntity *m_ptr;
MonsterRaceInfo *r_ptr;
auto *floor_ptr = player_ptr->current_floor_ptr;
if ((floor_ptr->grid_array[target_row][target_col].m_idx == 0) || !player_has_los_bold(player_ptr, target_row, target_col) || !projectable(player_ptr, player_ptr->y, player_ptr->x, target_row, target_col)) {
- return true;
+ return std::make_pair(true, std::string());
}
m_ptr = &floor_ptr->m_list[floor_ptr->grid_array[target_row][target_col].m_idx];
r_ptr = &monraces_info[m_ptr->r_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (r_ptr->resistance_flags.has_not(MonsterResistanceType::RESIST_TELEPORT)) {
- return false;
+ return std::make_pair(false, m_name);
}
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
- msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
- return true;
+ msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name.data());
+ return std::make_pair(true, m_name);
}
if (r_ptr->level <= randint1(100)) {
- return false;
+ return std::make_pair(false, m_name);
}
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
- msg_format(_("%sには耐性がある!", "%s resists!"), m_name);
- return true;
+ msg_format(_("%sには耐性がある!", "%s resists!"), m_name.data());
+ return std::make_pair(true, m_name);
}
static bool cast_blue_teleport_back(PlayerType *player_ptr)
return false;
}
- GAME_TEXT m_name[MAX_NLEN];
- if (exe_blue_teleport_back(player_ptr, m_name)) {
+ const auto [resisted, m_name] = exe_blue_teleport_back(player_ptr);
+ if (resisted) {
return true;
}
- msg_format(_("%sを引き戻した。", "You command %s to return."), m_name);
+ msg_format(_("%sを引き戻した。", "You command %s to return."), m_name.data());
teleport_monster_to(
player_ptr, player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx, player_ptr->y, player_ptr->x, 100, TELEPORT_PASSIVE);
return true;
atk_desc = _("未定義の部位", "undefined body part");
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
-
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
int bonus = player_ptr->to_h_m + (player_ptr->lev * 6 / 5);
int chance = (player_ptr->skill_thn + (bonus * BTH_PLUS_ADJ));
is_hit &= test_hit_norm(player_ptr, chance, r_ptr->ac, m_ptr->ml);
if (!is_hit) {
sound(SOUND_MISS);
- msg_format(_("ミス! %sにかわされた。", "You miss %s."), m_name);
+ msg_format(_("ミス! %sにかわされた。", "You miss %s."), m_name.data());
return;
}
sound(SOUND_HIT);
- msg_format(_("%sを%sで攻撃した。", "You hit %s with your %s."), m_name, atk_desc);
+ msg_format(_("%sを%sで攻撃した。", "You hit %s with your %s."), m_name.data(), atk_desc);
int k = damroll(dice_num, dice_side);
k = critical_norm(player_ptr, n_weight, bonus, k, (int16_t)bonus, HISSATSU_NONE);
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[y][x];
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
auto *r_ptr = &monraces_info[m_ptr->r_idx];
- GAME_TEXT m_name[MAX_NLEN];
const std::initializer_list<PlayerMutationType> mutation_attack_methods = { PlayerMutationType::HORNS, PlayerMutationType::BEAK, PlayerMutationType::SCOR_TAIL, PlayerMutationType::TRUNK, PlayerMutationType::TENTACLES };
return false;
}
- monster_desc(player_ptr, m_name, m_ptr, 0);
-
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
auto effects = player_ptr->effects();
auto is_hallucinated = effects->hallucination()->is_hallucinated();
if (m_ptr->ml) {
}
if (is_stormbringer) {
- msg_format(_("黒い刃は強欲に%sを攻撃した!", "Your black blade greedily attacks %s!"), m_name);
+ msg_format(_("黒い刃は強欲に%sを攻撃した!", "Your black blade greedily attacks %s!"), m_name.data());
chg_virtue(player_ptr, V_INDIVIDUALISM, 1);
chg_virtue(player_ptr, V_HONOUR, -1);
chg_virtue(player_ptr, V_JUSTICE, -1);
chg_virtue(player_ptr, V_JUSTICE, -1);
chg_virtue(player_ptr, V_COMPASSION, -1);
} else {
- msg_format(_("%sを攻撃するのを止めた。", "You stop to avoid hitting %s."), m_name);
+ msg_format(_("%sを攻撃するのを止めた。", "You stop to avoid hitting %s."), m_name.data());
return false;
}
}
if (effects->fear()->is_fearful()) {
if (m_ptr->ml) {
sound(SOUND_ATTACK_FAILED);
- msg_format(_("恐くて%sを攻撃できない!", "You are too fearful to attack %s!"), m_name);
+ msg_format(_("恐くて%sを攻撃できない!", "You are too fearful to attack %s!"), m_name.data());
} else {
sound(SOUND_ATTACK_FAILED);
msg_format(_("そっちには何か恐いものがいる!", "There is something scary in your way!"));
if (fear && m_ptr->ml && !mdeath) {
sound(SOUND_FLEE);
- msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), m_name);
+ msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), m_name.data());
}
if (PlayerClass(player_ptr).samurai_stance_is(SamuraiStanceType::IAI) && ((mode != HISSATSU_IAI) || mdeath)) {
case MonsterAbilityType::SPECIAL:
break;
case MonsterAbilityType::TELE_TO: {
- MonsterEntity *m_ptr;
- MonsterRaceInfo *r_ptr;
- GAME_TEXT m_name[MAX_NLEN];
-
if (!target_set(player_ptr, TARGET_KILL)) {
return false;
}
if (!projectable(player_ptr, player_ptr->y, player_ptr->x, target_row, target_col)) {
break;
}
- m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx];
- r_ptr = &monraces_info[m_ptr->r_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx];
+ auto *r_ptr = &monraces_info[m_ptr->r_idx];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_TELEPORT)) {
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) || r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
- msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name);
+ msg_format(_("%sには効果がなかった!", "%s is unaffected!"), m_name.data());
break;
} else if (r_ptr->level > randint1(100)) {
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
- msg_format(_("%sには耐性がある!", "%s resists!"), m_name);
+ msg_format(_("%sには耐性がある!", "%s resists!"), m_name.data());
break;
}
}
- msg_format(_("%sを引き戻した。", "You command %s to return."), m_name);
+ msg_format(_("%sを引き戻した。", "You command %s to return."), m_name.data());
teleport_monster_to(
player_ptr, player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx, player_ptr->y, player_ptr->x, 100, TELEPORT_PASSIVE);
/* Process the monsters (backwards) */
for (auto i = 0U; i < who.size(); i++) {
- bool delete_this;
- GAME_TEXT friend_name[MAX_NLEN];
- bool kakunin;
-
auto pet_ctr = who[i];
m_ptr = &player_ptr->current_floor_ptr->m_list[pet_ctr];
- delete_this = false;
- kakunin = ((pet_ctr == player_ptr->riding) || (m_ptr->nickname));
- monster_desc(player_ptr, friend_name, m_ptr, MD_ASSUME_VISIBLE);
+ bool delete_this = false;
+ bool kakunin = ((pet_ctr == player_ptr->riding) || (m_ptr->nickname));
+ const auto friend_name = monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE);
if (!all_pets) {
/* Hack -- health bar for this monster */
health_track(player_ptr, pet_ctr);
handle_stuff(player_ptr);
- msg_format(_("%sを放しますか? [Yes/No/Unnamed (%d体)]", "Dismiss %s? [Yes/No/Unnamed (%d remain)]"), friend_name, who.size() - i);
+ msg_format(_("%sを放しますか? [Yes/No/Unnamed (%d体)]", "Dismiss %s? [Yes/No/Unnamed (%d remain)]"), friend_name.data(), who.size() - i);
if (m_ptr->ml) {
move_cursor_relative(m_ptr->fy, m_ptr->fx);
delete_this = true;
if (kakunin) {
- msg_format(_("本当によろしいですか? (%s) ", "Are you sure? (%s) "), friend_name);
+ msg_format(_("本当によろしいですか? (%s) ", "Are you sure? (%s) "), friend_name.data());
ch = inkey();
if (ch != 'Y' && ch != 'y') {
delete_this = false;
if ((all_pets && !kakunin) || (!all_pets && delete_this)) {
if (record_named_pet && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DISMISS, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DISMISS, m_name.data());
}
if (pet_ctr == player_ptr->riding) {
- msg_format(_("%sから降りた。", "You dismount from %s. "), friend_name);
+ msg_format(_("%sから降りた。", "You dismount from %s. "), friend_name.data());
player_ptr->riding = 0;
}
/* HACK : Add the line to message buffer */
- msg_format(_("%s を放した。", "Dismissed %s."), friend_name);
+ msg_format(_("%s を放した。", "Dismissed %s."), friend_name.data());
player_ptr->update |= (PU_BONUS);
player_ptr->window_flags |= (PW_MESSAGE);
}
if (m_ptr->is_asleep()) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
(void)set_monster_csleep(player_ptr, g_ptr->m_idx, 0);
- msg_format(_("%sを起こした。", "You have woken %s up."), m_name);
+ msg_format(_("%sを起こした。", "You have woken %s up."), m_name.data());
}
if (player_ptr->action == ACTION_MONK_STANCE) {
{
MonsterEntity *m_ptr;
char out_val[20];
- GAME_TEXT m_name[MAX_NLEN];
bool old_name = false;
bool old_target_pet = target_pet;
msg_print(_("そのモンスターの名前は変えられない!", "You cannot change the name of this monster!"));
return;
}
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sに名前をつける。", "Name %s."), m_name);
+ msg_format(_("%sに名前をつける。", "Name %s."), monster_desc(player_ptr, m_ptr, 0).data());
msg_print(nullptr);
/* Start with nothing */
/* Save the inscription */
m_ptr->nickname = quark_add(out_val);
if (record_named_pet) {
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_NAME, m_name);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_NAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE).data());
}
} else {
if (record_named_pet && old_name) {
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_UNNAME, m_name);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_UNNAME, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE).data());
}
m_ptr->nickname = 0;
}
/* Handle visible monster */
else {
- GAME_TEXT m_name[MAX_NLEN];
-
/* Get "the monster" or "it" */
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
- msg_format(_("%sが%sに命中した。", "The %s hits %s."), o_name, m_name);
+ msg_format(_("%sが%sに命中した。", "The %s hits %s."), o_name, m_name.data());
if (m_ptr->ml) {
if (!player_ptr->effects()->hallucination()->is_hallucinated()) {
const auto is_unique = r_ptr->kind_flags.has(MonsterKindType::UNIQUE);
const auto fatality = randint1(r_ptr->level / (3 + sniper_concent)) + (8 - sniper_concent);
if ((randint1(fatality) == 1) && !is_unique && none_bits(r_ptr->flags7, RF7_UNIQUE2)) {
- GAME_TEXT m_name[MAX_NLEN];
-
/* Get "the monster" or "it" */
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
tdam = m_ptr->hp + 1;
base_dam = tdam;
- msg_format(_("%sの急所に突き刺さった!", "Your shot hit a fatal spot of %s!"), m_name);
+ msg_format(_("%sの急所に突き刺さった!", "Your shot hit a fatal spot of %s!"), m_name.data());
} else {
tdam = 1;
base_dam = tdam;
else {
/* STICK TO */
if (q_ptr->is_fixed_artifact() && (sniper_concent == 0)) {
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
stick_to = true;
- msg_format(_("%sは%sに突き刺さった!", "%^s is stuck in %s!"), o_name, m_name);
+ msg_format(_("%sは%sに突き刺さった!", "%^s is stuck in %s!"), o_name, m_name.data());
}
message_pain(player_ptr, c_mon_ptr->m_idx, tdam);
}
if (fear && m_ptr->ml) {
- GAME_TEXT m_name[MAX_NLEN];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
sound(SOUND_FLEE);
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), m_name);
+ msg_format(_("%^sは恐怖して逃げ出した!", "%^s flees in terror!"), m_name.data());
}
set_target(m_ptr, player_ptr->y, player_ptr->x);
/* Power competes against armor */
if (randint0(chance) < (ac * 3 / 4)) {
if (m_ptr->r_idx == MonsterRaceId::GOEMON && !m_ptr->is_asleep()) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sは%sを斬り捨てた!", "%s cuts down %s!"), m_name, o_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sは%sを斬り捨てた!", "%s cuts down %s!"), m_name.data(), o_name);
}
return false;
}
y = player_ptr->y + ddy[player_ptr->fishing_dir];
x = player_ptr->x + ddx[player_ptr->fishing_dir];
if (place_monster_aux(player_ptr, 0, y, x, r_idx, PM_NO_KAGE)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, &floor_ptr->m_list[floor_ptr->grid_array[y][x].m_idx], 0);
- msg_format(_("%sが釣れた!", "You have a good catch!"), m_name);
+ const auto m_name = monster_desc(player_ptr, &floor_ptr->m_list[floor_ptr->grid_array[y][x].m_idx], 0);
+ msg_format(_("%sが釣れた!", "You have a good catch!"), m_name.data());
success = true;
}
}
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
auto *r_ptr = &monraces_info[m_ptr->r_idx];
if (m_ptr->is_asleep()) {
- GAME_TEXT m_name[MAX_NLEN];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
(void)set_monster_csleep(player_ptr, player_ptr->riding, 0);
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sを起こした。", "You have woken %s up."), m_name);
+ msg_format(_("%^sを起こした。", "You have woken %s up."), m_name.data());
}
if (m_ptr->is_stunned()) {
if (set_monster_stunned(player_ptr, player_ptr->riding,
(randint0(r_ptr->level) < player_ptr->skill_exp[PlayerSkillKindType::RIDING]) ? 0 : (m_ptr->get_remaining_stun() - 1))) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sを朦朧状態から立ち直らせた。", "%^s is no longer stunned."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sを朦朧状態から立ち直らせた。", "%^s is no longer stunned."), m_name.data());
}
}
if (m_ptr->is_confused()) {
if (set_monster_confused(player_ptr, player_ptr->riding,
(randint0(r_ptr->level) < player_ptr->skill_exp[PlayerSkillKindType::RIDING]) ? 0 : (m_ptr->get_remaining_confusion() - 1))) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sを混乱状態から立ち直らせた。", "%^s is no longer confused."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sを混乱状態から立ち直らせた。", "%^s is no longer confused."), m_name.data());
}
}
if (m_ptr->is_fearful()) {
if (set_monster_monfear(player_ptr, player_ptr->riding,
(randint0(r_ptr->level) < player_ptr->skill_exp[PlayerSkillKindType::RIDING]) ? 0 : (m_ptr->get_remaining_fear() - 1))) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sを恐怖から立ち直らせた。", "%^s is no longer fearful."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sを恐怖から立ち直らせた。", "%^s is no longer fearful."), m_name.data());
}
}
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include "world/world.h"
}
/* Injure +/- confusion */
- monster_desc(player_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
+ angband_strcpy(em_ptr->killer, monster_desc(player_ptr, em_ptr->m_ptr, MD_WRONGDOER_NAME).data(), sizeof(em_ptr->killer));
take_hit(player_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer);
effect_monster_psi_reflect_extra_effect(player_ptr, em_ptr);
em_ptr->dam = 0;
return;
}
- monster_desc(player_ptr, em_ptr->killer, em_ptr->m_ptr, MD_WRONGDOER_NAME);
+ angband_strcpy(em_ptr->killer, monster_desc(player_ptr, em_ptr->m_ptr, MD_WRONGDOER_NAME).data(), sizeof(em_ptr->killer));
if (check_multishadow(player_ptr)) {
take_hit(player_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer);
em_ptr->dam = 0;
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
ProcessResult effect_monster_drain_mana(PlayerType *player_ptr, effect_monster_type *em_ptr)
}
if (em_ptr->see_s_msg) {
- monster_desc(player_ptr, em_ptr->killer, em_ptr->m_caster_ptr, 0);
+ angband_strcpy(em_ptr->killer, monster_desc(player_ptr, em_ptr->m_caster_ptr, 0).data(), sizeof(em_ptr->killer));
msg_format(_("%^sは気分が良さそうだ。", "%^s appears healthier."), em_ptr->killer);
}
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include <algorithm>
static void make_description_of_affecred_monster(PlayerType *player_ptr, effect_monster_type *em_ptr)
{
em_ptr->dam = (em_ptr->dam + em_ptr->r) / (em_ptr->r + 1);
- monster_desc(player_ptr, em_ptr->m_name, em_ptr->m_ptr, 0);
- monster_desc(player_ptr, em_ptr->m_poss, em_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ angband_strcpy(em_ptr->m_name, monster_desc(player_ptr, em_ptr->m_ptr, 0).data(), sizeof(em_ptr->m_name));
+ angband_strcpy(em_ptr->m_poss, monster_desc(player_ptr, em_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE).data(), sizeof(em_ptr->m_poss));
}
/*!
{
bool sad = em_ptr->m_ptr->is_pet() && !(em_ptr->m_ptr->ml);
if (em_ptr->known && em_ptr->note) {
- monster_desc(player_ptr, em_ptr->m_name, em_ptr->m_ptr, MD_TRUE_NAME);
+ angband_strcpy(em_ptr->m_name, monster_desc(player_ptr, em_ptr->m_ptr, MD_TRUE_NAME).data(), sizeof(em_ptr->m_name));
if (em_ptr->see_s_msg) {
msg_format("%^s%s", em_ptr->m_name, em_ptr->note);
} else {
}
if (record_named_pet && em_ptr->m_ptr->is_pet() && em_ptr->m_ptr->nickname) {
- char m2_name[MAX_NLEN];
- monster_desc(player_ptr, m2_name, em_ptr->m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_HEAL_LEPER, m2_name);
+ const auto m2_name = monster_desc(player_ptr, em_ptr->m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_HEAL_LEPER, m2_name.data());
}
delete_monster_idx(player_ptr, em_ptr->g_ptr->m_idx);
#include "timed-effect/player-blindness.h"
#include "timed-effect/timed-effects.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include <string>
if (ep_ptr->who > 0) {
ep_ptr->m_ptr = &player_ptr->current_floor_ptr->m_list[ep_ptr->who];
ep_ptr->rlev = (&monraces_info[ep_ptr->m_ptr->r_idx])->level >= 1 ? (&monraces_info[ep_ptr->m_ptr->r_idx])->level : 1;
- monster_desc(player_ptr, ep_ptr->m_name, ep_ptr->m_ptr, 0);
- strcpy(ep_ptr->killer, who_name);
+ angband_strcpy(ep_ptr->m_name, monster_desc(player_ptr, ep_ptr->m_ptr, 0).data(), sizeof(ep_ptr->m_name));
+ angband_strcpy(ep_ptr->killer, who_name, sizeof(ep_ptr->killer));
return;
}
SpellHex(player_ptr).store_vengeful_damage(ep_ptr->get_damage);
if ((player_ptr->tim_eyeeye || SpellHex(player_ptr).is_spelling_specific(HEX_EYE_FOR_EYE)) && (ep_ptr->get_damage > 0) && !player_ptr->is_dead && (ep_ptr->who > 0)) {
- GAME_TEXT m_name_self[MAX_MONSTER_NAME];
- monster_desc(player_ptr, m_name_self, ep_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
- msg_format(_("攻撃が%s自身を傷つけた!", "The attack of %s has wounded %s!"), ep_ptr->m_name, m_name_self);
+ const auto m_name_self = monster_desc(player_ptr, ep_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
+ msg_format(_("攻撃が%s自身を傷つけた!", "The attack of %s has wounded %s!"), ep_ptr->m_name, m_name_self.data());
(*project)(player_ptr, 0, 0, ep_ptr->m_ptr->fy, ep_ptr->m_ptr->fx, ep_ptr->get_damage, AttributeType::MISSILE, PROJECT_KILL, std::nullopt);
if (player_ptr->tim_eyeeye) {
set_tim_eyeeye(player_ptr, player_ptr->tim_eyeeye - 5, true);
}
}
- GAME_TEXT who_name[MAX_NLEN];
- who_name[0] = '\0';
+ std::string who_name;
if (who > 0) {
- monster_desc(player_ptr, who_name, &player_ptr->current_floor_ptr->m_list[who], MD_WRONGDOER_NAME);
+ who_name = monster_desc(player_ptr, &player_ptr->current_floor_ptr->m_list[who], MD_WRONGDOER_NAME);
}
- if (affect_player(who, player_ptr, who_name, effective_dist, y, x, dam, typ, flag, project)) {
+ if (affect_player(who, player_ptr, who_name.data(), effective_dist, y, x, dam, typ, flag, project)) {
res.notice = true;
res.affected_player = true;
}
}
if (player_ptr->riding) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
+ const auto m_name = monster_desc(player_ptr, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
if (rakubadam_m > 0) {
if (process_fall_off_horse(player_ptr, rakubadam_m, false)) {
- msg_format(_("%^sに振り落とされた!", "%^s has thrown you off!"), m_name);
+ msg_format(_("%^sに振り落とされた!", "%^s has thrown you off!"), m_name.data());
}
}
if (player_ptr->riding && rakubadam_p > 0) {
if (process_fall_off_horse(player_ptr, rakubadam_p, false)) {
- msg_format(_("%^sから落ちてしまった!", "You have fallen from %s."), m_name);
+ msg_format(_("%^sから落ちてしまった!", "You have fallen from %s."), m_name.data());
}
}
}
} else {
auto *m_ptr = &party_mon[current_monster];
auto &r_ref = m_ptr->get_real_r_ref();
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sとはぐれてしまった。", "You have lost sight of %s."), m_name);
+ msg_format(_("%sとはぐれてしまった。", "You have lost sight of %s."), monster_desc(player_ptr, m_ptr, 0).data());
if (record_named_pet && m_ptr->nickname) {
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOST_SIGHT, m_name);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOST_SIGHT, monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE).data());
}
if (r_ref.cur_num) {
for (MONSTER_IDX i = player_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[i];
- GAME_TEXT m_name[MAX_NLEN];
if (!m_ptr->is_valid() || !m_ptr->is_pet() || !m_ptr->nickname || (player_ptr->riding == i)) {
continue;
}
- monster_desc(player_ptr, m_name, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_MOVED, m_name);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_MOVED, monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE).data());
}
}
}
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sは消え去った!", "%^s disappears!"), m_name.data());
}
delete_monster_idx(player_ptr, i);
pet = true;
}
- GAME_TEXT pet_name[MAX_NLEN];
- monster_desc(player_ptr, pet_name, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
- fprintf(fff, "%s\n", pet_name);
+ const auto pet_name = monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
+ fprintf(fff, "%s\n", pet_name.data());
}
if (!pet_settings) {
}
MonsterEntity *m_ptr;
- GAME_TEXT pet_name[MAX_NLEN];
int t_friends = 0;
for (int i = player_ptr->current_floor_ptr->m_max - 1; i >= 1; i--) {
m_ptr = &player_ptr->current_floor_ptr->m_list[i];
}
t_friends++;
- monster_desc(player_ptr, pet_name, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
- fprintf(fff, "%s (%s)\n", pet_name, look_mon_desc(m_ptr, 0x00).data());
+ const auto pet_name = monster_desc(player_ptr, m_ptr, MD_ASSUME_VISIBLE | MD_INDEF_VISIBLE);
+ fprintf(fff, "%s (%s)\n", pet_name.data(), look_mon_desc(m_ptr, 0x00).data());
}
int show_upkeep = calculate_upkeep(player_ptr);
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
// Melee-post-process-type
return;
}
- monster_desc(player_ptr, mam_pp_ptr->m_name, mam_pp_ptr->m_ptr, MD_TRUE_NAME);
+ angband_strcpy(mam_pp_ptr->m_name, monster_desc(player_ptr, mam_pp_ptr->m_ptr, MD_TRUE_NAME).data(), sizeof(mam_pp_ptr->m_name));
if (!mam_pp_ptr->seen) {
player_ptr->current_floor_ptr->monster_noise = true;
return;
return;
}
- monster_desc(player_ptr, mam_pp_ptr->m_name, mam_pp_ptr->m_ptr, 0);
+ angband_strcpy(mam_pp_ptr->m_name, monster_desc(player_ptr, mam_pp_ptr->m_ptr, 0).data(), sizeof(mam_pp_ptr->m_name));
if (mam_pp_ptr->m_ptr->hp > mam_pp_ptr->m_ptr->maxhp / 3) {
mam_pp_ptr->dam = (mam_pp_ptr->dam + 1) / 2;
}
auto *m_ptr = &floor_ptr->m_list[m_idx];
mam_pp_type tmp_mam_pp;
mam_pp_type *mam_pp_ptr = initialize_mam_pp_type(player_ptr, &tmp_mam_pp, m_idx, dam, dead, fear, note, who);
- monster_desc(player_ptr, mam_pp_ptr->m_name, m_ptr, 0);
+ angband_strcpy(mam_pp_ptr->m_name, monster_desc(player_ptr, m_ptr, 0).data(), sizeof(mam_pp_ptr->m_name));
prepare_redraw(player_ptr, mam_pp_ptr);
(void)set_monster_csleep(player_ptr, m_idx, 0);
#include "system/player-type-definition.h"
#include "timed-effect/player-blindness.h"
#include "timed-effect/timed-effects.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include "world/world.h"
#ifdef JP
static void describe_melee_spell(PlayerType *player_ptr, melee_spell_type *ms_ptr)
{
/* Get the monster name (or "it") */
- monster_desc(player_ptr, ms_ptr->m_name, ms_ptr->m_ptr, 0x00);
+ angband_strcpy(ms_ptr->m_name, monster_desc(player_ptr, ms_ptr->m_ptr, 0x00).data(), sizeof(ms_ptr->m_name));
#ifdef JP
#else
/* Get the monster possessive ("his"/"her"/"its") */
- monster_desc(player_ptr, ms_ptr->m_poss, ms_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ angband_strcpy(ms_ptr->m_poss, monster_desc(player_ptr, ms_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE).data(), sizeof(ms_ptr->m_poss));
#endif
-
- /* Get the target's name (or "it") */
- GAME_TEXT t_name[160];
- monster_desc(player_ptr, t_name, ms_ptr->t_ptr, 0x00);
}
/*!
#include "system/monster-entity.h"
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
static void heal_monster_by_melee(PlayerType *player_ptr, mam_type *mam_ptr)
return false;
}
- monster_desc(player_ptr, mam_ptr->m_name, mam_ptr->m_ptr, 0);
- monster_desc(player_ptr, mam_ptr->t_name, mam_ptr->t_ptr, 0);
+ angband_strcpy(mam_ptr->m_name, monster_desc(player_ptr, mam_ptr->m_ptr, 0).data(), sizeof(mam_ptr->m_name));
+ angband_strcpy(mam_ptr->t_name, monster_desc(player_ptr, mam_ptr->t_ptr, 0).data(), sizeof(mam_ptr->t_name));
if (!mam_ptr->see_either && mam_ptr->known) {
player_ptr->current_floor_ptr->monster_noise = true;
}
*/
bool rodeo(PlayerType *player_ptr)
{
- GAME_TEXT m_name[MAX_NLEN];
- MonsterEntity *m_ptr;
- MonsterRaceInfo *r_ptr;
- int rlev;
-
if (player_ptr->riding) {
msg_print(_("今は乗馬中だ。", "You ARE riding."));
return false;
return true;
}
- m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
- r_ptr = &monraces_info[m_ptr->r_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sに乗った。", "You ride on %s."), m_name);
+ auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
+ auto *r_ptr = &monraces_info[m_ptr->r_idx];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sに乗った。", "You ride on %s."), m_name.data());
if (m_ptr->is_pet()) {
return true;
}
- rlev = r_ptr->level;
+ auto rlev = r_ptr->level;
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
rlev = rlev * 3 / 2;
if ((randint1(player_ptr->skill_exp[PlayerSkillKindType::RIDING] / 120 + player_ptr->lev * 2 / 3) > rlev) && one_in_(2) &&
!player_ptr->current_floor_ptr->inside_arena && !player_ptr->phase_out && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) &&
(rlev < player_ptr->lev * 3 / 2 + randint0(player_ptr->lev / 5))) {
- msg_format(_("%sを手なずけた。", "You tame %s."), m_name);
+ msg_format(_("%sを手なずけた。", "You tame %s."), m_name.data());
set_pet(player_ptr, m_ptr);
} else {
- msg_format(_("%sに振り落とされた!", "You have been thrown off by %s."), m_name);
+ msg_format(_("%sに振り落とされた!", "You have been thrown off by %s."), m_name.data());
process_fall_off_horse(player_ptr, 1, true);
/* 落馬処理に失敗してもとにかく乗馬解除 */
MONSTER_IDX m_idx = player_ptr->current_floor_ptr->grid_array[y][x].m_idx;
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
auto *r_ptr = &monraces_info[m_ptr->r_idx];
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (randint1(r_ptr->level * 3 / 2) > randint0(dam / 2) + dam / 2) {
- msg_format(_("%sは飛ばされなかった。", "%^s was not blown away."), m_name);
+ msg_format(_("%sは飛ばされなかった。", "%^s was not blown away."), m_name.data());
return true;
}
return true;
}
- msg_format(_("%sを吹き飛ばした!", "You blow %s away!"), m_name);
+ msg_format(_("%sを吹き飛ばした!", "You blow %s away!"), m_name.data());
player_ptr->current_floor_ptr->grid_array[oy][ox].m_idx = 0;
player_ptr->current_floor_ptr->grid_array[ty][tx].m_idx = m_idx;
m_ptr->fy = ty;
msg_format("There is %s in the way!", m_ptr->ml ? (tm_idx ? "another monster" : "a monster") : "someone");
#endif
} else if (!player_bold(player_ptr, ty, tx)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("素早く%sの懐に入り込んだ!", "You quickly jump in and attack %s!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("素早く%sの懐に入り込んだ!", "You quickly jump in and attack %s!"), m_name.data());
}
if (!player_bold(player_ptr, ty, tx)) {
return;
}
- char m_target_name[MAX_NLEN];
- monster_desc(player_ptr, m_target_name, monap_ptr->m_ptr, 0);
+ const auto m_target_name = monster_desc(player_ptr, monap_ptr->m_ptr, 0);
player_ptr->csp -= 7;
- msg_format(_("%^sに反撃した!", "You counterattacked %s!"), m_target_name);
+ msg_format(_("%^sに反撃した!", "You counterattacked %s!"), m_target_name.data());
do_cmd_attack(player_ptr, monap_ptr->m_ptr->fy, monap_ptr->m_ptr->fx, HISSATSU_COUNTER);
monap_ptr->fear = false;
player_ptr->redraw |= (PR_MANA);
#include "timed-effect/player-stun.h"
#include "timed-effect/timed-effects.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
/*!
auto *r_ptr = &monraces_info[this->m_ptr->r_idx];
this->rlev = ((r_ptr->level >= 1) ? r_ptr->level : 1);
- monster_desc(this->player_ptr, this->m_name, this->m_ptr, 0);
- monster_desc(this->player_ptr, this->ddesc, this->m_ptr, MD_WRONGDOER_NAME);
+ angband_strcpy(this->m_name, monster_desc(this->player_ptr, this->m_ptr, 0).data(), sizeof(this->m_name));
+ angband_strcpy(this->ddesc, monster_desc(this->player_ptr, this->m_ptr, MD_WRONGDOER_NAME).data(), sizeof(this->ddesc));
if (PlayerClass(this->player_ptr).samurai_stance_is(SamuraiStanceType::IAI)) {
msg_format(_("相手が襲いかかる前に素早く武器を振るった。", "You took sen, drew and cut in one motion before %s moved."), this->m_name);
if (do_cmd_attack(this->player_ptr, this->m_ptr->fy, this->m_ptr->fx, HISSATSU_IAI)) {
md_ptr->md_y = md_ptr->m_ptr->fy;
md_ptr->md_x = md_ptr->m_ptr->fx;
if (record_named_pet && md_ptr->m_ptr->is_pet() && md_ptr->m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, 3, m_name);
+ const auto m_name = monster_desc(player_ptr, md_ptr->m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, 3, m_name.data());
}
}
return;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_WRONGDOER_NAME);
- exe_write_diary(player_ptr, DIARY_ARENA, player_ptr->arena_number, m_name);
+ const auto m_name = monster_desc(player_ptr, md_ptr->m_ptr, MD_WRONGDOER_NAME);
+ exe_write_diary(player_ptr, DIARY_ARENA, player_ptr->arena_number, m_name.data());
}
static void drop_corpse(PlayerType *player_ptr, monster_death_type *md_ptr)
return;
}
- GAME_TEXT m_name[MAX_NLEN];
+ const auto m_name = m_ptr->ml ? monster_desc(player_ptr, m_ptr, 0) : std::string(_("それ", "It"));
char monmessage[1024];
- if (m_ptr->ml) {
- monster_desc(player_ptr, m_name, m_ptr, 0);
- } else {
- strcpy(m_name, _("それ", "It"));
- }
auto filename = get_speak_filename(m_ptr);
if (filename.empty()) {
}
if (get_rnd_line(filename.data(), enum2i(m_ptr->ap_r_idx), monmessage) == 0) {
- msg_format(_("%^s%s", "%^s %s"), m_name, monmessage);
+ msg_format(_("%^s%s", "%^s %s"), m_name.data(), monmessage);
}
}
for (auto it = g_ptr->o_idx_list.begin(); it != g_ptr->o_idx_list.end();) {
EnumClassFlagGroup<MonsterKindType> flg_monster_kind;
EnumClassFlagGroup<MonsterResistanceType> flgr;
- GAME_TEXT m_name[MAX_NLEN], o_name[MAX_NLEN];
+ GAME_TEXT o_name[MAX_NLEN];
OBJECT_IDX this_o_idx = *it++;
auto *o_ptr = &player_ptr->current_floor_ptr->o_list[this_o_idx];
auto flgs = object_flags(o_ptr);
describe_flavor(player_ptr, o_name, o_ptr, 0);
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_HIDDEN);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_HIDDEN);
update_object_flags(flgs, flg_monster_kind, flgr);
auto is_unpickable_object = o_ptr->is_artifact();
is_unpickable_object |= r_ptr->kind_flags.has_any_of(flg_monster_kind);
is_unpickable_object |= !r_ptr->resistance_flags.has_all_of(flgr) && r_ptr->resistance_flags.has_not(MonsterResistanceType::RESIST_ALL);
- monster_pickup_object(player_ptr, turn_flags_ptr, m_idx, o_ptr, is_unpickable_object, ny, nx, m_name, o_name, this_o_idx);
+ monster_pickup_object(player_ptr, turn_flags_ptr, m_idx, o_ptr, is_unpickable_object, ny, nx, m_name.data(), o_name, this_o_idx);
}
}
* @param m_ptr モンスターへの参照ポインタ
* @param m_name モンスター名称
*/
-static void escape_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, GAME_TEXT *m_name)
+static void escape_monster(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MonsterEntity *m_ptr, concptr m_name)
{
if (turn_flags_ptr->is_riding_mon) {
msg_format(_("%sはあなたの束縛から脱出した。", "%^s succeeded to escape from your restriction!"), m_name);
return false;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (turn_flags_ptr->is_riding_mon && riding_pinch < 2) {
msg_format(
- _("%sは傷の痛さの余りあなたの束縛から逃れようとしている。", "%^s seems to be in so much pain and tries to escape from your restriction."), m_name);
+ _("%sは傷の痛さの余りあなたの束縛から逃れようとしている。", "%^s seems to be in so much pain and tries to escape from your restriction."), m_name.data());
riding_pinch++;
disturb(player_ptr, true, true);
return false;
}
- escape_monster(player_ptr, turn_flags_ptr, m_ptr, m_name);
+ escape_monster(player_ptr, turn_flags_ptr, m_ptr, m_name.data());
QuestCompletionChecker(player_ptr, m_ptr).complete();
delete_monster_idx(player_ptr, m_idx);
return true;
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
if (see_m) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sは消え去った!", "%^s disappears!"), m_name.data());
}
monster_death(player_ptr, m_idx, false, AttributeType::NONE);
}
if (see_m) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_NONE);
- msg_format(_("%sは量子的効果を起こした!", "%^s produced a decoherence!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_NONE);
+ msg_format(_("%sは量子的効果を起こした!", "%^s produced a decoherence!"), m_name.data());
} else {
msg_print(_("量子的効果が起こった!", "A decoherence was produced!"));
}
}
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, md_ptr->m_ptr, MD_NONE);
if (notice) {
- msg_format(_("%sが再生した!", "The %s reproduced!"), m_name);
+ const auto m_name = monster_desc(player_ptr, md_ptr->m_ptr, MD_NONE);
+ msg_format(_("%sが再生した!", "The %s reproduced!"), m_name.data());
sound(SOUND_SUMMON);
}
}
}
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_COMPACT, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_COMPACT, m_name.data());
}
delete_monster_idx(player_ptr, i);
}
this->increase_kill_numbers();
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(this->player_ptr, m_name, m_ptr, MD_TRUE_NAME);
- this->death_amberites(m_name);
- this->dying_scream(m_name);
+ const auto m_name = monster_desc(this->player_ptr, m_ptr, MD_TRUE_NAME);
+ this->death_amberites(m_name.data());
+ this->dying_scream(m_name.data());
AvatarChanger ac(player_ptr, m_ptr);
ac.change_virtue();
if (r_ref.kind_flags.has(MonsterKindType::UNIQUE) && record_destroy_uniq) {
}
sound(SOUND_KILL);
- this->show_kill_message(note, m_name);
- this->show_bounty_message(m_name);
+ this->show_kill_message(note, m_name.data());
+ this->show_bounty_message(m_name.data());
monster_death(this->player_ptr, this->m_idx, true, this->attribute_flags);
this->summon_special_unique();
this->get_exp_from_mon(exp_mon, exp_mon->max_maxhp * 2);
monster_race_track(this->player_ptr, m_ptr->ap_r_idx);
}
-void MonsterDamageProcessor::death_amberites(GAME_TEXT *m_name)
+void MonsterDamageProcessor::death_amberites(concptr m_name)
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
const auto &r_ref = m_ptr->get_real_r_ref();
} while (--curses);
}
-void MonsterDamageProcessor::dying_scream(GAME_TEXT *m_name)
+void MonsterDamageProcessor::dying_scream(concptr m_name)
{
auto *m_ptr = &this->player_ptr->current_floor_ptr->m_list[this->m_idx];
const auto &r_ref = m_ptr->get_real_r_ref();
#endif
}
-void MonsterDamageProcessor::show_kill_message(concptr note, GAME_TEXT *m_name)
+void MonsterDamageProcessor::show_kill_message(concptr note, concptr m_name)
{
auto *floor_ptr = this->player_ptr->current_floor_ptr;
auto *m_ptr = &floor_ptr->m_list[this->m_idx];
msg_format(mes, m_name);
}
-void MonsterDamageProcessor::show_bounty_message(GAME_TEXT *m_name)
+void MonsterDamageProcessor::show_bounty_message(concptr m_name)
{
auto *floor_ptr = this->player_ptr->current_floor_ptr;
auto *m_ptr = &floor_ptr->m_list[this->m_idx];
bool check_combined_unique(const MonsterRaceId r_idx, std::vector<MonsterRaceId> *combined_uniques);
void death_combined_uniques(const MonsterRaceId r_idx, const combined_uniques &combined_uniques);
void increase_kill_numbers();
- void death_amberites(GAME_TEXT *m_name);
- void dying_scream(GAME_TEXT *m_name);
- void show_kill_message(concptr note, GAME_TEXT *m_name);
- void show_bounty_message(GAME_TEXT *m_name);
+ void death_amberites(concptr m_name);
+ void dying_scream(concptr m_name);
+ void show_kill_message(concptr note, concptr m_name);
+ void show_bounty_message(concptr m_name);
void set_redraw();
void summon_special_unique();
void add_monster_fear();
/*!
* @brief モンスターの呼称を作成する / Build a string describing a monster in some way.
- * @param desc 記述出力先の文字列参照ポインタ
* @param m_ptr モンスターの参照ポインタ
* @param mode 呼称オプション
+ * @return std::string 要求されたモンスターの説明を含む文字列
*/
-void monster_desc(PlayerType *player_ptr, char *desc, MonsterEntity *m_ptr, BIT_FLAGS mode)
+std::string monster_desc(PlayerType *player_ptr, MonsterEntity *m_ptr, BIT_FLAGS mode)
{
MonsterRaceInfo *r_ptr;
r_ptr = &monraces_info[m_ptr->ap_r_idx];
break;
}
- (void)strcpy(desc, res);
- return;
+ return res;
}
/* Handle visible monsters, "reflexive" request */
if ((mode & (MD_POSSESSIVE | MD_OBJECTIVE)) == (MD_POSSESSIVE | MD_OBJECTIVE)) {
/* The monster is visible, so use its gender */
if (r_ptr->flags1 & (RF1_FEMALE)) {
- strcpy(desc, _("彼女自身", "herself"));
+ return _("彼女自身", "herself");
} else if (r_ptr->flags1 & (RF1_MALE)) {
- strcpy(desc, _("彼自身", "himself"));
+ return _("彼自身", "himself");
} else {
- strcpy(desc, _("それ自身", "itself"));
+ return _("それ自身", "itself");
}
- return;
}
/* Handle all other visible monster requests */
/* Tanuki? */
+ std::string desc;
if (m_ptr->is_pet() && !m_ptr->is_original_ap()) {
#ifdef JP
char *t;
}
if (*t) {
*t = '\0';
- (void)sprintf(desc, "%s?』", buf);
+ desc = format("%s?』", buf);
} else {
- (void)sprintf(desc, "%s?", name);
+ desc = format("%s?", name);
}
#else
- (void)sprintf(desc, "%s?", name);
+ desc = format("%s?", name);
#endif
} else {
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE) && !(is_hallucinated && !(mode & MD_IGNORE_HALLU))) {
}
if (*t) {
*t = '\0';
- (void)sprintf(desc, "%s?』", buf);
+ desc = format("%s?』", buf);
} else {
- (void)sprintf(desc, "%s?", name);
+ desc = format("%s?", name);
}
#else
- (void)sprintf(desc, "%s?", name);
+ desc = format("%s?", name);
#endif
} else if (player_ptr->phase_out && !(player_ptr->riding && (&floor_ptr->m_list[player_ptr->riding] == m_ptr))) {
- (void)sprintf(desc, _("%sもどき", "fake %s"), name);
+ desc = format(_("%sもどき", "fake %s"), name);
} else {
- (void)strcpy(desc, name);
+ desc = name;
}
} else if (mode & MD_INDEF_VISIBLE) {
-#ifdef JP
- (void)strcpy(desc, "");
-#else
- (void)strcpy(desc, is_a_vowel(name[0]) ? "an " : "a ");
+#ifndef JP
+ desc = is_a_vowel(name[0]) ? "an " : "a ";
#endif
- (void)strcat(desc, name);
+ desc.append(name);
} else {
if (m_ptr->is_pet()) {
- (void)strcpy(desc, _("あなたの", "your "));
+ desc = _("あなたの", "your ");
} else {
- (void)strcpy(desc, _("", "the "));
+ desc = _("", "the ");
}
- (void)strcat(desc, name);
+ desc.append(name);
}
}
if (m_ptr->nickname) {
- std::string buf = _("「", " called ");
- buf.append(quark_str(m_ptr->nickname)).append(_("」", ""));
- strcat(desc, buf.data());
+ desc.append(_("「", " called ")).append(quark_str(m_ptr->nickname)).append(_("」", ""));
}
if (player_ptr->riding && (&floor_ptr->m_list[player_ptr->riding] == m_ptr)) {
- strcat(desc, _("(乗馬中)", "(riding)"));
+ desc.append(_("(乗馬中)", "(riding)"));
}
if ((mode & MD_IGNORE_HALLU) && m_ptr->mflag2.has(MonsterConstantFlagType::CHAMELEON)) {
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
- strcat(desc, _("(カメレオンの王)", "(Chameleon Lord)"));
+ desc.append(_("(カメレオンの王)", "(Chameleon Lord)"));
} else {
- strcat(desc, _("(カメレオン)", "(Chameleon)"));
+ desc.append(_("(カメレオン)", "(Chameleon)"));
}
}
if ((mode & MD_IGNORE_HALLU) && !m_ptr->is_original_ap()) {
- strcat(desc, format("(%s)", monraces_info[m_ptr->r_idx].name.data()).data());
+ desc.append("(").append(monraces_info[m_ptr->r_idx].name).append(")");
}
/* Handle the Possessive as a special afterthought */
if (mode & MD_POSSESSIVE) {
- (void)strcat(desc, _("の", "'s"));
+ desc.append(_("の", "'s"));
}
+
+ return desc;
}
/*!
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
auto *r_ptr = &monraces_info[m_ptr->r_idx];
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (dam == 0) {
if (m_ptr->ml) {
- msg_format(_("%^sはダメージを受けていない。", "%^s is unharmed."), m_name);
+ msg_format(_("%^sはダメージを受けていない。", "%^s is unharmed."), m_name.data());
}
return;
}
if (angband_strchr(",ejmvwQ", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name);
+ msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name);
+ msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは縮こまった。", "%^s squelches."), m_name);
+ msg_format(_("%^sは縮こまった。", "%^s squelches."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みに震えた。", "%^s quivers in pain."), m_name);
+ msg_format(_("%^sは痛みに震えた。", "%^s quivers in pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name);
+ msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name);
+ msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name.data());
}
return;
}
if (angband_strchr("l", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name);
+ msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name);
+ msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name);
+ msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みに震えた。", "%^s quivers in pain."), m_name);
+ msg_format(_("%^sは痛みに震えた。", "%^s quivers in pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name);
+ msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name);
+ msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name.data());
}
return;
}
if (angband_strchr("g#+<>", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは雷鳴のように吠えた。", "%^s roars thunderously."), m_name);
+ msg_format(_("%^sは雷鳴のように吠えた。", "%^s roars thunderously."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは苦しげに吠えた。", "%^s rumbles."), m_name);
+ msg_format(_("%^sは苦しげに吠えた。", "%^s rumbles."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sはうめいた。", "%^s grunts."), m_name);
+ msg_format(_("%^sはうめいた。", "%^s grunts."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name);
+ msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name.data());
} else {
- msg_format(_("%^sはくしゃくしゃになった。", "%^s crumples."), m_name);
+ msg_format(_("%^sはくしゃくしゃになった。", "%^s crumples."), m_name.data());
}
return;
}
if (angband_strchr("JMR", r_ptr->d_char) || !isalpha(r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name);
+ msg_format(_("%^sはほとんど気にとめていない。", "%^s barely notices."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはシーッと鳴いた。", "%^s hisses."), m_name);
+ msg_format(_("%^sはシーッと鳴いた。", "%^s hisses."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは怒って頭を上げた。", "%^s rears up in anger."), m_name);
+ msg_format(_("%^sは怒って頭を上げた。", "%^s rears up in anger."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは猛然と威嚇した。", "%^s hisses furiously."), m_name);
+ msg_format(_("%^sは猛然と威嚇した。", "%^s hisses furiously."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name);
+ msg_format(_("%^sは身もだえした。", "%^s writhes about."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛で身もだえした。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name);
+ msg_format(_("%^sはぐにゃぐにゃと痙攣した。", "%^s jerks limply."), m_name.data());
}
return;
}
if (angband_strchr("f", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sは吠えた。", "%^s roars."), m_name);
+ msg_format(_("%^sは吠えた。", "%^s roars."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは怒って吠えた。", "%^s growls angrily."), m_name);
+ msg_format(_("%^sは怒って吠えた。", "%^s growls angrily."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みでシーッと鳴いた。", "%^s hisses with pain."), m_name);
+ msg_format(_("%^sは痛みでシーッと鳴いた。", "%^s hisses with pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは痛みで弱々しく鳴いた。", "%^s mewls in pain."), m_name);
+ msg_format(_("%^sは痛みで弱々しく鳴いた。", "%^s mewls in pain."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛にうめいた。", "%^s hisses in agony."), m_name);
+ msg_format(_("%^sは苦痛にうめいた。", "%^s hisses in agony."), m_name.data());
} else {
- msg_format(_("%sは哀れな鳴き声を出した。", "%^s mewls pitifully."), m_name);
+ msg_format(_("%sは哀れな鳴き声を出した。", "%^s mewls pitifully."), m_name.data());
}
return;
}
if (angband_strchr("acFIKS", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはキーキー鳴いた。", "%^s chitters."), m_name);
+ msg_format(_("%^sはキーキー鳴いた。", "%^s chitters."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sはヨロヨロ逃げ回った。", "%^s scuttles about."), m_name);
+ msg_format(_("%^sはヨロヨロ逃げ回った。", "%^s scuttles about."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sはうるさく鳴いた。", "%^s twitters."), m_name);
+ msg_format(_("%^sはうるさく鳴いた。", "%^s twitters."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは痛みに痙攣した。", "%^s jerks in pain."), m_name);
+ msg_format(_("%^sは痛みに痙攣した。", "%^s jerks in pain."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛で痙攣した。", "%^s jerks in agony."), m_name);
+ msg_format(_("%^sは苦痛で痙攣した。", "%^s jerks in agony."), m_name.data());
} else {
- msg_format(_("%^sはピクピクひきつった。", "%^s twitches."), m_name);
+ msg_format(_("%^sはピクピクひきつった。", "%^s twitches."), m_name.data());
}
return;
}
if (angband_strchr("B", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sはさえずった。", "%^s chirps."), m_name);
+ msg_format(_("%^sはさえずった。", "%^s chirps."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはピーピー鳴いた。", "%^s twitters."), m_name);
+ msg_format(_("%^sはピーピー鳴いた。", "%^s twitters."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sはギャーギャー鳴いた。", "%^s squawks."), m_name);
+ msg_format(_("%^sはギャーギャー鳴いた。", "%^s squawks."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sはギャーギャー鳴きわめいた。", "%^s chatters."), m_name);
+ msg_format(_("%^sはギャーギャー鳴きわめいた。", "%^s chatters."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは苦しんだ。", "%^s jeers."), m_name);
+ msg_format(_("%^sは苦しんだ。", "%^s jeers."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sはのたうち回った。", "%^s flutters about."), m_name);
+ msg_format(_("%^sはのたうち回った。", "%^s flutters about."), m_name.data());
} else {
- msg_format(_("%^sはキーキーと鳴き叫んだ。", "%^s squeaks."), m_name);
+ msg_format(_("%^sはキーキーと鳴き叫んだ。", "%^s squeaks."), m_name.data());
}
return;
}
if (angband_strchr("duDLUW", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name);
+ msg_format(_("%^sはしり込みした。", "%^s flinches."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは痛みでシーッと鳴いた。", "%^s hisses in pain."), m_name);
+ msg_format(_("%^sは痛みでシーッと鳴いた。", "%^s hisses in pain."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みでうなった。", "%^s snarls with pain."), m_name);
+ msg_format(_("%^sは痛みでうなった。", "%^s snarls with pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは痛みに吠えた。", "%^s roars with pain."), m_name);
+ msg_format(_("%^sは痛みに吠えた。", "%^s roars with pain."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦しげに叫んだ。", "%^s gasps."), m_name);
+ msg_format(_("%^sは苦しげに叫んだ。", "%^s gasps."), m_name.data());
} else {
- msg_format(_("%^sは弱々しくうなった。", "%^s snarls feebly."), m_name);
+ msg_format(_("%^sは弱々しくうなった。", "%^s snarls feebly."), m_name.data());
}
return;
}
if (angband_strchr("s", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sはカタカタと笑った。", "%^s rattles."), m_name);
+ msg_format(_("%^sはカタカタと笑った。", "%^s rattles."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sはよろめいた。", "%^s stumbles."), m_name);
+ msg_format(_("%^sはよろめいた。", "%^s stumbles."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sはカタカタ言った。", "%^s rattles."), m_name);
+ msg_format(_("%^sはカタカタ言った。", "%^s rattles."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sはよろめいた。", "%^s staggers."), m_name);
+ msg_format(_("%^sはよろめいた。", "%^s staggers."), m_name.data());
} else {
- msg_format(_("%^sはガタガタ言った。", "%^s clatters."), m_name);
+ msg_format(_("%^sはガタガタ言った。", "%^s clatters."), m_name.data());
}
return;
}
if (angband_strchr("z", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sはうめいた。", "%^s groans."), m_name);
+ msg_format(_("%^sはうめいた。", "%^s groans."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%sは苦しげにうめいた。", "%^s moans."), m_name);
+ msg_format(_("%sは苦しげにうめいた。", "%^s moans."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name);
+ msg_format(_("%^sは躊躇した。", "%^s hesitates."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sはうなった。", "%^s grunts."), m_name);
+ msg_format(_("%^sはうなった。", "%^s grunts."), m_name.data());
} else {
- msg_format(_("%^sはよろめいた。", "%^s staggers."), m_name);
+ msg_format(_("%^sはよろめいた。", "%^s staggers."), m_name.data());
}
return;
}
if (angband_strchr("G", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%sはうめいた。", "%^s moans."), m_name);
+ msg_format(_("%sはうめいた。", "%^s moans."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは泣きわめいた。", "%^s wails."), m_name);
+ msg_format(_("%^sは泣きわめいた。", "%^s wails."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは吠えた。", "%^s howls."), m_name);
+ msg_format(_("%^sは吠えた。", "%^s howls."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%sは弱々しくうめいた。", "%^s moans softly."), m_name);
+ msg_format(_("%sは弱々しくうめいた。", "%^s moans softly."), m_name.data());
} else {
- msg_format(_("%^sはかすかにうめいた。", "%^s sighs."), m_name);
+ msg_format(_("%^sはかすかにうめいた。", "%^s sighs."), m_name.data());
}
return;
}
if (angband_strchr("CZ", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%^sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sは痛みでうなった。", "%^s snarls with pain."), m_name);
+ msg_format(_("%^sは痛みでうなった。", "%^s snarls with pain."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは痛みでキャンキャン吠えた。", "%^s yelps in pain."), m_name);
+ msg_format(_("%^sは痛みでキャンキャン吠えた。", "%^s yelps in pain."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みで鳴きわめいた。", "%^s howls in pain."), m_name);
+ msg_format(_("%^sは痛みで鳴きわめいた。", "%^s howls in pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは苦痛のあまり鳴きわめいた。", "%^s howls in agony."), m_name);
+ msg_format(_("%^sは苦痛のあまり鳴きわめいた。", "%^s howls in agony."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sは弱々しく吠えた。", "%^s yelps feebly."), m_name);
+ msg_format(_("%^sは弱々しく吠えた。", "%^s yelps feebly."), m_name.data());
}
return;
}
if (angband_strchr("Xbilqrt", r_ptr->d_char)) {
if (percentage > 95) {
- msg_format(_("%^sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name);
+ msg_format(_("%^sは攻撃を気にとめていない。", "%^s ignores the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sは痛みでうなった。", "%^s grunts with pain."), m_name);
+ msg_format(_("%^sは痛みでうなった。", "%^s grunts with pain."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは痛みで叫んだ。", "%^s squeals in pain."), m_name);
+ msg_format(_("%^sは痛みで叫んだ。", "%^s squeals in pain."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みで絶叫した。", "%^s shrieks in pain."), m_name);
+ msg_format(_("%^sは痛みで絶叫した。", "%^s shrieks in pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは苦痛のあまり絶叫した。", "%^s shrieks in agony."), m_name);
+ msg_format(_("%^sは苦痛のあまり絶叫した。", "%^s shrieks in agony."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sは弱々しく叫んだ。", "%^s cries out feebly."), m_name);
+ msg_format(_("%^sは弱々しく叫んだ。", "%^s cries out feebly."), m_name.data());
}
return;
}
if (percentage > 95) {
- msg_format(_("%^sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name);
+ msg_format(_("%^sは攻撃に肩をすくめた。", "%^s shrugs off the attack."), m_name.data());
} else if (percentage > 75) {
- msg_format(_("%^sは痛みでうなった。", "%^s grunts with pain."), m_name);
+ msg_format(_("%^sは痛みでうなった。", "%^s grunts with pain."), m_name.data());
} else if (percentage > 50) {
- msg_format(_("%^sは痛みで叫んだ。", "%^s cries out in pain."), m_name);
+ msg_format(_("%^sは痛みで叫んだ。", "%^s cries out in pain."), m_name.data());
} else if (percentage > 35) {
- msg_format(_("%^sは痛みで絶叫した。", "%^s screams in pain."), m_name);
+ msg_format(_("%^sは痛みで絶叫した。", "%^s screams in pain."), m_name.data());
} else if (percentage > 20) {
- msg_format(_("%^sは苦痛のあまり絶叫した。", "%^s screams in agony."), m_name);
+ msg_format(_("%^sは苦痛のあまり絶叫した。", "%^s screams in agony."), m_name.data());
} else if (percentage > 10) {
- msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name);
+ msg_format(_("%^sは苦痛でもだえ苦しんだ。", "%^s writhes in agony."), m_name.data());
} else {
- msg_format(_("%^sは弱々しく叫んだ。", "%^s cries out feebly."), m_name);
+ msg_format(_("%^sは弱々しく叫んだ。", "%^s cries out feebly."), m_name.data());
}
}
#pragma once
#include "system/angband.h"
+#include <string>
class MonsterEntity;
class PlayerType;
-void monster_desc(PlayerType *player_ptr, char *desc, MonsterEntity *m_ptr, BIT_FLAGS mode);
+std::string monster_desc(PlayerType *player_ptr, MonsterEntity *m_ptr, BIT_FLAGS mode);
void message_pain(PlayerType *player_ptr, MONSTER_IDX m_idx, int dam);
* @brief モンスターIDを取り、モンスター名をm_nameに代入する /
* @param player_ptr プレイヤーへの参照ポインタ
* @param m_idx モンスターID
- * @param m_name モンスター名を入力する配列
+ * @return std::string モンスター名
*/
-void monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx, char *m_name)
+std::string monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx)
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0x00);
+ return monster_desc(player_ptr, m_ptr, 0x00);
}
#pragma once
#include "system/angband.h"
+#include <string>
/*
* Bit flags for the *_can_enter() and monster_can_cross_terrain()
bool are_enemies(PlayerType *player_ptr, const MonsterEntity &m1_ref, const MonsterEntity &m2_ref);
bool monster_has_hostile_align(PlayerType *player_ptr, MonsterEntity *m_ptr, int pa_good, int pa_evil, MonsterRaceInfo *r_ptr);
bool is_original_ap_and_seen(PlayerType *player_ptr, const MonsterEntity *m_ptr);
-void monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx, char *m_name);
+std::string monster_name(PlayerType *player_ptr, MONSTER_IDX m_idx);
}
r_ptr = &monraces_info[r_idx];
- char old_m_name[MAX_NLEN];
- monster_desc(player_ptr, old_m_name, m_ptr, 0);
+ const auto old_m_name = monster_desc(player_ptr, m_ptr, 0);
if (!MonsterRace(r_idx).is_valid()) {
DEPTH level;
}
if (m_idx == player_ptr->riding) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("突然%sが変身した。", "Suddenly, %s transforms!"), old_m_name);
+ msg_format(_("突然%sが変身した。", "Suddenly, %s transforms!"), old_m_name.data());
if (!(r_ptr->flags7 & RF7_RIDING)) {
if (process_fall_off_horse(player_ptr, 0, true)) {
- msg_format(_("地面に落とされた。", "You have fallen from %s."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("地面に落とされた。", "You have fallen from %s."), m_name.data());
}
}
}
#ifdef JP
msg_print("地面に落とされた。");
#else
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
- msg_format("You have fallen from %s.", m_name);
+ const auto m_name = monster_desc(player_ptr, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
+ msg_format("You have fallen from %s.", m_name.data());
#endif
}
}
}
if (see_m) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sは消え去った!", "%^s disappears!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sは消え去った!", "%^s disappears!"), m_name.data());
}
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOSE_PARENT, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_LOSE_PARENT, m_name.data());
}
delete_monster_idx(player_ptr, m_idx);
(void)set_monster_csleep(player_ptr, m_idx, 0);
if (m_ptr->ml) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name.data());
}
if (is_original_ap_and_seen(player_ptr, m_ptr) && (r_ptr->r_wake < MAX_UCHAR)) {
return;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, m_ptr->is_pet() ? MD_ASSUME_VISIBLE : 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, m_ptr->is_pet() ? MD_ASSUME_VISIBLE : 0);
/* When riding a hostile alignment pet */
if (player_ptr->riding == m_idx) {
return;
}
- msg_format(_("%^sが突然暴れだした!", "%^s suddenly begins unruly!"), m_name);
+ msg_format(_("%^sが突然暴れだした!", "%^s suddenly begins unruly!"), m_name.data());
if (!process_fall_off_horse(player_ptr, 1, true)) {
return;
}
}
if (m_ptr->is_pet() || see_m) {
- msg_format(_("%^sは突然敵にまわった!", "%^s suddenly becomes hostile!"), m_name);
+ msg_format(_("%^sは突然敵にまわった!", "%^s suddenly becomes hostile!"), m_name.data());
}
set_hostile(player_ptr, m_ptr);
return true;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sは戦いを決意した!", "%^s turns to fight!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sは戦いを決意した!", "%^s turns to fight!"), m_name.data());
return true;
}
return;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sは怒った!", "%^s gets angry!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sは怒った!", "%^s gets angry!"), m_name.data());
set_hostile(player_ptr, m_ptr);
chg_virtue(player_ptr, V_INDIVIDUALISM, 1);
chg_virtue(player_ptr, V_HONOUR, -1);
}
if (vs_player) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
concptr mes;
switch (who) {
break;
}
- msg_format(mes, m_name);
+ msg_format(mes, m_name.data());
msg_print(nullptr);
}
/* Notice the "waking up" */
if (m_ptr->ml) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name.data());
}
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
/* Reduce by one, note if expires */
if (set_monster_fast(player_ptr, m_idx, m_ptr->get_remaining_acceleration() - 1)) {
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sはもう加速されていない。", "%^s is no longer fast."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sはもう加速されていない。", "%^s is no longer fast."), m_name.data());
}
}
/* Reduce by one, note if expires */
if (set_monster_slow(player_ptr, m_idx, m_ptr->get_remaining_deceleration() - 1)) {
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sはもう減速されていない。", "%^s is no longer slow."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sはもう減速されていない。", "%^s is no longer slow."), m_name.data());
}
}
if (set_monster_stunned(player_ptr, m_idx, (randint0(10000) <= rlev * rlev) ? 0 : (m_ptr->get_remaining_stun() - 1))) {
/* Message if visible */
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sは朦朧状態から立ち直った。", "%^s is no longer stunned."), m_name.data());
}
}
/* Message if visible */
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sは混乱から立ち直った。", "%^s is no longer confused."), m_name.data());
}
break;
/* Visual note */
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
#ifdef JP
#else
- char m_poss[80];
-
/* Acquire the monster possessive */
- monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ const auto m_poss = monster_desc(player_ptr, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
#endif
- monster_desc(player_ptr, m_name, m_ptr, 0);
#ifdef JP
- msg_format("%^sは勇気を取り戻した。", m_name);
+ msg_format("%^sは勇気を取り戻した。", m_name.data());
#else
- msg_format("%^s recovers %s courage.", m_name, m_poss);
+ msg_format("%^s recovers %s courage.", m_name.data(), m_poss.data());
#endif
}
}
if (is_seen(player_ptr, m_ptr)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sはもう無敵でない。", "%^s is no longer invulnerable."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sはもう無敵でない。", "%^s is no longer invulnerable."), m_name.data());
}
break;
void dispel_monster_status(PlayerType *player_ptr, MONSTER_IDX m_idx)
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (set_monster_invulner(player_ptr, m_idx, 0, true)) {
if (m_ptr->ml) {
- msg_format(_("%sはもう無敵ではない。", "%^s is no longer invulnerable."), m_name);
+ msg_format(_("%sはもう無敵ではない。", "%^s is no longer invulnerable."), m_name.data());
}
}
if (set_monster_fast(player_ptr, m_idx, 0)) {
if (m_ptr->ml) {
- msg_format(_("%sはもう加速されていない。", "%^s is no longer fast."), m_name);
+ msg_format(_("%sはもう加速されていない。", "%^s is no longer fast."), m_name.data());
}
}
if (set_monster_slow(player_ptr, m_idx, 0)) {
if (m_ptr->ml) {
- msg_format(_("%sはもう減速されていない。", "%^s is no longer slow."), m_name);
+ msg_format(_("%sはもう減速されていない。", "%^s is no longer slow."), m_name.data());
}
}
}
return;
}
- GAME_TEXT m_name[MAX_NLEN];
auto old_hp = m_ptr->hp;
auto old_maxhp = m_ptr->max_maxhp;
auto old_r_idx = m_ptr->r_idx;
/* Hack -- Reduce the racial counter of previous monster */
m_ptr->get_real_r_ref().cur_num--;
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
m_ptr->r_idx = r_ptr->next_r_idx;
/* Count the monsters on the level */
auto mes_evolution = _("%sは%sに進化した。", "%^s evolved into %s.");
auto mes_degeneration = _("%sは%sに退化した。", "%^s degenerated into %s.");
auto mes = randint0(2) == 0 ? mes_evolution : mes_degeneration;
- msg_format(mes, m_name, hallucinated_race->name.data());
+ msg_format(mes, m_name.data(), hallucinated_race->name.data());
} else {
- msg_format(_("%sは%sに進化した。", "%^s evolved into %s."), m_name, r_ptr->name.data());
+ msg_format(_("%sは%sに進化した。", "%^s evolved into %s."), m_name.data(), r_ptr->name.data());
}
}
#include "target/projection-path-calculator.h"
#include "timed-effect/player-blindness.h"
#include "timed-effect/timed-effects.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include "world/world.h"
#ifdef JP
static void describe_mspell_monster(PlayerType *player_ptr, msa_type *msa_ptr)
{
- monster_desc(player_ptr, msa_ptr->m_name, msa_ptr->m_ptr, 0x00);
-
-#ifdef JP
-#else
- /* Get the monster possessive ("his"/"her"/"its") */
- char m_poss[80];
- monster_desc(player_ptr, m_poss, msa_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
-#endif
+ angband_strcpy(msa_ptr->m_name, monster_desc(player_ptr, msa_ptr->m_ptr, 0x00).data(), sizeof(msa_ptr->m_name));
}
static bool switch_do_spell(PlayerType *player_ptr, msa_type *msa_ptr)
auto see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
auto mon_to_mon = (target_type == MONSTER_TO_MONSTER);
auto mon_to_player = (target_type == MONSTER_TO_PLAYER);
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
mspell_cast_msg_blind msg(_("%^sが何かをつぶやいた。", "%^s mumbles."), _("%^sが流れるような身振りをした。", "%^s gestures fluidly."),
_("%^sが%sに対して流れるような身振りをした。", "%^s gestures fluidly at %s."));
if (mon_to_player) {
msg_format(_("あなたは渦巻きに飲み込まれた。", "You are engulfed in a whirlpool."));
} else if (mon_to_mon && known && see_either && !player_ptr->effects()->blindness()->is_blind()) {
- msg_format(_("%^sは渦巻に飲み込まれた。", "%^s is engulfed in a whirlpool."), t_name);
+ msg_format(_("%^sは渦巻に飲み込まれた。", "%^s is engulfed in a whirlpool."), t_name.data());
}
return result;
}
auto known = monster_near_player(floor_ptr, m_idx, t_idx);
auto mon_to_mon = (target_type == MONSTER_TO_MONSTER);
auto mon_to_player = (target_type == MONSTER_TO_PLAYER);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
- if (!spell_RF4_BREATH_special_message(m_ptr->r_idx, GF_TYPE, m_name)) {
+ if (!spell_RF4_BREATH_special_message(m_ptr->r_idx, GF_TYPE, m_name.data())) {
if (player_ptr->effects()->blindness()->is_blind()) {
if (mon_to_player || (mon_to_mon && known && see_either)) {
- msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name);
+ msg_format(_("%^sが何かのブレスを吐いた。", "%^s breathes."), m_name.data());
}
} else {
if (mon_to_player) {
- msg_format(_("%^sが%^sのブレスを吐いた。", "%^s breathes %^s."), m_name, type_s.data());
+ msg_format(_("%^sが%^sのブレスを吐いた。", "%^s breathes %^s."), m_name.data(), type_s.data());
} else if (mon_to_mon && known && see_either) {
- _(msg_format("%^sが%^sに%^sのブレスを吐いた。", m_name, t_name, type_s.data()), msg_format("%^s breathes %^s at %^s.", m_name, type_s.data(), t_name));
+ _(msg_format("%^sが%^sに%^sのブレスを吐いた。", m_name.data(), t_name.data(), type_s.data()), msg_format("%^s breathes %^s at %^s.", m_name.data(), type_s.data(), t_name.data()));
}
}
}
static bool message_curse(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, std::string_view msg1, std::string_view msg2, std::string_view msg3, int target_type)
{
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
if (player_ptr->effects()->blindness()->is_blind()) {
- msg_format(msg1.data(), m_name);
+ msg_format(msg1.data(), m_name.data());
} else {
- msg_format(msg2.data(), m_name);
+ msg_format(msg2.data(), m_name.data());
}
} else if (target_type == MONSTER_TO_MONSTER) {
if (see_monster(player_ptr, m_idx)) {
- msg_format(msg3.data(), m_name, t_name);
+ msg_format(msg3.data(), m_name.data(), t_name.data());
} else {
player_ptr->current_floor_ptr->monster_noise = true;
}
auto res = MonsterSpellResult::make_valid();
res.learnable = target_type == MONSTER_TO_PLAYER;
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
-
mspell_cast_msg_blind msg(_("%^sが何かを力強くつぶやいた。", "%^s mumbles powerfully."),
_("%^sが魔力消去の呪文を念じた。", "%^s invokes a dispel magic."), _("%^sが%sに対して魔力消去の呪文を念じた。", "%^s invokes a dispel magic at %s."));
MonsterSpellResult spell_RF6_WORLD(PlayerType *player_ptr, MONSTER_IDX m_idx)
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
disturb(player_ptr, true, true);
(void)set_monster_timewalk(player_ptr, randint1(2) + 2, m_ptr->r_idx, true);
MonsterSpellResult spell_RF6_BLINK(PlayerType *player_ptr, MONSTER_IDX m_idx, int target_type, bool is_quantum_effect)
{
const auto res = MonsterSpellResult::make_valid();
-
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
if (!is_quantum_effect && SpellHex(player_ptr).check_hex_barrier(m_idx, HEX_ANTI_TELE)) {
if (see_monster(player_ptr, m_idx)) {
- msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。", "Magic barrier obstructs teleporting of %^s."), m_name);
+ msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。", "Magic barrier obstructs teleporting of %^s."), m_name.data());
}
return res;
}
if (see_monster(player_ptr, m_idx)) {
- msg_format(_("%^sが瞬時に消えた。", "%^s blinks away."), m_name);
+ msg_format(_("%^sが瞬時に消えた。", "%^s blinks away."), m_name.data());
}
teleport_away(player_ptr, m_idx, 10, TELEPORT_SPONTANEOUS);
MonsterSpellResult spell_RF6_TPORT(PlayerType *player_ptr, MONSTER_IDX m_idx, int target_type)
{
const auto res = MonsterSpellResult::make_valid();
-
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
}
if (SpellHex(player_ptr).check_hex_barrier(m_idx, HEX_ANTI_TELE)) {
if (see_monster(player_ptr, m_idx)) {
- msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。", "Magic barrier obstructs teleporting of %^s."), m_name);
+ msg_format(_("魔法のバリアが%^sのテレポートを邪魔した。", "Magic barrier obstructs teleporting of %^s."), m_name.data());
}
return res;
}
if (see_monster(player_ptr, m_idx)) {
- msg_format(_("%^sがテレポートした。", "%^s teleports away."), m_name);
+ msg_format(_("%^sがテレポートした。", "%^s teleports away."), m_name.data());
}
teleport_away_followable(player_ptr, m_idx);
}
bool resists_tele = false;
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (tr_ptr->resistance_flags.has(MonsterResistanceType::RESIST_TELEPORT)) {
if (tr_ptr->kind_flags.has(MonsterKindType::UNIQUE) || tr_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
tr_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
if (see_monster(player_ptr, t_idx)) {
- msg_format(_("%^sには効果がなかった。", "%^s is unaffected!"), t_name);
+ msg_format(_("%^sには効果がなかった。", "%^s is unaffected!"), t_name.data());
}
resists_tele = true;
} else if (tr_ptr->level > randint1(100)) {
tr_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
if (see_monster(player_ptr, t_idx)) {
- msg_format(_("%^sは耐性を持っている!", "%^s resists!"), t_name);
+ msg_format(_("%^sは耐性を持っている!", "%^s resists!"), t_name.data());
}
resists_tele = true;
}
}
bool resists_tele = false;
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (tr_ptr->resistance_flags.has(MonsterResistanceType::RESIST_TELEPORT)) {
if (tr_ptr->kind_flags.has(MonsterKindType::UNIQUE) || tr_ptr->resistance_flags.has(MonsterResistanceType::RESIST_ALL)) {
tr_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
if (see_monster(player_ptr, t_idx)) {
- msg_format(_("%^sには効果がなかった。", "%^s is unaffected!"), t_name);
+ msg_format(_("%^sには効果がなかった。", "%^s is unaffected!"), t_name.data());
}
resists_tele = true;
} else if (tr_ptr->level > randint1(100)) {
tr_ptr->r_resistance_flags.set(MonsterResistanceType::RESIST_TELEPORT);
}
if (see_monster(player_ptr, t_idx)) {
- msg_format(_("%^sは耐性を持っている!", "%^s resists!"), t_name);
+ msg_format(_("%^sは耐性を持っている!", "%^s resists!"), t_name.data());
}
resists_tele = true;
}
bool can_use_lite_area = false;
bool monster_to_monster = target_type == MONSTER_TO_MONSTER;
bool monster_to_player = target_type == MONSTER_TO_PLAYER;
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
const auto is_ninja = PlayerClass(player_ptr).equals(PlayerClassType::NINJA);
const auto is_living_monster = r_ptr->kind_flags.has_not(MonsterKindType::UNDEAD);
monspell_message(player_ptr, m_idx, t_idx, msg, target_type);
if (see_monster(player_ptr, t_idx) && monster_to_monster) {
- msg_format(msg_done, t_name);
+ msg_format(msg_done, t_name.data());
}
if (monster_to_player) {
*/
MonsterSpellResult spell_RF6_TRAPS(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx)
{
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
disturb(player_ptr, true, true);
if (player_ptr->effects()->blindness()->is_blind()) {
- msg_format(_("%^sが何かをつぶやいて邪悪に微笑んだ。", "%^s mumbles, and then cackles evilly."), m_name);
+ msg_format(_("%^sが何かをつぶやいて邪悪に微笑んだ。", "%^s mumbles, and then cackles evilly."), m_name.data());
} else {
- msg_format(_("%^sが呪文を唱えて邪悪に微笑んだ。", "%^s casts a spell and cackles evilly."), m_name);
+ msg_format(_("%^sが呪文を唱えて邪悪に微笑んだ。", "%^s casts a spell and cackles evilly."), m_name.data());
}
(void)trap_creation(player_ptr, y, x);
bool monster_to_player = (target_type == MONSTER_TO_PLAYER);
bool monster_to_monster = (target_type == MONSTER_TO_MONSTER);
bool direct = player_bold(player_ptr, y, x);
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
disturb(player_ptr, true, true);
if (one_in_(3) || !direct) {
dam += damroll(6, 8);
if (monster_to_player || (monster_to_monster && player_ptr->riding == t_idx)) {
- int get_damage = take_hit(player_ptr, DAMAGE_NOESCAPE, dam, m_name);
+ int get_damage = take_hit(player_ptr, DAMAGE_NOESCAPE, dam, m_name.data());
if (player_ptr->tim_eyeeye && get_damage > 0 && !player_ptr->is_dead) {
- GAME_TEXT m_name_self[MAX_MONSTER_NAME];
- monster_desc(player_ptr, m_name_self, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
- msg_format(_("攻撃が%s自身を傷つけた!", "The attack of %s has wounded %s!"), m_name, m_name_self);
+ const auto m_name_self = monster_desc(player_ptr, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
+ msg_format(_("攻撃が%s自身を傷つけた!", "The attack of %s has wounded %s!"), m_name.data(), m_name_self.data());
project(player_ptr, 0, 0, m_ptr->fy, m_ptr->fx, get_damage, AttributeType::MISSILE, PROJECT_KILL);
set_tim_eyeeye(player_ptr, player_ptr->tim_eyeeye - 5, true);
}
void spell_badstatus_message_to_player(PlayerType *player_ptr, MONSTER_IDX m_idx, const mspell_cast_msg_bad_status_to_player &msgs, bool resist,
bool saved_throw)
{
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
disturb(player_ptr, true, true);
if (player_ptr->effects()->blindness()->is_blind()) {
- msg_format(msgs.blind, m_name);
+ msg_format(msgs.blind, m_name.data());
} else {
- msg_format(msgs.not_blind, m_name);
+ msg_format(msgs.not_blind, m_name.data());
}
if (resist) {
bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
bool see_t = see_monster(player_ptr, t_idx);
bool known = monster_near_player(floor_ptr, m_idx, t_idx);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (known) {
if (see_either) {
- msg_format(msgs.default_msg, m_name, t_name);
+ msg_format(msgs.default_msg, m_name.data(), t_name.data());
} else {
floor_ptr->monster_noise = true;
}
if (resist) {
if (see_t) {
- msg_format(msgs.resist, t_name);
+ msg_format(msgs.resist, t_name.data());
}
} else if (saved_throw) {
if (see_t) {
- msg_format(msgs.saved_throw, t_name);
+ msg_format(msgs.saved_throw, t_name.data());
}
} else {
if (see_t) {
- msg_format(msgs.success, t_name);
+ msg_format(msgs.success, t_name.data());
}
}
*/
MonsterSpellResult spell_RF5_DRAIN_MANA(PlayerType *player_ptr, POSITION y, POSITION x, MONSTER_IDX m_idx, MONSTER_IDX t_idx, int target_type)
{
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
} else if (target_type == MONSTER_TO_MONSTER && see_monster(player_ptr, m_idx)) {
/* Basic message */
- msg_format(_("%^sは精神エネルギーを%sから吸いとった。", "%^s draws psychic energy from %s."), m_name, t_name);
+ msg_format(_("%^sは精神エネルギーを%sから吸いとった。", "%^s draws psychic energy from %s."), m_name.data(), t_name.data());
}
const auto dam = monspell_damage(player_ptr, MonsterAbilityType::DRAIN_MANA, m_idx, DAM_ROLL);
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
bool seen = (!player_ptr->effects()->blindness()->is_blind() && m_ptr->ml);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
if (!seen) {
msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
} else {
- msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
+ msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name.data());
}
} else if (target_type == MONSTER_TO_MONSTER && see_monster(player_ptr, m_idx)) {
- msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
+ msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name.data(), t_name.data());
}
const auto dam = monspell_damage(player_ptr, MonsterAbilityType::MIND_BLAST, m_idx, DAM_ROLL);
{
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
bool seen = (!player_ptr->effects()->blindness()->is_blind() && m_ptr->ml);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (target_type == MONSTER_TO_PLAYER) {
disturb(player_ptr, true, true);
if (!seen) {
msg_print(_("何かがあなたの精神に念を放っているようだ。", "You feel something focusing on your mind."));
} else {
- msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name);
+ msg_format(_("%^sがあなたの瞳をじっとにらんでいる。", "%^s gazes deep into your eyes."), m_name.data());
}
} else if (target_type == MONSTER_TO_MONSTER && see_monster(player_ptr, m_idx)) {
- msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name, t_name);
+ msg_format(_("%^sは%sをじっと睨んだ。", "%^s gazes intently at %s."), m_name.data(), t_name.data());
}
const auto dam = monspell_damage(player_ptr, MonsterAbilityType::BRAIN_SMASH, m_idx, DAM_ROLL);
}
concptr msg_default;
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
- if (streq(t_name, "it")) {
+ if (streq(t_name.data(), "it")) {
msg_default = _("%sは呪文を唱えて%sの目を焼き付かせた。", "%^s casts a spell, burning %ss eyes.");
} else {
msg_default = _("%sは呪文を唱えて%sの目を焼き付かせた。", "%^s casts a spell, burning %s's eyes.");
{
bool see_m = see_monster(player_ptr, m_idx);
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- char m_poss[10];
- monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto m_poss = monster_desc(player_ptr, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
mspell_cast_msg msg(_("%^sが何かをつぶやいた。", "%^s mumbles."),
- _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss)),
- _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss)),
- _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss)));
+ _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss.data())),
+ _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss.data())),
+ _("%^sが自分の体に念を送った。", format("%%^s concentrates on %s body.", m_poss.data())));
monspell_message_base(player_ptr, m_idx, t_idx, msg, player_ptr->effects()->blindness()->is_blind(), target_type);
if (set_monster_fast(player_ptr, m_idx, m_ptr->get_remaining_acceleration() + 100)) {
if (target_type == MONSTER_TO_PLAYER || (target_type == MONSTER_TO_MONSTER && see_m)) {
- msg_format(_("%^sの動きが速くなった。", "%^s starts moving faster."), m_name);
+ msg_format(_("%^sの動きが速くなった。", "%^s starts moving faster."), m_name.data());
}
}
}
concptr msg_default;
- GAME_TEXT t_name[MAX_NLEN];
- monster_name(player_ptr, t_idx, t_name);
+ const auto t_name = monster_name(player_ptr, t_idx);
- if (streq(t_name, "it")) {
+ if (streq(t_name.data(), "it")) {
msg_default = _("%sが%sの筋肉から力を吸いとった。", "%^s drains power from %ss muscles.");
} else {
msg_default = _("%sが%sの筋肉から力を吸いとった。", "%^s drains power from %s's muscles.");
DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
const auto is_blind = player_ptr->effects()->blindness()->is_blind();
const auto seen = (!is_blind && m_ptr->ml);
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- char m_poss[10];
- monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ const auto m_poss = monster_desc(player_ptr, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
msg.to_player_true = _("%^sが何かをつぶやいた。", "%^s mumbles.");
- msg.to_mons_true = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss));
- msg.to_player_false = _("%^sが自分の傷に集中した。", format("%%^s concentrates on %s wounds.", m_poss));
- msg.to_mons_false = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss));
+ msg.to_mons_true = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss.data()));
+ msg.to_player_false = _("%^sが自分の傷に集中した。", format("%%^s concentrates on %s wounds.", m_poss.data()));
+ msg.to_mons_false = _("%^sは自分の傷に念を集中した。", format("%%^s concentrates on %s wounds.", m_poss.data()));
monspell_message_base(player_ptr, m_idx, t_idx, msg, is_blind, target_type);
(void)set_monster_monfear(player_ptr, m_idx, 0);
if (see_monster(player_ptr, m_idx)) {
- msg_format(_("%^sは勇気を取り戻した。", format("%%^s recovers %s courage.", m_poss)), m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ msg_format(_("%^sは勇気を取り戻した。", format("%%^s recovers %s courage.", m_poss.data())), m_name.data());
}
return res;
if (m_ptr->ml) {
MonsterRaceId r_idx = m_ptr->r_idx;
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_NONE);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_NONE);
switch (r_idx) {
case MonsterRaceId::MARIO:
case MonsterRaceId::LUIGI:
- msg_format(_("%sはスターを取った!", "%^s got a star!"), m_name);
+ msg_format(_("%sはスターを取った!", "%^s got a star!"), m_name.data());
break;
case MonsterRaceId::DIAVOLO:
msg_print(_("『読める』………動きの『軌跡』が読める……", "'Read'......... I can read the 'trajectory' of movement..."));
break;
default:
- msg_format(_("%sの身体がまばゆく輝き始めた!", "The body of %^s began to shine dazzlingly!"), m_name);
+ msg_format(_("%sの身体がまばゆく輝き始めた!", "The body of %^s began to shine dazzlingly!"), m_name.data());
break;
}
}
MonsterSpellResult spell_RF6_FORGET(PlayerType *player_ptr, MONSTER_IDX m_idx)
{
DEPTH rlev = monster_level_idx(player_ptr->current_floor_ptr, m_idx);
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
disturb(player_ptr, true, true);
- msg_format(_("%^sがあなたの記憶を消去しようとしている。", "%^s tries to blank your mind."), m_name);
+ msg_format(_("%^sがあなたの記憶を消去しようとしている。", "%^s tries to blank your mind."), m_name.data());
if (randint0(100 + rlev / 2) < player_ptr->skill_sav) {
msg_print(_("しかし効力を跳ね返した!", "You resist the effects!"));
auto *floor_ptr = player_ptr->current_floor_ptr;
auto *m_ptr = &floor_ptr->m_list[m_idx];
DEPTH rlev = monster_level_idx(floor_ptr, m_idx);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN], m_poss[80];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
- monster_desc(player_ptr, m_poss, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto m_poss = monster_desc(player_ptr, m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE);
bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
bool known = monster_near_player(floor_ptr, m_idx, t_idx);
summon_disturb(player_ptr, target_type, known, see_either);
- decide_summon_kin_caster(player_ptr, m_idx, t_idx, target_type, m_name, m_poss, known);
+ decide_summon_kin_caster(player_ptr, m_idx, t_idx, target_type, m_name.data(), m_poss.data(), known);
int count = 0;
switch (m_ptr->r_idx) {
case MonsterRaceId::MENELDOR:
bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
bool known = monster_near_player(floor_ptr, m_idx, t_idx);
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
summon_disturb(player_ptr, target_type, known, see_either);
int count = 0;
bool see_either = see_monster(player_ptr, m_idx) || see_monster(player_ptr, t_idx);
bool mon_to_mon = (target_type == MONSTER_TO_MONSTER);
bool mon_to_player = (target_type == MONSTER_TO_PLAYER);
- GAME_TEXT m_name[MAX_NLEN], t_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
- monster_name(player_ptr, t_idx, t_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
+ const auto t_name = monster_name(player_ptr, t_idx);
if (mon_to_player || (mon_to_mon && known && see_either)) {
disturb(player_ptr, true, true);
if (msg_flag_aux) {
if (mon_to_player) {
- msg_format(msgs.to_player_true, m_name);
+ msg_format(msgs.to_player_true, m_name.data());
notice = true;
} else if (mon_to_mon && known && see_either) {
- msg_format(msgs.to_mons_true, m_name);
+ msg_format(msgs.to_mons_true, m_name.data());
notice = true;
}
} else {
if (mon_to_player) {
- msg_format(msgs.to_player_false, m_name);
+ msg_format(msgs.to_player_false, m_name.data());
notice = true;
} else if (mon_to_mon && known && see_either) {
- msg_format(msgs.to_mons_false, m_name, t_name);
+ msg_format(msgs.to_mons_false, m_name.data(), t_name.data());
notice = true;
}
}
BIT_FLAGS mode = 0L;
POSITION cy = y;
POSITION cx = x;
- GAME_TEXT m_name[MAX_NLEN];
- monster_name(player_ptr, m_idx, m_name);
+ const auto m_name = monster_name(player_ptr, m_idx);
if (player_ptr->effects()->blindness()->is_blind()) {
- msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name);
+ msg_format(_("%^sが何かをつぶやいた。", "%^s mumbles."), m_name.data());
} else {
- msg_format(_("%^sが魔法で幽鬼戦隊を召喚した!", "%^s magically summons rangers of Nazgul!"), m_name);
+ msg_format(_("%^sが魔法で幽鬼戦隊を召喚した!", "%^s magically summons rangers of Nazgul!"), m_name.data());
}
msg_print(nullptr);
#include "timed-effect/player-hallucination.h"
#include "timed-effect/timed-effects.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include "view/object-describer.h"
#include "wizard/wizard-messages.h"
auto *floor_ptr = this->player_ptr->current_floor_ptr;
this->g_ptr = &floor_ptr->grid_array[this->y][this->x];
this->m_ptr = &floor_ptr->m_list[this->g_ptr->m_idx];
- monster_name(this->player_ptr, this->g_ptr->m_idx, this->m_name);
+ angband_strcpy(this->m_name, monster_name(this->player_ptr, this->g_ptr->m_idx).data(), sizeof(this->m_name));
this->visible = this->m_ptr->ml;
this->hit_body = true;
this->attack_racial_power();
return;
}
- GAME_TEXT angry_m_name[MAX_NLEN];
- monster_desc(this->player_ptr, angry_m_name, angry_m_ptr, 0);
- msg_format(_("%sは怒った!", "%^s gets angry!"), angry_m_name);
+ const auto angry_m_name = monster_desc(this->player_ptr, angry_m_ptr, 0);
+ msg_format(_("%sは怒った!", "%^s gets angry!"), angry_m_name.data());
set_hostile(this->player_ptr, &floor_ptr->m_list[floor_ptr->grid_array[this->y][this->x].m_idx]);
this->do_drop = false;
}
return;
}
- char m_steed_name[MAX_NLEN];
- monster_desc(player_ptr, m_steed_name, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
+ const auto m_steed_name = monster_desc(player_ptr, &player_ptr->current_floor_ptr->m_list[player_ptr->riding], 0);
if (process_fall_off_horse(player_ptr, (monap_ptr->damage > 200) ? 200 : monap_ptr->damage, false)) {
- msg_format(_("%^sから落ちてしまった!", "You have fallen from %s."), m_steed_name);
+ msg_format(_("%^sから落ちてしまった!", "You have fallen from %s."), m_steed_name.data());
}
}
POSITION sy = 0;
POSITION sx = 0;
int sn = 0;
- GAME_TEXT m_name[MAX_NLEN];
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
auto *r_ptr = &monraces_info[m_ptr->r_idx];
}
if (!sn) {
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sから振り落とされそうになって、壁にぶつかった。", "You have nearly fallen from %s but bumped into a wall."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sから振り落とされそうになって、壁にぶつかった。", "You have nearly fallen from %s but bumped into a wall."), m_name.data());
take_hit(player_ptr, DAMAGE_NOESCAPE, r_ptr->level + 3, _("壁への衝突", "bumping into a wall"));
return false;
}
bool fall_dam = false;
if (player_ptr->levitation && !force) {
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sから落ちたが、空中でうまく体勢を立て直して着地した。", "You are thrown from %s but make a good landing."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sから落ちたが、空中でうまく体勢を立て直して着地した。", "You are thrown from %s but make a good landing."), m_name.data());
} else {
take_hit(player_ptr, DAMAGE_NOESCAPE, r_ptr->level + 3, _("落馬", "Falling from riding"));
fall_dam = true;
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
/*!
}
pa_ptr->m_ptr = &player_ptr->current_floor_ptr->m_list[pa_ptr->m_idx];
- monster_desc(player_ptr, pa_ptr->m_name, pa_ptr->m_ptr, 0);
+ angband_strcpy(pa_ptr->m_name, monster_desc(player_ptr, pa_ptr->m_ptr, 0).data(), sizeof(pa_ptr->m_name));
}
/*!
#include "timed-effect/player-cut.h"
#include "timed-effect/timed-effects.h"
#include "util/bit-flags-calculator.h"
+#include "util/string-processor.h"
#include "view/display-messages.h"
#include "wizard/wizard-messages.h"
#include "world/world.h"
/* Disturb the monster */
(void)set_monster_csleep(player_ptr, pa_ptr->m_idx, 0);
- monster_desc(player_ptr, pa_ptr->m_name, pa_ptr->m_ptr, 0);
+ angband_strcpy(pa_ptr->m_name, monster_desc(player_ptr, pa_ptr->m_ptr, 0).data(), sizeof(pa_ptr->m_name));
int chance = calc_attack_quality(player_ptr, pa_ptr);
auto *o_ptr = &player_ptr->inventory_list[enum2i(INVEN_MAIN_HAND) + pa_ptr->hand];
* @param r_ptr モンスター情報への参照ポインタ
* @todo m_nameとdescで何が違うのかは良く分からない
*/
-static void see_eldritch_horror(GAME_TEXT *m_name, MonsterRaceInfo *r_ptr)
+static void see_eldritch_horror(concptr m_name, MonsterRaceInfo *r_ptr)
{
concptr horror_message = decide_horror_message(r_ptr);
msg_format(_("%s%sの顔を見てしまった!", "You behold the %s visage of %s!"), horror_message, m_name);
int power = 100;
if (!necro && m_ptr) {
- GAME_TEXT m_name[MAX_NLEN];
auto *r_ptr = &monraces_info[m_ptr->ap_r_idx];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
power = r_ptr->level / 2;
- monster_desc(player_ptr, m_name, m_ptr, 0);
if (r_ptr->kind_flags.has_not(MonsterKindType::UNIQUE)) {
if (r_ptr->flags1 & RF1_FRIENDS) {
power /= 2;
}
if (player_ptr->effects()->hallucination()->is_hallucinated()) {
- msg_format(_("%s%sの顔を見てしまった!", "You behold the %s visage of %s!"), funny_desc[randint0(MAX_SAN_FUNNY)], m_name);
+ msg_format(_("%s%sの顔を見てしまった!", "You behold the %s visage of %s!"), funny_desc[randint0(MAX_SAN_FUNNY)], m_name.data());
if (one_in_(3)) {
msg_print(funny_comments[randint0(MAX_SAN_COMMENT)]);
BadStatusSetter(player_ptr).mod_hallucination(randint1(r_ptr->level));
return;
}
- see_eldritch_horror(m_name, r_ptr);
+ see_eldritch_horror(m_name.data(), r_ptr);
switch (PlayerRace(player_ptr).life()) {
case PlayerRaceLifeType::DEMON:
return;
return;
}
- GAME_TEXT mon_name[MAX_NLEN];
int aura_damage = damroll(1 + (r_ptr->level / 26), 1 + (r_ptr->level / 17));
- monster_desc(player_ptr, mon_name, m_ptr, MD_WRONGDOER_NAME);
msg_print(message);
- (*dam_func)(player_ptr, aura_damage, mon_name, true);
+ (*dam_func)(player_ptr, aura_damage, monster_desc(player_ptr, m_ptr, MD_WRONGDOER_NAME).data(), true);
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_aura_flags.set(aura_flag);
}
POSITION oy = y, ox = x;
MONSTER_IDX m_idx = player_ptr->current_floor_ptr->grid_array[y][x].m_idx;
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
for (i = 0; i < 5; i++) {
y += ddy[dir];
}
}
if ((ty != oy) || (tx != ox)) {
- msg_format(_("%sを吹き飛ばした!", "You blow %s away!"), m_name);
+ msg_format(_("%sを吹き飛ばした!", "You blow %s away!"), m_name.data());
player_ptr->current_floor_ptr->grid_array[oy][ox].m_idx = 0;
player_ptr->current_floor_ptr->grid_array[ty][tx].m_idx = m_idx;
m_ptr->fy = ty;
continue;
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sには効果がない!", "%s is unharmed!"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sには効果がない!", "%s is unharmed!"), m_name.data());
}
}
std::string killer;
if (m_idx) {
- GAME_TEXT m_name[MAX_NLEN];
auto *m_ptr = &floor_ptr->m_list[m_idx];
- monster_desc(player_ptr, m_name, m_ptr, MD_WRONGDOER_NAME);
- killer = format(_("%sの起こした地震", "an earthquake caused by %s"), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_WRONGDOER_NAME);
+ killer = format(_("%sの起こした地震", "an earthquake caused by %s"), m_name.data());
} else {
killer = _("地震", "an earthquake");
}
continue;
}
- GAME_TEXT m_name[MAX_NLEN];
sn = 0;
if (r_ptr->behavior_flags.has_not(MonsterBehaviorType::NEVER_MOVE)) {
for (DIRECTION i = 0; i < 8; i++) {
}
}
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (!ignore_unview || is_seen(player_ptr, m_ptr)) {
- msg_format(_("%^sは苦痛で泣きわめいた!", "%^s wails out in pain!"), m_name);
+ msg_format(_("%^sは苦痛で泣きわめいた!", "%^s wails out in pain!"), m_name.data());
}
damage = (sn ? damroll(4, 8) : (m_ptr->hp + 1));
m_ptr->hp -= damage;
if (m_ptr->hp < 0) {
if (!ignore_unview || is_seen(player_ptr, m_ptr)) {
- msg_format(_("%^sは岩石に埋もれてしまった!", "%^s is embedded in the rock!"), m_name);
+ msg_format(_("%^sは岩石に埋もれてしまった!", "%^s is embedded in the rock!"), m_name.data());
}
if (gg_ptr->m_idx) {
const auto &m_ref = floor_ptr->m_list[gg_ptr->m_idx];
if (record_named_pet && m_ref.is_pet() && m_ref.nickname) {
- char m2_name[MAX_NLEN];
-
- monster_desc(player_ptr, m2_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name);
+ const auto m2_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_EARTHQUAKE, m2_name.data());
}
}
bool fetch_monster(PlayerType *player_ptr)
{
- MonsterEntity *m_ptr;
- MONSTER_IDX m_idx;
- GAME_TEXT m_name[MAX_NLEN];
- POSITION ty, tx;
-
if (!target_set(player_ptr, TARGET_KILL)) {
return false;
}
- m_idx = player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
+ auto m_idx = player_ptr->current_floor_ptr->grid_array[target_row][target_col].m_idx;
if (!m_idx) {
return false;
}
return false;
}
- m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%sを引き戻した。", "You pull back %s."), m_name);
+ auto *m_ptr = &player_ptr->current_floor_ptr->m_list[m_idx];
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%sを引き戻した。", "You pull back %s."), m_name.data());
projection_path path_g(player_ptr, get_max_range(player_ptr), target_row, target_col, player_ptr->y, player_ptr->x, 0);
- ty = target_row, tx = target_col;
+ auto ty = target_row, tx = target_col;
for (const auto &[ny, nx] : path_g) {
auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[ny][nx];
}
} else {
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_DESTROY, m_name.data());
}
/* Delete the monster (if any) */
resist = true;
} else {
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_GENOCIDE, m_name.data());
}
delete_monster_idx(player_ptr, m_idx);
if (resist && player_cast) {
bool see_m = is_seen(player_ptr, m_ptr);
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (see_m) {
- msg_format(_("%^sには効果がなかった。", "%^s is unaffected."), m_name);
+ msg_format(_("%^sには効果がなかった。", "%^s is unaffected."), m_name.data());
}
if (m_ptr->is_asleep()) {
(void)set_monster_csleep(player_ptr, m_idx, 0);
if (m_ptr->ml) {
- msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
+ msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name.data());
}
}
if (m_ptr->is_friendly() && !m_ptr->is_pet()) {
if (see_m) {
- msg_format(_("%sは怒った!", "%^s gets angry!"), m_name);
+ msg_format(_("%sは怒った!", "%^s gets angry!"), m_name.data());
}
set_hostile(player_ptr, m_ptr);
if (m_ptr->is_asleep() && (randint0(100) < chance)) {
(void)set_monster_csleep(player_ptr, g_ptr->m_idx, 0);
if (m_ptr->ml) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name.data());
}
}
}
MonsterRaceInfo *r_ptr;
r_ptr = &monraces_info[m_ptr->r_idx];
if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0x00);
- msg_format(_("%sは爆破されるのを嫌がり、勝手に自分の世界へと帰った。", "%^s resists being blasted and runs away."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0x00);
+ msg_format(_("%sは爆破されるのを嫌がり、勝手に自分の世界へと帰った。", "%^s resists being blasted and runs away."), m_name.data());
delete_monster_idx(player_ptr, i);
continue;
}
project(player_ptr, i, 2 + (r_ptr->level / 20), m_ptr->fy, m_ptr->fx, dam, AttributeType::PLASMA, PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL);
if (record_named_pet && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_BLAST, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_BLAST, m_name.data());
}
delete_monster_idx(player_ptr, i);
lite_spot(player_ptr, m_ptr->fy, m_ptr->fx);
}
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_IGNORE_HALLU | MD_INDEF_HIDDEN);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_IGNORE_HALLU | MD_INDEF_HIDDEN);
concptr align;
if (r_ptr->kind_flags.has_all_of(alignment_mask)) {
}
const auto speed = m_ptr->get_temporary_speed() - STANDARD_SPEED;
- std::string result = format(_("%s ... 属性:%s HP:%d/%d AC:%d 速度:%s%d 経験:", "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:"), m_name, align, (int)m_ptr->hp,
+ std::string result = format(_("%s ... 属性:%s HP:%d/%d AC:%d 速度:%s%d 経験:", "%s ... align:%s HP:%d/%d AC:%d speed:%s%d exp:"), m_name.data(), align, (int)m_ptr->hp,
(int)m_ptr->maxhp, r_ptr->ac, (speed > 0) ? "+" : "", speed);
if (MonsterRace(r_ptr->next_r_idx).is_valid()) {
*/
void teleport_level(PlayerType *player_ptr, MONSTER_IDX m_idx)
{
- GAME_TEXT m_name[160];
+ std::string m_name;
auto see_m = true;
auto &floor_ref = *player_ptr->current_floor_ptr;
if (m_idx <= 0) {
- strcpy(m_name, _("あなた", "you"));
+ m_name = _("あなた", "you");
} else {
auto *m_ptr = &floor_ref.m_list[m_idx];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ m_name = monster_desc(player_ptr, m_ptr, 0);
see_m = is_seen(player_ptr, m_ptr);
}
if ((ironman_downward && (m_idx <= 0)) || (floor_ref.dun_level <= dungeons_info[player_ptr->dungeon_idx].mindepth)) {
#ifdef JP
if (see_m) {
- msg_format("%^sは床を突き破って沈んでいく。", m_name);
+ msg_format("%^sは床を突き破って沈んでいく。", m_name.data());
}
#else
if (see_m) {
- msg_format("%^s sink%s through the floor.", m_name, (m_idx <= 0) ? "" : "s");
+ msg_format("%^s sink%s through the floor.", m_name.data(), (m_idx <= 0) ? "" : "s");
}
#endif
if (m_idx <= 0) {
} else if (inside_quest(quest_number(player_ptr, floor_ref.dun_level)) || (floor_ref.dun_level >= dungeons_info[player_ptr->dungeon_idx].maxdepth)) {
#ifdef JP
if (see_m) {
- msg_format("%^sは天井を突き破って宙へ浮いていく。", m_name);
+ msg_format("%^sは天井を突き破って宙へ浮いていく。", m_name.data());
}
#else
if (see_m) {
- msg_format("%^s rise%s up through the ceiling.", m_name, (m_idx <= 0) ? "" : "s");
+ msg_format("%^s rise%s up through the ceiling.", m_name.data(), (m_idx <= 0) ? "" : "s");
}
#endif
} else if (go_up) {
#ifdef JP
if (see_m) {
- msg_format("%^sは天井を突き破って宙へ浮いていく。", m_name);
+ msg_format("%^sは天井を突き破って宙へ浮いていく。", m_name.data());
}
#else
if (see_m) {
- msg_format("%^s rise%s up through the ceiling.", m_name, (m_idx <= 0) ? "" : "s");
+ msg_format("%^s rise%s up through the ceiling.", m_name.data(), (m_idx <= 0) ? "" : "s");
}
#endif
} else {
#ifdef JP
if (see_m) {
- msg_format("%^sは床を突き破って沈んでいく。", m_name);
+ msg_format("%^sは床を突き破って沈んでいく。", m_name.data());
}
#else
if (see_m) {
- msg_format("%^s sink%s through the floor.", m_name, (m_idx <= 0) ? "" : "s");
+ msg_format("%^s sink%s through the floor.", m_name.data(), (m_idx <= 0) ? "" : "s");
}
#endif
auto *m_ptr = &floor_ref.m_list[m_idx];
QuestCompletionChecker(player_ptr, m_ptr).complete();
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- char m2_name[MAX_NLEN];
-
- monster_desc(player_ptr, m2_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_TELE_LEVEL, m2_name);
+ const auto m2_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_TELE_LEVEL, m2_name.data());
}
delete_monster_idx(player_ptr, m_idx);
MonsterRaceInfo *r_ptr;
m_ptr = &player_ptr->current_floor_ptr->m_list[target_m_idx];
r_ptr = &monraces_info[m_ptr->r_idx];
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sの足を指さした。", "You gesture at %^s's feet."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sの足を指さした。", "You gesture at %^s's feet."), m_name.data());
auto has_immune = r_ptr->resistance_flags.has_any_of(RFR_EFF_RESIST_NEXUS_MASK) || r_ptr->resistance_flags.has(MonsterResistanceType::RESIST_TELEPORT);
if (has_immune || (r_ptr->flags1 & RF1_QUESTOR) || (r_ptr->level + randint1(50) > player_ptr->lev + randint1(60))) {
- msg_format(_("しかし効果がなかった!", "%^s is unaffected!"), m_name);
+ msg_format(_("しかし効果がなかった!", "%^s is unaffected!"), m_name.data());
} else {
teleport_level(player_ptr, target_m_idx);
}
return false;
}
- GAME_TEXT m_name[MAX_NLEN];
for (POSITION y = 1; y < floor_ptr->height - 1; y++) {
for (POSITION x = 1; x < floor_ptr->width - 1; x++) {
auto *g_ptr = &floor_ptr->grid_array[y][x];
if (g_ptr->m_idx && m_ptr->is_asleep()) {
(void)set_monster_csleep(player_ptr, g_ptr->m_idx, 0);
if (m_ptr->ml) {
- monster_desc(player_ptr, m_name, m_ptr, 0);
- msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
+ msg_format(_("%^sが目を覚ました。", "%^s wakes up."), m_name.data());
}
}
#ifdef JP
msg_format("攻撃が%s自身を傷つけた!", this->monap_ptr->m_name);
#else
- GAME_TEXT m_name_self[MAX_MONSTER_NAME];
- monster_desc(this->player_ptr, m_name_self, this->monap_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
- msg_format("The attack of %s has wounded %s!", this->monap_ptr->m_name, m_name_self);
+ const auto m_name_self = monster_desc(this->player_ptr, this->monap_ptr->m_ptr, MD_PRON_VISIBLE | MD_POSSESSIVE | MD_OBJECTIVE);
+ msg_format("The attack of %s has wounded %s!", this->monap_ptr->m_name, m_name_self.data());
#endif
const auto y = this->monap_ptr->m_ptr->fy;
const auto x = this->monap_ptr->m_ptr->fx;
}
if (player_ptr->current_floor_ptr->grid_array[y][x].m_idx) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, &player_ptr->current_floor_ptr->m_list[player_ptr->current_floor_ptr->grid_array[y][x].m_idx], 0);
- msg_format(_("%sが邪魔だ!", "%^s is standing in your way."), m_name);
+ const auto m_name = monster_desc(player_ptr, &player_ptr->current_floor_ptr->m_list[player_ptr->current_floor_ptr->grid_array[y][x].m_idx], 0);
+ msg_format(_("%sが邪魔だ!", "%^s is standing in your way."), m_name.data());
PlayerEnergy(player_ptr).reset_player_turn();
return false;
}
static void describe_grid_monster(PlayerType *player_ptr, eg_type *eg_ptr)
{
bool recall = false;
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, eg_ptr->m_ptr, MD_INDEF_VISIBLE);
+ const auto m_name = monster_desc(player_ptr, eg_ptr->m_ptr, MD_INDEF_VISIBLE);
while (true) {
if (recall) {
if (describe_grid_lore(player_ptr, eg_ptr)) {
std::string acount = evaluate_monster_exp(player_ptr, eg_ptr->m_ptr);
const auto mon_desc = look_mon_desc(eg_ptr->m_ptr, 0x01);
#ifdef JP
- strnfmt(eg_ptr->out_val, sizeof(eg_ptr->out_val), "[%s]%s%s(%s)%s%s [r思 %s%s]", acount.data(), eg_ptr->s1, m_name, mon_desc.data(), eg_ptr->s2, eg_ptr->s3,
+ strnfmt(eg_ptr->out_val, sizeof(eg_ptr->out_val), "[%s]%s%s(%s)%s%s [r思 %s%s]", acount.data(), eg_ptr->s1, m_name.data(), mon_desc.data(), eg_ptr->s2, eg_ptr->s3,
eg_ptr->x_info, eg_ptr->info);
#else
- strnfmt(eg_ptr->out_val, sizeof(eg_ptr->out_val), "[%s]%s%s%s%s(%s) [r, %s%s]", acount.data(), eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, m_name, mon_desc.data(),
+ strnfmt(eg_ptr->out_val, sizeof(eg_ptr->out_val), "[%s]%s%s%s%s(%s) [r, %s%s]", acount.data(), eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, m_name.data(), mon_desc.data(),
eg_ptr->x_info, eg_ptr->info);
#endif
prt(eg_ptr->out_val, 0, 0);
if (is_confused) {
msg_print(_("あなたは混乱している。", "You are confused."));
} else {
- GAME_TEXT m_name[MAX_NLEN];
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
-
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (m_ptr->is_confused()) {
- msg_format(_("%sは混乱している。", "%^s is confused."), m_name);
+ msg_format(_("%sは混乱している。", "%^s is confused."), m_name.data());
} else {
- msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name);
+ msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name.data());
}
}
}
if (is_confused) {
msg_print(_("あなたは混乱している。", "You are confused."));
} else {
- GAME_TEXT m_name[MAX_NLEN];
auto *m_ptr = &player_ptr->current_floor_ptr->m_list[player_ptr->riding];
- monster_desc(player_ptr, m_name, m_ptr, 0);
+ const auto m_name = monster_desc(player_ptr, m_ptr, 0);
if (m_ptr->is_confused()) {
- msg_format(_("%sは混乱している。", "%^s is confused."), m_name);
+ msg_format(_("%sは混乱している。", "%^s is confused."), m_name.data());
} else {
- msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name);
+ msg_format(_("%sは思い通りに動いてくれない。", "You cannot control %s."), m_name.data());
}
}
}
}
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
-
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name.data());
}
delete_monster_idx(player_ptr, i);
}
if (record_named_pet && m_ptr->is_pet() && m_ptr->nickname) {
- GAME_TEXT m_name[MAX_NLEN];
- monster_desc(player_ptr, m_name, m_ptr, MD_INDEF_VISIBLE);
- exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name);
+ const auto m_name = monster_desc(player_ptr, m_ptr, MD_INDEF_VISIBLE);
+ exe_write_diary(player_ptr, DIARY_NAMED_PET, RECORD_NAMED_PET_WIZ_ZAP, m_name.data());
}
delete_monster_idx(player_ptr, i);
void WorldTurnProcessor::process_monster_arena_winner(int win_m_idx)
{
- GAME_TEXT m_name[MAX_NLEN];
auto *wm_ptr = &this->player_ptr->current_floor_ptr->m_list[win_m_idx];
- monster_desc(this->player_ptr, m_name, wm_ptr, 0);
- msg_format(_("%sが勝利した!", "%s won!"), m_name);
+ const auto m_name = monster_desc(this->player_ptr, wm_ptr, 0);
+ msg_format(_("%sが勝利した!", "%s won!"), m_name.data());
msg_print(nullptr);
if (win_m_idx == (sel_monster + 1)) {