std::make_tuple('m', _("魔法の地図", "Magic mapping")),
std::make_tuple('n', _("指定モンスター生成", "Summon target monster")),
std::make_tuple('N', _("指定モンスターをペットとして生成", "Summon target monster as pet")),
+ std::make_tuple(KTRL('N'), _("指定モンスターをクローンとして生成", "Summon target monster as clone")),
std::make_tuple('o', _("オブジェクトの能力変更", "Modift object abilities")),
std::make_tuple('O', _("オプション設定をダンプ", "Dump current options")),
std::make_tuple('p', _("ショート・テレポート", "Phase door")),
case 'N':
wiz_summon_pet(player_ptr, i2enum<MonsterRaceId>(command_arg));
return true;
+ case KTRL('N'):
+ wiz_summon_clone(player_ptr, i2enum<MonsterRaceId>(command_arg));
+ return true;
case 'o':
wiz_modify_item(player_ptr);
return true;
}
/*!
+ * @brief モンスターを種族IDを指定してクローン召喚(口寄せ)する /
+ * Summon a creature of the specified type
+ * @param r_idx モンスター種族ID(回数指定コマンド'0'で指定した回数がIDになる)
+ */
+void wiz_summon_clone(PlayerType *player_ptr, MonsterRaceId r_idx)
+{
+ if (!MonsterRace(r_idx).is_valid()) {
+ const auto new_monrace_id = input_numerics("MonsterID", 1, monraces_info.size() - 1, MonsterRaceId::FILTHY_URCHIN);
+ if (!new_monrace_id) {
+ return;
+ }
+
+ r_idx = *new_monrace_id;
+ }
+
+ (void)summon_named_creature(player_ptr, 0, player_ptr->y, player_ptr->x, r_idx, PM_ALLOW_SLEEP | PM_ALLOW_GROUP | PM_CLONE);
+}
+
+/*!
* @brief ターゲットを指定して指定ダメージ・指定属性・半径0のボールを放つ
* @param dam ダメージ量
* @param effect_idx 属性ID
void wiz_summon_random_monster(PlayerType *player_ptr, int num);
void wiz_summon_specific_monster(PlayerType *player_ptr, MonsterRaceId r_idx);
void wiz_summon_pet(PlayerType *player_ptr, MonsterRaceId r_idx);
+void wiz_summon_clone(PlayerType *player_ptr, MonsterRaceId r_idx);
void wiz_kill_target(PlayerType *player_ptr, int initial_dam = 1000000, AttributeType effect_idx = AttributeType::DEBUG, const bool self = false);