diff --git a/source/duke3d/src/actors.cpp b/source/duke3d/src/actors.cpp
index a8d5d3c26..1359fdcd6 100644
--- a/source/duke3d/src/actors.cpp
+++ b/source/duke3d/src/actors.cpp
@@ -3947,7 +3947,7 @@ ACTOR_STATIC void G_MoveActors(void)
                     int const newSprite = A_Spawn(spriteNum, EXPLOSION2);
                     A_PlaySound(LASERTRIP_EXPLODE, newSprite);
                     A_Spawn(spriteNum, PIGCOP);
-                    g_player[myconnectindex].ps->actors_killed++;
+                    P_AddKills(g_player[myconnectindex].ps, 1);
                     DELETE_SPRITE_AND_CONTINUE(spriteNum);
                 }
 
@@ -4173,7 +4173,7 @@ ACTOR_STATIC void G_MoveActors(void)
                     if (damageTile == FREEZEBLAST)
                         goto next_sprite;
 
-                    pPlayer->actors_killed++;
+                    P_AddKills(pPlayer, 1);
 
                     for (bssize_t j = 16; j >= 0; --j)
                     {
@@ -4234,7 +4234,7 @@ ACTOR_STATIC void G_MoveActors(void)
                             sprite[j].pal = 0;
                         }
 
-                        pPlayer->actors_killed++;
+                        P_AddKills(pPlayer, 1);
                         pData[0] = -3;
 
                         if (pPlayer->somethingonplayer == spriteNum)
@@ -4315,7 +4315,7 @@ ACTOR_STATIC void G_MoveActors(void)
                     goto next_sprite;
                 }
 
-                pPlayer->actors_killed++;
+                P_AddKills(pPlayer, 1);
 
                 if ((krand()&255) < 32)
                 {
diff --git a/source/duke3d/src/gameexec.cpp b/source/duke3d/src/gameexec.cpp
index 89b5d4b8d..c14aba868 100644
--- a/source/duke3d/src/gameexec.cpp
+++ b/source/duke3d/src/gameexec.cpp
@@ -1728,7 +1728,7 @@ skip_check:
 
         case CON_ADDKILLS:
             insptr++;
-            pPlayer->actors_killed += *insptr++;
+            P_AddKills(pPlayer, *insptr++);
             vm.pActor->actorstayput = -1;
             continue;
 
@@ -5898,7 +5898,7 @@ void A_Execute(int spriteNum, int playerNum, int playerDist)
     if (EDUKE32_PREDICT_FALSE((unsigned)vm.pSprite->sectnum >= MAXSECTORS))
     {
         if (A_CheckEnemySprite(vm.pSprite))
-            vm.pPlayer->actors_killed++;
+            P_AddKills(vm.pPlayer, 1);
 
         A_DeleteSprite(vm.spriteNum);
         return;
diff --git a/source/duke3d/src/player.cpp b/source/duke3d/src/player.cpp
index 758195655..26d54c2b9 100644
--- a/source/duke3d/src/player.cpp
+++ b/source/duke3d/src/player.cpp
@@ -40,6 +40,11 @@ extern int32_t g_levelTextTime, ticrandomseed;
 int32_t g_numObituaries = 0;
 int32_t g_numSelfObituaries = 0;
 
+void P_AddKills(DukePlayer_t * const pPlayer, uint16_t kills)
+{
+    pPlayer->actors_killed += kills;
+}
+
 void P_UpdateScreenPal(DukePlayer_t * const pPlayer)
 {
     int       inWater       = 0;
@@ -5408,7 +5413,7 @@ HORIZONLY:;
                     }
                     default:
                         if (A_CheckEnemySprite(&sprite[pPlayer->actorsqu]))
-                            pPlayer->actors_killed++;
+                            P_AddKills(pPlayer, 1);
                         A_DeleteSprite(pPlayer->actorsqu);
                         break;
                 }
diff --git a/source/duke3d/src/player.h b/source/duke3d/src/player.h
index fedce1da2..60c8f9be5 100644
--- a/source/duke3d/src/player.h
+++ b/source/duke3d/src/player.h
@@ -336,6 +336,7 @@ static inline void P_PalFrom(DukePlayer_t *pPlayer, uint8_t f, uint8_t r, uint8_
     }
 }
 
+void    P_AddKills(DukePlayer_t * const pPlayer, uint16_t kills);
 int32_t A_GetHitscanRange(int spriteNum);
 void    P_GetInput(int playerNum);
 void P_AddAmmo(DukePlayer_t * const pPlayer, int const weaponNum, int const addAmount);