e.g. cast a branding spell, or a transformation that will fail for whatever reason. You may still occasionally get a "The spell fizzled" (or whatever) message but that should be rarer now. Apply the same fail chances for Detect Items as for Magic Mapping for fully explored levels, and for low severity make Summon Butterflies more likely to avoid endless attempts of casting Magic Mapping on fully explored levels.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9573 c06c8d41-db1a-0410-9941-cceddc491573
QK7YLIH7SWBSL3OEBQJYVFNTW4XT5FF6U3GPKW7PEGHBLPV3TVQAC
A6UODN44DC2XDGU4QNN4KOYKHGXMK4OWGEMINLXTRNQYU3RISOWAC
KEYSAFWSLEDSP73NMSHGQC46QGLMTNVRCB5PYMCINUD2XKU5OA7AC
V25XPIUUPVMKRK663D33PWE3GFQR47XZAV642T2NYGRFWZR5LT6AC
TYAUNNAVB4GEKXYSR447JXRDKRJJZHAVV7XLWGU7RXEP5JMJCQKAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
QEPTJOPJFKTXH27KOHY7DMQSMTXWAM57OPL3Y7WYE4X2OFMZE5IAC
XYQFJLTMLSU7LC7VODUJVN5F2P47STH2KVSP7Q3BSCUUDRHROW7QC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
A54S2WRWNIV4Y4XB5JHR7NALLB55ZCX3Z5DSGBMAVGVY6I7KY2GAC
GYOKKBVTZ6HRW2NYC3EMGSB6ULBX24L5DLDZNEP2F6UTA4KPU3CAC
QF5LILALY55UNUHCZE22D6FGPJOJJKNJQFLBMRACMBWJBSO7PMCQC
HCVH2CWL32UD66O6Z7ZYDUASWN3RF5TW6FSWURGMD7MELKB772FAC
SJJMO4TFG3QO46SLHUFSUYXXVZJDULVYTU4RTCM7TQPIGHZTWBDAC
542WW2UJM6XF22442ZD5NFMTS6HTDM74JKJ7GQHBLQ3D6C6T4C3AC
TPO6FNMPNUSWH4NCKO3VLYNAADEPSAXLUITCCACLZZSY53PKA62QC
TPJYUAKSEZMCCCJANJ5EQ7F67QVTPFEOWBD7WYK33NLRN657Y5VQC
7WSQG3B2JCG5IV2UXMDFA6PAWJSAXLCOWAM2AP232VKCQTDUIVFQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
DTOROKIMAOTTZ42ZYBWV6BBABEFW64G33UXGW334TXIG3W3MBTEAC
H5BVKRORNXTCJKFXQPTFWDURKSUFW24CGSJXBGZCJUP4DHMSVDBQC
5KTPCJG42MF2B34CEH6VXAJIOZR6QOS2BWYNW7DXM3WA7N3GH4HQC
JVFPF4MBNVY2UEXPWJDKTWL6RY7WCXPB6GBOK3WPJOGM6CX3D7HQC
2FWCWK23M4RXDNZ2WOCHAGSLXNOHLLCMLOZTVJMCOGLC54HMEUXAC
NDP5ANTLTYSDYLBHZPEJLO6IDU6OKA6UQHYWSBUXEEPYHZLRTYNQC
O4ZFDG3AEV3K4NPGCCLB7DXUH5CBETKP5FBKLCIET7JNTNDX5DUAC
LTEHVF5JJAZ4M4RXLHCEEFQFTSDC5EUE44HRAQQ666FFPMTQZA6AC
6CZYPP67SB2M3SQS3QIPJWHZY7PJIRTTBH5CLORV3AALVTJIL5MQC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
J5AAA4LUTW6PLS2DBKGTXPSW2SGOBMICEOA3VDHRSKVLU36EGQMAC
5LRCNSKG4ZBIOK3YL7DARYHMTEY4M5BCAP36KWNHBG2SJMEFXGLQC
DWWOM6V2Z4RQVT6AKW6OYLSFOUE4W5PTP2SH4AAZE2E4EIH4RLUAC
HNPSSHGZFQ3E2I6X6VTKZ3WBBM2G25P2D7SIL2SZYKV2CCEA2ADAC
N7J2IWU7B34XIUYWHJF2RTRAXXAQLVVZLWWHFWN4FC5PLNFFEWCAC
VGXHYRUOSTKGZ3IXD6YDH57J52TKLZEYZTQF75WOJN2IDKCITDCAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
AT2JSJWMOSK7DPVA6KUKD2ERKWX23KXLKYJBMNTHPDP6INMOG7VQC
DINIHMHQWCV7UKXHNIA2TLT2ZOO5IYJJE7GMI3XUAWYIR37AKD2QC
FBSQWOO5V3GQG3RISR2VFCIJD5U3L7EWVLVJES6NJ4H7F24LWWFAC
4RNTJHHRSHPEEIH4TR47ESCDZJT4COVY2OSVEWWJHXP7EBJKMFAAC
GP7RUHLNB4KISSZAENEYVNY3MB5YRCFRWRWYAROBZIQ5MR4DXB7QC
CRQ3WJCOA5X7MWZYVUDQMO4N5BU6NSCMPFTO3ENLNRCT5U3ONBPAC
HJFSUV6DXQVNWJCM73GEPKXGKFF4NRZ2Z35ZCXTYRSWL5WG34YMAC
SPELL_MAGIC_MAPPING, SPELL_DETECT_ITEMS, SPELL_DETECT_CREATURES,
SPELL_OLGREBS_TOXIC_RADIANCE, SPELL_SUMMON_BUTTERFLIES,
SPELL_FLY, SPELL_SPIDER_FORM, SPELL_STATUE_FORM, SPELL_ICE_FORM,
SPELL_MAGIC_MAPPING, SPELL_DETECT_ITEMS, SPELL_SUMMON_BUTTERFLIES,
SPELL_DETECT_CREATURES, SPELL_FLY, SPELL_SPIDER_FORM,
SPELL_OLGREBS_TOXIC_RADIANCE, SPELL_STATUE_FORM, SPELL_ICE_FORM,
return (you.piety > 180) ? "Xom's teddy bear." :
(you.piety > 150) ? "A beloved toy of Xom." :
(you.piety > 120) ? "A favourite toy of Xom." :
(you.piety > 80) ? "A toy of Xom." :
(you.piety > 50) ? "A plaything of Xom." :
(you.piety > 20) ? "A special plaything of Xom."
: "A very special plaything of Xom.";
favour = (you.piety > 180) ? "Xom's teddy bear." :
(you.piety > 150) ? "a beloved toy of Xom." :
(you.piety > 120) ? "a favourite toy of Xom." :
(you.piety > 80) ? "a toy of Xom." :
(you.piety > 50) ? "a plaything of Xom." :
(you.piety > 20) ? "a special plaything of Xom."
: "a very special plaything of Xom.";
}
static bool _spell_requires_weapon(const spell_type spell)
{
switch (spell)
{
case SPELL_TUKIMAS_VORPAL_BLADE:
case SPELL_MAXWELLS_SILVER_HAMMER:
case SPELL_FIRE_BRAND:
case SPELL_FREEZING_AURA:
case SPELL_POISON_WEAPON:
case SPELL_LETHAL_INFUSION:
case SPELL_EXCRUCIATING_WOUNDS:
case SPELL_WARP_BRAND:
case SPELL_TUKIMAS_DANCE:
return (true);
default:
return (false);
}
static bool _transformation_check(const spell_type spell)
{
transformation_type tran = TRAN_NONE;
switch (spell)
{
case SPELL_SPIDER_FORM:
tran = TRAN_SPIDER;
break;
case SPELL_STATUE_FORM:
tran = TRAN_STATUE;
break;
case SPELL_ICE_FORM:
tran = TRAN_ICE_BEAST;
break;
case SPELL_DRAGON_FORM:
tran = TRAN_DRAGON;
break;
case SPELL_NECROMUTATION:
tran = TRAN_LICH;
break;
default:
break;
}
// (if it fails).
bool transform(int pow, transformation_type which_trans, bool quiet)
// (if it fails). If just_check is true the transformation doesn't actually
// happen, but the method returns whether it would be successful.
bool transform(int pow, transformation_type which_trans, bool quiet,
bool just_check)