- case MON_EXTRA_LARGE_AQUA_SECOND: {
- if (floor_ptr->inside_arena || player_ptr->phase_out)
- break;
-
- bool notice = FALSE;
- const int popped_bubbles = 4;
- for (int i = 0; i < popped_bubbles; i++) {
- POSITION wy = md_ptr->md_y;
- POSITION wx = md_ptr->md_x;
- bool pet = is_pet(md_ptr->m_ptr);
- BIT_FLAGS mode = pet ? PM_FORCE_PET : PM_NONE;
- MONSTER_IDX smaller_bubblle = md_ptr->m_ptr->r_idx - 1;
- if (summon_named_creature(player_ptr, (pet ? -1 : md_ptr->m_idx), wy, wx, smaller_bubblle, mode) && player_can_see_bold(player_ptr, wy, wx))
- notice = TRUE;
- }
-
- if (notice)
- msg_print(_("\96A\82ª\92e\82¯\82½\81I", "The bubble pops!"));
-
- break;
- }
- case MON_TOTEM_MOAI: {
- if (floor_ptr->inside_arena || player_ptr->phase_out || one_in_(8))
- break;
-
- POSITION wy = md_ptr->md_y;
- POSITION wx = md_ptr->md_x;
- int attempts = 100;
- bool pet = is_pet(md_ptr->m_ptr);
- do {
- scatter(player_ptr, &wy, &wx, md_ptr->md_y, md_ptr->md_x, 20, 0);
- } while (!(in_bounds(floor_ptr, wy, wx) && is_cave_empty_bold2(player_ptr, wy, wx)) && --attempts);
-
- if (attempts <= 0)
- break;
-
- BIT_FLAGS mode = pet ? PM_FORCE_PET : PM_NONE;
- if (summon_named_creature(player_ptr, (pet ? -1 : md_ptr->m_idx), wy, wx, MON_TOTEM_MOAI, mode) && player_can_see_bold(player_ptr, wy, wx))
- msg_print(_("\90V\82½\82È\83\82\83A\83C\82ª\8c»\82ê\82½\81I", "A new moai steps forth!"));
-
- break;
- }
- default: {
- if (!md_ptr->drop_chosen_item)
- break;
-
- switch (md_ptr->r_ptr->d_char) {
- case '(': {
- if (floor_ptr->dun_level <= 0)
- break;
-
- object_type forge;
- object_type *q_ptr = &forge;
- object_wipe(q_ptr);
- get_obj_num_hook = kind_is_cloak;
- make_object(player_ptr, q_ptr, md_ptr->mo_mode);
- (void)drop_near(player_ptr, q_ptr, -1, md_ptr->md_y, md_ptr->md_x);
- break;
- }
- case '/': {
- if (floor_ptr->dun_level <= 4)
- break;
-
- object_type forge;
- object_type *q_ptr = &forge;
- object_wipe(q_ptr);
- get_obj_num_hook = kind_is_polearm;
- make_object(player_ptr, q_ptr, md_ptr->mo_mode);
- (void)drop_near(player_ptr, q_ptr, -1, md_ptr->md_y, md_ptr->md_x);
- break;
- }
- case '[': {
- if (floor_ptr->dun_level <= 19)
- break;
-
- object_type forge;
- object_type *q_ptr = &forge;
- object_wipe(q_ptr);
- get_obj_num_hook = kind_is_armor;
- make_object(player_ptr, q_ptr, md_ptr->mo_mode);
- (void)drop_near(player_ptr, q_ptr, -1, md_ptr->md_y, md_ptr->md_x);
- break;
- }
- case '\\': {
- if (floor_ptr->dun_level <= 4)
- break;
-
- object_type forge;
- object_type *q_ptr = &forge;
- object_wipe(q_ptr);
- get_obj_num_hook = kind_is_hafted;
- make_object(player_ptr, q_ptr, md_ptr->mo_mode);
- (void)drop_near(player_ptr, q_ptr, -1, md_ptr->md_y, md_ptr->md_x);
- break;
- }
- case '|': {
- if (md_ptr->m_ptr->r_idx == MON_STORMBRINGER)
- break;
-
- object_type forge;
- object_type *q_ptr = &forge;
- object_wipe(q_ptr);
- get_obj_num_hook = kind_is_sword;
- make_object(player_ptr, q_ptr, md_ptr->mo_mode);
- (void)drop_near(player_ptr, q_ptr, -1, md_ptr->md_y, md_ptr->md_x);
- break;
- }
- }
- }