Files
crystall-punk-14/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs

294 lines
9.9 KiB
C#
Raw Permalink Normal View History

using Content.Shared.Interaction;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
using Content.Shared.Interaction.Events;
using Content.Shared.Item.ItemToggle.Components;
using Content.Shared.Popups;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
using Content.Shared.Temperature;
using Content.Shared.Toggleable;
using Content.Shared.Verbs;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
using Content.Shared.Wieldable;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Network;
namespace Content.Shared.Item.ItemToggle;
/// <summary>
/// Handles generic item toggles, like a welder turning on and off, or an e-sword.
/// </summary>
/// <remarks>
/// If you need extended functionality (e.g. requiring power) then add a new component and use events.
/// </remarks>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
public sealed class ItemToggleSystem : EntitySystem
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
[Dependency] private readonly INetManager _netManager = default!;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
private EntityQuery<ItemToggleComponent> _query;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
public override void Initialize()
{
base.Initialize();
_query = GetEntityQuery<ItemToggleComponent>();
SubscribeLocalEvent<ItemToggleComponent, ComponentStartup>(OnStartup);
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
SubscribeLocalEvent<ItemToggleComponent, MapInitEvent>(OnMapInit);
SubscribeLocalEvent<ItemToggleComponent, ItemUnwieldedEvent>(TurnOffOnUnwielded);
SubscribeLocalEvent<ItemToggleComponent, ItemWieldedEvent>(TurnOnOnWielded);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
SubscribeLocalEvent<ItemToggleComponent, UseInHandEvent>(OnUseInHand);
SubscribeLocalEvent<ItemToggleComponent, GetVerbsEvent<ActivationVerb>>(OnActivateVerb);
SubscribeLocalEvent<ItemToggleComponent, ActivateInWorldEvent>(OnActivate);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
SubscribeLocalEvent<ItemToggleHotComponent, IsHotEvent>(OnIsHotEvent);
SubscribeLocalEvent<ItemToggleActiveSoundComponent, ItemToggledEvent>(UpdateActiveSound);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
private void OnStartup(Entity<ItemToggleComponent> ent, ref ComponentStartup args)
{
UpdateVisuals(ent);
}
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void OnMapInit(Entity<ItemToggleComponent> ent, ref MapInitEvent args)
{
if (!ent.Comp.Activated)
return;
var ev = new ItemToggledEvent(Predicted: ent.Comp.Predictable, Activated: ent.Comp.Activated, User: null);
RaiseLocalEvent(ent, ref ev);
}
private void OnUseInHand(Entity<ItemToggleComponent> ent, ref UseInHandEvent args)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (args.Handled || !ent.Comp.OnUse)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return;
args.Handled = true;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
Toggle((ent, ent.Comp), args.User, predicted: ent.Comp.Predictable);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
private void OnActivateVerb(Entity<ItemToggleComponent> ent, ref GetVerbsEvent<ActivationVerb> args)
{
if (!args.CanAccess || !args.CanInteract || !ent.Comp.OnActivate)
return;
var user = args.User;
args.Verbs.Add(new ActivationVerb()
{
Text = !ent.Comp.Activated ? Loc.GetString("item-toggle-activate") : Loc.GetString("item-toggle-deactivate"),
Act = () =>
{
Toggle((ent.Owner, ent.Comp), user, predicted: ent.Comp.Predictable);
}
});
}
private void OnActivate(Entity<ItemToggleComponent> ent, ref ActivateInWorldEvent args)
{
if (args.Handled || !ent.Comp.OnActivate)
return;
args.Handled = true;
Toggle((ent.Owner, ent.Comp), args.User, predicted: ent.Comp.Predictable);
}
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
/// <summary>
/// Used when an item is attempted to be toggled.
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
/// Sets its state to the opposite of what it is.
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
/// <returns>Same as <see cref="TrySetActive"/></returns>
public bool Toggle(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
if (!_query.Resolve(ent, ref ent.Comp, false))
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
return false;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
return TrySetActive(ent, !ent.Comp.Activated, user, predicted);
}
/// <summary>
/// Tries to set the activated bool from a value.
/// </summary>
/// <returns>false if the attempt fails for any reason</returns>
public bool TrySetActive(Entity<ItemToggleComponent?> ent, bool active, EntityUid? user = null, bool predicted = true)
{
if (active)
return TryActivate(ent, user, predicted: predicted);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
else
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
return TryDeactivate(ent, user, predicted: predicted);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
/// <summary>
/// Used when an item is attempting to be activated. It returns false if the attempt fails any reason, interrupting the activation.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
public bool TryActivate(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
if (!_query.Resolve(ent, ref ent.Comp, false))
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return false;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var uid = ent.Owner;
var comp = ent.Comp;
if (comp.Activated)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return true;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (!comp.Predictable && _netManager.IsClient)
return true;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
var attempt = new ItemToggleActivateAttemptEvent(user);
RaiseLocalEvent(uid, ref attempt);
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (!comp.Predictable) predicted = false;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
if (attempt.Cancelled)
{
if (predicted)
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
_audio.PlayPredicted(comp.SoundFailToActivate, uid, user);
else
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
_audio.PlayPvs(comp.SoundFailToActivate, uid);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
if (attempt.Popup != null && user != null)
{
if (predicted)
_popup.PopupClient(attempt.Popup, uid, user.Value);
else
_popup.PopupEntity(attempt.Popup, uid, user.Value);
}
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return false;
}
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
Activate((uid, comp), predicted, user);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return true;
}
/// <summary>
/// Used when an item is attempting to be deactivated. It returns false if the attempt fails any reason, interrupting the deactivation.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
public bool TryDeactivate(Entity<ItemToggleComponent?> ent, EntityUid? user = null, bool predicted = true)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
if (!_query.Resolve(ent, ref ent.Comp, false))
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return false;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var uid = ent.Owner;
var comp = ent.Comp;
if (!comp.Activated)
return true;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (!comp.Predictable && _netManager.IsClient)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return true;
var attempt = new ItemToggleDeactivateAttemptEvent(user);
RaiseLocalEvent(uid, ref attempt);
if (attempt.Cancelled)
return false;
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (!comp.Predictable) predicted = false;
Deactivate((uid, comp), predicted, user);
return true;
}
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void Activate(Entity<ItemToggleComponent> ent, bool predicted, EntityUid? user = null)
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var (uid, comp) = ent;
var soundToPlay = comp.SoundActivate;
if (predicted)
_audio.PlayPredicted(soundToPlay, uid, user);
else
_audio.PlayPvs(soundToPlay, uid);
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
comp.Activated = true;
UpdateVisuals((uid, comp));
Dirty(uid, comp);
var toggleUsed = new ItemToggledEvent(predicted, Activated: true, user);
RaiseLocalEvent(uid, ref toggleUsed);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
/// <summary>
/// Used to make the actual changes to the item's components on deactivation.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void Deactivate(Entity<ItemToggleComponent> ent, bool predicted, EntityUid? user = null)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var (uid, comp) = ent;
var soundToPlay = comp.SoundDeactivate;
if (predicted)
_audio.PlayPredicted(soundToPlay, uid, user);
else
_audio.PlayPvs(soundToPlay, uid);
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
comp.Activated = false;
UpdateVisuals((uid, comp));
Dirty(uid, comp);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
var toggleUsed = new ItemToggledEvent(predicted, Activated: false, user);
RaiseLocalEvent(uid, ref toggleUsed);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
private void UpdateVisuals(Entity<ItemToggleComponent> ent)
{
if (TryComp(ent, out AppearanceComponent? appearance))
{
_appearance.SetData(ent, ToggleVisuals.Toggled, ent.Comp.Activated, appearance);
}
}
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
/// <summary>
/// Used for items that require to be wielded in both hands to activate. For instance the dual energy sword will turn off if not wielded.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void TurnOffOnUnwielded(Entity<ItemToggleComponent> ent, ref ItemUnwieldedEvent args)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
TryDeactivate((ent, ent.Comp), args.User);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
/// <summary>
/// Wieldable items will automatically turn on when wielded.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void TurnOnOnWielded(Entity<ItemToggleComponent> ent, ref ItemWieldedEvent args)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
// FIXME: for some reason both client and server play sound
TryActivate((ent, ent.Comp));
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
public bool IsActivated(Entity<ItemToggleComponent?> ent)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
if (!_query.Resolve(ent, ref ent.Comp, false))
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
return true; // assume always activated if no component
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
return ent.Comp.Activated;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
/// <summary>
/// Used to make the item hot when activated.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void OnIsHotEvent(Entity<ItemToggleHotComponent> ent, ref IsHotEvent args)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
args.IsHot |= IsActivated(ent.Owner);
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
/// <summary>
/// Used to update the looping active sound linked to the entity.
/// </summary>
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
private void UpdateActiveSound(Entity<ItemToggleActiveSoundComponent> ent, ref ItemToggledEvent args)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var (uid, comp) = ent;
if (!args.Activated)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
comp.PlayingStream = _audio.Stop(comp.PlayingStream);
return;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
if (comp.ActiveSound != null && comp.PlayingStream == null)
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
{
var loop = comp.ActiveSound.Params.WithLoop(true);
item toggling giga rework + full ninja refactor (#28039) * item toggle refactoring and some new systems * add ToggleClothing component/system * unhardcode magboots gravity logic * make magboots and speedboots use ItemToggle and stuff * remove now useless clothing components * update client/server magboots systems * add note to use ItemToggledEvent in ToggleActionEvent doc * refactor PowerCellDraw to use ItemToggle for ui open/close control * add TryUseCharges, refactor charges system * update magboot trigger code * make borg use ItemToggle, network SelectedModule instead of now removed Activated * add AccessToggle for borg * the giga ninja refactor * update ninja yml * update ItemToggle usage for some stuff * fix activatableui requires power * random fixing * yaml fixing * nuke ItemToggleDisarmMalus * make defib use ItemToggle * make things that use power not turn on if missing use charge * pro * fix sound prediction * bruh * proximity detector use ItemToggle * oop * big idiot syndrome * fix ninja spawn rule and make it generic * fix ninja spawn rule yml * move loading profiles into AntagLoadProfileRule * more ninja refactor * ninja yml fixes * the dreaded copy paste ops * remove useless NinjaRuleComponent and ue AntagSelection for greeting * fix invisibility * move IsCompleted to SharedObjectivesSystem * ability fixes * oop fix powercell instantly draining itself * sentient speedboots gaming * make reflect use ItemToggle * fix other test * loadprofilerule moved into its own pr * remove conflict with dragon refactor * remove all GenericAntag code from ninja * ) * probably * remove old enabled * great language bravo vince * GREAT LANGUAGE * who made this language * because it stinks * reparent blood-red magboots to magboots probbbly works * most of the review stuff * hasGrav doesnt mean what i thought it did * make health analyzer use itemtoggle, not fail test * fix mag/speed boots being wacky * UNTROLL * add ItemToggle to the random health analyzers * a * remove unused obsolete borg func * untrolling * :trollface: * fix test * fix * g * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-07-11 05:55:56 +00:00
var stream = args.Predicted
? _audio.PlayPredicted(comp.ActiveSound, uid, args.User, loop)
: _audio.PlayPvs(comp.ActiveSound, uid, loop);
if (stream?.Entity is {} entity)
comp.PlayingStream = entity;
ItemToggle system expansion (#22369) * Fixed EnergySword and variants having incorrect sound on attacking when in their Off state. * Removed the unused ItemToggle from the serverside and created a new shared ItemToggleComponent and System, now used for the e-blade family of items. Also added e-blade hum and swing sounds. Thanks Sloth for the initial code! * Changing Stunbaton system to include the itemToggle system. * Adapted changes that have come up in the meantime. * Changed damagespecifier to be serializable and autoNetworked in melee weapon components. Fixes a bug that makes it so client-side, damage values are not updated on toggle. * Made the ItemToggleSystem have both a shared and a server component. Ported the Stun Baton and Stun Prod to the new toggleable system. Added a failure to activate noise component. * Ported the welders to the new item toggle system. Set it so deactivated damage and item size default to the item's regular options. * Removed unnecessary usings. * Small modification to the stun prod. * Made the integration test use the new method to turn the welders on. * Fixed a few testing issues, applied a few changes requested by Delta. * Updated Stunbaton code for consistentcy when it comes to calling the itemToggle component. * Removed a redundant return; as per Delta. Made examining the stun baton for charge rely on the battery component instead. * Removed the welder visualizer system, now using the generic one. Removed some unused usings. Removed the welder visuals and layers. Ported lighters to the new system. Added zippi (sic) lighters. * Renamed variables used to make them less generic. * Simplified the light update code. * Fixed the unit test to use the itemToggle system for welders now. * Made the name shorter. I can't tell if the welding damage when interacted with actually does anything though. I can't figure out how to trigger it. * Fixed some YML issues. * Added a client side item toggle system just to make the shared code run on local UID's too. * Fixed some more Yaml. * Made the Zippi lighter have its own parent item, so it doesnt' conflict with the random pattern on the regular lighter. * Made the zippi lighter its own in-hand sprites. * Added a summary for the activated property in itemtoggle component. * Fixed a typo in the itemToggle Component. * Fixed a typo. * Added to the remarks for the ItemToggleComponent. * Fixed up the lighter yaml to make it use a generic term instead of a toggle layer enum for the random skin. * Fixed a bug I introduced accidentally with the humming sound. * Removed 2 unnecessary events from the ItemToggleSystem and component. * Fixed a bug by only making the server run the item activation code, since the client cannot predict whether or not the activation will be cancelled. * Cleaned up some names and functions getting called. * Renamed a couple of variables and removed the explicit datafields from the component. Removed "activated: false" from yml since they're already deactivated by default. * Added an IsActivated function, used it in the welder and stun baton systems code. Refactored welder code to remove the WelderToggle event, now using the ItemToggleActivatedEvent instead for eye protection check. * Fixed a typo. Added some comments. * Split the ItemToggle into smaller components. Changed the items that used the toggle system to work with the smaller components. Made the mirror shield reflect energy shots with a 95% chance. * Fixed the namespaces for the server components and whatnot. * Fixed a doubled deactivation sound from using activated wieldable items (like the double Esword). Fixed wrong yml with the e-dagger. Fixed the disarm malus code. * Added the zippo lighter to the detective's trench coat. * Removed the default hit sound for the double e-sword since it was unnecessary. * Changed e-sword damage numbers to be in line with the changes made by Emisse. * Made no damage sounds be autoNetworked, so it changes can be changed on activation/deactivation of items. Made Welders and Eswords sound like themselves but quieter if they hit for 0 damage, instead of taps. You can choose what sound to play when a weapon does 0 damage when activated now. Fixed a bug with swing sounds. * Typo. * Fixed a bug where the welder would blind you if you used it while it was off. * Created a single abstract method called when an item has completed its toggle. * Update Content.Server/Eye/Blinding/EyeProtection/EyeProtectionSystem.cs Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Fixed a comment. * Made most component variables readOnly for ItemToggle. There is no need to be able to change them from within the variable viewer. * Removed trailing white spaces. * Made the Use a field instead of a property in the itemToggleActivation/Deactivation attempt events. * Small fixes. * Removed ForceToggle, just use the toggle method instead. * Fixed a bug with item sharpness staying even after getting deactivated, if the item gained sharpness that way (esword). * Used ProtoId in the welder component. * Made damage NetSerializable as well. * Added networking and data fields to a couple of components. * Made component variables autonetworked. Added some comments. * Moved the events that modify item components on toggle to events, handled (where possible) in the systems linked to said components. * Made all the component variables readWrite again. * Added the component get to the WelderStatus. * Added a predictable bool to the item toggle component. * Replaced the Activated/Deactivated events with ToggleDone, with an Activated argument. Used that to simplify some systems. * Added a reflect update raise event. * Removed the Zippo changes. To add in a later PR. * Removed the zippo from meta.json too. * Small fix. * Another small fix. * Fixed the wieldable system thing in ItemToggle. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2023-12-24 08:11:05 +02:00
}
}
}