diff --git a/src/doomdata.h b/src/doomdata.h index e01bab030..f3e149591 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -371,8 +371,9 @@ struct FMapThing int16_t roll; uint32_t RenderStyle; int FloatbobPhase; - double SpotInnerAngle = 10; - double SpotOuterAngle = 25; + double SpotInnerAngle = 10; + double SpotOuterAngle = 25; + int friendlyseeblocks; }; diff --git a/src/namedef.h b/src/namedef.h index f94d00858..ab4080489 100644 --- a/src/namedef.h +++ b/src/namedef.h @@ -504,6 +504,7 @@ xx(ScaleX) xx(ScaleY) xx(SpotInnerAngle) xx(SpotOuterAngle) +xx(FriendlySeeBlocks) xx(Floatbobphase) xx(Floatbobstrength) xx(Target) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 30be37f82..09fdc3eac 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -6032,6 +6032,8 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position) mobj->SpawnPoint = mthing->pos; mobj->SpawnAngle = mthing->angle; mobj->SpawnFlags = mthing->flags; + if (mthing->friendlyseeblocks > 0) + mobj->friendlyseeblocks = mthing->friendlyseeblocks; if (mthing->FloatbobPhase >= 0 && mthing->FloatbobPhase < 64) mobj->FloatBobPhase = mthing->FloatbobPhase; if (mthing->Gravity < 0) mobj->Gravity = -mthing->Gravity; else if (mthing->Gravity > 0) mobj->Gravity *= mthing->Gravity; @@ -8474,5 +8476,6 @@ void PrintMiscActorInfo(AActor *query) Printf("\nSpeed= %f, velocity= x:%f, y:%f, z:%f, combined:%f.\n", query->Speed, query->Vel.X, query->Vel.Y, query->Vel.Z, query->Vel.Length()); Printf("Scale: x:%f, y:%f\n", query->Scale.X, query->Scale.Y); + Printf("FriendlySeeBlocks: %d\n", query->friendlyseeblocks); } } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index a0d0f1842..937f77fa8 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1831,6 +1831,7 @@ void P_LoadThings2 (MapData * map) mti[i].Alpha = -1; mti[i].Health = 1; mti[i].FloatbobPhase = -1; + mti[i].friendlyseeblocks = -1; } delete[] mtp; } diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 4df2d08eb..a19a45d94 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -805,6 +805,10 @@ public: case NAME_SpotOuterAngle: th->SpotOuterAngle = CheckFloat(key); + + case NAME_FriendlySeeBlocks: + CHECK_N(Zd | Zdt) + th->friendlyseeblocks = CheckInt(key); break; default: