From daad76547d990be11dae200434055c1608054645 Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 10:41:52 -0400
Subject: [PATCH 01/10] - Added 'canonical transparency' cvar r_canontrans -
 this simply turns off transparency for Doom objects that were marked as
 transparent sometime in ZDoom's development cycle

---
 src/actor.h                                  | 1 +
 src/gl/scene/gl_sprite.cpp                   | 8 ++++++++
 src/polyrenderer/scene/poly_sprite.cpp       | 6 +++++-
 src/r_data/renderstyle.cpp                   | 1 +
 src/scripting/thingdef_data.cpp              | 1 +
 src/swrenderer/things/r_sprite.cpp           | 3 +++
 wadsrc/static/zscript/doom/arachnotron.txt   | 1 +
 wadsrc/static/zscript/doom/archvile.txt      | 2 +-
 wadsrc/static/zscript/doom/bossbrain.txt     | 1 +
 wadsrc/static/zscript/doom/bruiser.txt       | 1 +
 wadsrc/static/zscript/doom/cacodemon.txt     | 1 +
 wadsrc/static/zscript/doom/doomartifacts.txt | 1 +
 wadsrc/static/zscript/doom/doomimp.txt       | 1 +
 wadsrc/static/zscript/doom/doommisc.txt      | 1 +
 wadsrc/static/zscript/doom/fatso.txt         | 1 +
 wadsrc/static/zscript/doom/lostsoul.txt      | 2 +-
 wadsrc/static/zscript/doom/revenant.txt      | 2 ++
 wadsrc/static/zscript/doom/weaponbfg.txt     | 1 +
 wadsrc/static/zscript/doom/weaponplasma.txt  | 1 +
 19 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/actor.h b/src/actor.h
index be3f28ec61..5474a82138 100644
--- a/src/actor.h
+++ b/src/actor.h
@@ -402,6 +402,7 @@ enum ActorFlag8
 {
 	MF8_FRIGHTENING		= 0x00000001,	// for those moments when halloween just won't do
 	MF8_INSCROLLSEC		= 0x00000002,	// actor is partially inside a scrolling sector
+	MF8_ZDOOMTRANS		= 0x00000004,	// is not normally transparent in Vanilla Doom
 };
 
 // --- mobj.renderflags ---
diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp
index c491bb33e5..fa5b40decf 100644
--- a/src/gl/scene/gl_sprite.cpp
+++ b/src/gl/scene/gl_sprite.cpp
@@ -75,6 +75,7 @@ CUSTOM_CVAR(Int, gl_fuzztype, 0, CVAR_ARCHIVE)
 }
 
 EXTERN_CVAR (Float, transsouls)
+EXTERN_CVAR (Bool, r_canontrans)
 
 extern TArray<spritedef_t> sprites;
 extern TArray<spriteframe_t> SpriteFrames;
@@ -992,6 +993,13 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 	{
 		trans = 1.f;
 	}
+	if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
+	{	// [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects
+		trans = 1.f;
+		RenderStyle.BlendOp = STYLEOP_Add;
+		RenderStyle.SrcAlpha = STYLEALPHA_One;
+		RenderStyle.DestAlpha = STYLEALPHA_Zero;
+	}
 
 	if (trans >= 1.f - FLT_EPSILON && RenderStyle.BlendOp != STYLEOP_Shadow && (
 		(RenderStyle.SrcAlpha == STYLEALPHA_One && RenderStyle.DestAlpha == STYLEALPHA_Zero) ||
diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp
index 2ddf46df37..fb2c4ea283 100644
--- a/src/polyrenderer/scene/poly_sprite.cpp
+++ b/src/polyrenderer/scene/poly_sprite.cpp
@@ -31,6 +31,7 @@
 
 EXTERN_CVAR(Float, transsouls)
 EXTERN_CVAR(Int, r_drawfuzz)
+EXTERN_CVAR (Bool, r_canontrans)
 
 bool RenderPolySprite::GetLine(AActor *thing, DVector2 &left, DVector2 &right)
 {
@@ -145,7 +146,10 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, const PolyClipPlane
 	args.SetStencilTestValue(stencilValue);
 	args.SetWriteStencil(true, stencilValue);
 	args.SetClipPlane(clipPlane);
-	args.SetStyle(thing->RenderStyle, thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
+	if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
+		args.SetStyle(LegacyRenderStyles[STYLE_Normal], 1.0f, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
+	else
+		args.SetStyle(thing->RenderStyle, thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	args.SetSubsectorDepthTest(true);
 	args.SetWriteSubsectorDepth(false);
 	args.SetWriteStencil(false);
diff --git a/src/r_data/renderstyle.cpp b/src/r_data/renderstyle.cpp
index 987de82b95..11943f46d4 100644
--- a/src/r_data/renderstyle.cpp
+++ b/src/r_data/renderstyle.cpp
@@ -38,6 +38,7 @@
 #include "serializer.h"
 
 CVAR (Bool, r_drawtrans, true, 0)
+CVAR (Bool, r_canontrans, false, CVAR_ARCHIVE)
 CVAR (Int, r_drawfuzz, 1, CVAR_ARCHIVE)
 
 // Convert legacy render styles to flexible render styles.
diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp
index f62ba0c88a..d978136b8a 100644
--- a/src/scripting/thingdef_data.cpp
+++ b/src/scripting/thingdef_data.cpp
@@ -325,6 +325,7 @@ static FFlagDef ActorFlagDefs[]=
 	DEFINE_FLAG(MF7, SPRITEFLIP, AActor, flags7),
 
 	DEFINE_FLAG(MF8, FRIGHTENING, AActor, flags8),
+	DEFINE_FLAG(MF8, ZDOOMTRANS, AActor, flags8),
 
 	// Effect flags
 	DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
diff --git a/src/swrenderer/things/r_sprite.cpp b/src/swrenderer/things/r_sprite.cpp
index 8894300044..c7c2898ba6 100644
--- a/src/swrenderer/things/r_sprite.cpp
+++ b/src/swrenderer/things/r_sprite.cpp
@@ -68,6 +68,7 @@
 
 EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor)
 EXTERN_CVAR(Bool, gl_light_sprites)
+EXTERN_CVAR (Bool, r_canontrans)
 
 namespace swrenderer
 {
@@ -212,6 +213,8 @@ namespace swrenderer
 		if (thing->flags5 & MF5_BRIGHT)
 			vis->renderflags |= RF_FULLBRIGHT; // kg3D
 		vis->RenderStyle = thing->RenderStyle;
+		if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
+			vis->RenderStyle = LegacyRenderStyles[STYLE_Normal];
 		vis->FillColor = thing->fillcolor;
 		vis->Translation = thing->Translation;		// [RH] thing translation table
 		vis->FakeFlatStat = fakeside;
diff --git a/wadsrc/static/zscript/doom/arachnotron.txt b/wadsrc/static/zscript/doom/arachnotron.txt
index c7e11ab146..36bb2b38e9 100644
--- a/wadsrc/static/zscript/doom/arachnotron.txt
+++ b/wadsrc/static/zscript/doom/arachnotron.txt
@@ -72,6 +72,7 @@ class ArachnotronPlasma : Actor
 		Damage 5;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 0.75;
 		SeeSound "baby/attack";
diff --git a/wadsrc/static/zscript/doom/archvile.txt b/wadsrc/static/zscript/doom/archvile.txt
index 2ea153be1c..8e0a98dcb8 100644
--- a/wadsrc/static/zscript/doom/archvile.txt
+++ b/wadsrc/static/zscript/doom/archvile.txt
@@ -70,7 +70,7 @@ class ArchvileFire : Actor
 {
 	Default
 	{
-		+NOBLOCKMAP +NOGRAVITY
+		+NOBLOCKMAP +NOGRAVITY +ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 	}
diff --git a/wadsrc/static/zscript/doom/bossbrain.txt b/wadsrc/static/zscript/doom/bossbrain.txt
index 07f0cc946a..5b87182c9a 100644
--- a/wadsrc/static/zscript/doom/bossbrain.txt
+++ b/wadsrc/static/zscript/doom/bossbrain.txt
@@ -120,6 +120,7 @@ class SpawnFire : Actor
 		Height 78;
 		+NOBLOCKMAP
 		+NOGRAVITY
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/doom/bruiser.txt b/wadsrc/static/zscript/doom/bruiser.txt
index c1faa23c19..81f12db540 100644
--- a/wadsrc/static/zscript/doom/bruiser.txt
+++ b/wadsrc/static/zscript/doom/bruiser.txt
@@ -121,6 +121,7 @@ class BaronBall : Actor
 		Damage 8;
 		Projectile ;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 		SeeSound "baron/attack";
diff --git a/wadsrc/static/zscript/doom/cacodemon.txt b/wadsrc/static/zscript/doom/cacodemon.txt
index b21acacd24..8cd3a50896 100644
--- a/wadsrc/static/zscript/doom/cacodemon.txt
+++ b/wadsrc/static/zscript/doom/cacodemon.txt
@@ -71,6 +71,7 @@ class CacodemonBall : Actor
 		Damage 5;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 		SeeSound "caco/attack";
diff --git a/wadsrc/static/zscript/doom/doomartifacts.txt b/wadsrc/static/zscript/doom/doomartifacts.txt
index a6996cb886..bb04da93c5 100644
--- a/wadsrc/static/zscript/doom/doomartifacts.txt
+++ b/wadsrc/static/zscript/doom/doomartifacts.txt
@@ -97,6 +97,7 @@ class BlurSphere : PowerupGiver
 	{
 		+COUNTITEM
 		+VISIBILITYPULSE
+		+ZDOOMTRANS
 		+INVENTORY.AUTOACTIVATE
 		+INVENTORY.ALWAYSPICKUP
 		+INVENTORY.BIGPOWERUP
diff --git a/wadsrc/static/zscript/doom/doomimp.txt b/wadsrc/static/zscript/doom/doomimp.txt
index d2b93acdd7..c3a187b385 100644
--- a/wadsrc/static/zscript/doom/doomimp.txt
+++ b/wadsrc/static/zscript/doom/doomimp.txt
@@ -77,6 +77,7 @@ class DoomImpBall : Actor
 		Damage 3;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 		SeeSound "imp/attack";
diff --git a/wadsrc/static/zscript/doom/doommisc.txt b/wadsrc/static/zscript/doom/doommisc.txt
index 7d4c9dec4e..c6d8af7179 100644
--- a/wadsrc/static/zscript/doom/doommisc.txt
+++ b/wadsrc/static/zscript/doom/doommisc.txt
@@ -61,6 +61,7 @@ class BulletPuff : Actor
 		+NOGRAVITY
 		+ALLOWPARTICLES
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Translucent";
 		Alpha 0.5;
 		VSpeed 1;
diff --git a/wadsrc/static/zscript/doom/fatso.txt b/wadsrc/static/zscript/doom/fatso.txt
index e70c979243..2e6321650e 100644
--- a/wadsrc/static/zscript/doom/fatso.txt
+++ b/wadsrc/static/zscript/doom/fatso.txt
@@ -74,6 +74,7 @@ class FatShot : Actor
 		Damage 8;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 		SeeSound "fatso/attack";
diff --git a/wadsrc/static/zscript/doom/lostsoul.txt b/wadsrc/static/zscript/doom/lostsoul.txt
index 7d918aa107..ce7f07f519 100644
--- a/wadsrc/static/zscript/doom/lostsoul.txt
+++ b/wadsrc/static/zscript/doom/lostsoul.txt
@@ -15,7 +15,7 @@ class LostSoul : Actor
 		Damage 3;
 		PainChance 256;
 		Monster;
-		+FLOAT +NOGRAVITY +MISSILEMORE +DONTFALL +NOICEDEATH;
+		+FLOAT +NOGRAVITY +MISSILEMORE +DONTFALL +NOICEDEATH +ZDOOMTRANS;
 		AttackSound "skull/melee";
 		PainSound "skull/pain";
 		DeathSound "skull/death";
diff --git a/wadsrc/static/zscript/doom/revenant.txt b/wadsrc/static/zscript/doom/revenant.txt
index 82d5639340..c3a7c218d4 100644
--- a/wadsrc/static/zscript/doom/revenant.txt
+++ b/wadsrc/static/zscript/doom/revenant.txt
@@ -80,6 +80,7 @@ class RevenantTracer : Actor
 		Projectile;
 		+SEEKERMISSILE 
 		+RANDOMIZE
+		+ZDOOMTRANS
 		SeeSound "skeleton/attack";
 		DeathSound "skeleton/tracex";
 		RenderStyle "Add";
@@ -110,6 +111,7 @@ class RevenantTracerSmoke : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+NOTELEPORT
+		+ZDOOMTRANS
 		RenderStyle "Translucent";
 		Alpha 0.5;
 	}
diff --git a/wadsrc/static/zscript/doom/weaponbfg.txt b/wadsrc/static/zscript/doom/weaponbfg.txt
index 9bf0084b34..9da326313b 100644
--- a/wadsrc/static/zscript/doom/weaponbfg.txt
+++ b/wadsrc/static/zscript/doom/weaponbfg.txt
@@ -142,6 +142,7 @@ class BFGBall : Actor
 		Damage 100;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 0.75;
 		DeathSound "weapons/bfgx";
diff --git a/wadsrc/static/zscript/doom/weaponplasma.txt b/wadsrc/static/zscript/doom/weaponplasma.txt
index 945339a356..b66092b829 100644
--- a/wadsrc/static/zscript/doom/weaponplasma.txt
+++ b/wadsrc/static/zscript/doom/weaponplasma.txt
@@ -51,6 +51,7 @@ class PlasmaBall : Actor
 		Damage 5;
 		Projectile;
 		+RANDOMIZE
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 0.75;
 		SeeSound "weapons/plasmaf";

From eeaf6214f7655bf6a832c1a5888c295167b62f40 Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 12:05:43 -0400
Subject: [PATCH 02/10] - fixed: forgot to assign +ZDOOMTRANS to rockets

---
 wadsrc/static/zscript/doom/weaponrlaunch.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/wadsrc/static/zscript/doom/weaponrlaunch.txt b/wadsrc/static/zscript/doom/weaponrlaunch.txt
index 906db38239..042b96823a 100644
--- a/wadsrc/static/zscript/doom/weaponrlaunch.txt
+++ b/wadsrc/static/zscript/doom/weaponrlaunch.txt
@@ -55,6 +55,7 @@ class Rocket : Actor
 		+RANDOMIZE
 		+DEHEXPLOSION
 		+ROCKETTRAIL
+		+ZDOOMTRANS
 		SeeSound "weapons/rocklf";
 		DeathSound "weapons/rocklx";
 		Obituary "$OB_MPROCKET";

From 00bfee8b1e1f2c4de26f8da5889dd9e244885f4a Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 13:13:30 -0400
Subject: [PATCH 03/10] - Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags
 - Added RF_ZDOOMADD - renamed r_canontrans to r_vanillatrans - this
 developer's insanity level has increased by 231%.

---
 src/actor.h                             |  6 +++--
 src/gl/scene/gl_sprite.cpp              | 33 ++++++++++++++++---------
 src/polyrenderer/scene/poly_sprite.cpp  |  6 +++--
 src/r_data/renderstyle.cpp              |  2 +-
 src/scripting/thingdef_data.cpp         |  5 ++--
 src/swrenderer/scene/r_opaque_pass.cpp  |  2 +-
 src/swrenderer/things/r_sprite.cpp      | 13 +++++++---
 wadsrc/static/zscript/heretic/beast.txt |  2 ++
 8 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/src/actor.h b/src/actor.h
index 5474a82138..7dccdc3971 100644
--- a/src/actor.h
+++ b/src/actor.h
@@ -396,13 +396,11 @@ enum ActorFlag7
 	MF7_FORCEZERORADIUSDMG = 0x10000000,	// passes zero radius damage on to P_DamageMobj, this is necessary in some cases where DoSpecialDamage gets overrideen.
 	MF7_NOINFIGHTSPECIES = 0x20000000,	// don't start infights with one's own species.
 	MF7_FORCEINFIGHTING	= 0x40000000,	// overrides a map setting of 'no infighting'.
-	MF7_SPRITEFLIP		= 0x80000000,	// sprite flipped on x-axis
 };
 enum ActorFlag8
 {
 	MF8_FRIGHTENING		= 0x00000001,	// for those moments when halloween just won't do
 	MF8_INSCROLLSEC		= 0x00000002,	// actor is partially inside a scrolling sector
-	MF8_ZDOOMTRANS		= 0x00000004,	// is not normally transparent in Vanilla Doom
 };
 
 // --- mobj.renderflags ---
@@ -444,6 +442,10 @@ enum ActorRenderFlag
 	RF_INTERPOLATEANGLES		= 0x01000000, // [MC] Allow interpolation of the actor's angle, pitch and roll.
 	RF_MAYBEINVISIBLE	= 0x02000000,
 	RF_DONTINTERPOLATE	= 0x04000000,	// no render interpolation ever!
+
+	RF_SPRITEFLIP		= 0x08000000,	// sprite flipped on x-axis
+	RF_ZDOOMTRANS		= 0x10000000,	// is not normally transparent in Vanilla Doom
+	RF_ZDOOMADD		= 0x20000000,	// is not normally additive in Vanilla Hexen/Heretic/Strife
 };
 
 // This translucency value produces the closest match to Heretic's TINTTAB.
diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp
index fa5b40decf..f6fecf0b18 100644
--- a/src/gl/scene/gl_sprite.cpp
+++ b/src/gl/scene/gl_sprite.cpp
@@ -75,7 +75,7 @@ CUSTOM_CVAR(Int, gl_fuzztype, 0, CVAR_ARCHIVE)
 }
 
 EXTERN_CVAR (Float, transsouls)
-EXTERN_CVAR (Bool, r_canontrans)
+EXTERN_CVAR (Bool, r_vanillatrans)
 
 extern TArray<spritedef_t> sprites;
 extern TArray<spriteframe_t> SpriteFrames;
@@ -801,7 +801,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 				sprangle = 0.;
 				rot = 0;
 			}
-			patch = sprites[spritenum].GetSpriteFrame(thing->frame, rot, sprangle, &mirror, !!(thing->flags7 & MF7_SPRITEFLIP));
+			patch = sprites[spritenum].GetSpriteFrame(thing->frame, rot, sprangle, &mirror, !!(thing->renderflags & RF_SPRITEFLIP));
 		}
 
 		if (!patch.isValid()) return;
@@ -817,7 +817,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 		gltexture->GetSpriteRect(&r);
 
 		// [SP] SpriteFlip
-		if (thing->flags7 & MF7_SPRITEFLIP)
+		if (thing->renderflags & RF_SPRITEFLIP)
 			thing->renderflags ^= RF_XFLIP;
 
 		if (mirror ^ !!(thing->renderflags & RF_XFLIP))
@@ -832,7 +832,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 			ur = gltexture->GetSpriteUL();
 		}
 
-		if (thing->flags7 & MF7_SPRITEFLIP) // [SP] Flip back
+		if (thing->renderflags & RF_SPRITEFLIP) // [SP] Flip back
 			thing->renderflags ^= RF_XFLIP;
 
 		r.Scale(sprscale.X, sprscale.Y);
@@ -993,14 +993,25 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 	{
 		trans = 1.f;
 	}
-	if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
-	{	// [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects
-		trans = 1.f;
-		RenderStyle.BlendOp = STYLEOP_Add;
-		RenderStyle.SrcAlpha = STYLEALPHA_One;
-		RenderStyle.DestAlpha = STYLEALPHA_Zero;
-	}
+	if (r_vanillatrans)
+	{
+		// [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects,
+		//   and disable 'additive' translucency for certain objects from other games.
+		if (thing->renderflags & RF_ZDOOMTRANS)
+		{
+			trans = 1.f;
+			RenderStyle.BlendOp = STYLEOP_Add;
+			RenderStyle.SrcAlpha = STYLEALPHA_One;
+			RenderStyle.DestAlpha = STYLEALPHA_Zero;
+		}
+		if (thing->renderflags & RF_ZDOOMADD)
+		{
+			RenderStyle.BlendOp = STYLEOP_Add;
+			RenderStyle.SrcAlpha = STYLEALPHA_Src;
+			RenderStyle.DestAlpha = STYLEALPHA_InvSrc;
+		}
 
+	}
 	if (trans >= 1.f - FLT_EPSILON && RenderStyle.BlendOp != STYLEOP_Shadow && (
 		(RenderStyle.SrcAlpha == STYLEALPHA_One && RenderStyle.DestAlpha == STYLEALPHA_Zero) ||
 		(RenderStyle.SrcAlpha == STYLEALPHA_Src && RenderStyle.DestAlpha == STYLEALPHA_InvSrc)
diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp
index fb2c4ea283..398f37e7b3 100644
--- a/src/polyrenderer/scene/poly_sprite.cpp
+++ b/src/polyrenderer/scene/poly_sprite.cpp
@@ -31,7 +31,7 @@
 
 EXTERN_CVAR(Float, transsouls)
 EXTERN_CVAR(Int, r_drawfuzz)
-EXTERN_CVAR (Bool, r_canontrans)
+EXTERN_CVAR (Bool, r_vanillatrans)
 
 bool RenderPolySprite::GetLine(AActor *thing, DVector2 &left, DVector2 &right)
 {
@@ -146,8 +146,10 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, const PolyClipPlane
 	args.SetStencilTestValue(stencilValue);
 	args.SetWriteStencil(true, stencilValue);
 	args.SetClipPlane(clipPlane);
-	if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
+	if ((thing->renderflags & RF_ZDOOMTRANS) && r_vanillatrans)
 		args.SetStyle(LegacyRenderStyles[STYLE_Normal], 1.0f, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
+	else if ((thing->renderflags & RF_ZDOOMADD) && r_vanillatrans)
+		args.SetStyle(LegacyRenderStyles[STYLE_Translucent], thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	else
 		args.SetStyle(thing->RenderStyle, thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	args.SetSubsectorDepthTest(true);
diff --git a/src/r_data/renderstyle.cpp b/src/r_data/renderstyle.cpp
index 11943f46d4..fc1905f914 100644
--- a/src/r_data/renderstyle.cpp
+++ b/src/r_data/renderstyle.cpp
@@ -38,7 +38,7 @@
 #include "serializer.h"
 
 CVAR (Bool, r_drawtrans, true, 0)
-CVAR (Bool, r_canontrans, false, CVAR_ARCHIVE)
+CVAR (Bool, r_vanillatrans, false, CVAR_ARCHIVE)
 CVAR (Int, r_drawfuzz, 1, CVAR_ARCHIVE)
 
 // Convert legacy render styles to flexible render styles.
diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp
index d978136b8a..e53a7d48a0 100644
--- a/src/scripting/thingdef_data.cpp
+++ b/src/scripting/thingdef_data.cpp
@@ -322,10 +322,8 @@ static FFlagDef ActorFlagDefs[]=
 	DEFINE_FLAG(MF7, FORCEZERORADIUSDMG, AActor, flags7),
 	DEFINE_FLAG(MF7, NOINFIGHTSPECIES, AActor, flags7),
 	DEFINE_FLAG(MF7, FORCEINFIGHTING, AActor, flags7),
-	DEFINE_FLAG(MF7, SPRITEFLIP, AActor, flags7),
 
 	DEFINE_FLAG(MF8, FRIGHTENING, AActor, flags8),
-	DEFINE_FLAG(MF8, ZDOOMTRANS, AActor, flags8),
 
 	// Effect flags
 	DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
@@ -347,6 +345,9 @@ static FFlagDef ActorFlagDefs[]=
 	DEFINE_FLAG(RF, YFLIP, AActor, renderflags),
 	DEFINE_FLAG(RF, INTERPOLATEANGLES, AActor, renderflags),
 	DEFINE_FLAG(RF, DONTINTERPOLATE, AActor, renderflags),
+	DEFINE_FLAG(RF, SPRITEFLIP, AActor, renderflags),
+	DEFINE_FLAG(RF, ZDOOMTRANS, AActor, renderflags),
+	DEFINE_FLAG(RF, ZDOOMADD, AActor, renderflags),
 
 	// Bounce flags
 	DEFINE_FLAG2(BOUNCE_Walls, BOUNCEONWALLS, AActor, BounceFlags),
diff --git a/src/swrenderer/scene/r_opaque_pass.cpp b/src/swrenderer/scene/r_opaque_pass.cpp
index 1838122d0c..bb8081a271 100644
--- a/src/swrenderer/scene/r_opaque_pass.cpp
+++ b/src/swrenderer/scene/r_opaque_pass.cpp
@@ -1007,7 +1007,7 @@ namespace swrenderer
 				DAngle sprangle = thing->GetSpriteAngle((sprite.pos - viewpoint.Pos).Angle(), viewpoint.TicFrac);
 				bool flipX;
 
-				FTextureID tex = sprdef->GetSpriteFrame(thing->frame, -1, sprangle, &flipX, !!(thing->flags7 & MF7_SPRITEFLIP));
+				FTextureID tex = sprdef->GetSpriteFrame(thing->frame, -1, sprangle, &flipX, !!(thing->renderflags & RF_SPRITEFLIP));
 				if (tex.isValid())
 				{
 					if (flipX)
diff --git a/src/swrenderer/things/r_sprite.cpp b/src/swrenderer/things/r_sprite.cpp
index c7c2898ba6..7dcab13eca 100644
--- a/src/swrenderer/things/r_sprite.cpp
+++ b/src/swrenderer/things/r_sprite.cpp
@@ -68,7 +68,7 @@
 
 EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor)
 EXTERN_CVAR(Bool, gl_light_sprites)
-EXTERN_CVAR (Bool, r_canontrans)
+EXTERN_CVAR (Bool, r_vanillatrans)
 
 namespace swrenderer
 {
@@ -147,7 +147,7 @@ namespace swrenderer
 		renderflags ^= renderportal->MirrorFlags & RF_XFLIP;
 
 		// [SP] SpriteFlip
-		if (thing->flags7 & MF7_SPRITEFLIP)
+		if (thing->renderflags & RF_SPRITEFLIP)
 			renderflags ^= RF_XFLIP;
 
 		// calculate edges of the shape
@@ -213,8 +213,13 @@ namespace swrenderer
 		if (thing->flags5 & MF5_BRIGHT)
 			vis->renderflags |= RF_FULLBRIGHT; // kg3D
 		vis->RenderStyle = thing->RenderStyle;
-		if ((thing->flags8 & MF8_ZDOOMTRANS) && r_canontrans)
-			vis->RenderStyle = LegacyRenderStyles[STYLE_Normal];
+		if (r_vanillatrans)
+		{
+			if (thing->renderflags & RF_ZDOOMTRANS)
+				vis->RenderStyle = LegacyRenderStyles[STYLE_Normal];
+			if (thing->renderflags & RF_ZDOOMADD)
+				vis->RenderStyle = LegacyRenderStyles[STYLE_Translucent];
+		}
 		vis->FillColor = thing->fillcolor;
 		vis->Translation = thing->Translation;		// [RH] thing translation table
 		vis->FakeFlatStat = fakeside;
diff --git a/wadsrc/static/zscript/heretic/beast.txt b/wadsrc/static/zscript/heretic/beast.txt
index 209b2da565..9e004f5c14 100644
--- a/wadsrc/static/zscript/heretic/beast.txt
+++ b/wadsrc/static/zscript/heretic/beast.txt
@@ -75,6 +75,7 @@ class BeastBall : Actor
 		-NOBLOCKMAP
 		+WINDTHRUST
 		+SPAWNSOUNDSOURCE
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "beast/attack";
 	}
@@ -104,6 +105,7 @@ class Puffy : Actor
 		+MISSILE
 		+NOTELEPORT
 		+DONTSPLASH
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States

From 91e3b1926459f62a02fdbdb90c9f198cdd015fda Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 13:41:05 -0400
Subject: [PATCH 04/10] - Added +ZDOOMADD to all Heretic, Hexen, and Strife
 actors that needed it (that I know of...) - this developer's insanity level
 increased another 21%

---
 wadsrc/static/zscript/heretic/dsparil.txt         | 4 ++++
 wadsrc/static/zscript/heretic/hereticimp.txt      | 1 +
 wadsrc/static/zscript/heretic/hereticmisc.txt     | 2 +-
 wadsrc/static/zscript/heretic/ironlich.txt        | 3 +++
 wadsrc/static/zscript/heretic/mummy.txt           | 1 +
 wadsrc/static/zscript/heretic/snake.txt           | 1 +
 wadsrc/static/zscript/heretic/weaponblaster.txt   | 1 +
 wadsrc/static/zscript/heretic/weaponcrossbow.txt  | 1 +
 wadsrc/static/zscript/heretic/weaponphoenix.txt   | 1 +
 wadsrc/static/zscript/heretic/weaponskullrod.txt  | 3 +++
 wadsrc/static/zscript/heretic/weaponstaff.txt     | 1 +
 wadsrc/static/zscript/heretic/weaponwand.txt      | 1 +
 wadsrc/static/zscript/heretic/wizard.txt          | 1 +
 wadsrc/static/zscript/hexen/bishop.txt            | 2 +-
 wadsrc/static/zscript/hexen/centaur.txt           | 1 +
 wadsrc/static/zscript/hexen/clericflame.txt       | 8 +++++---
 wadsrc/static/zscript/hexen/demons.txt            | 2 ++
 wadsrc/static/zscript/hexen/dragon.txt            | 2 ++
 wadsrc/static/zscript/hexen/fighteraxe.txt        | 1 +
 wadsrc/static/zscript/hexen/fighterquietus.txt    | 1 +
 wadsrc/static/zscript/hexen/firedemon.txt         | 1 +
 wadsrc/static/zscript/hexen/flame.txt             | 4 ++++
 wadsrc/static/zscript/hexen/heresiarch.txt        | 1 +
 wadsrc/static/zscript/hexen/magelightning.txt     | 3 +++
 wadsrc/static/zscript/hexen/scriptprojectiles.txt | 1 +
 wadsrc/static/zscript/hexen/serpent.txt           | 1 +
 wadsrc/static/zscript/raven/minotaur.txt          | 1 +
 wadsrc/static/zscript/strife/sentinel.txt         | 1 +
 wadsrc/static/zscript/strife/spectral.txt         | 2 ++
 wadsrc/static/zscript/strife/strifestuff.txt      | 1 +
 wadsrc/static/zscript/strife/strifeweapons.txt    | 1 +
 wadsrc/static/zscript/strife/thingstoblowup.txt   | 1 +
 wadsrc/static/zscript/strife/weaponflamer.txt     | 1 +
 wadsrc/static/zscript/strife/weapongrenade.txt    | 1 +
 wadsrc/static/zscript/strife/weaponmauler.txt     | 3 +++
 35 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/wadsrc/static/zscript/heretic/dsparil.txt b/wadsrc/static/zscript/heretic/dsparil.txt
index 579f474928..bc2054f700 100644
--- a/wadsrc/static/zscript/heretic/dsparil.txt
+++ b/wadsrc/static/zscript/heretic/dsparil.txt
@@ -192,6 +192,7 @@ class SorcererFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -410,6 +411,7 @@ class Sorcerer2FX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -457,6 +459,7 @@ class Sorcerer2FXSpark : Actor
 		+NOGRAVITY
 		+NOTELEPORT
 		+CANNOTPUSH
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -481,6 +484,7 @@ class Sorcerer2FX2 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/hereticimp.txt b/wadsrc/static/zscript/heretic/hereticimp.txt
index e6915c7f6b..be3e2e7df3 100644
--- a/wadsrc/static/zscript/heretic/hereticimp.txt
+++ b/wadsrc/static/zscript/heretic/hereticimp.txt
@@ -228,6 +228,7 @@ class HereticImpBall : Actor
 		+SPAWNSOUNDSOURCE
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/heretic/hereticmisc.txt b/wadsrc/static/zscript/heretic/hereticmisc.txt
index b662173527..895c04ed27 100644
--- a/wadsrc/static/zscript/heretic/hereticmisc.txt
+++ b/wadsrc/static/zscript/heretic/hereticmisc.txt
@@ -205,7 +205,7 @@ class TeleGlitter1 : Actor
 {
 	Default
 	{
-		+NOBLOCKMAP +NOGRAVITY +MISSILE
+		+NOBLOCKMAP +NOGRAVITY +MISSILE +ZDOOMADD
 		RenderStyle "Add";
 		Damage 0;
 	}
diff --git a/wadsrc/static/zscript/heretic/ironlich.txt b/wadsrc/static/zscript/heretic/ironlich.txt
index 65e510932e..52fddc6f79 100644
--- a/wadsrc/static/zscript/heretic/ironlich.txt
+++ b/wadsrc/static/zscript/heretic/ironlich.txt
@@ -144,6 +144,7 @@ class HeadFX1 : Actor
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
 		+THRUGHOST
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -195,6 +196,7 @@ class HeadFX2 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -223,6 +225,7 @@ class HeadFX3 : Actor
 		Damage 5;
 		Projectile;
 		+WINDTHRUST	
+		+ZDOOMADD
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
 		-NOBLOCKMAP
diff --git a/wadsrc/static/zscript/heretic/mummy.txt b/wadsrc/static/zscript/heretic/mummy.txt
index 6d01fcea42..453c6e83c8 100644
--- a/wadsrc/static/zscript/heretic/mummy.txt
+++ b/wadsrc/static/zscript/heretic/mummy.txt
@@ -135,6 +135,7 @@ class MummyFX1 : Actor
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
 		+SEEKERMISSILE
+		+ZDOOMADD
 	}
 	States
 	{
diff --git a/wadsrc/static/zscript/heretic/snake.txt b/wadsrc/static/zscript/heretic/snake.txt
index 15ae342aa6..bc0d8344a8 100644
--- a/wadsrc/static/zscript/heretic/snake.txt
+++ b/wadsrc/static/zscript/heretic/snake.txt
@@ -64,6 +64,7 @@ class SnakeProjA : Actor
 		-ACTIVATEPCROSS
 		+WINDTHRUST
 		+SPAWNSOUNDSOURCE
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "snake/attack";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponblaster.txt b/wadsrc/static/zscript/heretic/weaponblaster.txt
index e7e1e92b55..38c30ee14f 100644
--- a/wadsrc/static/zscript/heretic/weaponblaster.txt
+++ b/wadsrc/static/zscript/heretic/weaponblaster.txt
@@ -244,6 +244,7 @@ class BlasterPuff : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "weapons/blasterhit";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponcrossbow.txt b/wadsrc/static/zscript/heretic/weaponcrossbow.txt
index bd5e9517ac..69fd108be7 100644
--- a/wadsrc/static/zscript/heretic/weaponcrossbow.txt
+++ b/wadsrc/static/zscript/heretic/weaponcrossbow.txt
@@ -129,6 +129,7 @@ class CrossbowFX1 : Actor
 		SeeSound "weapons/bowshoot";
 		DeathSound "weapons/bowhit";
 		Obituary "$OB_MPCROSSBOW";
+		+ZDOOMADD
 	}
 
 	States
diff --git a/wadsrc/static/zscript/heretic/weaponphoenix.txt b/wadsrc/static/zscript/heretic/weaponphoenix.txt
index 558a257cdd..a44bb4c13a 100644
--- a/wadsrc/static/zscript/heretic/weaponphoenix.txt
+++ b/wadsrc/static/zscript/heretic/weaponphoenix.txt
@@ -292,6 +292,7 @@ class PhoenixFX2 : Actor
 		DamageType "Fire";
 		Projectile;
 		RenderStyle "Add";
+		+ZDOOMADD
 		Obituary "$OB_MPPPHOENIXROD";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/weaponskullrod.txt b/wadsrc/static/zscript/heretic/weaponskullrod.txt
index da959f7ae7..0e651807eb 100644
--- a/wadsrc/static/zscript/heretic/weaponskullrod.txt
+++ b/wadsrc/static/zscript/heretic/weaponskullrod.txt
@@ -143,6 +143,7 @@ class HornRodFX1 : Actor
 		Damage 3;
 		Projectile;
 		+WINDTHRUST
+		+ZDOOMADD
 		-NOBLOCKMAP
 		RenderStyle "Add";
 		SeeSound "weapons/hornrodshoot";
@@ -177,6 +178,7 @@ class HornRodFX2 : Actor
 		Health 140;
 		Projectile;
 		RenderStyle "Add";
+		+ZDOOMADD
 		SeeSound "weapons/hornrodpowshoot";
 		DeathSound "weapons/hornrodpowhit";
 		Obituary "$OB_MPPSKULLROD";
@@ -364,6 +366,7 @@ class RainPillar : Actor
 		Projectile;
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
+		+ZDOOMADD
 		RenderStyle "Add";
 		Obituary "$OB_MPPSKULLROD";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponstaff.txt b/wadsrc/static/zscript/heretic/weaponstaff.txt
index 85126f5037..1e12377807 100644
--- a/wadsrc/static/zscript/heretic/weaponstaff.txt
+++ b/wadsrc/static/zscript/heretic/weaponstaff.txt
@@ -132,6 +132,7 @@ class StaffPuff2 : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
+		+ZDOOMADD
 		AttackSound "weapons/staffpowerhit";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/weaponwand.txt b/wadsrc/static/zscript/heretic/weaponwand.txt
index 9516aa76c1..38cd9e2de2 100644
--- a/wadsrc/static/zscript/heretic/weaponwand.txt
+++ b/wadsrc/static/zscript/heretic/weaponwand.txt
@@ -142,6 +142,7 @@ class GoldWandFX1 : Actor
 		Damage 2;
 		Projectile;
 		RenderStyle "Add";
+		+ZDOOMADD
 		DeathSound "weapons/wandhit";
 		Obituary "$OB_MPPGOLDWAND";
 	}
diff --git a/wadsrc/static/zscript/heretic/wizard.txt b/wadsrc/static/zscript/heretic/wizard.txt
index d146ae2203..a3772573cf 100644
--- a/wadsrc/static/zscript/heretic/wizard.txt
+++ b/wadsrc/static/zscript/heretic/wizard.txt
@@ -145,6 +145,7 @@ class WizardFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
diff --git a/wadsrc/static/zscript/hexen/bishop.txt b/wadsrc/static/zscript/hexen/bishop.txt
index 32f0f3e633..8f4b2bd222 100644
--- a/wadsrc/static/zscript/hexen/bishop.txt
+++ b/wadsrc/static/zscript/hexen/bishop.txt
@@ -290,7 +290,7 @@ class BishopFX : Actor
 		Projectile;
 		+SEEKERMISSILE
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
-		+STRIFEDAMAGE
+		+STRIFEDAMAGE +ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "BishopMissileExplode";
 	}
diff --git a/wadsrc/static/zscript/hexen/centaur.txt b/wadsrc/static/zscript/hexen/centaur.txt
index abf2f19d2f..960e79557d 100644
--- a/wadsrc/static/zscript/hexen/centaur.txt
+++ b/wadsrc/static/zscript/hexen/centaur.txt
@@ -154,6 +154,7 @@ class CentaurFX : Actor
 		Damage 4;
 		Projectile;
 		+SPAWNSOUNDSOURCE
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "CentaurLeaderAttack";
 		DeathSound "CentaurMissileExplode";
diff --git a/wadsrc/static/zscript/hexen/clericflame.txt b/wadsrc/static/zscript/hexen/clericflame.txt
index 1978f43f17..a61891452d 100644
--- a/wadsrc/static/zscript/hexen/clericflame.txt
+++ b/wadsrc/static/zscript/hexen/clericflame.txt
@@ -72,7 +72,7 @@ class CFlameFloor : Actor
 {
 	Default
 	{
-		+NOBLOCKMAP +NOGRAVITY
+		+NOBLOCKMAP +NOGRAVITY +ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
@@ -93,8 +93,8 @@ class FlamePuff : Actor
 	{
 		Radius 1;
 		Height 1;
-		+NOBLOCKMAP +NOGRAVITY
-		RenderStyle "Add";;
+		+NOBLOCKMAP +NOGRAVITY +ZDOOMADD
+		RenderStyle "Add";
 		SeeSound "ClericFlameExplode";
 		AttackSound "ClericFlameExplode";
 	}
@@ -159,6 +159,7 @@ class CircleFlame : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "ClericFlameCircle";
 		Obituary "$OB_MPCWEAPFLAME";
@@ -216,6 +217,7 @@ class CFlameMissile : FastProjectile
 		Damage 8;
 		DamageType "Fire";
 		+INVISIBLE
+		+ZDOOMADD
 		RenderStyle "Add";
 		Obituary "$OB_MPCWEAPFLAME";
 	}
diff --git a/wadsrc/static/zscript/hexen/demons.txt b/wadsrc/static/zscript/hexen/demons.txt
index ef4c96d8d8..6bdbbe9f1e 100644
--- a/wadsrc/static/zscript/hexen/demons.txt
+++ b/wadsrc/static/zscript/hexen/demons.txt
@@ -205,6 +205,7 @@ class Demon1FX1 : Actor
 		DamageType "Fire";
 		Projectile;
 		+SPAWNSOUNDSOURCE
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "DemonMissileFire";
 		DeathSound "DemonMissileExplode";
@@ -392,6 +393,7 @@ class Demon2FX1 : Actor
 		DamageType "Fire";
 		Projectile;
 		+SPAWNSOUNDSOURCE
+		+ZDOOMADD
 		RenderStyle "Add";
 		SeeSound "DemonMissileFire";
 		DeathSound "DemonMissileExplode";
diff --git a/wadsrc/static/zscript/hexen/dragon.txt b/wadsrc/static/zscript/hexen/dragon.txt
index 6082d1c61c..2310551862 100644
--- a/wadsrc/static/zscript/hexen/dragon.txt
+++ b/wadsrc/static/zscript/hexen/dragon.txt
@@ -311,6 +311,7 @@ class DragonFireball : Actor
 		DamageType "Fire";
 		Projectile;
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "DragonFireballExplode";
 	}
@@ -364,6 +365,7 @@ class DragonExplosion : Actor
 		+NOBLOCKMAP
 		+NOTELEPORT
 		+INVISIBLE
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "DragonFireballExplode";
 	}
diff --git a/wadsrc/static/zscript/hexen/fighteraxe.txt b/wadsrc/static/zscript/hexen/fighteraxe.txt
index ccf8b5294e..d20a5fc35d 100644
--- a/wadsrc/static/zscript/hexen/fighteraxe.txt
+++ b/wadsrc/static/zscript/hexen/fighteraxe.txt
@@ -307,6 +307,7 @@ class AxePuffGlow : AxePuff
 	Default
 	{
 		+PUFFONACTORS
+		+ZDOOMADD
 		RenderStyle "Add";
 		Alpha 1;
 	}
diff --git a/wadsrc/static/zscript/hexen/fighterquietus.txt b/wadsrc/static/zscript/hexen/fighterquietus.txt
index 53388eece0..c3e5f9b2da 100644
--- a/wadsrc/static/zscript/hexen/fighterquietus.txt
+++ b/wadsrc/static/zscript/hexen/fighterquietus.txt
@@ -168,6 +168,7 @@ class FSwordMissile : Actor
 		Damage 8;
 		Projectile;
 		+EXTREMEDEATH
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "FighterSwordExplode";
 		Obituary "$OB_MPFWEAPQUIETUS";
diff --git a/wadsrc/static/zscript/hexen/firedemon.txt b/wadsrc/static/zscript/hexen/firedemon.txt
index 9ca12529f5..65dff9544a 100644
--- a/wadsrc/static/zscript/hexen/firedemon.txt
+++ b/wadsrc/static/zscript/hexen/firedemon.txt
@@ -436,6 +436,7 @@ class FireDemonMissile : Actor
 		Projectile;
 		RenderStyle "Add";
 		DeathSound "FireDemonMissileHit";
+		+ZDOOMADD
 	}
 	States
 	{
diff --git a/wadsrc/static/zscript/hexen/flame.txt b/wadsrc/static/zscript/hexen/flame.txt
index 4eab6c6d3f..b4574031b3 100644
--- a/wadsrc/static/zscript/hexen/flame.txt
+++ b/wadsrc/static/zscript/hexen/flame.txt
@@ -5,6 +5,7 @@ class FlameSmallTemp : Actor
 	Default
 	{
 		+NOTELEPORT
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -28,6 +29,7 @@ class FlameLargeTemp : Actor
 	Default
 	{
 		+NOTELEPORT
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -62,6 +64,7 @@ class FlameSmall : SwitchableDecoration
 	{
 		+NOTELEPORT
 		+INVISIBLE
+		+ZDOOMADD
 		Radius 15;
 		RenderStyle "Add";
 	}
@@ -95,6 +98,7 @@ class FlameLarge : SwitchableDecoration
 	{
 		+NOTELEPORT
 		+INVISIBLE
+		+ZDOOMADD
 		Radius 15;
 		RenderStyle "Add";
 	}
diff --git a/wadsrc/static/zscript/hexen/heresiarch.txt b/wadsrc/static/zscript/hexen/heresiarch.txt
index f89d2fb839..fd9176a616 100644
--- a/wadsrc/static/zscript/hexen/heresiarch.txt
+++ b/wadsrc/static/zscript/hexen/heresiarch.txt
@@ -1125,6 +1125,7 @@ class SorcSpark1 : Actor
 		+NOBLOCKMAP
 		+DROPOFF
 		+NOTELEPORT
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/hexen/magelightning.txt b/wadsrc/static/zscript/hexen/magelightning.txt
index d45162d49b..a70eeb8e18 100644
--- a/wadsrc/static/zscript/hexen/magelightning.txt
+++ b/wadsrc/static/zscript/hexen/magelightning.txt
@@ -165,6 +165,7 @@ class LightningCeiling : Lightning
 		Damage 8;
 		Projectile;
 		+CEILINGHUGGER
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -319,6 +320,7 @@ class LightningFloor : LightningCeiling
 	{
 		-CEILINGHUGGER
 		+FLOORHUGGER
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 
@@ -374,6 +376,7 @@ class LightningZap : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 		Obituary "$OB_MPMWEAPLIGHTNING";
 	}
diff --git a/wadsrc/static/zscript/hexen/scriptprojectiles.txt b/wadsrc/static/zscript/hexen/scriptprojectiles.txt
index 5bf3f254ff..eebb89b54b 100644
--- a/wadsrc/static/zscript/hexen/scriptprojectiles.txt
+++ b/wadsrc/static/zscript/hexen/scriptprojectiles.txt
@@ -11,6 +11,7 @@ class FireBall : Actor
 		DamageType "Fire";
 		+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE
 		+NOTELEPORT
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "Fireball";
 	}
diff --git a/wadsrc/static/zscript/hexen/serpent.txt b/wadsrc/static/zscript/hexen/serpent.txt
index 98ca6643fd..11bb01fb96 100644
--- a/wadsrc/static/zscript/hexen/serpent.txt
+++ b/wadsrc/static/zscript/hexen/serpent.txt
@@ -317,6 +317,7 @@ class SerpentFX : Actor
 		Damage 4;
 		Projectile;
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 		DeathSound "SerpentFXHit";
 	}
diff --git a/wadsrc/static/zscript/raven/minotaur.txt b/wadsrc/static/zscript/raven/minotaur.txt
index d45ce03f62..14d18a19a0 100644
--- a/wadsrc/static/zscript/raven/minotaur.txt
+++ b/wadsrc/static/zscript/raven/minotaur.txt
@@ -655,6 +655,7 @@ class MinotaurFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/sentinel.txt b/wadsrc/static/zscript/strife/sentinel.txt
index e9e6255d4d..268cd47da1 100644
--- a/wadsrc/static/zscript/strife/sentinel.txt
+++ b/wadsrc/static/zscript/strife/sentinel.txt
@@ -97,6 +97,7 @@ class SentinelFX1 : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
+		+ZDOOMADD
 		MaxStepHeight 4;
 		RenderStyle "Add";
 	}
diff --git a/wadsrc/static/zscript/strife/spectral.txt b/wadsrc/static/zscript/strife/spectral.txt
index a56d9e7178..8fa4cc44aa 100644
--- a/wadsrc/static/zscript/strife/spectral.txt
+++ b/wadsrc/static/zscript/strife/spectral.txt
@@ -112,6 +112,7 @@ class SpectralLightningBase : Actor
 		+ACTIVATEIMPACT
 		+ACTIVATEPCROSS
 		+STRIFEDAMAGE
+		+ZDOOMADD
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/sigil";
@@ -257,6 +258,7 @@ class SpectralLightningHTail : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+DROPOFF
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/strifestuff.txt b/wadsrc/static/zscript/strife/strifestuff.txt
index f08eaa6a55..04f364c750 100644
--- a/wadsrc/static/zscript/strife/strifestuff.txt
+++ b/wadsrc/static/zscript/strife/strifestuff.txt
@@ -632,6 +632,7 @@ class TeleportSwirl : Actor
 	Default
 	{
 		+NOBLOCKMAP
+		+ZDOOMADD
 		RenderStyle "Add";
 		Alpha 0.25;
 	}
diff --git a/wadsrc/static/zscript/strife/strifeweapons.txt b/wadsrc/static/zscript/strife/strifeweapons.txt
index 5cb01342e1..e0d5f8f13f 100644
--- a/wadsrc/static/zscript/strife/strifeweapons.txt
+++ b/wadsrc/static/zscript/strife/strifeweapons.txt
@@ -40,6 +40,7 @@ class StrifeSpark : StrifePuff
 {
 	Default
 	{
+		+ZDOOMADD
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/thingstoblowup.txt b/wadsrc/static/zscript/strife/thingstoblowup.txt
index a2b515efba..abc0320933 100644
--- a/wadsrc/static/zscript/strife/thingstoblowup.txt
+++ b/wadsrc/static/zscript/strife/thingstoblowup.txt
@@ -49,6 +49,7 @@ class Bang4Cloud : Actor
 	{
 		+NOBLOCKMAP
 		+NOGRAVITY
+		+ZDOOMADD
 		RenderStyle "Add";
 		VSpeed 1;
 	}
diff --git a/wadsrc/static/zscript/strife/weaponflamer.txt b/wadsrc/static/zscript/strife/weaponflamer.txt
index 9a47bc2422..521cbc0c57 100644
--- a/wadsrc/static/zscript/strife/weaponflamer.txt
+++ b/wadsrc/static/zscript/strife/weaponflamer.txt
@@ -85,6 +85,7 @@ class FlameMissile : Actor
 		Projectile;
 		-NOGRAVITY
 		+STRIFEDAMAGE
+		+ZDOOMADD
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/flamethrower";
diff --git a/wadsrc/static/zscript/strife/weapongrenade.txt b/wadsrc/static/zscript/strife/weapongrenade.txt
index 21e568313c..eebf028db9 100644
--- a/wadsrc/static/zscript/strife/weapongrenade.txt
+++ b/wadsrc/static/zscript/strife/weapongrenade.txt
@@ -217,6 +217,7 @@ class PhosphorousFire : Actor
 	+NOTELEPORT
 	+NODAMAGETHRUST
 	+DONTSPLASH
+	+ZDOOMADD
 	RenderStyle "Add";
 	Obituary "$OB_MPPHOSPHOROUSGRENADE";
 	}
diff --git a/wadsrc/static/zscript/strife/weaponmauler.txt b/wadsrc/static/zscript/strife/weaponmauler.txt
index 80f3afcdec..4ee9e1baf5 100644
--- a/wadsrc/static/zscript/strife/weaponmauler.txt
+++ b/wadsrc/static/zscript/strife/weaponmauler.txt
@@ -181,6 +181,7 @@ class MaulerPuff : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
+		+ZDOOMADD
 		RenderStyle "Add";
 		DamageType "Disintegrate";
 	}
@@ -206,6 +207,7 @@ class MaulerTorpedo : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
+		+ZDOOMADD
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/mauler2fire";
@@ -268,6 +270,7 @@ class MaulerTorpedoWave : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
+		+ZDOOMADD
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		Obituary "$OB_MPMAULER";

From b240ad081487873a1d4f7892e2db2bd42af5d6aa Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 14:03:51 -0400
Subject: [PATCH 05/10] - removed ZDOOMADD and updated actors in question with
 ZDOOMTRANS

---
 src/actor.h                                       | 1 -
 src/gl/scene/gl_sprite.cpp                        | 7 -------
 src/polyrenderer/scene/poly_sprite.cpp            | 2 --
 src/scripting/thingdef_data.cpp                   | 1 -
 src/swrenderer/things/r_sprite.cpp                | 2 --
 wadsrc/static/zscript/heretic/beast.txt           | 4 ++--
 wadsrc/static/zscript/heretic/dsparil.txt         | 8 ++++----
 wadsrc/static/zscript/heretic/hereticimp.txt      | 2 +-
 wadsrc/static/zscript/heretic/hereticmisc.txt     | 2 +-
 wadsrc/static/zscript/heretic/ironlich.txt        | 6 +++---
 wadsrc/static/zscript/heretic/mummy.txt           | 2 +-
 wadsrc/static/zscript/heretic/snake.txt           | 2 +-
 wadsrc/static/zscript/heretic/weaponblaster.txt   | 2 +-
 wadsrc/static/zscript/heretic/weaponcrossbow.txt  | 2 +-
 wadsrc/static/zscript/heretic/weaponphoenix.txt   | 2 +-
 wadsrc/static/zscript/heretic/weaponskullrod.txt  | 6 +++---
 wadsrc/static/zscript/heretic/weaponstaff.txt     | 2 +-
 wadsrc/static/zscript/heretic/weaponwand.txt      | 2 +-
 wadsrc/static/zscript/heretic/wizard.txt          | 2 +-
 wadsrc/static/zscript/hexen/bishop.txt            | 2 +-
 wadsrc/static/zscript/hexen/centaur.txt           | 2 +-
 wadsrc/static/zscript/hexen/clericflame.txt       | 8 ++++----
 wadsrc/static/zscript/hexen/demons.txt            | 4 ++--
 wadsrc/static/zscript/hexen/dragon.txt            | 4 ++--
 wadsrc/static/zscript/hexen/fighteraxe.txt        | 2 +-
 wadsrc/static/zscript/hexen/fighterquietus.txt    | 2 +-
 wadsrc/static/zscript/hexen/firedemon.txt         | 2 +-
 wadsrc/static/zscript/hexen/flame.txt             | 8 ++++----
 wadsrc/static/zscript/hexen/heresiarch.txt        | 2 +-
 wadsrc/static/zscript/hexen/magelightning.txt     | 6 +++---
 wadsrc/static/zscript/hexen/scriptprojectiles.txt | 2 +-
 wadsrc/static/zscript/hexen/serpent.txt           | 2 +-
 wadsrc/static/zscript/raven/minotaur.txt          | 2 +-
 wadsrc/static/zscript/strife/sentinel.txt         | 2 +-
 wadsrc/static/zscript/strife/spectral.txt         | 4 ++--
 wadsrc/static/zscript/strife/strifestuff.txt      | 2 +-
 wadsrc/static/zscript/strife/strifeweapons.txt    | 2 +-
 wadsrc/static/zscript/strife/thingstoblowup.txt   | 2 +-
 wadsrc/static/zscript/strife/weaponflamer.txt     | 2 +-
 wadsrc/static/zscript/strife/weapongrenade.txt    | 2 +-
 wadsrc/static/zscript/strife/weaponmauler.txt     | 6 +++---
 41 files changed, 57 insertions(+), 70 deletions(-)

diff --git a/src/actor.h b/src/actor.h
index 7dccdc3971..aafb5cec97 100644
--- a/src/actor.h
+++ b/src/actor.h
@@ -445,7 +445,6 @@ enum ActorRenderFlag
 
 	RF_SPRITEFLIP		= 0x08000000,	// sprite flipped on x-axis
 	RF_ZDOOMTRANS		= 0x10000000,	// is not normally transparent in Vanilla Doom
-	RF_ZDOOMADD		= 0x20000000,	// is not normally additive in Vanilla Hexen/Heretic/Strife
 };
 
 // This translucency value produces the closest match to Heretic's TINTTAB.
diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp
index f6fecf0b18..8d053e81cb 100644
--- a/src/gl/scene/gl_sprite.cpp
+++ b/src/gl/scene/gl_sprite.cpp
@@ -1004,13 +1004,6 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 			RenderStyle.SrcAlpha = STYLEALPHA_One;
 			RenderStyle.DestAlpha = STYLEALPHA_Zero;
 		}
-		if (thing->renderflags & RF_ZDOOMADD)
-		{
-			RenderStyle.BlendOp = STYLEOP_Add;
-			RenderStyle.SrcAlpha = STYLEALPHA_Src;
-			RenderStyle.DestAlpha = STYLEALPHA_InvSrc;
-		}
-
 	}
 	if (trans >= 1.f - FLT_EPSILON && RenderStyle.BlendOp != STYLEOP_Shadow && (
 		(RenderStyle.SrcAlpha == STYLEALPHA_One && RenderStyle.DestAlpha == STYLEALPHA_Zero) ||
diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp
index 398f37e7b3..ba91f005bf 100644
--- a/src/polyrenderer/scene/poly_sprite.cpp
+++ b/src/polyrenderer/scene/poly_sprite.cpp
@@ -148,8 +148,6 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, const PolyClipPlane
 	args.SetClipPlane(clipPlane);
 	if ((thing->renderflags & RF_ZDOOMTRANS) && r_vanillatrans)
 		args.SetStyle(LegacyRenderStyles[STYLE_Normal], 1.0f, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
-	else if ((thing->renderflags & RF_ZDOOMADD) && r_vanillatrans)
-		args.SetStyle(LegacyRenderStyles[STYLE_Translucent], thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	else
 		args.SetStyle(thing->RenderStyle, thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	args.SetSubsectorDepthTest(true);
diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp
index e53a7d48a0..b63fd4ecab 100644
--- a/src/scripting/thingdef_data.cpp
+++ b/src/scripting/thingdef_data.cpp
@@ -347,7 +347,6 @@ static FFlagDef ActorFlagDefs[]=
 	DEFINE_FLAG(RF, DONTINTERPOLATE, AActor, renderflags),
 	DEFINE_FLAG(RF, SPRITEFLIP, AActor, renderflags),
 	DEFINE_FLAG(RF, ZDOOMTRANS, AActor, renderflags),
-	DEFINE_FLAG(RF, ZDOOMADD, AActor, renderflags),
 
 	// Bounce flags
 	DEFINE_FLAG2(BOUNCE_Walls, BOUNCEONWALLS, AActor, BounceFlags),
diff --git a/src/swrenderer/things/r_sprite.cpp b/src/swrenderer/things/r_sprite.cpp
index 7dcab13eca..d067b9007b 100644
--- a/src/swrenderer/things/r_sprite.cpp
+++ b/src/swrenderer/things/r_sprite.cpp
@@ -217,8 +217,6 @@ namespace swrenderer
 		{
 			if (thing->renderflags & RF_ZDOOMTRANS)
 				vis->RenderStyle = LegacyRenderStyles[STYLE_Normal];
-			if (thing->renderflags & RF_ZDOOMADD)
-				vis->RenderStyle = LegacyRenderStyles[STYLE_Translucent];
 		}
 		vis->FillColor = thing->fillcolor;
 		vis->Translation = thing->Translation;		// [RH] thing translation table
diff --git a/wadsrc/static/zscript/heretic/beast.txt b/wadsrc/static/zscript/heretic/beast.txt
index 9e004f5c14..e5f30d25b3 100644
--- a/wadsrc/static/zscript/heretic/beast.txt
+++ b/wadsrc/static/zscript/heretic/beast.txt
@@ -75,7 +75,7 @@ class BeastBall : Actor
 		-NOBLOCKMAP
 		+WINDTHRUST
 		+SPAWNSOUNDSOURCE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "beast/attack";
 	}
@@ -105,7 +105,7 @@ class Puffy : Actor
 		+MISSILE
 		+NOTELEPORT
 		+DONTSPLASH
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/heretic/dsparil.txt b/wadsrc/static/zscript/heretic/dsparil.txt
index bc2054f700..70e3c33db1 100644
--- a/wadsrc/static/zscript/heretic/dsparil.txt
+++ b/wadsrc/static/zscript/heretic/dsparil.txt
@@ -192,7 +192,7 @@ class SorcererFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -411,7 +411,7 @@ class Sorcerer2FX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -459,7 +459,7 @@ class Sorcerer2FXSpark : Actor
 		+NOGRAVITY
 		+NOTELEPORT
 		+CANNOTPUSH
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -484,7 +484,7 @@ class Sorcerer2FX2 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/hereticimp.txt b/wadsrc/static/zscript/heretic/hereticimp.txt
index be3e2e7df3..11430712a7 100644
--- a/wadsrc/static/zscript/heretic/hereticimp.txt
+++ b/wadsrc/static/zscript/heretic/hereticimp.txt
@@ -228,7 +228,7 @@ class HereticImpBall : Actor
 		+SPAWNSOUNDSOURCE
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/heretic/hereticmisc.txt b/wadsrc/static/zscript/heretic/hereticmisc.txt
index 895c04ed27..fde9ec582c 100644
--- a/wadsrc/static/zscript/heretic/hereticmisc.txt
+++ b/wadsrc/static/zscript/heretic/hereticmisc.txt
@@ -205,7 +205,7 @@ class TeleGlitter1 : Actor
 {
 	Default
 	{
-		+NOBLOCKMAP +NOGRAVITY +MISSILE +ZDOOMADD
+		+NOBLOCKMAP +NOGRAVITY +MISSILE +ZDOOMTRANS
 		RenderStyle "Add";
 		Damage 0;
 	}
diff --git a/wadsrc/static/zscript/heretic/ironlich.txt b/wadsrc/static/zscript/heretic/ironlich.txt
index 52fddc6f79..c3497a7e2e 100644
--- a/wadsrc/static/zscript/heretic/ironlich.txt
+++ b/wadsrc/static/zscript/heretic/ironlich.txt
@@ -144,7 +144,7 @@ class HeadFX1 : Actor
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
 		+THRUGHOST
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -196,7 +196,7 @@ class HeadFX2 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -225,7 +225,7 @@ class HeadFX3 : Actor
 		Damage 5;
 		Projectile;
 		+WINDTHRUST	
-		+ZDOOMADD
+		+ZDOOMTRANS
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
 		-NOBLOCKMAP
diff --git a/wadsrc/static/zscript/heretic/mummy.txt b/wadsrc/static/zscript/heretic/mummy.txt
index 453c6e83c8..5ccedc9e4c 100644
--- a/wadsrc/static/zscript/heretic/mummy.txt
+++ b/wadsrc/static/zscript/heretic/mummy.txt
@@ -135,7 +135,7 @@ class MummyFX1 : Actor
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
 		+SEEKERMISSILE
-		+ZDOOMADD
+		+ZDOOMTRANS
 	}
 	States
 	{
diff --git a/wadsrc/static/zscript/heretic/snake.txt b/wadsrc/static/zscript/heretic/snake.txt
index bc0d8344a8..e2f5b381f5 100644
--- a/wadsrc/static/zscript/heretic/snake.txt
+++ b/wadsrc/static/zscript/heretic/snake.txt
@@ -64,7 +64,7 @@ class SnakeProjA : Actor
 		-ACTIVATEPCROSS
 		+WINDTHRUST
 		+SPAWNSOUNDSOURCE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "snake/attack";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponblaster.txt b/wadsrc/static/zscript/heretic/weaponblaster.txt
index 38c30ee14f..7a5d60981b 100644
--- a/wadsrc/static/zscript/heretic/weaponblaster.txt
+++ b/wadsrc/static/zscript/heretic/weaponblaster.txt
@@ -244,7 +244,7 @@ class BlasterPuff : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "weapons/blasterhit";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponcrossbow.txt b/wadsrc/static/zscript/heretic/weaponcrossbow.txt
index 69fd108be7..011e579474 100644
--- a/wadsrc/static/zscript/heretic/weaponcrossbow.txt
+++ b/wadsrc/static/zscript/heretic/weaponcrossbow.txt
@@ -129,7 +129,7 @@ class CrossbowFX1 : Actor
 		SeeSound "weapons/bowshoot";
 		DeathSound "weapons/bowhit";
 		Obituary "$OB_MPCROSSBOW";
-		+ZDOOMADD
+		+ZDOOMTRANS
 	}
 
 	States
diff --git a/wadsrc/static/zscript/heretic/weaponphoenix.txt b/wadsrc/static/zscript/heretic/weaponphoenix.txt
index a44bb4c13a..162184f6e2 100644
--- a/wadsrc/static/zscript/heretic/weaponphoenix.txt
+++ b/wadsrc/static/zscript/heretic/weaponphoenix.txt
@@ -292,7 +292,7 @@ class PhoenixFX2 : Actor
 		DamageType "Fire";
 		Projectile;
 		RenderStyle "Add";
-		+ZDOOMADD
+		+ZDOOMTRANS
 		Obituary "$OB_MPPPHOENIXROD";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/weaponskullrod.txt b/wadsrc/static/zscript/heretic/weaponskullrod.txt
index 0e651807eb..edfda93ffb 100644
--- a/wadsrc/static/zscript/heretic/weaponskullrod.txt
+++ b/wadsrc/static/zscript/heretic/weaponskullrod.txt
@@ -143,7 +143,7 @@ class HornRodFX1 : Actor
 		Damage 3;
 		Projectile;
 		+WINDTHRUST
-		+ZDOOMADD
+		+ZDOOMTRANS
 		-NOBLOCKMAP
 		RenderStyle "Add";
 		SeeSound "weapons/hornrodshoot";
@@ -178,7 +178,7 @@ class HornRodFX2 : Actor
 		Health 140;
 		Projectile;
 		RenderStyle "Add";
-		+ZDOOMADD
+		+ZDOOMTRANS
 		SeeSound "weapons/hornrodpowshoot";
 		DeathSound "weapons/hornrodpowhit";
 		Obituary "$OB_MPPSKULLROD";
@@ -366,7 +366,7 @@ class RainPillar : Actor
 		Projectile;
 		-ACTIVATEPCROSS
 		-ACTIVATEIMPACT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Obituary "$OB_MPPSKULLROD";
 	}
diff --git a/wadsrc/static/zscript/heretic/weaponstaff.txt b/wadsrc/static/zscript/heretic/weaponstaff.txt
index 1e12377807..ff57db6209 100644
--- a/wadsrc/static/zscript/heretic/weaponstaff.txt
+++ b/wadsrc/static/zscript/heretic/weaponstaff.txt
@@ -132,7 +132,7 @@ class StaffPuff2 : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		AttackSound "weapons/staffpowerhit";
 	}
 
diff --git a/wadsrc/static/zscript/heretic/weaponwand.txt b/wadsrc/static/zscript/heretic/weaponwand.txt
index 38cd9e2de2..62d46a2409 100644
--- a/wadsrc/static/zscript/heretic/weaponwand.txt
+++ b/wadsrc/static/zscript/heretic/weaponwand.txt
@@ -142,7 +142,7 @@ class GoldWandFX1 : Actor
 		Damage 2;
 		Projectile;
 		RenderStyle "Add";
-		+ZDOOMADD
+		+ZDOOMTRANS
 		DeathSound "weapons/wandhit";
 		Obituary "$OB_MPPGOLDWAND";
 	}
diff --git a/wadsrc/static/zscript/heretic/wizard.txt b/wadsrc/static/zscript/heretic/wizard.txt
index a3772573cf..a1ce5a98bb 100644
--- a/wadsrc/static/zscript/heretic/wizard.txt
+++ b/wadsrc/static/zscript/heretic/wizard.txt
@@ -145,7 +145,7 @@ class WizardFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
diff --git a/wadsrc/static/zscript/hexen/bishop.txt b/wadsrc/static/zscript/hexen/bishop.txt
index 8f4b2bd222..352839e27e 100644
--- a/wadsrc/static/zscript/hexen/bishop.txt
+++ b/wadsrc/static/zscript/hexen/bishop.txt
@@ -290,7 +290,7 @@ class BishopFX : Actor
 		Projectile;
 		+SEEKERMISSILE
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
-		+STRIFEDAMAGE +ZDOOMADD
+		+STRIFEDAMAGE +ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "BishopMissileExplode";
 	}
diff --git a/wadsrc/static/zscript/hexen/centaur.txt b/wadsrc/static/zscript/hexen/centaur.txt
index 960e79557d..8cd5639a21 100644
--- a/wadsrc/static/zscript/hexen/centaur.txt
+++ b/wadsrc/static/zscript/hexen/centaur.txt
@@ -154,7 +154,7 @@ class CentaurFX : Actor
 		Damage 4;
 		Projectile;
 		+SPAWNSOUNDSOURCE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "CentaurLeaderAttack";
 		DeathSound "CentaurMissileExplode";
diff --git a/wadsrc/static/zscript/hexen/clericflame.txt b/wadsrc/static/zscript/hexen/clericflame.txt
index a61891452d..660abf5388 100644
--- a/wadsrc/static/zscript/hexen/clericflame.txt
+++ b/wadsrc/static/zscript/hexen/clericflame.txt
@@ -72,7 +72,7 @@ class CFlameFloor : Actor
 {
 	Default
 	{
-		+NOBLOCKMAP +NOGRAVITY +ZDOOMADD
+		+NOBLOCKMAP +NOGRAVITY +ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
@@ -93,7 +93,7 @@ class FlamePuff : Actor
 	{
 		Radius 1;
 		Height 1;
-		+NOBLOCKMAP +NOGRAVITY +ZDOOMADD
+		+NOBLOCKMAP +NOGRAVITY +ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "ClericFlameExplode";
 		AttackSound "ClericFlameExplode";
@@ -159,7 +159,7 @@ class CircleFlame : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "ClericFlameCircle";
 		Obituary "$OB_MPCWEAPFLAME";
@@ -217,7 +217,7 @@ class CFlameMissile : FastProjectile
 		Damage 8;
 		DamageType "Fire";
 		+INVISIBLE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Obituary "$OB_MPCWEAPFLAME";
 	}
diff --git a/wadsrc/static/zscript/hexen/demons.txt b/wadsrc/static/zscript/hexen/demons.txt
index 6bdbbe9f1e..778bb957ee 100644
--- a/wadsrc/static/zscript/hexen/demons.txt
+++ b/wadsrc/static/zscript/hexen/demons.txt
@@ -205,7 +205,7 @@ class Demon1FX1 : Actor
 		DamageType "Fire";
 		Projectile;
 		+SPAWNSOUNDSOURCE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "DemonMissileFire";
 		DeathSound "DemonMissileExplode";
@@ -393,7 +393,7 @@ class Demon2FX1 : Actor
 		DamageType "Fire";
 		Projectile;
 		+SPAWNSOUNDSOURCE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		SeeSound "DemonMissileFire";
 		DeathSound "DemonMissileExplode";
diff --git a/wadsrc/static/zscript/hexen/dragon.txt b/wadsrc/static/zscript/hexen/dragon.txt
index 2310551862..dceedd55d2 100644
--- a/wadsrc/static/zscript/hexen/dragon.txt
+++ b/wadsrc/static/zscript/hexen/dragon.txt
@@ -311,7 +311,7 @@ class DragonFireball : Actor
 		DamageType "Fire";
 		Projectile;
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "DragonFireballExplode";
 	}
@@ -365,7 +365,7 @@ class DragonExplosion : Actor
 		+NOBLOCKMAP
 		+NOTELEPORT
 		+INVISIBLE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "DragonFireballExplode";
 	}
diff --git a/wadsrc/static/zscript/hexen/fighteraxe.txt b/wadsrc/static/zscript/hexen/fighteraxe.txt
index d20a5fc35d..61e5097443 100644
--- a/wadsrc/static/zscript/hexen/fighteraxe.txt
+++ b/wadsrc/static/zscript/hexen/fighteraxe.txt
@@ -307,7 +307,7 @@ class AxePuffGlow : AxePuff
 	Default
 	{
 		+PUFFONACTORS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 1;
 	}
diff --git a/wadsrc/static/zscript/hexen/fighterquietus.txt b/wadsrc/static/zscript/hexen/fighterquietus.txt
index c3e5f9b2da..b935f8e11b 100644
--- a/wadsrc/static/zscript/hexen/fighterquietus.txt
+++ b/wadsrc/static/zscript/hexen/fighterquietus.txt
@@ -168,7 +168,7 @@ class FSwordMissile : Actor
 		Damage 8;
 		Projectile;
 		+EXTREMEDEATH
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "FighterSwordExplode";
 		Obituary "$OB_MPFWEAPQUIETUS";
diff --git a/wadsrc/static/zscript/hexen/firedemon.txt b/wadsrc/static/zscript/hexen/firedemon.txt
index 65dff9544a..e101564021 100644
--- a/wadsrc/static/zscript/hexen/firedemon.txt
+++ b/wadsrc/static/zscript/hexen/firedemon.txt
@@ -436,7 +436,7 @@ class FireDemonMissile : Actor
 		Projectile;
 		RenderStyle "Add";
 		DeathSound "FireDemonMissileHit";
-		+ZDOOMADD
+		+ZDOOMTRANS
 	}
 	States
 	{
diff --git a/wadsrc/static/zscript/hexen/flame.txt b/wadsrc/static/zscript/hexen/flame.txt
index b4574031b3..b11e5c2d54 100644
--- a/wadsrc/static/zscript/hexen/flame.txt
+++ b/wadsrc/static/zscript/hexen/flame.txt
@@ -5,7 +5,7 @@ class FlameSmallTemp : Actor
 	Default
 	{
 		+NOTELEPORT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -29,7 +29,7 @@ class FlameLargeTemp : Actor
 	Default
 	{
 		+NOTELEPORT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -64,7 +64,7 @@ class FlameSmall : SwitchableDecoration
 	{
 		+NOTELEPORT
 		+INVISIBLE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		Radius 15;
 		RenderStyle "Add";
 	}
@@ -98,7 +98,7 @@ class FlameLarge : SwitchableDecoration
 	{
 		+NOTELEPORT
 		+INVISIBLE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		Radius 15;
 		RenderStyle "Add";
 	}
diff --git a/wadsrc/static/zscript/hexen/heresiarch.txt b/wadsrc/static/zscript/hexen/heresiarch.txt
index fd9176a616..ffb26b1364 100644
--- a/wadsrc/static/zscript/hexen/heresiarch.txt
+++ b/wadsrc/static/zscript/hexen/heresiarch.txt
@@ -1125,7 +1125,7 @@ class SorcSpark1 : Actor
 		+NOBLOCKMAP
 		+DROPOFF
 		+NOTELEPORT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/hexen/magelightning.txt b/wadsrc/static/zscript/hexen/magelightning.txt
index a70eeb8e18..a4b23706be 100644
--- a/wadsrc/static/zscript/hexen/magelightning.txt
+++ b/wadsrc/static/zscript/hexen/magelightning.txt
@@ -165,7 +165,7 @@ class LightningCeiling : Lightning
 		Damage 8;
 		Projectile;
 		+CEILINGHUGGER
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -320,7 +320,7 @@ class LightningFloor : LightningCeiling
 	{
 		-CEILINGHUGGER
 		+FLOORHUGGER
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 
@@ -376,7 +376,7 @@ class LightningZap : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Obituary "$OB_MPMWEAPLIGHTNING";
 	}
diff --git a/wadsrc/static/zscript/hexen/scriptprojectiles.txt b/wadsrc/static/zscript/hexen/scriptprojectiles.txt
index eebb89b54b..819e38e264 100644
--- a/wadsrc/static/zscript/hexen/scriptprojectiles.txt
+++ b/wadsrc/static/zscript/hexen/scriptprojectiles.txt
@@ -11,7 +11,7 @@ class FireBall : Actor
 		DamageType "Fire";
 		+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE
 		+NOTELEPORT
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "Fireball";
 	}
diff --git a/wadsrc/static/zscript/hexen/serpent.txt b/wadsrc/static/zscript/hexen/serpent.txt
index 11bb01fb96..fa1b53d6ca 100644
--- a/wadsrc/static/zscript/hexen/serpent.txt
+++ b/wadsrc/static/zscript/hexen/serpent.txt
@@ -317,7 +317,7 @@ class SerpentFX : Actor
 		Damage 4;
 		Projectile;
 		-ACTIVATEIMPACT -ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DeathSound "SerpentFXHit";
 	}
diff --git a/wadsrc/static/zscript/raven/minotaur.txt b/wadsrc/static/zscript/raven/minotaur.txt
index 14d18a19a0..b44684cb68 100644
--- a/wadsrc/static/zscript/raven/minotaur.txt
+++ b/wadsrc/static/zscript/raven/minotaur.txt
@@ -655,7 +655,7 @@ class MinotaurFX1 : Actor
 		Projectile;
 		-ACTIVATEIMPACT
 		-ACTIVATEPCROSS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/sentinel.txt b/wadsrc/static/zscript/strife/sentinel.txt
index 268cd47da1..190111be7b 100644
--- a/wadsrc/static/zscript/strife/sentinel.txt
+++ b/wadsrc/static/zscript/strife/sentinel.txt
@@ -97,7 +97,7 @@ class SentinelFX1 : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		MaxStepHeight 4;
 		RenderStyle "Add";
 	}
diff --git a/wadsrc/static/zscript/strife/spectral.txt b/wadsrc/static/zscript/strife/spectral.txt
index 8fa4cc44aa..bc7f11f3b3 100644
--- a/wadsrc/static/zscript/strife/spectral.txt
+++ b/wadsrc/static/zscript/strife/spectral.txt
@@ -112,7 +112,7 @@ class SpectralLightningBase : Actor
 		+ACTIVATEIMPACT
 		+ACTIVATEPCROSS
 		+STRIFEDAMAGE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/sigil";
@@ -258,7 +258,7 @@ class SpectralLightningHTail : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+DROPOFF
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/strifestuff.txt b/wadsrc/static/zscript/strife/strifestuff.txt
index 04f364c750..a26e5b6978 100644
--- a/wadsrc/static/zscript/strife/strifestuff.txt
+++ b/wadsrc/static/zscript/strife/strifestuff.txt
@@ -632,7 +632,7 @@ class TeleportSwirl : Actor
 	Default
 	{
 		+NOBLOCKMAP
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		Alpha 0.25;
 	}
diff --git a/wadsrc/static/zscript/strife/strifeweapons.txt b/wadsrc/static/zscript/strife/strifeweapons.txt
index e0d5f8f13f..15f5dea4a4 100644
--- a/wadsrc/static/zscript/strife/strifeweapons.txt
+++ b/wadsrc/static/zscript/strife/strifeweapons.txt
@@ -40,7 +40,7 @@ class StrifeSpark : StrifePuff
 {
 	Default
 	{
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States
diff --git a/wadsrc/static/zscript/strife/thingstoblowup.txt b/wadsrc/static/zscript/strife/thingstoblowup.txt
index abc0320933..f18e783f73 100644
--- a/wadsrc/static/zscript/strife/thingstoblowup.txt
+++ b/wadsrc/static/zscript/strife/thingstoblowup.txt
@@ -49,7 +49,7 @@ class Bang4Cloud : Actor
 	{
 		+NOBLOCKMAP
 		+NOGRAVITY
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		VSpeed 1;
 	}
diff --git a/wadsrc/static/zscript/strife/weaponflamer.txt b/wadsrc/static/zscript/strife/weaponflamer.txt
index 521cbc0c57..1c7a0873a1 100644
--- a/wadsrc/static/zscript/strife/weaponflamer.txt
+++ b/wadsrc/static/zscript/strife/weaponflamer.txt
@@ -85,7 +85,7 @@ class FlameMissile : Actor
 		Projectile;
 		-NOGRAVITY
 		+STRIFEDAMAGE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/flamethrower";
diff --git a/wadsrc/static/zscript/strife/weapongrenade.txt b/wadsrc/static/zscript/strife/weapongrenade.txt
index eebf028db9..8d6a12b2d3 100644
--- a/wadsrc/static/zscript/strife/weapongrenade.txt
+++ b/wadsrc/static/zscript/strife/weapongrenade.txt
@@ -217,7 +217,7 @@ class PhosphorousFire : Actor
 	+NOTELEPORT
 	+NODAMAGETHRUST
 	+DONTSPLASH
-	+ZDOOMADD
+	+ZDOOMTRANS
 	RenderStyle "Add";
 	Obituary "$OB_MPPHOSPHOROUSGRENADE";
 	}
diff --git a/wadsrc/static/zscript/strife/weaponmauler.txt b/wadsrc/static/zscript/strife/weaponmauler.txt
index 4ee9e1baf5..cc4e7c30ce 100644
--- a/wadsrc/static/zscript/strife/weaponmauler.txt
+++ b/wadsrc/static/zscript/strife/weaponmauler.txt
@@ -181,7 +181,7 @@ class MaulerPuff : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
-		+ZDOOMADD
+		+ZDOOMTRANS
 		RenderStyle "Add";
 		DamageType "Disintegrate";
 	}
@@ -207,7 +207,7 @@ class MaulerTorpedo : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		SeeSound "weapons/mauler2fire";
@@ -270,7 +270,7 @@ class MaulerTorpedoWave : Actor
 		DamageType "Disintegrate";
 		Projectile;
 		+STRIFEDAMAGE
-		+ZDOOMADD
+		+ZDOOMTRANS
 		MaxStepHeight 4;
 		RenderStyle "Add";
 		Obituary "$OB_MPMAULER";

From ede15da98c6100ebd0cdcf7cb0912295883cc299 Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Thu, 1 Jun 2017 14:17:49 -0400
Subject: [PATCH 06/10] - fixed: missed the golden wand puff for the
 +ZDOOMTRANS flag

---
 wadsrc/static/zscript/heretic/weaponwand.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/wadsrc/static/zscript/heretic/weaponwand.txt b/wadsrc/static/zscript/heretic/weaponwand.txt
index 62d46a2409..aa08f5c66d 100644
--- a/wadsrc/static/zscript/heretic/weaponwand.txt
+++ b/wadsrc/static/zscript/heretic/weaponwand.txt
@@ -186,6 +186,7 @@ class GoldWandPuff1 : Actor
 		+NOBLOCKMAP
 		+NOGRAVITY
 		+PUFFONACTORS
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 

From 579febb6f85307db838eb77ddd81482fc2dffe60 Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Fri, 2 Jun 2017 12:36:29 -0400
Subject: [PATCH 07/10] - added menu option for r_vanillatrans

---
 wadsrc/static/language.enu | 2 ++
 wadsrc/static/menudef.txt  | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu
index f12fab5517..09bc6580fc 100644
--- a/wadsrc/static/language.enu
+++ b/wadsrc/static/language.enu
@@ -1815,6 +1815,7 @@ DSPLYMNU_SKYMODE				= "Sky render mode";
 DSPLYMNU_LINEARSKY				= "Linear skies";
 DSPLYMNU_GZDFULLBRIGHT			= "Fullbright overrides sector color";
 DSPLYMNU_DRAWFUZZ				= "Use fuzz effect";
+DSPLYMNU_OLDTRANS				= "Classic Transparency";
 DSPLYMNU_TRANSSOUL				= "Lost Soul translucency";
 DSPLYMNU_FAKECONTRAST			= "Use fake contrast";
 DSPLYMNU_ROCKETTRAILS			= "Rocket Trails";
@@ -2367,6 +2368,7 @@ OPTVAL_HWPOLY				= "OpenGL-Accelerated";
 OPTVAL_SWDOOM				= "Doom Software Renderer";
 OPTVAL_DEDICATED			= "High-Performance";
 OPTVAL_INTEGRATED			= "Power-Saving";
+OPTVAL_VANILLA				= "Vanilla";
 
 // Colors
 C_BRICK					= "\cabrick";
diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt
index e27c98a294..b1a6026651 100644
--- a/wadsrc/static/menudef.txt
+++ b/wadsrc/static/menudef.txt
@@ -690,6 +690,12 @@ OptionValue Fuzziness
 	2.0, "$OPTVAL_SHADOW"
 }
 
+OptionValue VanillaTrans
+{
+	0.0, "$OPTVAL_ZDOOM"
+	1.0, "$OPTVAL_VANILLA"
+}
+
 OptionValue GPUSwitch
 {
 	0.0, "$OPTVAL_DEFAULT"
@@ -750,6 +756,7 @@ OptionMenu "VideoOptions"
 	}
 	
 	Option "$DSPLYMNU_DRAWFUZZ",				"r_drawfuzz", "Fuzziness"
+	Option "$DSPLYMNU_OLDTRANS",				"r_vanillatrans", "VanillaTrans"
 	Slider "$DSPLYMNU_TRANSSOUL",				"transsouls", 0.25, 1.0, 0.05, 2
 	Option "$DSPLYMNU_FAKECONTRAST",			"r_fakecontrast", "Contrast"
 	Option "$DSPLYMNU_ROCKETTRAILS",			"cl_rockettrails", "RocketTrailTypes"

From 9871117f56a4b6afb2eef0601f696598d5c660df Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Fri, 2 Jun 2017 12:41:03 -0400
Subject: [PATCH 08/10] - fixed: missed the teleport fog

---
 wadsrc/static/zscript/shared/teleport.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/wadsrc/static/zscript/shared/teleport.txt b/wadsrc/static/zscript/shared/teleport.txt
index dd43bb1fa0..f558b46a67 100644
--- a/wadsrc/static/zscript/shared/teleport.txt
+++ b/wadsrc/static/zscript/shared/teleport.txt
@@ -6,6 +6,7 @@ class TeleportFog : Actor
 		+NOBLOCKMAP
 		+NOTELEPORT
 		+NOGRAVITY
+		+ZDOOMTRANS
 		RenderStyle "Add";
 	}
 	States

From 28821e5eca718e3e1c9f632adbf93b335f897965 Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Fri, 2 Jun 2017 16:57:37 -0400
Subject: [PATCH 09/10] - condense all of unloved/2.pk3's compatibility entries
 together since they are all the same

---
 wadsrc/static/compatibility.txt | 36 ---------------------------------
 1 file changed, 36 deletions(-)

diff --git a/wadsrc/static/compatibility.txt b/wadsrc/static/compatibility.txt
index 2e9a7f1f4a..8863326e12 100644
--- a/wadsrc/static/compatibility.txt
+++ b/wadsrc/static/compatibility.txt
@@ -649,50 +649,14 @@ B68EB7CFB4CC481796E2919B9C16DFBD // Moc11.wad e1m6
 }
 
 1ED329858AB154C55878DA1C11A4F100 // unloved.pk3:unlovedmaps.wad map01
-{
-	clipmidtex
-}
-
 FA23E72FA955E66EC68609F72C0BA71E // unloved.pk3:unlovedmaps.wad map02
-{
-	clipmidtex
-}
-
 41BEC1F643CFEEC997AF98276A05EC88 // unloved.pk3:unlovedmaps.wad map03
-{
-	clipmidtex
-}
-
 AF9A6370BE562584BC11165ECF364713 // unloved.pk3:unlovedmaps.wad map04
-{
-	clipmidtex
-}
-
 DC96228097DD004C40CCB1DB14A91EAA // unloved.pk3:unlovedmaps.wad map05
-{
-	clipmidtex
-}
-
 261E64897A572C8DB8DC041E64BE27AD // unloved2beta1.pk3:u2_new2maps2.wad map06
-{
-	clipmidtex
-}
-
 04800B1F35E8C036EBABC8C616402927 // unloved2beta1.pk3:u2_new2maps2.wad map07
-{
-	clipmidtex
-}
-
 9E54F70648A77BBD090FF78A3AA05367 // unloved2beta1.pk3:u2_new2maps2.wad map08
-{
-	clipmidtex
-}
-
 72E9E0F41F691B7F956E62F35B4A617F // unloved2beta1.pk3:u2_new2maps2.wad map09
-{
-	clipmidtex
-}
-
 3D3FE412E87AD8B2316DAEC9E25F2E5D // unloved2beta1.pk3:u2_new2maps2.wad map10
 {
 	clipmidtex

From 9af370f51ec04f9c780dc79e5339b7ee5b43eade Mon Sep 17 00:00:00 2001
From: Rachael Alexanderson <eruanna@drdteam.org>
Date: Sat, 3 Jun 2017 20:00:53 -0400
Subject: [PATCH 10/10] - Added auto-detection scheme for r_vanillatrans It now
 works the following way: (0) - Force off (ZDoom defaults) (1) - Force on
 (Doom defaults) (2) - Auto off (Prefer ZDoom defaults - if DEHACKED is
 detected with no ZSCRIPT it will turn on) (default) (3) - Auto on (Prefer
 Doom defaults - if DECORATE is detected with no ZSCRIPT it will turn off)

---
 src/CMakeLists.txt                     |  1 +
 src/d_main.cpp                         |  4 ++
 src/gl/scene/gl_sprite.cpp             |  4 +-
 src/polyrenderer/scene/poly_sprite.cpp |  4 +-
 src/r_data/r_vanillatrans.cpp          | 67 ++++++++++++++++++++++++++
 src/r_data/r_vanillatrans.h            |  3 ++
 src/r_data/renderstyle.cpp             |  1 -
 src/swrenderer/things/r_sprite.cpp     |  4 +-
 wadsrc/static/language.enu             |  4 ++
 wadsrc/static/menudef.txt              |  6 ++-
 10 files changed, 89 insertions(+), 9 deletions(-)
 create mode 100644 src/r_data/r_vanillatrans.cpp
 create mode 100644 src/r_data/r_vanillatrans.h

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8a9b2aa87d..10fe6e84d9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1071,6 +1071,7 @@ set (PCH_SOURCES
 	r_data/voxels.cpp
 	r_data/renderstyle.cpp
 	r_data/r_interpolate.cpp
+	r_data/r_vanillatrans.cpp
 	scripting/symbols.cpp
 	scripting/types.cpp
 	scripting/thingdef.cpp
diff --git a/src/d_main.cpp b/src/d_main.cpp
index 650d99ae86..b4b6947a64 100644
--- a/src/d_main.cpp
+++ b/src/d_main.cpp
@@ -116,6 +116,7 @@
 #include "r_utility.h"
 #include "vm.h"
 #include "types.h"
+#include "r_data/r_vanillatrans.h"
 
 EXTERN_CVAR(Bool, hud_althud)
 void DrawHUD();
@@ -2606,6 +2607,9 @@ void D_DoomMain (void)
 			D_CheckNetGame ();
 		}
 
+		// [SP] Force vanilla transparency auto-detection to re-detect our game lumps now
+		UpdateVanillaTransparency();
+
 		// [RH] Lock any cvars that should be locked now that we're
 		// about to begin the game.
 		FBaseCVar::EnableNoSet ();
diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp
index 8d053e81cb..d50c5722eb 100644
--- a/src/gl/scene/gl_sprite.cpp
+++ b/src/gl/scene/gl_sprite.cpp
@@ -39,6 +39,7 @@
 #include "g_levellocals.h"
 #include "events.h"
 #include "actorinlines.h"
+#include "r_data/r_vanillatrans.h"
 
 #include "gl/system/gl_interface.h"
 #include "gl/system/gl_framebuffer.h"
@@ -75,7 +76,6 @@ CUSTOM_CVAR(Int, gl_fuzztype, 0, CVAR_ARCHIVE)
 }
 
 EXTERN_CVAR (Float, transsouls)
-EXTERN_CVAR (Bool, r_vanillatrans)
 
 extern TArray<spritedef_t> sprites;
 extern TArray<spriteframe_t> SpriteFrames;
@@ -993,7 +993,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
 	{
 		trans = 1.f;
 	}
-	if (r_vanillatrans)
+	if (UseVanillaTransparency())
 	{
 		// [SP] "canonical transparency" - with the flip of a CVar, disable transparency for Doom objects,
 		//   and disable 'additive' translucency for certain objects from other games.
diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp
index ba91f005bf..10d6772af8 100644
--- a/src/polyrenderer/scene/poly_sprite.cpp
+++ b/src/polyrenderer/scene/poly_sprite.cpp
@@ -28,10 +28,10 @@
 #include "poly_sprite.h"
 #include "polyrenderer/poly_renderer.h"
 #include "polyrenderer/scene/poly_light.h"
+#include "r_data/r_vanillatrans.h"
 
 EXTERN_CVAR(Float, transsouls)
 EXTERN_CVAR(Int, r_drawfuzz)
-EXTERN_CVAR (Bool, r_vanillatrans)
 
 bool RenderPolySprite::GetLine(AActor *thing, DVector2 &left, DVector2 &right)
 {
@@ -146,7 +146,7 @@ void RenderPolySprite::Render(const TriMatrix &worldToClip, const PolyClipPlane
 	args.SetStencilTestValue(stencilValue);
 	args.SetWriteStencil(true, stencilValue);
 	args.SetClipPlane(clipPlane);
-	if ((thing->renderflags & RF_ZDOOMTRANS) && r_vanillatrans)
+	if ((thing->renderflags & RF_ZDOOMTRANS) && UseVanillaTransparency())
 		args.SetStyle(LegacyRenderStyles[STYLE_Normal], 1.0f, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
 	else
 		args.SetStyle(thing->RenderStyle, thing->Alpha, thing->fillcolor, thing->Translation, tex, fullbrightSprite);
diff --git a/src/r_data/r_vanillatrans.cpp b/src/r_data/r_vanillatrans.cpp
new file mode 100644
index 0000000000..3c40e9dea9
--- /dev/null
+++ b/src/r_data/r_vanillatrans.cpp
@@ -0,0 +1,67 @@
+
+#include "templates.h"
+#include "c_cvars.h"
+#include "w_wad.h"
+#ifdef _DEBUG
+#include "c_dispatch.h"
+#endif
+
+CVAR (Int, r_vanillatrans, 2, CVAR_ARCHIVE)
+
+namespace
+{
+	bool firstTime = true;
+	bool foundDehacked = false;
+	bool foundDecorate = false;
+	bool foundZScript = false;
+}
+#ifdef _DEBUG
+CCMD (debug_checklumps)
+{
+	Printf("firstTime: %d\n", firstTime);
+	Printf("foundDehacked: %d\n", foundDehacked);
+	Printf("foundDecorate: %d\n", foundDecorate);
+	Printf("foundZScript: %d\n", foundZScript);
+}
+#endif
+
+void UpdateVanillaTransparency()
+{
+	firstTime = true;
+}
+
+bool UseVanillaTransparency()
+{
+	if (firstTime)
+	{
+		int lastlump = 0;
+		Wads.FindLump("ZSCRIPT", &lastlump); // ignore first ZScript
+		if (Wads.FindLump("ZSCRIPT", &lastlump) == -1) // no loaded ZScript
+		{
+			lastlump = 0;
+			foundDehacked = Wads.FindLump("DEHACKED", &lastlump) != -1;
+			lastlump = 0;
+			foundDecorate = Wads.FindLump("DECORATE", &lastlump) != -1;
+			foundZScript = false;
+		}
+		else
+		{
+			foundZScript = true;
+			foundDehacked = false;
+			foundDecorate = false;
+		}
+		firstTime = false;
+	}
+
+	switch (r_vanillatrans)
+	{
+		case 0: return false;
+		case 1: return true;
+		default:
+		if (foundDehacked)
+			return true;
+		if (foundDecorate)
+			return false;
+		return r_vanillatrans == 3;
+	}
+}
diff --git a/src/r_data/r_vanillatrans.h b/src/r_data/r_vanillatrans.h
new file mode 100644
index 0000000000..61d9880747
--- /dev/null
+++ b/src/r_data/r_vanillatrans.h
@@ -0,0 +1,3 @@
+
+void UpdateVanillaTransparency();
+bool UseVanillaTransparency();
\ No newline at end of file
diff --git a/src/r_data/renderstyle.cpp b/src/r_data/renderstyle.cpp
index fc1905f914..987de82b95 100644
--- a/src/r_data/renderstyle.cpp
+++ b/src/r_data/renderstyle.cpp
@@ -38,7 +38,6 @@
 #include "serializer.h"
 
 CVAR (Bool, r_drawtrans, true, 0)
-CVAR (Bool, r_vanillatrans, false, CVAR_ARCHIVE)
 CVAR (Int, r_drawfuzz, 1, CVAR_ARCHIVE)
 
 // Convert legacy render styles to flexible render styles.
diff --git a/src/swrenderer/things/r_sprite.cpp b/src/swrenderer/things/r_sprite.cpp
index d067b9007b..f28cff787b 100644
--- a/src/swrenderer/things/r_sprite.cpp
+++ b/src/swrenderer/things/r_sprite.cpp
@@ -65,10 +65,10 @@
 #include "swrenderer/r_memory.h"
 #include "swrenderer/r_renderthread.h"
 #include "a_dynlight.h"
+#include "r_data/r_vanillatrans.h"
 
 EXTERN_CVAR(Bool, r_fullbrightignoresectorcolor)
 EXTERN_CVAR(Bool, gl_light_sprites)
-EXTERN_CVAR (Bool, r_vanillatrans)
 
 namespace swrenderer
 {
@@ -213,7 +213,7 @@ namespace swrenderer
 		if (thing->flags5 & MF5_BRIGHT)
 			vis->renderflags |= RF_FULLBRIGHT; // kg3D
 		vis->RenderStyle = thing->RenderStyle;
-		if (r_vanillatrans)
+		if (UseVanillaTransparency())
 		{
 			if (thing->renderflags & RF_ZDOOMTRANS)
 				vis->RenderStyle = LegacyRenderStyles[STYLE_Normal];
diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu
index 09bc6580fc..fd9ef89699 100644
--- a/wadsrc/static/language.enu
+++ b/wadsrc/static/language.enu
@@ -2369,6 +2369,10 @@ OPTVAL_SWDOOM				= "Doom Software Renderer";
 OPTVAL_DEDICATED			= "High-Performance";
 OPTVAL_INTEGRATED			= "Power-Saving";
 OPTVAL_VANILLA				= "Vanilla";
+OPTVAL_VTFZDOOM				= "ZDoom (Forced)";
+OPTVAL_VTFVANILLA			= "Vanilla (Forced)";
+OPTVAL_VTAZDOOM				= "Auto (Vanilla Preferred)";
+OPTVAL_VTAVANILLA			= "Auto (ZDoom Preferred)";
 
 // Colors
 C_BRICK					= "\cabrick";
diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt
index b1a6026651..68763a5528 100644
--- a/wadsrc/static/menudef.txt
+++ b/wadsrc/static/menudef.txt
@@ -692,8 +692,10 @@ OptionValue Fuzziness
 
 OptionValue VanillaTrans
 {
-	0.0, "$OPTVAL_ZDOOM"
-	1.0, "$OPTVAL_VANILLA"
+	0.0, "$OPTVAL_VTFZDOOM"
+	1.0, "$OPTVAL_VTFVANILLA"
+	0.0, "$OPTVAL_VTAZDOOM"
+	1.0, "$OPTVAL_VTAVANILLA"
 }
 
 OptionValue GPUSwitch