diff --git a/wadsrc/static/zscript/games/duke/actors/airplane.zs b/wadsrc/static/zscript/games/duke/actors/airplane.zs
index 6f3982dcc..a974abb9b 100644
--- a/wadsrc/static/zscript/games/duke/actors/airplane.zs
+++ b/wadsrc/static/zscript/games/duke/actors/airplane.zs
@@ -2,16 +2,15 @@ class RedneckAirplane : DukeActor
 {
 	default
 	{
-		statnum STAT_ACTOR;
 		pic "AIRPLANE";
-		ScaleX 1;
-		ScaleY 1;
 	}
 	
 	override void Initialize()
 	{
 		self.extra = self.lotag;
 		self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
+		self.Scale = (1, 1);
+		self.ChangeStat(STAT_ACTOR);
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/balloons.zs b/wadsrc/static/zscript/games/duke/actors/balloons.zs
index 17d741df6..89328213e 100644
--- a/wadsrc/static/zscript/games/duke/actors/balloons.zs
+++ b/wadsrc/static/zscript/games/duke/actors/balloons.zs
@@ -3,17 +3,16 @@ class RedneckBalloons1 : DukeActor
 {
 	Default
 	{
-		ScaleX 0.5;
-		ScaleY 0.5;
-		Extra 0;
-		Hitag 0;
-		Statnum STAT_ACTOR;
 		Spriteset "BALLOONS1", "BALLOONS1BROKE";
 	}
 	
 	override void Initialize()
 	{
 		self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
+		self.Scale = (0.5, 0.5);
+		self.extra = 0;
+		self.hitag = 0;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/bloodpool.zs b/wadsrc/static/zscript/games/duke/actors/bloodpool.zs
index 33f4b818a..455a04fdf 100644
--- a/wadsrc/static/zscript/games/duke/actors/bloodpool.zs
+++ b/wadsrc/static/zscript/games/duke/actors/bloodpool.zs
@@ -3,7 +3,6 @@ class DukeBloodPool : DukeActor
 	default
 	{
 		pic "BLOODPOOL";
-		statnum STAT_MISC;
 	}
 	
 	virtual void SetPalette()
@@ -32,6 +31,7 @@ class DukeBloodPool : DukeActor
 		self.cstat |= CSTAT_SPRITE_ALIGNMENT_FLOOR;
 		if (!self.mapSpawned)
 			self.scale = (REPEAT_SCALE, REPEAT_SCALE);
+		self.ChangeStat(STAT_MISC);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/bloodsplats.zs b/wadsrc/static/zscript/games/duke/actors/bloodsplats.zs
index caa6e91ea..5c8d826eb 100644
--- a/wadsrc/static/zscript/games/duke/actors/bloodsplats.zs
+++ b/wadsrc/static/zscript/games/duke/actors/bloodsplats.zs
@@ -2,7 +2,6 @@ class DukeBloodSplat1 : DukeActor
 {
 	default
 	{
-		statnum STAT_MISC;
 		Pic "BLOODSPLAT1";
 	}
 
@@ -15,6 +14,7 @@ class DukeBloodSplat1 : DukeActor
 		if (!self.mapSpawned && self.ownerActor && self.ownerActor.pal == 6)
 			self.pal = 6;
 		self.insertspriteq();
+		self.ChangeStat(STAT_MISC);
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/bolt.zs b/wadsrc/static/zscript/games/duke/actors/bolt.zs
index b3a49685c..7039a592f 100644
--- a/wadsrc/static/zscript/games/duke/actors/bolt.zs
+++ b/wadsrc/static/zscript/games/duke/actors/bolt.zs
@@ -2,14 +2,14 @@ class DukeBolt1 : DukeActor
 {
 	default
 	{
-		yint 0;
-		statnum STAT_STANDABLE;
 		SpriteSet "BOLT1", "BOLT2", "BOLT3", "BOLT4";
 		spritesetindex 0;
 	}
 	override void Initialize()
 	{
 		self.temp_pos.XY = self.scale;
+		self.yint = 0;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/canwithsomething.zs b/wadsrc/static/zscript/games/duke/actors/canwithsomething.zs
index 17ea473be..3ba49dae6 100644
--- a/wadsrc/static/zscript/games/duke/actors/canwithsomething.zs
+++ b/wadsrc/static/zscript/games/duke/actors/canwithsomething.zs
@@ -3,9 +3,6 @@ class DukeCanWithSomething : DukeActor
 {
 	Default
 	{
-		extra 0;
-		clipdist 18;
-		statnum STAT_ZOMBIEACTOR;
 		pic "CANWITHSOMETHING";
 	}
 		
@@ -15,6 +12,9 @@ class DukeCanWithSomething : DukeActor
 			self.scale = (0.5, 0.5);
 		self.makeitfall();
 		self.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip();
+		self.extra = 0;
+		self.clipdist = 18;
+		self.ChangeStat(STAT_ZOMBIEACTOR);
 	}
 
 
diff --git a/wadsrc/static/zscript/games/duke/actors/crack.zs b/wadsrc/static/zscript/games/duke/actors/crack.zs
index ccf983423..9669956f5 100644
--- a/wadsrc/static/zscript/games/duke/actors/crack.zs
+++ b/wadsrc/static/zscript/games/duke/actors/crack.zs
@@ -3,7 +3,6 @@ class DukeCrack : DukeActor
 {
 	default
 	{
-		statnum STAT_STANDABLE;
 		pic "CRACK1";
 	}
 	
@@ -23,6 +22,7 @@ class DukeCrack : DukeActor
 		self.ownerActor = self;
 		self.vel.X = 0.5;
 		self.DoMove(CLIPMASK0);
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/doorshock.zs b/wadsrc/static/zscript/games/duke/actors/doorshock.zs
index 8a62dc06a..71eca82be 100644
--- a/wadsrc/static/zscript/games/duke/actors/doorshock.zs
+++ b/wadsrc/static/zscript/games/duke/actors/doorshock.zs
@@ -2,13 +2,14 @@ class DukeDoorShock : DukeActor
 {
 	default
 	{
-		shade -12;
-		statnum STAT_STANDABLE;
+		pic "DOORSHOCK";
 	}
 
 	override void Initialize()
 	{
 		self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
+		self.shade = -12;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 
 
diff --git a/wadsrc/static/zscript/games/duke/actors/ducktarget.zs b/wadsrc/static/zscript/games/duke/actors/ducktarget.zs
index 28eaddcc6..3fa9d85ef 100644
--- a/wadsrc/static/zscript/games/duke/actors/ducktarget.zs
+++ b/wadsrc/static/zscript/games/duke/actors/ducktarget.zs
@@ -3,13 +3,13 @@ class DukeLetter : DukeActor
 	default
 	{
 		pic "LETTER";
-		statnum STAT_ACTOR;
-		extra 1;
 	}
 	
 	override void Initialize()
 	{
 		self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
+		self.ChangeStat(STAT_ACTOR);
+		self.extra = 1;
 	}
 }
 
diff --git a/wadsrc/static/zscript/games/duke/actors/emptybike.zs b/wadsrc/static/zscript/games/duke/actors/emptybike.zs
index f26b75dbd..403e0692d 100644
--- a/wadsrc/static/zscript/games/duke/actors/emptybike.zs
+++ b/wadsrc/static/zscript/games/duke/actors/emptybike.zs
@@ -4,10 +4,6 @@ class RedneckEmptyBike : DukeActor
 	default
 	{
 		pic "EMPTYBIKE";
-		scaleX 0.28125;
-		scaleY 0.28125;
-		lotag 1;
-		statnum STAT_ACTOR;
 	}
 	
 	override void Initialize()
@@ -18,10 +14,13 @@ class RedneckEmptyBike : DukeActor
 			self.ChangeStat(STAT_MISC);
 			return;
 		}
+		self.lotag = 1;
+		self.Scale = (0.28125, 0.28125);
 		self.pal = 0;
 		self.setClipDistFromTile();
 		self.saved_ammo = 100;
 		self.cstat = CSTAT_SPRITE_BLOCK_ALL;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
@@ -53,10 +52,6 @@ class RedneckEmptyBoat : DukeActor
 	default
 	{
 		pic "EMPTYBOAT";
-		scaleX 0.5;
-		scaleY 0.5;
-		lotag 1;
-		statnum STAT_ACTOR;
 	}
 	
 	override void Initialize()
@@ -67,10 +62,13 @@ class RedneckEmptyBoat : DukeActor
 			self.ChangeStat(STAT_MISC);
 			return;
 		}
+		self.lotag = 1;
+		self.Scale = (0.5, 0.5);
 		self.pal = 0;
 		self.setClipDistFromTile();
 		self.saved_ammo = 20;
 		self.cstat = CSTAT_SPRITE_BLOCK_ALL;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	
diff --git a/wadsrc/static/zscript/games/duke/actors/fireext.zs b/wadsrc/static/zscript/games/duke/actors/fireext.zs
index 04ce4ecc0..f6a47e9bd 100644
--- a/wadsrc/static/zscript/games/duke/actors/fireext.zs
+++ b/wadsrc/static/zscript/games/duke/actors/fireext.zs
@@ -3,7 +3,6 @@ class DukeFireext : DukeActor
 {
 	default
 	{
-		statnum STAT_STANDABLE;
 		pic "FIREEXT";
 	}
 
@@ -23,6 +22,7 @@ class DukeFireext : DukeActor
 		self.ownerActor = self;
 		self.vel.X = 0.5;
 		self.DoMove(CLIPMASK0);
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/frameeffect.zs b/wadsrc/static/zscript/games/duke/actors/frameeffect.zs
index 82c526eec..c5f0b4fc0 100644
--- a/wadsrc/static/zscript/games/duke/actors/frameeffect.zs
+++ b/wadsrc/static/zscript/games/duke/actors/frameeffect.zs
@@ -2,7 +2,6 @@ class DukeFrameEffect : DukeActor
 {
 	default
 	{
-		statnum STAT_MISC;
 		Pic "SMALLSMOKE";
 	}
 	
@@ -17,6 +16,7 @@ class DukeFrameEffect : DukeActor
 		{
 			self.Scale = (0, 0);
 		}
+		self.ChangeStat(STAT_MISC);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/gamblingmachine.zs b/wadsrc/static/zscript/games/duke/actors/gamblingmachine.zs
index f43e4f2b4..a57fa0b8d 100644
--- a/wadsrc/static/zscript/games/duke/actors/gamblingmachine.zs
+++ b/wadsrc/static/zscript/games/duke/actors/gamblingmachine.zs
@@ -3,10 +3,6 @@ class RedneckGamblingMachine : DukeActor
 {
 	default
 	{
-		statnum STAT_ACTOR;
-		lotag 1;
-		clipdist 0;
-		extra 0;
 		spriteset "GAMBLINGMACHINE2", "GAMBLINGMACHINE3", "GAMBLINGMACHINE4", "GAMBLINGMACHINE5", "GAMBLINGMACHINE6", "GAMBLINGMACHINE7", "GAMBLINGMACHINE8", "GAMBLINGMACHINEBROKE";
 		spritesetindex 3;
 		RedneckGamblingMachine.winsound "COW3";
@@ -16,6 +12,14 @@ class RedneckGamblingMachine : DukeActor
 	meta Sound winsound;
 	property winsound: winsound;
 	
+	override void Initialize()
+	{
+		self.lotag = 1;
+		self.clipdist = 0;
+		self.extra = 0;
+		self.ChangeStat(STAT_ACTOR);
+	}
+
 	override void Tick()
 	{
 		int spriteindex;
diff --git a/wadsrc/static/zscript/games/duke/actors/helicopt.zs b/wadsrc/static/zscript/games/duke/actors/helicopt.zs
index 9394f182d..b9c9ea9ef 100644
--- a/wadsrc/static/zscript/games/duke/actors/helicopt.zs
+++ b/wadsrc/static/zscript/games/duke/actors/helicopt.zs
@@ -2,17 +2,17 @@ class DukeCar : DukeActor
 {
 	default
 	{
-		extra 1;
-		clipdist 32;
 		pic "DUKECAR";
-		statnum STAT_ACTOR;
 	}
 	
 	override void Initialize()
 	{
+		self.extra = 1;
+		self.clipdist = 32;
 		self.vel.X = 292 / 16.;
 		self.vel.Z = 360 / 256.;
 		self.cstat = CSTAT_SPRITE_BLOCK_ALL;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/lumberblade.zs b/wadsrc/static/zscript/games/duke/actors/lumberblade.zs
index a265365e5..2c9f00605 100644
--- a/wadsrc/static/zscript/games/duke/actors/lumberblade.zs
+++ b/wadsrc/static/zscript/games/duke/actors/lumberblade.zs
@@ -3,10 +3,14 @@ class RedneckLumberBlade : DukeActor
 {
 	default
 	{
-		statnum STAT_LUMBERMILL;
-		extra 0;
 		spriteset "LUMBERBLADE1", "LUMBERBLADE";
 	}
+	
+	override void Initialize()
+	{
+		self.ChangeStat(STAT_LUMBERMILL);
+		self.extra = 0;
+	}
 
 	override void Tick()
 	{
@@ -60,13 +64,13 @@ Class RedneckKegHolder : DukeActor
 {
 	default
 	{
-		statnum STAT_LUMBERMILL;
 		pic "KEGHOLDER";
 	}
 	
 	override void Initialize()
 	{
 		self.cstat = CSTAT_SPRITE_INVISIBLE;
+		self.ChangeStat(STAT_LUMBERMILL);
 	}
 	
 	override bool OnUse(DukePlayer user)
diff --git a/wadsrc/static/zscript/games/duke/actors/masterswitch.zs b/wadsrc/static/zscript/games/duke/actors/masterswitch.zs
index e51aa0909..f05dc64a2 100644
--- a/wadsrc/static/zscript/games/duke/actors/masterswitch.zs
+++ b/wadsrc/static/zscript/games/duke/actors/masterswitch.zs
@@ -1,14 +1,10 @@
 class DukeMasterSwitch : DukeActor
 {
-	default
-	{
-		statnum STAT_STANDABLE;
-	}
-
 	override void Initialize()
 	{
 		self.cstat = CSTAT_SPRITE_INVISIBLE;
 		self.yint = 0;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/mortar.zs b/wadsrc/static/zscript/games/duke/actors/mortar.zs
index 21c9a1115..9d6d87c96 100644
--- a/wadsrc/static/zscript/games/duke/actors/mortar.zs
+++ b/wadsrc/static/zscript/games/duke/actors/mortar.zs
@@ -107,10 +107,10 @@ class DukeMortar : DukeActor
 		{
 			self.temp_data[4]++;
 
-		DukePlayer p;
-		double xx;
-		
-		[p,xx] = self.findplayer();
+			DukePlayer p;
+			double xx;
+			
+			[p,xx] = self.findplayer();
 
 			if (self.temp_data[4] == 2)
 			{
diff --git a/wadsrc/static/zscript/games/duke/actors/nukebutton.zs b/wadsrc/static/zscript/games/duke/actors/nukebutton.zs
index 8d2fd4c0b..a8be11b52 100644
--- a/wadsrc/static/zscript/games/duke/actors/nukebutton.zs
+++ b/wadsrc/static/zscript/games/duke/actors/nukebutton.zs
@@ -4,7 +4,11 @@ class DukeNukeButton : DukeActor
 	default
 	{
 		spriteset "NUKEBUTTON", "NUKEBUTTON1",  "NUKEBUTTON2",  "NUKEBUTTON3";
-		statnum STAT_MISC;
+	}
+	
+	override void Initialize()
+	{
+		self.ChangeStat(STAT_MISC);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/ooz.zs b/wadsrc/static/zscript/games/duke/actors/ooz.zs
index 8fc58f747..f370304aa 100644
--- a/wadsrc/static/zscript/games/duke/actors/ooz.zs
+++ b/wadsrc/static/zscript/games/duke/actors/ooz.zs
@@ -2,8 +2,6 @@ class DukeOoz : DukeActor
 {
 	default
 	{
-		shade -12;
-		statnum STAT_ACTOR;
 		pic "OOZ";
 	}
 
@@ -24,6 +22,7 @@ class DukeOoz : DukeActor
 
 		self.scale = (max(0., 0.390625 - z * 0.5), z);
 		self.cstat |= randomXFlip();
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/oozfilter.zs b/wadsrc/static/zscript/games/duke/actors/oozfilter.zs
index 2f72e620d..41ed09954 100644
--- a/wadsrc/static/zscript/games/duke/actors/oozfilter.zs
+++ b/wadsrc/static/zscript/games/duke/actors/oozfilter.zs
@@ -3,7 +3,6 @@ class DukeOozFilter : DukeActor
 {
 	default
 	{
-		statnum STAT_STANDABLE;
 		spriteset "OOZFILTER";
 	}
 	
@@ -18,6 +17,7 @@ class DukeOozFilter : DukeActor
 		else self.cstat = CSTAT_SPRITE_BLOCK_ALL;
 		self.extra = gs.impact_damage << 2;
 		self.ownerActor = self;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/paper.zs b/wadsrc/static/zscript/games/duke/actors/paper.zs
index ec89d89c1..4280998f2 100644
--- a/wadsrc/static/zscript/games/duke/actors/paper.zs
+++ b/wadsrc/static/zscript/games/duke/actors/paper.zs
@@ -3,17 +3,16 @@ class DukeMoney : DukeActor
 {
 	default
 	{
-		statnum STAT_MISC;
 		spriteset "MONEY", "MONEY1";
-		ScaleX 0.125;
-		ScaleY 0.125;
 	}
 	
 	override void Initialize()
 	{
+		self.scale = (0.125, 0.125);
 		self.temp_data[0] = random(0, 2047);
 		self.cstat = self.randomFlip();
 		self.angle = frandom(0, 360);
+		self.ChangeStat(STAT_MISC);
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/piano.zs b/wadsrc/static/zscript/games/duke/actors/piano.zs
index 5a6f333fb..b95836452 100644
--- a/wadsrc/static/zscript/games/duke/actors/piano.zs
+++ b/wadsrc/static/zscript/games/duke/actors/piano.zs
@@ -2,12 +2,16 @@ class RedneckPiano : DukeActor
 {
 	default
 	{
-		lotag 5;
-		clipdist 0;
-		statnum STAT_ACTOR;
 		spriteset "PIANO", "PIANOBUST";
 	}
 
+	override void Initialize()
+	{
+		self.lotag = 5;
+		self.clipdist = 0;
+		self.ChangeStat(STAT_ACTOR);
+	}
+	
 	override void Tick()
 	{
 		if (self.lotag == 5)
diff --git a/wadsrc/static/zscript/games/duke/actors/pigback.zs b/wadsrc/static/zscript/games/duke/actors/pigback.zs
index 60af717a1..3a9484977 100644
--- a/wadsrc/static/zscript/games/duke/actors/pigback.zs
+++ b/wadsrc/static/zscript/games/duke/actors/pigback.zs
@@ -4,16 +4,15 @@ class RedneckPigDisplay : DukeActor
 	default
 	{
 		spriteset "PIGBACK", "PIGBACK1", "PIGBACK2", "PIGBACK3", "PIGBACK4";
-		ScaleX 0.25;
-		ScaleY 0.25;
-		clipdist 0;
-		extra 0;
-		statnum STAT_ACTOR;
 	}
 	
 	override void Initialize()
 	{
 		cstat = 0;
+		self.scale = (0.25, 0.25);
+		self.clipdist = 0;
+		self.extra = 0;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/queball.zs b/wadsrc/static/zscript/games/duke/actors/queball.zs
index 3b275b1c7..43c5d2391 100644
--- a/wadsrc/static/zscript/games/duke/actors/queball.zs
+++ b/wadsrc/static/zscript/games/duke/actors/queball.zs
@@ -7,14 +7,14 @@ class DukeQueball : DukeActor
 {
 	default
 	{
-		clipdist 2;
 		pic "QUEBALL";
-		statnum STAT_ZOMBIEACTOR;
 	}
 	
 	override void Initialize()
 	{
+		self.clipdist = 2;
 		self.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
+		self.ChangeStat(STAT_ZOMBIEACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/rabbitspawner.zs b/wadsrc/static/zscript/games/duke/actors/rabbitspawner.zs
index 75a7bb28f..19b84f827 100644
--- a/wadsrc/static/zscript/games/duke/actors/rabbitspawner.zs
+++ b/wadsrc/static/zscript/games/duke/actors/rabbitspawner.zs
@@ -1,14 +1,10 @@
 class RedneckRabbitSpawner : DukeActor
 {
-	default
-	{
-		statnum STAT_FX;
-		extra 0;
-	}
-	
 	override void Initialize()
 	{
 		self.cstat = CSTAT_SPRITE_INVISIBLE;
+		self.extra = 0;
+		self.ChangeStat(STAT_FX);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/rat.zs b/wadsrc/static/zscript/games/duke/actors/rat.zs
index 6092e9f1f..7423e88d0 100644
--- a/wadsrc/static/zscript/games/duke/actors/rat.zs
+++ b/wadsrc/static/zscript/games/duke/actors/rat.zs
@@ -5,9 +5,6 @@ class DukeRat : DukeActor
 	default
 	{
 		pic "RAT";
-		clipdist 10;
-		scaleX 0.75;
-		scaleY 0.75;
 	}
 	
 	override void Initialize()
@@ -32,8 +29,9 @@ class DukeRat : DukeActor
 				if (Raze.isRR()) self.shade = self.ownerActor.shade;
 			}
 			else self.ChangeStat(STAT_ZOMBIEACTOR);
-
 		}
+		self. clipdist = 10;
+		self. scale = (0.75, 0.75);
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/reactor.zs b/wadsrc/static/zscript/games/duke/actors/reactor.zs
index f8c21af9c..a821e8e03 100644
--- a/wadsrc/static/zscript/games/duke/actors/reactor.zs
+++ b/wadsrc/static/zscript/games/duke/actors/reactor.zs
@@ -3,9 +3,6 @@ class DukeReactor : DukeActor
 	default
 	{
 		spriteset "REACTOR", "REACTORBURNT";
-		statnum STAT_ZOMBIEACTOR;
-		shade -17;
-		pal 0;
 	}
 		
 
@@ -13,11 +10,14 @@ class DukeReactor : DukeActor
 	{
 		self.extra = gs.impact_damage;
 		self.cstat |= CSTAT_SPRITE_BLOCK_ALL; // Make it hitable
+		self.shade = -17;
+		self.pal = 0;
 		if (ud.multimode < 2 && self.pal != 0)
 		{
 			self.scale = (0, 0);
 			self.ChangeStat(STAT_MISC);
 		}
+		else self.ChangeStat(STAT_ZOMBIEACTOR);
 	}
 
 
diff --git a/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs b/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs
index 3b7f138fa..c152c1b67 100644
--- a/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs
+++ b/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs
@@ -1,11 +1,5 @@
 class DukeRespawnController : DukeActor
 {
-	default
-	{
-		statnum STAT_FX;
-		extra 66 - 13;
-	}
-	
 	override void Initialize()
 	{
 		if (ud.multimode < 2 && self.pal == 1)
@@ -14,7 +8,11 @@ class DukeRespawnController : DukeActor
 			self.ChangeStat(STAT_MISC);
 		}
 		else
+		{
 			self.cstat = CSTAT_SPRITE_INVISIBLE;
+			self.extra = 66 - 13;
+			self.ChangeStat(STAT_FX);
+		}
 	}
 
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs b/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs
index 2bdc6bae4..f0ab5aa08 100644
--- a/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs
+++ b/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs
@@ -5,13 +5,12 @@ class DukeRespawnMarker : DukeActor
 	default
 	{
 		spriteset "RESPAWNMARKERRED", "RESPAWNMARKERYELLOW", "RESPAWNMARKERGREEN";
-		scalex 0.375;
-		scaley 0.375;
 	}
 	
 	override void Initialize()
 	{
 		if (!self.mapSpawned && ownerActor != null) self.pos.Z = ownerActor.floorZ;
+		self.scale = (0.375, 0.375);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/rrcactus.zs b/wadsrc/static/zscript/games/duke/actors/rrcactus.zs
index 286c4f2eb..562bd2971 100644
--- a/wadsrc/static/zscript/games/duke/actors/rrcactus.zs
+++ b/wadsrc/static/zscript/games/duke/actors/rrcactus.zs
@@ -3,7 +3,6 @@ class RedneckCactusLargeYellow : DukeActor
 {
 	default
 	{
-		statnum STAT_ACTOR;
 		SpriteSet "CACTUSLARGEYELLOW";
 	}
 	
@@ -16,6 +15,7 @@ class RedneckCactusLargeYellow : DukeActor
 			p.pals = Color(32, 32, 0, 0);
 			p.actor.PlayActorSound("PLAYER_LONGTERM_PAIN");
 		}
+		self.ChangeStat(STAT_ACTOR);
 	}
 
 }
diff --git a/wadsrc/static/zscript/games/duke/actors/rrteleport.zs b/wadsrc/static/zscript/games/duke/actors/rrteleport.zs
index 324433d24..dd30a9654 100644
--- a/wadsrc/static/zscript/games/duke/actors/rrteleport.zs
+++ b/wadsrc/static/zscript/games/duke/actors/rrteleport.zs
@@ -4,10 +4,13 @@ class RedneckTeleportDest : DukeActor
 	default
 	{
 		pic "RRTELEPORTDEST";
-		statnum STAT_TELEPORT;
-		ScaleX 1;
-		ScaleY 1;
-		clipdist 16;
+	}
+	
+	override void Initialize()
+	{
+		self. Scale = (1, 1);
+		self.clipdist = 16;
+		self.ChangeStat(STAT_TELEPORT);
 	}
 }
 
diff --git a/wadsrc/static/zscript/games/duke/actors/scrap.zs b/wadsrc/static/zscript/games/duke/actors/scrap.zs
index eeb0e8299..42112a155 100644
--- a/wadsrc/static/zscript/games/duke/actors/scrap.zs
+++ b/wadsrc/static/zscript/games/duke/actors/scrap.zs
@@ -1,11 +1,6 @@
 
 class DukeScrap : DukeActor
 {
-	default
-	{
-		statnum STAT_MISC;
-	}
-	
 	enum EScrap
 	{
 		Scrap6 = 0,
diff --git a/wadsrc/static/zscript/games/duke/actors/shell.zs b/wadsrc/static/zscript/games/duke/actors/shell.zs
index cca672c77..10e30eb84 100644
--- a/wadsrc/static/zscript/games/duke/actors/shell.zs
+++ b/wadsrc/static/zscript/games/duke/actors/shell.zs
@@ -3,8 +3,6 @@ class DukeShell : DukeActor
 {
 	default
 	{
-		shade -8;
-		statnum STAT_MISC;
 		spriteset "SHELL", "SHELL1";
 	}
 
@@ -49,6 +47,8 @@ class DukeShell : DukeActor
 			double scale = Raze.isRR() && isshell ? 0.03125 : 0.0625;
 			self.scale = (scale, scale);
 		}
+		self.shade = -8;
+		self.ChangeStat(STAT_MISC);
 	}
 	
 	override void Initialize()
diff --git a/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs b/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs
index 100b59174..49009b784 100644
--- a/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs
+++ b/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs
@@ -2,11 +2,6 @@
 
 class DukeSoundController : DukeActor
 {
-	default
-	{
-		statnum STAT_FX;
-	}
-	
 	override void Initialize()
 	{
 		if (ud.multimode < 2 && self.pal == 1)
@@ -16,6 +11,7 @@ class DukeSoundController : DukeActor
 			return;
 		}
 		self.cstat = CSTAT_SPRITE_INVISIBLE;
+		self.ChangeStat(STAT_FX);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/tongue.zs b/wadsrc/static/zscript/games/duke/actors/tongue.zs
index 239f01bfb..8a47c690e 100644
--- a/wadsrc/static/zscript/games/duke/actors/tongue.zs
+++ b/wadsrc/static/zscript/games/duke/actors/tongue.zs
@@ -3,7 +3,6 @@ class DukeTongue : DukeActor
 {
 	default
 	{
-		statnum STAT_PROJECTILE;
 		pic "TONGUE";
 	}
 
@@ -14,6 +13,7 @@ class DukeTongue : DukeActor
 		self.pos.Z -= gs.playerheight;
 		self.vel.Z = 1 - frandom(0, 2);
 		self.vel.X = 4 - frandom(0, 8);
+		self.ChangeStat(STAT_PROJECTILE);
 	}
 
 	override void Tick()
@@ -65,7 +65,6 @@ class DukeInnerJaw : DukeActor
 {
 	default
 	{
-		statnum STAT_MISC;
 		pic "InnerJaw";
 	}
 	
@@ -86,6 +85,7 @@ class DukeInnerJaw : DukeActor
 		{
 			self.Destroy();
 		}
+		self.ChangeStat(STAT_MISC);
 	}
 }
 
diff --git a/wadsrc/static/zscript/games/duke/actors/touchplate.zs b/wadsrc/static/zscript/games/duke/actors/touchplate.zs
index 567c5467f..895843d34 100644
--- a/wadsrc/static/zscript/games/duke/actors/touchplate.zs
+++ b/wadsrc/static/zscript/games/duke/actors/touchplate.zs
@@ -1,11 +1,6 @@
 
 class DukeTouchPlate : DukeActor
 {
-	default
-	{
-		statnum STAT_STANDABLE;
-	}
-
 	private bool checkspawn()
 	{
 		if (!Raze.isWorldTour())
@@ -36,6 +31,7 @@ class DukeTouchPlate : DukeActor
 			return;
 		}
 		self.cstat = CSTAT_SPRITE_INVISIBLE;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 
 
diff --git a/wadsrc/static/zscript/games/duke/actors/trash.zs b/wadsrc/static/zscript/games/duke/actors/trash.zs
index 8f1ea9221..624773563 100644
--- a/wadsrc/static/zscript/games/duke/actors/trash.zs
+++ b/wadsrc/static/zscript/games/duke/actors/trash.zs
@@ -2,15 +2,14 @@ class DukeTrash : DukeActor
 {
 	default
 	{
-		ScaleX 0.375;
-		ScaleY 0.375;
-		statnum STAT_STANDABLE;
 		pic "TRASH";
 	}
 	
 	override void Initialize()
 	{
+		self.Scale = (0.375, 0.375);
 		self.angle = frandom(0, 360);
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/tripbomb.zs b/wadsrc/static/zscript/games/duke/actors/tripbomb.zs
index ad613a9f8..d8a1dc986 100644
--- a/wadsrc/static/zscript/games/duke/actors/tripbomb.zs
+++ b/wadsrc/static/zscript/games/duke/actors/tripbomb.zs
@@ -224,7 +224,6 @@ class DukeLaserLine : DukeActor
 {
 	default
 	{
-		statnum STAT_MISC;
 		pic "LASERLINE";
 	}
 
diff --git a/wadsrc/static/zscript/games/duke/actors/viewscreen.zs b/wadsrc/static/zscript/games/duke/actors/viewscreen.zs
index b33e3f7ae..5a2962526 100644
--- a/wadsrc/static/zscript/games/duke/actors/viewscreen.zs
+++ b/wadsrc/static/zscript/games/duke/actors/viewscreen.zs
@@ -2,9 +2,6 @@ class DukeViewscreen : DukeActor
 {
 	default
 	{
-		lotag 1;
-		extra 1;
-		statnum STAT_STANDABLE;
 		spriteset "VIEWSCREEN", "STATIC", "VIEWSCR";
 	}
 
@@ -13,6 +10,9 @@ class DukeViewscreen : DukeActor
 	override void Initialize()
 	{
 		self.ownerActor = self;
+		self.lotag = 1;
+		self.extra = 1;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
@@ -93,8 +93,6 @@ class DukeCamera : DukeActor
 	default
 	{
 		pic "CAMERA1";
-		statnum STAT_ACTOR;
-		extra 1;
 	}
 
 	override void Initialize()
@@ -109,6 +107,8 @@ class DukeCamera : DukeActor
 			return;
 		}
 		else self.pal = 0;
+		self.extra = 1;
+		self.ChangeStat(STAT_ACTOR);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/waterdrip.zs b/wadsrc/static/zscript/games/duke/actors/waterdrip.zs
index e26dcf629..843b19d90 100644
--- a/wadsrc/static/zscript/games/duke/actors/waterdrip.zs
+++ b/wadsrc/static/zscript/games/duke/actors/waterdrip.zs
@@ -2,9 +2,6 @@ class DukeWaterDrip : DukeActor
 {
 	default
 	{
-		ScaleX 0.375;
-		ScaleY 0.375;
-		statnum STAT_STANDABLE;
 		pic "WATERDRIP";
 	}
 	
@@ -30,6 +27,8 @@ class DukeWaterDrip : DukeActor
 			self.temp_pos.Z = self.pos.Z;
 			self.temp_data[1] = random(0, 127);
 		}
+		self.Scale = (0.375, 0.375);
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
diff --git a/wadsrc/static/zscript/games/duke/actors/waterfountain.zs b/wadsrc/static/zscript/games/duke/actors/waterfountain.zs
index d9e236fcf..6a88931df 100644
--- a/wadsrc/static/zscript/games/duke/actors/waterfountain.zs
+++ b/wadsrc/static/zscript/games/duke/actors/waterfountain.zs
@@ -6,7 +6,6 @@ class DukeWaterFountain : DukeActor
 	default
 	{
 		spriteset "WATERFOUNTAIN", "WATERFOUNTAIN1", "WATERFOUNTAIN2", "WATERFOUNTAIN3", "WATERFOUNTAINBROKE";
-		statnum STAT_STANDABLE;
 	}
 	
 	//---------------------------------------------------------------------------
@@ -21,6 +20,7 @@ class DukeWaterFountain : DukeActor
 		self.lotag = 1;
 		self.cstat = CSTAT_SPRITE_BLOCK_ALL; // Make it hitable
 		self.extra = 1;
+		self.ChangeStat(STAT_STANDABLE);
 	}
 	
 	override void Tick()
@@ -99,9 +99,13 @@ class DukeWaterFountainBroke : DukeActor
 	default
 	{
 		pic "WATERFOUNTAINBROKE";
-		statnum STAT_STANDABLE;
 	}
 
+	override void Initialize()
+	{
+		self.ChangeStat(STAT_STANDABLE);
+	}
+	
 	override void onHit(DukeActor hitter)
 	{
 		self.PlayActorSound("GLASS_BREAKING");
diff --git a/wadsrc/static/zscript/games/duke/actors/watersplash.zs b/wadsrc/static/zscript/games/duke/actors/watersplash.zs
index a436c9c5f..9dede34ab 100644
--- a/wadsrc/static/zscript/games/duke/actors/watersplash.zs
+++ b/wadsrc/static/zscript/games/duke/actors/watersplash.zs
@@ -2,8 +2,6 @@ class DukeWatersplash : DukeActor
 {
 	default
 	{
-		shade -16;
-		statnum STAT_MISC;
 		spriteset "WATERSPLASH2", "WATERSPLASH2A", "WATERSPLASH2B", "WATERSPLASH2C", "WATERSPLASH2D";
 	}
 
@@ -23,6 +21,7 @@ class DukeWatersplash : DukeActor
 			self.scale = (s, s);
 		}
 
+		self.shade = -16;
 		self.cstat |= CSTAT_SPRITE_YCENTER;
 		if (Owner)
 		{