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.
This commit is contained in:
@@ -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,
|
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
|
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
|
Wizard will now steal any quest artifact from hero, not just own role's
|
||||||
|
prevent a hostile renegade Angel of <lawful god> from delivering taunt
|
||||||
|
messages which mention threats of retribution from that god
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
+49
-51
@@ -12,55 +12,53 @@
|
|||||||
/*
|
/*
|
||||||
* Adding new mextra structures:
|
* Adding new mextra structures:
|
||||||
*
|
*
|
||||||
* 1. Add the structure definition and any required macros in this file
|
* 1. Add the structure definition and any required macros in this
|
||||||
* above the mextra struct.
|
* file above the mextra struct.
|
||||||
* 2. Add a pointer to your new struct to the mextra struct in this
|
* 2. Add a pointer to your new struct to the mextra struct in this
|
||||||
*file.
|
* file.
|
||||||
* 3. Add a referencing macro at the bottom of this file after the
|
* 3. Add a referencing macro at bottom of this file after the mextra
|
||||||
*mextra
|
* struct (see MNAME, EGD, EPRI, ESHK, EMIN, or EDOG for examples).
|
||||||
* struct (see MNAME, EGD, EPRI, ESHK, EMIN, or EDOG for examples).
|
* 4. Create a newXX(mtmp) function and possibly a free_XX(mtmp)
|
||||||
* 4. Create a newXX(mtmp) function and possibly a free_XX(mtmp)
|
* function in an appropriate new or existing source file and add
|
||||||
*function
|
* a prototype for it to include/extern.h.
|
||||||
* 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(newXX, (struct monst *));
|
||||||
* void FDECL(free_XX, (struct monst *));
|
* void FDECL(free_XX, (struct monst *));
|
||||||
*
|
*
|
||||||
* void
|
* void
|
||||||
* newXX(mtmp)
|
* newXX(mtmp)
|
||||||
* struct monst *mtmp;
|
* struct monst *mtmp;
|
||||||
* {
|
* {
|
||||||
* if (!mtmp->mextra) mtmp->mextra = newmextra();
|
* if (!mtmp->mextra)
|
||||||
* if (!XX(mtmp)) {
|
* mtmp->mextra = newmextra();
|
||||||
* XX(mtmp) = (struct XX *)alloc(sizeof(struct XX));
|
* if (!XX(mtmp)) {
|
||||||
* (void) memset((genericptr_t) XX(mtmp),
|
* XX(mtmp) = (struct XX *) alloc(sizeof (struct XX));
|
||||||
* 0, 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
|
* 5. Consider adding a new makemon flag MM_XX flag to include/hack.h
|
||||||
*and
|
* and a corresponding change to makemon() if you require your
|
||||||
* a corresponding change to makemon() if you require your structure
|
* structure to be added at monster creation time. Initialize your
|
||||||
* to be added at monster creation time. Initialize your struct
|
* struct after a successful return from makemon().
|
||||||
* after a successful return from makemon().
|
|
||||||
*
|
*
|
||||||
* src/makemon.c: if (mmflags & MM_XX) newXX(mtmp);
|
* src/makemon.c: if (mmflags & MM_XX) newXX(mtmp);
|
||||||
* your new code: mon = makemon(&mons[mnum], x, y, MM_XX);
|
* your new code: mon = makemon(&mons[mnum], x, y, MM_XX);
|
||||||
*
|
*
|
||||||
* 6. Adjust size_monst() in src/cmd.c appropriately.
|
* 6. Adjust size_monst() in src/cmd.c appropriately.
|
||||||
* 7. Adjust dealloc_mextra() in src/mon.c to clean up
|
* 7. Adjust dealloc_mextra() in src/mon.c to clean up
|
||||||
* properly during monst deallocation.
|
* properly during monst deallocation.
|
||||||
* 8. Adjust copy_mextra() in src/mon.c to make duplicate
|
* 8. Adjust copy_mextra() in src/mon.c to make duplicate
|
||||||
* copies of your struct or data on another monst struct.
|
* copies of your struct or data on another monst struct.
|
||||||
* 9. Adjust restmon() in src/restore.c to deal with your
|
* 9. Adjust restmon() in src/restore.c to deal with your
|
||||||
* struct or data during a restore.
|
* struct or data during a restore.
|
||||||
* 10. Adjust savemon() in src/save.c to deal with your
|
* 10. Adjust savemon() in src/save.c to deal with your
|
||||||
* struct or data during a save.
|
* struct or data during a save.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/***
|
/***
|
||||||
** formerly vault.h -- vault guard extension
|
** formerly vault.h -- vault guard extension
|
||||||
*/
|
*/
|
||||||
#define FCSIZ (ROWNO + COLNO)
|
#define FCSIZ (ROWNO + COLNO)
|
||||||
#define GD_EATGOLD 0x01
|
#define GD_EATGOLD 0x01
|
||||||
@@ -84,7 +82,7 @@ struct egd {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***
|
/***
|
||||||
** formerly epri.h -- temple priest extension
|
** formerly epri.h -- temple priest extension
|
||||||
*/
|
*/
|
||||||
struct epri {
|
struct epri {
|
||||||
aligntyp shralign; /* alignment of priest's shrine */
|
aligntyp shralign; /* alignment of priest's shrine */
|
||||||
@@ -100,7 +98,7 @@ struct epri {
|
|||||||
(and emin extension) */
|
(and emin extension) */
|
||||||
|
|
||||||
/***
|
/***
|
||||||
** formerly eshk.h -- shopkeeper extension
|
** formerly eshk.h -- shopkeeper extension
|
||||||
*/
|
*/
|
||||||
#define REPAIR_DELAY 5 /* minimum delay between shop damage & repair */
|
#define REPAIR_DELAY 5 /* minimum delay between shop damage & repair */
|
||||||
#define BILLSZ 200
|
#define BILLSZ 200
|
||||||
@@ -135,7 +133,7 @@ struct eshk {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/***
|
/***
|
||||||
** formerly emin.h -- minion extension
|
** formerly emin.h -- minion extension
|
||||||
*/
|
*/
|
||||||
struct emin {
|
struct emin {
|
||||||
aligntyp min_align; /* alignment of minion */
|
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 DOGFOOD 0
|
||||||
#define CADAVER 1
|
#define CADAVER 1
|
||||||
#define ACCFOOD 2
|
#define ACCFOOD 2
|
||||||
#define MANFOOD 3
|
#define MANFOOD 3
|
||||||
#define APPORT 4
|
#define APPORT 4
|
||||||
#define POISON 5
|
#define POISON 5
|
||||||
#define UNDEF 6
|
#define UNDEF 6
|
||||||
#define TABU 7
|
#define TABU 7
|
||||||
|
|
||||||
struct edog {
|
struct edog {
|
||||||
long droptime; /* moment dog dropped object */
|
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 {
|
struct mextra {
|
||||||
char *mname;
|
char *mname;
|
||||||
|
|||||||
+3
-2
@@ -751,11 +751,12 @@ register struct monst *mtmp;
|
|||||||
verbalize("%s %s!",
|
verbalize("%s %s!",
|
||||||
random_malediction[rn2(SIZE(random_malediction))],
|
random_malediction[rn2(SIZE(random_malediction))],
|
||||||
random_insult[rn2(SIZE(random_insult))]);
|
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))
|
com_pager(rn2(QTN_ANGELIC - 1 + (Hallucination ? 1 : 0))
|
||||||
+ QT_ANGELIC);
|
+ QT_ANGELIC);
|
||||||
} else {
|
} else {
|
||||||
if (!rn2(5))
|
if (!rn2(is_minion(mtmp->data) ? 100 : 5))
|
||||||
pline("%s casts aspersions on your ancestry.", Monnam(mtmp));
|
pline("%s casts aspersions on your ancestry.", Monnam(mtmp));
|
||||||
else
|
else
|
||||||
com_pager(rn2(QTN_DEMONIC) + QT_DEMONIC);
|
com_pager(rn2(QTN_DEMONIC) + QT_DEMONIC);
|
||||||
|
|||||||
Reference in New Issue
Block a user