{"product_id":"tommygun-npc","title":"TommygunNPC","description":"\u003cp\u003e\u003cstrong\u003eNPCs that play like real players.\u003c\/strong\u003e TommygunNPC replaces the vanilla scientist brain with custom AI that strafes, flanks, retreats when hurt, heals behind cover, throws grenades, and forms squads. Drop it in and every scientist on your server gets a brain upgrade.\u003c\/p\u003e\n\n\u003cp\u003e\u003ciframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/Q5vd3UeP74I\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e\n\n\u003cp\u003eVanilla NPCs stand still and shoot. These ones move like players — they'll push you when they have the advantage, duck behind cover when they don't, and call nearby NPCs to help. Ten built-in archetypes let you make scavengers that flee on sight and operators that push like chads, all tunable from an in-game admin panel.\u003c\/p\u003e\n\n\u003ch3\u003eWhy This Is Different\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBrain transplant model\u003c\/strong\u003e — works with ANY plugin that spawns ScientistNPCs. BotReSpawn, BetterNPC, Raidable Bases, custom events — TommygunNPC intercepts the spawn and replaces the brain. No config, no compatibility patches.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e25 personality traits\u003c\/strong\u003e — not just difficulty sliders. Toggle traits like DucksOnReload, AvengesSquadmates, SmartGrenades, PushesLostTargets, and ErraticMovement to build NPCs with distinct combat styles.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSquad mechanics\u003c\/strong\u003e — NPCs recruit nearby allies, follow leaders, and avenge fallen squadmates. A fight with one becomes a fight with four.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eZero dependencies\u003c\/strong\u003e — no other plugins required. Drop it in and go.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFull admin panel\u003c\/strong\u003e — configure everything in-game with \u003ccode\u003e\/tgnpc\u003c\/code\u003e. No JSON files, no server restarts.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eCombat AI\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDynamic state machine\u003c\/strong\u003e — idle NPCs roam their area until they spot a threat, then shift between PUSHING, STRAFING, and RETREATING based on health, range, and personality. Every fight plays out differently.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReaction time system\u003c\/strong\u003e — configurable delay before NPCs acquire a new target (0.1s for elites, 1.5s+ for scavengers). No more instant-lock aimbots.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eJump and duck evasion\u003c\/strong\u003e — NPCs dodge during combat with configurable cooldowns, heights, and durations. Some archetypes jump on reload, others duck while shooting.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGrenade system\u003c\/strong\u003e — smart grenade throws with configurable intervals. NPCs that can't reach you will flush you out.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHealing\u003c\/strong\u003e — NPCs use medical items when health drops below threshold. Configurable heal chance and health trigger.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCover seeking\u003c\/strong\u003e — NPCs look for cover when retreating or reloading.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLOS tracking\u003c\/strong\u003e — grace period before NPCs lose a target behind cover. No more instant-forget cheese.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSound investigation\u003c\/strong\u003e — NPCs hear gunshots and footsteps, then move to investigate.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003e10 Built-In Archetypes\u003c\/h3\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eArchetype\u003c\/th\u003e\n\u003cth\u003eReaction Time\u003c\/th\u003e\n\u003cth\u003eDamage\u003c\/th\u003e\n\u003cth\u003eBehavior\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDefault\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e0.65–1.5s\u003c\/td\u003e\n\u003ctd\u003e1.0x\u003c\/td\u003e\n\u003ctd\u003eVanilla-equivalent baseline\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eScavenger\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eSlow\u003c\/td\u003e\n\u003ctd\u003e0.8x\u003c\/td\u003e\n\u003ctd\u003eTimid, flees when hurt\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eGuard\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMedium\u003c\/td\u003e\n\u003ctd\u003e1.0x\u003c\/td\u003e\n\u003ctd\u003eHolds position, doesn't chase\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOperator\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eFast\u003c\/td\u003e\n\u003ctd\u003e1.2x\u003c\/td\u003e\n\u003ctd\u003eElite tactical, pushes aggressively\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eSoldier\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMedium-Fast\u003c\/td\u003e\n\u003ctd\u003e1.0x\u003c\/td\u003e\n\u003ctd\u003eBalanced military\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePatrol\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMedium\u003c\/td\u003e\n\u003ctd\u003e1.0x\u003c\/td\u003e\n\u003ctd\u003eWide roam, alert to sounds\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eRat\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eVery Slow\u003c\/td\u003e\n\u003ctd\u003e1.5x\u003c\/td\u003e\n\u003ctd\u003ePatient ambusher, high burst damage\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMilitaryMix\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eWeighted pool\u003c\/td\u003e\n\u003ctd\u003eMixed\u003c\/td\u003e\n\u003ctd\u003eRandom pick from military archetypes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eRoadMix\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eWeighted pool\u003c\/td\u003e\n\u003ctd\u003eMixed\u003c\/td\u003e\n\u003ctd\u003eRandom pick from road archetypes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eScavengerMix\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eWeighted pool\u003c\/td\u003e\n\u003ctd\u003eMixed\u003c\/td\u003e\n\u003ctd\u003eRandom pick from low-tier archetypes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\u003cp\u003eCreate unlimited custom archetypes from the admin panel. Duplicate an existing one and tweak it, or build from scratch.\u003c\/p\u003e\n\n\u003ch3\u003eMonument Auto-Detection\u003c\/h3\u003e\n\u003cp\u003eTommygunNPC automatically detects all 40+ monuments on your map and lets you assign archetypes per monument. Launch Site gets Operators, Junkyard gets Scavengers, Sewer Branch gets Rats — all configurable from the admin panel. Archetype pools let you assign weighted random picks so NPCs at the same monument aren't all identical.\u003c\/p\u003e\n\n\u003ch3\u003eSquad System\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eLeader recruitment\u003c\/strong\u003e — NPCs with the Leadership trait recruit nearby allies into squads (configurable radius and cooldown)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFollower behavior\u003c\/strong\u003e — squad members roam near their leader and respond to the same threats\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAvenge mechanic\u003c\/strong\u003e — when a squadmate dies, survivors retarget the killer\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eConfigurable squad size\u003c\/strong\u003e — cap how large squads can grow per archetype\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003ePerformance\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFPS-based degradation\u003c\/strong\u003e — when server FPS drops below threshold (default 20), NPC think interval automatically increases from 0.1s to 0.5s\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEfficient state machine\u003c\/strong\u003e — single AttackState with priority chain, minimal per-tick overhead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eProper cleanup\u003c\/strong\u003e — brains are removed cleanly on unload, no orphaned components\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eAdmin Panel\u003c\/h3\u003e\n\u003cp\u003eFull in-game GUI via \u003ccode\u003e\/tgnpc\u003c\/code\u003e:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eArchetype editor\u003c\/strong\u003e — create, duplicate, delete, and configure archetypes with live sliders and toggles\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTrait editor\u003c\/strong\u003e — toggle all 25 personality traits per archetype with color-coded categories\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCombat tuning\u003c\/strong\u003e — reaction time, damage scale, aim cone, engagement range, sense range, grenade intervals\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMovement tuning\u003c\/strong\u003e — speed multipliers, strafe distances, roam range\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSquad config\u003c\/strong\u003e — squad size, recruit radius, follower roam\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMonument mapping\u003c\/strong\u003e — assign archetypes to monuments, toggle per-monument management\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerformance monitor\u003c\/strong\u003e — live FPS, NPC count, managed brain count\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReapply button\u003c\/strong\u003e — push config changes to all active NPCs without restart\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eDeveloper API\u003c\/h3\u003e\n\u003cp\u003eFull API for other plugins to hook into TommygunNPC:\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eArchetype Management\u003c\/strong\u003e\u003c\/p\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eMethod\u003c\/th\u003e\n\u003cth\u003eReturns\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_SetArchetype(ScientistNPC, string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003eApply an archetype to an NPC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_GetArchetype(ScientistNPC)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003estring\u003c\/td\u003e\n\u003ctd\u003eGet current archetype name\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_RegisterArchetype(string, Dict)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003eRegister a custom archetype at runtime\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_UnregisterArchetype(string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003eRemove a registered archetype\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_GetArchetypeNames()\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003estring[]\u003c\/td\u003e\n\u003ctd\u003eList all available archetypes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003cp\u003e\u003cstrong\u003eNPC Control\u003c\/strong\u003e\u003c\/p\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eMethod\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_ForceTarget(ScientistNPC, BasePlayer)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eManually set an NPC's target\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_ClearTarget(ScientistNPC)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eClear current target\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_ForceRetreat(ScientistNPC)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eForce NPC to retreat\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_TagEvent(ScientistNPC, string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eTag NPC with an event identifier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_TagEventWithArchetype(ScientistNPC, string, string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eTag + apply archetype in one call\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003cp\u003e\u003cstrong\u003eQuery\u003c\/strong\u003e\u003c\/p\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eMethod\u003c\/th\u003e\n\u003cth\u003eReturns\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_IsManaged(BaseEntity)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003eCheck if entity has a TommygunBrain\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_HasBrain(ScientistNPC)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003eCheck brain attachment status\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_GetManagedNPCs()\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eScientistNPC[]\u003c\/td\u003e\n\u003ctd\u003eGet all managed NPCs\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_GetNPCsByEvent(string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eScientistNPC[]\u003c\/td\u003e\n\u003ctd\u003eGet NPCs by event tag\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAPI_GetNPCsByArchetype(string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eScientistNPC[]\u003c\/td\u003e\n\u003ctd\u003eGet NPCs by archetype\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003cp\u003e\u003cstrong\u003eHooks Fired\u003c\/strong\u003e\u003c\/p\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eHook\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eOnTommygunBrainAttached(ScientistNPC, string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eFired when a brain is attached (includes archetype name)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eOnTommygunEventNPCSpawned(ScientistNPC, string, string)\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eFired for tagged event NPCs (includes event tag and archetype)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003chr\u003e\n\u003ch3\u003ePermissions\u003c\/h3\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003ePermission\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003etommygunnpc.admin\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eManual grant\u003c\/td\u003e\n\u003ctd\u003eAccess admin panel, all console commands\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eCommands\u003c\/h3\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eCommand\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e\/tgnpc\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eOpen admin panel\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etgnpc.reapply\u003c\/code\u003e (console)\u003c\/td\u003e\n\u003ctd\u003eReapply config to all active NPCs\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etgnpc.killall\u003c\/code\u003e (console)\u003c\/td\u003e\n\u003ctd\u003eKill all managed NPCs (with confirmation)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etgnpc.doreload\u003c\/code\u003e (console)\u003c\/td\u003e\n\u003ctd\u003eReload config from file and reapply\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eFull Configuration Reference\u003c\/h3\u003e\n\u003cp\u003eEvery archetype is built from the following fields. All of these are editable from the in-game admin panel or the JSON config.\u003c\/p\u003e\n\n\u003ch4\u003ePersonality Traits (25 toggles)\u003c\/h4\u003e\n\u003cp\u003eBoolean flags that define how an NPC behaves. Mix and match to create unique combat personalities.\u003c\/p\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eTrait\u003c\/th\u003e\n\u003cth\u003eWhat It Does\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDucksOnRoamWait\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eCrouches when idle at roam destination\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDucksOnReload\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eCrouches while reloading\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDucksOnStrafe\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eCrouches during strafe movements\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDucksOnShoot\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eCrouches while firing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJumpsOnReload\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eJumps while reloading to dodge\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJumpsOnStrafe\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eJumps during strafe movements\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJumpsOnRetreat\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eJumps while retreating\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eWideStrafer\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eUses wider strafe arcs in combat\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eLeadership\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eRecruits nearby NPCs into a squad\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAvengesSquadmates\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eRetargets the killer when a squadmate dies\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAvoidsPlayersInCombat\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eMaintains distance rather than pushing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRunsAtPlayer\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eRushes toward target aggressively\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eBacksUpClose\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eRetreats when target gets too close\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003ePushesLostTargets\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eMoves to last known position when target breaks LOS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eInvestigatesSounds\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eMoves toward gunshots and footsteps\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eLooksAtSounds\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eTurns to face sound sources\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRetargetsThreat\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eSwitches to the most dangerous target\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eStandsWhileShooting\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eStops moving to fire (more accurate, more vulnerable)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRelocatesOnReload\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eMoves to a new position while reloading\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eErraticMovement\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eUnpredictable movement patterns\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSmartGrenades\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eThrows grenades at cover positions and choke points\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eFlushGrenades\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eUses grenades to flush targets out of hiding\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eFlinchesOnHit\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eReacts visually when taking damage\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eWalks\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eWalks instead of runs when not in combat\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRoamClosely\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eStays near spawn point when roaming\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eCombat\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eReaction Time Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.65\u003c\/td\u003e\n\u003ctd\u003eFastest target acquisition delay (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eReaction Time Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.5\u003c\/td\u003e\n\u003ctd\u003eSlowest target acquisition delay (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDamage Scale\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.0\u003c\/td\u003e\n\u003ctd\u003eDamage output multiplier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAim Cone Scale\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e2.0\u003c\/td\u003e\n\u003ctd\u003eAccuracy modifier (lower = more accurate)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAim Settle Time\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.2\u003c\/td\u003e\n\u003ctd\u003eTime to stabilize aim on target\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eEngagement Range Multiplier\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.0\u003c\/td\u003e\n\u003ctd\u003eScales combat engagement distance\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSense Range\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e40\u003c\/td\u003e\n\u003ctd\u003eDetection distance (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eHearing Range\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e80\u003c\/td\u003e\n\u003ctd\u003eSound detection distance (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eTarget Lost Range\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e50\u003c\/td\u003e\n\u003ctd\u003eDistance before target is forgotten\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eMemory Duration\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e5.0\u003c\/td\u003e\n\u003ctd\u003eHow long target is remembered (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eLOS Break Grace Period\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.0\u003c\/td\u003e\n\u003ctd\u003eSeconds before losing a target behind cover\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRetreat Health Threshold\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e50\u003c\/td\u003e\n\u003ctd\u003eAbsolute HP below which NPC retreats\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRetreat Health Fraction Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.25\u003c\/td\u003e\n\u003ctd\u003eHP fraction below which NPC stops retreating and fights\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eHeal Below Health Fraction\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.4\u003c\/td\u003e\n\u003ctd\u003eHP fraction that triggers healing attempt\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eHeal Chance\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.6\u003c\/td\u003e\n\u003ctd\u003eProbability of using medical item\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eUse Grenades\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eEnable grenade throws\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eGrenade Interval Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e8.0\u003c\/td\u003e\n\u003ctd\u003eMinimum seconds between throws\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eGrenade Interval Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e15.0\u003c\/td\u003e\n\u003ctd\u003eMaximum seconds between throws\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSeek Cover\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eMove to cover when retreating or reloading\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eCan Be Blinded\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eAffected by flashbangs\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eMovement\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSpeed Slowest\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.33\u003c\/td\u003e\n\u003ctd\u003eCrawl speed multiplier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSpeed Slow\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.33\u003c\/td\u003e\n\u003ctd\u003eWalk speed multiplier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSpeed Normal\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.5\u003c\/td\u003e\n\u003ctd\u003eJog speed multiplier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eSpeed Fast\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.9\u003c\/td\u003e\n\u003ctd\u003eSprint speed multiplier\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eStrafe Distance Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.0\u003c\/td\u003e\n\u003ctd\u003eMinimum lateral strafe distance (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eStrafe Distance Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e6.0\u003c\/td\u003e\n\u003ctd\u003eMaximum lateral strafe distance (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRoam Range\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e20\u003c\/td\u003e\n\u003ctd\u003eHow far NPC roams from home point (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eSquad\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eMax Squad Size\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eint\u003c\/td\u003e\n\u003ctd\u003e5\u003c\/td\u003e\n\u003ctd\u003eMaximum NPCs per squad\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRecruit Radius\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e10\u003c\/td\u003e\n\u003ctd\u003eDistance to recruit allies (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eRecruit Cooldown\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e15\u003c\/td\u003e\n\u003ctd\u003eSeconds between recruitment attempts\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eFollower Roam Radius\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e4.0\u003c\/td\u003e\n\u003ctd\u003eHow close followers stay to leader (meters)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eJump \/ Duck\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJump Cooldown Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e3.0\u003c\/td\u003e\n\u003ctd\u003eMinimum seconds between jumps\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJump Cooldown Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e6.0\u003c\/td\u003e\n\u003ctd\u003eMaximum seconds between jumps\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJump Height\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e1.5\u003c\/td\u003e\n\u003ctd\u003eJump arc height\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eJump Duration\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.65\u003c\/td\u003e\n\u003ctd\u003eJump animation time (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDuck Cooldown Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e3.0\u003c\/td\u003e\n\u003ctd\u003eMinimum seconds between ducks\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDuck Cooldown Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e6.0\u003c\/td\u003e\n\u003ctd\u003eMaximum seconds between ducks\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDuck Duration Min\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.5\u003c\/td\u003e\n\u003ctd\u003eMinimum crouch hold time (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDuck Duration Max\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e3.0\u003c\/td\u003e\n\u003ctd\u003eMaximum crouch hold time (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eNaming (per archetype)\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eOverride Global\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eUse archetype-specific naming instead of global\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eUse Real Player Names\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003ePull names from actual players on the server\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eCustom Names\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003elist\u003c\/td\u003e\n\u003ctd\u003e[]\u003c\/td\u003e\n\u003ctd\u003eCustom name pool for this archetype\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDisplay Archetype Name\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eShow archetype label in NPC name\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eName Aliases\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003elist\u003c\/td\u003e\n\u003ctd\u003e[]\u003c\/td\u003e\n\u003ctd\u003eAlternate display names for this archetype\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eAudio (per archetype)\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eOverride Global\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eUse archetype-specific audio settings\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAllow Radio Chatter\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eEnable radio chatter sound effects\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003ch4\u003eGlobal Settings\u003c\/h4\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eField\u003c\/th\u003e\n\u003cth\u003eType\u003c\/th\u003e\n\u003cth\u003eDefault\u003c\/th\u003e\n\u003cth\u003eDescription\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eEnabled\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eMaster enable\/disable\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eReplace Vanilla NPCs\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eAuto-replace vanilla scientist brains on spawn\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eKill NPCs In Water\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eKill NPCs stuck swimming\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eUse Real Player Names\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003efalse\u003c\/td\u003e\n\u003ctd\u003eGlobal: pull NPC names from real players\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eCustom Name Pool\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003elist\u003c\/td\u003e\n\u003ctd\u003e[]\u003c\/td\u003e\n\u003ctd\u003eGlobal custom name pool\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eFallback To Vanilla Names\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eUse vanilla scientist names if pools are empty\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eAllow Radio Chatter\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eGlobal: enable radio chatter SFX\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDegrade Under Load\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003ebool\u003c\/td\u003e\n\u003ctd\u003etrue\u003c\/td\u003e\n\u003ctd\u003eEnable FPS-based performance degradation\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDegrade Threshold FPS\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003eint\u003c\/td\u003e\n\u003ctd\u003e20\u003c\/td\u003e\n\u003ctd\u003eFPS below which degradation kicks in\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eNormal Think Interval\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.1\u003c\/td\u003e\n\u003ctd\u003eNPC brain tick rate at normal FPS (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003eDegraded Think Interval\u003c\/code\u003e\u003c\/td\u003e\n\u003ctd\u003efloat\u003c\/td\u003e\n\u003ctd\u003e0.5\u003c\/td\u003e\n\u003ctd\u003eNPC brain tick rate under load (seconds)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\n\u003cp\u003e\u003cstrong\u003eSupport\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFor all questions and feedback, dm me (1928tommygun) on my discord at \u003ca href=\"https:\/\/discord.fragmod.com\"\u003ediscord.fragmod.com\u003c\/a\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eLicense\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eTOMMYGUN'S EULA – BY USING THIS PLUGIN YOU AGREE TO THE FOLLOWING!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eCode contained in this file is not licensed to be copied, shared, resold, or modified in any way.\u003c\/li\u003e\n\u003cli\u003eYou may copy the plugin freely to each server instance that your organization \u003cstrong\u003eowns\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli\u003eDo not share this plugin with other server organizations — they must purchase their own licenses.\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"1928tommygun","offers":[{"title":"Default Title","offer_id":48932854235388,"sku":null,"price":30.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0613\/6079\/9996\/files\/01_image_c09d72ba-f34b-4358-bcdb-69297b6c1265.jpg?v=1775863068","url":"https:\/\/payback.fragmod.com\/products\/tommygun-npc","provider":"Tommygun's Rust Shop","version":"1.0","type":"link"}