diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp
index 166b5081e..d256da57e 100644
--- a/source/games/sw/src/bunny.cpp
+++ b/source/games/sw/src/bunny.cpp
@@ -1148,12 +1148,12 @@ void BunnyHatch(DSWActor* actor)
         actorNew->spr.shade = actor->spr.shade;
 
         // make immediately active
-        SET(nu->Flags, SPR_ACTIVE);
+        SET(actorNew->user.Flags, SPR_ACTIVE);
         if (RandomRange(1000) > 500) // Boy or Girl?
-            nu->spal = actorNew->spr.pal = PALETTE_PLAYER0; // Girl
+            actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER0; // Girl
         else
         {
-            nu->spal = actorNew->spr.pal = PALETTE_PLAYER8; // Boy
+            actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER8; // Boy
             // Oops, mommy died giving birth to a boy
             if (RandomRange(1000) > 500)
             {
@@ -1172,17 +1172,17 @@ void BunnyHatch(DSWActor* actor)
             }
         }
 
-        nu->ShellNum = 0; // Not Pregnant right now
+        actorNew->user.ShellNum = 0; // Not Pregnant right now
 
-        NewStateGroup(actorNew, nu->ActorActionSet->Jump);
-        nu->ActorActionFunc = DoActorMoveJump;
+        NewStateGroup(actorNew, actorNew->user.ActorActionSet->Jump);
+        actorNew->user.ActorActionFunc = DoActorMoveJump;
         DoActorSetSpeed(actorNew, FAST_SPEED);
         PickJumpMaxSpeed(actorNew, -600);
 
-        SET(nu->Flags, SPR_JUMPING);
-        RESET(nu->Flags, SPR_FALLING);
+        SET(actorNew->user.Flags, SPR_JUMPING);
+        RESET(actorNew->user.Flags, SPR_FALLING);
 
-        nu->jump_grav = 8;
+        actorNew->user.jump_grav = 8;
 
         // if I didn't do this here they get stuck in the air sometimes
         DoActorZrange(actorNew);
@@ -1208,42 +1208,42 @@ DSWActor* BunnyHatch2(DSWActor* actor)
     actorNew->spr.shade = actor->spr.shade;
 
     // make immediately active
-    SET(nu->Flags, SPR_ACTIVE);
+    SET(actorNew->user.Flags, SPR_ACTIVE);
     if (RandomRange(1000) > 500) // Boy or Girl?
     {
-        nu->spal = actorNew->spr.pal = PALETTE_PLAYER0; // Girl
-        nu->Flag1 = SEC(5);
+        actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER0; // Girl
+        actorNew->user.Flag1 = SEC(5);
     }
     else
     {
-        nu->spal = actorNew->spr.pal = PALETTE_PLAYER8; // Boy
-        nu->Flag1 = 0;
+        actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER8; // Boy
+        actorNew->user.Flag1 = 0;
     }
 
-    nu->ShellNum = 0; // Not Pregnant right now
+    actorNew->user.ShellNum = 0; // Not Pregnant right now
 
-    NewStateGroup(actorNew, nu->ActorActionSet->Jump);
-    nu->ActorActionFunc = DoActorMoveJump;
+    NewStateGroup(actorNew, actorNew->user.ActorActionSet->Jump);
+    actorNew->user.ActorActionFunc = DoActorMoveJump;
     DoActorSetSpeed(actorNew, FAST_SPEED);
     if (TEST_BOOL3(actor))
     {
         PickJumpMaxSpeed(actorNew, -600-RandomRange(600));
         actorNew->spr.xrepeat = actorNew->spr.yrepeat = 64;
         actorNew->spr.xvel = 150 + RandomRange(1000);
-        nu->Health = 1; // Easy to pop. Like shootn' skeet.
+        actorNew->user.Health = 1; // Easy to pop. Like shootn' skeet.
         actorNew->spr.ang -= RandomRange(128);
         actorNew->spr.ang += RandomRange(128);
     }
     else
         PickJumpMaxSpeed(actorNew, -600);
 
-    SET(nu->Flags, SPR_JUMPING);
-    RESET(nu->Flags, SPR_FALLING);
+    SET(actorNew->user.Flags, SPR_JUMPING);
+    RESET(actorNew->user.Flags, SPR_FALLING);
 
-    nu->jump_grav = 8;
-    nu->FlagOwner = 0;
+    actorNew->user.jump_grav = 8;
+    actorNew->user.FlagOwner = 0;
 
-    nu->active_range = 75000; // Set it far
+    actorNew->user.active_range = 75000; // Set it far
 
     // if I didn't do this here they get stuck in the air sometimes
     DoActorZrange(actorNew);
diff --git a/source/games/sw/src/coolg.cpp b/source/games/sw/src/coolg.cpp
index 27925d3ba..37f481812 100644
--- a/source/games/sw/src/coolg.cpp
+++ b/source/games/sw/src/coolg.cpp
@@ -553,15 +553,15 @@ int NewCoolg(DSWActor* actor)
     nu = actorNew->u();
 
     ChangeState(actorNew, &s_CoolgBirth[0]);
-    nu->StateEnd = s_CoolgDie;
-    nu->Rot = sg_CoolgRun;
-    actorNew->spr.pal = nu->spal = u->spal;
+    actorNew->user.StateEnd = s_CoolgDie;
+    actorNew->user.Rot = sg_CoolgRun;
+    actorNew->spr.pal = actorNew->user.spal = u->spal;
 
-    nu->ActorActionSet = &CoolgActionSet;
+    actorNew->user.ActorActionSet = &CoolgActionSet;
 
     actorNew->spr.shade = actor->spr.shade;
-    nu->Personality = &CoolgPersonality;
-    nu->Attrib = &CoolgAttrib;
+    actorNew->user.Personality = &CoolgPersonality;
+    actorNew->user.Attrib = &CoolgAttrib;
 
     // special case
     TotalKillable++;
diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp
index 291cee9a2..ea14eab85 100644
--- a/source/games/sw/src/jweapon.cpp
+++ b/source/games/sw/src/jweapon.cpp
@@ -314,12 +314,12 @@ void SpawnMidSplash(DSWActor* actor)
     if (RANDOM_P2(1024) < 512)
         SET(actorNew->spr.cstat, CSTAT_SPRITE_XFLIP);
 
-    nu->xchange = 0;
-    nu->ychange = 0;
-    nu->zchange = 0;
+    actorNew->user.xchange = 0;
+    actorNew->user.ychange = 0;
+    actorNew->user.zchange = 0;
 
     if (TEST(u->Flags, SPR_UNDERWATER))
-        SET(nu->Flags, SPR_UNDERWATER);
+        SET(actorNew->user.Flags, SPR_UNDERWATER);
 }
 
 void SpawnFloorSplash(DSWActor* actor)
@@ -342,12 +342,12 @@ void SpawnFloorSplash(DSWActor* actor)
     if (RANDOM_P2(1024) < 512)
         SET(actorNew->spr.cstat, CSTAT_SPRITE_XFLIP);
 
-    nu->xchange = 0;
-    nu->ychange = 0;
-    nu->zchange = 0;
+    actorNew->user.xchange = 0;
+    actorNew->user.ychange = 0;
+    actorNew->user.zchange = 0;
 
     if (TEST(u->Flags, SPR_UNDERWATER))
-        SET(nu->Flags, SPR_UNDERWATER);
+        SET(actorNew->user.Flags, SPR_UNDERWATER);
 }
 
 
@@ -549,14 +549,14 @@ int DoBloodSpray(DSWActor* actor)
         if (RANDOM_P2(1024) < 512)
             SET(actorNew->spr.cstat, CSTAT_SPRITE_YFLIP);
 
-        nu->xchange = u->xchange;
-        nu->ychange = u->ychange;
-        nu->zchange = u->zchange;
+        actorNew->user.xchange = u->xchange;
+        actorNew->user.ychange = u->ychange;
+        actorNew->user.zchange = u->zchange;
 
         ScaleSpriteVector(actorNew, 20000);
 
         if (TEST(u->Flags, SPR_UNDERWATER))
-            SET(nu->Flags, SPR_UNDERWATER);
+            SET(actorNew->user.Flags, SPR_UNDERWATER);
     }
 
     return false;
@@ -758,16 +758,16 @@ int DoPhosphorus(DSWActor* actor)
         if (RANDOM_P2(1024) < 512)
             SET(actorNew->spr.cstat, CSTAT_SPRITE_YFLIP);
 
-        nu->xchange = u->xchange;
-        nu->ychange = u->ychange;
-        nu->zchange = u->zchange;
+        actorNew->user.xchange = u->xchange;
+        actorNew->user.ychange = u->ychange;
+        actorNew->user.zchange = u->zchange;
 
-        nu->spal = actorNew->spr.pal = PALETTE_PLAYER3;   // RED
+        actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER3;   // RED
 
         ScaleSpriteVector(actorNew, 20000);
 
         if (TEST(u->Flags, SPR_UNDERWATER))
-            SET(nu->Flags, SPR_UNDERWATER);
+            SET(actorNew->user.Flags, SPR_UNDERWATER);
     }
 
     return false;
@@ -981,16 +981,16 @@ int DoChemBomb(DSWActor* actor)
         // SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER|CSTAT_SPRITE_TRANSLUCENT);
         RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
 
-        nu->xchange = u->xchange;
-        nu->ychange = u->ychange;
-        nu->zchange = u->zchange;
+        actorNew->user.xchange = u->xchange;
+        actorNew->user.ychange = u->ychange;
+        actorNew->user.zchange = u->zchange;
 
-        nu->spal = actorNew->spr.pal = PALETTE_PLAYER6;
+        actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER6;
 
         ScaleSpriteVector(actorNew, 20000);
 
         if (TEST(u->Flags, SPR_UNDERWATER))
-            SET(nu->Flags, SPR_UNDERWATER);
+            SET(actorNew->user.Flags, SPR_UNDERWATER);
     }
 
     return false;
@@ -1209,14 +1209,14 @@ int SpawnRadiationCloud(DSWActor* actor)
     nu = actorNew->u();
 
     SetOwner(GetOwner(actor), actorNew);
-    nu->WaitTics = 1 * 120;
+    actorNew->user.WaitTics = 1 * 120;
     actorNew->spr.shade = -40;
     actorNew->spr.xrepeat = 32;
     actorNew->spr.yrepeat = 32;
     actorNew->spr.clipdist = actor->spr.clipdist;
     SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER);
     RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
-    nu->spal = actorNew->spr.pal = PALETTE_PLAYER6;
+    actorNew->user.spal = actorNew->spr.pal = PALETTE_PLAYER6;
     // Won't take floor palettes
     actorNew->spr.hitag = SECTFU_DONT_COPY_PALETTE;
 
@@ -1228,22 +1228,22 @@ int SpawnRadiationCloud(DSWActor* actor)
     actorNew->spr.ang = RANDOM_P2(2048);
     actorNew->spr.xvel = RANDOM_P2(32);
 
-    nu->Counter = 0;
-    nu->Counter2 = 0;
+    actorNew->user.Counter = 0;
+    actorNew->user.Counter2 = 0;
 
     if (u->ID == MUSHROOM_CLOUD || u->ID == 3121)
     {
-        nu->Radius = 2000;
-        nu->xchange = (MOVEx(actorNew->spr.xvel>>2, actorNew->spr.ang));
-        nu->ychange = (MOVEy(actorNew->spr.xvel>>2, actorNew->spr.ang));
+        actorNew->user.Radius = 2000;
+        actorNew->user.xchange = (MOVEx(actorNew->spr.xvel>>2, actorNew->spr.ang));
+        actorNew->user.ychange = (MOVEy(actorNew->spr.xvel>>2, actorNew->spr.ang));
         actorNew->spr.zvel = Z(1) + RANDOM_P2(Z(2));
     }
     else
     {
-        nu->xchange = MOVEx(actorNew->spr.xvel, actorNew->spr.ang);
-        nu->ychange = MOVEy(actorNew->spr.xvel, actorNew->spr.ang);
+        actorNew->user.xchange = MOVEx(actorNew->spr.xvel, actorNew->spr.ang);
+        actorNew->user.ychange = MOVEy(actorNew->spr.xvel, actorNew->spr.ang);
         actorNew->spr.zvel = Z(4) + RANDOM_P2(Z(4));
-        nu->Radius = 4000;
+        actorNew->user.Radius = 4000;
     }
 
     return false;
@@ -1645,16 +1645,16 @@ void SpawnFlashBombOnActor(DSWActor* actor)
 
     if (u->flameActor != nullptr)
     {
-        nu->Counter = GetRepeatFromHeight(actorNew, ActorSizeZ(actor) >> 1) * 4;
+        actorNew->user.Counter = GetRepeatFromHeight(actorNew, ActorSizeZ(actor) >> 1) * 4;
     }
     else
-        nu->Counter = 0;                // max flame size
+        actorNew->user.Counter = 0;                // max flame size
 
     actorNew->spr.shade = -40;
     SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_INVISIBLE);
     RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
 
-    nu->Radius = 200;
+    actorNew->user.Radius = 200;
 
     if (u->flameActor != nullptr)
     {
diff --git a/source/games/sw/src/ripper.cpp b/source/games/sw/src/ripper.cpp
index 27045f060..227f74a2c 100644
--- a/source/games/sw/src/ripper.cpp
+++ b/source/games/sw/src/ripper.cpp
@@ -1217,17 +1217,17 @@ void RipperHatch(DSWActor* actor)
 		nu = actorNew->u();
 
         // make immediately active
-        SET(nu->Flags, SPR_ACTIVE);
+        SET(actorNew->user.Flags, SPR_ACTIVE);
 
-        NewStateGroup(actorNew, nu->ActorActionSet->Jump);
-        nu->ActorActionFunc = DoActorMoveJump;
+        NewStateGroup(actorNew, actorNew->user.ActorActionSet->Jump);
+        actorNew->user.ActorActionFunc = DoActorMoveJump;
         DoActorSetSpeed(actorNew, FAST_SPEED);
         PickJumpMaxSpeed(actorNew, -600);
 
-        SET(nu->Flags, SPR_JUMPING);
-        RESET(nu->Flags, SPR_FALLING);
+        SET(actorNew->user.Flags, SPR_JUMPING);
+        RESET(actorNew->user.Flags, SPR_FALLING);
 
-        nu->jump_grav = 8;
+        actorNew->user.jump_grav = 8;
 
         // if I didn't do this here they get stuck in the air sometimes
         DoActorZrange(actorNew);
diff --git a/source/games/sw/src/ripper2.cpp b/source/games/sw/src/ripper2.cpp
index c381e5f5a..16cbdd6c9 100644
--- a/source/games/sw/src/ripper2.cpp
+++ b/source/games/sw/src/ripper2.cpp
@@ -1236,17 +1236,17 @@ void Ripper2Hatch(DSWActor* actor)
         nu = actorNew->u();
 
         // make immediately active
-        SET(nu->Flags, SPR_ACTIVE);
+        SET(actorNew->user.Flags, SPR_ACTIVE);
 
-        NewStateGroup(actorNew, nu->ActorActionSet->Jump);
-        nu->ActorActionFunc = DoActorMoveJump;
+        NewStateGroup(actorNew, actorNew->user.ActorActionSet->Jump);
+        actorNew->user.ActorActionFunc = DoActorMoveJump;
         DoActorSetSpeed(actorNew, FAST_SPEED);
         PickJumpMaxSpeed(actorNew, -600);
 
-        SET(nu->Flags, SPR_JUMPING);
-        RESET(nu->Flags, SPR_FALLING);
+        SET(actorNew->user.Flags, SPR_JUMPING);
+        RESET(actorNew->user.Flags, SPR_FALLING);
 
-        nu->jump_grav = 8;
+        actorNew->user.jump_grav = 8;
 
         // if I didn't do this here they get stuck in the air sometimes
         DoActorZrange(actorNew);
diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp
index 85347bd65..e0ae6af9b 100644
--- a/source/games/sw/src/sprite.cpp
+++ b/source/games/sw/src/sprite.cpp
@@ -4876,7 +4876,7 @@ int KillGet(DSWActor* actor)
         nu = actorNew->u();
 
         actorNew->spr.shade = -20;
-        nu->WaitTics = u->WaitTics - 12;
+        actorNew->user.WaitTics = u->WaitTics - 12;
 
         break;
     }
@@ -4925,7 +4925,7 @@ int KillGetAmmo(DSWActor* actor)
         nu = actorNew->u();
 
         actorNew->spr.shade = -20;
-        nu->WaitTics = u->WaitTics - 12;
+        actorNew->user.WaitTics = u->WaitTics - 12;
 
         break;
     }
@@ -4982,7 +4982,7 @@ int KillGetWeapon(DSWActor* actor)
         nu = actorNew->u();
 
         actorNew->spr.shade = -20;
-        nu->WaitTics = u->WaitTics - 12;
+        actorNew->user.WaitTics = u->WaitTics - 12;
 
         break;
     }
@@ -5927,15 +5927,15 @@ KeyMain:
             actorNew->spr.shade = -20;
 
             // Attach flag to player
-            nu->Counter = 0;
+            actorNew->user.Counter = 0;
             RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
             SET(actorNew->spr.cstat, CSTAT_SPRITE_ALIGNMENT_WALL);
             SetAttach(pp->Actor(), actorNew);
-            nu->sz = ActorZOfMiddle(pp->Actor());  // Set mid way up who it hit
-            nu->spal = actorNew->spr.pal = actor->spr.pal;   // Set the palette of the flag
+            actorNew->user.sz = ActorZOfMiddle(pp->Actor());  // Set mid way up who it hit
+            actorNew->user.spal = actorNew->spr.pal = actor->spr.pal;   // Set the palette of the flag
 
             SetOwner(pp->Actor(), actorNew);  // Player now owns the flag
-            nu->flagOwnerActor = actor;       // Tell carried flag who owns it
+            actorNew->user.flagOwnerActor = actor;       // Tell carried flag who owns it
             KillGet(actor);  // Set up for flag respawning
             break;
         }
diff --git a/source/games/sw/src/zombie.cpp b/source/games/sw/src/zombie.cpp
index fbd6c3138..af3c1048c 100644
--- a/source/games/sw/src/zombie.cpp
+++ b/source/games/sw/src/zombie.cpp
@@ -784,20 +784,20 @@ void SpawnZombie(PLAYERp pp, DSWActor* weaponActor)
     nu = actorNew->u();
     actorNew->spr.setsector(pp->cursector);
     SetOwner(actorNew, ownerActor);
-    actorNew->spr.pal = nu->spal = ownerActor->user.spal;
+    actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
     actorNew->spr.ang = RANDOM_P2(2048);
     SetupZombie(actorNew);
     actorNew->spr.shade = -10;
-    SET(nu->Flags2, SPR2_DONT_TARGET_OWNER);
+    SET(actorNew->user.Flags2, SPR2_DONT_TARGET_OWNER);
     SET(actorNew->spr.cstat, CSTAT_SPRITE_TRANSLUCENT);
 
     DoActorPickClosePlayer(actorNew);
 
     // make immediately active
-    SET(nu->Flags, SPR_ACTIVE);
+    SET(actorNew->user.Flags, SPR_ACTIVE);
 
-    RESET(nu->Flags, SPR_JUMPING);
-    RESET(nu->Flags, SPR_FALLING);
+    RESET(actorNew->user.Flags, SPR_JUMPING);
+    RESET(actorNew->user.Flags, SPR_FALLING);
 
     // if I didn't do this here they get stuck in the air sometimes
     DoActorZrange(actorNew);
@@ -832,22 +832,22 @@ void SpawnZombie2(DSWActor* actor)
 
     auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
     nu = actorNew->u();
-    nu->Counter3 = 0;
+    actorNew->user.Counter3 = 0;
     SetOwner(ownerActor, actorNew);
-    actorNew->spr.pal = nu->spal = ownerActor->user.spal;
+    actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
     actorNew->spr.ang = RANDOM_P2(2048);
     SetupZombie(actorNew);
     actorNew->spr.shade = -10;
-    SET(nu->Flags2, SPR2_DONT_TARGET_OWNER);
+    SET(actorNew->user.Flags2, SPR2_DONT_TARGET_OWNER);
     SET(actorNew->spr.cstat, CSTAT_SPRITE_TRANSLUCENT);
 
     DoActorPickClosePlayer(actorNew);
 
     // make immediately active
-    SET(nu->Flags, SPR_ACTIVE);
+    SET(actorNew->user.Flags, SPR_ACTIVE);
 
-    RESET(nu->Flags, SPR_JUMPING);
-    RESET(nu->Flags, SPR_FALLING);
+    RESET(actorNew->user.Flags, SPR_JUMPING);
+    RESET(actorNew->user.Flags, SPR_FALLING);
 
     // if I didn't do this here they get stuck in the air sometimes
     DoActorZrange(actorNew);