diff --git a/doc/fixes36.1 b/doc/fixes36.1
index 6cfc02584..456c8772c 100644
--- a/doc/fixes36.1
+++ b/doc/fixes36.1
@@ -294,6 +294,7 @@ don't give "you cannot pass through the bars" when travel is testing possible
paths in the vicinity of iron bars
if blind and no gloves, using 'm
' to move and then 'e' could be used to
locate cockatrice corpse without fatal touching (by declining to eat)
+it's cannabilism for a were to eat a corpse
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
@@ -416,6 +417,7 @@ pressing d or D when cursor positioning targets doors and doorways
pressing x or X when cursor positioning targets possibly unexplored location
(potentially useful when using '_' [not mouse] to invoke travel)
swallowers can't re-engulf hero immediately after spitting him/her out
+werejackals can summon foxes and coyotes; werewolves can summon wargs
Platform- and/or Interface-Specific New Features
diff --git a/src/eat.c b/src/eat.c
index 59a33053f..ffc787d8a 100644
--- a/src/eat.c
+++ b/src/eat.c
@@ -619,7 +619,9 @@ boolean allowmsg;
and also shouldn't eat current species when polymorphed
(even if having the form of something which doesn't care
about cannibalism--hero's innate traits aren't altered) */
- && (your_race(fptr) || (Upolyd && same_race(youmonst.data, fptr)))) {
+ && (your_race(fptr)
+ || (Upolyd && same_race(youmonst.data, fptr))
+ || (u.ulycn >= LOW_PM && were_beastie(pm) == u.ulycn))) {
if (allowmsg) {
if (Upolyd && your_race(fptr))
You("have a bad feeling deep inside.");
diff --git a/src/were.c b/src/were.c
index b9e58dd2b..c8ee49650 100644
--- a/src/were.c
+++ b/src/were.c
@@ -47,17 +47,17 @@ int pm;
{
switch (pm) {
case PM_WEREWOLF:
- return (PM_HUMAN_WEREWOLF);
+ return PM_HUMAN_WEREWOLF;
case PM_HUMAN_WEREWOLF:
- return (PM_WEREWOLF);
+ return PM_WEREWOLF;
case PM_WEREJACKAL:
- return (PM_HUMAN_WEREJACKAL);
+ return PM_HUMAN_WEREJACKAL;
case PM_HUMAN_WEREJACKAL:
- return (PM_WEREJACKAL);
+ return PM_WEREJACKAL;
case PM_WERERAT:
- return (PM_HUMAN_WERERAT);
+ return PM_HUMAN_WERERAT;
case PM_HUMAN_WERERAT:
- return (PM_WERERAT);
+ return PM_WERERAT;
default:
return NON_PM;
}
@@ -121,7 +121,8 @@ register struct monst *mon;
}
/* were-creature (even you) summons a horde */
-int were_summon(ptr, yours, visible, genbuf)
+int
+were_summon(ptr, yours, visible, genbuf)
struct permonst *ptr;
boolean yours;
int *visible; /* number of visible helpers created */
@@ -138,20 +139,20 @@ char *genbuf;
switch (pm) {
case PM_WERERAT:
case PM_HUMAN_WERERAT:
- typ =
- rn2(3) ? PM_SEWER_RAT : rn2(3) ? PM_GIANT_RAT : PM_RABID_RAT;
+ typ = rn2(3) ? PM_SEWER_RAT
+ : rn2(3) ? PM_GIANT_RAT : PM_RABID_RAT;
if (genbuf)
Strcpy(genbuf, "rat");
break;
case PM_WEREJACKAL:
case PM_HUMAN_WEREJACKAL:
- typ = PM_JACKAL;
+ typ = rn2(7) ? PM_JACKAL : rn2(3) ? PM_COYOTE : PM_FOX;
if (genbuf)
Strcpy(genbuf, "jackal");
break;
case PM_WEREWOLF:
case PM_HUMAN_WEREWOLF:
- typ = rn2(5) ? PM_WOLF : PM_WINTER_WOLF;
+ typ = rn2(5) ? PM_WOLF : rn2(2) ? PM_WARG : PM_WINTER_WOLF;
if (genbuf)
Strcpy(genbuf, "wolf");
break;
@@ -176,7 +177,7 @@ you_were()
char qbuf[QBUFSZ];
boolean controllable_poly = Polymorph_control && !(Stunned || Unaware);
- if (Unchanging || (u.umonnum == u.ulycn))
+ if (Unchanging || u.umonnum == u.ulycn)
return;
if (controllable_poly) {
/* `+4' => skip "were" prefix to get name of beast */