-- Configuration local MAX_HITS = 5 -- Register the toggle variable (nobabyingaround) -- CV_RegisterVar allows this to be set to "On" or "Off" and saved in config.cfg local nba_toggle = CV_RegisterVar({ name = "nobabyingaround", defaultvalue = "On", flags = CV_NETVAR, -- Synchronizes across multiplayer PossibleValue = CV_OnOff }) -- 1. Function to manually reset hits for all players via command COM_AddCommand("resetnbahits", function(player) for p in players.iterate do p.hitCounter = 0 end CONS_Printf(player, "NoBabyingAround hits are reset.") end) -- 2. Hook to reset hit counter when starting a level addHook("MapLoad", function(mapnum) for p in players.iterate do p.hitCounter = 0 end end) addHook("MobjDamage", function(target, inflictor, source, damage, damagetype) -- Check if the script is toggled ON if not nba_toggle.value then return end -- Only run for players if not (target.player and target.player.valid) then return end local p = target.player -- Initialize hit counter if it doesn't exist p.hitCounter = (p.hitCounter or 0) + 1 -- Check if this is the final hit if p.hitCounter >= MAX_HITS then CONS_Printf(p, "no more babying around") P_KillMobj(target, inflictor, source) p.hitCounter = 0 -- Reset for next life return true -- Overwrite default damage (prevents ring spill on death) else local hitsLeft = MAX_HITS - p.hitCounter CONS_Printf(p, "Hit taken! Hits remaining: " .. hitsLeft) -- Play a warning sound as they get closer to death if hitsLeft <= 1 then S_StartSound(target, sfx_armasg) end end end, MT_PLAYER) -- Reset hits on death or respawn addHook("PlayerThink", function(p) if p.playerstate == PST_DEAD or p.playerstate == PST_REBORN then p.hitCounter = 0 end end)