From 72e7a9ee93747fa7a41305cdad5dda5745b8308b Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Mon, 14 Nov 2022 11:36:13 -0800 Subject: [PATCH] RPED (#12008) * RPED * sound effect * wires must be open finished me appy slices yum yum * Update Resources/Audio/Items/attributions.yml Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> * Update attributions.yml Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> --- .../Components/MachineComponent.cs | 2 + .../Components/PartExchangerComponent.cs | 32 ++++ .../Construction/PartExchangerSystem.cs | 142 ++++++++++++++++++ Content.Server/DoAfter/DoAfterEventArgs.cs | 10 ++ Content.Server/DoAfter/DoAfterSystem.cs | 6 + Resources/Audio/Items/attributions.yml | 7 +- Resources/Audio/Items/rped.ogg | Bin 0 -> 51612 bytes .../Catalog/Research/technologies.yml | 2 +- .../Objects/Specific/Research/rped.yml | 18 +++ Resources/Prototypes/Recipes/Lathes/tools.yml | 12 ++ .../Specific/Research/rped.rsi/icon.png | Bin 0 -> 1030 bytes .../Research/rped.rsi/inhand-left.png | Bin 0 -> 996 bytes .../Research/rped.rsi/inhand-right.png | Bin 0 -> 1002 bytes .../Specific/Research/rped.rsi/meta.json | 22 +++ 14 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 Content.Server/Construction/Components/PartExchangerComponent.cs create mode 100644 Content.Server/Construction/PartExchangerSystem.cs create mode 100644 Resources/Audio/Items/rped.ogg create mode 100644 Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml create mode 100644 Resources/Textures/Objects/Specific/Research/rped.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Research/rped.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Research/rped.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Research/rped.rsi/meta.json diff --git a/Content.Server/Construction/Components/MachineComponent.cs b/Content.Server/Construction/Components/MachineComponent.cs index 4e3013d1b1..59a251c568 100644 --- a/Content.Server/Construction/Components/MachineComponent.cs +++ b/Content.Server/Construction/Components/MachineComponent.cs @@ -10,7 +10,9 @@ namespace Content.Server.Construction.Components [DataField("board", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? BoardPrototype { get; private set; } + [ViewVariables] public Container BoardContainer = default!; + [ViewVariables] public Container PartContainer = default!; } diff --git a/Content.Server/Construction/Components/PartExchangerComponent.cs b/Content.Server/Construction/Components/PartExchangerComponent.cs new file mode 100644 index 0000000000..d51a6609c0 --- /dev/null +++ b/Content.Server/Construction/Components/PartExchangerComponent.cs @@ -0,0 +1,32 @@ +using System.Threading; +using Robust.Shared.Audio; + +namespace Content.Server.Construction.Components; + +[RegisterComponent] +public sealed class PartExchangerComponent : Component +{ + /// + /// How long it takes to exchange the parts + /// + [DataField("exchangeDuration")] + public float ExchangeDuration = 3; + + /// + /// Whether or not the distance check is needed. + /// Good for BRPED. + /// + /// + /// I fucking hate BRPED and if you ever add it + /// i will personally kill your dog. + /// + [DataField("doDistanceCheck")] + public bool DoDistanceCheck = true; + + [DataField("exchangeSound")] + public SoundSpecifier ExchangeSound = new SoundPathSpecifier("/Audio/Items/rped.ogg"); + + public IPlayingAudioStream? AudioStream; + + public CancellationTokenSource? Token; +} diff --git a/Content.Server/Construction/PartExchangerSystem.cs b/Content.Server/Construction/PartExchangerSystem.cs new file mode 100644 index 0000000000..e84a24c5a5 --- /dev/null +++ b/Content.Server/Construction/PartExchangerSystem.cs @@ -0,0 +1,142 @@ +using System.Linq; +using System.Threading; +using Content.Server.Construction.Components; +using Content.Server.DoAfter; +using Content.Server.Storage.Components; +using Content.Server.Storage.EntitySystems; +using Content.Server.Wires; +using Content.Shared.Interaction; +using Content.Shared.Popups; +using Robust.Shared.Containers; +using Robust.Shared.Player; +using Robust.Shared.Utility; + +namespace Content.Server.Construction; + +public sealed class PartExchangerSystem : EntitySystem +{ + [Dependency] private readonly ConstructionSystem _construction = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly StorageSystem _storage = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnFinished); + SubscribeLocalEvent(OnCancelled); + } + + private void OnFinished(EntityUid uid, PartExchangerComponent component, RpedExchangeFinishedEvent args) + { + component.Token = null; + component.AudioStream?.Stop(); + + if (!TryComp(args.Target, out var machine)) + return; + + if (!TryComp(uid, out var storage) || storage.Storage == null) + return; //the parts are stored in here + + var board = machine.BoardContainer.ContainedEntities.FirstOrNull(); + + if (board == null || !TryComp(board, out var macBoardComp)) + return; + + var machineParts = new List(); + + foreach (var ent in storage.Storage.ContainedEntities) //get parts in RPED + { + if (TryComp(ent, out var part)) + machineParts.Add(part); + } + foreach (var ent in new List(machine.PartContainer.ContainedEntities)) //clone so don't modify during enumeration + { + if (TryComp(ent, out var part)) + { + machineParts.Add(part); + _container.RemoveEntity(machine.Owner, ent); + } + } + + //order by highest rating + machineParts = machineParts.OrderByDescending(p => p.Rating).ToList(); + + var updatedParts = new List(); + foreach (var (type, amount) in macBoardComp.Requirements) + { + var target = machineParts.Where(p => p.PartType == type).Take(amount); + updatedParts.AddRange(target); + } + foreach (var part in updatedParts) + { + machine.PartContainer.Insert(part.Owner, EntityManager); + machineParts.Remove(part); + } + + //put the unused parts back into rped. (this also does the "swapping") + foreach (var unused in machineParts) + { + storage.Storage.Insert(unused.Owner); + _storage.Insert(uid, unused.Owner, null, false); + } + _construction.RefreshParts(machine); + } + + private void OnCancelled(EntityUid uid, PartExchangerComponent component, RpedExchangeCancelledEvent args) + { + component.Token = null; + component.AudioStream?.Stop(); + } + + private void OnAfterInteract(EntityUid uid, PartExchangerComponent component, AfterInteractEvent args) + { + if (component.Token != null) + return; + + if (component.DoDistanceCheck && !args.CanReach) + return; + + if (args.Target == null) + return; + + if (!HasComp(args.Target)) + return; + + if (TryComp(args.Target, out var wires) && !wires.IsPanelOpen) + { + _popup.PopupEntity(Loc.GetString("construction-step-condition-wire-panel-open"), + args.Target.Value, Filter.Pvs(args.Target.Value, entityManager: EntityManager)); + return; + } + + component.AudioStream = _audio.PlayPvs(component.ExchangeSound, uid); + + component.Token = new CancellationTokenSource(); + _doAfter.DoAfter(new DoAfterEventArgs(args.User, component.ExchangeDuration, component.Token.Token, args.Target, args.Used) + { + BreakOnDamage = true, + BreakOnStun = true, + BreakOnUserMove = true, + UsedFinishedEvent = new RpedExchangeFinishedEvent(args.Target.Value), + UsedCancelledEvent = new RpedExchangeCancelledEvent() + }); + } +} + +public sealed class RpedExchangeFinishedEvent : EntityEventArgs +{ + public readonly EntityUid Target; + + public RpedExchangeFinishedEvent(EntityUid target) + { + Target = target; + } +} + +public readonly struct RpedExchangeCancelledEvent +{ +} diff --git a/Content.Server/DoAfter/DoAfterEventArgs.cs b/Content.Server/DoAfter/DoAfterEventArgs.cs index ad41407af3..7ba46c64ea 100644 --- a/Content.Server/DoAfter/DoAfterEventArgs.cs +++ b/Content.Server/DoAfter/DoAfterEventArgs.cs @@ -89,6 +89,16 @@ namespace Content.Server.DoAfter /// public object? UserFinishedEvent { get; set; } + /// + /// Event to be raised directed to the entity when the DoAfter is cancelled. + /// + public object? UsedCancelledEvent { get; set; } + + /// + /// Event to be raised directed to the entity when the DoAfter is finished successfully. + /// + public object? UsedFinishedEvent { get; set; } + /// /// Event to be raised directed to the entity when the DoAfter is cancelled. /// diff --git a/Content.Server/DoAfter/DoAfterSystem.cs b/Content.Server/DoAfter/DoAfterSystem.cs index b6587dee17..4606ff8d08 100644 --- a/Content.Server/DoAfter/DoAfterSystem.cs +++ b/Content.Server/DoAfter/DoAfterSystem.cs @@ -153,6 +153,9 @@ namespace Content.Server.DoAfter if(EntityManager.EntityExists(doAfter.EventArgs.User) && doAfter.EventArgs.UserCancelledEvent != null) RaiseLocalEvent(doAfter.EventArgs.User, doAfter.EventArgs.UserCancelledEvent, false); + if (doAfter.EventArgs.Used is {} used && EntityManager.EntityExists(used) && doAfter.EventArgs.UsedCancelledEvent != null) + RaiseLocalEvent(used, doAfter.EventArgs.UsedCancelledEvent); + if(doAfter.EventArgs.Target is {} target && EntityManager.EntityExists(target) && doAfter.EventArgs.TargetCancelledEvent != null) RaiseLocalEvent(target, doAfter.EventArgs.TargetCancelledEvent, false); @@ -167,6 +170,9 @@ namespace Content.Server.DoAfter if(EntityManager.EntityExists(doAfter.EventArgs.User) && doAfter.EventArgs.UserFinishedEvent != null) RaiseLocalEvent(doAfter.EventArgs.User, doAfter.EventArgs.UserFinishedEvent, false); + if(doAfter.EventArgs.Used is {} used && EntityManager.EntityExists(used) && doAfter.EventArgs.UsedFinishedEvent != null) + RaiseLocalEvent(used, doAfter.EventArgs.UsedFinishedEvent); + if(doAfter.EventArgs.Target is {} target && EntityManager.EntityExists(target) && doAfter.EventArgs.TargetFinishedEvent != null) RaiseLocalEvent(target, doAfter.EventArgs.TargetFinishedEvent, false); diff --git a/Resources/Audio/Items/attributions.yml b/Resources/Audio/Items/attributions.yml index 84c0d544d0..92bce1cd2d 100644 --- a/Resources/Audio/Items/attributions.yml +++ b/Resources/Audio/Items/attributions.yml @@ -6,4 +6,9 @@ - files: ["trayhit2.ogg"] license: "CC-BY-SA-3.0" copyright: "Time immemorial" - source: "https://github.com/tgstation/tgstation/blob/172b533d0257fcc1f8a05406f1c9fad514c14d88/sound/items/trayhit2.ogg" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/blob/172b533d0257fcc1f8a05406f1c9fad514c14d88/sound/items/trayhit2.ogg" + +- files: ["rped.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Time immemorial" + source: "https://github.com/tgstation/tgstation/blob/172b533d0257fcc1f8a05406f1c9fad514c14d88/sound/items/rped.ogg" diff --git a/Resources/Audio/Items/rped.ogg b/Resources/Audio/Items/rped.ogg new file mode 100644 index 0000000000000000000000000000000000000000..93dca60d34112081057283c62a2e1a56f04e24f9 GIT binary patch literal 51612 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 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index b6492dad4a..bd59ea06f7 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -245,6 +245,7 @@ - FireAlarmElectronics - MailingUnitElectronics - HolofanProjector + - RPED - type: technology name: technologies-material-sheet-printing @@ -438,7 +439,6 @@ requiredPoints: 8000 requiredTechnologies: - BasicPartsTechnology - - IndustrialEngineering - PowerCellBasic unlockedRecipes: - AdvancedCapacitorStockPart diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml new file mode 100644 index 0000000000..37fcd55100 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/rped.yml @@ -0,0 +1,18 @@ +- type: entity + parent: BaseStorageItem + id: RPED + name: RPED + description: A Rapid Part Exchange Device, perfect for quickly upgrading machines. + components: + - type: Sprite + sprite: Objects/Specific/Research/rped.rsi + state: icon + - type: Item + sprite: Objects/Specific/Research/rped.rsi + size: 50 + - type: PartExchanger + - type: Storage + capacity: 150 + whitelist: + components: + - MachinePart \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/tools.yml b/Resources/Prototypes/Recipes/Lathes/tools.yml index 85e8789fb7..5886fb45d0 100644 --- a/Resources/Prototypes/Recipes/Lathes/tools.yml +++ b/Resources/Prototypes/Recipes/Lathes/tools.yml @@ -189,3 +189,15 @@ Glass: 350 Plastic: 150 Gold: 10 + +- type: latheRecipe + id: RPED + icon: + sprite: Objects/Specific/Research/rped.rsi + state: icon + result: RPED + completetime: 10 + materials: + Steel: 650 + Plastic: 150 + Gold: 50 diff --git a/Resources/Textures/Objects/Specific/Research/rped.rsi/icon.png b/Resources/Textures/Objects/Specific/Research/rped.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd57f65eb310d99135db23637f62292fb0b16dec GIT binary patch literal 1030 zcmV+h1o``kP)EX>4Tx04R}tkv&MmP!xqvQ?;TM5sQd8WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N2#2@OU5R-E(;FK0v4znP#<(1DbA| ziC9!jrB}tkD}3m{0Q%4^Gs~Ehq&QmE*FAMp-9>m->%Kp$N6lCa@QK8;%rI@@4dUrd z+u*!U9AbG{B|aw}GwFiFk6c$ge&d{TS>Tx=Gntqt4iSsFCRUo5*{h@IUxHTPr&`;Uxv5K>Lg1e2f5rU7%KRobO}Dsht4+XW&Y2_)Aq_=9BbF zLkk}Pz1zUWbwgA3fXf|V@X3%(*_HgXglragKcjC-1O2x^*P1uC`Z-P?fF#W-eghmF z0;4&~UT^X4&gQxO+f$$45B-^Pcu$Us)c^njJV``BR9J=WRzXV}K^T1-gjPhO^)g!v z+t$klEY=dFQ1z;WDxP|gLZN>l6$J4R0tN9XZM}KXgSiwBK@Wn0r?4Q>;O?bO_mbph zVh?REogU(hJG(QxG3lkS@3Q;7nQz{k`DVWah!G>k|A;ql-_gyF1^WEOOWN&PiB81R z=}A~tsax&a8~E4a0HB2p65XH=A3p&Am}Ux0+;QxV1;2m$f_ly6x=I5?H|U2?yF6ZB zf6w2SmsdhX_V+(yVPP@Au?-v)_qd53mH6t~2CCJnz?)_Yj$;RSFD$Esbb3;l!#K+- z!L~1i`GNtW8x#Om*ET|T7$q*_Wa5CQ1Z>y&To!YgR~;E}92=&YlEz+fw^9~Mz{FLH zhQTY?4%|vvhbD#ZK*4vRb5Y-Wj`pPed`qZW@cW;_}TaKcw`SlrRrm*52%xk-#F zi~kZvp{-VInkl}p|0%=vgDvG)z4ldzg%j|XfHj^da{-)O0i!|Mt(4I}FeF?;ZeTXE zM0Nc>&d=Hqh`?OmYvtIz;Sv0}y5w;JX!U{l`9)>YZ9xc;^0G@P+yQ?ZWssF2tTYG3 zy-0skk4h6|852chuY#8o<5sVj(OWKAo)2axNyBpd)V zn@z!3qj8C3GI{;p2#8A!FcZoxbOFD3j2Hm$7f)UF-AjFT)c^nh07*qoM6N<$g7Ssk A2LJ#7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/rped.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Research/rped.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..25702f772a80db358d9b9863a119b60208a228f6 GIT binary patch literal 996 zcmVEX>4Tx04R}tkv&MmP!xqvQ?;TM5sQd8WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N2#2@OU5R-E(;FK0v4znP#<(1DbA| ziC9!jrB}tkD}3m{0Q%4^Gs~Ehq&QmE*FAMp-9>m->%Kp$N6lCa@QK8;%rI@@4dUrd z+u*!U9AbG{B|aw}GwFiFk6c$ge&d{TS>Tx=Gntqt4iSsFCRUo5*{h@IUxHTPr&`;Uxv5K>Lg1e2f5rU7%KRobO}Dsht4+XW&Y2_)Aq_=9BbF zLkk}Pz1zUWbwgA3fXf|V@X3%(*_HgXglragKcjC-1O2x^*P1uC`Z-P?fF#W-eghmF z0;4&~UT^X4&gQxO+f$$45B-^Pcu$Us)c^nj8c9S!RCt{2+ObO;aTEveZ%Uzd%9?<1 zwUY(A1(jwIx=5=r2yqYs2M#ro)&E40Zh~Xr$R+Jq=yIi%YzE_GJdj`WAGDobr;{Y! zh1}&`XyyCa@(aB8?&X)?Z+Hg~5fKp)5fKp)5&eVggJVe}?i1~R!-dXTbXpHRETb80 zy}0$D;MD#I8v(u5>>y({?rE}kts2LSx}{R`I83jBUot5g6fG@#XL z;_H_NHr`fdj%6*aC{#3=dIJiD)%#u0>0HbdD{Kd7Q)|HO%_XwgEZXfRwztb@x07%G zz&v(<>WP}mTcOuh(px|)77-B<5fKp)5fKqlO6D=qos=tXe)aMA|3-Dlu=eKtNcVqy z`<%)UBPvg@?)SS>4^UKRgVm}%^4afqV~xe9k;_{$o~K&1rPH}Up|A=7I6prFrX0zu zHNZYNmat){<9f2YQ&ee!<9c#*xF0%ny}s@ximAE-hKmSZmN3SsG{JE_F~&^Hm4x~s zI9^P>R>^4WfZd&9re3Rz#2L?Zw)io2T-62y1q~PGxSpJxHfFvWPfi=+xZZu7uw3@t zhuCq|{sM!+AavargYjQ3iF&P)2^txdD{6fbwG%pQo}bn%KkD6qdE_Q~Wc~vD7uCza SB`6;N0000EX>4Tx04R}tkv&MmP!xqvQ?;TM5sQd8WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krMAq3N2#2@OU5R-E(;FK0v4znP#<(1DbA| ziC9!jrB}tkD}3m{0Q%4^Gs~Ehq&QmE*FAMp-9>m->%Kp$N6lCa@QK8;%rI@@4dUrd z+u*!U9AbG{B|aw}GwFiFk6c$ge&d{TS>Tx=Gntqt4iSsFCRUo5*{h@IUxHTPr&`;Uxv5K>Lg1e2f5rU7%KRobO}Dsht4+XW&Y2_)Aq_=9BbF zLkk}Pz1zUWbwgA3fXf|V@X3%(*_HgXglragKcjC-1O2x^*P1uC`Z-P?fF#W-eghmF z0;4&~UT^X4&gQxO+f$$45B-^Pcu$Us)c^njAW1|)RCt{2+RtkfK@6cmarrh=_=Yh=_=Y?y&m$mL!>fZ`zk7eeo=qCg)7p zjcm@6$4{P3jDL5(gg$fIO6BE=1^0U$jD~~IobLw>W^C993C|A@>R`DrYVbCuwQHeip9mtQ*d(f)pBrfwMMjxhin zAMIxVVCnhmu^rLlrllDtwl@e|Eq-mS4ge?=o=UN}I5BTE>v+`!jTo?YQ!0wQQsaw&Ti&_irbfvi0>X+55C@Bu1hF_<0MV|D2$dGExNF zaYZQ=8Owyk1=xG^5vA^nv1Gi-ZEngRd%WJ(8-W{mJxMPd=$1)+&2^ft=f!AJ2DI=#~bEB5gg$#>jLZZ)L+?=%f@IkTJ^CvRm Y5AEC7FtIj)O8@`>07*qoM6N<$f|jn^BLDyZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/rped.rsi/meta.json b/Resources/Textures/Objects/Specific/Research/rped.rsi/meta.json new file mode 100644 index 0000000000..99acaed848 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Research/rped.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a, inhands created by EmoGarbage404", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +}