* Update DamageableSystem to modern standards
* DamageContainerId -> DamageContainerID with lint flag
* Replace strings with protoids
* Make CVar subscription declarations all consistently whitespaced
* ChangeDamage -> TryChangeDamage, cope with C# jank
* Revert event signature changes
* Restore a comment
* Re-add two queries
* Init the queries
* Use appearanceQuery in DamageChanged
* Use damageableQuery in TryChangeDamage
* Use damageableQuery in SetDamageModifierSetId
* Final cleanup, fix sandboxing
* Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage
* Re-organize DamageableSystem
* first big fuck you breaking change.
* THATS A LOT OF DAMAGE!!!
* Fix test fails
* test fixes 2
* push it
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* Creat Execution Component and add to sharp items
* Kill Server ExecutionSystem. Create ExecutionSystem in shared. Create ActiveExecution Component.
Transferred the Execution system into shared. Heavily re-wrote the system in order to reduce duplication,
and remove gun code from the system.
The melee weapon modifier which was dependant on swing rate was removed.
The ActiveExecutionComponent was created in order to apply the damage modifier to the shot from a gun execution.
It is added just before the gun fires and removed after an attempt is made.
* Fix bugs
The execution completed text will now only show up if the gun fires.
The client also no longer crashes because I forgot to network the component.
* Remove clumsy text
* Make BaseSword abstract
* Add ExecutionComponent to every weapon
* Fix bug
* Remove execution comp from battery weapons
Currently the gun system does not have a way to alter hitscan damage like it does with projectiles.
* Cleanup
* Revert "Remove clumsy text"
This reverts commit a46da6448d5d179a4e936f9213d5622bedb58a16.
* Actually fix the ExecutionSystem
Everything about the shot goes through the gun system now.
The Damage multiplier is only applied when a projectile impacts the target so people that get in the way don't get hit
with 9 times damage for no reason.
In order to make suicides work I needed to create fake EntityCoordinates because the gun system and the projectile
system do not play well with a projectile that has the same start and end position.
* Make launchers able to execute
* Fix prediction bug
The OnAmmoShotEvent is only raised on the server.
* Readd ability for clowns to accidentally shoot themselves while executing
* Cleanup
* Reset melee cooldown to initial value
* Address reviews fix bug
Addressed reviews on overriding messages.
Now I actually mark doafters as handled.
Return normal cooldown to some meleeweapons I forgot on the previous commit.
* Address Reviews
Remove duplication
* Exorcise codebase
Remove evil null coercion that I was sure I removed a while ago
* Address reviews again
* Remove melee weapon attack logic and rely on the system. Remove gun and
melee checks.
* Make system functional again and cleanup
* Remove code I forgot to remove
* Cleanup
* stalled
* Selectively revert gun penetration
The collision layer check doesn't work and I don't have time to fix it.
* Fixes
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* clustergrenades go boom
* Small tweaks
* Some tweaks and soaplet
* clustergrenadesystem changes and launcher types
* small tweaks
* typo
* whitespace
* rsi edit
* another typo
* add containers
* Some changes related to merge
* Forgot to change name
* Made changes based on review
* Removed new china lake ammo based on feedback in other PR
* Unneeded nested loop moment
* Nested loop needed after all moment
* 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