From d882a41824ded32d978370ed9b3fd6a7aa1ea2e1 Mon Sep 17 00:00:00 2001 From: inkoalawetrust <56005600+inkoalawetrust@users.noreply.github.com> Date: Mon, 16 Jan 2023 21:35:14 +0200 Subject: [PATCH] Added a ninth actor flag field. --- src/playsim/actor.h | 14 ++++++++++++-- src/playsim/p_actionfunctions.cpp | 1 + src/playsim/p_mobj.cpp | 6 +++++- src/scripting/thingdef_properties.cpp | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/playsim/actor.h b/src/playsim/actor.h index baf78fe2eb..8239f3e11e 100644 --- a/src/playsim/actor.h +++ b/src/playsim/actor.h @@ -206,8 +206,7 @@ enum ActorFlag2 // but still considered solid MF2_INVULNERABLE = 0x08000000, // mobj is invulnerable MF2_DORMANT = 0x10000000, // thing is dormant - MF2_ARGSDEFINED = 0x20000000, // Internal flag used by DECORATE to signal that the - // args should not be taken from the mapthing definition + MF2_ARGSDEFINED = 0x20000000, // Internal flag used by DECORATE to signal that the args should not be taken from the mapthing definition MF2_SEEKERMISSILE = 0x40000000, // is a seeker (for reflection) MF2_REFLECTIVE = 0x80000000, // reflects missiles }; @@ -399,6 +398,8 @@ enum ActorFlag7 MF7_FORCEINFIGHTING = 0x40000000, // overrides a map setting of 'no infighting'. MF7_INCHASE = 0x80000000, // [RH] used by A_Chase and A_Look to avoid recursion }; + +// --- mobj.flags8 --- enum ActorFlag8 { MF8_FRIGHTENING = 0x00000001, // for those moments when halloween just won't do @@ -434,6 +435,12 @@ enum ActorFlag8 MF8_ONLYSLAMSOLID = 0x80000000, // [B] Things with skullfly will ignore non-solid Actors. }; +// --- mobj.flags9 --- +enum ActorFlag9 +{ + +}; + // --- mobj.renderflags --- enum ActorRenderFlag { @@ -588,6 +595,7 @@ typedef TFlags ActorFlags5; typedef TFlags ActorFlags6; typedef TFlags ActorFlags7; typedef TFlags ActorFlags8; +typedef TFlags ActorFlags9; typedef TFlags ActorRenderFlags; typedef TFlags ActorRenderFlags2; typedef TFlags ActorBounceFlags; @@ -600,6 +608,7 @@ DEFINE_TFLAGS_OPERATORS (ActorFlags5) DEFINE_TFLAGS_OPERATORS (ActorFlags6) DEFINE_TFLAGS_OPERATORS (ActorFlags7) DEFINE_TFLAGS_OPERATORS (ActorFlags8) +DEFINE_TFLAGS_OPERATORS (ActorFlags9) DEFINE_TFLAGS_OPERATORS (ActorRenderFlags) DEFINE_TFLAGS_OPERATORS (ActorRenderFlags2) DEFINE_TFLAGS_OPERATORS (ActorBounceFlags) @@ -1080,6 +1089,7 @@ public: ActorFlags6 flags6; // Shit! Where did all the flags go? ActorFlags7 flags7; // WHO WANTS TO BET ON 8!? ActorFlags8 flags8; // I see your 8, and raise you a bet for 9. + ActorFlags9 flags9; // Happy ninth actor flag field GZDoom ! double Floorclip; // value to use for floor clipping double radius, Height; // for movement checking diff --git a/src/playsim/p_actionfunctions.cpp b/src/playsim/p_actionfunctions.cpp index 15cfa62753..5f4a444516 100644 --- a/src/playsim/p_actionfunctions.cpp +++ b/src/playsim/p_actionfunctions.cpp @@ -2089,6 +2089,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_Respawn) self->flags6 = defs->flags6; self->flags7 = defs->flags7; self->flags8 = defs->flags8; + self->flags9 = defs->flags9; self->SetState (self->SpawnState); self->renderflags &= ~RF_INVISIBLE; diff --git a/src/playsim/p_mobj.cpp b/src/playsim/p_mobj.cpp index 57948c2ea1..188eb5dfbe 100644 --- a/src/playsim/p_mobj.cpp +++ b/src/playsim/p_mobj.cpp @@ -234,6 +234,7 @@ void AActor::Serialize(FSerializer &arc) A("flags6", flags6) A("flags7", flags7) A("flags8", flags8) + A("flags9", flags9) A("weaponspecial", weaponspecial) A("special1", special1) A("special2", special2) @@ -6666,7 +6667,7 @@ AActor *P_SpawnMissileXYZ (DVector3 pos, AActor *source, AActor *dest, PClassAct if (dest == NULL) { - Printf ("P_SpawnMissilyXYZ: Tried to shoot %s from %s with no dest\n", + Printf ("P_SpawnMissileXYZ: Tried to shoot %s from %s with no dest\n", type->TypeName.GetChars(), source->GetClass()->TypeName.GetChars()); return NULL; } @@ -7697,6 +7698,9 @@ void PrintMiscActorInfo(AActor *query) Printf("\n flags8: %x", query->flags8.GetValue()); for (flagi = 0; flagi <= 31; flagi++) if (query->flags8 & ActorFlags8::FromInt(1<flags9.GetValue()); + for (flagi = 0; flagi <= 31; flagi++) + if (query->flags9 & ActorFlags9::FromInt(1 << flagi)) Printf(" %s", FLAG_NAME(1 << flagi, flags9)); Printf("\nBounce flags: %x\nBounce factors: f:%f, w:%f", query->BounceFlags.GetValue(), query->bouncefactor, query->wallbouncefactor); diff --git a/src/scripting/thingdef_properties.cpp b/src/scripting/thingdef_properties.cpp index 1202d2489b..675fef34af 100644 --- a/src/scripting/thingdef_properties.cpp +++ b/src/scripting/thingdef_properties.cpp @@ -988,6 +988,7 @@ DEFINE_PROPERTY(clearflags, 0, Actor) defaults->flags6 = 0; defaults->flags7 = 0; defaults->flags8 = 0; + defaults->flags9 = 0; } //==========================================================================