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
+1
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 flyers can get out of pits more easily than non-flyers
allow use of the < command to try to exit a pit allow use of the < command to try to exit a pit
clean up messages when you stop levitation while riding a flying steed 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 Platform- and/or Interface-Specific Fixes
+13 -2
View File
@@ -370,9 +370,20 @@ int
max_passive_dmg(mdef, magr) max_passive_dmg(mdef, magr)
register struct monst *mdef, *magr; register struct monst *mdef, *magr;
{ {
int i, dmg = 0; int i, dmg = 0, multi = 0;
uchar adtyp; 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++) for(i = 0; i < NATTK; i++)
if(mdef->data->mattk[i].aatyp == AT_NONE || if(mdef->data->mattk[i].aatyp == AT_NONE ||
mdef->data->mattk[i].aatyp == AT_BOOM) { mdef->data->mattk[i].aatyp == AT_BOOM) {
@@ -387,7 +398,7 @@ max_passive_dmg(mdef, magr)
dmg *= mdef->data->mattk[i].damd; dmg *= mdef->data->mattk[i].damd;
} else dmg = 0; } else dmg = 0;
return dmg; return dmg * multi;
} }
return 0; return 0;
} }