DrifterBossGrab
Allows Drifter to grab and bag anythingChangelog
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.9.1]
Added
- Elite health bar colors
- Elite effects when throwing or bagging enemies
- Blazing, Glacial, Overloading and Perfected
- Need to do more planning with the others
- Overloading bagged effect sucks
- Throw / Bagged effects checkboxes under Balance > Elites
- Blazing, Glacial, Overloading and Perfected
- Self grab
- Since they removed it for some reason
- Look directly up and double tab repossess
- It's in general
- Slam animation feedback
Fixed
- Bag not growing with unlimited mass capacity
- Stock refresh clamping ignoring extra bag slots from formulas
- Settings overlapping after closing the HUD editor
- In game hud editor dropdown
- Hud editor overlaps
- Solus changes
- Solus heart will be grabbed propertly (only his head)
- Solus wing won't fly up anymore and get instantly killed
- Solus vender (SPEX) won't float away from you after a grab
- Loading a save with big objects or enemies slamming you into the ground
- Weird edge case for bottomless causing a mismatch on the thrown projectile's passenger
- Controller binds showing up as unbound until refreshed
- Small bag sync issues for multiplayer
- Mid game preset switching causing the game to freeze for config sync
- Bug with clients where its sending the slot index for animation direction
- Networking cycling errors + collisions for clients
- Optimizations
Changed
- Faster settings tabs
- Sliders/Multipliers are now formulas
- Presets
- UncappedBagScale
- Fixed and reworked it
- EnableStockRefreshClamping and SuccessiveGrabStockRefresh
- Clamping is final capacity - occupied slots
- Successive grab will fresh on throw too
- More cleanup and less log spam
Note
- Still some annoying edge cases for animations and config sync for the client
- Small insignificant errors in multiplayer still
[1.9.0]
Added
- Settings for the new animations
- Enemy portraits wiggle
- Cards flying out on exit
- Destroyed cards squishing
Fixed
- Host and client using separate breakout timers
- Boss breakout timer freezing after quick seat changes
- Breakout intervals changing depending on which object was grabbed first
- Cycling saving total bag age instead of the breakout timer
- Removed hard capped 10 second timer for additional seats
- Mimics printing junk
- Soul conduit stuff
- Object names in the bag
- Teleporter icon looking puny
- Teleporter stacks not working after persisting
- Client side SOA UI issues
- Client side SOA updates on portals
- Cards crossing over each other when cycling quickly
- Thrown enemies and breakouts shoving you through the floor (gup approved)
- Only affected you if you had bottomless bag on
Changed
- Animation settings included in presets and HUD filters
- Roo and UI redesign
- don't feel like listing them
- Stats Panel settings renamed to Card Details
- Now in the carousel
- Capacity bar fill and cap
- Less log spam
- Darker slot and label text
Removed
- Old stats panel position settings
Note
- 1.9.x will just be focused on polish
[1.8.3]
Fixed
- Bindings fixed for the new update
- Teleporter new stage resets
- Persisted portals can be used again
- UI bugs
- Access nodes showing their ON model
- Lunar Teleporter prongs visibility
- gong
- reap reap
[1.8.2]
Fixed
- Fixed
CharacterModel.invisibilityCountandSpecialObjectAttributesrenderers not being cleanly reset
[1.8.1]
Added
- Safeguard to prevent ID conflicts with other mods
- Network guards to disable multiplayer sync packets when Bottomless Bag or Persistence features are turned off
- Mid-match config sync
- Carousel layout orientation option (
VerticalvsHorizontal) - Carousel inactivity fade-out
Show Backgroundtoggle for center and side carousel slots for when you want everything but the icon off
Fixed
- Client-side skill overrides getting stuck when throwing the main passenger or when the bag is empty
- Client state desync when bagged objects are destroyed while in additional seats
- Lobby desyncs and hangs due to message registration and scene desync
- Skill overrides malfunctioning after an enemy breaks out and another is auto-promoted
- Client-side SOA issues on save loading
- Config sync not using the host's
EnableConfigSyncsetting - Missing Recovery Config Sync
- Config presets not set as custom on startup when settings are changed
- Incompatibility with WhatchaGotThere
- Seems like an issue with WhatchaGotThere + Drifter, will remove the bandaid fix once it gets patched
Changed
- StatsPanel default X/Y for the 100th time
[1.8.0]
Added
- API
- This is mainly for me since I want to make some gimmick mods/for debugging
- Check out BagCrafting for an example of how to use it
- ProperSave support
- BodyColliderCache and ReflectionCache
- Multi Teleporter support (put "Teleporter" in persistence blacklist to remove the patches, in case its too invasive for other mods)
- There are like two ways I know of without cheats for persisting charging teleporters
- Recovery Settings
- A proper wiki
- HUD Editor
- SuffocateSlam damage formula
Changed
- Config Reorganization
- UI/UX Improvements
- Refactoring/Reworked
- ModelStatePerserver/State Management (Removed)
- Recovery
- EntityStates
- Overrides
- Additionalseats
- Max Launch
- Presets
- Added Recovery
- Made it a little bit more invasive but should help with fine tuning
- No longer possible to persist survivors
Fixed
- Autopromote and Mainseat for clients
- Lobotomized enemies after more than 1 persistence
- Bagged UI (Now StatsPanel) to be applied to clients correctly
- Carousel Slot UI edge cases causing issues when updating on destroyed passenger
- Destroyed passenger ejection
- Persistence + Save autograb bag order
- AdditionalSeatBreakout fixes, resets properly + collision
- Objects floating away after impact on touch
- Bugs with multiplayer and cycling (breakout during a cycle)
- Bag caps off by 1 for clients
- Performance issues with balance during cycling
- Bagging survivors propertly tracked and exit correctly
Removed
- ModelStatePerserver and StateManagement, code was straight buns and it was old
- Purged stupid fallbacks that probably wont execute, hopefully
- Removed bandaid fix for persisting teleporters
- Persisted teleporters will work properly now
- Carries over charge state but be reset to 0% and shrine counter, new boss + rewards in new stages
- Removed bandaid fix for cycling mid repossess
- AddedCapacity superseeded with SlotScalingFormula
- Mid air grab blocker
- 50 Persistence Object cap
Note
- Issue with the client throwing an extra projectile on breakout, so minor that I just dont care
- Autograb when loading a save is still buggy for only the client in multiplayer
- For the hud editor you need the hud elements to be enabled since they are added in on spawn and aren't always on
[1.7.2]
Added
- Bagged Object Info UI Values
- Successive Grab Stock Refresh, from the clamp bug (kinda liked it)
- Readded search range config
- Raycast component chooser type
- Overencumberance Icon
Fixed
- Bag UI updates correctly when you don't have bottomless bag on
- DamagePreview damage calculation
- UI gradient when mass capacity is off
- Seperators capped correctly to act like capacity 15
- Clamp with repossess refresh again, cleaned it up and should be finialized
- Additional Seat Breakout
- Collider disabled state sync after bagging for clients
- Bottomless Bag + Grabbing other survivors
- Updated ConfigSync
- Clients can choose to not sync configs
- Added more sync settings
Changed
- Defaults and Presets
- Less Invasive
- Vanilla acts as a reset to default
- Weight label icon format
[1.7.1]
Added
- Controller support
- ScrollBagUp (D-Pad Up) and ScrollBagDown (D-Pad Down) keybinds
- Credit: Controller input integration approach based on ExtraSkillSlots by KingEnderBrine
- Config subtabs
- Presets
- Separators for Capacity UI
- FlagMultipliers for Tags
- Health and Level Scaling
- Toggle for animation playing when cycling
- Bag Info UI
- Formula Parsers, make your own formulas (needs more testing)
- Gradient color scaling for the Carousel UI when overencumbered past maximum capacity
- Component Toggler (WIP feature)
Fixed
- Mid air grab for capping your capacity
- Capacity not being set to 1 when grabbing a big object
- UncapCapacity + MassCapacity not capping correctly
- Additionalseat enemies breakout
- X when grabbing object if the previous was destroyed
- Animation for mass capacity when mass ratio is 1 >=
- Logic for handling bagged object escapes, uses safe-list instead of a blacklist of states, fixing ghost tracking objects, does need testing for edge cases
- Animation opacity for the carousel slots
Changed
- Damage preview now only shows on the selected slot
- Carousel slot and cap configs
- Removed Skill Tab, moved maxsmacks and breakouttimer to balance
- Replaced Risk of Options keybinds with Rewired controller+keyboard bindings
- Replaced ComponentTypeDump with a Component Toggler
Note
- Known Issues:
- Damage Preview is wrong sometimes
- Priority Seat doesn't work for the client
- Weight Label still looks off, probably gonna fix it next update
- No Balance multiplayer support yet, well not fully (Just did no testing on it)
- Harmless Error that shows up when you don't have Risk of Options installed
- Keybinds for controller showing different binds on initial launch
- Bag Info UI has issues with updating on grab
[1.7.0]
Added
-
Balance features:
- ToggleMassCapacity
- Capacity Scaling System for mass:
- IncreaseCapacity
- HalveMass
- Elite Mass Bonus
- Overencumbrance System
- State Calculation System:
- Current
- All
- AoE Slam Damage: Slam/bluntforce damage every object in the bag
- Full
- Split
- UncapCapacity
-
HUD features:
- Weight Display for Pounds and Kilograms (still need some tweaking)
- Capacity UI
Fixed
- Clamping no longer fully refresh all stocks
- ModelStatePerserver applying when cycling for the client
- Fix lossyscale restore being applied twice when reparenting
- Tracking when an enemy teleports out of your bag
- Bottomlessbag not spawning junk after destroying an object
- Projectile Grabbing overriding values, like for junk cube
- Issue when grabbing other drifters with bottomless (not a full fix but it won't soft lock you this time, well if you don't have persistence)
Changed
- Refactoring and optimizations
- Split UncapBagScale to UpcapBagScale (increase bag size based on mass, probably would want uncapmass on) and UncapMass (removes 700 mass cap)
[1.6.10]
Fixed
- ModelPerserver adding itself despite my changes (while hosting)
- ModelLocator.autoUpdateModelTransform being applied while persistence is off
- Initial grab will correctly update the UI
- Actually fix autograb at capacity = 1
- Fix client persistence
- Fix auto grab, now works for other clients
- Fix bug with persistence, can now persist an object that is currently in your bag and can persist more than once
- Update Projectile Config, cleaner with a dropdown
Note
- If you noticed weird UI issues when grabbing, it means you're desynced with the host - Most likely the host has bottomless bag on. You can turn it on midgame. Config syncing still needs more testing so don't expect it to be flawless.
- You need Carousel hud on for BottomlessBag (might force it on in the future)
[1.6.9]
Fixed
- Duplicate UI overlapping
- Remove restriction for Autograb at capacity = 1
- Desync when grabbing objects mid-air
- Mass sync for clients
- Tighter Grabbing container, no modelperserver
- Cycle wrap around
- Bug involving needing to grab an additional object to scroll
Note
- Might be a little bloated was in a middle of refactoring BottomlessBag (no changes yet)
[1.6.8]
Added
- Containers for each feature, shouldn't interfere with each other for future updates
- So Persistence, Bottomless Bag, and Grabbing will be separate
[1.6.7]
Added
- UncapBagScale configuration
- AutoGrabDelay configuration
Fixed
- Multiplayer:
- Host-authoritative persistence to prevent NPC duplication in multiplayer
- Restricted autograb to host player as a temporary stability measure for clients
- Improved seat assignment and collision handling for additional passengers
- Fixed impact visibility desynchronization
- Persistence:
- Fixed NullReferenceException in StopCoroutines when leaving or closing the game
- Safer logging to prevent NREs
- UI updates now correctly reflect object destruction
- General:
- Fixed recovery
- Resolved teleportation bug for objects with pre-existing vehicle seats (Solus Wing)
[1.6.6]
Fixed
- Improved skill override cleanup
- NullReferenceExceptions in logging when Unity objects are destroyed
- Mass recalculation
- Persistent slow movement when bagged objects are destroyed
[1.6.5]
Fixed
- Skill overrides persisting after bagged objects are destroyed in the bag/scene (sorry Bread)
[1.6.4]
Added
- UI for Bottomless Bag
- UI animations for bag transitions
- Risk of Options setting for EnableStockRefreshClamping
Fixed
- General multiplayer synchronization and setup
Note
- Autograb is still currently broken
- Persistence should be fine, it'll spawn on the host but should be synced
- Bottomless Bag has a bug where you get 1 extra capacity, don't feel like fixing it so enjoy the extra capacity
[1.6.3]
Fixed
- Boss grabbing now works independently of NPC grabbing (needed to turn on both for it to work)
[1.6.2]
Added
- EnableStockRefreshClamping
Fixed
- Multiplayer fix UI and overrides for client
- Persistence multiplayer
Note
- Main focus for the next couple of updates is going to be for multiplayer
- BottomlessBag is still broken for multiplayer (only the host can get it working)
- Autograb for persistence doesn't work for anyone but the host (will fix it later)
[1.6.1]
Added
- Base capacity option for bottomless bag (adds to utility max stocks)
- Toggle for enabling mouse wheel scrolling
- Keybinds for manual scrolling
Fixed
- Overlapping BaggedObject data
- Blunt force being overrided when there's no object in main vehicle
[1.6.0]
Added
- Bottomless Bag
[1.5.2]
Fixed
- Objects with ModelStatePreserver resetting to original location when thrown - now thrown objects stay at their landed position
[1.5.1]
Fixed
- Support for persistence for NPCs and bosses, you can persist Mithrix
- Certain objects not behaving correctly after thrown
- Persistence with TossedInTransit
Added
- Some icons
Removed
- Some redundancy
[1.5.0]
Added
- Projectile grabbing functionality
Changed
- Reorganized Risk of Options settings, sorry you might need check your old config to port it over
[1.4.6]
Removed
OnlyPersistCurrentlyBaggedconfiguration option - persistence now only applies to objects currently in the bag- Thrown object persistence feature entirely
- Teleporter persistence window logic
Changed
- Simplified persistence logic to always only capture bagged objects
- Persistence now works with objects with dither models (like common chests and shrines)
Fixed
- Multiplayer synchronization for removing objects from persistence on impact
[1.4.5]
Fixed
- Fixed EnableBossGrabbing and EnableNPCGrabbing not working correctly
[1.4.4]
Added
- Configurable toggle to enable grabbing of locked objects
[1.4.3]
Changed
- Added "Controller" to default grabbable keyword blacklist
- Replacing "EntityStateMachine" with "TeleporterInteraction" from GrabbableComponentTypes, seems too problematic (just readded it if you want it)
- Added "MultiShopTerminal,MultiShopLargeTerminal" to default body blacklist
Fixed
- Bug when there's two teleporters in a stage, still buggy
- Bug when throwing the junkcube
- General refactor, removed some doodoo code
[1.4.2]
Added
- Support for grabbing Captain supply drops
[1.4.1]
Added
- Mass and durability now scale based on object collider volume (0.5x to 5x range)
Fixed
- Teleporter interaction bug
- Grabbed object icons
Changed
- Removed numeric suffixes like (1)
[1.4.0]
Added
- Dynamic SpecialObjectAttributes addition to all specified objects on spawn
Changed
- Completely replaced the 500-object caching limit with SpecialObjectAttributes-based system
- Search logic now uses SpecialObjectAttributes instead of cached IInteractable lists
Fixed
- Recovery for certain maps
- Multi shops causing NRE, when broken
[1.3.2]
Added
- Mutliplayer Support for Persistence
[1.3.1]
Added
- Autograb, now implemented
Fixed
- Teleporter persistence
[1.3.0]
Added
- Bagged objects now survive stage transitions and can be manually re-grabbed in the new stage (no multiplayer support yet)
Fixed
- Recovery system bug in stages without OutOfBounds zones causing immediate recovery
Changed
- All thrown objects now have upright rotation by default
[1.2.2]
Added
- Projectile recovery system for objects thrown out of bounds
- Configurable upright recovery option to reset rotation
- Recovery object blacklist to prevent certain objects from being recovered
Changed
- Code refactoring
Fixed
- Multiplayer bugs, enviornmental objects weren't correctly synced
[1.2.1]
Fixed
- Bug when grabbing object mid air that added two GrabbedObjectStates, causing visibility and collision issues
- DisableMovementColliders now includes all colliders and works with Spex
- Possible memory leak from event handlers
- Legendary chest interaction
Added
- Max cache size
Changed
- Replaced static shared dictionaries to prevent buildup over time
[1.2.0]
Fixed
- Environment objects now restore states on projectile impact instead of immediately after throwing
- Better performance with cached config values, optimized blacklist checking, improved component caching
- Replaced timer-based interactable caching with hooks
- Reduced garbage collection
- Preserved original behavior for blacklisted objects in SpecialObjectAttributes
- Improved DisableMovementColliders to handle both CollideWithCharacterHullOnly and World layers
Added
- Interactables are added/removed from cache as they spawn/destroy
- Cache automatically refreshes when players join to catch late-loaded objects
- SpecialObjectAttributes patches now apply per entity type
- Configurable mass multiplier for bagged objects
Changed
- Default config values
- Cleaner code for disabling movement-related colliders
[1.1.3]
Fixed
- Fixed hacking beacon not working correctly when grabbed
Added
- Configurable environment invisibility toggle
- Configurable environment interaction disable toggle
- Configurable forward velocity multiplier
- Configurable upward velocity multiplier
[1.1.2]
Fixed
- Fixed StandableSurface not being disabled for objects with multiple StandableSurface (SolusAmalgamatorBody)
- Fixed error when bagging objects with StandableSurface (like junkcube), it spams junk all over my face
Note
- 1.1.1 is the same as 1.1.0, I'm an idiot
[1.1.0]
Added
- Risk of Options Compatibility
- Configurable blacklist for enemies and environment objects (defaults to MinePodBody,HeaterPodBodyNoRespawn)
Changed
- Updated BepInEx dependency, my bad
[1.0.8]
Fixed
- Fixed movement bug when grabbing flying bosses like Vagrant and MegaConstruct
[1.0.7]
Fixed
- Printers and other interactable objects now remain interactable after being thrown
- Only disable physics colliders during grab, preserve trigger colliders for interaction
[1.0.6]
Added
- Support for grabbing NPCs with ungrabbable flag, like Newt
- Configurable NPC grabbing toggle
- Configurable MaxSmacks setting to control how many hits before bagged enemies break out
Removed
- Configurable max mass
[1.0.5]
Added
- Support for grabbing environment objects, there's a lot (I've done zero testing so GL)
- Configurable environment grabbing toggle
- Fixed collision
- Needed to push this ASAP, it's funny af
Note
- 1.0.4 was skipped (same as 1.0.3, got a little too excited)
[1.0.3]
Added
- Support for grabbing SolusWing
- Configurable max mass for bagged objects
[1.0.2]
Added
- Configurable search range multiplier
- Configurable breakout time multiplier
- Configurable boss grabbing toggle
[1.0.1]
Fixed
- Corrected namespace, remove some template crap
- Removed Breakout Time, was mainly for testing
[1.0.0]
Added
- Boss grabbing functionality
- Fixed momentum issues after grabbing
- Support for all boss enemies (hopefully), only tested stage 1 bosses
