lycanthropy tweaks

Make it be cannabalism for a were<foo> to eat a <foo> corpse.

Let werejackals summon foxes and coyotes in addition to jackals,
and werewolves summon wargs in addition to wolves and winter wolves.
This commit is contained in:
PatR
2016-06-16 17:11:25 -07:00
parent 09326f03bf
commit 1f4574b6c8
3 changed files with 18 additions and 13 deletions
+2
View File
@@ -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 paths in the vicinity of iron bars
if blind and no gloves, using 'm<dir>' to move and then 'e' could be used to if blind and no gloves, using 'm<dir>' to move and then 'e' could be used to
locate cockatrice corpse without fatal touching (by declining to eat) locate cockatrice corpse without fatal touching (by declining to eat)
it's cannabilism for a were<foo> to eat a <foo> corpse
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository 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 pressing x or X when cursor positioning targets possibly unexplored location
(potentially useful when using '_' [not mouse] to invoke travel) (potentially useful when using '_' [not mouse] to invoke travel)
swallowers can't re-engulf hero immediately after spitting him/her out 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 Platform- and/or Interface-Specific New Features
+3 -1
View File
@@ -619,7 +619,9 @@ boolean allowmsg;
and also shouldn't eat current species when polymorphed and also shouldn't eat current species when polymorphed
(even if having the form of something which doesn't care (even if having the form of something which doesn't care
about cannibalism--hero's innate traits aren't altered) */ 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 (allowmsg) {
if (Upolyd && your_race(fptr)) if (Upolyd && your_race(fptr))
You("have a bad feeling deep inside."); You("have a bad feeling deep inside.");
+13 -12
View File
@@ -47,17 +47,17 @@ int pm;
{ {
switch (pm) { switch (pm) {
case PM_WEREWOLF: case PM_WEREWOLF:
return (PM_HUMAN_WEREWOLF); return PM_HUMAN_WEREWOLF;
case PM_HUMAN_WEREWOLF: case PM_HUMAN_WEREWOLF:
return (PM_WEREWOLF); return PM_WEREWOLF;
case PM_WEREJACKAL: case PM_WEREJACKAL:
return (PM_HUMAN_WEREJACKAL); return PM_HUMAN_WEREJACKAL;
case PM_HUMAN_WEREJACKAL: case PM_HUMAN_WEREJACKAL:
return (PM_WEREJACKAL); return PM_WEREJACKAL;
case PM_WERERAT: case PM_WERERAT:
return (PM_HUMAN_WERERAT); return PM_HUMAN_WERERAT;
case PM_HUMAN_WERERAT: case PM_HUMAN_WERERAT:
return (PM_WERERAT); return PM_WERERAT;
default: default:
return NON_PM; return NON_PM;
} }
@@ -121,7 +121,8 @@ register struct monst *mon;
} }
/* were-creature (even you) summons a horde */ /* were-creature (even you) summons a horde */
int were_summon(ptr, yours, visible, genbuf) int
were_summon(ptr, yours, visible, genbuf)
struct permonst *ptr; struct permonst *ptr;
boolean yours; boolean yours;
int *visible; /* number of visible helpers created */ int *visible; /* number of visible helpers created */
@@ -138,20 +139,20 @@ char *genbuf;
switch (pm) { switch (pm) {
case PM_WERERAT: case PM_WERERAT:
case PM_HUMAN_WERERAT: case PM_HUMAN_WERERAT:
typ = typ = rn2(3) ? PM_SEWER_RAT
rn2(3) ? PM_SEWER_RAT : rn2(3) ? PM_GIANT_RAT : PM_RABID_RAT; : rn2(3) ? PM_GIANT_RAT : PM_RABID_RAT;
if (genbuf) if (genbuf)
Strcpy(genbuf, "rat"); Strcpy(genbuf, "rat");
break; break;
case PM_WEREJACKAL: case PM_WEREJACKAL:
case PM_HUMAN_WEREJACKAL: case PM_HUMAN_WEREJACKAL:
typ = PM_JACKAL; typ = rn2(7) ? PM_JACKAL : rn2(3) ? PM_COYOTE : PM_FOX;
if (genbuf) if (genbuf)
Strcpy(genbuf, "jackal"); Strcpy(genbuf, "jackal");
break; break;
case PM_WEREWOLF: case PM_WEREWOLF:
case PM_HUMAN_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) if (genbuf)
Strcpy(genbuf, "wolf"); Strcpy(genbuf, "wolf");
break; break;
@@ -176,7 +177,7 @@ you_were()
char qbuf[QBUFSZ]; char qbuf[QBUFSZ];
boolean controllable_poly = Polymorph_control && !(Stunned || Unaware); boolean controllable_poly = Polymorph_control && !(Stunned || Unaware);
if (Unchanging || (u.umonnum == u.ulycn)) if (Unchanging || u.umonnum == u.ulycn)
return; return;
if (controllable_poly) { if (controllable_poly) {
/* `+4' => skip "were" prefix to get name of beast */ /* `+4' => skip "were" prefix to get name of beast */