automatically unhide on #sit
trappers do not hide on the ceiling
non-magical whistles do not work underwater
+try to restrict whistle use to monsters that can blow a whistle
Platform- and/or Interface-Specific Fixes
use_whistle(obj)
struct obj *obj;
{
- if(Underwater) {
+ if ((is_silent(youmonst.data) || youmonst.data->msound == MS_BUZZ) &&
+ (breathless(youmonst.data) || verysmall(youmonst.data) ||
+ !has_head(youmonst.data) || youmonst.data->mlet == S_EEL)) {
+ You("are incapable of using the whistle.");
+ } else if(Underwater) {
You("blow bubbles through %s.", yname(obj));
} else {
You(whistle_str, obj->cursed ? "shrill" : "high");
{
register struct monst *mtmp, *nextmon;
- /* it's magic! it works underwater too (at a higher pitch) */
- if(obj->cursed && !rn2(2)) {
+ if ((is_silent(youmonst.data) || youmonst.data->msound == MS_BUZZ) &&
+ (breathless(youmonst.data) || verysmall(youmonst.data) ||
+ !has_head(youmonst.data) || youmonst.data->mlet == S_EEL)) {
+ You("are incapable of using the whistle.");
+ } else if (obj->cursed && !rn2(2)) {
You("produce a %shigh-pitched humming noise.",
Underwater ? "very " : "");
wake_nearby();
} else {
int pet_cnt = 0;
+ /* it's magic! it works underwater too (at a higher pitch) */
You(whistle_str, Hallucination ? "normal" :
Underwater ? "strange, high-pitched" : "strange");
for(mtmp = fmon; mtmp; mtmp = nextmon) {