penalty from 4 to 5 for consistency with similar attacks frowned upon by the good gods.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5100 c06c8d41-db1a-0410-9941-cceddc491573
5HGMULU7IWTFJJH35S6XTCW3YZEMCORXHQL6NVY2TO4DUMVITNJAC
X2FMJXEWN2NI4PJZLE2POIBGVLK5DSXU4IVFI7KCONRQO2UH4MJAC
VTBHN2ILYU3IILWYXUTGFQFGN6NVMGKIWXQLH4ZLHJ5AXLP4RZZAC
FTNBDAKTX4IV4YCONGEBGRDIWAEYQKQCJEUPKEUHDQB4PZMDG5LQC
QCSLMPAVJIRPFKQRPQH2KGKHEWMVD3PD3EFEC3P5QM4Y5TMTDYMQC
KX6HOBTF5OBZLH2VNEFHH6YAX66FSE6JGBY5I2WIAW5IEJUGNL6AC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
R5HVRGDKUX6A2H4DRHGWFBC2P625VAJHDZTERDMLFVXWSZLMHKRAC
S7Y7P3MDUUYVAMPT3AEPDS6ACEQSLBYTYZGEPEWZCT4VJ2GINATQC
WSUGPG4GWKAV3DINPD5LYP6W3GNFKIFWR3UXQGOQFSLIG5PLOEMAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
33ZMPQC6OXTESW7SRW765GRNJUEJRSYONRVZVIEUDAUEJ2PPMB4AC
52FEQPZJXSIC2RBEQDRP4CW56AQTFKQ434GI6PBMEOUGM6KUMHMAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
D4KP4ZQPOESRZJJHAEWFVZFQEUJU4VYNDADKDG252MKDUM5WYI4QC
O3VTFHATCIAAJ4HQF2VJIEXHDZ6RJYJKXJ4ST65WWV26BSGW4YWQC
YT23TCUEE6A3I7EX6WIZYHCPRYJDE74IZKR5YKPHKOFSYJCKFUCQC
PWY5MJCCVT2CG3GP6J7V745QNATG7XYOBZFUM5VJDQ66F6U2BN7QC
6ZCVQRDZKSACHHTXSPDULWE5TVBSRSSGNNRJXYYCJ3B2EKSXMA4AC
U24V52ZGVQ2XGYA4RNKT26VIIEKUYC6AUEWZSDYJFXB5ZWMMXTPAC
RYK4OAO72K3TDOSKJ2GTQHD3LSMDSB6TQXFZWHPB6FYETNVFNVIAC
IT3NSSLR756K7TZ7S7DOMS7DZUVGIFS5EAR22PEERAF5ZRBICV4AC
6PAG7GHXHIYXJPPTEK4KZQZT4CL2SJDAGTVIUDB4KK66PVSTWUMAC
unchivalric_attack_type is_unchivalric_attack(const actor *attacker,
const actor *defender,
const monsters *def)
{
unchivalric_attack_type unchivalric = UCAT_NO_ATTACK;
// distracted (but not batty)
if (def->foe != MHITYOU && !testbits(def->flags, MF_BATTY))
unchivalric = UCAT_DISTRACTED;
// confused (but not perma-confused)
if (def->has_ench(ENCH_CONFUSION)
&& !mons_class_flag(def->type, M_CONFUSED))
{
unchivalric = UCAT_CONFUSED;
}
// fleeing
if (def->behaviour == BEH_FLEE)
unchivalric = UCAT_FLEEING;
// invisible
if (attacker->invisible() && !defender->can_see_invisible())
unchivalric = UCAT_INVISIBLE;
// held in a net
if (def->has_ench(ENCH_HELD))
unchivalric = UCAT_NET_HELD;
// paralysed
if (def->has_ench(ENCH_PARALYSIS))
unchivalric = UCAT_PARALYSED;
// sleeping
if (def->behaviour == BEH_SLEEP)
unchivalric = UCAT_SLEEPING;
// no unchivalric attacks on monsters that cannot fight
// (plants, etc.)
if (defender->cannot_fight())
unchivalric = UCAT_NO_ATTACK;
// no unchivalric attacks on invisible monsters
if (!player_monster_visible(def))
unchivalric = UCAT_NO_ATTACK;
return unchivalric;
}
// confused (but not perma-confused)
if (def->has_ench(ENCH_CONFUSION)
&& !mons_class_flag(def->type, M_CONFUSED))
{
case UCAT_CONFUSED:
case UCAT_FLEEING:
// fleeing
if (def->behaviour == BEH_FLEE)
{
stab_attempt = true;
stab_bonus = 2;
}
if (attacker->invisible() && !defender->can_see_invisible())
{
case UCAT_INVISIBLE:
// helpless (plants, etc.)
if (defender->cannot_fight())
stab_attempt = false;
// see if we need to roll against dexterity / stabbing
if (stab_attempt && roll_needed)
stab_attempt = (random2(roll) <= you.skills[SK_STABBING] + you.dex);
// check for invisibility - no stabs on invisible monsters.
if (!player_monster_visible( def ))
{
stab_attempt = false;
stab_bonus = 0;
}
if (stab_attempt && you.religion == GOD_SHINING_ONE)
if (unchivalric && you.religion == GOD_SHINING_ONE)