a fair bit and as usually ended up doing lots of clean-up.
Oh wait, I modified eat_from_floor prompts to only force a more if there was actually a message before trying the inventory (whoops), and also modified the corpses in pack hint to take into account that a saccing player won't be interested in butchering rotten corpses.
Also implemented a modified FR 1981119: when Detect Creatures only detects plants already seen before, print a different message ("You detect no further creatures.").
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5435 c06c8d41-db1a-0410-9941-cceddc491573
PDOFPXD2X6VI23AHKCGQ5RVDBG74CNP2E3YOHKXLOARHHBXEK3HQC
3HKMT4A6MNZFZLM2EF33T4UNTVX7NS5JZDGQKWJS7WFPFPZFGALAC
JDBTF7NKDHWDTAX5LRBQ75A5JBNELFITVYQ6KOGW5XM2SGW33STQC
U5SXLDAMIOCJJ3A3U6Y3HHSJI7WSZIM2SSXEPHJWBCB5KAXFM5XQC
BZBI4JX6Y6D3ZXNW6SQXIVQFZKVDDOSD6XRFDVY2ZZFIJ4LED4YQC
542UIZKI65UDRNEMGFFDBWYD5XC7AYLTZ3JZQRR2GHYJALD3YY6QC
SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC
4HLF6Q3OBOOHCCJ76L2BXVIYI6EMJ2G7O4XXZPFTLFP6BQGSUZNAC
PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TZ643KHSE5CUPXFSQ7VYVOCM5MTQ7F4SENEYQX2RNFHGHLQVS3RQC
JESCEQPAFC23D6BUZMBOB4M54XT3GQZJYT7NCJ556LEUCHRER3SQC
R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC
J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
6GJYM7D3VKAKCIHAOEZW5XPE7KIJZXJCYZYMHVJAECV5QZWGQAUAC
75M6AVUSS3G5EJECJJRB67V5UYDOIV26FZNB2FFCMBZ33EK7FVIQC
XVFTIQ7MSVKQDMQ2HT3IY6FJOZFK4H6OFGTUAID5VGCA5BGVXYPAC
CYYY4OASJTLMNQPNC2H57XAHBRT7JYO6MDY3J5DX5PMWRYT7RRUQC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
GWGKGHFGBLVPDSSDWYFORHZHMWOR3SFC5PJNF732V7FEKWWJKPOAC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
CSRWDG2SUGS4YR4PAFI574EGEXW65P6JDT4ZHWDICS2G2GZIGEUQC
ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC
2UUCC7V3WQ5KBHJS4MTKZ5OIELYJHSTUVRPYGPWIQ5JS6D7YIK4AC
KEANRIMF5CGFVZ2XJYNFPOAKLXOSOJUOVA73IWBWOG576265ERHAC
EIULXYQC3OPXDGTBRDOI7ITILQ22RGEGG6UFCGY2O5HD7SN5NUUQC
SUQ7J6V6BDWG6G6KBGPQ6HYKBMJDM6VKN7ODHVU6YCPRWNEOZCJQC
LOC46PHUFJ3MDWOYUEH4R24TGGE4ADG7C44O2ZNB4EBF2YD6VX7QC
F7QFSXE22UPQTBLYJLY26HJ3QPHFNBJMUOFJRV35R5YCHSGKTBYQC
PAAJWLYMSL5R2NS73EU5AMVTSGQKSK7AZ4P4DWEIVHYYFB3AWEQQC
PVLLIAYFIAU4TQFBIP7B4ARIBUX2CVTSBQECEU6VTONJV4ANHVFAC
ZS76S7ICRKEPANAWEMFUXMCFZM4VYUBHR4NLIB6NVSUM2VN2XWYAC
V7IKAPO5OY7CJTT62GMHQOD3EQW42FTTY3KDBOTJUODPS5WMBCHAC
HOPP345EQLSF24XJYE3625VKU23PBKM5ZZKNCXBXUWYYORYPMDAAC
ASH5CK6CPBKMLGGIRJ5GKTWMS5W3OBVHTL66RTYZIPFM6KFBYA3QC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
S6Z5DI4LGLFHRSOVGGC7PW5CPP34GR5TJXPSJ2XMBFR5YU6VNF4QC
ND3T5LCZATC63EVQ6SLI7XXMSUL7XICJDNLH3UCYUDEFWTA3N5MQC
CYAVI4PYWMMKTPYT5N2B3MI4OSHZFLPKOZFSLFJUXRYAACYXWW3AC
O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC
M5JRISNFA35UTUE6EZKABYLNFLD5Y2CM3CEASFEWM4QRNYC3UK3QC
TOOHYAX73C5KPSWGHPCBWCUN62WMMO3BI5CWEEMGV3WBFZ5RIH5AC
DGB7DKTR6OEQEMOOF3MAHDT4PAPKZ54Y33MWYVD7XIOESPFAXHQQC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
U6Q43EFKHJIDBBWN6RUTOYRHHX4IT73OPBR4CWIOKUDGTCYQE5PAC
57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC
L6YPJVODN32IYLEZQQZE2ENH3XDAZ63IQIDX3PB4CJEK3A4NUNSAC
HQSI2RK5QGNSOR5Y67GZDK4ZWFZ5DSRPASXAV4VHYVB5TUXFZWJQC
QGVAXJZXG2HUCLELWAN6LJJOBSP2BS6TIZMPJTDOAGI2E2SUCOCQC
NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC
JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC
EB2ECXZ3EQ6L2ZY42KLQV4QPE4YCNYENXFGUM7EDTCWC2LDZJYCAC
JI33MPZAQQV55WDCZE4IHGMZYRYWIYU5MSYKYZB7RX2AWWY2SMCQC
AM7QPHDAWNXHLUEVUHVRHG2RO2DOIEFFU4GV3DCIROW6O5HW7H4AC
FS4MVTH4EEEECLEAO2FTNK5CLF2PHFYO2JZHC2YEOKYLWXRDRU6AC
RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC
TW7QOMTSLYPGUUWHGHLY5G5LV6QQRQIKK4BSE64RY7RDGKVDHCEAC
T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC
5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC
5OVWAD2MGK2NT6Q546KW7HZHELVDBBRC2CQX6VZMZF2YVRC7CPVAC
FMKQARDH6JZ7DUTPPQ6I3LLNQAFGXS36XJCSROUJMEIYQYJDVITQC
W5VEC2PBIM5DMU5233HOWAZUEPTGWJRZZIA3H35YYQQW6BTP6XUAC
SW3RLYFNRT3IJBK6LYKHKP2J2YDU7SXQWAJZX7U6S7ICYW43OMNQC
PJ7HBIWAV3H23LXGZAAD2QYJ7HMOFOIR5ZJ4U2UTHI766LOTRRWQC
2WRXQTGYDBLV46WRNVIUKGNA5QS563XZNNW3N2L6PVOCHIP2YGHQC
GTPAKUU3R5AS3LQNCCZIP3BWV473RM4EB2AIS4FXAJRXHEOVH2PAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
HAI4YDKI72OBDT5KMMVCO3DOU765OPWCU7GTRKTALFNSDOI4R2LAC
YLWMDMNLJOERFAGH5RIFTRWLGCEOWAD4GIWUIXKYA7EE3EWHCVAQC
DOZORMA366M4HB5JKSS27BMCR6ET7QNZNND2B7KV3NVEEPR5H7EAC
A5YOVQMFZRMT6NK7YUQI632TWC3CFATXDNCSB7M33EEYB62SA3XAC
EFWEYIB2R3DPD3JWIPU6LS6SFLPMYN7J7X4GBZR7DJWKHJ3UELSAC
XYBPIU6AQ77EID4VNOMI7KQZULZI4VBZHHIGBRYO7QRJVCODEKYAC
UURAYLSSITZLQR56MCWFPIWMECU7F3USMA2UPJAO4IPIY5WVKP5QC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
JQFDRS5YPQ5KKTCNXW2XNUZU2XK2CW4PXRD6BSQFKMC5QFG3Y23AC
ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
CRUW4EVU3UDWNKXBCPWWHWXXGE7EMEHKK3PLLUD7NWPYY4K2R3YAC
T6TL6NTIOBYNUIONGK3JFZJ5ONWV6S4CTIRDC5JMKMCBGG5IY3EAC
KZ362RP6C7HRFQB66QL3PBRG7MBEPLRKTFMJYK7DFJQKERFGNFXQC
PSCYVKJ7DGXAL3V5U4O6AJTRV6Q3N3SHQWAZ73VIPRTE4W64F2XAC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
WF2DSJGR6PKLGQSXEFF4ZW4EZZFGMHXPXWUYAKYBPFJH6KJKAANQC
3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC
B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC
BW3XFNOS6LDAQLHOZ6RXARCMKCY5JVLVDSXDSSAX4DSYM3FANQBAC
3WAR2UAC4C4D2GOK4AUV4JITGFSBO3NIBAXGQZXSMFUTNTCLTU4AC
GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
}
int count_detected_plants()
{
int count = 0;
for (int y = Y_BOUND_1; y <= Y_BOUND_2; ++y)
for (int x = X_BOUND_1; x <= X_BOUND_2; ++x)
{
// Don't expose new dug out areas:
// Note: assumptions are being made here about how
// terrain can change (eg it used to be solid, and
// thus monster/item free).
if (is_terrain_changed(x, y))
continue;
unsigned envc = get_envmap_char(x, y);
if (!envc)
continue;
if (envc == 'P' || envc == 'f')
count++;
}
return (count);
mprf("You detect %s", (detect_creatures(powc) > 0) ? "creatures!"
: "nothing.");
break;
{
int known_plants = count_detected_plants();
int num_creatures = detect_creatures(powc);
mon_enchant abj = monster->get_ench(ENCH_ABJ);
mon_enchant charm = monster->get_ench(ENCH_CHARM);
mon_enchant neutral = monster->get_ench(ENCH_NEUTRAL);
mon_enchant shifter = monster->get_ench(ENCH_GLOWING_SHAPESHIFTER,
ENCH_SHAPESHIFTER);
mon_enchant abj = monster->get_ench(ENCH_ABJ);
mon_enchant charm = monster->get_ench(ENCH_CHARM);
mon_enchant neutral = monster->get_ench(ENCH_NEUTRAL);
mon_enchant shifter = monster->get_ench(ENCH_GLOWING_SHAPESHIFTER,
ENCH_SHAPESHIFTER);
bool show_mark = false;
int mark_x = 0;
int mark_y = 0;
// Unmappables...
if (you.level_type != LEVEL_LABYRINTH && you.level_type != LEVEL_ABYSS)
{
ox += linex - gmap_min_x;
oy += liney - gmap_min_y;
// Highlight centre of the map (ox, oy).
ox += linex - gmap_min_x;
oy += liney - gmap_min_y;
mark_x = ox;
mark_y = oy;
show_mark = true;
// [enne] Maybe we need another colour for the highlight?
// [jpeg] I think reusing the player colour is okay, because that's
// usually where the centre will be.
buf2[ox + oy * GXM] = Options.tile_player_col;
// Highlight centre of the map.
// [enne] Maybe we need another colour for the highlight?
buf2[ox + oy * GXM] = Options.tile_player_col;
}
const bool can_bottle = (you.species == SP_VAMPIRE
&& you.experience_level > 5
&& (!you.duration[DUR_PRAYER]
|| !god_likes_butchery(you.religion)));
const bool sacrifice = (you.duration[DUR_PRAYER]
&& god_likes_butchery(you.religion));
const bool can_bottle = (!sacrifice && you.species == SP_VAMPIRE
&& you.experience_level > 5);
you.redraw_hit_points = 1;
you.redraw_magic_points = 1;
you.redraw_strength = 1;
you.redraw_intelligence = 1;
you.redraw_dexterity = 1;
you.redraw_armour_class = 1;
you.redraw_evasion = 1;
you.redraw_experience = 1;
you.redraw_gold = 1;
you.redraw_hit_points = true;
you.redraw_magic_points = true;
you.redraw_strength = true;
you.redraw_intelligence = true;
you.redraw_dexterity = true;
you.redraw_armour_class = true;
you.redraw_evasion = true;
you.redraw_experience = true;
you.redraw_gold = true;
static void restore_tagged_file( FILE *restoreFile, int fileType,
char minorVersion )
static void _restore_tagged_file( FILE *restoreFile, int fileType,
char minorVersion )
static bool determine_ghost_version( FILE *ghostFile,
char &majorVersion, char &minorVersion )
static bool _determine_ghost_version( FILE *ghostFile,
char &majorVersion, char &minorVersion )
static void restore_ghost_version( FILE *ghostFile,
char majorVersion, char minorVersion )
static void _restore_ghost_version( FILE *ghostFile,
char majorVersion, char minorVersion )
case CMD_OPEN_DOOR: _open_door(0, 0); break;
case CMD_CLOSE_DOOR: _close_door(0, 0); break;
case CMD_GO_UPSTAIRS: _go_upstairs(); break;
case CMD_GO_DOWNSTAIRS: _go_downstairs(); break;
case CMD_OPEN_DOOR: _open_door(0, 0); break;
case CMD_CLOSE_DOOR: _close_door(0, 0); break;