From ca02008d03a08f0f67a4d5704034d92856ca9e44 Mon Sep 17 00:00:00 2001 From: PatR Date: Sun, 28 Feb 2016 18:47:01 -0800 Subject: [PATCH] fix #H4219 - renegade Angel banter Lawful angels deliver taunt messages from a pool of messages which might mention the lawful god; demons and non-lawful angels draw from another pool which doesn't mention any gods. Since it is odd for a 'renegade' angel to claim to be operating for its god, choose taunts from the other pool of messages for renegade lawful angels. Not related: some formatting fixups in include/mextra.h. --- doc/fixes36.1 | 2 + include/mextra.h | 100 +++++++++++++++++++++++------------------------ src/wizard.c | 5 ++- 3 files changed, 54 insertions(+), 53 deletions(-) diff --git a/doc/fixes36.1 b/doc/fixes36.1 index a45bffae8..389dc5ee8 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -170,6 +170,8 @@ if a long worm inherited inventory from a previous shape, and if an egg or given when hero could see any tail segment even if head was unseen, making it seem as if worm's inventory was kept in the visible segment Wizard will now steal any quest artifact from hero, not just own role's +prevent a hostile renegade Angel of from delivering taunt + messages which mention threats of retribution from that god Platform- and/or Interface-Specific Fixes diff --git a/include/mextra.h b/include/mextra.h index 8a37a7483..e69d137df 100644 --- a/include/mextra.h +++ b/include/mextra.h @@ -12,55 +12,53 @@ /* * Adding new mextra structures: * - * 1. Add the structure definition and any required macros in this file - * above the mextra struct. - * 2. Add a pointer to your new struct to the mextra struct in this - *file. - * 3. Add a referencing macro at the bottom of this file after the - *mextra - * struct (see MNAME, EGD, EPRI, ESHK, EMIN, or EDOG for examples). - * 4. Create a newXX(mtmp) function and possibly a free_XX(mtmp) - *function - * in an appropriate new or existing source file and add a prototype - * for it to include/extern.h. + * 1. Add the structure definition and any required macros in this + * file above the mextra struct. + * 2. Add a pointer to your new struct to the mextra struct in this + * file. + * 3. Add a referencing macro at bottom of this file after the mextra + * struct (see MNAME, EGD, EPRI, ESHK, EMIN, or EDOG for examples). + * 4. Create a newXX(mtmp) function and possibly a free_XX(mtmp) + * function in an appropriate new or existing source file and add + * a prototype for it to include/extern.h. * - * void FDECL(newXX, (struct monst *)); - * void FDECL(free_XX, (struct monst *)); + * void FDECL(newXX, (struct monst *)); + * void FDECL(free_XX, (struct monst *)); * - * void - * newXX(mtmp) - * struct monst *mtmp; - * { - * if (!mtmp->mextra) mtmp->mextra = newmextra(); - * if (!XX(mtmp)) { - * XX(mtmp) = (struct XX *)alloc(sizeof(struct XX)); - * (void) memset((genericptr_t) XX(mtmp), - * 0, sizeof(struct XX)); - * } - * } + * void + * newXX(mtmp) + * struct monst *mtmp; + * { + * if (!mtmp->mextra) + * mtmp->mextra = newmextra(); + * if (!XX(mtmp)) { + * XX(mtmp) = (struct XX *) alloc(sizeof (struct XX)); + * (void) memset((genericptr_t) XX(mtmp), + * 0, sizeof (struct XX)); + * } + * } * - * 5. Consider adding a new makemon flag MM_XX flag to include/hack.h - *and - * a corresponding change to makemon() if you require your structure - * to be added at monster creation time. Initialize your struct - * after a successful return from makemon(). + * 5. Consider adding a new makemon flag MM_XX flag to include/hack.h + * and a corresponding change to makemon() if you require your + * structure to be added at monster creation time. Initialize your + * struct after a successful return from makemon(). * - * src/makemon.c: if (mmflags & MM_XX) newXX(mtmp); - * your new code: mon = makemon(&mons[mnum], x, y, MM_XX); + * src/makemon.c: if (mmflags & MM_XX) newXX(mtmp); + * your new code: mon = makemon(&mons[mnum], x, y, MM_XX); * - * 6. Adjust size_monst() in src/cmd.c appropriately. - * 7. Adjust dealloc_mextra() in src/mon.c to clean up - * properly during monst deallocation. - * 8. Adjust copy_mextra() in src/mon.c to make duplicate - * copies of your struct or data on another monst struct. - * 9. Adjust restmon() in src/restore.c to deal with your - * struct or data during a restore. - * 10. Adjust savemon() in src/save.c to deal with your - * struct or data during a save. + * 6. Adjust size_monst() in src/cmd.c appropriately. + * 7. Adjust dealloc_mextra() in src/mon.c to clean up + * properly during monst deallocation. + * 8. Adjust copy_mextra() in src/mon.c to make duplicate + * copies of your struct or data on another monst struct. + * 9. Adjust restmon() in src/restore.c to deal with your + * struct or data during a restore. + * 10. Adjust savemon() in src/save.c to deal with your + * struct or data during a save. */ /*** - ** formerly vault.h -- vault guard extension + ** formerly vault.h -- vault guard extension */ #define FCSIZ (ROWNO + COLNO) #define GD_EATGOLD 0x01 @@ -84,7 +82,7 @@ struct egd { }; /*** - ** formerly epri.h -- temple priest extension + ** formerly epri.h -- temple priest extension */ struct epri { aligntyp shralign; /* alignment of priest's shrine */ @@ -100,7 +98,7 @@ struct epri { (and emin extension) */ /*** - ** formerly eshk.h -- shopkeeper extension + ** formerly eshk.h -- shopkeeper extension */ #define REPAIR_DELAY 5 /* minimum delay between shop damage & repair */ #define BILLSZ 200 @@ -135,7 +133,7 @@ struct eshk { }; /*** - ** formerly emin.h -- minion extension + ** formerly emin.h -- minion extension */ struct emin { aligntyp min_align; /* alignment of minion */ @@ -143,17 +141,17 @@ struct emin { }; /*** - ** formerly edog.h -- pet extension + ** formerly edog.h -- pet extension */ -/* various types of pet food, the lower, the better liked */ +/* various types of pet food, the lower, the better liked */ #define DOGFOOD 0 #define CADAVER 1 #define ACCFOOD 2 #define MANFOOD 3 -#define APPORT 4 -#define POISON 5 -#define UNDEF 6 -#define TABU 7 +#define APPORT 4 +#define POISON 5 +#define UNDEF 6 +#define TABU 7 struct edog { long droptime; /* moment dog dropped object */ @@ -169,7 +167,7 @@ struct edog { }; /*** - ** mextra.h -- collection of all monster extensions + ** mextra.h -- collection of all monster extensions */ struct mextra { char *mname; diff --git a/src/wizard.c b/src/wizard.c index f8d72c1c0..6ab8e57bd 100644 --- a/src/wizard.c +++ b/src/wizard.c @@ -751,11 +751,12 @@ register struct monst *mtmp; verbalize("%s %s!", random_malediction[rn2(SIZE(random_malediction))], random_insult[rn2(SIZE(random_insult))]); - } else if (is_lminion(mtmp)) { + } else if (is_lminion(mtmp) + && !(mtmp->isminion && EMIN(mtmp)->renegade)) { com_pager(rn2(QTN_ANGELIC - 1 + (Hallucination ? 1 : 0)) + QT_ANGELIC); } else { - if (!rn2(5)) + if (!rn2(is_minion(mtmp->data) ? 100 : 5)) pline("%s casts aspersions on your ancestry.", Monnam(mtmp)); else com_pager(rn2(QTN_DEMONIC) + QT_DEMONIC); -- 2.40.0