existing followers on the level (with decreasing chances) to bless them. This lowers probability of the reinforcement effect from 10% to 2.5% if bless_follower() is called without any parameters in the first place.
Greatly reduce chances for orcs talking, and tidy up monspeak.txt a bit to make comparing chances easier.
Add the promised friendly pickup toggle (command on Ctrl-T), and a new option for its default value. Modify documentation accordingly.
Fix 1947256: hunger state not shown at game reload.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4662 c06c8d41-db1a-0410-9941-cceddc491573
6TEISZD7HYSSL24EOKIBNURU66KGSQX7B7SNAHBP4DQSAOTGH2MQC
CMIUYIG4M6E7KHDAEM32CGRMS574CSEVCB2OEMQGSBW4US5YAGKQC
ZEJ3RRTIJNGIPLH2X5WX3TFZUPSEDHYYLDQPJHVXE2G7E43NBCQAC
KYV3CCBWIX5SUYUQNOCZ5RLPMC3FOFXGXKPKOGSR3CLESFS4EL4AC
IMC2HA2YWCU7SLGGVQQVUEUIST4ILSOEAUYXNZAW2PJZ475GXLDAC
KZPVMW55ZETV4H4UE4DWOJWK2KSYIJOB7S2SY5XCWVOTRANXO6TQC
POP6UTTHSJGDU5NU7ENQJOZVFUHYM63HJ6HLPXDDLK7XFIP4XEIQC
XKDPUWDOAFP4ZVWY6AOYPX3TJLTFBNZWRYSPIMEJHFX577WAJGMAC
CRU7JBTVJWTTVQ5JTRA2B3X2FPKPJ2RRR33IK2OG536VMOEZJYJAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
XAKHV2E3U5KQ5LV77HI7XFKNCKGYXT2LPBOHZP2VOH4Y67QBH4SQC
O6EVISSX36HYR7FNQ74LAJIFTUGZ3SAHPW2YC3AHMW4CRBQRNLSAC
2TFYJ7D72JY4DYQW3GSPEONA2WYIVHAJXTIQ2QRDIWF65XN2QFGAC
N6AB4D7CBK3YG43GL5MZIHKGYXSQWQ3MRKXGEX3QAADLGNDIKL7AC
YYIBXE7VFJTRT73QDNFL3MQ3LP3OK4KML5YMEMRKQUQZJVAWORWAC
INWKDE6QMV7PUWMZ65IZTUF4WB2G2OR2Q2NPTNID4Y3NVD7JWN3AC
47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC
M2EUGZPKR6XTZSLQYDO7CDBBR2WPPMCBIBKJSZW5P7KYUOUPZSZQC
OVYC2AOOLEVUE4SSF65W46J4QLLZKRXB4DQY7F6S767XJLPQUU6AC
J77VWSSEGMKS4S3HUAKROJYFL3H5FQSO4MCEPXBFJDMYBU36VRLAC
K27R6ZMYMKVNXIV7K3QU2NXRVOGQRLMR6TI6ZQQSVKXVKS76NLSQC
GRWDBVQM7X6QS7EW5PU5WQNOMR46H5ITKU57J3ZVJPIL3ILXIYPAC
5NNXFH3NRVYSU2ZSN6EUDB6RUVO7LZPYQDMKCQ2BWHNC7JPHR2ZAC
HSJF2F2CBK3VSRVYJKMIIJNON67XULQVA4IPXUCPWY32QHDYW4CAC
VEPHAIXR3GSPHBLOW5DWFFU4ULEMVWRQG4G5PKSKRA2I6RHYROUAC
6INGHIA3J7XER4L7OZHGU4RR3QTRWISMXHD3AZQK6MQ3VDADBVAAC
L5KQH3FHNYTFE4D2L3ZGWCBCMW3PAR7EHD5555GSKJGVK7HQWPXAC
5PTCSQA4RA7CRCIFQQROQZUJHVNWCS33ZWCSGYSBXSJUAKGVCO4QC
AZ2RCXNVULJUSCBDBK3VARTUCTPEJXHTA7ALP73S4EXLJB6YYB5QC
T7WNH6S3VICGMHV7MJ6RHR2YKH75TLMZBOF7SDSE6TOHTIJNT63QC
P2OYYNPHIBGOLT4CRLNTTIXDN34EU2QCMFQJNLAMUAHQXZTEDPXQC
GXXYPBFEWKRZQ6OBGYNS2EXZN52NGNV3UU3WM6S5R74CMJBAKGTAC
ASH5CK6CPBKMLGGIRJ5GKTWMS5W3OBVHTL66RTYZIPFM6KFBYA3QC
Y2NYY7HWFZ2LQDK3ACSLGS37F2J2IJ5LRGCIMZYXLEOSVPD3A4DAC
Q3XHNSHW6FI4JCXSEABATRFBJPMCF7PXNG2K6ZQTRRPVMIZFHUBQC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
5O7S2U2B5R7HYML3D66557BC56RG6XH66PFYP6NDJZMXOABMEUKQC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
IVVRQ52VA3MAD25ZMPID3GCRBBFYR54CH33DKXYTRAGUBLTRAZNAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
DOZORMA366M4HB5JKSS27BMCR6ET7QNZNND2B7KV3NVEEPR5H7EAC
QHRWMYQFJ3Q3FM34HVDEIETLLWDMVBQPDIVHJDF3U7DLNYJAVP2QC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC
IXW2IM5ITYDCXDB3ORDDVAR5XUSPVQ3BWLP3Q6TRXNTIKGMZTHXAC
GSQ72ULBSL6WBJZUB3GJKAPQDXZIQV7B2TDBA5OP2WVGHVJMCQFQC
QEEJFAETO6B2J4IWDIDCJ5UNIFNNHHG22IWF2CUJRTJJBNE47CWQC
G5WLU3B4MR3ZDJLGR6OHNIMLZXGQS2EWBJ5YYY5J2GWM6DTD44BAC
BMHUBADDGIOZRVN4P3O5QKIDUYD4RFWBS7MP5X6LZWAYHUBRVD2QC
PMCHUVWMCDXOWGXB4SWMBXFGHJYZG7KZ34SE33HFUGHPQYP3LYEAC
YM3U5YZEFIYLRJVDWQCSP75JL56WC36XLQSL5ZBT4IWSXYJRBCBAC
JJH7VX2LLBZPDKG24SQREWQLX6I6RYNWFECHRZVK7PT5KPQ4MAMAC
7U7IZUR2C7UALYI4Y3SHBYGTHYVQM6JI4PXDFXUFL3T3L6JBSC6AC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
LKLHWERPXMDTRNYPEXVDVB6PE7CT5PZ6WMNJJDTBBE5FBHOCEK5AC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
XX62GOJVDP352L4BH7MELNYXHMZNA6VAGF7B6RWWOSULX7VJR5YAC
IWMCGZ57ZVHE6WSPYD2CZNSG7ZDKGRBNZVY3KLR53TGEM3OQJLBAC
Y66ZAXN24E3HLIBOSW4OXUTQ4X4PRGNJII4KVDQH4GQJVA6GO3NAC
T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
UF4ODJOCV3ZL7DXRLLOFVWHUKKJX34FO4ZM6VJAWEJ3QVP3XZ2AAC
CH7JECYYH35H4TRHRNRTRJCQTQLZ2WRH62TKV72SUIU2RTK5OH7AC
WL5WZXFJ6TONUQRSHUY4GQ5USU47ILWNN5X2JDQZO4CRJJZSRQIAC
EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC
PFQAR3EWCVJXCXU7VHWZOXA2FSYLFJ6EE3WG5FVOVYTXASCAXWEAC
WTBI53EKHGSNOQJ7DJVKJNKGW2VFFEDYTQATU53WFH3IAMSSGOZAC
5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC
GNDVGD7P554FJICPKWYQYXZ46HDMRYKOGZL4XZS2CPF3SNF5UO7QC
monsters *mon;
for (int loopy = 0; loopy < MAX_MONSTERS; loopy++)
{
mon = &menv[loopy];
if (mon->type == -1)
continue;
if (!is_orcish_follower(mon))
continue;
recalled.push_back(loopy);
}
if (recalled.empty())
return 0;
int count_recalled = 0;
int total = recalled.size();
int amount = 1 + random2(4) + random2(4);
bool recall_all = (total <= amount);
for (unsigned int loopy = 0; loopy < recalled.size(); loopy++)
{
mon = &menv[recalled[loopy]];
if (!recall_all && total == amount)
recall_all = true;
if (recall_all || random2(total) < amount)
{
if (empty_surrounds(you.x_pos, you.y_pos, DNGN_FLOOR, 3,
false, empty)
&& mon->move_to_pos( coord_def(empty[0], empty[1])) )
{
count_recalled++;
amount--;
}
else
break; // no more room to place monsters
}
total--;
}
return (count_recalled);
}
if (follower == NON_MONSTER)
{
// Try again, without the LOS restriction.
follower = choose_random_nearby_monster(0, suitable, false, true);
}
// Choose a random follower in LOS, preferably a named one (10% chance).
follower = choose_random_nearby_monster(0, suitable, true, true);
// Try again, or possibly send more reinforcement.
if (_beogh_blessing_reinforcement())
reinforced = true;
}
}
// If no follower was found, attempt to send
// reinforcement.
bool reinforced = _beogh_blessing_reinforcement();
if (!reinforced || coinflip())
{
// Try again, or possibly send more reinforcement.
if (_beogh_blessing_reinforcement())
reinforced = true;
}
pronoun = (mons_is_unique(mon->type)) ? "" : "your ";
blessed = (is_near) ? mon->name(DESC_PLAIN).c_str() : "follower";
if (chance == 0)
if (chance == 0) // 5% chance of holy branding, or priesthood
int ystart = you.y_pos - 9, xstart = you.x_pos - 9;
int yend = you.y_pos + 9, xend = you.x_pos + 9;
if ( xstart < 0 ) xstart = 0;
if ( ystart < 0 ) ystart = 0;
if ( xend >= GXM ) xend = GXM;
if ( yend >= GYM ) yend = GYM;
int xstart = 0, ystart = 0;
int xend = GXM, yend = GYM;
// Friendlies may only pick up stuff dropped by (other) allies.
if (mons_friendly(this)
&& !testbits(item.flags, ISFLAG_DROPPED_BY_ALLY))
// Depending on the friendly pickup toggle, your allies may not pick
// up anything, or only stuff dropped by (other) allies.
if (mons_friendly(this))
const bool newlevel =
load(stair_taken, LOAD_ENTER_LEVEL, old_level_type,
old_level, old_where);
const bool newlevel = load(stair_taken, LOAD_ENTER_LEVEL, old_level_type,
old_level, old_where);
if ( Options.autoprayer_on == false ||
you.religion == GOD_NO_GOD ||
you.religion == GOD_NEMELEX_XOBEH ||
you.duration[DUR_PRAYER] ||
grid_altar_god( grd[you.x_pos][you.y_pos] ) != GOD_NO_GOD ||
!i_feel_safe() )
if ( Options.autoprayer_on == false
|| you.religion == GOD_NO_GOD
|| you.religion == GOD_NEMELEX_XOBEH
|| you.duration[DUR_PRAYER]
|| grid_altar_god( grd[you.x_pos][you.y_pos] ) != GOD_NO_GOD
|| !i_feel_safe() )
case CMD_TOGGLE_FRIENDLY_PICKUP:
// Toggle pickup mode for friendlies.
if (Options.friendly_pickup == -1)
{
Options.friendly_pickup = 0;
mpr("Your allies may now only pick up items dropped by allies.");
}
else if (Options.friendly_pickup == 0)
{
Options.friendly_pickup = 1;
mpr("Your allies may now pick up anything they need.");
}
else
{
Options.friendly_pickup = -1;
mpr("Your allies are now forbidden to pick up anything at all.");
}
break;
// Mark items in inventory as of unknown origin.
origin_set_inventory(origin_set_unknown);
Options.friendly_pickup = Options.default_friendly_pickup;
default_friendly_pickup = (none | friend | all)
Using an in-game toggle, you can control what types of items
your allies will pick up:
none = They won't pick up anything at all.
(This is the old friendly pick up behaviour.)
friend = They will pick up anything they or another ally
dropped, e.g. if another ally dies.
(This is the default value.)
all = They will pick up anything they want to have.
(This is how it works for hostile monsters.)
This option controls which is the default setting for this toggle
when you start or reload a game, or when you enter a level for
the first time.
Note that monsters have their own reasonings for which items they
may need, and when they feel safe enough to pick them up. Except
for "none", these options won't let you override these.
Also, friendly jellies won't ever eat any items, regardless of this
option.