* initial commit
- species prototype modifications
- markings points as its own file
- shared humanoid component
* adds a tool to convert sprite accessories to markings (in go)
* removes a fmt call
* converts sprite accessory to markings
* adds hair and facial hair to marking categories
* multiple changes
- humanoid visualizer system
- markings modifications for visualizer
- modifications to shared humanoid component
- lays out a base for humanoid system
* hidden layers, ports some properties from appearance component, shrinks DefaultMarkings a little
* squishes the initialize event calls into one function
adds stuff to set species/skin color externally from a server message - currently laid out as if it a dirty call to a networked component, may be subject to change (server-side has not been implemented yet)
* makes the sprite pipeline more obvious
* apply all markings, hidden layer set replacement
* ensures that markings are cleared when the new set is applied
* starts refactoring markingsset (unfinished)
* more additions to the markingset api
* adds constructor logic to markingset
* adds a method to filter out markings in a set based on a given species
* fixes enumerators in markingset
* adds validator into MarkingSet, fixes ForwardMarkingEnumerator
* modifications to the humanoid visual system
* ensuredefault in markingset
* oop
* fixes up data keys, populates OnAppearanceChange in visualizer
* changes to humanoid component, markings
marking equality is now more strict, humanoidcomponent is now implemented for client as a child of sharedhumanoidcomponent
* markings are now applied the visualizer by diffing them
* base sprites are now applied to humanoids from humanoidvisualizer
* passes along base sprite settings to the marking application so that markings know to follow skin color/alpha or not (see: slimes)
* custom base layers on humanoids
* merges all data keys into one data class for humanoid visualizers
* setappearance in sharedhumanoidsystem, removes custombaselayercolors
* humanoidcomponent, system (empty) in server
* adds some basic public API functions to HumanoidSystem
* add marking, remove marking
* changes appearance MarkingsSet to a List<Marking>, adds listener for PlayerSpawnCompleteEvent in HumanoidSystem
* ensuredefaultmarkings, oninit for humanoids
* markingmanager API changes
* removes MarkingsSet
* LoadProfile, adjusts randomization in humanoid appearance to account for species
* base layer settings in humanoidsystem, eye color from profile
* rearranges files to centralize under Humanoid namespace
* more reorganization, deletes some stuff
gotta break stuff to make other things work, right?
goodbye SpriteAccessory...
* fixes a good chunk of server-side issues
still does not compile, yet
* singlemarkingpicker xaml layout
* singlemarkingpicker logic
* magic mirror window (varying pieces of it, mostly client-oriented)
* removes some imports, gives MagicMirror a BUI class (not filled in yet)
* populates magic mirror BUI functionality / window callbacks
* fixes up some errors in humanoidprofileeditor
* changes to SingleMarkingPicker
SingleMarkingPicker now accepts a List<Marking>, species, and total possible markings available in that marking category
* fixes up hair pickers on humanoid profile editor
* fixes the errors in markingpicker
* markingsystem is now gone
* fixes a bunch of build errors
* so that's why i did it like that
* namespace issues, adds robustxamlloader to singlemarkingpicker
* another robustxamlloader
* human, lizard sprites/points
* prototype fixes, deletion of old spriteaccessory
* component registration, fixes dwarf skin toning
no, 'ReptilianToned' does not exist
* removes component registration from abstract humanoid component
* visualizer data now cloneable
* serialize for visualizer key
* zero-count edge case
* missing semi-colon moment
* setspecies in humanoidsystem
* ensures that default markings, if empty, will cause ensuredefault to skip over that given category
* tryadd instead of add
* whoops
* diff and apply should properly apply markings now
* always ensure default, fixes double load for player spawning
* apply skin color now sets the skin color property in humanoidcomponent
* removes sprite from a few species prototypes
* sprite changes for specific base layers based on humanoid sex
* layer ordering fix, and a missing base layer should now disallow markings on that layer
* anymarking base layer, adds the right leg/foot for humans
* loading a profile will now clear all markings on that humanoid
* adds missing layers for humans
* separates species.yml into respective species prototype files
* ensures that if layer visibility was changed, all markings have to be reapplied
* server-side enforcement of hiding hair (and other head-related markings) when equipping things that hide hair
* slime fix, clothingsystem now dictates layer visibility server side
* sussy
* layer settings should now ensure a marking should match the skin tone
* whoops
* skincolor static class and functions in UI
* skin color validation in humanoidcharacterappearance
* markingpicker now shows only the markings for the selected category in used
* getter for slot in singlemarkingpicker now ensures slot is 0 if markings exists
* FilterSpecies no longer attempts to do removal while iterating
* expands for SingleMarkingPicker
* humanoid base dummy has blank layers now (and snout/tail/headside/headtop)
* fixes an issue with visualizer system if the marking count was different but the markings themselves were (somewhat) the same
* whoops
* adds edge case handlers for count differences in humanoid markings
* preview now loads profile instead of directly setting appearance
* moves marking set loading to update controls
* clones a marking set in markingpicker by using the deep clone constructor
* whoops (deep cloning a marking now copies the marking id)
* adds replace function for markingset
* points should now update after the markings are remove/added
* merging base layer sprites into a humanoid should now clear them before merging
* sets dirty range start to count only if the dirty range start was never set above 0
* fixes up some issues with singlemarkingpicker
* color selector sliders in single marking picker should now expand
* hair from hair pickers should now apply in profile loading (client-side)
* category in singlemarkingpicker now sets the private category variable
* slot selector should now populate
* single marking picker buttons now have text, also shows the category name over all user-clickable elements
* removes a comment
* removing hair slots now sets it to bald, defaults to zero used slots if current hair is bald on hair/facial hair
* random skin color, eye color
* populate colors now checks if the marking count is greater than zero in singlemarkingpicker
* hair/facial hair pickers now just get the first possible hair from the respective species list
* different approach to random skin color
* oh, that's why it wasn't working
* randomize everything now just updates every single control
* selecting a new marking in SingleMarkingPicker should attempt to copy over old colors, populate list now uses cache,
* markingmanager now uses OnlyWhitelisted to populate by category and species
* filterspecies now uses onlyWhitelist to filter markings based on whitelist or not
* oops
* ui fix for singlemarkingpicker, ensures that cache is not null if it is null when populatelist is called
* order of operations for the horizontal expand for add/remove
* hair pickers should now update when you add/remove the hair slot
* fixes variable naming error in character appearance
* loc string fix in singlemarkingpicker
* lizards, vox now have onlyWhitelist, vox restriction for hair/facialhairs
* having zero possible hairs should no longer cause an exception in randomization
* setting species should now update hair pickers
* ignore categories for marking picker
* and a clear as well for the category button
* places that functionality in its own function instead
* adds eye base sprite, vox now also have their own custom eye sprites
* loading a profile client-side should do FilterSpecies for markings now
* client-side load profile does filter species after adding in the hairs now
* magic mirror
* callbacks now call the callback instead of adding it on construct
* whoops
* in removemarking too
* adds missing synchronize calls
* comments out an updateinterface call in magic mirror
* magic mirror window title, minimum sizing
* fixes minsize, adds warning for players who try to set their hair for species that have no hair
* removes spaces in xaml
* namespace changes/organization
* whoopsie (merge conflicts)
* re-enables identity from humanoid component
* damagevisuals now uses the enum given to it instead of the layerstate given on that layer tied to the enum
* removes commas from json
* changes to visuals system so the change is consistent
* chest
* reptilian
* visualizer system now handles body sprite setting/coloration, similar to how characterappearance did it
not a big fan of this
* adds a check in applybasesprites
* adding/removing parts should now make them invisible on a humanoid
* body part removal/adding now enumerates over sublayers instead
* synchro now runs in bodycomponent startup
* parts instead of slots
* humanoidcompnent check
* switches from rsi to actualrsi
* removes all the body stuff (too slow)
* cleans up resolves from humanoid visualizer system
* merging sprites now checks if the base sprites have been modified or not (through things like species changes, or custom base sprite changes)
* not forgetting that one again
* merging now returns an actual dirty value
* replaces the sequenceequal with a more accurate solution
* permanent layers, layer visibility on add/remove part in body
* should send all hidden layers over now
* isdirty in visualizer system for base layers
* isdirty checks count as well
* ok, IsDirty should now set the base layers if the merged sprites are different
* equals override in HumanoidSpritePrototypes.cs
temporary until record prototypes :heck:
* makes fields readonly, equates IDs instead
* adds forced markings through marking picker
* forced in humanoidsystem api, ignorespecies in markingpicker
* marking bui
* makes that serializable as well
* ignore species/forced toggles now work
* adds icon to modifier verb, interface and keys to humanoid bases
* needs the actual enum value to open, no?
* makes the key the actual key
* actions now propagate upwards
* ignore species when set now repopulates markingpicker
* modifiable base layers in the markings window
* oops!
* layout changes
* info box should now appear
* adds ignorespecies for marking picker, collapsible for base layer section of appearance modification window
* collapsible layout moment
* if base layers have changed, all markings are now dirty (and if a base layer is missing, the marking is still 'applied' but it's now just invisible
* small change to marking visibility
* small changes to modifier UI
* markings now match skin on zombification
* zombie stuff
* makes the line edit in marking modifier window more obvious
* disables vox on round start
* horizontal expand on the single label in base layer modifiers
* humanoid profiles in prototypes
* randomhumanoidappearance won't work if the humanoid has a profile already stored
* removes unused code
* documentation in humanoidsystem server-side
* documentation in shared/client
* whoops
* converts accessory into marking in locale files (also adds marking loc string into single marking picker)
* be gone, shared humanoid appearance system from the last upstream merge
* species ignore on randomization (defaults to no ignored species)
* more upstream merge parts that bypassed any errors before merge
* addresses review (also just adds typeserializers in some places)
* submodule moment
* upstream merge issues
* Convert StomachBehavior to a component/system + rejig body namespaces
* test
* slightly more namespace changes
* remove
* Hello?????
* fuck you github test runner
* reviews
* oobsy!
* Moves HumanoidCharacterAppearance to ECS
* Makes HumanoidAppearanceSystem work over networks
* Makes HumanoidAppearanceSystem more efficient
* Cleans up the files
* Updates privacy on a couple of functions
* Fixes a few using references, renames a file
* Makes HumanoidAppearanceSystem more cleaner
* Fixes Magic Mirror
* Cleanup
* HumanoidAppearanceComponent now has a friend
SharedHumanoidAppearanceSystem is only allowed to act on this, now
* Fixes the Body-HumanoidAppearance ECS scaffolding
* a little cleanup never hurt anybody
* quick fix for magic mirror appearance access
* Replaces a networked event with a local one
This one was... causing bugs
* ECS and damage Data
* Comments and newlines
* Added Comments
* Make TryChangeDamageEvent immutable
* Remove SetAllDamage event
Use public SetAllDamage function instead
* Undo destructible mistakes
That was some shit code.
* Rename DamageData to DamageSpecifier
And misc small edits
misc
* Cache trigger prototypes.
* Renaming destructible classes & functions
* Revert "Cache trigger prototypes."
This reverts commit 86bae15ba6616884dba75f552dfdfbe2d1fb6586.
* Replace prototypes with prototype IDs.
* Split damage.yml into individual files
* move get/handle component state to system
* Update HealthChange doc
* Make godmode call Dirty() on damageable component
* Add Initialize() to fix damage test
* Make non-static
* uncache resistance set prototype and trim DamageableComponentState
* Remove unnecessary Dirty() calls during initialization
* RemoveTryChangeDamageEvent
* revert Dirty()
* Fix MobState relying on DamageableComponent.Dirty()
* Fix DisposalUnit Tests.
These were previously failing, but because the async was not await-ed, this never raised the exception.
After I fixed MobState component, this exception stopped happening and instead the assertions started being tested & failing
* Disposal test 2: electric boogaloo
* Fix typos/mistakes
also add comments and fix spacing.
* Use Uids instead of IEntity
* fix merge
* Comments, a merge issue, and making some damage ignore resistances
* Extend DamageSpecifier and use it for DamageableComponent
* fix master merge
* Fix Disposal unit test. Again.
Snapgrids were removed in master
* Execute Exectute
* Add DamageType And DamageGroup Prototypes
* Remove DamageTypePrototype Field "name" as its redundant
* Change I/DamageableComponent to use prototypes
* Update DamageContainer, ReisistanceSet and DamageChangeData
* Change Barotrauma Component to use DamageType from DamageSystem
* Update AsteroidRockComponent
* update some more components
* update some more components
* Fix m o r e c o m p o n e n t s and their damageType
* all thats left is bug/missing node hunting then verification.
* push changes
* update submodule
* Merge fixes
* push DGP for example
* update damagecomponent across shared and server
* fix a few bugs
* Fix Merge issues
* Refactor damageablecomponent update (#4406)
* Fixing merge.
I messed up part of the merge. this should fix it?
* Barotrauma now uses prototypeManager
As System.Runtime.CompilerServices also has a [Dependency], I think I had to use the full path [Robust.Shared.IoC.Dependency]
* FlammableComponent now uses prototypeManager
* SuicideCommands now use prototypeManager
* Changed many files to use prototypeManager to resolve damaege prototypes
Yeah.... prototype references would be very nice. maybe this was all a waste of time.
* Grouping prototypeManager.Index with datafield definitions
This will make it easier to eventually add prototype references
* removed unused variable
* Moved lines around.
Lines now consistent with other TODO PROTOTYPE blocks
* Grouping more prototypeManager.Index with datafield definitions
* Removed unnecessary code
* Added more prototypeManager indexing
These ones weren't pointed out by DrSmug. But I think this is all of them? That or my regex is shit.
* Remove redundant _damage field
* Remove redundant _currentTemperature
* Moved variables down
* Added prototypeManager indexing to TemperatureComponent
* WeaponComponent/System now use ProtptypeManager
And as far as I can tell damageType is required, and therefore should never have been null anyway?
* Make ranged weapon clumsy fire effects datafields
And yes, the order in which the clumsy effects occur is very important.
* Made damage on vital body part loss a datafield
* Renamed several damageGroup variables to group
* Capitalised DamageListToDamageGroup
* Make radiation and explosion damage types datafields
* Renamed _supportedDamageGroupIDs and _supportedDamageTypeIDs
* Fixed mistakes
Frogot to remove prototypeManager index DamageTypeTrigger, and wrong variable visibility in TemperatureComponent
* Added necessary code
Is something tragically wrong?
* MeleeWeapon damageType is not actually required
* Fixing someone else's mistakes
A search comes up with nothing in the yaml files, and its not a required field. So no one uses it? Hopefully?
* Changed and renamed damageTypeToDamageGroup
Previously would incorrectly return the total container damage for each group, not the total in the group
* renaming varitables
* Renamed variable DamageClasses
* Added dictionary converting functions
* Added ID-keyed dictionaries
* Making MedicalScanner use ID dictionaries, instead of prototype dictionaries
Oh oh no. I've been able to avoid UI & networking up until now. I have no Idea what I am doing.
* Fix Medical Scanner
* Summary (required)
The joke here is that this fixes the empty summary.
* Removed DamageableComponent.GetDamageGroup/Type
* Renamed "damage classes" to groups.
* Update ChangeDamage description
* Replaced Heal() with SettAllDamage()
Heal() was just a confusing name,
* More Class -> Group renaming
* Replace Class with Group in yaml files
DamageClassTrigger does not appear in any yaml? only in testing?
DamageTypeTrigger appears only in human.yaml?
HealthChangeMetabolism is Mostly in medicine.yml and one in soad.yaml
Why the hell is Cola metabolizable by plants? Who is pouring cola on their plants!?!?
* Fix _prototypeManager being null errors.
* Changing comments
Where are the prototype references
* MetabolismComponent doesn't give free heals anymore.
* Changes HungerComponent healing.
Previously I think it would actually damage you. Only did this as I though it was causing the fast healing. Turns out that was just BREATHING.
* Generalised a function in DamageableComponent and moved it to DamageGroupPrototype
previously DamageTypesDictToDamageGroupDict was private to DamageableComponent, but was also quite general (nearly a static function). As this sort of function may be needed by other components using DamageGroupPrototypes in the future, I moved it there as a static function instead.
* modified DamageableComponent.ChangeDamage()
ignoreResistances was renamed to ignoreDamageResistances to make it clearer that it had no effect on healing.
Now uses default argument for ignoreDamageResistances, so when healing you are not forced to specify an argument that does nothing.
Also made some general changes to ignoreResistances()
* Changed class->group and added missing damage type functionality to DamageContainerPrototypes
* Added Comments to damage.yml
* Misc Changes to DamageableComponent
* Differentiated between group support and group applicability
So far, every damage type is a member of one, and only one, damage group. So this change has no real effect so far.
* Added proposed alternative to ChangeDamage()
* fixed error in DamageGroupPrototype
* Changes to DamageableComponent
Lots of changes to comments.
Some variables renamed in IDamageableComponent and DamageableComponent (also required renaming in other files)
Some minor logic changes, mostly for incorrect descirptions of boolean return values.
Also further differentiating between ApplicableGroups and SupportedGroups... if that will ever even matter
* Generalised MedicalScannerComponent
If needed, can print miscellaneous damage types now
* Fixed HealthChangeMetabolism bug
* Changing Comments around
* More questions
* Made Barotrauma default to blunt
* Fix RejuvenateTest.cs
* Comments
* Coments and variable names
* fix some master-merge issues
* Removed redundant fields
* Misc changes for readbility of PR diff
* Consistent naming
* Fixed atmos damage bug
* Removed Ranting
* Fixed Hunger after I broke it
* Fixing Bugs
* Removed stupid question
* Removed more stupid questions
* Fix potential null errors.
* Made boolean return values consistent
Also renamed several functions, to make it clear they return a bool. Docs were also updated.
* Removed IoCManager.InjectDependencies()
* Removed unnecessary 'suffocation' prefix
* Fixed Spelling
Also removed accidentally left in logger call
* Fixed Medical Scanner
* Apply suggestions from code review
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
* Changing comments and whitespaces
* Made damage thresholds trigger datafields required
* So many typos
* Changes to DamageableComponents
Changed documentation in IDamageableComponent
Made testing code more readable.
Relabelled groups as 'Applicable' either 'Fully Supported'
* Removed function and degeneralised
* Update DamageableComponent.cs
Removed unused parameters
Fixed Networking
* Added IoCManager.Resolve
* Now using alternative TryChangeDamage()
* Removed function from DamageGroupPrototype
* Removing comments
* Remove bad if statement?
* Fix damageChanged ordering
* Fix hurt server command
* Changed //TODO PROTOTYPE blocks
Now use PrototypeManager differently. Wherever possible, only retrieve the prototype once.
Also added default damage types to some more datafields
* Update Content.Shared/Damage/Container/DamageContainerPrototype.cs
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
* renamed _accumulatedHealth -> _accumulatedDamage and added TODOs
* Another class-> group
* Fix bug in generalisation of damage container prototypes
* Addes Tests to make sure I dont keep adding bugs to my own code.
* Changed Return values when setting
* Removed unused class
* Added more tests, split tests into three files
* Made damage types public and VV read-write-able
* Minor changes to DamageableComponent
Replaced internal use of GetDamagePerType with _damageDict and removed some unnecessary fields
* Fix Suicide, by adding IoC Resolve()
* Fix DamageGroupTrigger bug
* Fix typos in tests
* Change comments./docstrings & spacing
* Merge tests, use test prototypes
Co-authored-by: Leon Friedrich <60421075+leonsfriedrich@users.noreply.github.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
* Fix merge issues
Co-authored-by: Silver <Silvertorch5@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
Co-authored-by: Leon Friedrich <60421075+leonsfriedrich@users.noreply.github.com>