github issue #819 - magic harp vs shopkeeper
Issue reported by youkan700: for shopkeepers, taming via magic harp behaved differently than taming via scroll or spell. Make magic harp's taming be the same as [non-cursed] scroll of taming and spell of charm monster: angry shopkeepers will be pacified (even though they can't be tamed). Also, add something I've been sitting on for ages: when taming magic hits an already tame monster, give that monster a chance to become tamer. Not significant for monsters that eat (unless being starved for some reason) but matters for ones who don't eat. For tameness N (which has a maximum of 20), if N is less than 10, have any taming yield a 10-N out of 10 chance to increase the tameness by 1. So the closer a pet is to becoming feral, the more likely for it to improve tameness a little. Closes #819
This commit is contained in:
@@ -1008,7 +1008,7 @@ forget(int howmuch)
|
||||
|
||||
/* monster is hit by scroll of taming's effect */
|
||||
static int
|
||||
maybe_tame(struct monst* mtmp, struct obj* sobj)
|
||||
maybe_tame(struct monst *mtmp, struct obj *sobj)
|
||||
{
|
||||
int was_tame = mtmp->mtame;
|
||||
unsigned was_peaceful = mtmp->mpeaceful;
|
||||
@@ -1018,9 +1018,9 @@ maybe_tame(struct monst* mtmp, struct obj* sobj)
|
||||
if (was_peaceful && !mtmp->mpeaceful)
|
||||
return -1;
|
||||
} else {
|
||||
if (mtmp->isshk)
|
||||
make_happy_shk(mtmp, FALSE);
|
||||
else if (!resist(mtmp, sobj->oclass, 0, NOTELL))
|
||||
/* for a shopkeeper, tamedog() will call make_happy_shk() but
|
||||
not tame the target, so call it even if taming gets resisted */
|
||||
if (!resist(mtmp, sobj->oclass, 0, NOTELL) || mtmp->isshk)
|
||||
(void) tamedog(mtmp, (struct obj *) 0);
|
||||
if ((!was_peaceful && mtmp->mpeaceful) || (!was_tame && mtmp->mtame))
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user