JunkYardDog
**UPDATE** Removed 'temp fix' for BIs messup with 1.18.. all works properly now. Changed to vanilla notication system when finding stuff. TODO (COMING SOON!): Add custom wrecks, including boats and air crafts. --------------------------------------------------- Adds the ability to salvage parts (using a wrench) and fuel from wrecks on the map, can also siphon fuel from active cars. Some fuel is lost when siphoning.… (more)
**UPDATE** Removed 'temp fix' for BIs messup with 1.18.. all works properly now. Changed to vanilla notication system when finding stuff. TODO (COMING SOON!): Add custom wrecks, including boats and air crafts. --------------------------------------------------- Adds the ability to salvage parts (using a wrench) and fuel from wrecks on the map, can also siphon fuel from active cars. Some fuel is lost when siphoning. Adds the ability to refill containers at the Medium fuel tanks with ladders, and as a side not, take caution as they also explode with more force than the fuel pumps. FIXED: no longer able to refill containers at ruined pumps. PRO TIP: Its is advisable to bring two containers with you when siphoning fuel, you can not siphon into a container that already has liquid in it. You will need to empty the container or pour liquid into a larger container to save it. Be careful not to swallow any fuel and make sure to wear gloves when salvaging parts, you don't want to get busted knuckles. Currently this is for Both vanilla maps UPDATED: for DeerIsle ALL MAPS! Please report any issues you find! TODO: -Make universal for all maps. -Add server config settings for parts array Other Mods: NoMuffle -Removes muffled voice from helemts and gas masks VendingSearch -Adds ability to search vending machines for drinks CREDITS: MostachoGG - intellectual input and testing Playdachi - intellectual input and scripting WIP This is a work in progress, please report any bugs. Thank you! USAGE & TERMS: - You may not repack or publish this mod on any platform including Steam. PERMISSION IS NOT GRANTED FOR THIS MOD TO BE INCLUDED IN A "SERVER PACK" or "MOD PACK". Use a Collection if you want to include this mod on your server for your users. Copyright © 2020 Zedmag Please consider donating, Thank you!
No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.
1 chain break, all on specific classes the mod replaces wholesale — matters only if another mod patches the same classes.
0.00254% of each server frame at 100 players (0.025 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; 17 others share it. Ranked list.
Every-frame hooks carry 98% of this mod's structural load. 0.025 ms/s in all.
1 hook · 0.025 ms/s
3 hooks · 0.00059 ms/s
4 hooks · 0.000008 ms/s
| Every-frame hooksrun every server frame | 1 hook | 0.025 ms/s | 98% | MissionServer.OnUpdate |
| Event hooksrun when something happens: an inventory move, a hit, an action | 3 hooks | 0.00059 ms/s | 2.3% | ActionFillBottleBase.ActionCondition, Bottle_Base.SetActions, Wrench.SetActions |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 4 hooks | 0.000008 ms/s | <0.1% | Bottle_Base.EEKilled, Land_FuelStation_Feed.EEKilled, MissionBaseWorld.OnInit and 1 more |
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
1 override 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.
OnExplosionEffects
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
Land_FuelStation_Feed1 location
JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:59Where 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
Checks answered without super() · 1 · warning
- Land_FuelStation_Feed.IsFuelStation returns its own answer without consulting super.IsFuelStation() — 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.
JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:38
- Land_FuelStation_Feed.IsFuelStation returns its own answer without consulting super.IsFuelStation() — 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.
super() only on some paths · 1 · info
- ActionFillBottleBase.ActionCondition vetoes early (returns false) on some paths and defers to super.ActionCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
JunkYardDogV4.pbo::scripts\4_World\FillBottleOverride.c:4
- ActionFillBottleBase.ActionCondition vetoes early (returns false) on some paths and defers to super.ActionCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
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 12 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 |
|---|---|---|---|---|
ActionConstructor.RegisterActions |
— | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\ActionConstructor.c:13 |
ActionFillBottleBase.ActionCondition |
T2 | yes | conditional | JunkYardDogV4.pbo::scripts\4_World\FillBottleOverride.c:4 |
Bottle_Base.EEKilled |
T3 | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:4 |
Bottle_Base.OnExplosionEffects |
— | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:15 |
Bottle_Base.SetActions |
T2 | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\ActionTools.c:6 |
Land_FuelStation_Feed.IsFuelStation |
— | yes | ✗ none | JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:38 |
Land_FuelStation_Feed.EEKilled |
T3 | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:50 |
Land_FuelStation_Feed.OnExplosionEffects |
— | yes | ✗ none | JunkYardDogV4.pbo::scripts\4_World\JunkYardScriptClass.c:59 |
MissionBaseWorld.OnInit |
T3 | yes | ✓ | ServerConfig_JD.pbo::scripts\4_World\ConfigWrite.c:69 |
MissionServer.OnInit |
T3 | yes | ✓ | ServerConfig_JD.pbo::scripts\5_Mission\MissionTest.c:4 |
MissionServer.OnUpdate |
T0 | yes | ✓ | ServerConfig_JD.pbo::scripts\5_Mission\MissionTest.c:13 |
Wrench.SetActions |
T2 | yes | ✓ | JunkYardDogV4.pbo::scripts\4_World\ActionTools.c:19 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
MissionServer.OnUpdate | T0 | 1000.0 | measured | 0.0248 |
ActionFillBottleBase.ActionCondition | T2 | 8.0 | placeholder | 0.0002 |
Bottle_Base.SetActions | T2 | 8.0 | placeholder | 0.0002 |
Wrench.SetActions | T2 | 8.0 | placeholder | 0.0002 |
Bottle_Base.EEKilled | T3 | 0.1 | placeholder | 0.0000 |
Land_FuelStation_Feed.EEKilled | T3 | 0.1 | placeholder | 0.0000 |
MissionBaseWorld.OnInit | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.OnInit | T3 | 0.1 | placeholder | 0.0000 |
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.
JunkYardDogV4.pbo
JunkYardDogV4— requiresDZ_Data,DZ_Structures_Wrecks
ServerConfig_JD.pbo
ServerConfig_JD— requiresDZ_Data,JunkYardDogV4
census 1.1 · findings 1.1 · hash 3cb48fdabba0dea8