MedicalAttentionUpdated
This is an updated version of MedicalAttention kindly allowed to be modified and repacked by original author Lucian. I take no credit whatsoever for his work. You can find his original mod page here: MedicalAttention. This updated version works with DayZ 1.10 through 1.14, fixes a few issues and adds a few new config options. Should Lucian ever want to return to working on his mod, I will gladly hand my small… (more)
This is an updated version of MedicalAttention kindly allowed to be modified and repacked by original author Lucian. I take no credit whatsoever for his work. You can find his original mod page here: MedicalAttention. This updated version works with DayZ 1.10 through 1.14, fixes a few issues and adds a few new config options. Should Lucian ever want to return to working on his mod, I will gladly hand my small changes back over to him. If you want a 'light' version that includes only the tiredness and drunkenness mechanics, protective gear configuration and zones, but no arm fractures and tweaks to vanilla medical conditions, look at MedicalAttentionUpdated-Core (which is a dependency of this mod, but can also be used standalone). Important Depending on if you are using Namalsk Survival or not, you need to subscribe to MedicalAttentionUpdated-DepHelper-Namalsk or MedicalAttentionUpdated-DepHelper-Vanilla (do not use both!). If you want to use MedicalAttentionUpdated with Namalsk Survival, you need these mods: - Namalsk Survival - MedicalAttentionUpdated-DepHelper-Namalsk - MedicalAttentionUpdated-Core - MedicalAttentionUpdated Otherwise, you need these mods: - MedicalAttentionUpdated-DepHelper-Vanilla - MedicalAttentionUpdated-Core - MedicalAttentionUpdated Below you'll find the original mod description which has only been lightly edited to better reflect the current state of the mod and the game, including links to useful guides for server owners and players. For your survival focused or hardcore DayZ experience, look no further than the MedicalAttention mod. Challenge your players...challenge yourself....manage health, injury, and a sneaky little biohazard zone, like never before. Tiredness, drunkenness, cholera, salmonella, wound infection, cold/flu, hemolytic reactions, blood afflictions, and indeed quarantine all present unique challenges and immersion for players of this mod. Also, zombies offer an increased threat of infection so extra care needs to be taken not to be hit by them, or you will likely catch a disease. Disease and ailments (often with delayed onset) and increasing severity of illness, will require careful attention and treatment to maintain your characters health and vitality. Blurry eyes, sleepy eyes, vomiting, fluid loss, blood loss, and unconsciousness are all symptoms of these conditions, and will aid you in diagnosis so pay careful attention. Regular diligence to food, fluid and disease progression is required, and utilizing blood testing kits, saline bags, tetracycline, vitamins, charcoal, sleep, and blood transfusions will help conquer these conditions. READ THE COMPLETE MEDICAL GUIDE HERE (for players) Server owner and admin recommendations Make blood test kits more plentiful and reduce the spawn of vitamins, antibiotics and saline bags for a more challenging experience. Make the hunt for NBC suit parts a challenge, consider where they spawn, hospitals/clinics for example, and reduce their number. As advised, you are unable to eat/drink with a gas mask on. This mechanic can be extended to full face helmets and other mouth covering clothing. READ FULL CONFIG GUIDE HERE (for server owners) Thanks A big shout out to the DayZ team, past and present, for the vanilla medical system!!! Thank you Community-Online-Tools. Special thanks to @Spud, @WillZ from DDU. Special thanks to @Ezz. Special thanks to @N!c from https://dhk-dayz.de Thank you @Ultrahyper. Thank you @Streatman from IntenZ. Thank you @Dumpgrah from New Dawn. Thank you also @♥♥♥♥, @LEX, @Swoop, @3ntropia for your support. COPYRIGHT 2019-2020 lucianpin.
No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.
22 chain breaks, all on specific classes the mod replaces wholesale — matters only if another mod patches the same classes.
less than 0.001% of each server frame at 100 players (0.000 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.
Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 25 others share it. Ranked list.
Event hooks carry 99.8% of this mod's structural load. 0.000 ms/s in all.
2 hooks · 0.0004 ms/s
| Event hooksrun when something happens: an inventory move, a hit, an action | 2 hooks | 0.0004 ms/s | 99.8% | ActionSplintSelf.ActionCondition, PlayerBase.EEHitBy |
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.
Chain breaks, by consequence
22 overrides that skip super(), ranked by how much they can affect. On any server a break replaces vanilla's behaviour on that method and silences every earlier-loaded mod hooking it.
Init · OnActivate · OnDeactivate · OnReconnect · OnTick
Only these classes are affected. Matters only if another mod in your stack patches the same classes.
2 classes
BoneRegenMdfr, BrokenArmsMdfr10 locations
scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:5scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:24scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:29scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:19scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:48scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:6scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:25scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:32scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:20scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:53Init
Only these classes are affected. Matters only if another mod in your stack patches the same classes.
2 classes
CholeraAgent, SalmonellaAgent2 locations
scripts.pbo::4_World\classes\transmissionagents\agents\choleraagent.c:3scripts.pbo::4_World\classes\transmissionagents\agents\salmonellaagent.c:3Init · OnTick
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
SalmonellaMdfr2 locations
scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\salmonella.c:15scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\salmonella.c:23Init · SetAutoinfectTime
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
InfluenzaAgent2 locations
scripts.pbo::4_World\classes\transmissionagents\agents\influenzaagent.c:5scripts.pbo::4_World\classes\transmissionagents\agents\influenzaagent.c:24OnActivate · OnDeactivate
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
BrainDiseaseMdfr2 locations
scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:3scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:11OnTick
Only these classes are affected. Matters only if another mod in your stack patches the same classes.
2 classes
AntibioticsMdfr, CholeraMdfr2 locations
scripts.pbo::4_World\classes\playermodifiers\modifiers\antibiotics.c:12scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\cholera.c:6CalcAndSetQuantity
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
CAContinuousQuantityBloodTransfer1 location
scripts.pbo::4_World\classes\useractionscomponent\actioncomponents\cacontinuousquantitybloodtransfer.c:3ProcessHit
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
BleedingSourcesManagerServer1 location
scripts.pbo::4_World\classes\bleedingsources\bleedingsourcesmanagerserver.c:3Where 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.
Other findings
super() only on some paths · 7 · warning
- ActionSplintSelf.ActionCondition returns true without consulting super.ActionCondition() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
scripts.pbo::4_World\classes\useractionscomponent\actions\continuous\medical\actionsplintself.c:14 - BrainDiseaseMdfr.OnTick calls super.OnTick() only on some paths — on the others the chain below this mod is dropped.
scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:19 - HemolyticReactionMdfr.OnTick calls super.OnTick() only on some paths — on the others the chain below this mod is dropped.
scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\hemolyticreaction.c:3 - PlayerBase.GetShakeLevel calls super.GetShakeLevel() only on some paths — on the others the chain below this mod is dropped.
scripts.pbo::4_World\entities\manbase\playerbase.c:59 - SalineMdfr.OnTick calls super.OnTick() only on some paths — on the others the chain below this mod is dropped.
scripts.pbo::4_World\classes\playermodifiers\modifiers\saline.c:3 - FeverMdfr.ActivateCondition vetoes early (returns false) on some paths and defers to super.ActivateCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\fever.c:3 - PlayerBase.CanClimb vetoes early (returns false) on some paths and defers to super.CanClimb() otherwise — composes safely with vanilla's and earlier mods' conditions.
scripts.pbo::4_World\entities\manbase\playerbase.c:49
- ActionSplintSelf.ActionCondition returns true without consulting super.ActionCondition() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
Checks answered without super() · 5 · warning
- AgentBase.AutoinfectCheck returns its own answer without consulting super.AutoinfectCheck() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
scripts.pbo::4_World\classes\transmissionagents\agents\agentbase.c:14 - BoneRegenMdfr.ActivateCondition returns its own answer without consulting super.ActivateCondition() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:14 - BoneRegenMdfr.DeactivateCondition returns its own answer without consulting super.DeactivateCondition() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:34 - BrokenArmsMdfr.ActivateCondition returns its own answer without consulting super.ActivateCondition() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:15 - BrokenArmsMdfr.DeactivateCondition returns its own answer without consulting super.DeactivateCondition() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:39
- AgentBase.AutoinfectCheck returns its own answer without consulting super.AutoinfectCheck() — vanilla's conditions on this check, and those of every earlier-loaded mod, no longer apply. Intended when a mod owns the rule outright; otherwise it is how another mod's restriction quietly stops working.
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.
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 45 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.
| method | surface | server | super() | where |
|---|---|---|---|---|
ActionEatMeat.OnEndServer |
— | yes | ✓ | scripts.pbo::4_World\classes\useractionscomponent\actions\continuous\actioneatmeat.c:3 |
ActionSplintSelf.OnFinishProgressServer |
— | yes | ✓ | scripts.pbo::4_World\classes\useractionscomponent\actions\continuous\medical\actionsplintself.c:3 |
ActionSplintSelf.ActionCondition |
T2 | yes | conditional | scripts.pbo::4_World\classes\useractionscomponent\actions\continuous\medical\actionsplintself.c:14 |
AgentBase.AutoinfectCheck |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\agentbase.c:14 |
AntibioticsMdfr.Init |
— | yes | ✓ | scripts.pbo::4_World\classes\playermodifiers\modifiers\antibiotics.c:5 |
AntibioticsMdfr.OnTick |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\antibiotics.c:12 |
BleedingSourcesManagerServer.ProcessHit |
— | yes | ✗ none | scripts.pbo::4_World\classes\bleedingsources\bleedingsourcesmanagerserver.c:3 |
BoneRegenMdfr.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:5 |
BoneRegenMdfr.ActivateCondition |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:14 |
BoneRegenMdfr.OnReconnect |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:19 |
BoneRegenMdfr.OnActivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:24 |
BoneRegenMdfr.OnDeactivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:29 |
BoneRegenMdfr.DeactivateCondition |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:34 |
BoneRegenMdfr.OnTick |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\boneregen.c:48 |
BrainDiseaseMdfr.OnActivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:3 |
BrainDiseaseMdfr.OnDeactivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:11 |
BrainDiseaseMdfr.OnTick |
— | yes | conditional | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\braindisease.c:19 |
BrokenArmsMdfr.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:6 |
BrokenArmsMdfr.ActivateCondition |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:15 |
BrokenArmsMdfr.OnReconnect |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:20 |
BrokenArmsMdfr.OnActivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:25 |
BrokenArmsMdfr.OnDeactivate |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:32 |
BrokenArmsMdfr.DeactivateCondition |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:39 |
BrokenArmsMdfr.OnTick |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\brokenarms.c:53 |
CAContinuousQuantityBloodTransfer.CalcAndSetQuantity |
— | yes | ✗ none | scripts.pbo::4_World\classes\useractionscomponent\actioncomponents\cacontinuousquantitybloodtransfer.c:3 |
CholeraAgent.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\choleraagent.c:3 |
CholeraMdfr.OnTick |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\cholera.c:6 |
FeverMdfr.ActivateCondition |
— | yes | conditional | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\fever.c:3 |
HemolyticReactionMdfr.OnTick |
— | yes | conditional | scripts.pbo::4_World\classes\playermodifiers\modifiers\conditions\hemolyticreaction.c:3 |
InfluenzaAgent.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\influenzaagent.c:5 |
InfluenzaAgent.GetAutoinfectTime |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\influenzaagent.c:19 |
InfluenzaAgent.SetAutoinfectTime |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\influenzaagent.c:24 |
MASettings.ParseMedicalConfig |
— | yes | ✓ | scripts.pbo::3_Game\ma_globals.c:12 |
ModifiersManager.Init |
— | yes | ✓ | scripts.pbo::4_World\classes\playermodifiers\modifiersmanager.c:3 |
PlayerBase.Init |
— | yes | ✓ | scripts.pbo::4_World\entities\manbase\playerbase.c:5 |
PlayerBase.EEHitBy |
T2 | yes | ✓ | scripts.pbo::4_World\entities\manbase\playerbase.c:21 |
PlayerBase.CanClimb |
— | yes | conditional | scripts.pbo::4_World\entities\manbase\playerbase.c:49 |
PlayerBase.GetShakeLevel |
— | yes | conditional | scripts.pbo::4_World\entities\manbase\playerbase.c:59 |
PlayerBase.ApplySplint |
— | yes | ✓ | scripts.pbo::4_World\entities\manbase\playerbase.c:71 |
PlayerBase.UpdateBrokenLegs |
— | yes | ✓ | scripts.pbo::4_World\entities\manbase\playerbase.c:82 |
SalineMdfr.OnTick |
— | yes | conditional | scripts.pbo::4_World\classes\playermodifiers\modifiers\saline.c:3 |
SalmonellaAgent.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\salmonellaagent.c:3 |
SalmonellaMdfr.Init |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\salmonella.c:15 |
SalmonellaMdfr.OnTick |
— | yes | ✗ none | scripts.pbo::4_World\classes\playermodifiers\modifiers\diseases\salmonella.c:23 |
WoundAgent.GetTransferabilityIn |
— | yes | ✗ none | scripts.pbo::4_World\classes\transmissionagents\agents\woundagent.c:3 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
ActionSplintSelf.ActionCondition | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
Includes 0.000 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.
0_preload.pbo
MedicalAttention_PreloadrequiredVersion 0.1 — no requiredAddons
scripts.pbo
MedicalAttention_ScriptsrequiredVersion 0.1 — requiresMedicalAttention_Core
census 1.1 · findings 1.1 · hash 5df5bd6b091cbaf7