mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-27 05:40:46 +00:00
use properties for letting enemies burn
This commit is contained in:
parent
2a773e2028
commit
c4a0692c76
3 changed files with 56 additions and 55 deletions
|
@ -1137,61 +1137,28 @@ bool actHealDude(DBloodActor* actor, int add, int threshold)
|
|||
|
||||
static bool actKillDudeStage1(DBloodActor* actor, DAMAGE_TYPE damageType)
|
||||
{
|
||||
switch (actor->GetType())
|
||||
auto deathmorph = actor->PointerVar<PClassActor>("deathmorphtype");
|
||||
if (deathmorph)
|
||||
{
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
case kDudeModernCustom:
|
||||
if (actKillModernDude(actor, damageType)) return true;
|
||||
break;
|
||||
#endif
|
||||
case kDudeCerberusTwoHead: // Cerberus
|
||||
seqSpawn(actor->seqStartName(), actor->seqStartID() + 1, actor, nullptr);
|
||||
auto morphSeq = actor->IntVar("morphSeqID");
|
||||
if (morphSeq != 0)
|
||||
{
|
||||
seqSpawn(actor->seqStartName(), actor->seqStartID() + morphSeq, actor, nullptr);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (actor->classflags() & CF_QUICKBURN)
|
||||
{
|
||||
auto burn = actor->PointerVar<PClassActor>("burntype");
|
||||
if (burn && (cl_bloodvanillaenemies || VanillaMode()))
|
||||
{
|
||||
auto burn2 = actor->PointerVar<PClassActor>("vanillaburntype");
|
||||
if (burn2) return false;
|
||||
}
|
||||
actor->ChangeType(burn);
|
||||
aiNewState(actor, NAME_BurnGoto);
|
||||
actHealDude(actor, actor->startHealth(), actor->startHealth());
|
||||
return true;
|
||||
|
||||
case kDudeCultistTommy:
|
||||
case kDudeCultistShotgun:
|
||||
case kDudeCultistTesla:
|
||||
case kDudeCultistTNT:
|
||||
if (damageType == kDamageBurn && actor->xspr.medium == kMediumNormal)
|
||||
{
|
||||
actor->ChangeType(kDudeBurningCultist);
|
||||
aiNewState(actor, NAME_BurnGoto);
|
||||
actHealDude(actor, actor->startHealth(), actor->startHealth());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case kDudeBeast:
|
||||
if (damageType == kDamageBurn && actor->xspr.medium == kMediumNormal)
|
||||
{
|
||||
actor->ChangeType(kDudeBurningBeast);
|
||||
aiNewState(actor, NAME_BurnGoto);
|
||||
actHealDude(actor, actor->startHealth(), actor->startHealth());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case kDudeInnocent:
|
||||
if (damageType == kDamageBurn && actor->xspr.medium == kMediumNormal)
|
||||
{
|
||||
actor->ChangeType(kDudeBurningInnocent);
|
||||
aiNewState(actor, NAME_BurnGoto);
|
||||
actHealDude(actor, actor->startHealth(), actor->startHealth());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case kDudeTinyCaleb:
|
||||
if (cl_bloodvanillaenemies || VanillaMode())
|
||||
break;
|
||||
if (damageType == kDamageBurn && actor->xspr.medium == kMediumNormal)
|
||||
{
|
||||
actor->ChangeType(kDudeBurningTinyCaleb);
|
||||
aiNewState(actor, NAME_BurnGoto);
|
||||
actHealDude(actor, actor->startHealth(), actor->startHealth());
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -1433,6 +1400,8 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
|
|||
{
|
||||
assert(actor->IsDudeActor()&& actor->hasX());
|
||||
|
||||
// if (onKill(killerActor, actor, damageType, damage)) return; // call an optional script handler.
|
||||
|
||||
if (actKillDudeStage1(actor, damageType)) return;
|
||||
|
||||
for (int p = connecthead; p >= 0; p = connectpoint2[p])
|
||||
|
@ -2267,7 +2236,7 @@ static void checkCeilHit(DBloodActor* actor)
|
|||
bool IsBurningDude(DBloodActor* actor)
|
||||
{
|
||||
if (actor == nullptr || !actor->IsDudeActor()) return false;
|
||||
return actor->classflags() & 1;
|
||||
return actor->classflags() & CF_BURNING;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -2404,7 +2373,7 @@ static void checkFloorHit(DBloodActor* actor)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
if (actor2->IsDudeActor() && (actor2->classflags() & 2))
|
||||
if (actor2->IsDudeActor() && (actor2->classflags() & CF_FLOORHITDAMAGE))
|
||||
if (pPlayer && !isShrunk(actor))
|
||||
actDamageSprite(actor, actor2, kDamageBullet, 8);
|
||||
break;
|
||||
|
|
|
@ -34,6 +34,13 @@ struct SPRITEHIT
|
|||
|
||||
class DBloodActor;
|
||||
|
||||
enum classflags
|
||||
{
|
||||
CF_BURNING = 1,
|
||||
CF_FLOORHITDAMAGE = 2,
|
||||
CF_QUICKBURN = 4,
|
||||
};
|
||||
|
||||
class DBloodActor : public DCoreActor
|
||||
{
|
||||
DECLARE_CLASS(DBloodActor, DCoreActor)
|
||||
|
@ -263,6 +270,7 @@ public:
|
|||
return *(int*)(GetClass()->Meta + o_classflags);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
int hinderDamage; // recoil damage
|
||||
int changeTarget; // chance to change target when attacked someone else
|
||||
|
|
|
@ -23,7 +23,10 @@ class BloodDudeBase : Bloodactor
|
|||
|
||||
meta int classflags;
|
||||
meta Sound explodeSound;
|
||||
meta int morphSeqID; // always an index
|
||||
meta class<BloodDudeBase> deathMorphType;
|
||||
meta class<BloodDudeBase> burnType;
|
||||
meta class<BloodDudeBase> vanillaBurnType;
|
||||
|
||||
property prefix: none;
|
||||
property seqStartName: seqStartName;
|
||||
|
@ -46,11 +49,15 @@ class BloodDudeBase : Bloodactor
|
|||
property sideSpeed: sideSpeed;
|
||||
property backSpeed: backSpeed;
|
||||
property turnRange: turnRange;
|
||||
property burnType: burnType;
|
||||
property vanillaBurnType: vanillaBurnType;
|
||||
property morphSeqID: morphSeqID;
|
||||
|
||||
property explodeSound: explodeSound;
|
||||
property deathMorphType: deathMorphType;
|
||||
flagdef burning: classflags, 0;
|
||||
flagdef floorhitdamage: classflags, 1;
|
||||
flagdef quickburn: classflags, 2;
|
||||
|
||||
|
||||
default
|
||||
|
@ -393,7 +400,9 @@ class BloodDudeCultistTommy : BloodDudeBase
|
|||
|
||||
explodesound 717;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
+BloodDudeBase.quickBurn;
|
||||
preloadseq 6, 7, 8, 9, 13, 14, 15;
|
||||
BurnType "BloodDudeBurningCultist";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -426,7 +435,9 @@ class BloodDudeCultistShotgun : BloodDudeBase
|
|||
|
||||
explodesound 717;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
+BloodDudeBase.quickBurn;
|
||||
preloadseq 6, 7, 8, 9, 13, 14, 15;
|
||||
BurnType "BloodDudeBurningCultist";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -458,6 +469,7 @@ class BloodDudeZombieAxeNormal : BloodDudeBase
|
|||
dmgcontrol 256, 256, 112, 256, 256, 256, 160;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
preloadseq 6, 7, 8, 11, 13, 14;
|
||||
BurnType "BloodDudeBurningZombieAxe";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -489,6 +501,7 @@ class BloodDudeZombieButcher : BloodDudeBase
|
|||
dmgcontrol 256, 256, 32, 128, 256, 64, 128;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
preloadseq 6, 7, 8, 9, 10, 11;
|
||||
BurnType "BloodDudeBurningZombieButcher";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -520,6 +533,7 @@ class BloodDudeZombieAxeBuried : BloodDudeBase
|
|||
dmgcontrol 256, 256, 112, 256, 256, 256, 256;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
preloadseq 12, 9, 10;
|
||||
BurnType "BloodDudeBurningZombieAxe";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1162,6 +1176,7 @@ class BloodDudeCerberusTwoHead : BloodDudeBase
|
|||
AISTATE "Burn2", "+6", 4, 60, cerberusBurnSeqCallback2, null, null, null, "Chase";
|
||||
|
||||
deathMorphType "BloodDudeCerberusOneHead";
|
||||
morphseqId 1;
|
||||
+BloodDudeBase.floorhitdamage;
|
||||
preloadseq 6, 7;
|
||||
}
|
||||
|
@ -1469,6 +1484,8 @@ class BloodDudeInnocent : BloodDudeBase
|
|||
dmgcontrol 288, 288, 288, 288, 288, 288, 288;
|
||||
|
||||
explodesound 717;
|
||||
+BloodDudeBase.quickBurn;
|
||||
BurnType "BloodDudeBurningInnocent";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1530,6 +1547,8 @@ class BloodDudeCultistTesla : BloodDudeBase
|
|||
|
||||
explodesound 717;
|
||||
preloadseq 6, 7, 8, 9, 13, 14, 15;
|
||||
+BloodDudeBase.quickBurn;
|
||||
BurnType "BloodDudeBurningCultist";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1562,6 +1581,8 @@ class BloodDudeCultistTNT : BloodDudeBase
|
|||
|
||||
explodesound 717;
|
||||
preloadseq 6, 7, 8, 9, 13, 14, 15;
|
||||
+BloodDudeBase.quickBurn;
|
||||
BurnType "BloodDudeBurningCultist";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1621,6 +1642,9 @@ class BloodDudeTinyCaleb : BloodDudeBase
|
|||
turnrange 67.5;
|
||||
gibtype 7, -1, -1;
|
||||
dmgcontrol 160, 160, 160, 160, 256, 128, 288;
|
||||
+BloodDudeBase.quickBurn;
|
||||
VanillaBurnType "BloodDudeBurningInnocent";
|
||||
BurnType "BloodDudeBurningTinyCaleb";
|
||||
|
||||
explodesound 717;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue