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:
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user