From 619c11fc78ab070cd99d951aed31ec17ca8a381c Mon Sep 17 00:00:00 2001 From: Rinary Date: Thu, 17 Oct 2024 15:35:19 +0300 Subject: [PATCH 01/27] permission changes --- Resources/engineCommandPerms.yml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml index 94d7920228c..2047bcd5bd2 100644 --- a/Resources/engineCommandPerms.yml +++ b/Resources/engineCommandPerms.yml @@ -73,19 +73,21 @@ - Flags: MAPPING Commands: - addmap - - loadgrid - - loadmap +#Sunrise-start: loadmap|mapinit|loadgrid|tpgrid|rmmap|rmgrid for moderators +# - loadgrid +# - loadmap - pausemap - querymappaused - - rmgrid - - rmmap - - mapinit +# - rmgrid +# - rmmap +# - mapinit - savegrid - savemap - setambientlight - - tpgrid +# - tpgrid - gridtc - togglespritenetsync +#Sunrise-end - Flags: ADMIN Commands: @@ -111,6 +113,14 @@ - spawn - cspawn - delete +#Sunrise-start: loadmap|mapinit|loadgrid for moderators + - loadgrid + - loadmap + - mapinit + - tpgrid + - rmgrid + - rmmap +#Sunrise-end - Flags: MODERATOR Commands: From 506e0b71db7b3b41bffe9c0ee25aa4f8a9e8abcd Mon Sep 17 00:00:00 2001 From: Rinary Date: Thu, 17 Oct 2024 15:35:31 +0300 Subject: [PATCH 02/27] super matter changes --- .../Supermatter/EntitySystems/SupermatterSystem.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index 1cf41b65634..722d5e8dcda 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -26,6 +26,7 @@ using Content.Server.DoAfter; using Content.Server.Explosion.EntitySystems; using Content.Server.Kitchen.Components; +using Content.Shared.Tag; namespace Content.Server.Supermatter.EntitySystems; @@ -45,6 +46,7 @@ public sealed class SupermatterSystem : EntitySystem [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly DoAfterSystem _doAfter = default!; [Dependency] private readonly ExplosionSystem _explosion = default!; + [Dependency] private readonly TagSystem _tagSystem = default!; public override void Initialize() { @@ -182,7 +184,10 @@ private void ProcessPower(EntityUid uid, SupermatterComponent sm) _sound.PlayPvs(SupermatterComponent.SupermatterZapSound, uid); _lightning.ShootRandomLightnings(uid, 3, (int) strength < 1 ? 1 : (int) strength, lightningProto); - Comp(uid).Intensity = 1 + strength; + if (Comp(uid).Intensity < 5) + Comp(uid).Intensity += 1 + strength; + else + Comp(uid).Intensity = 5; } /// /// React to damage dealt by all doodads. @@ -295,6 +300,8 @@ private void Vaporize(EntityUid uid, EntityUid smUid) if (EntityManager.IsQueuedForDeletion(uid)) return; + if (TryComp(smUid, out var sm)) + sm.Damage += 1; _sound.PlayPvs(SupermatterComponent.VaporizeSound, smUid); EntityManager.QueueDeleteEntity(uid); @@ -419,6 +426,9 @@ private void OnCollide(EntityUid uid, SupermatterComponent sm, StartCollideEvent { if (!sm.Activated) sm.Activated = true; + + if (_tagSystem.HasTag(args.OtherEntity, "EmitterBolt")) + return; Vaporize(args.OtherEntity, uid); } From 37ebe33a9a8665e5b412352d9f604701accb079e Mon Sep 17 00:00:00 2001 From: Rinary Date: Thu, 17 Oct 2024 15:52:18 +0300 Subject: [PATCH 03/27] NT backpack energy dome --- .../entities/objects/tools/energydome.ftl | 4 +- .../Entities/Objects/Tools/energydome.yml | 40 ++++++++++++++++++ .../nanotrasen_back.rsi/equipped-BACKPACK.png | Bin 0 -> 917 bytes .../EnergyDome/nanotrasen_back.rsi/icon.png | Bin 0 -> 877 bytes .../nanotrasen_back.rsi/inhand-left.png | Bin 0 -> 807 bytes .../nanotrasen_back.rsi/inhand-right.png | Bin 0 -> 798 bytes .../EnergyDome/nanotrasen_back.rsi/meta.json | 34 +++++++++++++++ 7 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/icon.png create mode 100644 Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/inhand-left.png create mode 100644 Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/inhand-right.png create mode 100644 Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/meta.json diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/tools/energydome.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/tools/energydome.ftl index 831800399e8..69a8ef37e94 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/tools/energydome.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/tools/energydome.ftl @@ -1,4 +1,6 @@ ent-EnergyDomeGeneratorBackpackSyndie = кроваво-красный наспинный генератор щита .desc = Наспинный генератор щита, защищающий владельца от лазеров и пуль, но не позволяющий самому использовать оружие дальнего боя. Использует батареи. +ent-EnergyDomeGeneratorBackpackNT = BR-50c "Бастион" + .desc = Наспинный генератор щита, защищающий владельца от лазеров и пуль, но не позволяющий самому использовать оружие дальнего боя. Использует батареи. ent-EnergyDomeGeneratorPersonalNT = BT-21b "Барьер" - .desc = Генератор щита, защищающий владельца от лазеров и пуль, но не позволяющий самому использовать оружие дальнего боя. Использует батареи. + .desc = Генератор щита, защищающий владельца от лазеров и пуль, но не позволяющий самому использовать оружие дальнего боя. Использует батареи. \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml index 4cae859ac84..261d6a3e391 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml @@ -38,6 +38,46 @@ - type: UseDelay delay: 10.0 +- type: entity + name: BR-50c "Bastion" + description: A backpack shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. + id: EnergyDomeGeneratorBackpackNT + parent: BaseItem + components: + - type: Item + size: Ginormous + - type: MultiHandedItem + - type: Clothing + quickEquip: false + slots: + - Back + - type: Sprite + sprite: _Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi + layers: + - state: icon + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + - type: PowerCellSlot + cellSlotId: cell_slot + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellSmall + whitelist: + tags: + - PowerCell + - PowerCellSmall + - type: EnergyDomeGenerator + damageEnergyDraw: 3 + domePrototype: EnergyDomeMediumBlue + - type: PowerCellDraw + drawRate: 2 + useRate: 0 + - type: UseDelay + delay: 10.0 + - type: entity name: BT-21b "Barrier" description: A personal shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. diff --git a/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/equipped-BACKPACK.png b/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..3989fbf8d3008725f439653455c1270075c4a213 GIT binary patch literal 917 zcmV;G18V$Px&Pf0{URCt{2+TBZ2VH^kW??Tyd1D$(0OwTAp+Dx&@@FkBIUKENlguEDZ)&2n? zj1Z)&5=x5x1G|VW3<@Ib1)_vfdXw2oG#quY={h?ul{6GDo-Skua_;Qx<*dx#2X=GL z;W@wOInU0y`2GMw2qAH7*~sn5=j|b6W=hM&8dhqvLsx zZ{+=~?=**mBw}GM2#%{lZC#^$K0F_SC@#ZY-vo<|!^7tyvbk?T7QpTl*irj&dGcCl zY3*dSb&Z&se427j=4$>$T2h;Vojt*1JWkVL%x z2<_hidtZ23>K_fV=?9Mydo!#9_WuliPXO`Al+MvM!rIUF;Qpm1?dqy=`B<|zP>@et zp)`8~tj6Wjz9zd<_~#~{)a(r~yEAon6jV`GIS>DOeS{D~2qA35&*FA>j#cimCEPT)T$VcCS$2uw}^x!;@L$0d4D18 z7tzHdyP>Vc#v!6RlQAk&oKP~DTwU3XpEI?h*qs84M{;jhQEP1M4!e5&9@6ELjUIs+ z^rbLcxr||{VvEdXbX*r(io$H=u)Zc`EG)SdwRGX)Wj3+WfIgomZ8*EWCc$jw5L=37 zOo}u12(7P4u-G`b>zfp>OKwN4-5q~{_>*DWx^X4##FFhYY95-Z28r-|C}RgkvEp)5 zStVY*e581v*isa$E266L6nB7;_p|Z}8$@v#27PJT>xvmle*L06c>plzOCgHOD6g== z$omy*Q(S=VfgwnS9+c=!Fk3lv^`;JHcM3&omQbUs*U!vW4kdaMBts9n2Zjna_Px&CrLy>RCt{2nmtGxVHn5%n#M#0wM~!nBU2Ts)gBi@wKPixMX5ue4jD^_t{qFk zr5y^zv1=#C4iy|K76N8b8bM-0OG7`zLZW#|G#}WQkILKOl9<$-i7_A0K0nBCd7r!g zbMHNO_Z;sZAP9mW2!i-eX{lx>Nw)A(|9iLBt2$mY^{=Q6%q_V2>g!kd<$s$$Xim6q zzzBmN7R4Wg7yxCwFp*B9o%fm_2tnt!fEuEUmyc zDPnro&U4~=ofc!V83sW_>eeH8(oXf}I;}cdsG$LW$xr*UY69Al<{T#|w0DPa_uvlmC{fify zF6X6gi+by;-U2x`UCx$dD#HO_Kj4R6r&W!Ogc*{l3;^KM_Et@v3H8>mI6+Ca@K`j2 z?j8YpofeGk6^)BxKa!~oaxt}jAl6I2Yy|*H8D71vlwB+uLJUCow+UTF2>=lHdjaMK z0Ce{V=o>IXue0*YmVYDkE1Ce{^uCKlLrC{NL>GW-H>CV{8WP%qi}@#XB+M#4!Di}L zGy#n5VQ54`B+Ss=Bj6+}JS-al0KROTCMh5iR^AAIm*{1vr+!5f@N@TT3!KO|AL$)$ zk?>)5yDeLujO{7=)QEcOtM&nfx?24TtwXO#o>%n8P1Gun0S z&jW$o7ge5jL-bY4q|>N$Q3oN05AT(Bw6GN|#eTpK;ItK;p0#s>pmd6bEo~(cRb%Ap0^J~81HTp*T1C|}ED2HnG$sbTI0rCfAA%6h*1IQmh{(#&z`2)xwK>mP| z`;b3CWqtnMgZrvpT{Y$w+Px%;Ymb6RCt{2+A(MoQ5XmCf3?^lfi|?^xaJ^%hM3xrUW_!Q5sV1+&FhNC38b}i*9SVuzxP&H>(uNkELrI8fN_&?VQT%>z zkmSPm-FxruyWxERA%qY@2qAJPZbd>FI}c(tZtH+S+%HplD6inrpHU?LD=&QUL->#N7k1w+%w zrjz*mY5mOkCITU*=l@3a@(Q$HJ3vWO0RZNyWw>PtnM4lN*gQ&_iv8Mwu6Tc9@BoJz zP$$}?#v@RT&Ev}x1=ZL*1YsDNR2-sB(iJZpQJCG~YSe<}&pdT}2bd&&n~;%u~w%0FUfPCKcB`c!2W+9M-Ca8zRnPb}7y#0wHGF zeuPXShx40@aF6+rO()SmU^Ntz+XUDhE*1<;!!jhGx6j;Yh%iYCx3@y<-3<)q_d(f3! l{{)kywCyh>gb+eb_6tl%G=0whji&$r002ovPDHLkV1m~EZ+`#) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..73f546d7a4a1019c588f5f0c930ec08d2cbcbcbd GIT binary patch literal 798 zcmV+(1L6FMP)Px%*hxe|RCt{2+A&BQQ5XmCzg8*|K}#BrGY1NaMhx*Z#iWhU6od#FI%EiR>fE7= zOTodV0SR<*aBZi8i{MbPw1b5v*wS)os2bV`l}6LYC73`8io)vIs34|3c zx^JP=lN1Jn%67D3lmEpKV0Oj3~FpAwK&84{Zc1fd55 z!;aF8$?Z58+lOsr3}%afmA4GPQ?-xuW%2ogyjose!-UJr2ZkMptgq=h^LVF`+>Ybp zhxMj^am|Fw%d6#Wt86$tI!0Dy0D#Ur&tQ`!Bw{HPqBF><42MU@4UB8NfBjgkl?|d* zDt!Wl=nOtB22qI4KoEM6*i;}|rN*T-KyTk5FF*JBgH`9MQ**%NXmJwx8v6{+{ z2qAI<Hm%l`+YH)dNBn+oi*6F{+$ z;?|=jBXj9!g&VzngS>xe+^~6|t^ojmu5JsG+i}=N#&B(G9*I~ArrkMAxV#OS1j`FI zPL2wO^{Xq9sZ~Cw!tR~^TTF5N4I()eJ11lKxx8vv!1BV4w)RfkxG5Bix7NXTe|)>} z=TKJ%fw000@8)rkVPI?@UELPsb1IAobk?)9RiJ-poSQm20H9&dtBL3iag$WN_J$Bb c2x)$Q0QKcaT^3GjlK=n!07*qoM6N<$g3gU=i~s-t literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/meta.json new file mode 100644 index 00000000000..fc0abb8b460 --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Tools/EnergyDome/nanotrasen_back.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "SUNRISE", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From a73c91f04923a978ec8fdab0f8cc071977542e3e Mon Sep 17 00:00:00 2001 From: Rinary Date: Thu, 17 Oct 2024 16:05:51 +0300 Subject: [PATCH 04/27] energy dome is contraband --- Resources/Prototypes/Entities/Objects/Tools/energydome.yml | 2 +- .../_Sunrise/Entities/Objects/Tools/energydome.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Tools/energydome.yml b/Resources/Prototypes/Entities/Objects/Tools/energydome.yml index 05a2f53a5f2..acd1e3b9aa0 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/energydome.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/energydome.yml @@ -2,7 +2,7 @@ name: blood red personal shield generator description: A personal shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. id: EnergyDomeGeneratorPersonalSyndie - parent: BaseItem + parent: [ BaseItem, BaseSyndicateContraband ] components: - type: Item size: Ginormous diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml index 261d6a3e391..0b57535583c 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Tools/energydome.yml @@ -2,7 +2,7 @@ name: blood red backpack shield generator description: A backpack shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. id: EnergyDomeGeneratorBackpackSyndie - parent: BaseItem + parent: [ BaseItem, BaseSyndicateContraband ] components: - type: Item size: Ginormous @@ -42,7 +42,7 @@ name: BR-50c "Bastion" description: A backpack shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. id: EnergyDomeGeneratorBackpackNT - parent: BaseItem + parent: [ BaseItem, BaseCentcommContraband ] components: - type: Item size: Ginormous @@ -82,7 +82,7 @@ name: BT-21b "Barrier" description: A personal shield generator that protects the wearer from lasers and bullets but prevents from using ranged weapons himself. Uses a power cell. id: EnergyDomeGeneratorPersonalNT - parent: BaseItem + parent: [ BaseItem, BaseCentcommContraband ] components: - type: Item size: Ginormous From 82c41e07281edebb699c211326f14fee7ffe3d17 Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 12:16:50 +0300 Subject: [PATCH 05/27] fix singularity --- Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index 722d5e8dcda..cb90f02bb89 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -14,6 +14,7 @@ using Content.Shared.DoAfter; using Content.Server.Popups; using Content.Shared.Supermatter; +using Content.Shared.Singularity.Components; using Content.Server.Administration.Logs; using Robust.Shared.Physics.Events; using Robust.Shared.Audio.Systems; @@ -427,7 +428,8 @@ private void OnCollide(EntityUid uid, SupermatterComponent sm, StartCollideEvent if (!sm.Activated) sm.Activated = true; - if (_tagSystem.HasTag(args.OtherEntity, "EmitterBolt")) + if (_tagSystem.HasTag(args.OtherEntity, "EmitterBolt") + || HasComp(args.OtherEntity)) return; Vaporize(args.OtherEntity, uid); From d85f32b862e840a16ae8d8bde03c9aeaab04ef54 Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 13:21:35 +0300 Subject: [PATCH 06/27] upd --- .../Supermatter/EntitySystems/SupermatterSystem.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index cb90f02bb89..550d24a6a65 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -300,9 +300,13 @@ private void Vaporize(EntityUid uid, EntityUid smUid) { if (EntityManager.IsQueuedForDeletion(uid)) return; + + if (_tagSystem.HasTag(uid, "EmitterBolt") + || HasComp(uid)) + return; if (TryComp(smUid, out var sm)) - sm.Damage += 1; + sm.ExternalDamage += 1; _sound.PlayPvs(SupermatterComponent.VaporizeSound, smUid); EntityManager.QueueDeleteEntity(uid); @@ -427,10 +431,6 @@ private void OnCollide(EntityUid uid, SupermatterComponent sm, StartCollideEvent { if (!sm.Activated) sm.Activated = true; - - if (_tagSystem.HasTag(args.OtherEntity, "EmitterBolt") - || HasComp(args.OtherEntity)) - return; Vaporize(args.OtherEntity, uid); } From ff1a5879b843a43a97c17026baa44853bfde49c2 Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 16:50:24 +0300 Subject: [PATCH 07/27] upd supermatter --- .../Components/SupermatterComponent.cs | 75 ++++++++------- .../EntitySystems/SupermatterSystem.cs | 93 +++++++++---------- 2 files changed, 89 insertions(+), 79 deletions(-) diff --git a/Content.Server/Supermatter/Components/SupermatterComponent.cs b/Content.Server/Supermatter/Components/SupermatterComponent.cs index 9843a097470..f356abe6f67 100644 --- a/Content.Server/Supermatter/Components/SupermatterComponent.cs +++ b/Content.Server/Supermatter/Components/SupermatterComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Robust.Shared.Audio; namespace Content.Server.Supermatter.Components; @@ -6,6 +6,36 @@ namespace Content.Server.Supermatter.Components; [RegisterComponent] public sealed partial class SupermatterComponent : Component { + /// + /// The damage taken from direct hits, e.g. laser weapons + /// + [ViewVariables(VVAccess.ReadOnly)] + public float AVExternalDamage = 0f; + + // + [ViewVariables(VVAccess.ReadOnly)] + public float HeatAccumulatorRate = 0.5f; + + [ViewVariables(VVAccess.ReadOnly)] + public float AVHeatAccumulator = 0f; + + [ViewVariables(VVAccess.ReadOnly)] + public float RadiationAccumulatorRate = 0.3f; + + [ViewVariables(VVAccess.ReadOnly)] + public float AVRadiationAccumulator = 0f; + + [ViewVariables(VVAccess.ReadOnly)] + public float LightingAccumulatorThreshold = 2f; + + [ViewVariables(VVAccess.ReadOnly)] + public float LightingAccumulatorRate = 0.1f; + + [ViewVariables(VVAccess.ReadOnly)] + public float AVLightingAccumulator = 0f; + + [ViewVariables(VVAccess.ReadOnly)] + public float InternalEnergyAccumulatorRate = 0.1f; /// /// Lightning prototype IDs that the supermatter should spit out. /// @@ -64,8 +94,6 @@ public sealed partial class SupermatterComponent : Component public float UpdateTimerAccumulator = 0f; - public float ZapTimerAccumulator = 0f; - public float AnnouncementTimerAccumulator = 0f; /// @@ -74,12 +102,6 @@ public sealed partial class SupermatterComponent : Component [DataField("updateTimer")] public float UpdateTimer = 1f; - /// - /// Amount of seconds to pass before SM does it's zap. - /// - [DataField("zapTimer")] - public float ZapTimer = 10f; - /// /// Amount of seconds to pass before makes an announcement. /// @@ -123,12 +145,6 @@ public sealed partial class SupermatterComponent : Component /// public float DamageArchive = 0f; - /// - /// The damage taken from direct hits, e.g. laser weapons - /// - [ViewVariables(VVAccess.ReadOnly)] - public float ExternalDamage = 0f; - /// /// The temperature at which the supermatter crystal will begin to take damage. /// @@ -168,11 +184,8 @@ public sealed partial class SupermatterComponent : Component /// [ViewVariables(VVAccess.ReadOnly)] public float GasPowerlossInhibition = 0f; - /// - /// Affects the amount of power the main SM zap makes. - /// [ViewVariables(VVAccess.ReadOnly)] - public float PowerTransmissionRate = 0f; + public float ThermalСonductivity = 0f; /// /// Affects the power gain the SM experiences from heat. /// @@ -199,15 +212,15 @@ public sealed partial class SupermatterComponent : Component [ViewVariables(VVAccess.ReadOnly)] public GasFact[] GasFacts = { - new (transmissionRate: .15f, heatPowerGeneration: 1f), // o2 - new (heatModifier: -2.5f, heatPowerGeneration: -1), // n2 - new (heatModifier: 1f, heatPowerGeneration: 1f, powerlossInhibition: 1f), // co2 - new (transmissionRate: .4f, heatModifier: 14f, heatPowerGeneration: 1f), // plasma - new (transmissionRate: 3f, heatModifier: 9f, heatPowerGeneration: 1f), // tritium - new (transmissionRate: -.25f, heatModifier: 11f, heatPowerGeneration: 1f), // vapor - new (heatPowerGeneration: .5f), // ommonium - new (heatResistance: 5f), // n2o - new (transmissionRate: -3f, heatModifier: 9f, heatResistance: 1f, heatPowerGeneration: 1f), // frezon + new (thermalConductivity: 2.4f, heatPowerGeneration: 1f), // o2 + new (thermalConductivity: 2.0f, heatModifier: -2.5f, heatPowerGeneration: -1), // n2 + new (thermalConductivity: 1.2f, heatModifier: 1f, heatPowerGeneration: 1f, powerlossInhibition: 1f), // co2 + new (thermalConductivity: 6.0f, heatModifier: 14f, heatPowerGeneration: 1f), // plasma + new (thermalConductivity: 3.0f, heatModifier: 9f, heatPowerGeneration: 1f), // tritium + new (thermalConductivity: 1.4f, heatModifier: 11f, heatPowerGeneration: 1f), // vapor + new (thermalConductivity: 1.6f, heatPowerGeneration: .5f), // ommonium + new (thermalConductivity: 1.3f, heatResistance: 5f), // n2o + new (thermalConductivity: 9.9f, heatModifier: 9f, heatResistance: 1f, heatPowerGeneration: 1f), // frezon }; } @@ -222,7 +235,7 @@ public sealed partial class GasFact /// Affects the amount of power the main SM zap makes. /// [ViewVariables(VVAccess.ReadWrite)] - public float PowerTransmissionRate; + public float ThermalСonductivity; /// /// Affects the heat SM makes. /// @@ -244,9 +257,9 @@ public sealed partial class GasFact [ViewVariables(VVAccess.ReadWrite)] public float PowerlossInhibition; - public GasFact(float? transmissionRate = null, float? heatModifier = null, float? heatResistance = null, float? heatPowerGeneration = null, float? powerlossInhibition = null) + public GasFact(float? thermalConductivity = null, float? heatModifier = null, float? heatResistance = null, float? heatPowerGeneration = null, float? powerlossInhibition = null) { - PowerTransmissionRate = transmissionRate ?? 1; + ThermalСonductivity = thermalConductivity ?? 1; HeatModifier = heatModifier ?? 1; HeatResistance = heatResistance ?? 0; HeatPowerGeneration = heatPowerGeneration ?? 0; diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index 550d24a6a65..b6ec98e82be 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Server.Supermatter.Components; using Content.Shared.Atmos; using Content.Server.Lightning; @@ -14,7 +14,6 @@ using Content.Shared.DoAfter; using Content.Server.Popups; using Content.Shared.Supermatter; -using Content.Shared.Singularity.Components; using Content.Server.Administration.Logs; using Robust.Shared.Physics.Events; using Robust.Shared.Audio.Systems; @@ -27,7 +26,8 @@ using Content.Server.DoAfter; using Content.Server.Explosion.EntitySystems; using Content.Server.Kitchen.Components; -using Content.Shared.Tag; +using Content.Shared.Singularity.Components; +using System; namespace Content.Server.Supermatter.EntitySystems; @@ -41,13 +41,13 @@ public sealed class SupermatterSystem : EntitySystem [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly AmbientSoundSystem _ambience = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly AnomalySystem _anomaly = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly DoAfterSystem _doAfter = default!; [Dependency] private readonly ExplosionSystem _explosion = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; public override void Initialize() { @@ -84,17 +84,10 @@ public override void Update(float frameTime) public void Cycle(EntityUid uid, SupermatterComponent sm) { - sm.ZapTimerAccumulator++; sm.AnnouncementTimerAccumulator++; ProcessAtmos(uid, sm); - - if (sm.ZapTimerAccumulator >= sm.ZapTimer) - { - sm.ZapTimerAccumulator = 0f; - ProcessPower(uid, sm); - } - + ProcessPower(uid, sm); ProcessDamage(uid, sm); // due to how damage calculation works, it will do the announcement only if sm is consistently taking damage @@ -107,7 +100,7 @@ public void Cycle(EntityUid uid, SupermatterComponent sm) if (sm.Damage > sm.DamageEmergencyPoint) loc = "critical"; - SupermatterAlert(uid, Loc.GetString($"supermatter-announcement-{loc}", ("integrity", Math.Round(sm.DelaminationPoint - sm.Damage, 1)))); + SupermatterAlert(uid, Loc.GetString($"supermatter-announcement-{loc}", ("integrity", (int)(sm.DelaminationPoint - sm.Damage)))); } } @@ -130,7 +123,7 @@ private void ProcessAtmos(EntityUid uid, SupermatterComponent sm) // calculate gases var gasPercentages = new float[Enum.GetValues(typeof(Gas)).Length]; - var powerTransmissionRate = 0f; + var thermalСonductivity = 0f; var heatModifier = 0f; var heatResistance = 0f; var heatPowerGeneration = 0f; @@ -151,7 +144,7 @@ private void ProcessAtmos(EntityUid uid, SupermatterComponent sm) gasPercentages[i] = moleCount / moles; var smGas = sm.GasFacts[i]; - powerTransmissionRate += smGas.PowerTransmissionRate * gasPercentages[i]; + thermalСonductivity += smGas.ThermalСonductivity * gasPercentages[i]; heatModifier += smGas.HeatModifier * gasPercentages[i]; heatResistance += smGas.HeatResistance * gasPercentages[i]; heatPowerGeneration += smGas.HeatPowerGeneration * gasPercentages[i]; @@ -162,7 +155,7 @@ private void ProcessAtmos(EntityUid uid, SupermatterComponent sm) powerlossInhibition = Math.Clamp(powerlossInhibition, 0, 1); sm.AbsorbedGasMix = absorbedMix; - sm.PowerTransmissionRate = powerTransmissionRate; + sm.ThermalСonductivity = thermalСonductivity; sm.GasHeatModifier = heatModifier; sm.GasHeatResistance = heatResistance; sm.HeatPowerGeneration = heatPowerGeneration; @@ -175,20 +168,32 @@ private void ProcessPower(EntityUid uid, SupermatterComponent sm) { var powerHeat = sm.HeatPowerGeneration * sm.AbsorbedGasMix.Temperature * SupermatterComponent.GasHeatPowerScaling; var powerloss = -1 * sm.GasPowerlossInhibition; - var atmosStrength = Math.Clamp((powerHeat + powerloss) * sm.PowerTransmissionRate, 0, 2); + var atmosStrength = Math.Clamp((powerHeat + powerloss) * 0.2f, 0, 2); var damageStrength = Math.Clamp(sm.Damage / sm.DelaminationPoint, 0, 1); var strength = Math.Clamp(atmosStrength + damageStrength, 0, 4); + var damageExternal = sm.AVExternalDamage + strength; + sm.AVExternalDamage = 0f; - sm.InternalEnergy = strength; - var lightningProto = sm.LightningPrototypeIDs[(int) Math.Clamp(strength, 0, 3)]; + sm.AVHeatAccumulator += damageExternal * sm.HeatAccumulatorRate; + sm.AVRadiationAccumulator += damageExternal * sm.RadiationAccumulatorRate; + sm.AVLightingAccumulator += damageExternal * sm.LightingAccumulatorRate; + sm.InternalEnergy += damageExternal * sm.InternalEnergyAccumulatorRate; - _sound.PlayPvs(SupermatterComponent.SupermatterZapSound, uid); - _lightning.ShootRandomLightnings(uid, 3, (int) strength < 1 ? 1 : (int) strength, lightningProto); - if (Comp(uid).Intensity < 5) - Comp(uid).Intensity += 1 + strength; - else - Comp(uid).Intensity = 5; + if (sm.AVLightingAccumulator > sm.LightingAccumulatorThreshold) + { + var lightningProto = sm.LightningPrototypeIDs[(int)Math.Clamp(sm.AVLightingAccumulator, 0, 3)]; + _lightning.ShootRandomLightnings(uid, 3, (int)sm.AVLightingAccumulator, lightningProto); + sm.AVLightingAccumulator = 0; + } + + Comp(uid).Intensity = 1 + sm.AVRadiationAccumulator; + sm.AVRadiationAccumulator /= 2; + sm.InternalEnergy /= 2; + + var mix = _atmos.GetContainingMixture((uid, Transform(uid)), true, true) ?? new(); + mix.Temperature += sm.AVHeatAccumulator * 4; + sm.AVHeatAccumulator /= sm.ThermalСonductivity; } /// /// React to damage dealt by all doodads. @@ -202,11 +207,8 @@ private void ProcessDamage(EntityUid uid, SupermatterComponent sm) sm.TempLimit = Math.Max(tempLimitBase + tempLimitGas + tempLimitMoles, Atmospherics.TCMB); - var damageExternal = sm.ExternalDamage * Math.Clamp((sm.DamageEmergencyPoint - sm.Damage) / sm.DamageEmergencyPoint, 0, 1); - sm.ExternalDamage = 0f; - var damageHeat = Math.Clamp((sm.AbsorbedGasMix.Temperature - sm.TempLimit) / 24000, 0, .15f); - var damagePower = Math.Clamp((sm.InternalEnergy - SupermatterComponent.PowerPenaltyThreshold) / 40000, 0, .1f); + var damagePower = Math.Clamp((sm.InternalEnergy - SupermatterComponent.PowerPenaltyThreshold), 0, .1f); var damageMoles = Math.Clamp((sm.AbsorbedGasMix.TotalMoles - SupermatterComponent.MolePenaltyThreshold) / 3200, 0, .1f); var damageHealHeat = 0f; @@ -214,7 +216,7 @@ private void ProcessDamage(EntityUid uid, SupermatterComponent sm) if (sm.AbsorbedGasMix.TotalMoles > 0) damageHealHeat = Math.Clamp((sm.AbsorbedGasMix.TotalMoles - sm.TempLimit) / 6000, -.1f, 0); - var totalDamage = damageExternal + damageHeat + damagePower + damageMoles + damageHealHeat; + var totalDamage = damageHeat + damagePower + damageMoles + damageHealHeat; sm.Damage += Math.Max(totalDamage, 0); @@ -241,7 +243,7 @@ private void ProcessWaste(EntityUid uid, SupermatterComponent sm) mergeMix.Temperature = Math.Clamp(mergeMix.Temperature, Atmospherics.TCMB, 2500 * sm.WasteMultiplier); mergeMix.AdjustMoles(Gas.Plasma, Math.Max(.65f * sm.InternalEnergy * sm.WasteMultiplier * SupermatterComponent.PlasmaReleaseModifier, 0)); - mergeMix.AdjustMoles(Gas.Oxygen, Math.Max((.65f + mergeMix.Temperature * sm.WasteMultiplier - Atmospherics.T0C) * SupermatterComponent.OxygenReleaseModifier, 0)); + mergeMix.AdjustMoles(Gas.Oxygen, Math.Max(.65f * sm.InternalEnergy * sm.WasteMultiplier * SupermatterComponent.OxygenReleaseModifier, 0)); _atmos.Merge(mix, mergeMix); } @@ -271,7 +273,7 @@ private void HandleSound(EntityUid uid, SupermatterComponent sm) /// If true, the message will be sent from Central Command public void SupermatterAlert(EntityUid uid, string message, bool customSender = false) { - _chat.DispatchStationAnnouncement(uid, message, customSender ? "Central Command" : Loc.GetString("supermatter-announcement-sender"), playDefault: false, playTts: true, colorOverride: Color.Yellow); + _chat.DispatchStationAnnouncement(uid, message, customSender ? "Central Command" : Loc.GetString("supermatter-announcement-sender"), false, null, Color.Yellow); } private void GenerateAnomaly(EntityUid uid, float amount = 1) @@ -288,7 +290,7 @@ private void GenerateAnomaly(EntityUid uid, float amount = 1) for (var i = 0; i < amount; i++) { - _anomaly.SpawnOnRandomGridLocation((EntityUid) grid, "RandomAnomalySpawner"); + _anomaly.SpawnOnRandomGridLocation((EntityUid)grid, "RandomAnomalySpawner"); _adminLogger.Add(LogType.Anomaly, LogImpact.Medium, $"An anomaly has been spawned by the supermatter crystal."); } } @@ -300,13 +302,14 @@ private void Vaporize(EntityUid uid, EntityUid smUid) { if (EntityManager.IsQueuedForDeletion(uid)) return; - - if (_tagSystem.HasTag(uid, "EmitterBolt") - || HasComp(uid)) + + if (_tagSystem.HasTag(uid, "EmitterBolt") + || HasComp(uid)) return; if (TryComp(smUid, out var sm)) - sm.ExternalDamage += 1; + sm.AVExternalDamage += 1f; + _sound.PlayPvs(SupermatterComponent.VaporizeSound, smUid); EntityManager.QueueDeleteEntity(uid); @@ -314,14 +317,13 @@ private void Vaporize(EntityUid uid, EntityUid smUid) _adminLogger.Add(LogType.Action, LogImpact.High, $"{EntityManager.ToPrettyString(uid):player} has been vaporized by the supermatter."); } - /// /// Handle supermatter delamination and the end of the station. /// private void Delaminate(EntityUid uid, SupermatterComponent sm) { - sm.PreferredDelamType = sm.PreferredDelamType ?? (int) ChooseDelam(sm); - Delaminate(uid, sm, (DelamType) sm.PreferredDelamType); + sm.PreferredDelamType = sm.PreferredDelamType ?? (int)ChooseDelam(sm); + Delaminate(uid, sm, (DelamType)sm.PreferredDelamType); } /// @@ -425,8 +427,6 @@ private void DelamCountdown(EntityUid uid, SupermatterComponent sm) sm.DelamCountdownAccumulator++; } - - private void OnCollide(EntityUid uid, SupermatterComponent sm, StartCollideEvent args) { if (!sm.Activated) @@ -458,7 +458,7 @@ private void OnClick(EntityUid uid, SupermatterComponent sm, InteractUsingEvent private void OnGetSliver(EntityUid uid, SupermatterComponent sm, SupermatterDoAfterEvent args) { sm.Damage += 10; // your criminal actions will not go unnoticed - SupermatterAlert(uid, Loc.GetString("supermatter-announcement-tamper", ("integrity", (int) (100 - sm.Damage)))); + SupermatterAlert(uid, Loc.GetString("supermatter-announcement-tamper", ("integrity", (int)(100 - sm.Damage)))); Spawn(sm.SliverPrototype, _transform.GetMapCoordinates(args.User)); _popup.PopupClient(Loc.GetString("supermatter-tamper-end"), args.User); @@ -469,17 +469,14 @@ private void OnGetHit(EntityUid uid, SupermatterComponent sm, DamageChangedEvent if (!sm.Activated) sm.Activated = true; - sm.ExternalDamage += args.DamageDelta?.GetTotal().Value / 1000 ?? 0; - - Cycle(uid, sm); - ProcessPower(uid, sm); + sm.AVExternalDamage += args.DamageDelta?.GetTotal().Value / 100 ?? 0; } private void OnExamine(EntityUid uid, SupermatterComponent sm, ExaminedEvent args) { if (args.IsInDetailsRange) // get all close to it { - args.PushMarkup(Loc.GetString("supermatter-examine-integrity", ("integrity", (int) (100 - sm.Damage)))); + args.PushMarkup(Loc.GetString("supermatter-examine-integrity", ("integrity", (int)(100 - sm.Damage)))); } } } From d734e12307c0fd4ffc346063d6fb0b9f2b8a9cc6 Mon Sep 17 00:00:00 2001 From: darkrell Date: Sun, 20 Oct 2024 18:38:59 +0200 Subject: [PATCH 08/27] reflector --- .../Weapons/Reflect/ReflectComponent.cs | 3 + .../Weapons/Reflect/ReflectSystem.cs | 52 +++++++--- .../Structures/Reflector/reflector.yml | 90 ++++++++++++++++++ .../Reflector/reflector.rsi/reflector.png | Bin 0 -> 2529 bytes 4 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml create mode 100644 Resources/Textures/_Starlight/Structures/Reflector/reflector.rsi/reflector.png diff --git a/Content.Shared/Weapons/Reflect/ReflectComponent.cs b/Content.Shared/Weapons/Reflect/ReflectComponent.cs index 8418c1f3efb..724b4ae697b 100644 --- a/Content.Shared/Weapons/Reflect/ReflectComponent.cs +++ b/Content.Shared/Weapons/Reflect/ReflectComponent.cs @@ -25,6 +25,9 @@ public sealed partial class ReflectComponent : Component [DataField("spread"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public Angle Spread = Angle.FromDegrees(45); + [DataField("overrideAngle"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public Angle? OverrideAngle = null; + [DataField("soundOnReflect")] public SoundSpecifier? SoundOnReflect = new SoundPathSpecifier("/Audio/Weapons/Guns/Hits/laser_sear_wall.ogg"); } diff --git a/Content.Shared/Weapons/Reflect/ReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs index 881b547f27f..1c682678ec3 100644 --- a/Content.Shared/Weapons/Reflect/ReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs @@ -104,19 +104,35 @@ private bool TryReflectProjectile(EntityUid user, EntityUid reflector, EntityUid return false; } - var rotation = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2).Opposite(); - var existingVelocity = _physics.GetMapLinearVelocity(projectile, component: physics); - var relativeVelocity = existingVelocity - _physics.GetMapLinearVelocity(user); - var newVelocity = rotation.RotateVec(relativeVelocity); + if (reflect.OverrideAngle is not null) + { + var overrideAngle = _transform.GetWorldRotation(reflector) + reflect.OverrideAngle.Value; + + var existingVelocity = _physics.GetMapLinearVelocity(projectile, component: physics); + var relativeVelocity = existingVelocity - _physics.GetMapLinearVelocity(user); + var speed = relativeVelocity.Length(); + + var newVelocity = new Vector2((float)Math.Cos(overrideAngle), (float)Math.Sin(overrideAngle)) * speed; + + var difference = newVelocity - existingVelocity; + _physics.SetLinearVelocity(projectile, physics.LinearVelocity + difference, body: physics); + _transform.SetLocalRotation(projectile, overrideAngle); + } + else + { + var rotation = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2).Opposite(); + var existingVelocity = _physics.GetMapLinearVelocity(projectile, component: physics); + var relativeVelocity = existingVelocity - _physics.GetMapLinearVelocity(user); + var newVelocity = rotation.RotateVec(relativeVelocity); - // Have the velocity in world terms above so need to convert it back to local. - var difference = newVelocity - existingVelocity; + var difference = newVelocity - existingVelocity; - _physics.SetLinearVelocity(projectile, physics.LinearVelocity + difference, body: physics); + _physics.SetLinearVelocity(projectile, physics.LinearVelocity + difference, body: physics); - var locRot = Transform(projectile).LocalRotation; - var newRot = rotation.RotateVec(locRot.ToVec()); - _transform.SetLocalRotation(projectile, newRot.ToAngle()); + var locRot = Transform(projectile).LocalRotation; + var newRot = rotation.RotateVec(locRot.ToVec()); + _transform.SetLocalRotation(projectile, newRot.ToAngle()); + } if (_netManager.IsServer) { @@ -176,9 +192,17 @@ private bool TryReflectHitscan( _popup.PopupEntity(Loc.GetString("reflect-shot"), user); _audio.PlayPvs(reflect.SoundOnReflect, user, AudioHelpers.WithVariation(0.05f, _random)); } - - var spread = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2); - newDirection = -spread.RotateVec(direction); + if (reflect.OverrideAngle is not null) + { + var overrideAngle = _transform.GetWorldRotation(reflector) + reflect.OverrideAngle.Value; + newDirection = new Vector2((float)Math.Cos(overrideAngle), (float)Math.Sin(overrideAngle)); + newDirection = newDirection.Value.Normalized(); + } + else + { + var spread = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2); + newDirection = -spread.RotateVec(direction); + } if (shooter != null) _adminLogger.Add(LogType.HitScanHit, LogImpact.Medium, $"{ToPrettyString(user)} reflected hitscan from {ToPrettyString(shotSource)} shot by {ToPrettyString(shooter.Value)}"); @@ -216,7 +240,7 @@ private void OnReflectHandUnequipped(EntityUid uid, ReflectComponent component, private void OnToggleReflect(EntityUid uid, ReflectComponent comp, ref ItemToggledEvent args) { - if (args.User is {} user) + if (args.User is { } user) RefreshReflectUser(user); } diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml b/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml new file mode 100644 index 00000000000..a19d258b716 --- /dev/null +++ b/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml @@ -0,0 +1,90 @@ +- type: entity + id: Reflector + name: reflector + placement: + mode: SnapgridCenter + components: + - type: MeleeSound + soundGroups: + Brute: + collection: GlassSmack + - type: Anchorable + - type: Pullable + - type: Rotatable + - type: Machine + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 400 + mask: + - MachineMask + layer: + - MachineLayer + - type: Reflect + reflectProb: 1.0 + overrideAngle: 270 + reflects: + - Energy + - type: RCDDeconstructable + deconstructable: false + - type: Sprite + sprite: _Starlight/Structures/Reflector/reflector.rsi + layers: + - state: reflector + shader: unshaded + - type: Repairable + fuelCost: 15 + doAfterDelay: 3 + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: RGlass + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1000 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 500 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:SpawnEntitiesBehavior + spawn: + ShardGlassReinforced: + min: 1 + max: 2 + PartRodMetal: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: Window + node: shuttleWindow + - type: Appearance + - type: DamageVisuals + thresholds: [5, 10, 20] + damageDivisor: 28 + trackAllDamage: true + damageOverlay: + sprite: Structures/Windows/cracks.rsi + - type: StaticPrice + price: 150 + - type: ExaminableDamage + messages: WindowMessages + - type: InteractionPopup + interactSuccessString: comp-window-knock + messagePerceivedByOthers: comp-window-knock + interactSuccessSound: + path: /Audio/Effects/glass_knock.ogg + - type: BlockWeather \ No newline at end of file diff --git a/Resources/Textures/_Starlight/Structures/Reflector/reflector.rsi/reflector.png b/Resources/Textures/_Starlight/Structures/Reflector/reflector.rsi/reflector.png new file mode 100644 index 0000000000000000000000000000000000000000..40e750f330e5863abbc72aee041c9b10dae40627 GIT binary patch literal 2529 zcmV<72_E)|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D33f?DK~#8N?VDe0 z97i3;f4h7CeAjcFIIZm{ZG&q&IB6`S6y&y{J{dyS-kh z)Z9lJ?cU7J&irO(XYcoCsYQzxE$(Fu_gKYK-+Ae0?rBrF@aNZl>Ymoc|Eqo90YKw@ z$BvUxD#=u$GMVDY809iK;uy88%5TFUTU=wgw{zsdp^`X3{cUH6?%e90d}n;v-1iM_``Q5jnEAekXMVnKFmvq<8ILg?|srEk9+pE&BzmlRObWv56-_%nYaIL3_tp`n_G?hz*MuG zvkA+-Y?q>F{J8_2W8X?#k;%^dgXWftlv`bnA>kZ(T#jo|2X%3eL?Ybd1EOt7lFMGq zJnqG9smZX5gydHy2TZh|6#I`Ejk$NNMmqpOJUjHj7>*gU?_L>SU!pm&?2&LDgcGk?y)_9IUkLTc6ZDW+AV@fG6zu@;OAi|j zo^ki*2I`Fa%|7bzCe>_s#s{3~F(ft5kC^+q_Cq@WygS1^6WFURzbnmzl3V;0sGTyXO7&zc!HO_ZXj52ek4!_bx{@%=s;N1*++Xw^{fIN z`T_840a)hWOihpRKzL!naZR%~L;&F+tatVqUInYy&z)MBd94nWYxp{|0vG5ad`o6G+=Rn%qf_w1t%|3wb^yBqouV0abOntjkn zBc{*-gWyMkmwXUKp}p$R_N^4KaR7D3Yt6o6G(66}@Qh=*^JC$+3hF`IGpAUPDkZck zC>DuyN5PxQR+NzZ%20<)tC(F~rQ*6!4?~j6txJ{KaNGaOdpA$Ml^c}F8hDx>>ey@- z=g8x7T#GuWi+gk=^!u6i@yI)d)Tg0RLaTye;TCNW-8LeRv;Vo=D^FB}@W$Fo_rAv- zE5{=G4(Nz&>yY+@>sIeirYChTP_PuzV_E^g#^l9trxjkaj?n7jLJNX_k6m1_S8kZ>Tm=bs zKj`*s{b3uxExV$yh1Lf94!=a*)@sA*sHzUntVQYlvu8pLz@Z<$O6_Y)4Xfi@;}g2+ z+8h1>8d`%0RLHCUs>BDtMGjA|TO{3O@cOXh!xz&kI%_N46PGRw#|ICE_KZLcpM8Ja zqV&#*fx|~{_!(pvn7?5GR^tR<4T3QR@d?`x9@e(69RTRyn0W+8AU;6#&)?4V(1$yE zY0v$ORepI!`sd#~OH&ul8(-c3bvL(uV1vNSL-_sAyyzPrz#vZG!8FmH#AciT+J_|x zGNcbaSNp{$=qww(~z9%$dACb#m z%)Bl>0116SU(hEtAALsOA%hy<=~$GxD>9MTg+ zzzV3KiwF9w=IC0$^i~ViJT5aDKsx}iyQ%mI%B#TFA*q0{wy?0>(GRp00g7&sKL)RkXnwx4>%_Ur7c3r zj)?tAEidPy(r<7dy>*=f8pFUAXS{N;%NzDiG01&Va4EEq3c|{ZT-5SJqNBim0}kl) zqvjs)MMpa|u(dOY_nFJ?l;?1SdVPU%=3RF=m&0WRkI}qXARNjX2KX8P{@frA5U(~Y zajdX8>O0AgfV{|MOL;UZJx0h!D6bCf3Q!9W?*qZmpej5B$1-FOvA6uQ07r`#+#7A6 zEwqWY**y=`ay4+%yP>OS2Y|gS>~HfEtX{zp#2gm(GWp>h2ru5gs2jSMhW7v-`5?iW zjR@{0!)>dpK!qnSh?+e^;B)cXMfcYxJo|SG_!sLzw+hf_^c_^f_x;hf0_P%BN<@7l z@R@z_NSWy1NyG(w@5zA^YQCCee1Oo%WQ;)rn;@L4P^qC+;$D7jAfXTF3;LwyqtEC& zWC;2vpw|XP7oblgn$688?OnF{em2(dww z$$etrmJ509Co6uSeS9+05f`njXXUp82%kp;IWK1Q+2xo*z`<1ru|bpxoAq>`>}b~p rI^mu+g?fc&KJWHhv}n=d9)Re71_GUsT~<6(00000NkvXXu0mjfl>qV$ literal 0 HcmV?d00001 From 2a90200ba72cab8dfc848106107c78f2df09968f Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 19:51:35 +0300 Subject: [PATCH 09/27] upd --- .../Entities/Structures/Reflector/reflector.yml | 0 .../Reflector/reflector.rsi/reflector.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename Resources/Prototypes/{_StarLight => _Sunrise}/Entities/Structures/Reflector/reflector.yml (100%) rename Resources/Textures/{_Starlight => _Sunrise}/Structures/Reflector/reflector.rsi/reflector.png (100%) diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml b/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml similarity index 100% rename from Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml rename to Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml diff --git a/Resources/Textures/_Starlight/Structures/Reflector/reflector.rsi/reflector.png b/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector.png similarity index 100% rename from Resources/Textures/_Starlight/Structures/Reflector/reflector.rsi/reflector.png rename to Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector.png From ac9779daa24efbdba6171b1466529639aaf4084f Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 19:56:21 +0300 Subject: [PATCH 10/27] upd --- .../Entities/Structures/Reflector/reflector.yml | 2 +- .../Reflector/reflector.rsi/reflector.png | Bin 2529 -> 0 bytes .../Reflector/reflector.rsi/reflector_box.png | Bin 0 -> 1245 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector.png create mode 100644 Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector_box.png diff --git a/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml b/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml index a19d258b716..f2ab195fcec 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml @@ -35,7 +35,7 @@ - type: Sprite sprite: _Starlight/Structures/Reflector/reflector.rsi layers: - - state: reflector + - state: reflector_box shader: unshaded - type: Repairable fuelCost: 15 diff --git a/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector.png b/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector.png deleted file mode 100644 index 40e750f330e5863abbc72aee041c9b10dae40627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2529 zcmV<72_E)|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D33f?DK~#8N?VDe0 z97i3;f4h7CeAjcFIIZm{ZG&q&IB6`S6y&y{J{dyS-kh z)Z9lJ?cU7J&irO(XYcoCsYQzxE$(Fu_gKYK-+Ae0?rBrF@aNZl>Ymoc|Eqo90YKw@ z$BvUxD#=u$GMVDY809iK;uy88%5TFUTU=wgw{zsdp^`X3{cUH6?%e90d}n;v-1iM_``Q5jnEAekXMVnKFmvq<8ILg?|srEk9+pE&BzmlRObWv56-_%nYaIL3_tp`n_G?hz*MuG zvkA+-Y?q>F{J8_2W8X?#k;%^dgXWftlv`bnA>kZ(T#jo|2X%3eL?Ybd1EOt7lFMGq zJnqG9smZX5gydHy2TZh|6#I`Ejk$NNMmqpOJUjHj7>*gU?_L>SU!pm&?2&LDgcGk?y)_9IUkLTc6ZDW+AV@fG6zu@;OAi|j zo^ki*2I`Fa%|7bzCe>_s#s{3~F(ft5kC^+q_Cq@WygS1^6WFURzbnmzl3V;0sGTyXO7&zc!HO_ZXj52ek4!_bx{@%=s;N1*++Xw^{fIN z`T_840a)hWOihpRKzL!naZR%~L;&F+tatVqUInYy&z)MBd94nWYxp{|0vG5ad`o6G+=Rn%qf_w1t%|3wb^yBqouV0abOntjkn zBc{*-gWyMkmwXUKp}p$R_N^4KaR7D3Yt6o6G(66}@Qh=*^JC$+3hF`IGpAUPDkZck zC>DuyN5PxQR+NzZ%20<)tC(F~rQ*6!4?~j6txJ{KaNGaOdpA$Ml^c}F8hDx>>ey@- z=g8x7T#GuWi+gk=^!u6i@yI)d)Tg0RLaTye;TCNW-8LeRv;Vo=D^FB}@W$Fo_rAv- zE5{=G4(Nz&>yY+@>sIeirYChTP_PuzV_E^g#^l9trxjkaj?n7jLJNX_k6m1_S8kZ>Tm=bs zKj`*s{b3uxExV$yh1Lf94!=a*)@sA*sHzUntVQYlvu8pLz@Z<$O6_Y)4Xfi@;}g2+ z+8h1>8d`%0RLHCUs>BDtMGjA|TO{3O@cOXh!xz&kI%_N46PGRw#|ICE_KZLcpM8Ja zqV&#*fx|~{_!(pvn7?5GR^tR<4T3QR@d?`x9@e(69RTRyn0W+8AU;6#&)?4V(1$yE zY0v$ORepI!`sd#~OH&ul8(-c3bvL(uV1vNSL-_sAyyzPrz#vZG!8FmH#AciT+J_|x zGNcbaSNp{$=qww(~z9%$dACb#m z%)Bl>0116SU(hEtAALsOA%hy<=~$GxD>9MTg+ zzzV3KiwF9w=IC0$^i~ViJT5aDKsx}iyQ%mI%B#TFA*q0{wy?0>(GRp00g7&sKL)RkXnwx4>%_Ur7c3r zj)?tAEidPy(r<7dy>*=f8pFUAXS{N;%NzDiG01&Va4EEq3c|{ZT-5SJqNBim0}kl) zqvjs)MMpa|u(dOY_nFJ?l;?1SdVPU%=3RF=m&0WRkI}qXARNjX2KX8P{@frA5U(~Y zajdX8>O0AgfV{|MOL;UZJx0h!D6bCf3Q!9W?*qZmpej5B$1-FOvA6uQ07r`#+#7A6 zEwqWY**y=`ay4+%yP>OS2Y|gS>~HfEtX{zp#2gm(GWp>h2ru5gs2jSMhW7v-`5?iW zjR@{0!)>dpK!qnSh?+e^;B)cXMfcYxJo|SG_!sLzw+hf_^c_^f_x;hf0_P%BN<@7l z@R@z_NSWy1NyG(w@5zA^YQCCee1Oo%WQ;)rn;@L4P^qC+;$D7jAfXTF3;LwyqtEC& zWC;2vpw|XP7oblgn$688?OnF{em2(dww z$$etrmJ509Co6uSeS9+05f`njXXUp82%kp;IWK1Q+2xo*z`<1ru|bpxoAq>`>}b~p rI^mu+g?fc&KJWHhv}n=d9)Re71_GUsT~<6(00000NkvXXu0mjfl>qV$ diff --git a/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector_box.png b/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/reflector_box.png new file mode 100644 index 0000000000000000000000000000000000000000..d06830e586418921ddbb6e088acc3b7c1d3febdf GIT binary patch literal 1245 zcmV<31S0#1P)Px(mq|oHRCt{2nlW#iP8h}?{~?N6fn_gQ97}9o(v>KglQ|nm`3&7F^#er8p3e{o zZ=Tz^6>L?rWJ7Yi^)E*T#fl2L4)#&NclH5iyAFONqy!)Qj`PdwyL%s?f_l9k>GgV~ z%00HtSF6B}j*jTR;{PYFOS`Gs4?yWxAPht1-Wm&|stV|z@-cLAl(wiHGk(}#aI{*Od-cHW>z7GKKJWuMcLYm*dc7Ur~ zgTbsHMfpOFOw%OZXBXDJjp1;(v~9QBMgQ7?d2=dl5Lo>0pT7MagaL4NdtQpaG6zuj z+3h)o!yyz!S$YhIL!8~7!~5()#w)?&=T(-!bO6$D00<@%L{Y?j_$Z1HOeRniMam#7 z5a7ef37*H}%(Yd-huZW-`fmnNAnly-cUcWJS~U%(Yd-lhQcY=l^Zvbf6$$0oxeBM!%Uur`{=7vNW zKGh~SWU?KRxFuDFFLO(-^eA;Y9YUvvVqF4!ZGE!F1(caXR0OJ0D(bJRgy=fa-AI#SV`;Noq%k>B3x60?TY#Toc`U5Q6 zM&Dse@`Btp{@G^5=UpFU=}2VPzUHg=?@UC z&s+C4{2L!$foBJ1iyOl*k_i0g`~kA+^V{Z^_6IDh&+E-*=GrPsvUtjSAk!aE`^C_H zIb5U@KutG9SRJX|mRMeUf502j-X9>LFFUQ;4?rco1%JRFz%G7-pV-)+00000NkvXX Hu0mjf;o4)= literal 0 HcmV?d00001 From 20097f363f9ae161ba1c4828c99c2012178b45d3 Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 19:57:55 +0300 Subject: [PATCH 11/27] add meta.json --- .../Structures/Reflector/reflector.rsi/meta.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/meta.json diff --git a/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/meta.json b/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/meta.json new file mode 100644 index 00000000000..12e4145b276 --- /dev/null +++ b/Resources/Textures/_Sunrise/Structures/Reflector/reflector.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "copyright": "Taked From Paradise Station", + "license": "CC-BY-SA-3.0", + "states": [ + { + "name": "reflector_box", + "directions": 4 + } + ] +} \ No newline at end of file From efeac1be7daaf0697ddc335604e1645100cc6637 Mon Sep 17 00:00:00 2001 From: Rinary Date: Sun, 20 Oct 2024 20:12:15 +0300 Subject: [PATCH 12/27] fix announcement --- Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index b6ec98e82be..f8e6cf11329 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -273,7 +273,7 @@ private void HandleSound(EntityUid uid, SupermatterComponent sm) /// If true, the message will be sent from Central Command public void SupermatterAlert(EntityUid uid, string message, bool customSender = false) { - _chat.DispatchStationAnnouncement(uid, message, customSender ? "Central Command" : Loc.GetString("supermatter-announcement-sender"), false, null, Color.Yellow); + _chat.DispatchStationAnnouncement(uid, message, customSender ? "Central Command" : Loc.GetString("supermatter-announcement-sender"), playDefault: false, playTts: true, colorOverride: Color.Yellow); } private void GenerateAnomaly(EntityUid uid, float amount = 1) From d0d939d40f60df13282f57c31507d8e0740fede3 Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 08:48:07 +0300 Subject: [PATCH 13/27] upd --- .../Supermatter/EntitySystems/SupermatterSystem.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs index f8e6cf11329..a0f37771d8e 100644 --- a/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs +++ b/Content.Server/Supermatter/EntitySystems/SupermatterSystem.cs @@ -175,10 +175,10 @@ private void ProcessPower(EntityUid uid, SupermatterComponent sm) var damageExternal = sm.AVExternalDamage + strength; sm.AVExternalDamage = 0f; - sm.AVHeatAccumulator += damageExternal * sm.HeatAccumulatorRate; - sm.AVRadiationAccumulator += damageExternal * sm.RadiationAccumulatorRate; - sm.AVLightingAccumulator += damageExternal * sm.LightingAccumulatorRate; - sm.InternalEnergy += damageExternal * sm.InternalEnergyAccumulatorRate; + sm.AVHeatAccumulator = Math.Clamp(sm.AVHeatAccumulator + (damageExternal * sm.HeatAccumulatorRate), 0, 10); + sm.AVRadiationAccumulator = Math.Clamp(sm.AVRadiationAccumulator + (damageExternal * sm.RadiationAccumulatorRate), 0, 10); + sm.AVLightingAccumulator = Math.Clamp(sm.AVLightingAccumulator + (damageExternal * sm.LightingAccumulatorRate), 0, 10); + sm.InternalEnergy = Math.Clamp(sm.InternalEnergy + (damageExternal * sm.InternalEnergyAccumulatorRate), 0, 10); if (sm.AVLightingAccumulator > sm.LightingAccumulatorThreshold) { From 19def05f55ad725225fd350335984ebf43e0bba5 Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 08:50:22 +0300 Subject: [PATCH 14/27] fix rsi --- .../_Sunrise/Entities/Structures/Reflector/reflector.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml b/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml index f2ab195fcec..583a6c56e9d 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Structures/Reflector/reflector.yml @@ -33,7 +33,7 @@ - type: RCDDeconstructable deconstructable: false - type: Sprite - sprite: _Starlight/Structures/Reflector/reflector.rsi + sprite: _Sunrise/Structures/Reflector/reflector.rsi layers: - state: reflector_box shader: unshaded From 8e457cb5f1a12028d97b87c898cd022874679a93 Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 15:40:20 +0300 Subject: [PATCH 15/27] fix ids --- Content.Server/Radio/EntitySystems/RadioSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index 2f0872ee842..9ba10252e5c 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -199,7 +199,7 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann private string GetIdCardName(EntityUid senderUid) { var idCardTitle = Loc.GetString("chat-radio-no-id"); - idCardTitle = GetIdCard(senderUid)?.JobTitle ?? idCardTitle; + idCardTitle = GetIdCard(senderUid)?.LocalizedJobTitle ?? idCardTitle; var textInfo = CultureInfo.CurrentCulture.TextInfo; idCardTitle = textInfo.ToTitleCase(idCardTitle); From 0f546ee5e13daa4e4094fd496a17cfa3af4c9d4b Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 16:38:36 +0300 Subject: [PATCH 16/27] return checking for double actions --- .../Actions/ActionContainerSystem.cs | 20 +++++++++---------- Content.Shared/Bed/Sleep/SleepingSystem.cs | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Content.Shared/Actions/ActionContainerSystem.cs b/Content.Shared/Actions/ActionContainerSystem.cs index dbac6063fae..840a16fa136 100644 --- a/Content.Shared/Actions/ActionContainerSystem.cs +++ b/Content.Shared/Actions/ActionContainerSystem.cs @@ -238,16 +238,16 @@ public bool AddAction(EntityUid uid, EntityUid actionId, BaseActionComponent? ac DebugTools.AssertOwner(uid, comp); comp ??= EnsureComp(uid); - ///if (!TryComp(actionId, out var actionData)) - /// return false; - ///if (!TryPrototype(actionId, out var actionProto, actionData)) - /// return false; - - ///if (HasAction(uid, actionProto.ID)) - ///{ - /// Log.Debug($"Tried to insert action {ToPrettyString(actionId)} into {ToPrettyString(uid)}. Failed due to duplicate actions."); - /// return false; - ///} + if (!TryComp(actionId, out var actionData)) + return false; + if (!TryPrototype(actionId, out var actionProto, actionData)) + return false; + + if (HasAction(uid, actionProto.ID, comp)) + { + Log.Debug($"Tried to insert action {ToPrettyString(actionId)} into {ToPrettyString(uid)}. Failed due to duplicate actions."); + return false; + } if (!_container.Insert(actionId, comp.Container)) { diff --git a/Content.Shared/Bed/Sleep/SleepingSystem.cs b/Content.Shared/Bed/Sleep/SleepingSystem.cs index 0e29fcd98ae..57b93f390c6 100644 --- a/Content.Shared/Bed/Sleep/SleepingSystem.cs +++ b/Content.Shared/Bed/Sleep/SleepingSystem.cs @@ -28,6 +28,7 @@ public sealed partial class SleepingSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; [Dependency] private readonly BlindableSystem _blindableSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -241,6 +242,8 @@ private void Wake(Entity ent) { RemComp(ent); _actionsSystem.RemoveAction(ent, ent.Comp.WakeAction); + if (ent.Comp.WakeAction != null) + _actionContainer.RemoveAction(ent.Comp.WakeAction.Value); var ev = new SleepStateChangedEvent(false); RaiseLocalEvent(ent, ref ev); From ca51bbf72dba3099dfd28dc84c808aba0764c7e0 Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 16:43:08 +0300 Subject: [PATCH 17/27] fix hydro assembly --- .../Entities/Structures/Doors/Airlocks/assembly.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml index 98508b21bcf..933014a1b6f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml @@ -145,7 +145,7 @@ suffix: Hydroponics components: - type: Sprite - sprite: Structures/Doors/Airlocks/Standard/hydroponics.rsi + sprite: _Sunrise/Structures/Doors/Airlocks/Standard/hydroponics.rsi #Sunrise-Resprite state: "assembly" - type: entity @@ -154,7 +154,7 @@ suffix: Hydroponics, Glass components: - type: Sprite - sprite: Structures/Doors/Airlocks/Glass/hydroponics.rsi + sprite: _Sunrise/Structures/Doors/Airlocks/Glass/hydroponics.rsi #Sunrise-Resprite state: "assembly" #Maintenance From 6624c617ee64c3ae0f63ca4fbe71bcde2c87dfda Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 16:50:19 +0300 Subject: [PATCH 18/27] fix x2 hydroponics and chemistry airlock --- .../Entities/Structures/Doors/airlock_groups.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml b/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml index 9beedb5e494..a33477ea5a1 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml @@ -5,11 +5,11 @@ atmospherics: Structures/Doors/Airlocks/Standard/atmospherics.rsi basic: Structures/Doors/Airlocks/Standard/basic.rsi cargo: Structures/Doors/Airlocks/Standard/cargo.rsi - chemistry: Structures/Doors/Airlocks/Standard/chemistry.rsi + chemistry: _Sunrise/Structures/Doors/Airlocks/Standard/chemistry.rsi #Sunrise-Resprite command: Structures/Doors/Airlocks/Standard/command.rsi engineering: Structures/Doors/Airlocks/Standard/engineering.rsi freezer: Structures/Doors/Airlocks/Standard/freezer.rsi - hydroponics: Structures/Doors/Airlocks/Standard/hydroponics.rsi + hydroponics: _Sunrise/Structures/Doors/Airlocks/Standard/hydroponics.rsi #Sunrise-Resprite maintenance: Structures/Doors/Airlocks/Standard/maint.rsi medical: Structures/Doors/Airlocks/Standard/medical.rsi science: Structures/Doors/Airlocks/Standard/science.rsi @@ -24,11 +24,11 @@ basic: Structures/Doors/Airlocks/Glass/basic.rsi cargo: Structures/Doors/Airlocks/Glass/cargo.rsi command: Structures/Doors/Airlocks/Glass/command.rsi - chemistry: Structures/Doors/Airlocks/Glass/chemistry.rsi + chemistry: _Sunrise/Structures/Doors/Airlocks/Glass/chemistry.rsi #Sunrise-Resprite science: Structures/Doors/Airlocks/Glass/science.rsi engineering: Structures/Doors/Airlocks/Glass/engineering.rsi glass: Structures/Doors/Airlocks/Glass/glass.rsi - hydroponics: Structures/Doors/Airlocks/Glass/hydroponics.rsi + hydroponics: _Sunrise/Structures/Doors/Airlocks/Glass/hydroponics.rsi #Sunrise-Resprite maintenance: Structures/Doors/Airlocks/Glass/maint.rsi medical: Structures/Doors/Airlocks/Glass/medical.rsi security: Structures/Doors/Airlocks/Glass/security.rsi From 609e9b8f157435195c969749ce7b4a7b4d90e355 Mon Sep 17 00:00:00 2001 From: Rinary Date: Mon, 21 Oct 2024 21:48:04 +0300 Subject: [PATCH 19/27] upd --- .../Systems/NightVisionDeviceSystem.cs | 41 +++++++++++++++++-- .../Clothing/Eyes/night_vision_device.yml | 1 - 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Content.Shared/_Sunrise/Eye/NightVision/Systems/NightVisionDeviceSystem.cs b/Content.Shared/_Sunrise/Eye/NightVision/Systems/NightVisionDeviceSystem.cs index 33ec1e2c517..8a3317b62fb 100644 --- a/Content.Shared/_Sunrise/Eye/NightVision/Systems/NightVisionDeviceSystem.cs +++ b/Content.Shared/_Sunrise/Eye/NightVision/Systems/NightVisionDeviceSystem.cs @@ -4,6 +4,8 @@ using Content.Shared.Actions; using Content.Shared.Inventory.Events; using Content.Shared.Toggleable; +using Content.Shared.PowerCell; +using Content.Shared.PowerCell.Components; using Content.Shared.Popups; using Robust.Shared.Audio.Systems; using Robust.Shared.Network; @@ -20,6 +22,7 @@ public sealed class NightVisionDeviceSystem : EntitySystem [Dependency] private readonly SharedPointLightSystem _light = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedPowerCellSystem _cell = default!; public override void Initialize() { @@ -27,6 +30,9 @@ public override void Initialize() SubscribeLocalEvent>(OnNVDTrySee); SubscribeLocalEvent(OnNightVisionDeviceUpdateVisuals); + + SubscribeLocalEvent(OnPowerCellChanged); + SubscribeLocalEvent(OnPowerCellSlotEmpty); SubscribeLocalEvent(OnGetActions); SubscribeLocalEvent(OnToggleAction); @@ -56,7 +62,20 @@ private void OnShutdown(EntityUid uid, NightVisionDeviceComponent component, Com { _actionsSystem.RemoveAction(uid, component.ToggleActionEntity); } + + private void OnPowerCellSlotEmpty(Entity ent, ref PowerCellSlotEmptyEvent args) + { + if (ent.Comp.isPowered) + Toggle(ent); + } + private void OnPowerCellChanged(Entity ent, ref PowerCellChangedEvent args) + { + if (args.Ejected || !_powerCell.HasDrawCharge(ent)) + if (ent.Comp.isPowered) + Toggle(ent); + } + private void OnToggleAction(Entity ent, ref ToggleActionEvent args) { if (args.Handled) @@ -68,6 +87,13 @@ private void OnToggleAction(Entity ent, ref ToggleAc return; } + Toggle(ent); + + args.Handled = true; + } + + public void Toggle(Entity ent) + { var updVisEv = new NightVisionDeviceUpdateVisualsEvent(); RaiseLocalEvent(ent, ref updVisEv); @@ -81,15 +107,22 @@ private void OnToggleAction(Entity ent, ref ToggleAc if (!_light.TryGetLight(ent.Owner, out var light)) return; + + var draw = Comp(ent.Owner); + _cell.QueueUpdate((ent.Owner, draw)); + _cell.SetDrawEnabled((ent.Owner, draw), ent.Comp.Activated); _appearance.SetData(ent, ToggleableLightVisuals.Enabled, ent.Comp.Activated); _light.SetEnabled(ent.Owner, ent.Comp.Activated, comp: light); - var changeEv = new NightVisionDeviceToggledEvent(args.Performer); - RaiseLocalEvent(ent.Owner, ref changeEv); - Dirty(ent); + if (TryComp(ent.Owner, out var transform)) + { + var equipped = transform.ParentUid; - args.Handled = true; + var changeEv = new NightVisionDeviceToggledEvent(equipped); + RaiseLocalEvent(ent.Owner, ref changeEv); + } + Dirty(ent); } } diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/night_vision_device.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/night_vision_device.yml index 4d0e582ce67..10f16f24a68 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/night_vision_device.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/night_vision_device.yml @@ -38,7 +38,6 @@ - type: PowerCellDraw drawRate: 0 useRate: 20 - - type: ToggleCellDraw - type: entity parent: [ClothingEyesNVD,ShowSecurityIcons] From fd24035900d052657d2fb3940396bc4ed245ef74 Mon Sep 17 00:00:00 2001 From: Rinary Date: Tue, 22 Oct 2024 12:22:56 +0300 Subject: [PATCH 20/27] =?UTF-8?q?=D0=A3=20=D0=B2=D1=81=D0=B5=D1=85=20?= =?UTF-8?q?=D1=85=D0=B0=D1=80=D0=B4=D1=81=D1=8C=D1=8E=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=BD=20=D0=BF=D0=BD=D0=B2(=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=85?= =?UTF-8?q?=D0=B0=D1=80=D0=B4=D1=81=D1=8C=D1=8E=D1=82=D0=BE=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BF=D0=BD=D0=B2=20=D0=BC=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Clothing/Head/hardsuit-helmets.yml | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 1126c9b73d0..3034e912891 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -86,9 +86,9 @@ # Sunrise-Start - type: EyeProtection - type: FlashImmunity - - type: NightVisionDevice - displayColor: "#ebeb00" - displayShader: NVDDisplay +# - type: NightVisionDevice +# displayColor: "#ebeb00" +# displayShader: NVDDisplay # Sunrise-End #Spationaut Hardsuit @@ -405,9 +405,9 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: NightVisionDevice #Sunrise - night vision - displayColor: "#44b855" - displayShader: NVDDisplay +# - type: NightVisionDevice Sunrise - night vision +# displayColor: "#44b855" +# displayShader: NVDDisplay #Syndicate Elite Hardsuit - type: entity @@ -437,9 +437,9 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: NightVisionDevice #Sunrise - night vision - displayColor: "#44b855" - displayShader: NVDDisplay +# - type: NightVisionDevice Sunrise - night vision +# displayColor: "#44b855" +# displayShader: NVDDisplay #Syndicate Commander Hardsuit - type: entity @@ -464,9 +464,9 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: NightVisionDevice #Sunrise - night vision - displayColor: "#44b855" - displayShader: NVDDisplay +# - type: NightVisionDevice Sunrise - night vision +# displayColor: "#44b855" +# displayShader: NVDDisplay #Cybersun Juggernaut Hardsuit - type: entity @@ -491,9 +491,9 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: NightVisionDevice #Sunrise - night vision - displayColor: "#44b855" - displayShader: NVDDisplay +# - type: NightVisionDevice Sunrise - night vision +# displayColor: "#44b855" +# displayShader: NVDDisplay #Wizard Hardsuit - type: entity From 4b3cc9bb395c7b2eedce924a9bfa9fabce3d9d9c Mon Sep 17 00:00:00 2001 From: Rinary Date: Tue, 22 Oct 2024 12:58:53 +0300 Subject: [PATCH 21/27] peace parts --- .../Robotics/cyborg_parts.rsi/peace_chest+o.png | Bin 0 -> 380 bytes .../Robotics/cyborg_parts.rsi/peace_chest.png | Bin 0 -> 379 bytes .../Robotics/cyborg_parts.rsi/peace_head+o.png | Bin 0 -> 347 bytes .../Robotics/cyborg_parts.rsi/peace_head.png | Bin 0 -> 348 bytes .../Robotics/cyborg_parts.rsi/peace_l_arm+o.png | Bin 0 -> 251 bytes .../Robotics/cyborg_parts.rsi/peace_l_arm.png | Bin 0 -> 257 bytes .../Robotics/cyborg_parts.rsi/peace_l_leg+0.png | Bin 0 -> 224 bytes .../Robotics/cyborg_parts.rsi/peace_l_leg.png | Bin 0 -> 219 bytes .../Robotics/cyborg_parts.rsi/peace_r_arm+0.png | Bin 0 -> 264 bytes .../Robotics/cyborg_parts.rsi/peace_r_arm.png | Bin 0 -> 262 bytes .../Robotics/cyborg_parts.rsi/peace_r_leg+o.png | Bin 0 -> 221 bytes .../Robotics/cyborg_parts.rsi/peace_r_leg.png | Bin 0 -> 219 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_chest+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_chest.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_head+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_head.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+0.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm+0.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg.png diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_chest+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_chest+o.png new file mode 100644 index 0000000000000000000000000000000000000000..a123e988955e7dca8026c9949f06e0bf98b253de GIT binary patch literal 380 zcmV-?0fYXDP)Px$Hc3Q5R9J=Wl`oEjFcgR1Zr0#xksRW=S{xR`IeG(*(QDukwKy(7(mH~xBd9lG zQ!@jTiLA9`t)*8Yu78@QP2-#&O8a_48yQ~Gsd7O3Sf+FYRa;FIp#8)bCOb$Qi>39eUP3X zCu0mDA}OUvN=a#&zWx933b;^X%o^yzjWMg>?E(%bp_C$})F${j{Py6z#9qV&e>^-A a`2-KjarbTvcf0fhdEP)Px$HAzH4R9J=Wl`D>hFce1bOvd19ku2i6S{xR`I=Tav(QV)mwKz6F(mH~xBd9xK zQu0IQr{ytb(vvhH&27KaM+!hB5{Y;aLJ%U-*>Q+SLJ04;&ud!G5hT#IEg)jhPPn?J zY3|zzA;?-w(=?H_maMh(PQ>+3)3j-v^F!&cP?=>}0N`gg008nl-%NaU#lZr5k&wW7 zp1n2RJJ9!i&_utXwZ13Nb={?4fUwnj1+GkZw)VqUz&WS7t|7~^wJ%8$Z@AVPs;Yu< z91k;sFQL|YBXP9Kkh6CL9lo;QzilP9<*rui|%eP~0!#O7@B`Ku{5!VOl^>H%B z5F(ONilmg3rs?VbhgZOb8e`T#7jBGM1s@l1I0>Z`DWx{Sui=je?Px$6-h)vR9J=WlCh11Fc3xGo~{6w;3g=*87Tn;kWm1l2tqRGB;uqmzJpX(2!QuF4ZZ=JIU2o<)ilW=G_FLW5&iJ$uS4sh}EX!RW z2!dnlHcb-MY%MBbc;!;YalyqHpWei}M zfwC;0LRVGQ?tI+BFbscZ;3wiZMoJ05x~^Bp*ku5~^SlkdLuN3me|&uyh5(G?Xf@l~ tz?qRN!j}ykjTqh)b~qdkhr{78d;wwub1ha$^>P3J002ovPDHLkV1hQ0ix&U@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_head.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_head.png new file mode 100644 index 0000000000000000000000000000000000000000..bf38656ca443b84a9a42c6c30c3113bf2fb6e839 GIT binary patch literal 348 zcmV-i0i*tjP)Px$7D+@wR9J=WlCh11Fc3xGo~{6w;3l>JXQTuaKt=(GA`l@$WTZ$mfJ8)0Oojv{ zxC1sgd9|>2tQTEy()mSr7|;J6eQ-D&j{nZZrm3o`)qICxc-hx}s+-yopElx3DFEhq zz61(W-zONe0>lE01U%m uHQU<2k&!dPrw#0l7~U0jI2;bgpWy~0DRV7(x-;JZ0000n&fK|39fN z-K4+)LJyRl=Uo3-{cFnVRZr)veP7M|>WipF-(i<0(+YI&Z#%ndU9otEjaQve#_ef^ zGK>+^SRXu8{J`R&$!Opkd^Yw}eq(8DU}#(7ik+37CJd{*G@t%uyOY7-rOEK-_d7j? xhK?IH=hc+H{@hvX^nKp?qH~}BocMp1`^f#^bBi@H763iK;OXk;vd$@?2>^+{WvT!G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_arm.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..7e63942f1a257e5ef73826068efda83eb74c1f92 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}yFFbTLn2z= zPT9-bY#`tkzeuN0)!BfFTVW%Ua0ORb0=w9P1VNR{7w@r6SL+Mdb)#$co$PbF9_>^A z-}u;~FW7!P8l5^YyD$#lL^4hT)^xh{J`DO%we$ANwC zU72onbe#R1qcmw={5AOrrG@K+7@k*(oiCC({xg1_Vs-Gj1DtNtf!<*7boFyt=akR{ E0JFAbuK)l5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+0.png new file mode 100644 index 0000000000000000000000000000000000000000..76ca93d07dcacdf1d750aa9cec0003797ae78c09 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}vpiiKLn2z= zUf#&dtjN>)aK46jfI*vhqJmhW0@twx2|V!=l|xIOl(aAM_!s3+x5-cqQP$!2mYK)H%%mt<7vMd9R->5w`knbb-wALbZU<+iQQ` z(*04xygPe`ZKJ`@dm*9?QQFBpH~&X(INWhmV*C0>`pm~=XLQWykVsf6qP^5dx+=bK zQV`REt#0QkJ(IUOGYd?d-x#{~swm43wSr|EPEF-Ls$&Lv-h->~)qW zTJ?!bK(K33 zLZsNW($snB{~HQr7;k)^n|oX4cs!$;k{M5PX9wdteFpjJ53~NVX!^MCUY($S0q7eB MPgg&ebxsLQ0PQPx#z)3_wR9J=W)UgS}Fc3h|?~o;~^dzplz=2k93_T%VHu@{SI_35f{yI&bdGL03u~X&3~CK*8l(j M07*qoM6N<$g34HGjQ{`u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg+o.png new file mode 100644 index 0000000000000000000000000000000000000000..b58073a781facfa6b7021726aafa1129fcb83f07 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}(>+}rLn2z= zUOvcqL_vV{!u-_P9}H5@95mB8;kJxjdLs|_%osDpCkZV_V!qi6uw4Av!{gur1SXMQ zC##>&-`?~myyQuWu-`nC73#iTt;d&UqG8XGEmz|iIT zTm2K3@2dqF8LmXNzt=Bkmf5jt9&^mT|1U&3PTXsq_~^jq;0;@@ZL^nu_lE0fjQaE- T`-P!ECo*`t`njxgN@xNA&0ScQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..323c31b0d0b43a363b2223565f786bd03f631832 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Q$1ZALn2z= zUOvcsSb?YYp?&D|2L~kVHn1^o>?ltVJa$6i+)~HTe2bGS|EZ|xZJXcIAmGGdzG~~O zth28>75+;e*!(Y=xnl2nGY`#3P1c5czn?msK5W0*{`}^Ut07kzgaw5KnfE#CL{~Lk zyS3-}97c)cif4YaH=lEPV&1TN`fu?kbDoRsIehRx_qN*m=grIc`4w9j3K$wW)u&r; S>8u4hkipZ{&t;ucLK6V3TUPP_ literal 0 HcmV?d00001 From 53f082e93da291eaadd9a83eb800b4223343b5a6 Mon Sep 17 00:00:00 2001 From: Rinary Date: Tue, 22 Oct 2024 13:06:07 +0300 Subject: [PATCH 22/27] clown parts --- .../Robotics/cyborg_parts.rsi/clown_chest+o.png | Bin 0 -> 561 bytes .../Robotics/cyborg_parts.rsi/clown_chest.png | Bin 0 -> 559 bytes .../Robotics/cyborg_parts.rsi/clown_head+o.png | Bin 0 -> 470 bytes .../Robotics/cyborg_parts.rsi/clown_head.png | Bin 0 -> 472 bytes .../Robotics/cyborg_parts.rsi/clown_l_arm+o.png | Bin 0 -> 251 bytes .../Robotics/cyborg_parts.rsi/clown_l_arm.png | Bin 0 -> 257 bytes .../Robotics/cyborg_parts.rsi/clown_l_leg+0.png | Bin 0 -> 224 bytes .../Robotics/cyborg_parts.rsi/clown_l_leg.png | Bin 0 -> 219 bytes .../Robotics/cyborg_parts.rsi/clown_r_arm+0.png | Bin 0 -> 264 bytes .../Robotics/cyborg_parts.rsi/clown_r_arm.png | Bin 0 -> 262 bytes .../Robotics/cyborg_parts.rsi/clown_r_leg+o.png | Bin 0 -> 221 bytes .../Robotics/cyborg_parts.rsi/clown_r_leg.png | Bin 0 -> 219 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_head+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_head.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+0.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm+0.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg.png diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest+o.png new file mode 100644 index 0000000000000000000000000000000000000000..7dca9a23cb38b484981b3d593c44e156aa0215a3 GIT binary patch literal 561 zcmV-10?z%3P)Px$>q$gGR9J=WlfP>dVHn3h5vO7yqfin}$>PxQ5b+Ec4RmzLR6|H>u77~%QlUXQ z72CzFSDNb~x?G3umvo3X1hRDNl54d^;+P?WBJ_1g&-TtUcWDI`?lax{KEJ;Ay?Y=g zCMG84Uq@9{AxV-Lw@#8Ip{iM+H??6?t9f zn-CmK<;bK{NFV?@ole3(7~t!@IgXA`z;U==uhW)gVcT{hsDG#cmr|}mCY{2_--i54 zzAP+I^SQC)INYk&0VwYcYu>i>(B7c}ZfoMEu@Uprvib^=-c`LlH^ z6#!-%jlle7p}=<`pi~23bz*|vhz$r8;3uo=-a)^KyADKQq&fgumc`xueKsC1l1Zmn zeYe8k^pw}xtS9e9w+p~Zsm9Uq35$&l-cL@_>-DbYfd4bprl$cgP1BQCEEYZID8nNO z@MBpP{eJ(Kd($*YCX+l^-X5!8sKSffc=BA_`P@QL6aWfm+hCoorKV{dOywBtu1D@W zmIH&`^@OsyDKt&<+`DH*QK(j{W4%;N%wOjRyX?Ue7#Ra}00000NkvXXu0mjf+3yG6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..9d672232412b51d94995b5edab8f43f351fee1b0 GIT binary patch literal 559 zcmV+~0?_@5P)Px$=}AOER9J=WlRaWk^kHV`8UeLGm;C-t+bPwGSjD zBqT(jX_}BENlaQNNs`bsEwb*~aJ;vFy6sYBT_-?2T&PwT;N$kpgaRZ^OXnp-^ z0@{@dJbZrM@Zz8VUYxzp=e2Wlmlx3Kba-o;p$>!*bf93GeEhE+a2zLvEdT!5detfb z^UY>xeoImKDFl@30IW?-(I2w`kphC`4Z}a^FLBR-IE+;XAj`72yT8xo<0W$03~TRK z8J?cSS{B%IzC~kxygs=Y5M*C)f@@=B$W?;K}%ECE4m z+h#Br{Bdtt7U^`F2P-=h^@~(^ksD85h&x}~sHzHpa<&cj*;?wl&cRH9;qFH4z7shx x+}%j2TU$ccb>F>rR#lZ+tv1n1B_t#y`~s^!!4qXnd>Q}%002ovPDHLkV1nbb|3Cl$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_head+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_head+o.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4fc5d792d8782e6cfaf486a3177dbc82ca95b6 GIT binary patch literal 470 zcmV;{0V)28P)Px$kV!;AR9J=Wl(9+!K@>$#BpmDmx21Az+gt z-9WGiCY4nRn-n2P#4ivT5gW0XK7nT;qe*t-PSUyuw%EtMd+)q`4E%R8am8UZE7R|L z%}MNcN%-hwt5jl7hq;ClLv-*PLXA zbY-`|%oLpPNY?<+TF;EPQmJGXnakUN$NR3|FPIPEm=2@0mQtw{@!{cY#?-OM92P90 z!|j9P$TNx z%-#{Iq+V6P)Px$l1W5CR9J=Wl(9+!K@>$#BpciGZ{S(T#3Z|MCuy|U16%B4-@SLq#$v|Nkjq^ znxo8su51^Xnt~G^>JtF8)>GrHR;!tL=JI;S!)@2^7tDrmOoq`~OSxQ*_;7zbW$Kt` z4s({!;r79Ccz(^r><9obGLKb#~xoo*2M|*xFp>sP!H(4}t&yYi%S%>u8O~r;o(N z_1bDT@=2p02xzz40F+9lNKd2DpkA*h>aX|&n8leZrBF)I>-CnA@h1#JvDV6Gzc13% zVy%^YK0oysV?>%-KKp$!#z+{3lC11`4>;a(ImqP*fLg7FQVIZL3;-{s-GvSYo;v{F zQvm36I^&uf{p1c*Dir{R!=abM O0000n&fK|39fN z-K4+)LJyRl=Uo3-{cFnVRZr)veP7M|>WipF-(i<0(+YI&Z#%ndU9otEjaQve#_ef^ zGK>+^SRXu8{J`R&$!Opkd^Yw}eq(8DU}#(7ik+37CJd{*G@t%uyOY7-rOEK-_d7j? xhK?IH=hc+H{@hvX^nKp?qH~}BocMp1`^f#^bBi@H763iK;OXk;vd$@?2>^+{WvT!G literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_arm.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..7e63942f1a257e5ef73826068efda83eb74c1f92 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}yFFbTLn2z= zPT9-bY#`tkzeuN0)!BfFTVW%Ua0ORb0=w9P1VNR{7w@r6SL+Mdb)#$co$PbF9_>^A z-}u;~FW7!P8l5^YyD$#lL^4hT)^xh{J`DO%we$ANwC zU72onbe#R1qcmw={5AOrrG@K+7@k*(oiCC({xg1_Vs-Gj1DtNtf!<*7boFyt=akR{ E0JFAbuK)l5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+0.png new file mode 100644 index 0000000000000000000000000000000000000000..76ca93d07dcacdf1d750aa9cec0003797ae78c09 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}vpiiKLn2z= zUf#&dtjN>)aK46jfI*vhqJmhW0@twx2|V!=l|xIOl(aAM_!s3+x5-cqQP$!2mYK)H%%mt<7vMd9R->5w`knbb-wALbZU<+iQQ` z(*04xygPe`ZKJ`@dm*9?QQFBpH~&X(INWhmV*C0>`pm~=XLQWykVsf6qP^5dx+=bK zQV`REt#0QkJ(IUOGYd?d-x#{~swm43wSr|EPEF-Ls$&Lv-h->~)qW zTJ?!bK(K33 zLZsNW($snB{~HQr7;k)^n|oX4cs!$;k{M5PX9wdteFpjJ53~NVX!^MCUY($S0q7eB MPgg&ebxsLQ0PQPx#z)3_wR9J=W)UgS}Fc3h|?~o;~^dzplz=2k93_T%VHu@{SI_35f{yI&bdGL03u~X&3~CK*8l(j M07*qoM6N<$g34HGjQ{`u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg+o.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg+o.png new file mode 100644 index 0000000000000000000000000000000000000000..b58073a781facfa6b7021726aafa1129fcb83f07 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}(>+}rLn2z= zUOvcqL_vV{!u-_P9}H5@95mB8;kJxjdLs|_%osDpCkZV_V!qi6uw4Av!{gur1SXMQ zC##>&-`?~myyQuWu-`nC73#iTt;d&UqG8XGEmz|iIT zTm2K3@2dqF8LmXNzt=Bkmf5jt9&^mT|1U&3PTXsq_~^jq;0;@@ZL^nu_lE0fjQaE- T`-P!ECo*`t`njxgN@xNA&0ScQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..323c31b0d0b43a363b2223565f786bd03f631832 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Q$1ZALn2z= zUOvcsSb?YYp?&D|2L~kVHn1^o>?ltVJa$6i+)~HTe2bGS|EZ|xZJXcIAmGGdzG~~O zth28>75+;e*!(Y=xnl2nGY`#3P1c5czn?msK5W0*{`}^Ut07kzgaw5KnfE#CL{~Lk zyS3-}97c)cif4YaH=lEPV&1TN`fu?kbDoRsIehRx_qN*m=grIc`4w9j3K$wW)u&r; S>8u4hkipZ{&t;ucLK6V3TUPP_ literal 0 HcmV?d00001 From 098b6df874b22b805f36e50325f488485a2b12fc Mon Sep 17 00:00:00 2001 From: Rinary Date: Tue, 22 Oct 2024 13:08:20 +0300 Subject: [PATCH 23/27] upd parts meta --- .../Robotics/cyborg_parts.rsi/meta.json | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json index 8cab41943fe..0d737f37e08 100644 --- a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/meta.json @@ -213,6 +213,78 @@ }, { "name": "service_r_leg+o" + }, + { + "name": "peace_l_arm" + }, + { + "name": "peace_r_arm" + }, + { + "name": "peace_l_leg" + }, + { + "name": "peace_r_leg" + }, + { + "name": "peace_chest" + }, + { + "name": "peace_head" + }, + { + "name": "peace_head+o" + }, + { + "name": "peace_chest+o" + }, + { + "name": "peace_l_arm+o" + }, + { + "name": "peace_r_arm+o" + }, + { + "name": "peace_l_leg+o" + }, + { + "name": "peace_r_leg+o" + }, + { + "name": "clown_l_arm" + }, + { + "name": "clown_r_arm" + }, + { + "name": "clown_l_leg" + }, + { + "name": "clown_r_leg" + }, + { + "name": "clown_chest" + }, + { + "name": "clown_head" + }, + { + "name": "clown_head+o" + }, + { + "name": "clown_chest+o" + }, + { + "name": "clown_l_arm+o" + }, + { + "name": "clown_r_arm+o" + }, + { + "name": "clown_l_leg+o" + }, + { + "name": "clown_r_leg+o" } ] } From 886ca5777ed602e5804510b9ba4dc72b1ff25be8 Mon Sep 17 00:00:00 2001 From: Rinary Date: Wed, 23 Oct 2024 10:49:00 +0300 Subject: [PATCH 24/27] akms bigger price --- Resources/Prototypes/_Sunrise/Catalog/Cargo/cargo_armory.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Sunrise/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/_Sunrise/Catalog/Cargo/cargo_armory.yml index 28a26597f9c..0f7fa15638a 100644 --- a/Resources/Prototypes/_Sunrise/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/_Sunrise/Catalog/Cargo/cargo_armory.yml @@ -14,7 +14,7 @@ sprite: _Sunrise/Objects/Weapons/Guns/Rifles/akms/big.rsi state: icon product: CrateArmoryAKMS - cost: 11000 + cost: 35000 category: cargoproduct-category-name-armory group: market From d0aeda46aab9041003682d723c4c563acb4b381f Mon Sep 17 00:00:00 2001 From: Rinary Date: Wed, 23 Oct 2024 11:15:45 +0300 Subject: [PATCH 25/27] fix --- .../{peace_l_leg+0.png => peace_l_leg+o.png} | Bin .../{peace_r_arm+0.png => peace_r_arm+o.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/{peace_l_leg+0.png => peace_l_leg+o.png} (100%) rename Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/{peace_r_arm+0.png => peace_r_arm+o.png} (100%) diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+o.png similarity index 100% rename from Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+0.png rename to Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_l_leg+o.png diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm+o.png similarity index 100% rename from Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm+0.png rename to Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/peace_r_arm+o.png From 61833b716bb28c7e5f3826f215214a8cfd760609 Mon Sep 17 00:00:00 2001 From: Rinary Date: Wed, 23 Oct 2024 11:16:28 +0300 Subject: [PATCH 26/27] fix x2 --- .../{clown_l_leg+0.png => clown_l_leg+o.png} | Bin .../{clown_r_arm+0.png => clown_r_arm+o.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/{clown_l_leg+0.png => clown_l_leg+o.png} (100%) rename Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/{clown_r_arm+0.png => clown_r_arm+o.png} (100%) diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+o.png similarity index 100% rename from Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+0.png rename to Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_l_leg+o.png diff --git a/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm+0.png b/Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm+o.png similarity index 100% rename from Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm+0.png rename to Resources/Textures/Objects/Specific/Robotics/cyborg_parts.rsi/clown_r_arm+o.png From ecca691223e2e2ab731cd561d35d1aa46aa4e59b Mon Sep 17 00:00:00 2001 From: Rinary Date: Wed, 23 Oct 2024 11:23:17 +0300 Subject: [PATCH 27/27] add clown, peace parts --- .../Objects/Specific/Robotics/borg_parts.yml | 180 ++++++++++++++++++ .../Specific/Robotics/endoskeleton.yml | 62 ++++++ Resources/Prototypes/tags.yml | 36 ++++ 3 files changed, 278 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml index 6df0488e28f..39ec468f8d2 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_parts.yml @@ -501,3 +501,183 @@ tags: - Trash - BorgServiceTorso + +# peace parts +- type: entity + id: LeftArmBorgPeace + parent: BaseBorgArmLeft + name: peace cyborg left arm + components: + - type: Sprite + state: peace_l_arm + - type: Icon + state: peace_l_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgPeaceLArm + +- type: entity + id: RightArmBorgPeace + parent: BaseBorgArmRight + name: peace cyborg right arm + components: + - type: Sprite + state: peace_r_arm + - type: Icon + state: peace_r_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgPeaceRArm + +- type: entity + id: LeftLegBorgPeace + parent: BaseBorgLegLeft + name: peace cyborg left leg + components: + - type: Sprite + state: peace_l_leg + - type: Icon + state: peace_l_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgPeaceLLeg + +- type: entity + id: RightLegBorgPeace + parent: BaseBorgLegRight + name: peace cyborg right leg + components: + - type: Sprite + state: peace_r_leg + - type: Icon + state: peace_r_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgPeaceRLeg + +- type: entity + id: HeadBorgPeace + parent: BaseBorgHead + name: peace cyborg head + components: + - type: Sprite + state: peace_head + - type: Icon + state: peace_head + - type: Tag + tags: + - Trash + - BorgHead + - BorgPeaceHead + +- type: entity + id: TorsoBorgPeace + parent: BaseBorgTorso + name: peace cyborg torso + components: + - type: Sprite + state: peace_chest + - type: Icon + state: peace_chest + - type: Tag + tags: + - Trash + - BorgPeaceTorso + +# clown parts +- type: entity + id: LeftArmBorgClown + parent: BaseBorgArmLeft + name: clown cyborg left arm + components: + - type: Sprite + state: peace_l_arm + - type: Icon + state: peace_l_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgClownLArm + +- type: entity + id: RightArmBorgClown + parent: BaseBorgArmRight + name: clown cyborg right arm + components: + - type: Sprite + state: peace_r_arm + - type: Icon + state: peace_r_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgClownRArm + +- type: entity + id: LeftLegBorgClown + parent: BaseBorgLegLeft + name: clown cyborg left leg + components: + - type: Sprite + state: peace_l_leg + - type: Icon + state: peace_l_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgClownLLeg + +- type: entity + id: RightLegBorgClown + parent: BaseBorgLegRight + name: clown cyborg right leg + components: + - type: Sprite + state: peace_r_leg + - type: Icon + state: peace_r_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgClownRLeg + +- type: entity + id: HeadBorgClown + parent: BaseBorgHead + name: clown cyborg head + components: + - type: Sprite + state: peace_head + - type: Icon + state: peace_head + - type: Tag + tags: + - Trash + - BorgHead + - BorgClownHead + +- type: entity + id: TorsoBorgClown + parent: BaseBorgTorso + name: clown cyborg torso + components: + - type: Sprite + state: peace_chest + - type: Icon + state: peace_chest + - type: Tag + tags: + - Trash + - BorgClownTorso \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml index 9261e06ea2a..018883d236e 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml @@ -166,6 +166,54 @@ whitelist: tags: - BorgJanitorTorso + peace_l_arm+o: + whitelist: + tags: + - BorgPeaceLArm + peace_r_arm+o: + whitelist: + tags: + - BorgPeaceRArm + peace_l_leg+o: + whitelist: + tags: + - BorgPeaceLLeg + peace_r_leg+o: + whitelist: + tags: + - BorgPeaceRLeg + peace_head+o: + whitelist: + tags: + - BorgPeaceHead + peace_chest+o: + whitelist: + tags: + - BorgPeaceTorso + clown_l_arm+o: + whitelist: + tags: + - BorgClownLArm + clown_r_arm+o: + whitelist: + tags: + - BorgClownRArm + clown_l_leg+o: + whitelist: + tags: + - BorgClownLLeg + clown_r_leg+o: + whitelist: + tags: + - BorgClownRLeg + clown_head+o: + whitelist: + tags: + - BorgClownHead + clown_chest+o: + whitelist: + tags: + - BorgClownTorso - type: ContainerContainer containers: part-container: !type:Container @@ -212,6 +260,20 @@ - BorgMiningRLeg - BorgMiningHead - BorgMiningTorso + peace: + - BorgPeaceLArm + - BorgPeaceRArm + - BorgPeaceLLeg + - BorgPeaceRLeg + - BorgPeaceHead + - BorgPeaceTorso + clown: + - BorgClownLArm + - BorgClownRArm + - BorgClownLLeg + - BorgClownRLeg + - BorgClownHead + - BorgClownTorso - type: Construction graph: Cyborg node: start diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index a0490fa15ac..d61acb713e0 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -146,6 +146,42 @@ - type: Tag id: BorgMedicalTorso + +- type: Tag + id: BorgPeaceHead + +- type: Tag + id: BorgPeaceLArm + +- type: Tag + id: BorgPeaceLLeg + +- type: Tag + id: BorgPeaceRArm + +- type: Tag + id: BorgPeaceRLeg + +- type: Tag + id: BorgPeaceTorso + +- type: Tag + id: BorgClownHead + +- type: Tag + id: BorgClownLArm + +- type: Tag + id: BorgClownLLeg + +- type: Tag + id: BorgClownRArm + +- type: Tag + id: BorgClownRLeg + +- type: Tag + id: BorgClownTorso - type: Tag id: BorgMiningHead