E void FDECL(mon_regen, (struct monst *, BOOLEAN_P));
E int FDECL(dochugw, (struct monst *));
E boolean FDECL(onscary, (int, int, struct monst *));
+E struct monst *FDECL(find_pmmonst, (int));
E int FDECL(bee_eat_jelly, (struct monst *, struct obj *));
E void FDECL(monflee, (struct monst *, int, BOOLEAN_P, BOOLEAN_P));
E void FDECL(mon_yells, (struct monst *, const char *));
return POISON;
if (obj->otyp == LUMP_OF_ROYAL_JELLY
&& mon->data == &mons[PM_KILLER_BEE]) {
- struct monst *mtmp = 0;
+ struct monst *mtmp = find_pmmonst(PM_QUEEN_BEE);
/* if there's a queen bee on the level, don't eat royal jelly;
if there isn't, do eat it and grow into a queen */
- if ((g.mvitals[PM_QUEEN_BEE].mvflags & G_GENOD) == 0)
- for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
- if (DEADMONSTER(mtmp))
- continue;
- if (mtmp->data == &mons[PM_QUEEN_BEE])
- break;
- }
return !mtmp ? DOGFOOD : TABU;
}
if (!carni && !herbi)
}
}
+struct monst *
+find_pmmonst(pm)
+int pm;
+{
+ struct monst *mtmp = 0;
+
+ if ((g.mvitals[pm].mvflags & G_GENOD) == 0)
+ for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
+ if (DEADMONSTER(mtmp))
+ continue;
+ if (mtmp->data == &mons[pm])
+ break;
+ }
+
+ return mtmp;
+}
+
/* killer bee 'mon' is on a spot containing lump of royal jelly 'obj' and
will eat it if there is no queen bee on the level; return 1: mon died,
0: mon ate jelly and lived; -1: mon didn't eat jelly to use its move */
struct obj *obj;
{
int m_delay;
- struct monst *mtmp = 0;
+ struct monst *mtmp = find_pmmonst(PM_QUEEN_BEE);
- /* find a queen bee */
- if ((g.mvitals[PM_QUEEN_BEE].mvflags & G_GENOD) == 0)
- for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
- if (DEADMONSTER(mtmp))
- continue;
- if (mtmp->data == &mons[PM_QUEEN_BEE])
- break;
- }
/* if there's no queen on the level, eat the royal jelly and become one */
if (!mtmp) {
m_delay = obj->blessed ? 3 : !obj->cursed ? 5 : 7;