A plague has decimated the world's population, avoid others players to stay alive
Supported Games
Everyone is infected.
Players build plague over time when near others. Isolation reduces it. Illness levels apply configurable effects such as hunger, thirst, and radiation.
Includes kin system for immunity, full API support, and SimpleStatus integration.
Features
- Proximity-based infection system
- Configurable illness levels (calories, hydration, radiation)
- Timed gain, encounter gain, and isolation decay
- Kin system with limits and infection immunity
- SimpleStatus UI support with progress bar
- Localization support (EN/DE)
- Admin/debug commands
- Fully configurable via JSON
Commands
Player
/plagued addkin→ Add looked-at player as kin/plagued delkin→ Remove looked-at player from kin/plagued delkin <number>→ Remove kin by index/plagued lskin→ List kin/plagued level→ Show plague level and progress/plagued info→ Show plugin info
Admin (requires plagued.admin)
/plagued debug→ Toggle debug/plagued testmode→ Toggle test mode/plagued forcetick→ Force proximity metabolism tick/plagued addpoints <amount>→ Add plague points/plagued setpoints <amount>→ Set total plague points/plagued setlevel <level>→ Set level by threshold
Permissions
plagued.admin→ Access to admin commands
API
// Query APIs
object GetPlagueLevelAPI(ulong userId)
object GetTotalPlaguePointsAPI(ulong userId)
object GetCurrentGradeAPI(ulong userId)
object IsPlayerInfectedAPI(ulong userId)
object GetIllnessLevelsAPI()
// Control APIs
object SetTotalPlaguePointsAPI(ulong userId, int amount)
object AddPlaguePointsAPI(ulong userId, int amount)
object SetPlagueLevelByThresholdAPI(ulong userId, int level)
// Kin APIs
object IsKinAPI(ulong playerId, ulong targetId)
object AddKinAPI(ulong playerId, ulong targetId)
object RemoveKinAPI(ulong playerId, ulong targetId)
// Hooks fired by Plagued
void OnPlagueLevelChanged(BasePlayer player, int oldLevel, int newLevel)
void OnPlagueGradeChanged(BasePlayer player, string oldGrade, string newGrade)
void OnPlagueLevelEffectApplied(BasePlayer player, int level, string grade, object levelConfig)
Configuration
{
"Plague Range": 20.0,
"Proximity Check Interval Seconds": 5.0,
"Metabolism Check Interval Seconds": 5.0,
"Plague Point Loss Per Isolation Tick": 1,
"Maximum Kin": 2,
"Maximum Kin Changes Per Wipe": 3,
"Count Sleepers For Exposure": false,
"Chat Prefix": "<color=#81F781>[Plagued]</color>",
"Notify On Infection Start": true,
"Notify On Full Recovery": true,
"Notify On Grade Change": true,
"Notify On Level Up": true,
"Notify On Level Down": true,
"Ignore Illness Effects While Godmode": true,
"Use Simple Status Support": true,
"Simple Status Title": "Plagued",
"Simple Status Icon": "assets/icons/radiation.png",
"Simple Status Icon Color": "1 1 1 1",
"Simple Status Healthy Remove": true,
"Simple Status Rank": 0,
"Simple Status Background Color": "0.40 0.70 0.10 0.85",
"Simple Status Title Color": "1 1 1 1",
"Simple Status Text Color": "1 1 1 1",
"Simple Status Progress Color": "0.40 0.70 0.10 0.85",
"Debug Settings": {
"Enable Debug Logging": true,
"Log To Server Console": true,
"Send Debug Messages To Admin Chat": false
},
"Point Gain Settings": {
"Use Timed Gain": true,
"Timed Gain Interval Seconds": 5.0,
"Timed Gain Per Valid Player": 2,
"Timed Gain Flat If Any Valid Player": 0,
"Use Encounter Gain": false,
"Encounter Gain Per New Player": 10,
"Encounter Cooldown Seconds": 30.0,
"Maximum Counted Players Per Tick": 3
},
"Illness Levels": [
{
"Level": 1,
"Required Total Points": 50,
"Grade": "Early Symptoms",
"Calories Loss": 0.0,
"Hydration Loss": 0.0,
"Maximum Radiation": 0.0,
"Radiation Gain Per Tick": 0.0
},
{
"Level": 2,
"Required Total Points": 250,
"Grade": "Hunger",
"Calories Loss": 0.5,
"Hydration Loss": 0.0,
"Maximum Radiation": 0.0,
"Radiation Gain Per Tick": 0.0
},
{
"Level": 3,
"Required Total Points": 500,
"Grade": "Thirst",
"Calories Loss": 0.5,
"Hydration Loss": 0.5,
"Maximum Radiation": 0.0,
"Radiation Gain Per Tick": 0.0
},
{
"Level": 4,
"Required Total Points": 900,
"Grade": "Dehydrated",
"Calories Loss": 0.5,
"Hydration Loss": 1.0,
"Maximum Radiation": 0.0,
"Radiation Gain Per Tick": 0.0
},
{
"Level": 5,
"Required Total Points": 1400,
"Grade": "Starving",
"Calories Loss": 1.0,
"Hydration Loss": 1.0,
"Maximum Radiation": 0.0,
"Radiation Gain Per Tick": 0.0
},
{
"Level": 6,
"Required Total Points": 2000,
"Grade": "Low Rads",
"Calories Loss": 1.0,
"Hydration Loss": 1.0,
"Maximum Radiation": 10.0,
"Radiation Gain Per Tick": 0.5
},
{
"Level": 7,
"Required Total Points": 2500,
"Grade": "Mild Rads",
"Calories Loss": 1.0,
"Hydration Loss": 1.0,
"Maximum Radiation": 25.0,
"Radiation Gain Per Tick": 0.5
},
{
"Level": 8,
"Required Total Points": 3000,
"Grade": "High Rads",
"Calories Loss": 1.0,
"Hydration Loss": 1.0,
"Maximum Radiation": 40.0,
"Radiation Gain Per Tick": 0.8
},
{
"Level": 9,
"Required Total Points": 3500,
"Grade": "Zombified",
"Calories Loss": 1.0,
"Hydration Loss": 1.5,
"Maximum Radiation": 50.0,
"Radiation Gain Per Tick": 1.0
}
]
}
Localization
- Level Titles get automaticly added when you add more profiles !
{
"Welcome": "Welcome to Plagued. Use <color=#81F781>/plagued</color> for help.",
"NoPermission": "You do not have permission.",
"InvalidCommand": "Invalid Plagued command.",
"UsageAddPoints": "Usage: /plagued addpoints <amount>",
"UsageSetPoints": "Usage: /plagued setpoints <amount>",
"UsageSetLevel": "Usage: /plagued setlevel <level>",
"PointsMustBeValid": "Points must be a valid number.",
"LevelMustBeValid": "Level must be a valid number.",
"DebugEnabled": "Debug is now <color=#F2F5A9>{0}</color>.",
"TestModeEnabled": "Test mode is now <color=#F2F5A9>{0}</color>.",
"ForceTickDone": "Forced a proximity evaluation.",
"AddedPoints": "Added <color=#F2F5A9>{0}</color> plague points. Total is now <color=#F2F5A9>{1}</color> | Level: <color=#F2F5A9>{2}</color>.",
"SetPoints": "Total plague points set to <color=#F2F5A9>{0}</color> | Level: <color=#F2F5A9>{1}</color>.",
"ResetPoints": "Plague points and exposure tracking fully reset.",
"SetLevel": "Plague level set to <color=#F2F5A9>{0}</color> | Total Points: <color=#F2F5A9>{1}</color>.",
"InfoHeader": "===== Plagued =====",
"InfoLine1": "Stay near non-kin players and plague points build up using the timed interval settings.",
"InfoLine2": "Isolation loss per tick: {0}",
"InfoLine3": "Settings: Max kin = {0}, Max kin changes per wipe = {1}, Range = {2}",
"InfoLine4": "Configured illness levels: {0}",
"HealthyStatus": "Grade: <color=#81F781>Healthy</color> | Level: <color=#F2F5A9>0</color> | Total Points: <color=#F2F5A9>{0}/{1}</color>",
"HealthyStatusNoThreshold": "Grade: <color=#81F781>Healthy</color> | Level: <color=#F2F5A9>0</color> | Total Points: <color=#F2F5A9>{0}</color>",
"InfectedStatusMax": "Grade: <color=#F2F5A9>{0}</color> | Level: <color=#F2F5A9>{1}</color> | Total Points: <color=#F2F5A9>{2}</color> | Max Level",
"InfectedStatusProgress": "Grade: <color=#F2F5A9>{0}</color> | Level: <color=#F2F5A9>{1}</color> | Progress: <color=#F2F5A9>{2}/{3}</color> | Total: <color=#F2F5A9>{4}</color>",
"DebugState": "Debug: <color=#F2F5A9>{0}</color> | Test Mode: <color=#F2F5A9>{1}</color>",
"InfectionStart": "I don't feel so good.",
"Recovery": "I feel a bit better now.",
"LevelUp": "You have level <color=#F2F5A9>{0}</color> sickness: <color=#F2F5A9>{1}</color>.",
"LevelDown": "You have dropped to level <color=#F2F5A9>{0}</color> sickness: <color=#F2F5A9>{1}</color>.",
"GradeChanged": "Illness grade changed to <color=#F2F5A9>{0}</color>.",
"CannotAddSelfKin": "You cannot add yourself as kin.",
"AlreadyKin": "{0} is already your kin.",
"MaxKinReached": "You already have the maximum number of kin ({0}).",
"OtherMaxKinReached": "{0} already has the maximum number of kin.",
"KinCreateFailed": "That kin relationship could not be created.",
"KinNow": "You are now kin with {0}!",
"KinRequested": "You have requested to be {0}'s kin.",
"KinRequestReceived": "{0} has requested to be your kin. Add them back to accept.",
"KinRequestExists": "That kin request already exists.",
"NotKin": "{0} is not your kin.",
"RemoveKinFailed": "Could not remove kin. You may have exceeded the maximum kin changes for this wipe.",
"RemovedKin": "{0} was removed from your kin list.",
"InvalidKinNumber": "Invalid kin list number.",
"RemovedKinByIndex": "Successfully removed kin: {0}",
"NoKin": "You have no kin.",
"KinListTitle": "Kin list",
"LookPlayerFailed": "You aren't looking at a player.",
"RotationFailed": "Couldn't get player rotation.",
"LevelTitleFallback": "Level {0}",
"SimpleStatusText": "Lv {0} - {1}",
"LevelTitle_1": "Early Symptoms",
"LevelTitle_2": "Hunger",
"LevelTitle_3": "Thirst",
"LevelTitle_4": "Dehydrated",
"LevelTitle_5": "Starving",
"LevelTitle_6": "Low Rads",
"LevelTitle_7": "Mild Rads",
"LevelTitle_8": "High Rads",
"LevelTitle_9": "Zombified",
"HelpTitle": "===== Plagued Commands =====",
"HelpLine1": "<color=#81F781>/plagued addkin</color> => <color=#D8D8D8>Add the player you are looking at to your kin list.</color>",
"HelpLine2": "<color=#81F781>/plagued delkin</color> => <color=#D8D8D8>Remove the player you are looking at from your kin list.</color>",
"HelpLine3": "<color=#81F781>/plagued delkin</color> <color=#F2F5A9>number</color> => <color=#D8D8D8>Remove a kin by list number.</color>",
"HelpLine4": "<color=#81F781>/plagued lskin</color> => <color=#D8D8D8>Display your kin list.</color>",
"HelpLine5": "<color=#81F781>/plagued level</color> => <color=#D8D8D8>Display your plague level and points.</color>",
"HelpLine6": "<color=#81F781>/plagued debug</color> => <color=#D8D8D8>Toggle debug logging for yourself (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine7": "<color=#81F781>/plagued testmode</color> => <color=#D8D8D8>Toggle test mode (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine8": "<color=#81F781>/plagued forcetick</color> => <color=#D8D8D8>Force a proximity evaluation right now (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine9": "<color=#81F781>/plagued addpoints</color> <color=#F2F5A9>amount</color> => <color=#D8D8D8>Add plague points to yourself (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine10": "<color=#81F781>/plagued setpoints</color> <color=#F2F5A9>amount</color> => <color=#D8D8D8>Set total plague points (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine11": "<color=#81F781>/plagued setlevel</color> <color=#F2F5A9>level</color> => <color=#D8D8D8>Set yourself to a configured level threshold (requires <color=#F2F5A9>plagued.admin</color>).</color>",
"HelpLine12": "<color=#81F781>/plagued info</color> => <color=#D8D8D8>Display plugin info.</color>",
"CannotUseNpc": "NPCs cannot be used by Plagued."
}
Credits
- Psi|ocybin, the original author of the plugin
- Nogrod, for inspiration from Human NPC for my collider detection component and ray casting
- rfc1920, for helping maintain the plugin
This plugin is unlicensed and the original author reserves all rights to it.
The original author may request that this plugin be removed and there is a risk that the plugin may be unavailable in the future.
Note that the current maintainer may not have permission to assign a license to the plugin if they are not the original author, so explicit permission would need to be obtained from the original author in order for the plugin to remain openly available and guarantee that it will be around for all to enjoy going forward.
The original author may request that this plugin be removed and there is a risk that the plugin may be unavailable in the future.
Note that the current maintainer may not have permission to assign a license to the plugin if they are not the original author, so explicit permission would need to be obtained from the original author in order for the plugin to remain openly available and guarantee that it will be around for all to enjoy going forward.

