← modperf · analyzed mods

BS KeyRoom

BS_KeyRoom – Secure Access & Dynamic Loot for DayZ Take your DayZ server to the next level with BS_KeyRoom — a robust, highly customizable mod that introduces secure, key/keycard-based door access, exclusive loot zones, and dynamic event mechanics that enhance player progression and interaction. 📖 Mod Guide 📖 https://github.com/cjcarw/BS-KeyRoom/wiki 🔐 Key Features 🗝️ Keycard-Locked Doors: Transform any door in the… (more)

BS_KeyRoom – Secure Access & Dynamic Loot for DayZ Take your DayZ server to the next level with BS_KeyRoom — a robust, highly customizable mod that introduces secure, key/keycard-based door access, exclusive loot zones, and dynamic event mechanics that enhance player progression and interaction. 📖 Mod Guide 📖 https://github.com/cjcarw/BS-KeyRoom/wiki 🔐 Key Features 🗝️ Keycard-Locked Doors: Transform any door in the game into a high-value objective. Players must find the correct key/keycard to gain entry to restricted areas. 💬 Smart Door Interaction: Door prompts automatically update to inform players if a key/keycard is required — and even specify which key/keycard is needed if they don't have it. 🧻 Consumable Keycards: keys/keycard are consumed upon successful use, adding strategic value and rarity to each card. ⏱️ Delayed Door Opening: Add suspense by introducing a short delay between using a keycard and the door unlocking — perfect for building tension or allowing alarms to alert other players in time. 📦 Configurable Loot System 🎯 Static Loot: Assign specific items to spawn in custom containers (military crates, gun cases, etc.) when a door is opened. Pre-attach items (e.g., optics on rifles, mags in vests) to create meaningful rewards. 🎲 Randomized Loot Pools: Build dynamic loot tables with configurable spawn chances and quantity ranges. Prevent duplicate items within a single container to ensure varied and balanced rewards. 🧰 Custom Containers: Includes animated military crates and gun cases perfect for hiding valuable gear. 🚨 Event Triggers & Security 🔊 Alarms & Global Announcements: Trigger audible alarms or global server messages when doors are opened — ideal for creating tension, PvP hotspots, or server-wide events. ⏳ Intelligent Cooldowns: Doors remain unlocked for a configurable time after being accessed, then automatically re-lock. Optionally, cooldowns can persist across server restarts for added consistency. 🚪 Player Safety Teleport: Players standing too close to a door about to close are automatically teleported a short distance to prevent clipping or entrapment. 🛠️ Admin Tools 🛑 BS_DoorLocker (In-Game Setup Tool): A powerful admin-only item that allows you to configure keycard/keys doors directly in-game and generate the required JSON files with precision and ease. 🛠️ Live Reload Command 🛑 Admins can use the !kcreload command in chat to reload all door and loot configurations without a server restart. 🎨 Custom Keycard Types: Includes a variety of card styles (color-coded, lab-themed, etc.) with customizable names and descriptions. ⚙️ Full JSON Configuration: Every aspect of the system — doors, loot, keycards, alarms, cooldowns — is easily configurable via simple JSON files. 🌍 Multi-Language Support All in-game messages are localized in: English, Spanish, Portuguese, German, Italian, Russian, Polish, French, Czech, Traditional Chinese, and Simplified Chinese. 🚀 Performance Optimized Built with performance in mind, BS_KeyRoom is optimized to run smoothly on any server, even with numerous active keycard locations. Compatible with most community maps and mods. 🧭 How to Get Started Install the Mod: Add BS KeyRoom to both your server and client mod list. Enable Debug Mode: Before configuring doors, open the file BS_KeyRoom_Settings.json (located in your $profile:BS_KeyRoom folder) and set: "debug_build": 1 This will enable the in-game configuration tool. All-New In-Game Admin Menu! A comprehensive admin UI has been implemented, accessed via the !kcmenu chat command. This menu allows admins to configure almost every aspect of the mod in real-time, no server restart required. Command: !kcmenu Use the BS_DoorLocker Tool In-Game: Spawn the BS_DoorLocker item in-game and use it while looking at a door to generate base JSON files for that specific location. Customize Your Configuration: Edit the JSON files located in $profile:BS_KeyRoom, including: BS_KeyRoom_Settings.json BS_KeyRoom_ItemNames.json The per-door JSON files automatically generated by the tool Disable Debug Mode (Optional): Once your setup is complete, you can set "debug_build": 0 to disable admin setup mode for security. ✅ Recommended Companion Mod For the best experience, it is highly recommended to use BS_KeyRoom alongside BS HackedCrate. This adds hacked lootable crates that perfectly complement the secure keycard rooms, enabling layered gameplay and richer reward systems. https://steamcommunity.com/sharedfiles/filedetails/?id=3482229348 BS KeyRoom Copyright 2025 BS KeyRoom. You are NOT allowed to repack or reupload this mod or its contents. This item is not authorized for posting on Steam, except under the Steam account https://steamcommunity.com/id/cjcarww. REPACKING IS PROHIBITED. If you would like authorization, you can request it on our Discord.

Workshop 3514469093 · mod updated 2026-07-14 · analyzed 2026-10-03 14:05 UTC · history · 52 script files

AnimationEquipmentMechanics Workshop tags, chosen by the author

Stall risks
None found

No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.

Compatibility
Chain-safe

Every server-visible override preserves its chain.

Structural footprint 1.1
A
clean
Heavier than 69% of 328 scripted mods analyzed.

0.0141% of each server frame at 100 players (0.141 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.

Where this mod sits

Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 40 others share it. Ranked list.

20
40
60
  • 24 mods
    0.0000022 to 0.0000046 ms/s · grade A
  • 7 mods
    0.0000046 to 0.00001 ms/s · grade A
  • 1 mod
    0.00001 to 0.000022 ms/s · grade A
  • 1 mod
    0.000022 to 0.000046 ms/s · grade A
  • 37 mods
    0.0001 to 0.00022 ms/s · grade A
  • 26 mods
    0.00022 to 0.00046 ms/s · grade A
  • 33 mods
    0.00046 to 0.001 ms/s · grade A
  • 22 mods
    0.001 to 0.0022 ms/s · grade A
  • 13 mods
    0.0022 to 0.0046 ms/s · grade A
  • 10 mods
    0.0046 to 0.01 ms/s · grade A
  • 5 mods
    0.01 to 0.022 ms/s · grade A
  • 18 mods
    0.022 to 0.046 ms/s · grade A
  • 17 mods
    0.046 to 0.1 ms/s · grade A
  • This mod
  • 26 mods
    0.22 to 0.46 ms/s · grade A
  • 28 mods
    0.46 to 1 ms/s · grade A
  • 8 mods
    1 to 2.2 ms/s · grade A to B
  • 10 mods
    2.2 to 4.6 ms/s · grade B
  • 1 mod
    4.6 to 10 ms/s · grade B to C
A316
B11
C1
D0
E0
ms/s, log scale: each labelled step is ten times the one before. Letter grade and mods holding it below the axis.
Where the load comes from

Repeating timers carry 99% of this mod's structural load. 0.141 ms/s in all.

Event hooks · 0.6%
4 hooks · 0.00079 ms/s
Lifecycle hooks · <0.1%
2 hooks · 0.000004 ms/s
99%Repeating timers · 99%
1 timer · 0.14 ms/s
Event hooksrun when something happens: an inventory move, a hit, an action 4 hooks 0.00079 ms/s 0.6% ActionCloseDoors.ActionCondition, ActionOpenDoors.ActionCondition, DayZPlayerImplement.OnRPC and 1 more
Lifecycle hooksrun when an entity is created, loaded or deleted 2 hooks 0.000004 ms/s <0.1% MissionServer.InvokeOnConnect, MissionServer.OnInit
Repeating timersstay in the timer queue, which is walked every frame 1 timer 0.14 ms/s 99% every 3 s

Counts how often each hook is dispatched and how many timers stay alive, not what the code inside does. Some rates are order-of-magnitude estimates; the methodology lists which.

Where this mod runs often

Hooks on per-frame and high-rate surfaces, with what their bodies call. Body work, not the hook itself, is what costs frame time.

ActionCondition × 2 classes
per event
no I/O, timers or RPC
OnRPC on DayZPlayerImplement
per event
no I/O, timers or RPC
SetActions on PlayerBase
per event
no I/O, timers or RPC

Other findings

What this report can tell you

Which vanilla methods the mod hooks, which of them drop the chain, how often each hook fires, and which risky calls sit inside hot hooks.

What it cannot

How long hook bodies take, network cost, or engine-side load. Measured across live fleets, most server lag comes from the engine and world state, not mod script chains — a light footprint does not clear a mod of lag, and a heavy one does not convict it. Methodology.

Everything else

All 20 overrides

Surface is the dispatch tier the rubric can price (— = unpriced); server is whether the override exists on a dedicated server; super() shows whether the vanilla chain is preserved on a server.

methodsurfaceserversuper()where
ActionCloseDoors.ActionCondition T2 yes ✓ CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionCloseDoors.c:39
ActionCloseDoors.GetText — yes conditional CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionCloseDoors.c:93
ActionConstructor.RegisterActions — yes ✓ CJ_KeycardSystem.pbo::4_world\Actions\ActionConstructor.c:3
ActionLockDoors.OnFinishProgressServer — yes conditional CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionLockDoors.c:3
ActionOpenDoors.ActionCondition T2 yes ✓ CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionOpenDoor.c:80
ActionOpenDoors.GetText — yes conditional CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionOpenDoor.c:244
ActionOpenDoors.OnStartServer — yes conditional CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionOpenDoor.c:292
ActionUnlockDoors.OnFinishProgressServer — yes conditional CJ_KeycardSystem.pbo::4_world\Actions\BS_ModdedActionUnlockDoors.c:3
DayZPlayerImplement.OnRPC T2 yes ✓ CJ_KeycardSystem.pbo::4_world\Entities\DayZPlayerImplement.c:11
ExpansionIcons.Generate — yes ✓ CJ_KeycardSystem.pbo::3_game\Config\BS_Icon.c:3
ExpansionItemTooltip.SetView — yes ✓ CJ_KeycardSystem.pbo::5_mission\BS_ExpansionQuestCompat.c:42
ExpansionQuestMenuItemEntry.SetEntry — yes ✓ CJ_KeycardSystem.pbo::5_mission\BS_ExpansionQuestCompat.c:4
MissionGameplay.OnMissionStart T3 yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionGameplay.c:5
MissionGameplay.OnMissionFinish T3 yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionGameplay.c:11
MissionGameplay.OnUpdate T0 yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionGameplay.c:17
MissionServer.OnInit T3 yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionServer.c:533
MissionServer.InvokeOnConnect T3 yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionServer.c:617
MissionServer.OnEvent — yes ✓ CJ_KeycardSystem.pbo::5_mission\MissionServer.c:968
ModItemRegisterCallbacks.RegisterOneHanded — yes ✓ CJ_KeycardSystem.pbo::4_world\Entities\BS_animation.c:4
PlayerBase.SetActions T2 yes ✓ CJ_KeycardSystem.pbo::4_world\PlayerBaseMod.c:13
Dispatch surfaces and timers the grade prices
surfacetierrate (Hz)rate sourcems/s
ActionCloseDoors.ActionConditionT2 8.0placeholder0.0002
ActionOpenDoors.ActionConditionT2 8.0placeholder0.0002
DayZPlayerImplement.OnRPCT2 8.0placeholder0.0002
PlayerBase.SetActionsT2 8.0placeholder0.0002
MissionServer.OnInitT3 0.1placeholder0.0000
MissionServer.InvokeOnConnectT3 0.1placeholder0.0000

Repeating timers

period (ms)residency ms/sfiring ms/swhere
30000.1400 0.000008CJ_KeycardSystem.pbo::4_world\KeyCardSystem\BS_KeyCardClientManager.c:31

Includes 0.001 ms/s from placeholder-rated surfaces.

Load-order constraints (CfgPatches)

What each PBO declares: its addon identity and the addons it requires to be loaded first (requiredAddons). A partial load-order signal from the mod's own metadata.

CJ_Icon.pbo

  • CJ_ICON requiredVersion 0.1 — requires DZ_Data, DZ_Gear_Consumables, DZ_Gear_Camping, JM_CF_Scripts

CJ_KeycardSystem.pbo

  • CJ_KeycardSystem requiredVersion 0.1 — requires DZ_Data, DZ_Gear_Consumables, DZ_Gear_Camping, JM_CF_Scripts
  • BS_DoorLocker requiredVersion 0.1 — requires DZ_Data, DZ_Gear_Medical
  • BS_keysOverride requiredVersion 1 — requires DZ_Data

CJ_KeycardSystemA.pbo

  • bs_safes requiredVersion 0.1 — requires CJ_KeycardSystem
  • BS_WeaponCase1 requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • CJ_KeycardSystemA_Cardholder requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • CJ_KeycardSystemAA requiredVersion 0.1 — requires DZ_Data, DZ_Gear_Consumables, DZ_Gear_Camping, JM_CF_Scripts
  • Bastardos_Duffle requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • CJ_KeycardSystemA_Keychain requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • BS_Keys_New2 requiredVersion 0.1 —
    requires 14 addons DZ_Characters, DZ_Characters_Backpacks, DZ_Characters_Pants, DZ_Characters_Tops, DZ_Gear_Containers, DZ_Characters_Headgear, DZ_Gear_Camping, DZ_Gear_Crafting, DZ_Gear_Tools, DZ_Animals, DZ_Data, DZ_Scripts, DZ_Sounds_Effects, DZ_Weapons_Melee_Powered
  • BS_Keys_New3 requiredVersion 0.1 —
    requires 14 addons DZ_Characters, DZ_Characters_Backpacks, DZ_Characters_Pants, DZ_Characters_Tops, DZ_Gear_Containers, DZ_Characters_Headgear, DZ_Gear_Camping, DZ_Gear_Crafting, DZ_Gear_Tools, DZ_Animals, DZ_Data, DZ_Scripts, DZ_Sounds_Effects, DZ_Weapons_Melee_Powered
  • BS_Keys_New4 requiredVersion 0.1 —
    requires 14 addons DZ_Characters, DZ_Characters_Backpacks, DZ_Characters_Pants, DZ_Characters_Tops, DZ_Gear_Containers, DZ_Characters_Headgear, DZ_Gear_Camping, DZ_Gear_Crafting, DZ_Gear_Tools, DZ_Animals, DZ_Data, DZ_Scripts, DZ_Sounds_Effects, DZ_Weapons_Melee_Powered
  • BS_Keys_New5 requiredVersion 0.1 —
    requires 14 addons DZ_Characters, DZ_Characters_Backpacks, DZ_Characters_Pants, DZ_Characters_Tops, DZ_Gear_Containers, DZ_Characters_Headgear, DZ_Gear_Camping, DZ_Gear_Crafting, DZ_Gear_Tools, DZ_Animals, DZ_Data, DZ_Scripts, DZ_Sounds_Effects, DZ_Weapons_Melee_Powered
  • BS_Keys_New6 requiredVersion 0.1 —
    requires 14 addons DZ_Characters, DZ_Characters_Backpacks, DZ_Characters_Pants, DZ_Characters_Tops, DZ_Gear_Containers, DZ_Characters_Headgear, DZ_Gear_Camping, DZ_Gear_Crafting, DZ_Gear_Tools, DZ_Animals, DZ_Data, DZ_Scripts, DZ_Sounds_Effects, DZ_Weapons_Melee_Powered
  • BS_LargeWoodenBox requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • Milcase1 requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, DZ_Gear_Containers
  • Milcase2 requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, DZ_Gear_Containers
  • Milcase4 requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, DZ_Gear_Containers
  • BS_MilCrate requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • BS_MilitaryCrate requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • BS_Small requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem
  • BS_WoodenMilCrate requiredVersion 0.1 — requires DZ_Data, DZ_Scripts, CJ_KeycardSystem

census 1.1 · findings 1.1 · hash d39f5e7e1483f373