to avoid attacking e.g. friendly monsters in melee when not confused (usually via the Ctrl-key combinations while trying to disarm traps).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5140 c06c8d41-db1a-0410-9941-cceddc491573
JBMC2XNV3DNWMMLKUDRKBPDCPVRITY6L3WRQSD2SJMWNZUSIBMRQC
R7B6DUQQPRHSTBC5HT363VYF4ZCXDDSXOQQJOVCFPLP52P4NMTCAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
6YQRV6WDHJU3CQSXGZLXLNOKGLBCTMOIU4ZWZVFSQULY7OUFX7AQC
25ZIRUIA4L47VVI3CHNJ66VZZDPJLTYC5KHEMD6BROGKLQNC5G5AC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
U24V52ZGVQ2XGYA4RNKT26VIIEKUYC6AUEWZSDYJFXB5ZWMMXTPAC
5HGMULU7IWTFJJH35S6XTCW3YZEMCORXHQL6NVY2TO4DUMVITNJAC
if (mons_friendly(def))
conduct.set(DID_ATTACK_FRIEND, 5, true, def);
else if (mons_neutral(def))
conduct.set(DID_ATTACK_NEUTRAL, 5, true, def);
const bool wontAttack = mons_wont_attack(def);
const bool isFriendly = mons_friendly(def);
const bool isNeutral = mons_neutral(def);
const bool isUnchivalric = is_unchivalric_attack(&you, def, def);
const bool isHoly = mons_is_holy(def);
if (mons_is_holy(def))
did_god_conduct(DID_ATTACK_HOLY, def->hit_dice, true, def);
if (wontAttack
|| (is_good_god(you.religion) && (isNeutral || isHoly))
|| (you.religion == GOD_SHINING_ONE && isUnchivalric))
{
snprintf(info, INFO_SIZE, "Really attack this %s%s creature?",
(isFriendly) ? "friendly " :
(wontAttack) ? "non-hostile " :
(isNeutral) ? "neutral " :
(isUnchivalric) ? "helpless "
: "",
(isHoly) ? "holy"
: "");
if (you.confused() || yesno(info, false, 'n'))
{
if (isFriendly)
conduct.set(DID_ATTACK_FRIEND, 5, true, def);
else if (isNeutral)
conduct.set(DID_ATTACK_NEUTRAL, 5, true, def);
if (isUnchivalric)
conduct.set(DID_UNCHIVALRIC_ATTACK, 4, true, def);
if (isHoly)
conduct.set(DID_ATTACK_HOLY, def->hit_dice, true, def);
}
else
cancel_attack = true;
}
if (unchivalric)
{
if (you.religion == GOD_SHINING_ONE
&& !tso_unchivalric_attack_safe_monster(defender))
{
if (!you.confused()
&& !yesno("Really attack this helpless creature?", false, 'n'))
{
cancel_attack = true;
return;
}
}
did_god_conduct(DID_UNCHIVALRIC_ATTACK, 4, true, def);
}