/* * Anger the monster */ void anger_monster(monster_type *m_ptr) { if (p_ptr->inside_battle) return; if (is_friendly(m_ptr)) { char m_name[80]; monster_desc(m_name, m_ptr, 0); msg_format("%^s gets angry!", m_name); set_hostile(m_ptr); virtue_add(VIRTUE_INDIVIDUALISM, 1); virtue_add(VIRTUE_HONOUR, -1); virtue_add(VIRTUE_JUSTICE, -1); virtue_add(VIRTUE_COMPASSION, -1); } }
bool duelist_issue_challenge(void) { bool result = FALSE; int m_idx = 0; if (target_set(TARGET_MARK)) { msg_flag = FALSE; /* Bug ... we get an extra -more- prompt after target_set() ... */ if (target_who > 0) m_idx = target_who; else m_idx = cave[target_row][target_col].m_idx; } if (m_idx) { if (m_idx == p_ptr->duelist_target_idx) msg_format("%^s has already been challenged.", duelist_current_challenge()); else { /* of course, we must first set the target index before duelist_current_challenge() will return the correct text */ p_ptr->duelist_target_idx = m_idx; msg_format("You challenge %s to a duel!", duelist_current_challenge()); set_monster_csleep(m_idx, 0); set_hostile(&m_list[m_idx]); result = TRUE; } } else if (p_ptr->duelist_target_idx) { p_ptr->duelist_target_idx = 0; msg_print("You cancel your current challenge!"); } p_ptr->redraw |= PR_STATUS; return result; }