#include "system/item-entity.h"
#include "system/player-type-definition.h"
#include "util/angband-files.h"
+#include "util/finalizer.h"
#include "view/display-messages.h"
#include "wizard/artifact-analyzer.h"
#include "wizard/fixed-artifacts-spoiler.h"
*/
static void spoiler_print_randart(ItemEntity *o_ptr, obj_desc_list *art_ptr)
{
+ const auto finalizer = util::make_finalizer([art_ptr]() {
+ fprintf(spoiler_file, "%s%s\n\n", spoiler_indent, art_ptr->misc_desc);
+ });
const auto *pval_ptr = &art_ptr->pval_info;
- fprintf(spoiler_file, "%s\n", art_ptr->description);
+ fprintf(spoiler_file, "%s\n", art_ptr->description.data());
if (!o_ptr->is_fully_known()) {
fprintf(spoiler_file, _("%s不明\n", "%sUnknown\n"), spoiler_indent);
- } else {
- if (!pval_ptr->pval_desc.empty()) {
- std::stringstream ss;
- ss << pval_ptr->pval_desc << _("の修正:", " to");
- spoiler_outlist(ss.str(), pval_ptr->pval_affects, item_separator);
- }
+ return;
+ }
- spoiler_outlist(_("対:", "Slay"), art_ptr->slays, item_separator);
- spoiler_outlist(_("武器属性:", ""), art_ptr->brands, list_separator);
- spoiler_outlist(_("免疫:", "Immunity to"), art_ptr->immunities, item_separator);
- spoiler_outlist(_("耐性:", "Resist"), art_ptr->resistances, item_separator);
- spoiler_outlist(_("維持:", "Sustain"), art_ptr->sustenances, item_separator);
- spoiler_outlist("", art_ptr->misc_magic, list_separator);
- if (art_ptr->activation) {
- fprintf(spoiler_file, _("%s発動: %s\n", "%sActivates for %s\n"), spoiler_indent, art_ptr->activation);
- }
+ if (!pval_ptr->pval_desc.empty()) {
+ std::stringstream ss;
+ ss << pval_ptr->pval_desc << _("の修正:", " to");
+ spoiler_outlist(ss.str(), pval_ptr->pval_affects, item_separator);
}
- fprintf(spoiler_file, "%s%s\n\n", spoiler_indent, art_ptr->misc_desc);
+ spoiler_outlist(_("対:", "Slay"), art_ptr->slays, item_separator);
+ spoiler_outlist(_("武器属性:", ""), art_ptr->brands, list_separator);
+ spoiler_outlist(_("免疫:", "Immunity to"), art_ptr->immunities, item_separator);
+ spoiler_outlist(_("耐性:", "Resist"), art_ptr->resistances, item_separator);
+ spoiler_outlist(_("維持:", "Sustain"), art_ptr->sustenances, item_separator);
+ spoiler_outlist("", art_ptr->misc_magic, list_separator);
+ if (art_ptr->activation) {
+ fprintf(spoiler_file, _("%s発動: %s\n", "%sActivates for %s\n"), spoiler_indent, art_ptr->activation);
+ }
}
/*!
*/
void object_analyze(PlayerType *player_ptr, ItemEntity *o_ptr, obj_desc_list *desc_ptr)
{
- angband_strcpy(desc_ptr->description, analyze_general(player_ptr, o_ptr), MAX_NLEN);
+ desc_ptr->description = analyze_general(player_ptr, o_ptr);
desc_ptr->pval_info.analyze(*o_ptr);
desc_ptr->brands = analyze_brand(o_ptr);
desc_ptr->slays = analyze_slay(o_ptr);
*/
void random_artifact_analyze(PlayerType *player_ptr, ItemEntity *o_ptr, obj_desc_list *desc_ptr)
{
- angband_strcpy(desc_ptr->description, analyze_general(player_ptr, o_ptr), MAX_NLEN);
+ desc_ptr->description = analyze_general(player_ptr, o_ptr);
desc_ptr->pval_info.analyze(*o_ptr);
desc_ptr->brands = analyze_brand(o_ptr);
desc_ptr->slays = analyze_slay(o_ptr);