git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9634 c06c8d41-db1a-0410-9941-cceddc491573
AVEOSLDREJHWFZE6ULAWGQPDT24YX4OAOGL7YAUCFVRGHCS22UCAC
FJXN6KNLZG6ASMKP24MKJ7S7T3DMLN5SMSROJ4XIHMR7OW3F5I4AC
7PNN4IJRD3EVIPNSFECQDLU5QXIQHMUHTPMJV6FLHGZMUZPTQN5AC
MRVF22XR5QXX34IEKLD5DDBYOO6DVWKG7JIX5LS6O5GLZBS5FKSQC
HBZDLHYIRJ3QEU4R6GJEINPVASM7YMVZBFR4QSGECNHVC7D6IVGAC
4M6JJPRNEQZIOYMQI24SLTDL27TRD3HGB344TA2KY7OKJMKBDRXQC
TRWX556ZEPTYXCID74I26ZXNKMIJCJJFSPUJ4ZK4Q42ZXMNRU4LQC
JEW6ECARJC535IBLAUTKDKRRMRX26MRH3PHR3XWICCCBYWRTWLYAC
LG6R5CQGJY6FYJC4F7NY7MJYJMVXDZ4BFZZ6N4P5JA5EOK72JWZQC
IFYZSFWJRTV6JM46H6U4CMTQX46VT562EAM64Y6UYU3F6RDWRRYQC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
QK7YLIH7SWBSL3OEBQJYVFNTW4XT5FF6U3GPKW7PEGHBLPV3TVQAC
A54S2WRWNIV4Y4XB5JHR7NALLB55ZCX3Z5DSGBMAVGVY6I7KY2GAC
XYQFJLTMLSU7LC7VODUJVN5F2P47STH2KVSP7Q3BSCUUDRHROW7QC
HGVNTG4FUR6CXYG6NFUGEC7LYGHUTJZBVLYOYNDNYKGXDYEIQVEAC
A6UODN44DC2XDGU4QNN4KOYKHGXMK4OWGEMINLXTRNQYU3RISOWAC
HCVH2CWL32UD66O6Z7ZYDUASWN3RF5TW6FSWURGMD7MELKB772FAC
V25XPIUUPVMKRK663D33PWE3GFQR47XZAV642T2NYGRFWZR5LT6AC
TPJYUAKSEZMCCCJANJ5EQ7F67QVTPFEOWBD7WYK33NLRN657Y5VQC
LEZWYG752CKY6URMLSQTOADDRAJ5NTT7KH7BC5ENGQ55GXKHQMWQC
JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC
7GCM5WFIKX5N2PQ5UCVNMFJEKTZTBCUVZH5RZ7CPDL3Z6GB26KAQC
PUY2VWZJ3G7HNCLIHZP5VGT2DAGHI436ETDJQTPEBFPRSEHOM2NQC
43XCHFXZ34FDVT2QG23RZ65V6NRBY6PE3ENQEEDXFYKRR7IRFHCAC
CDEJUVHMOT2SRPKWBB5IUPAXPGX6TUTGRBFLSPTR4XNZABDLSNUQC
5MGUZD2UACJCSG74TEZHI3Z4YL5KL6ZVUCQ3XVZKDOLKM7EMGWJAC
RDOOG5LBE5TCTFYCKJIB7TGGTRFX4HBLMJZYXS5TCFWNCU3QII5QC
7WSQG3B2JCG5IV2UXMDFA6PAWJSAXLCOWAM2AP232VKCQTDUIVFQC
FS4MVTH4EEEECLEAO2FTNK5CLF2PHFYO2JZHC2YEOKYLWXRDRU6AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SA36K3OJ75PNVR2F4QAPNU2LUGFTVHNIAZVSXCBXBT2NLW2RTUPAC
6PAG7GHXHIYXJPPTEK4KZQZT4CL2SJDAGTVIUDB4KK66PVSTWUMAC
IGNQ3YSGMW6NG7GPYYXWXW6XPM4YWKNUJ5IU55QCWZ2AEHHO3L3QC
YPQ24FG2TT6IX454HDF5QT7P6NKDNIZK4LB4YIJPCLQBMEXMCBBQC
SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC
QG7MKYZECIRDJJZKVRFI6XTCH42GTKA55BFIWPJBQZ27CZVLUJDQC
2YL37AGHLFOMIF3GCTVQGGV2RNNWETWM6ZMUHO3QEWDVBFFSFAKQC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
UXYQEI6GLKABRWITOJVAFK5QETIMVRRBJO3DCHFUAC5A6YTVI64QC
43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC
X2FMEN4E345XD26Z2X7JMJ7VGHOGCGIELMHQRE2ITLVNQACP3NOQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
XZTGZ7MOPX7ZOHQ4IQPXOHGUH5WPRNOYAQ6IQOMZDZYNVSAYFTNAC
W4YW6B4WTSMU4E5TXG27A6C2ZH3WASWOKCEMVHP7KEF2CZDLADJAC
TXFN7TLLKYEM2W5HVB2UXKXUH7MTXOU77PXBPMP7NJKXSLVX5PMQC
C5U3HSOOQ7BKXKXIDS7MLVXUKDTHAWJ5NXNX6YDXTM3GWY5UWX4QC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC
E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC
M7WTOF3BVX5MGA7AQZB22YEFWCSL7RLW54PQM3MTRLCKUCUZZEUAC
MX2KOWAIE37VLSQJWXVEDVQVB3DL325Q7YFUSSHYMAIH53Y74IJQC
5ZYOO2RVGH53ONV4U5NO6MTINQXET6GV6TETPVCFAVOX44LDNR4QC
32GG34SJYCDQC4CO7FXCFJ6SDARRQ3EEP53XJITL5XBEKED6EAIAC
OMTU7OMVWDVAGJCQGQJDZ3YU252T6IM2LPS2ZMPWB7MIXCJK62AQC
XJQT4B4TMM6R5AXQZTOQOJV25JXRD5P27OSFXZBFLBV4WUZRSTQAC
TTCA2KKE56DAAKEVUGAP7ZRNF5KDLOWRVO37E3D6KDNMLDBVL7MAC
NUYXKJP5YXHRDUQW5QW7UC3D5U3VPANIOZAOHFCPWMSRYGMA3GCAC
2OY3EXIBFR22QCCKPZOA37YUI7CX7BEKRRYSDSBDKQN6VTDBD7LAC
AYU5OVG2HZO46KDAPKUWAVHS5HTYFKUWIMIRMTHAXVVFEDJE7YPAC
X4OCLD5YEXCYVQNMOQORLIO72AKUEMT3BT6FB3TW2HARKN5X7MEQC
GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
YPL32ZYVNBA2OSLEUGSAGSDJ5U2NKYMUHOL7GYSE2F4FCFZI2PTAC
2H6MSLB3SR42LG524K2QHJVCZ747RHAKI3VHFVTQ2K7X2LSOIEDQC
2ESKXYN266CEMLSL6DNCKG4REDO34FXL4ODVGMWDJTNJRKMXWCRQC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
2IK5TBPTDZLN7XTSPNRAC2HQ726L2VXFTLUU2NEZI2PXNUOABFTQC
3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC
FIXUE5QKMQPOFLKMBLNBRJNXG4NDESEFVTJRNCFCXAXDRNHPMTAAC
6O5667Y65C5GTP4V3NBKWUN22IRGCAXEELJ6MCANMYPBOKDUO75QC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC
4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC
TDAVD56MGLFSMJLPLSYLEVW7MBRMT7V5BNII4TRWVDIHH47CD2OAC
UBUOMGDTBC5WVGCZWLPC7JXZRPKNODQODFEPWB5ECSJT5J445JLQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
// At high tension Xom is more likely to be nice.
int tension_bonus = (tension <= 0 ? 0 : random2(tension));
// At high tension Xom is more likely to be nice,
// at zero tension the opposite.
const int tension_bonus
= (tension == -1 ? 0 :
tension == 0 ? -std::min(abs(HALF_MAX_PIETY - you.piety)/2,
you.piety/10)
: std::min((MAX_PIETY - you.piety)/2,
random2(tension)));
const bool good = you.piety > (MAX_PIETY / 2);
int size = abs(you.piety - 100);
const bool good = (you.piety == HALF_MAX_PIETY? coinflip()
: you.piety > HALF_MAX_PIETY);
int size = abs(you.piety - HALF_MAX_PIETY);
// Piety slowly drifts towards the extremes.
int adj_count = 0;
for (adjacent_iterator ai(stair_pos); ai; ++ai)
if (grid_stair_direction(grd(*ai)) == CMD_NO_CMD
&& one_chance_in(++adj_count))
{
new_pos = *ai;
}
// Loop twice through all adjacent grids. In the first round,
// only consider grids whose next neighbour in the direction
// away from the player is also of type floor. If we didn't
// find any matching grid, try again without that restriction.
for (int tries = 0; tries < 2; ++tries)
{
int adj_count = 0;
for (adjacent_iterator ai(stair_pos); ai; ++ai)
if (grd(*ai) == DNGN_FLOOR
&& (tries || _valid_floor_grid(*ai + *ai - stair_pos))
&& one_chance_in(++adj_count))
{
new_pos = *ai;
}
if (!tries && new_pos != stair_pos)
break;
}
#ifdef NOTE_DEBUG_XOM
snprintf(info, INFO_SIZE, "xom_acts(): reroll piety(1/5), piety: %d",
you.piety);
take_note(Note(NOTE_MESSAGE, 0, 0, info), true);
#endif
}
else if (was_bored)
{
// If we didn't reroll at least mention the new favour
// now it's not "BORING thing" anymore.
const std::string new_xom_favour = describe_xom_favour();
const std::string msg = "You are now " + new_xom_favour;
god_speaks(you.religion, msg.c_str());
{
take_note(Note(NOTE_POLY_MONSTER, monster->type, 0,
monster->name(DESC_CAP_A, true).c_str()));
}
need_note = true;
if (new_name.empty())
new_name = monster->full_name(DESC_NOCAP_A);
if (need_note
|| can_see && you.can_see(monster) && MONST_INTERESTING(monster))
{
take_note(Note(NOTE_POLY_MONSTER, 0, 0, old_name.c_str(),
new_name.c_str()));
if (you.can_see(monster))
monster->flags |= MF_SEEN;
}
// Stationary monsters can't flee.
if (mons_is_stationary(mon))
// Stationary monsters can't flee, and berserking monsters
// are too enraged.
if (mons_is_stationary(mon) || mon->has_ench(ENCH_BERSERK))