fix U206 - cursed leash/pacifist conduct
Treat strangling a pet with a cursed leash like a regular monster kill; you'll get experience, lose pacifism conduct, and suffer various pet-killer effects. Also do some minor damage and reduce tameness for the case where the pet is described as being choked but isn't killed.
This commit is contained in:
@@ -385,6 +385,7 @@ while waiting, don't try to change into were form when already in were form
|
|||||||
steed should remember traps encountered while mounted
|
steed should remember traps encountered while mounted
|
||||||
killing shopkeeper by throwing unpaid things would result in
|
killing shopkeeper by throwing unpaid things would result in
|
||||||
"item not on bill" impossible error
|
"item not on bill" impossible error
|
||||||
|
choking pet to death with cursed leash incurs various pet-killing penalties
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
27
src/apply.c
27
src/apply.c
@@ -1,4 +1,4 @@
|
|||||||
/* SCCS Id: @(#)apply.c 3.4 2003/01/29 */
|
/* SCCS Id: @(#)apply.c 3.4 2003/02/13 */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -542,18 +542,31 @@ register xchar x, y;
|
|||||||
}
|
}
|
||||||
if (dist2(u.ux,u.uy,mtmp->mx,mtmp->my) >
|
if (dist2(u.ux,u.uy,mtmp->mx,mtmp->my) >
|
||||||
dist2(x,y,mtmp->mx,mtmp->my)) {
|
dist2(x,y,mtmp->mx,mtmp->my)) {
|
||||||
if (otmp->cursed && !breathless(mtmp->data)) {
|
if (!um_dist(mtmp->mx, mtmp->my, 3)) {
|
||||||
if (um_dist(mtmp->mx, mtmp->my, 5)) {
|
; /* still close enough */
|
||||||
pline("%s chokes to death!", Monnam(mtmp));
|
} else if (otmp->cursed && !breathless(mtmp->data)) {
|
||||||
mondied(mtmp);
|
if (um_dist(mtmp->mx, mtmp->my, 5) ||
|
||||||
} else if (um_dist(mtmp->mx, mtmp->my, 3)) {
|
(mtmp->mhp -= rnd(2)) <= 0) {
|
||||||
|
long save_pacifism = u.uconduct.killer;
|
||||||
|
|
||||||
|
Your("leash chokes %s to death!", mon_nam(mtmp));
|
||||||
|
/* hero might not have intended to kill pet, but
|
||||||
|
that's the result of his actions; gain experience,
|
||||||
|
lose pacifism, take alignment and luck hit, make
|
||||||
|
corpse less likely to remain tame after revival */
|
||||||
|
xkilled(mtmp, 0); /* no "you kill it" message */
|
||||||
|
/* life-saving doesn't ordinarily reset this */
|
||||||
|
if (mtmp->mhp > 0) u.uconduct.killer = save_pacifism;
|
||||||
|
} else {
|
||||||
pline("%s chokes on the leash!", Monnam(mtmp));
|
pline("%s chokes on the leash!", Monnam(mtmp));
|
||||||
|
/* tameness eventually drops to 1 here (never 0) */
|
||||||
|
if (mtmp->mtame && rn2(mtmp->mtame)) mtmp->mtame--;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (um_dist(mtmp->mx, mtmp->my, 5)) {
|
if (um_dist(mtmp->mx, mtmp->my, 5)) {
|
||||||
pline("%s leash snaps loose!", s_suffix(Monnam(mtmp)));
|
pline("%s leash snaps loose!", s_suffix(Monnam(mtmp)));
|
||||||
m_unleash(mtmp, FALSE);
|
m_unleash(mtmp, FALSE);
|
||||||
} else if (um_dist(mtmp->mx, mtmp->my, 3)) {
|
} else {
|
||||||
You("pull on the leash.");
|
You("pull on the leash.");
|
||||||
if (mtmp->data->msound != MS_SILENT)
|
if (mtmp->data->msound != MS_SILENT)
|
||||||
switch (rn2(3)) {
|
switch (rn2(3)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user