From bc693eef6b18ae2a3ecdb190e3efc6c8a0598ef7 Mon Sep 17 00:00:00 2001 From: TheZuTi Date: Thu, 15 Jan 2026 02:53:08 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B0=D0=BD=D1=82=D0=B0=D0=B3=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=B4=D0=B5=D0=B1=D0=B0=D0=B3=20=D0=BC=D0=B5=D0=BD=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Systems/AdminVerbSystem.Antags.cs | 71 +++++++++++++++++++ .../Renegade/Roles/RenegadeRoleComponent.cs | 2 +- .../Locale/ru-RU/administration/antag.ftl | 10 +++ 3 files changed, 82 insertions(+), 1 deletion(-) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 597e3496220ff..5b9bb7a272c27 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -13,6 +13,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Utility; using Content.Shared.DeadSpace.Events.Roles.Components; +using Content.Shared.Roles.Components; namespace Content.Server.Administration.Systems; @@ -30,8 +31,13 @@ public sealed partial class AdminVerbSystem private static readonly EntProtoId DefaultThiefRule = "Thief"; private static readonly EntProtoId DefaultChangelingRule = "Changeling"; private static readonly EntProtoId ParadoxCloneRuleId = "ParadoxCloneSpawn"; + private static readonly EntProtoId DefaultWizardRule = "Wizard"; private static readonly EntProtoId DefaultUnitologyRule = "Unitology"; // DS14 private static readonly EntProtoId DefaultSpiderTerrorRule = "SpiderTerror"; // DS14 + + private static readonly EntProtoId DragonSpawnRule = "DragonSpawn"; // DS14 + private static readonly EntProtoId SpaceNinjaRule = "NinjaSpawn"; // DS14 + private static readonly EntProtoId RenegadeRule = "RenegadeSpawn"; // DS14 private static readonly ProtoId PirateGearId = "PirateGear"; // All antag verbs have names so invokeverb works. @@ -127,6 +133,55 @@ private void AddAntagVerbs(GetVerbsEvent args) }; args.Verbs.Add(nukeOp); + // DS14-start + + var dragonName = Loc.GetString("admin-verb-text-make-dragon"); + Verb dragon = new() + { + Text = dragonName, + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new("Objects/Weapons/Guns/Projectiles/magic.rsi"), "fireball"), + Act = () => + { + _antag.ForceMakeAntag(targetPlayer, DragonSpawnRule); + }, + Impact = LogImpact.High, + Message = string.Join(": ", dragonName, Loc.GetString("admin-verb-make-dragon")), + }; + args.Verbs.Add(dragon); + + var ninjaName = Loc.GetString("admin-verb-text-make-ninja"); + Verb ninja = new() + { + Text = ninjaName, + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new("Objects/Weapons/Melee/energykatana.rsi"), "icon"), + Act = () => + { + _antag.ForceMakeAntag(targetPlayer, SpaceNinjaRule); + }, + Impact = LogImpact.High, + Message = string.Join(": ", ninjaName, Loc.GetString("admin-verb-make-ninja")), + }; + args.Verbs.Add(ninja); + + var renegadeName = Loc.GetString("admin-verb-text-make-renegade"); + Verb renegade = new() + { + Text = renegadeName, + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new("_DeadSpace/Renegade/bondrewd_helm.rsi"), "icon"), + Act = () => + { + _antag.ForceMakeAntag(targetPlayer, RenegadeRule); + }, + Impact = LogImpact.High, + Message = string.Join(": ", renegadeName, Loc.GetString("admin-verb-make-renegade")), + }; + args.Verbs.Add(renegade); + + //DS14-end + var pirateName = Loc.GetString("admin-verb-text-make-pirate"); Verb pirate = new() { @@ -158,6 +213,22 @@ private void AddAntagVerbs(GetVerbsEvent args) }; args.Verbs.Add(headRev); + var wizardName = Loc.GetString("admin-verb-text-make-wizard"); + Verb wizard = new() + { + Text = wizardName, + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Clothing/Head/Hats/wizard_fake.rsi"), "icon"), + Act = () => + { + // Wizard has no rule components as of writing, but I gotta put something here to satisfy the machine so just make it wizard mind rule :) + _antag.ForceMakeAntag(targetPlayer, DefaultWizardRule); + }, + Impact = LogImpact.High, + Message = string.Join(": ", wizardName, Loc.GetString("admin-verb-make-wizard")), + }; + args.Verbs.Add(wizard); + // DS14-start var uniName = Loc.GetString("admin-verb-text-make-unitolog"); Verb uni = new() diff --git a/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs b/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs index f8a44b8abe249..2e35454dc0fad 100644 --- a/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs +++ b/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs @@ -3,7 +3,7 @@ using Content.Shared.Roles.Components; using Robust.Shared.GameStates; -namespace Content.Shared.DeadSpace.Renegade.Roles; +namespace Content.Shared.Roles.Components; [RegisterComponent, NetworkedComponent] public sealed partial class RenegadeRoleComponent : BaseMindRoleComponent; diff --git a/Resources/Locale/ru-RU/administration/antag.ftl b/Resources/Locale/ru-RU/administration/antag.ftl index 79da55f0c5427..3bbaa6b459043 100644 --- a/Resources/Locale/ru-RU/administration/antag.ftl +++ b/Resources/Locale/ru-RU/administration/antag.ftl @@ -7,6 +7,7 @@ admin-verb-make-pirate = Сделать цель пиратом\капером. admin-verb-make-head-rev = Сделать цель главой революции. admin-verb-make-unitolog = Сделать цель радикальным юнитологом, если ранее юнитологов не было, цель становиться старшим юнитологом. admin-verb-make-paradox-clone = Создать роль призрака парадоксального клона цели. +admin-verb-make-wizard = Сделать цель Магом admin-verb-make-changeling = Сделать цель генокрадом. admin-verb-make-spider-terror = Засунуть яйцо паука ужаса. admin-verb-make-thief = Сделать цель вором. @@ -19,6 +20,7 @@ admin-verb-text-make-paradox-clone = Создать парадоксальног admin-verb-text-make-changeling = Сделать генокрадом (WIP) admin-verb-text-make-nuclear-operative = Сделать ядерным оперативником admin-verb-text-make-pirate = Сделать пиратом +admin-verb-text-make-wizard = Сделать Магом admin-verb-text-make-head-rev = Сделать Главой революции admin-verb-text-make-unitolog = Сделать юнитологом admin-verb-text-make-spider-terror = Сделать пуком ужаса @@ -26,3 +28,11 @@ admin-verb-text-make-thief = Сделать вором admin-verb-text-make-blob = Сделать носителем Блоба admin-verb-text-make-event-role = Ивентовая роль admin-overlay-antag-classic = АНТАГ +#DS14-start +admin-verb-text-make-dragon = Сделать цель Драконом +admin-verb-make-dragon = Сделать Драконом +admin-verb-text-make-ninja = Сделть цель Ниндзей +admin-verb-make-ninja = Сделать Ниндзей +admin-verb-text-make-renegade = Сделать цель Ренегатом +admin-verb-make-renegade = Сделать Ренегатом +#DS14-end \ No newline at end of file From 4114501f4ddad57f7ff8adf17cbb97dee697c099 Mon Sep 17 00:00:00 2001 From: TheZuTi Date: Thu, 15 Jan 2026 03:04:52 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=D0=B1=D0=BB=D1=8F=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Systems/AdminVerbSystem.Antags.cs | 71 ------------------- .../Renegade/Roles/RenegadeRoleComponent.cs | 2 +- .../Locale/ru-RU/administration/antag.ftl | 10 --- 3 files changed, 1 insertion(+), 82 deletions(-) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 5b9bb7a272c27..597e3496220ff 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -13,7 +13,6 @@ using Robust.Shared.Prototypes; using Robust.Shared.Utility; using Content.Shared.DeadSpace.Events.Roles.Components; -using Content.Shared.Roles.Components; namespace Content.Server.Administration.Systems; @@ -31,13 +30,8 @@ public sealed partial class AdminVerbSystem private static readonly EntProtoId DefaultThiefRule = "Thief"; private static readonly EntProtoId DefaultChangelingRule = "Changeling"; private static readonly EntProtoId ParadoxCloneRuleId = "ParadoxCloneSpawn"; - private static readonly EntProtoId DefaultWizardRule = "Wizard"; private static readonly EntProtoId DefaultUnitologyRule = "Unitology"; // DS14 private static readonly EntProtoId DefaultSpiderTerrorRule = "SpiderTerror"; // DS14 - - private static readonly EntProtoId DragonSpawnRule = "DragonSpawn"; // DS14 - private static readonly EntProtoId SpaceNinjaRule = "NinjaSpawn"; // DS14 - private static readonly EntProtoId RenegadeRule = "RenegadeSpawn"; // DS14 private static readonly ProtoId PirateGearId = "PirateGear"; // All antag verbs have names so invokeverb works. @@ -133,55 +127,6 @@ private void AddAntagVerbs(GetVerbsEvent args) }; args.Verbs.Add(nukeOp); - // DS14-start - - var dragonName = Loc.GetString("admin-verb-text-make-dragon"); - Verb dragon = new() - { - Text = dragonName, - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new("Objects/Weapons/Guns/Projectiles/magic.rsi"), "fireball"), - Act = () => - { - _antag.ForceMakeAntag(targetPlayer, DragonSpawnRule); - }, - Impact = LogImpact.High, - Message = string.Join(": ", dragonName, Loc.GetString("admin-verb-make-dragon")), - }; - args.Verbs.Add(dragon); - - var ninjaName = Loc.GetString("admin-verb-text-make-ninja"); - Verb ninja = new() - { - Text = ninjaName, - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new("Objects/Weapons/Melee/energykatana.rsi"), "icon"), - Act = () => - { - _antag.ForceMakeAntag(targetPlayer, SpaceNinjaRule); - }, - Impact = LogImpact.High, - Message = string.Join(": ", ninjaName, Loc.GetString("admin-verb-make-ninja")), - }; - args.Verbs.Add(ninja); - - var renegadeName = Loc.GetString("admin-verb-text-make-renegade"); - Verb renegade = new() - { - Text = renegadeName, - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new("_DeadSpace/Renegade/bondrewd_helm.rsi"), "icon"), - Act = () => - { - _antag.ForceMakeAntag(targetPlayer, RenegadeRule); - }, - Impact = LogImpact.High, - Message = string.Join(": ", renegadeName, Loc.GetString("admin-verb-make-renegade")), - }; - args.Verbs.Add(renegade); - - //DS14-end - var pirateName = Loc.GetString("admin-verb-text-make-pirate"); Verb pirate = new() { @@ -213,22 +158,6 @@ private void AddAntagVerbs(GetVerbsEvent args) }; args.Verbs.Add(headRev); - var wizardName = Loc.GetString("admin-verb-text-make-wizard"); - Verb wizard = new() - { - Text = wizardName, - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Clothing/Head/Hats/wizard_fake.rsi"), "icon"), - Act = () => - { - // Wizard has no rule components as of writing, but I gotta put something here to satisfy the machine so just make it wizard mind rule :) - _antag.ForceMakeAntag(targetPlayer, DefaultWizardRule); - }, - Impact = LogImpact.High, - Message = string.Join(": ", wizardName, Loc.GetString("admin-verb-make-wizard")), - }; - args.Verbs.Add(wizard); - // DS14-start var uniName = Loc.GetString("admin-verb-text-make-unitolog"); Verb uni = new() diff --git a/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs b/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs index 2e35454dc0fad..f8a44b8abe249 100644 --- a/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs +++ b/Content.Shared/DeadSpace/Renegade/Roles/RenegadeRoleComponent.cs @@ -3,7 +3,7 @@ using Content.Shared.Roles.Components; using Robust.Shared.GameStates; -namespace Content.Shared.Roles.Components; +namespace Content.Shared.DeadSpace.Renegade.Roles; [RegisterComponent, NetworkedComponent] public sealed partial class RenegadeRoleComponent : BaseMindRoleComponent; diff --git a/Resources/Locale/ru-RU/administration/antag.ftl b/Resources/Locale/ru-RU/administration/antag.ftl index 3bbaa6b459043..79da55f0c5427 100644 --- a/Resources/Locale/ru-RU/administration/antag.ftl +++ b/Resources/Locale/ru-RU/administration/antag.ftl @@ -7,7 +7,6 @@ admin-verb-make-pirate = Сделать цель пиратом\капером. admin-verb-make-head-rev = Сделать цель главой революции. admin-verb-make-unitolog = Сделать цель радикальным юнитологом, если ранее юнитологов не было, цель становиться старшим юнитологом. admin-verb-make-paradox-clone = Создать роль призрака парадоксального клона цели. -admin-verb-make-wizard = Сделать цель Магом admin-verb-make-changeling = Сделать цель генокрадом. admin-verb-make-spider-terror = Засунуть яйцо паука ужаса. admin-verb-make-thief = Сделать цель вором. @@ -20,7 +19,6 @@ admin-verb-text-make-paradox-clone = Создать парадоксальног admin-verb-text-make-changeling = Сделать генокрадом (WIP) admin-verb-text-make-nuclear-operative = Сделать ядерным оперативником admin-verb-text-make-pirate = Сделать пиратом -admin-verb-text-make-wizard = Сделать Магом admin-verb-text-make-head-rev = Сделать Главой революции admin-verb-text-make-unitolog = Сделать юнитологом admin-verb-text-make-spider-terror = Сделать пуком ужаса @@ -28,11 +26,3 @@ admin-verb-text-make-thief = Сделать вором admin-verb-text-make-blob = Сделать носителем Блоба admin-verb-text-make-event-role = Ивентовая роль admin-overlay-antag-classic = АНТАГ -#DS14-start -admin-verb-text-make-dragon = Сделать цель Драконом -admin-verb-make-dragon = Сделать Драконом -admin-verb-text-make-ninja = Сделть цель Ниндзей -admin-verb-make-ninja = Сделать Ниндзей -admin-verb-text-make-renegade = Сделать цель Ренегатом -admin-verb-make-renegade = Сделать Ренегатом -#DS14-end \ No newline at end of file From 56be3c480f7b55f06ffe618916619cc3f3414d53 Mon Sep 17 00:00:00 2001 From: TheZuTi Date: Fri, 20 Mar 2026 02:06:07 +0200 Subject: [PATCH 3/3] BLAT --- .../ru-RU/_deadspace/accessories/human-hair.ftl | 1 + .../Mobs/Customization/Markings/human_hair.yml | 7 +++++++ .../Customization/human_hair.rsi/china_tail.png | Bin 0 -> 1121 bytes .../Mobs/Customization/human_hair.rsi/meta.json | 6 +++++- 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/china_tail.png diff --git a/Resources/Locale/ru-RU/_deadspace/accessories/human-hair.ftl b/Resources/Locale/ru-RU/_deadspace/accessories/human-hair.ftl index f5008227d32c8..0765a77375787 100644 --- a/Resources/Locale/ru-RU/_deadspace/accessories/human-hair.ftl +++ b/Resources/Locale/ru-RU/_deadspace/accessories/human-hair.ftl @@ -1,3 +1,4 @@ marking-HumanHairGrandeNoTail = Гранде (без хвостика) marking-HumanHairBraidOld = Плетение (До пола, Старое) marking-HumanHairBraid2Old = Плетение (Высокое, Старое) +marking-HumanHairChinaTail = Китайский хвост \ No newline at end of file diff --git a/Resources/Prototypes/_DeadSpace/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/_DeadSpace/Entities/Mobs/Customization/Markings/human_hair.yml index 04fcdb3170d4e..ebc26586ce835 100644 --- a/Resources/Prototypes/_DeadSpace/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/_DeadSpace/Entities/Mobs/Customization/Markings/human_hair.yml @@ -20,3 +20,10 @@ sprites: - sprite: _DeadSpace/Mobs/Customization/human_hair.rsi state: braid2 +- type: marking + id: HumanHairChinaTail + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: _DeadSpace/Mobs/Customization/human_hair.rsi + state: china_tail \ No newline at end of file diff --git a/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/china_tail.png b/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/china_tail.png new file mode 100644 index 0000000000000000000000000000000000000000..89a71874f4b2040eb2e8c7d0bd8ceaca8e22e81d GIT binary patch literal 1121 zcmV-n1fKheP)Px(8%ab#RCt{2n?G*cIuOP`1~0uU0X%_}N=JB9n**%w@lNngVB{FlUP27;iXa_3 zDSbeIaFITM=M~P#T&*mTyOP#M_yZQudIinL;qZ?*W8gyCwxzD?sBK%i^cmN1Gy6nD zP1Dfh{TIf5fOD=ca?n+b92{qWQ;+UWdHyvC9Jgo0OuUa zvP4l7QO~@@ep!~V)(-Zil;FQ_X&=CI=y6YQFYFbHY>Vv@5wWIAp7$>1=C*A~N{Kwr z(f2(7pznL+c@8Nhwsu0(G{ilwwML%j&{_|X&@@f7{l8*v_8V`lMP1i|8=dEQtnFyB zEQ51y(Be0qhhQwh5zuuVapR3KsH#c;Kvh-37&An|rJ=Y4M<4Lq5denhj zLTIgFj6q%3ClgIw*TNVBt@UP;P*qieCtQXb&Rk+YY7S6J4J*KyEX$yjig{c#Qp#ET zV~2zgZ708w?5V?l z8M@{GtnSQuk&VmFaUBoc{4B9TZW z{v7;d=I-VQ~`lL*F?EHa@>{7_u2>e-+c|NZPiJT*Lk1chF;Bf_;@^?Wv=_a z4=UMNi~u2o;3`a?*OV$BYbnbT#+dasLZOCl!JLNGHbPmJ?NSK27I~h(SWPx&(E&@# zh(F=%ktB_=w@TfT|He0W4_|M&68O)aJClehpk9msuFadn7&8cR&TZm^wrz=ZaM}DE zp>=~%^#Lz=luKp#dW)gpZ*r!}b(b_=#h(8WvIa3lo52yVXCdUZtgiJf^*$4-IVb|& nQtvZwQF9`ZNF)-8#IF1gm`jk0E3|MJ00000NkvXXu0mjfc4Zae literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/meta.json b/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/meta.json index 7e71cc4edb000..72d4917593927 100644 --- a/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/meta.json +++ b/Resources/Textures/_DeadSpace/Mobs/Customization/human_hair.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "grandenotail taken from Skyrat-tg at https://github.com/Skyrat-SS13/Skyrat-tg/commit/ad654e76b4c5dd3972cd2a07eb2d4f9658965807 resprite by aywei11. (discord) for Space Station 14 server Мёртвый Космос, braid and braid2 taken from https://github.com/dead-space-server/space-station-14-fobos/blob/e0a4735fe2d1f727e83f250f867d51465b725fe5/Resources/Textures/Mob/human_hair.rsi", + "copyright": "grandenotail taken from Skyrat-tg at https://github.com/Skyrat-SS13/Skyrat-tg/commit/ad654e76b4c5dd3972cd2a07eb2d4f9658965807 resprite by aywei11. (discord) for Space Station 14 server Мёртвый Космос, braid and braid2 taken from https://github.com/dead-space-server/space-station-14-fobos/blob/e0a4735fe2d1f727e83f250f867d51465b725fe5/Resources/Textures/Mob/human_hair.rsi. china_tail Created by hq._.dishka (discord) for Space Station 14 server Мёртвый Космос", "size": { "x": 32, "y": 32 @@ -18,6 +18,10 @@ { "name": "braid2", "directions": 4 + }, + { + "name": "china_tail", + "directions": 4 } ] }