passive damage

As From a bug report, twice.  Change max_passive_dmg to multiply the
result by the number of direct attacks the aggressor can make.  This way, a
tame mind flayer, for example, will avoid pounding on a spotted jelly and
dying as a result of the Nth passive response.
This commit is contained in:
cohrs
2005-03-14 15:27:53 +00:00
parent 4b37407462
commit f1bf488367
2 changed files with 14 additions and 2 deletions

View File

@@ -78,6 +78,7 @@ message order when swapping places with a pet (e.g. into a trap), also use
flyers can get out of pits more easily than non-flyers
allow use of the < command to try to exit a pit
clean up messages when you stop levitation while riding a flying steed
account for all attacks when determining max_passive_dmg
Platform- and/or Interface-Specific Fixes

View File

@@ -370,9 +370,20 @@ int
max_passive_dmg(mdef, magr)
register struct monst *mdef, *magr;
{
int i, dmg = 0;
int i, dmg = 0, multi = 0;
uchar adtyp;
/* each attack by magr can result in passive damage */
for(i = 0; i < NATTK; i++)
switch (magr->data->mattk[i].aatyp) {
case AT_CLAW: case AT_BITE: case AT_KICK: case AT_BUTT: case AT_TUCH:
case AT_STNG: case AT_HUGS: case AT_ENGL: case AT_TENT: case AT_WEAP:
multi++;
break;
default:
break;
}
for(i = 0; i < NATTK; i++)
if(mdef->data->mattk[i].aatyp == AT_NONE ||
mdef->data->mattk[i].aatyp == AT_BOOM) {
@@ -387,7 +398,7 @@ max_passive_dmg(mdef, magr)
dmg *= mdef->data->mattk[i].damd;
} else dmg = 0;
return dmg;
return dmg * multi;
}
return 0;
}