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:
19
src/dog.c
19
src/dog.c
@@ -1012,8 +1012,23 @@ tamedog(struct monst *mtmp, struct obj *obj)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (mtmp->mtame || !mtmp->mcanmove
|
||||
/* monsters with conflicting structures cannot be tamed */
|
||||
/* if already tame, taming magic might make it become tamer */
|
||||
if (mtmp->mtame) {
|
||||
/* maximum tameness is 20, only reachable via eating */
|
||||
if (rnd(10) > mtmp->mtame)
|
||||
mtmp->mtame++;
|
||||
return FALSE; /* didn't just get tamed */
|
||||
}
|
||||
/* pacify angry shopkeeper but don't tame him/her/it/them */
|
||||
if (mtmp->isshk) {
|
||||
make_happy_shk(mtmp, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!mtmp->mcanmove
|
||||
/* monsters with conflicting structures cannot be tamed
|
||||
[note: the various mextra structures don't actually conflict
|
||||
with each other anymore] */
|
||||
|| mtmp->isshk || mtmp->isgd || mtmp->ispriest || mtmp->isminion
|
||||
|| is_covetous(mtmp->data) || is_human(mtmp->data)
|
||||
|| (is_demon(mtmp->data) && !is_demon(g.youmonst.data))
|
||||
|
||||
Reference in New Issue
Block a user