1 #include "monster-floor/monster-death-util.h"
2 #include "monster-race/monster-race.h"
3 #include "monster-race/race-flags1.h"
4 #include "monster-race/race-indice-types.h"
5 #include "monster/monster-info.h"
6 #include "monster/smart-learn-types.h"
7 #include "system/floor-type-definition.h"
8 #include "system/monster-type-definition.h"
11 * @brief
\83\82\83\93\83X
\83^
\81[
\82ð
\93|
\82µ
\82½
\8dÛ
\82Ì
\8dà
\95ósval
\82ð
\95Ô
\82·
12 * @param r_idx
\93|
\82µ
\82½
\83\82\83\93\83X
\83^
\81[
\82Ì
\8eí
\91°ID
13 * @return
\8dà
\95ó
\82Ìsval
15 * Hack -- Return the "automatic coin type" of a monster race
16 * Used to allocate proper treasure when "Creeping coins" die
17 * Note the use of actual "monster names"
19 static OBJECT_SUBTYPE_VALUE get_coin_type(MONRACE_IDX r_idx)
22 case MON_COPPER_COINS:
24 case MON_SILVER_COINS:
28 case MON_MITHRIL_COINS:
29 case MON_MITHRIL_GOLEM:
31 case MON_ADAMANT_COINS:
38 monster_death_type *initialize_monster_death_type(player_type *player_ptr, monster_death_type *md_ptr, MONSTER_IDX m_idx, bool drop_item)
40 floor_type *floor_ptr = player_ptr->current_floor_ptr;
41 md_ptr->m_idx = m_idx;
42 md_ptr->m_ptr = &floor_ptr->m_list[m_idx];
43 md_ptr->r_ptr = &r_info[md_ptr->m_ptr->r_idx];
44 md_ptr->do_gold = (!(md_ptr->r_ptr->flags1 & RF1_ONLY_ITEM));
45 md_ptr->do_item = (!(md_ptr->r_ptr->flags1 & RF1_ONLY_GOLD));
46 md_ptr->cloned = (md_ptr->m_ptr->smart & SM_CLONED) ? TRUE : FALSE;
47 md_ptr->force_coin = get_coin_type(md_ptr->m_ptr->r_idx);
48 md_ptr->drop_chosen_item = drop_item && !md_ptr->cloned && !floor_ptr->inside_arena && !player_ptr->phase_out && !is_pet(md_ptr->m_ptr);