Explicitly list the random breath types

This commit is contained in:
Pasi Kallinen
2022-08-24 10:29:59 +03:00
parent f3f5fa8cfd
commit edae8273b9
3 changed files with 14 additions and 2 deletions

View File

@@ -1657,6 +1657,7 @@ extern boolean resist_conflict(struct monst *);
extern boolean mon_knows_traps(struct monst *, int);
extern void mon_learns_traps(struct monst *, int);
extern void mons_see_trap(struct trap *);
extern int get_atkdam_type(int);
/* ### monmove.c ### */

View File

@@ -1416,4 +1416,16 @@ mons_see_trap(struct trap *ttmp)
}
}
int
get_atkdam_type(int adtyp)
{
if (adtyp == AD_RBRE) {
static const int rnd_breath_typ[] = {
AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE,
AD_DISN, AD_ELEC, AD_DRST, AD_ACID };
return rnd_breath_typ[rn2(SIZE(rnd_breath_typ))];
}
return adtyp;
}
/*mondata.c*/

View File

@@ -893,8 +893,7 @@ breathwep_name(int typ)
int
breamm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
{
/* if new breath types are added, change AD_ACID to max type */
int typ = (mattk->adtyp == AD_RBRE) ? rnd(AD_ACID) : mattk->adtyp ;
int typ = get_atkdam_type(mattk->adtyp);
if (m_lined_up(mtarg, mtmp)) {
if (mtmp->mcan) {