*/
int calculate_upkeep(void)
{
- s32b old_friend_align = friend_align;
MONSTER_IDX m_idx;
bool have_a_unique = FALSE;
s32b total_friend_levels = 0;
total_friends = 0;
- friend_align = 0;
for (m_idx = m_max - 1; m_idx >= 1; m_idx--)
{
else
total_friend_levels += r_ptr->level;
- /* Determine pet alignment */
- if (r_ptr->flags3 & RF3_GOOD) friend_align += r_ptr->level;
- if (r_ptr->flags3 & RF3_EVIL) friend_align -= r_ptr->level;
}
}
- if (old_friend_align != friend_align) p_ptr->update |= (PU_BONUS);
+
if (total_friends)
{
int upkeep_factor;
/*!
-* @brief ペットの善悪属性に応じた維持コストの途中計算処理
-* @param m_ptr 計算基準となるモンスターの構造体参照ポインタ
-* @param inc m_ptrで指定したモンスターを維持コスト計算に加えるならTRUE、外すならFALSEを指定
-* @return なし
-*/
-void check_pets_num_and_align(monster_type *m_ptr, bool inc)
-{
- s32b old_friend_align = friend_align;
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
-
- if (inc)
- {
- total_friends++;
- if (r_ptr->flags3 & RF3_GOOD) friend_align += r_ptr->level;
- if (r_ptr->flags3 & RF3_EVIL) friend_align -= r_ptr->level;
- }
- else
- {
- total_friends--;
- if (r_ptr->flags3 & RF3_GOOD) friend_align -= r_ptr->level;
- if (r_ptr->flags3 & RF3_EVIL) friend_align += r_ptr->level;
- }
-
- if (old_friend_align != friend_align) p_ptr->update |= (PU_BONUS);
-}
-
-
-
-/*!
* @brief プレイヤーの落馬判定処理
* @param dam 落馬判定を発した際に受けたダメージ量
* @param force TRUEならば強制的に落馬する
extern bool do_riding(bool force);
-extern void check_pets_num_and_align(monster_type *m_ptr, bool inc);
extern int calculate_upkeep(void);
extern void do_cmd_pet_dismiss(void);
extern void do_cmd_pet(void);
extern MONSTER_IDX hack_m_idx;
extern MONSTER_IDX hack_m_idx_ii;
extern int total_friends;
-extern s32b friend_align;
extern int leaving_quest;
extern bool reinit_wilderness;
extern bool multi_rew;
*/
void set_pet(monster_type *m_ptr)
{
- if (!is_pet(m_ptr)) check_pets_num_and_align(m_ptr, TRUE);
-
/* Check for quest completion */
check_quest_completion(m_ptr);
void set_hostile(monster_type *m_ptr)
{
if (p_ptr->inside_battle) return;
-
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
-
m_ptr->smart &= ~SM_PET;
m_ptr->smart &= ~SM_FRIENDLY;
}
delete_object_idx(this_o_idx);
}
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
-
(void)WIPE(m_ptr, monster_type);
/* Count monsters */
if (!r_idx) return;
}
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, FALSE);
-
m_ptr->r_idx = r_idx;
m_ptr->ap_r_idx = r_idx;
update_monster(m_idx, FALSE);
(r_ptr->flags7 & (RF7_LITE_MASK | RF7_DARK_MASK)))
p_ptr->update |= (PU_MON_LITE);
- if (is_pet(m_ptr)) check_pets_num_and_align(m_ptr, TRUE);
-
if (born)
{
/* Sub-alignment of a chameleon */
p_ptr->hidarite = FALSE;
p_ptr->no_flowed = FALSE;
- p_ptr->align = friend_align;
+ p_ptr->align = 0;
if (p_ptr->mimic_form) tmp_rp_ptr = &mimic_info[p_ptr->mimic_form];
else tmp_rp_ptr = &race_info[p_ptr->prace];
char summon_kin_type; /* Hack, by Julian Lighton: summon 'relatives' */
int total_friends = 0;
-s32b friend_align = 0;
-
int leaving_quest = 0;
bool reinit_wilderness = FALSE;