mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
- added selfdamagefactor actor property.
This commit is contained in:
parent
e84a2899f9
commit
f9f9f2d5fc
5 changed files with 19 additions and 0 deletions
|
@ -257,6 +257,7 @@ PClassActor::PClassActor()
|
|||
WoundHealth = 6;
|
||||
FastSpeed = -1.;
|
||||
RDFactor = 1.;
|
||||
SelfDamageFactor = 1.;
|
||||
CameraHeight = INT_MIN;
|
||||
|
||||
DropItems = NULL;
|
||||
|
@ -317,6 +318,7 @@ void PClassActor::DeriveData(PClass *newclass)
|
|||
newa->WoundHealth = WoundHealth;
|
||||
newa->FastSpeed = FastSpeed;
|
||||
newa->RDFactor = RDFactor;
|
||||
newa->SelfDamageFactor = SelfDamageFactor;
|
||||
newa->CameraHeight = CameraHeight;
|
||||
newa->HowlSound = HowlSound;
|
||||
newa->BloodType = BloodType;
|
||||
|
|
|
@ -299,6 +299,7 @@ public:
|
|||
int WoundHealth; // Health needed to enter wound state
|
||||
double FastSpeed; // speed in fast mode
|
||||
double RDFactor; // Radius damage factor
|
||||
double SelfDamageFactor;
|
||||
double CameraHeight; // Height of camera when used as such
|
||||
FSoundID HowlSound; // Sound being played when electrocuted or poisoned
|
||||
FName BloodType; // Blood replacement type
|
||||
|
|
|
@ -1020,6 +1020,11 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
if (target == source && damage < TELEFRAG_DAMAGE)
|
||||
{
|
||||
damage = int(damage * target->GetClass()->SelfDamageFactor);
|
||||
}
|
||||
|
||||
// [MC] Changed it to check rawdamage here for consistency, even though that doesn't actually do anything
|
||||
// different here. At any rate, invulnerable is being checked before type factoring, which is then being
|
||||
// checked by player cheats/invul/buddha followed by monster buddha. This is inconsistent. Don't let the
|
||||
|
|
|
@ -321,6 +321,7 @@ DEFINE_FIELD(PClassActor, GibHealth)
|
|||
DEFINE_FIELD(PClassActor, WoundHealth)
|
||||
DEFINE_FIELD(PClassActor, FastSpeed)
|
||||
DEFINE_FIELD(PClassActor, RDFactor)
|
||||
DEFINE_FIELD(PClassActor, SelfDamageFactor)
|
||||
DEFINE_FIELD(PClassActor, CameraHeight)
|
||||
DEFINE_FIELD(PClassActor, HowlSound)
|
||||
DEFINE_FIELD(PClassActor, BloodType)
|
||||
|
|
|
@ -1430,6 +1430,16 @@ DEFINE_PROPERTY(radiusdamagefactor, F, Actor)
|
|||
static_cast<PClassActor *>(info)->RDFactor = i;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
DEFINE_PROPERTY(selfdamagefactor, F, Actor)
|
||||
{
|
||||
PROP_DOUBLE_PARM(i, 0);
|
||||
assert(info->IsKindOf(RUNTIME_CLASS(PClassActor)));
|
||||
static_cast<PClassActor *>(info)->SelfDamageFactor = i;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//==========================================================================
|
||||
|
|
Loading…
Reference in a new issue