DramaMask
Enables masks to be worn to hide from enemies by blending in with the Masked and adds a safe mask, Drama!
Date uploaded | 4 months ago |
Version | 2.1.3 |
Download link | necrowing-DramaMask-2.1.3.zip |
Downloads | 39107 |
Dependency string | necrowing-DramaMask-2.1.3 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Stealthy Masks
Enables masks to be worn to hide from enemies by blending in with the Masked! Also adds a new type of mask, Drama, which is not haunted unlike its Tragedy and Comedy counterparts, allowing you to use this feature safely!
They can also be attached to players' faces, allowing you to look identical to Masked enemies and spook your friends! To balance this mechanic out, there is a stealth meter that is used while attempting to hide.
Compatibility
- LethalLevelLoader: If playing on v50+ and LLL is being used, ensure it is on 1.2.0 or higher to avoid conflicts with most mods; including this one.
- MaskedAiRevamp: Ignoring collision with Masked enemies will not work; it is recommended to use LethalIntelligence instead as this is a successor with more updates.
Works with no other known incompatibilities; supports controller and LethalCompanyVR (though without UI)!
LC Version | Mod Version |
---|---|
v45 | <= 2.0.0 |
v50 | 2.0.1 - 2.1.2 |
v56 | 2.1.3 <= |
Formerly known as DramaMask
Config Options
- Which masks can be used by the player to hide [Host]
- The selection of enemies that can be hidden from & specific enemy overrides [Host]
- The selection of enemies that players won't trigger collision events for when hiding [Host]
- The minimum time players need to be hidden to start ignoring collision events [Host]
- Potentially increase custom enemy compatibility at the cost of performance [Host]
- Disable the stealth meter balancing mechanic [Host]
- Adjust stealth meter behaviour (can be made different if attached) [Host]
- Adjust stealth meter appearance (colour and vanilla meter offset) [Client]
- Stealth meter visibility [OptionalSync]
- Remove mask on meter depletion [Host]
- Adjust drama mask spawn rates with a multiplier & specific moon overrides [Host]
- Change mask action keybinds if Input Utils has been installed [Client]
- Disable mask possession when attached [Host]
- Change mask view on usage (can be made different if attached) [OptionalSync]
- Stop mask actions applying immediately on non-host clients, as it can cause temporary visual desync on rapid changes [Client]
- Ignore custom keybinds with InputUtils installed for compatibility with unconventional control schemes like with LethalCompanyVR [Client]
FAQ
Where can I find the Drama mask?
The Drama mask can be found as scrap with its spawn locations and rates matching that of the Comedy and Tragedy masks (detailed in the table below). This can be adjusted to match your preferences with the base spawn rate multiplier (applied on the default rates) and custom spawn config settings (for granular customisation per moon). Special values for this include [All, Vanilla, Modded] in line with what is provided by LethalLib, and all values are evaluated left to right (for overriding).
Moon | Spawn Chance |
---|---|
Assurance | 3 |
Rend | 40 |
Dine | 40 |
Titan | 40 |
Artifice | 40 |
Modded | 40 |
To also make it available in the store, check out @megapiggy's BuyableDramaMask mod.
What enemies are supported with hide from all enemies?
While the Masked are the main targets to hide from, proper support for other enemies has been added as of 1.4.0 (detailed in the table below). Some of these enemies can be considered to have their own agenda, so they have been classified as "Not Natural". Players will not be hidden from these enemies if the "Enemies Hidden From" config is set to "Natural". For example, Hoarding Bugs would not discriminate against a """Masked""" if they decide to start stealing from their nest.
Extra overrides for these can be specified using the "Enemy Hiding Overrides" config to enable or disable for specific enemies using their names in the code (exclusions prioritised).
Enemy | Status |
---|---|
Masked | Supported - Always |
Thumper | Supported |
Spore Lizard | Supported |
Coil-Head | Supported |
Earth Leviathan | Supported - Not Natural |
Forest Giant | Supported |
Baboon Hawk | Supported - Not Natural |
Hygrodere | Supported |
Bunker Spider | Supported - Not Natural |
Jester | Supported |
Bracken | Supported |
Circuit Bee | Supported - Not Natural |
Ghost Girl | Supported - Not Natural |
Snare Flea | Supported |
Nutcracker | Supported |
Hoarding Bug | Supported - Not Natural |
Butler | Supported |
Masked Bee | Supported - Not Natural |
Old Bird | Supported - Not Natural |
Tulip Snake | Supported |
Kidnapper Fox | Supported |
Barber | Supported |
Eyeless Dog | No |
Manticoil | No |
Roaming Locust | No |
Company | No |
Turret | Supported |
Modded | Compatibility Dependent |
Which modded enemies are supported? / How can I make my custom enemy support hiding?
The current method of hiding depends on references to StartOfRound.allPlayerScripts
being patched to only include entries of visible (and pre-existing invalid) players,
when the base methods for detecting players in EnemyAI
are called.
Vanilla enemies that make use of their own methods for player detection are additionally patched, so they may also be invoked by custom enemies.
References to PlayerIsTargetable
are also patched for calls made outside MeetsStandardPlayerCollisionConditions
, if the "Increased Custom Enemy Compatibility" setting is enabled.
Any storage or cross-referencing done with an index to allPlayerScripts
(like in ButlerEnemyAI
) should instead make use of playerClientId
on the player,
since the position in the array may be affected by this mod's patches.
Enemies can also be added to DramaMask.Config.EnemyTargetHandler.NaturalExceptions
to stop them being hidden from if the "Enemies Hidden From" setting is "Natural".
Aside from this, explicit patches for custom enemies will not be provided by this mod.
Why can I not use items with a mask attached?
This is intentional behaviour and is currently integral to how the mod's mask attaching features work. Changing this could mean rewriting the entire codebase to accomodate this, so it is currently not supported. This is feasible though, and may be considered for an update in the distant future.
Roadmap (development to be paused)
- Sound and visuals support for VR in place of the stealth bar
- Allow the player to have their hands out like the Masked
Credits
Made on request from @tkcool and @pedro9006.
Feature Proposers:
- Stealth meter: @mintiivanilla
- Original Bar UI inspired by @megapiggy's InsanityMeter mod
- Current Ring UI based off @consequential's Oxygen and @confusified's InsanityDisplay mods
- Mask visibility on use: @star0138
- Config based on usage type: @sagey08
- Disabling collision events based on visibility: @alancrytex, @qwbarch, @autumnis
Bug Finders:
- (Pre-Release) Networking: @roshposhtosh, @sabzy, and @saintshekzz
- BiggerLobby incompatibilities: @TheRealMrKam (via GitHub)
- MoreEmotes incompatibilities: @sagey08 and @sashimi_express
- Stuck Mask on orbit: @Regnareb and @sashimi_express
- Rotating masks & colour config: @sashimi_express
- Phantom bodies on death client-side: @ValiusV (via GitHub) and @purefpszac
- Cannot interact (later QE) when holding mask: @purefpszac
- Cannot QE interact when not holding mask (v50): @VirusTLNR (via GitHub)
- HotbarPlus incompatibilities: @mari0no1
- Thumper near player detection NRE: @jontep5543
- Issues on client crash: @mari0no1
- No interaction on game over with mask worn: @virustlnr
- Transpilation incompatibility with LethalVR: @daxcess
- LethalHands incompatibility when mask worn on square up: @sashimi_express
Contact
For requesting new features or highlighting issues/bugs found, please post them in the mod's Dedicated Discord Channel on the Official Lethal Company Modding Discord.
CHANGELOG
2.1.3
- Added v56 enemies support
- Added Artifice to the Drama Mask spawn pool
- Improved stability of the mod
2.1.2
- Fixed compatibility with LethalHands when the current item drop mode selected
2.1.1
- Added compatibility with LethalHands when the mask is worn on squaring up, by detaching the mask and dropping it if intended by the config
2.1.0
- Added vanilla style stealth meter with out of the box compatibility for InsanityDisplay, EladsHUD, and ShyHUD
- Improved local config syncing when changed via LethalConfig ingame
- (Internal) Updated project to NET Standard 2.1
2.0.11
- Fixed accidental hard dependancy on InputUtils
2.0.10
- Fixed minor transpilation conflict with LethalCompanyVR
- Added config to ignore custom keybinds for compatibility with unconventional controller schemes when InputUtils is installed
2.0.9
- Fixed bug stopping interaction when a mask is worn when the player is ejected
2.0.8
- Added safety checks to try and keep any errors self contained within the mod's effects
2.0.7
- Added minimum time to stay hidden for collision ignoring effects to kick in
2.0.6
- Reverted all changes to the way player ids are handled
2.0.5
- Reverted player id extension using the wrong field due to way more issues
2.0.4
- Patched the network events that were missed in 2.0.3 causing issues for clients
- Fixed player id extension using the wrong field
- Added NRE fix for exposed vanilla thumper collision detection
2.0.3
- Add config option to ignore enemy collisions events when using the mask
2.0.2
- Add compatibility to HotbarPlus and similar mods
- Added mask grab and drop sounds to Drama
2.0.1
- Switched main supported version to v50 with addition of version specific enemy patches
2.0.0
- Added better support for hiding from all enemies
- Added configs to specify which enemy groups and overrides to use
- Improved config for specifying moon overrides with special values
- Added dropdown selection for applicable config fields in LethalConfig
1.3.5
- Fix typo causing QE interactions to have duplicate keybinds if only one is rebinded
1.3.4
- Fix item QE interactions due to v50 inputUtils
1.3.3
- Fix recently introduced incompatibility with MoreCompany with item QE interactions
- Added FAQ and improved some config descriptions (e.g. showing options in LethalConfig)
1.3.2
- Fix inability to interact with items when holding a mask due to bad handling of InputUtils on default controls
- Allow mask eyes to be toggled when looking at interactable if the keybind doesn't clash with interact's
1.3.1
- Added config to disable mask possession when attached
1.3.0
- Allowed players to get possessed when wearing the Comedy or Tragedy masks
- Fixed using terminal while wearing mask showing a fake mask in the players' hand
- Allow mask view to be different based on holding up or attaching
- Added translucent mask option on usage
- Fixed phantom bodies remaining on death for clients
- Added config syncing through the use of CSync (Sigurd)
- Added config for instant local mask actions for clients
- Added compatibility for Lethal Config to change configs mid-game
- Added compatibility for Input Utils to rebind mask controls
1.2.4
- Fixed masks rotating every time they are worn
- Fixed bar colour config not working as intended
1.2.3
- Fixed mask size and positioning to match Masked enemies
- Fixed bug where wearing mask won't always hide you
- Added config to set spawn rarity, including a fine grain option for specific moons
1.2.2
- Fixed being softlocked in the mask attached state if worn on teleport, centipede attack, or ship retuning to orbit
- Reduced duplication of masks on disconnection
- Fixed control tips being overridden when other players attach their masks
1.2.1
- Fixed recently introduced incompatibility issues with MoreEmotes
1.2.0
- Added behaviours to mimic the Masked (allowing masks to be attached, and activation of the eyes)
- Fixed Drama mask displaying incorrectly at far distances
1.1.3
- Fixed incompatibility issues with BiggerLobby
1.1.2
- Fix to stop server host seeing other player's masks as outlines if they have the setting enabled
1.1.1
- Added option to only show an outline when equipping masks for better visibility
1.1.0
- Added a regenerative stealth meter for the masks to allow hiding mechanic to be balanced (configurable)
1.0.0
- Added the Drama mask item
- Allowed configured masks (defaults to all) to hide you from configured enemies (defaults to Masked)