From caa79390fed2c871ca5b282fe94d74cf2e502378 Mon Sep 17 00:00:00 2001 From: Darki255 Date: Fri, 9 Aug 2024 19:41:29 +0300 Subject: [PATCH] =?UTF-8?q?Revert=20"=D1=80=D0=B5=D0=B2=D1=8C=D1=8E"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5b84e2a2841ace064aea8144696e5d4466ec466a, reversing changes made to f053392eabdc00906652b93e0873b299f08a9c2c. --- .../SizeAttribute/SizeAttributeComponent.cs | 14 + .../ADT/SizeAttribute/SizeAttributeSystem.cs | 94 +++++ .../SizeAttributeWhitelistComponent.cs | 2 +- .../WoundLicking/WoundLickingComponent.cs | 83 ++++ .../WoundLicking/WoundLickingSystem.cs | 206 ++++++++++ .../Speech/Components/NyaAccentComponent.cs | 8 + .../Speech/Components/NyaAccentSystem.cs | 123 ++++++ .../ADT/Cloning/ITransferredByCloning.cs | 8 + .../ADT/Item/PseudoItemComponent.cs | 19 + .../WoundLicking/WoundLickingEvents.cs | 14 + .../Entities/Markers/Spawners/humanoid.ftl | 2 + .../ADT/prototypes/Body/Organs/kobalt.ftl | 2 + .../ADT/prototypes/Body/Parts/kobalt.ftl | 22 + .../Catalog/Fills/Crates/engineering.ftl | 2 + .../Mobs/Customization/Markings/kobalt.ftl | 77 ++++ .../Entities/Mobs/Player/kobalt.ftl | 2 + .../Entities/Mobs/Species/kobalt.ftl | 5 + .../Circuitboards/Machine/production.ftl | 2 + .../Structures/Power/industrialSMES.ftl | 5 + .../ADT/prototypes/Research/industrial.ftl | 1 + .../Locale/ru-RU/ADT/traits/categories.ftl | 1 + Resources/Locale/ru-RU/ADT/traits/neutral.ftl | 8 +- .../ru-RU/starshine/actions/lick-wounds.ftl | 16 + .../Prototypes/ADT/Body/Organs/felinid.yml | 13 + .../Prototypes/ADT/Body/Organs/kobalt.yml | 4 + .../Prototypes/ADT/Body/Parts/kobalt.yml | 146 +++++++ .../ADT/Body/Prototypes/felinid.yml | 49 +++ .../Prototypes/ADT/Body/Prototypes/kobalt.yml | 49 +++ .../ADT/Catalog/Fills/Crates/engines.yml | 7 + .../Prototypes/ADT/Damage/modifier_sets.yml | 20 +- .../Mobs/Customization/Markings/kobalt.yml | 379 ++++++++++++++++++ .../ADT/Entities/Mobs/Player/Drask.yml | 10 +- .../ADT/Entities/Mobs/Player/demon.yml | 10 +- .../ADT/Entities/Mobs/Player/felinid.yml | 87 ++++ .../ADT/Entities/Mobs/Player/humanoid.yml | 31 +- .../ADT/Entities/Mobs/Player/kobalt.yml | 21 + .../ADT/Entities/Mobs/Species/felinid.yml | 177 ++++++++ .../ADT/Entities/Mobs/Species/kobalt.yml | 55 +++ .../Circuitboards/Machine/production.yml | 15 + .../Structures/Power/industrialSMES.yml | 39 ++ .../ADT/Recipes/Lathes/electronics.yml | 9 + .../Prototypes/ADT/Research/industrial.yml | 11 + .../ADT/SoundCollections/emotes.yml | 37 +- .../ADT/SoundCollections/screams.yml | 11 +- Resources/Prototypes/ADT/Species/felinid.yml | 38 ++ Resources/Prototypes/ADT/Species/kobalt.yml | 141 +++++++ .../Prototypes/ADT/Traits/categories.yml | 4 + Resources/Prototypes/ADT/Traits/neutral.yml | 31 ++ .../ADT/Voice/speech_emote_sounds.yml | 108 ++++- Resources/Prototypes/Actions/felinid.yml | 12 + .../Entities/Structures/Machines/lathe.yml | 1 + .../Power/industrial_smes.rsi/meta.json | 74 ++++ .../Power/industrial_smes.rsi/smes-oc0.png | Bin 0 -> 114 bytes .../Power/industrial_smes.rsi/smes-oc1.png | Bin 0 -> 145 bytes .../Power/industrial_smes.rsi/smes-oc2.png | Bin 0 -> 145 bytes .../Power/industrial_smes.rsi/smes-og1.png | Bin 0 -> 101 bytes .../Power/industrial_smes.rsi/smes-og2.png | Bin 0 -> 155 bytes .../Power/industrial_smes.rsi/smes-og3.png | Bin 0 -> 160 bytes .../Power/industrial_smes.rsi/smes-og4.png | Bin 0 -> 194 bytes .../Power/industrial_smes.rsi/smes-og5.png | Bin 0 -> 200 bytes .../Power/industrial_smes.rsi/smes-op0.png | Bin 0 -> 106 bytes .../Power/industrial_smes.rsi/smes-op1.png | Bin 0 -> 143 bytes .../Power/industrial_smes.rsi/smes-op2.png | Bin 0 -> 111 bytes .../Power/industrial_smes.rsi/smes-open.png | Bin 0 -> 1350 bytes .../Power/industrial_smes.rsi/smes.png | Bin 0 -> 1269 bytes 65 files changed, 2256 insertions(+), 49 deletions(-) create mode 100644 Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs create mode 100644 Content.Server/ADT/SizeAttribute/SizeAttributeSystem.cs create mode 100644 Content.Server/Abilities/WoundLicking/WoundLickingComponent.cs create mode 100644 Content.Server/Abilities/WoundLicking/WoundLickingSystem.cs create mode 100644 Content.Server/Speech/Components/NyaAccentComponent.cs create mode 100644 Content.Server/Speech/Components/NyaAccentSystem.cs create mode 100644 Content.Shared/ADT/Cloning/ITransferredByCloning.cs create mode 100644 Content.Shared/ADT/Item/PseudoItemComponent.cs create mode 100644 Content.Shared/WoundLicking/WoundLickingEvents.cs create mode 100644 Resources/Locale/ru-RU/ADT/Entities/Markers/Spawners/humanoid.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/kobalt.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Markings/kobalt.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/kobalt.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/kobalt.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Power/industrialSMES.ftl create mode 100644 Resources/Locale/ru-RU/ADT/prototypes/Research/industrial.ftl create mode 100644 Resources/Locale/ru-RU/ADT/traits/categories.ftl create mode 100644 Resources/Locale/ru-RU/starshine/actions/lick-wounds.ftl create mode 100644 Resources/Prototypes/ADT/Body/Organs/felinid.yml create mode 100644 Resources/Prototypes/ADT/Body/Organs/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Body/Parts/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Body/Prototypes/felinid.yml create mode 100644 Resources/Prototypes/ADT/Body/Prototypes/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Catalog/Fills/Crates/engines.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Player/felinid.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Player/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Species/felinid.yml create mode 100644 Resources/Prototypes/ADT/Entities/Mobs/Species/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml create mode 100644 Resources/Prototypes/ADT/Entities/Structures/Power/industrialSMES.yml create mode 100644 Resources/Prototypes/ADT/Research/industrial.yml create mode 100644 Resources/Prototypes/ADT/Species/felinid.yml create mode 100644 Resources/Prototypes/ADT/Species/kobalt.yml create mode 100644 Resources/Prototypes/ADT/Traits/categories.yml create mode 100644 Resources/Prototypes/ADT/Traits/neutral.yml create mode 100644 Resources/Prototypes/Actions/felinid.yml create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/meta.json create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc0.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc1.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc2.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og1.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og2.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og3.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og4.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og5.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op0.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op1.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op2.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-open.png create mode 100644 Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes.png diff --git a/Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs b/Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs new file mode 100644 index 0000000000..d617a633a3 --- /dev/null +++ b/Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared.Cloning; + +namespace Content.Server.ADT.SizeAttribute +{ + [RegisterComponent] + public sealed partial class SizeAttributeComponent : Component, ITransferredByCloning + { + [DataField("short")] + public bool Short = false; + + [DataField("tall")] + public bool Tall = false; + } +} \ No newline at end of file diff --git a/Content.Server/ADT/SizeAttribute/SizeAttributeSystem.cs b/Content.Server/ADT/SizeAttribute/SizeAttributeSystem.cs new file mode 100644 index 0000000000..ac64100bb5 --- /dev/null +++ b/Content.Server/ADT/SizeAttribute/SizeAttributeSystem.cs @@ -0,0 +1,94 @@ +using System.Numerics; +using Robust.Server.GameObjects; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Collision.Shapes; +using Robust.Shared.Physics.Systems; +using Content.Shared.Item.PseudoItem; + +namespace Content.Server.ADT.SizeAttribute +{ + public sealed class SizeAttributeSystem : EntitySystem + { + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + [Dependency] private readonly AppearanceSystem _appearance = default!; + [Dependency] private readonly FixtureSystem _fixtures = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnComponentInit); + } + + private void OnComponentInit(EntityUid uid, SizeAttributeComponent component, ComponentInit args) + { + if (!TryComp(uid, out var whitelist)) + return; + + if (whitelist.Tall && component.Tall) + { + Scale(uid, component, whitelist.TallScale, whitelist.TallDensity, whitelist.TallCosmeticOnly); + PseudoItem(uid, component, whitelist.TallPseudoItem); + } + else if (whitelist.Short && component.Short) + { + Scale(uid, component, whitelist.ShortScale, whitelist.ShortDensity, whitelist.ShortCosmeticOnly); + PseudoItem(uid, component, whitelist.ShortPseudoItem); + } + } + + private void PseudoItem(EntityUid uid, SizeAttributeComponent component, bool active) + { + if (active) + { + if (TryComp(uid, out var pseudoI)) + return; + + _entityManager.AddComponent(uid); + } + else + { + if (!TryComp(uid, out var pseudoI)) + return; + + _entityManager.RemoveComponent(uid); + } + } + + private void Scale(EntityUid uid, SizeAttributeComponent component, float scale, float density, bool cosmeticOnly) + { + if (scale <= 0f && density <= 0f) + return; + + _entityManager.EnsureComponent(uid); + + var appearanceComponent = _entityManager.EnsureComponent(uid); + if (!_appearance.TryGetData(uid, ScaleVisuals.Scale, out var oldScale, appearanceComponent)) + oldScale = Vector2.One; + + _appearance.SetData(uid, ScaleVisuals.Scale, oldScale * scale, appearanceComponent); + + if (!cosmeticOnly && _entityManager.TryGetComponent(uid, out FixturesComponent? manager)) + { + foreach (var (id, fixture) in manager.Fixtures) + { + if (!fixture.Hard || fixture.Density <= 1f) + continue; // This will skip the flammable fixture and any other fixture that is not supposed to contribute to mass + + switch (fixture.Shape) + { + case PhysShapeCircle circle: + _physics.SetPositionRadius(uid, id, fixture, circle, circle.Position * scale, circle.Radius * scale, manager); + break; + default: + throw new NotImplementedException(); + } + + _physics.SetDensity(uid, id, fixture, density); + } + } + } + } + + [ByRefEvent] + public readonly record struct ScaleEntityEvent(EntityUid Uid) { } +} \ No newline at end of file diff --git a/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs b/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs index 3816ce8b7a..fdf8b813d0 100644 --- a/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs +++ b/Content.Server/ADT/SizeAttribute/SizeAttributeWhitelistComponent.cs @@ -1,6 +1,6 @@ using Robust.Shared.Physics.Collision.Shapes; -namespace Content.Server.SizeAttribute +namespace Content.Server.ADT.SizeAttribute { [RegisterComponent] public sealed partial class SizeAttributeWhitelistComponent : Component diff --git a/Content.Server/Abilities/WoundLicking/WoundLickingComponent.cs b/Content.Server/Abilities/WoundLicking/WoundLickingComponent.cs new file mode 100644 index 0000000000..2baf379229 --- /dev/null +++ b/Content.Server/Abilities/WoundLicking/WoundLickingComponent.cs @@ -0,0 +1,83 @@ +using System.Threading; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Felinid +{ + [RegisterComponent] + [Access(typeof(WoundLickingSystem))] + public sealed partial class WoundLickingComponent : Component + { + [DataField("woundLickingAction", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string? WoundLickingAction = "ActionWoundLicking"; + + [DataField("woundLickingActionEntity")] + public EntityUid? WoundLickingActionEntity; + + /// + /// How frequent wound-licking will cause diseases. Scales with amount of reduced bleeding + /// + [DataField("diseaseChance")] + [ViewVariables(VVAccess.ReadWrite)] + public float DiseaseChance { get; set; } = 0.25f; + + /// + /// Max possible bleeding reduce. Human max bleeding is 20f, many weapons deals near 15f bleeding + /// + [DataField("maxHeal")] + [ViewVariables(VVAccess.ReadWrite)] + public float MaxHeal { get; set; } = 15f; + + /// + /// How long it requires to lick wounds + /// + [DataField("delay")] + [ViewVariables(VVAccess.ReadWrite)] + public float Delay { get; set; } = 3f; + + /// + /// If true, then wound-licking can be applied only on yourself + /// + [DataField("canApplyOnSelf")] + [ViewVariables(VVAccess.ReadWrite)] + public bool CanApplyOnSelf { get; set; } = true; + + /// + /// If true, then wound-licking can be applied only on other entities + /// + [DataField("canApplyOnOther")] + [ViewVariables(VVAccess.ReadWrite)] + public bool CanApplyOnOther { get; set; } = false; + + + + /// + /// Which diseases can be caused because of wound-licking + /// + [DataField("possibleDiseases")] + public List PossibleDiseases { get; set; } = new() + { + "Plague", + "BirdFlew", + "SpaceFlu", + "SpaceCold", + "VentCough" + }; + + /// + /// If Target's bloodstream don't use one of these reagents, then ability can't be performed on it. + /// + [DataField("reagentWhitelist")] + public List ReagentWhitelist { get; set; } = new() + { + "Blood", + "Slime" + }; + + /// + /// Token for interrupting a do-after action. If not null, implies component is + /// currently "in use". + /// + public CancellationTokenSource? CancelToken; + } +} diff --git a/Content.Server/Abilities/WoundLicking/WoundLickingSystem.cs b/Content.Server/Abilities/WoundLicking/WoundLickingSystem.cs new file mode 100644 index 0000000000..bb3ebcfab5 --- /dev/null +++ b/Content.Server/Abilities/WoundLicking/WoundLickingSystem.cs @@ -0,0 +1,206 @@ +//using Content.Server.Disease.Components; +//using Content.Server.Disease; + +using Content.Server.Body.Components; +using Content.Server.Body.Systems; +using Content.Server.Popups; +using Content.Shared.DoAfter; +using Content.Shared.Felinid; +using Content.Shared.IdentityManagement; +using Content.Shared.Actions; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs; +using Robust.Shared.Player; +using Robust.Shared.Random; +using System.Linq; +/// taken from https://github.com/Workbench-Team/space-station-14/tree/arumoon-server +namespace Content.Server.Felinid +{ + /// + /// "Lick your or other felinid wounds. Reduce bleeding, but unsanitary and can cause diseases." + /// + public sealed partial class WoundLickingSystem : EntitySystem + { + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; +// [Dependency] private readonly DiseaseSystem _disease = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnActionPerform); + } + + private void OnInit(EntityUid uid, WoundLickingComponent comp, ComponentInit args) + { + _actionsSystem.AddAction(uid, ref comp.WoundLickingActionEntity, comp.WoundLickingAction); + } + + private void OnRemove(EntityUid uid, WoundLickingComponent comp, ComponentRemove args) + { + _actionsSystem.RemoveAction(uid, comp.WoundLickingActionEntity); + } + + protected void OnActionPerform(WoundLickingActionEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + var performer = args.Performer; + var target = args.Target; + + // Ensure components + if ( + !TryComp(performer, out var woundLicking) || + !TryComp(target, out var bloodstream) || + !TryComp(target, out var mobState) + ) + return; + + // Check target + if (mobState.CurrentState == MobState.Dead) + return; + + // Check "CanApplyOnSelf" field + if (performer == target & !woundLicking.CanApplyOnSelf) + { + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-impossible"), + performer, Filter.Entities(performer), true); + return; + } + + // Check "CanApplyOnOther" field + if (performer != target & !woundLicking.CanApplyOnOther) + { + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-other-impossible"), + performer, Filter.Entities(performer), true); + return; + } + + if (woundLicking.ReagentWhitelist.Any() && + !woundLicking.ReagentWhitelist.Contains(bloodstream.BloodReagent) + ) return; + + // Check bloodstream + if (bloodstream.BleedAmount == 0) + { + if (performer == target) + { + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-no-wounds"), + performer, performer); + return; + } + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-performer-no-wounds", ("target", target)), + performer, performer); + return; + } + + // Popup + + + if (target == performer) + { + // Applied on yourself + var performerIdentity = Identity.Entity(performer, EntityManager); + var otherFilter = Filter.Pvs(performer, entityManager: EntityManager) + .RemoveWhereAttachedEntity(e => e == performer); + + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-begin"), + performer, performer); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-other-begin", ("performer", performerIdentity)), + performer, otherFilter, true); + } + else + { + // Applied on someone else + var targetIdentity = Identity.Entity(target, EntityManager); + var performerIdentity = Identity.Entity(performer, EntityManager); + var otherFilter = Filter.Pvs(performer, entityManager: EntityManager) + .RemoveWhereAttachedEntity(e => e == performer || e == target); + + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-performer-begin", ("target", targetIdentity)), + performer, performer); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-target-begin", ("performer", performerIdentity)), + target, target); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-other-begin", ("performer", performerIdentity), ("target", targetIdentity)), + performer, otherFilter, true); + } + + // DoAfter + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, performer, woundLicking.Delay, new WoundLickingDoAfterEvent(), performer, target: target) + { + BreakOnMove = true, + BreakOnDamage = true + }); + } + + private void OnDoAfter(EntityUid uid, WoundLickingComponent comp, WoundLickingDoAfterEvent args) + { + if (args.Cancelled || args.Handled) + { + return; + } + if (TryComp(args.Args.Target, out var bloodstream)) + LickWound(uid, args.Args.Target.Value, bloodstream, comp); + } + + private void LickWound(EntityUid performer, EntityUid target, BloodstreamComponent bloodstream, WoundLickingComponent comp) + { + // The more you heal, the more is disease chance + // For 15 maxHeal and 50% diseaseChance + // Heal 15 > chance 50% + // Heal 7.5 > chance 25% + // Heal 0 > chance 0% + + var healed = bloodstream.BleedAmount; + if (comp.MaxHeal - bloodstream.BleedAmount < 0) healed = comp.MaxHeal; +/* var chance = comp.DiseaseChance * (1 / comp.MaxHeal * healed); + + if (comp.DiseaseChance > 0f & comp.PossibleDiseases.Any()) + { + if (TryComp(target, out var disCarrier)) + { + var diseaseName = comp.PossibleDiseases[_random.Next(0, comp.PossibleDiseases.Count)]; + _disease.TryInfect(disCarrier, diseaseName, chance); + } + } +*/ + _bloodstreamSystem.TryModifyBleedAmount(target, -healed, bloodstream); + + if (performer == target) + { + // Applied on yourself + var performerIdentity = Identity.Entity(performer, EntityManager); + var otherFilter = Filter.Pvs(performer, entityManager: EntityManager) + .RemoveWhereAttachedEntity(e => e == performer); + + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-success"), + performer, performer); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-yourself-other-success", ("performer", performerIdentity)), + performer, otherFilter, true); + } + else + { + // Applied on someone else + var targetIdentity = Identity.Entity(target, EntityManager); + var performerIdentity = Identity.Entity(performer, EntityManager); + var otherFilter = Filter.Pvs(performer, entityManager: EntityManager) + .RemoveWhereAttachedEntity(e => e == performer || e == target); + + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-performer-success", ("target", targetIdentity)), + performer, performer); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-target-success", ("performer", performerIdentity)), + target, target); + _popupSystem.PopupEntity(Loc.GetString("lick-wounds-other-success", ("performer", performerIdentity), ("target", targetIdentity)), + performer, otherFilter, true); + } + } + } +} diff --git a/Content.Server/Speech/Components/NyaAccentComponent.cs b/Content.Server/Speech/Components/NyaAccentComponent.cs new file mode 100644 index 0000000000..57652c257e --- /dev/null +++ b/Content.Server/Speech/Components/NyaAccentComponent.cs @@ -0,0 +1,8 @@ +// taken from pr: Workbench-Team/space-station-14#1 +namespace Content.Server.Speech.Components +{ + [RegisterComponent] + public sealed partial class NyaAccentComponent : Component + { + } +} diff --git a/Content.Server/Speech/Components/NyaAccentSystem.cs b/Content.Server/Speech/Components/NyaAccentSystem.cs new file mode 100644 index 0000000000..c2e950ac09 --- /dev/null +++ b/Content.Server/Speech/Components/NyaAccentSystem.cs @@ -0,0 +1,123 @@ +using System.Text.RegularExpressions; +using Content.Server.Speech.Components; +using Robust.Shared.Random; +// taken from pr: https://github.com/Workbench-Team/space-station-14/pull/1 +namespace Content.Server.Speech.EntitySystems; + +public sealed class NyaAccentSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + + private static readonly Dictionary DirectReplacements = new() { + {"иди нахуй", "хиииссс" }, + {"иди нах", "хиииссс" }, + + {"дибилы", "баки" }, + {"дибил", "бака" }, + + {"ебланище", "бакище" }, + {"ебланы", "баки" }, + {"еблан", "бака" }, + + {"хуй", "буй" }, // :skull: + {"хуе", "буе" }, + {"хуи", "буи" }, + + {"блять", "блин" }, + {"бля", "блин" }, + + {"сук", "фуг" }, + + {"внимател", "внямател"}, //внямательно + {"маги", "мяуги"}, //мяугия + {"замечател", "замурчател"}, //замурчательно + + {"синдикат", "синдикэт"}, + {"нано", "ньяно"}, //ньянотразен + {"наркотики", "кошачья мята"}, + + {"наркотик", "кошачья мята"}, + {"каргон", "кэтгон"}, // каргония + {"каргония", "кэтгония"} + }; + + private static readonly IReadOnlyList Ending = new List { + "ня", + "мяу", + "мевп", + "мев", + "мррр" + }.AsReadOnly(); + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + public string Accentuate(string message) { + var final_msg = ""; + + // Sentence ending + var sentences = AccentSystem.SentenceRegex.Split(message); + foreach (var s in sentences) + { + var new_s = s; + + if (!string.IsNullOrWhiteSpace(new_s) && _random.Prob(0.5f)) + { + // Logger.DebugS("nya", $"SENTENCE: {new_s}"); + + string last_sym = new_s.Substring(new_s.Length-1); + string punct_mark = ""; + string insert = _random.Pick(Ending); + + // Checking end of the sentence to spaces and punctuation marks + if(Regex.Matches(last_sym, "[!?.]").Count > 0) + { + punct_mark = last_sym; + new_s = new_s.Remove(new_s.Length-1); + } + + // Add comma if "s" is real sentence + if (!new_s.EndsWith(' ')) { + insert = " " + insert; + if (new_s.Length > 0 && char.IsLetterOrDigit(new_s, new_s.Length-1)) + { + insert = "," + insert; + } + } + + // Insert ending word + new_s += insert + punct_mark; + } + final_msg += new_s; + } + + // Direct replacements + foreach (var (first, replace) in DirectReplacements) + { + final_msg = final_msg.Replace(first.ToUpper(), replace.ToUpper()); + } + foreach (var (first, replace) in DirectReplacements) + { + final_msg = final_msg.Replace(first, replace, true, null); + } + + // Trimming and uppering first char (Because it can be replaced with lower char) + final_msg = final_msg.Trim(); + final_msg = char.ToUpper(final_msg[0]) + final_msg.Substring(1); + + return final_msg; + } + + private void OnAccent(EntityUid uid, NyaAccentComponent component, AccentGetEvent args) + { + args.Message = Accentuate(args.Message); + } +} + +// |\__/,| (`\ +// |_ _ |.--.) ) +// ( T ) / +// (((^_(((/(((_> diff --git a/Content.Shared/ADT/Cloning/ITransferredByCloning.cs b/Content.Shared/ADT/Cloning/ITransferredByCloning.cs new file mode 100644 index 0000000000..31deaff501 --- /dev/null +++ b/Content.Shared/ADT/Cloning/ITransferredByCloning.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Cloning; + +/// +/// Indicates that this Component should be transferred to the new entity when the entity is cloned (for example, using a cloner) +/// +public interface ITransferredByCloning +{ +} \ No newline at end of file diff --git a/Content.Shared/ADT/Item/PseudoItemComponent.cs b/Content.Shared/ADT/Item/PseudoItemComponent.cs new file mode 100644 index 0000000000..5190e3a362 --- /dev/null +++ b/Content.Shared/ADT/Item/PseudoItemComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Cloning; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Item.PseudoItem; +/// +/// For entities that behave like an item under certain conditions, +/// but not under most conditions. +/// +[RegisterComponent] +public sealed partial class PseudoItemComponent : Component, ITransferredByCloning +{ + [DataField("size", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Size = "Huge"; + + public bool Active = false; + + [DataField] + public EntityUid? SleepAction; +} \ No newline at end of file diff --git a/Content.Shared/WoundLicking/WoundLickingEvents.cs b/Content.Shared/WoundLicking/WoundLickingEvents.cs new file mode 100644 index 0000000000..20ab62f83c --- /dev/null +++ b/Content.Shared/WoundLicking/WoundLickingEvents.cs @@ -0,0 +1,14 @@ +using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Felinid; + +[Serializable, NetSerializable] +public sealed partial class WoundLickingDoAfterEvent : SimpleDoAfterEvent +{ +} + +public sealed partial class WoundLickingActionEvent : EntityTargetActionEvent +{ +} diff --git a/Resources/Locale/ru-RU/ADT/Entities/Markers/Spawners/humanoid.ftl b/Resources/Locale/ru-RU/ADT/Entities/Markers/Spawners/humanoid.ftl new file mode 100644 index 0000000000..934717a1e8 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/Entities/Markers/Spawners/humanoid.ftl @@ -0,0 +1,2 @@ +ent-ADTRandomHumanoidSpawnerCBURNUnit = майор РХБЗЗ + .desc = { "" } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl new file mode 100644 index 0000000000..c77297f630 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl @@ -0,0 +1,2 @@ +ent-OrganKoboltStomach = { ent-OrganAnimalStomach } + .desc = { ent-OrganAnimalStomach.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/kobalt.ftl new file mode 100644 index 0000000000..2f1757accf --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Body/Parts/kobalt.ftl @@ -0,0 +1,22 @@ +ent-PartKobolt = часть тела кобольда + .desc = { ent-BaseItem.desc } +ent-TorsoKobolt = торс кобольда + .desc = { ent-PartKobolt.desc } +ent-HeadKobolt = голова кобольда + .desc = { ent-PartKobolt.desc } +ent-LeftArmKobolt = левая рука кобольда + .desc = { ent-PartKobolt.desc } +ent-RightArmKobolt = правая рука кобольда + .desc = { ent-PartKobolt.desc } +ent-LeftHandKobolt = левая кисть кобольда + .desc = { ent-PartKobolt.desc } +ent-RightHandKobolt = правая кисть кобольда + .desc = { ent-PartKobolt.desc } +ent-LeftLegKobolt = левая нога кобольда + .desc = { ent-PartKobolt.desc } +ent-RightLegKobolt = правая нога кобольда + .desc = { ent-PartKobolt.desc } +ent-LeftFootKobolt = левая стопа кобольда + .desc = { ent-PartKobolt.desc } +ent-RightFootKobolt = правая стопа кобольда + .desc = { ent-PartKobolt.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Catalog/Fills/Crates/engineering.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Catalog/Fills/Crates/engineering.ftl index e51e3608c0..b97144b3c2 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Catalog/Fills/Crates/engineering.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Catalog/Fills/Crates/engineering.ftl @@ -2,3 +2,5 @@ ent-ADTCrateRPDAmmo = ящик консервированной материи .desc = Содержит 3 консервированных картриджа для работы РРТ. ent-ADTCrateRPD = ящик РРТ .desc = Ящик, содержащий один ручной раздатчик труб. +ent-CrateEngineeringIndustrialSMES = Ящик с индустриальным СМЭСом + .desc = Ящик, содержащий инустриальный СМЭС. diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Markings/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Markings/kobalt.ftl new file mode 100644 index 0000000000..1e433a2b41 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Customization/Markings/kobalt.ftl @@ -0,0 +1,77 @@ +marking-KoboltFrillsShort-frills_short = Кобольд, воротник (Короткий) +marking-KoboltFrillsShort = Кобольд, воротник (Короткий) +marking-KoboltFrillsSimple-frills_simple = Кобольд, воротник (Простой) +marking-KoboltFrillsSimple = Кобольд, воротник (Простой) +marking-KoboltFrillsAquatic-frills_aquatic = Кобольд, воротник (Водный) +marking-KoboltFrillsAquatic = Кобольд, воротник (Водный) +marking-KoboltHornsAngler-horns_angler = Кобольд, рожки (Рыболов) +marking-KoboltHornsAngler = Кобольд, рожки (Рыболов) +marking-KoboltHornsCurled-horns_curled = Кобольд, рожки (Завитые) +marking-KoboltHornsCurled = Кобольд, рожки (Завитые) +marking-KoboltHornsRam-horns_ram = Кобольд, рожки (Бараньи) +marking-KoboltHornsRam = Кобольд, рожки (Бараньи) +marking-KoboltHornsShort-horns_short = Кобольд, рожки (Короткие) +marking-KoboltHornsShort = Кобольд, рожки (Короткие) +marking-KoboltHornsSimple-horns_simple = Кобольд, рожки +marking-KoboltHornsSimple = Кобольд, рожки +marking-KoboltTailSmooth-tail_smooth_primary = Кобольд, хвост +marking-KoboltTailSmooth-tail_smooth_secondary = Оттенок +marking-KoboltTailSmooth = Кобольд, хвост (Гладкий) +marking-KoboltTailLarge-tail_large = Кобольд, хвост (Большой) +marking-KoboltTailLarge = Кобольд, хвост (Большой) +marking-KoboltTailSpikes-tail_spikes = Кобольд, хвост (Шипастый) +marking-KoboltTailSpikes = Кобольд, хвост (Шипастый) +marking-KoboltTailLTiger-tail_ltiger = Кобольд, хвост (Светлые тигриные полоски) +marking-KoboltTailLTiger = Кобольд, хвост (Светлые тигриные полоски) +marking-KoboltTailDTiger-tail_dtiger = Кобольд, хвост (Тёмные тигриные полоски) +marking-KoboltTailDTiger = Кобольд, хвост (Тёмные тигриные полоски) +marking-KoboltSnoutRound-snout_round = Кобольд, морда (Круглая) +marking-KoboltSnoutRound = Кобольд, морда (Круглая) +marking-KoboltSnoutSharp-snout_sharp = Кобольд, морда (Заострёная) +marking-KoboltSnoutSharp = Кобольд, морда (Заострёная) +marking-KoboltChestTiger-body_tiger = Кобольд, грудь (Тигр) +marking-KoboltChestTiger = Кобольд, грудь (Тигр) +marking-KoboltHeadTiger-head_tiger = Кобольд, голова (Тигр) +marking-KoboltHeadTiger = Кобольд, голова (Тигр) +marking-KoboltLArmTiger-l_arm_tiger = Кобольд, левая рука (Тигр) +marking-KoboltLArmTiger = Кобольд, левая рука (Тигр) +marking-KoboltLLegTiger-l_leg_tiger = Кобольд, левая нога (Тигр) +marking-KoboltLLegTiger = Кобольд, левая нога (Тигр) +marking-KoboltRArmTiger-r_arm_tiger = Кобольд, правая рука (Тигр) +marking-KoboltRArmTiger = Кобольд, правая рука (Тигр) +marking-KoboltRLegTiger-r_leg_tiger = Кобольд, правая нога (Тигр) +marking-KoboltRLegTiger = Кобольд, правая нога (Тигр) +marking-KoboltFrillsDivinity-frills_divinity = Кобольд, воротник (Божественный) +marking-KoboltFrillsDivinity = Кобольд, воротник (Божественный) +marking-KoboltFrillsBig-frills_big = Кобольд, воротник (Большой) +marking-KoboltFrillsBig = Кобольд, воротник (Большой) +marking-KoboltFrillsNeckfull-frills_neckfull = Кобольд, воротник (Полношейный) +marking-KoboltFrillsNeckfull = Кобольд, воротник (Полношейный) +marking-KoboltHornsDouble-horns_double = Кобольд, рожки (Двойные) +marking-KoboltHornsDouble = Кобольд, рожки (Двойные) +marking-KoboltFrillsAxolotl-frills_axolotl = Кобольд, воротник (Аксолотль) +marking-KoboltFrillsHood-frills_hood_primary = Внешний капюшон +marking-KoboltFrillsHood-frills_hood_secondary = Внутренний капюшона +marking-KoboltFrillsAxolotl = Кобольд, воротник (Аксолотль) +marking-KoboltFrillsHood = Кобольд, воротник (Капюшон) +marking-KoboltHornsArgali-horns_argali = Кобольд, рожки (Аргали) +marking-KoboltHornsArgali = Кобольд, рожки (Аргали) +marking-KoboltHornsAyrshire-horns_ayrshire = Кобольд, рожки (Айршир) +marking-KoboltHornsAyrshire = Кобольд, рожки (Айршир) +marking-KoboltHornsMyrsore-horns_myrsore = Кобольд, рожки (Мирзора) +marking-KoboltHornsMyrsore = Кобольд, рожки (Мирзора) +marking-KoboltHornsBighorn-horns_bighorn = Кобольд, рожки (Толсторог) +marking-KoboltHornsBighorn = Кобольд, рожки (Толсторог) +marking-KoboltHornsDemonic-horns_demonic = Кобольд, рожки (Демонические) +marking-KoboltHornsDemonic = Кобольд, рожки (Демонические) +marking-KoboltHornsKoboldEars-horns_kobold_ears = Кобольд, уши (Кобольд) +marking-KoboltHornsKoboldEars = Кобольд, уши (Кобольд) +marking-KoboltHornsFloppyKoboldEars-horns_floppy_kobold_ears = Кобольд, уши (Вислоухий кобольд) +marking-KoboltHornsFloppyKoboldEars = Кобольд, уши (Вислоухий кобольд) +marking-KoboltChestUnderbelly-body_underbelly = Кобольд, грудь (Подбрюшье) +marking-KoboltChestUnderbelly = Кобольд, грудь (Подбрюшье) +marking-KoboltChestBackspikes-body_backspikes = Кобольд, грудь, шипы на спине (Четыре) +marking-KoboltChestBackspikes = Кобольд, грудь, шипы на спине (Четыре) +marking-KoboltSnoutSplotch = Кобольд, морда лица (Пятно) +marking-KoboltSnoutSplotch-snout_splotch_primary = Морда +marking-KoboltSnoutSplotch-snout_splotch_secondary = Нос diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/kobalt.ftl new file mode 100644 index 0000000000..e3505ac751 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Player/kobalt.ftl @@ -0,0 +1,2 @@ +ent-MobKobolt = Урист МакКобольд + .desc = { ent-BaseMobKobolt.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/kobalt.ftl new file mode 100644 index 0000000000..cac22713d1 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Mobs/Species/kobalt.ftl @@ -0,0 +1,5 @@ +ent-BaseMobKobolt = Урист Мак + .desc = { ent-BaseMobSpeciesOrganic.desc } + .suffix = Кобольд +ent-MobKoboltDummy = { ent-BaseSpeciesDummy } + .desc = { ent-BaseSpeciesDummy.desc } diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl new file mode 100644 index 0000000000..36053d64cb --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Objects/Device/Circuitboards/Machine/production.ftl @@ -0,0 +1,2 @@ +ent-ADTIndustrialSMESMachineCircuitboard = Плата индустриального СМЭСа + .desc = Плата Сверхпроводящей Магнитной Энергонакопительной Станции (СМЭС) повышенной ёмкости емкости. Передовое иследование НТ в передачи и хранении энергии. diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Power/industrialSMES.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Power/industrialSMES.ftl new file mode 100644 index 0000000000..a6c022af9d --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Power/industrialSMES.ftl @@ -0,0 +1,5 @@ +ent-ADTIndustrialSMES = Индустриальный СМЭС + .desc = Сверхпроводящая Магнитная Энергонакопительная Станция (СМЭС) повышенной ёмкости емкости. Передовое иследование НТ в передачи и хранении энергии +ent-ADTIndustrialSMESEmpty = Индустриальный СМЭС + .desc = Сверхпроводящая Магнитная Энергонакопительная Станция (СМЭС) повышенной ёмкости емкости. Передовое иследование НТ в передачи и хранении энергии + .suffix = Пустой diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Research/industrial.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Research/industrial.ftl new file mode 100644 index 0000000000..fbdb78a099 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/prototypes/Research/industrial.ftl @@ -0,0 +1 @@ +research-avanted-energy = Продвинутая энергетика diff --git a/Resources/Locale/ru-RU/ADT/traits/categories.ftl b/Resources/Locale/ru-RU/ADT/traits/categories.ftl new file mode 100644 index 0000000000..f714bd58c5 --- /dev/null +++ b/Resources/Locale/ru-RU/ADT/traits/categories.ftl @@ -0,0 +1 @@ +trait-category-height = Рост \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ADT/traits/neutral.ftl b/Resources/Locale/ru-RU/ADT/traits/neutral.ftl index 16e3b5fb76..fbeb6a8982 100644 --- a/Resources/Locale/ru-RU/ADT/traits/neutral.ftl +++ b/Resources/Locale/ru-RU/ADT/traits/neutral.ftl @@ -2,4 +2,10 @@ trait-deutsch-name = Немецкий акцент trait-deutsch-desc = Вы говорите как настоящий австрийский художник! trait-moth-accent-name = Жужащий акцент -trait-moth-accent-desc = Вам либо нравятся моли, либо вы ботаник \ No newline at end of file +trait-moth-accent-desc = Вам либо нравятся моли, либо вы ботаник + +trait-tall-name = Высокий +trait-tall-desc = Вы слегка выше других представителей своего вида. + +trait-short-name = Низкий +trait-short-desc = Вы слегка ниже других представителей своего вида. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/starshine/actions/lick-wounds.ftl b/Resources/Locale/ru-RU/starshine/actions/lick-wounds.ftl new file mode 100644 index 0000000000..f828b1ec41 --- /dev/null +++ b/Resources/Locale/ru-RU/starshine/actions/lick-wounds.ftl @@ -0,0 +1,16 @@ +action-name-lick-wounds = Зализать раны +action-desc-lick-wounds = Уменьшает кровотечение, но нарушает санитарию и может вызывать заболевания. +lick-wounds-yourself-impossible = Вы не можете зализать свои раны +lick-wounds-other-impossible = Вы не можете зализать чьи-то раны +lick-wounds-yourself-no-wounds = У вас нету кровотечения +lick-wounds-yourself-begin = Вы начинаете зализывать свои раны +lick-wounds-yourself-success = Вы зализываете ваши раны, уменьшая кровотечение +lick-wounds-yourself-other-begin = { CAPITALIZE($performer) } начинает зализывать свои раны +lick-wounds-yourself-other-success = { CAPITALIZE($performer) } зализывает свои раны +lick-wounds-performer-no-wounds = { CAPITALIZE($target) } не имеет кровотечения +lick-wounds-performer-begin = Вы начинаете зализывать раны { $target } +lick-wounds-performer-success = Вы зализали раны { $target } +lick-wounds-target-begin = { CAPITALIZE($performer) } начинает зализывать ваши раны +lick-wounds-target-success = { CAPITALIZE($performer) } зализывает ваши раны, уменьшая кровотечение +lick-wounds-other-begin = { CAPITALIZE($performer) } начинает зализывать раны { $target } +lick-wounds-other-success = { CAPITALIZE($performer) } успешно зализывает раны { $target } diff --git a/Resources/Prototypes/ADT/Body/Organs/felinid.yml b/Resources/Prototypes/ADT/Body/Organs/felinid.yml new file mode 100644 index 0000000000..fe5e87d1b7 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Organs/felinid.yml @@ -0,0 +1,13 @@ +- type: entity + id: ADTOrganFelinidHeart + parent: OrganHumanHeart + name: felinid heart + description: "I feel bad for the heartless bastard who lost this." + components: + - type: Metabolizer + maxReagents: 4 + metabolizerTypes: [Felinid, Animal] + groups: + - id: Medicine + - id: Poison + - id: Narcotic \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Body/Organs/kobalt.yml b/Resources/Prototypes/ADT/Body/Organs/kobalt.yml new file mode 100644 index 0000000000..e11c6c1b96 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Organs/kobalt.yml @@ -0,0 +1,4 @@ +- type: entity + id: OrganKoboltStomach + parent: OrganReptilianStomach + noSpawn: true diff --git a/Resources/Prototypes/ADT/Body/Parts/kobalt.yml b/Resources/Prototypes/ADT/Body/Parts/kobalt.yml new file mode 100644 index 0000000000..cf3fbb7955 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Parts/kobalt.yml @@ -0,0 +1,146 @@ +- type: entity + id: PartKobolt + parent: PartReptilian + name: "kobolt body part" + abstract: true + +- type: entity + id: TorsoKobolt + name: "kobolt torso" + parent: TorsoReptilian + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "torso_m" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "torso_m" + +- type: entity + id: HeadKobolt + name: "kobolt head" + parent: HeadReptilian + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "head_m" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "head_m" + - type: MovementSpeedModifier + baseWalkSpeed: 0 + baseSprintSpeed: 0 + - type: InputMover + - type: GhostOnMove + +- type: entity + id: LeftArmKobolt + name: "left kobolt arm" + parent: [PartKobolt, BaseLeftArm] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_arm" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_arm" + +- type: entity + id: RightArmKobolt + name: "right kobolt arm" + parent: [PartKobolt, BaseRightArm] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_arm" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_arm" + +- type: entity + id: LeftHandKobolt + name: "left kobolt hand" + parent: [PartKobolt, BaseLeftHand] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_hand" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_hand" + +- type: entity + id: RightHandKobolt + name: "right kobolt hand" + parent: [PartKobolt, BaseRightHand] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_hand" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_hand" + +- type: entity + id: LeftLegKobolt + name: "left kobolt leg" + parent: [PartKobolt, BaseLeftLeg] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_leg" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_leg" + - type: MovementSpeedModifier + baseWalkSpeed : 2.7 + baseSprintSpeed : 4.5 + +- type: entity + id: RightLegKobolt + name: "right kobolt leg" + parent: [PartKobolt, BaseRightLeg] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_leg" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_leg" + - type: MovementSpeedModifier + baseWalkSpeed : 2.7 + baseSprintSpeed : 4.5 + +- type: entity + id: LeftFootKobolt + name: "left kobolt foot" + parent: [PartKobolt, BaseLeftFoot] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_foot" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_foot" + +- type: entity + id: RightFootKobolt + name: "right kobolt foot" + parent: [PartKobolt, BaseRightFoot] + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_foot" + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_foot" diff --git a/Resources/Prototypes/ADT/Body/Prototypes/felinid.yml b/Resources/Prototypes/ADT/Body/Prototypes/felinid.yml new file mode 100644 index 0000000000..49654c5c2a --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Prototypes/felinid.yml @@ -0,0 +1,49 @@ +- type: body + id: Felinid + name: "felinid" + root: torso + slots: + head: + part: HeadHuman + connections: + - torso + organs: + brain: OrganHumanBrain + eyes: OrganHumanEyes + torso: + part: TorsoHuman + connections: + - right arm + - left arm + - left leg + - right leg + organs: + heart: ADTOrganFelinidHeart + lungs: OrganHumanLungs + stomach: OrganReptilianStomach + liver: OrganAnimalLiver + kidneys: OrganHumanKidneys + right arm: + part: RightArmHuman + connections: + - right hand + left arm: + part: LeftArmHuman + connections: + - left hand + right hand: + part: RightHandHuman + left hand: + part: LeftHandHuman + right leg: + part: RightLegHuman + connections: + - right foot + left leg: + part: LeftLegHuman + connections: + - left foot + right foot: + part: RightFootHuman + left foot: + part: LeftFootHuman diff --git a/Resources/Prototypes/ADT/Body/Prototypes/kobalt.yml b/Resources/Prototypes/ADT/Body/Prototypes/kobalt.yml new file mode 100644 index 0000000000..d15716b6c1 --- /dev/null +++ b/Resources/Prototypes/ADT/Body/Prototypes/kobalt.yml @@ -0,0 +1,49 @@ +- type: body + name: "kobolt" + id: Kobolt + root: torso + slots: + head: + part: HeadKobolt + connections: + - torso + organs: + brain: OrganHumanBrain #как у reptilian + eyes: OrganHumanEyes #как у reptilian + torso: + part: TorsoKobolt + organs: + heart: OrganAnimalHeart #как у reptilian + lungs: OrganHumanLungs #как у reptilian + stomach: OrganKoboltStomach + liver: OrganAnimalLiver #как у reptilian + kidneys: OrganHumanKidneys #как у reptilian + connections: + - right arm + - left arm + - right leg + - left leg + right arm: + part: RightArmKobolt + connections: + - right hand + left arm: + part: LeftArmKobolt + connections: + - left hand + right hand: + part: RightHandKobolt + left hand: + part: LeftHandKobolt + right leg: + part: RightLegKobolt + connections: + - right foot + left leg: + part: LeftLegKobolt + connections: + - left foot + right foot: + part: RightFootKobolt + left foot: + part: LeftFootKobolt diff --git a/Resources/Prototypes/ADT/Catalog/Fills/Crates/engines.yml b/Resources/Prototypes/ADT/Catalog/Fills/Crates/engines.yml new file mode 100644 index 0000000000..ba7a8b7bbd --- /dev/null +++ b/Resources/Prototypes/ADT/Catalog/Fills/Crates/engines.yml @@ -0,0 +1,7 @@ +- type: entity + id: CrateEngineeringIndustrialSMES + parent: CrateEngineeringSecure + components: + - type: StorageFill + contents: + - id: ADTIndustrialSMESEmpty diff --git a/Resources/Prototypes/ADT/Damage/modifier_sets.yml b/Resources/Prototypes/ADT/Damage/modifier_sets.yml index ab6acb5ad4..880d52695d 100644 --- a/Resources/Prototypes/ADT/Damage/modifier_sets.yml +++ b/Resources/Prototypes/ADT/Damage/modifier_sets.yml @@ -47,16 +47,6 @@ Heat: 1.5 Asphyxiation: 2.0 -- type: damageModifierSet - id: Felinid # мяу - coefficients: - Blunt: 1.0 - Piercing: 1.15 - Slash: 1.30 - Cold: 1.5 - Heat: 2.0 - Poison: 1.1 - - type: damageModifierSet id: BloodlossIPC coefficients: @@ -118,3 +108,13 @@ id: Ursus # мишк coefficients: Blunt: 1.0 + +- type: damageModifierSet + id: Felinid # мяу + coefficients: + Blunt: 1.0 + Piercing: 1.0 + Slash: 1.0 + Cold: 1.5 + Heat: 1.0 + Poison: 1.4 diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/kobalt.yml b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/kobalt.yml new file mode 100644 index 0000000000..f2b7d3d091 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Customization/Markings/kobalt.yml @@ -0,0 +1,379 @@ +- type: marking + id: KoboltFrillsAquatic + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_aquatic + +- type: marking + id: KoboltFrillsShort + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_short + +- type: marking + id: KoboltFrillsSimple + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_simple + +- type: marking + id: KoboltFrillsDivinity + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_divinity + +- type: marking + id: KoboltFrillsBig + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_big + +- type: marking + id: KoboltFrillsAxolotl + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_axolotl + +- type: marking + id: KoboltFrillsHood + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_hood_primary + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_hood_secondary + +- type: marking + id: KoboltFrillsNeckfull + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: frills_neckfull + +- type: marking + id: KoboltHornsAngler + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_angler + +- type: marking + id: KoboltHornsCurled + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_curled + +- type: marking + id: KoboltHornsRam + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_ram + +- type: marking + id: KoboltHornsShort + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_short + +- type: marking + id: KoboltHornsSimple + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_simple + +- type: marking + id: KoboltHornsDouble + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_double + +- type: marking + id: KoboltTailSmooth + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_smooth_primary + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_smooth_secondary + +- type: marking + id: KoboltTailLarge + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_large + +- type: marking + id: KoboltTailSpikes + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_spikes + +- type: marking + id: KoboltTailLTiger + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_ltiger + +- type: marking + id: KoboltTailDTiger + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_dtiger + +- type: marking + id: KoboltSnoutRound + bodyPart: Snout + markingCategory: Snout + forcedColoring: true + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: snout_round + +- type: marking + id: KoboltSnoutSharp + bodyPart: Snout + markingCategory: Snout + forcedColoring: true + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: snout_sharp + +- type: marking + id: KoboltSnoutSplotch + bodyPart: Snout + markingCategory: Snout + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: snout_splotch_primary + - sprite: Mobs/Customization/reptilian_parts.rsi + state: snout_splotch_secondary + +- type: marking + id: KoboltChestTiger + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: body_tiger + +- type: marking + id: KoboltHeadTiger + bodyPart: Head + markingCategory: Head + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: head_tiger + +- type: marking + id: KoboltLArmTiger + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: l_arm_tiger + +- type: marking + id: KoboltLLegTiger + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: l_leg_tiger + +- type: marking + id: KoboltRArmTiger + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: r_arm_tiger + +- type: marking + id: KoboltRLegTiger + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: r_leg_tiger + +- type: marking + id: KoboltHornsArgali + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_argali + +- type: marking + id: KoboltHornsAyrshire + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_ayrshire + +- type: marking + id: KoboltHornsMyrsore + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_myrsore + +- type: marking + id: KoboltHornsBighorn + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_bighorn + +- type: marking + id: KoboltHornsDemonic + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_demonic + +- type: marking + id: KoboltHornsKoboldEars + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_kobold_ears + +- type: marking + id: KoboltHornsFloppyKoboldEars + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: horns_floppy_kobold_ears + +- type: marking + id: KoboltChestUnderbelly + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: body_underbelly + +- type: marking + id: KoboltChestBackspikes + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [KoboltSpecies] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: body_backspikes + +# Animated +- type: marking + id: KoboltTailSmoothAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_smooth_wagging_primary + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_smooth_wagging_secondary + +- type: marking + id: KoboltTailSpikesAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_spikes_wagging + +- type: marking + id: KoboltTailLTigerAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_ltiger_wagging + +- type: marking + id: KoboltTailDTigerAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_dtiger_wagging diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/Drask.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/Drask.yml index 9727af7e9d..dd40d39740 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Player/Drask.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/Drask.yml @@ -38,8 +38,8 @@ understands: - GalacticCommon - Drask - # - type: SizeAttributeWhitelist # Frontier TODO: нет такого компонента.. - # tall: true - # tallscale: 1.15 - # short: true - # shortscale: 1 + - type: SizeAttributeWhitelist # Frontier + tall: true + tallscale: 1.15 + short: true + shortscale: 1 diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/demon.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/demon.yml index 388c63b7ee..8e8a6ec8cd 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Player/demon.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/demon.yml @@ -39,10 +39,10 @@ damageRecovery: types: Asphyxiation: -1.0 - # - type: SizeAttributeWhitelist # Frontier TODO: нет такого компонента.. - # tall: true - # tallscale: 1.1 - # short: true - # shortscale: 0.9 + - type: SizeAttributeWhitelist # Frontier + tall: true + tallscale: 1.1 + short: true + shortscale: 0.9 #Weh diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/felinid.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/felinid.yml new file mode 100644 index 0000000000..6156b2fa59 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/felinid.yml @@ -0,0 +1,87 @@ +- type: entity + save: false + name: Урист МакФелинид + parent: MobFelinidBase + id: MobFelinid + components: + - type: CombatMode + - type: InteractionPopup + successChance: 1 + interactSuccessString: petting-success-generic + interactSuccessSound: /Audio/ADT/Felinid/cat_purr1.ogg + messagePerceivedByOthers: petting-success-soft-floofy-others + interactSuccessSpawn: EffectHearts + interactDelay: 4 + - type: MindContainer + showExamineInfo: true + - type: Input + context: "human" + - type: MobThresholds + thresholds: + 0: Alive + 90: Critical + 195: Dead + - type: MobMover + - type: InputMover + - type: Respirator + damage: + types: + Asphyxiation: 1.9 + damageRecovery: + types: + Asphyxiation: -1.9 + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + Acidic: [Touch, Ingestion] + reactions: + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPieReaction + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - SeeingRainbows + - Electrocution + - Drunk + - SlurredSpeech + - RatvarianLanguage + - PressureImmunity + - Muted + - ForcedSleep + - TemporaryBlindness + - Pacified + - StaminaModifier + - type: Alerts + - type: Actions + - type: Eye + - type: NyaAccent + - type: CameraRecoil + - type: Examiner + - type: CanHostGuardian + - type: LanguageSpeaker + speaks: + - GalacticCommon + - Nekomimetic + understands: + - GalacticCommon + - Nekomimetic + - type: NpcFactionMember + factions: + - NanoTrasen + - type: Vocal + wilhelm: "/Audio/ADT/Felinid/cat_wilhelm.ogg" + sounds: + Male: MaleFelinid + Female: FemaleFelinid + Unsexed: MaleFelinid + - type: SizeAttributeWhitelist # Frontier + tall: true + tallscale: 1 + short: true + shortscale: 0.8 diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/humanoid.yml index c9007cdcd0..a3df91c268 100644 --- a/Resources/Prototypes/ADT/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/humanoid.yml @@ -420,22 +420,6 @@ - type: Loadout prototypes: [ ADTERTMedicalGearEVARiot ] -# start Майор РХБЗЗ -- type: entity - id: ADTRandomHumanoidSpawnerCBURNUnit - name: Cmnd CBURN Agent - suffix: AdtERTRole - components: - - type: Sprite - sprite: Markers/jobs.rsi - state: cburn - - type: RandomHumanoidSpawner - settings: ADTCmndCBURNAgent - - type: AutoImplant - implants: - - MindShieldImplant - - - type: randomHumanoidSettings speciesBlacklist: - Diona @@ -455,4 +439,17 @@ nameSegments: - ADTCmndNamesFirstMilitary - NamesLastERTCallsign # Corvax Localization -# end Майор РХБЗЗ \ No newline at end of file + +- type: entity + id: ADTRandomHumanoidSpawnerCBURNUnit + name: Cmnd CBURN Agent + suffix: AdtERTRole + components: + - type: Sprite + sprite: Markers/jobs.rsi + state: cburn + - type: RandomHumanoidSpawner + settings: ADTCmndCBURNAgent + - type: AutoImplant + implants: + - MindShieldImplant \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Player/kobalt.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/kobalt.yml new file mode 100644 index 0000000000..c175199f37 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Player/kobalt.yml @@ -0,0 +1,21 @@ +- type: entity + save: false + name: Urisst' Mzhand Kobolt + parent: BaseMobKobolt + id: MobKobolt + components: + - type: LanguageSpeaker # Frontier + speaks: + - GalacticCommon + - Draconic + - CintaTaj + understands: + - GalacticCommon + - Draconic + - CintaTaj + - type: SizeAttributeWhitelist # Frontier + tall: true + tallscale: 1.1 + short: true + shortscale: 0.9 + diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/felinid.yml new file mode 100644 index 0000000000..c44373fd52 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/felinid.yml @@ -0,0 +1,177 @@ +- type: entity + save: false + name: Base felinid + parent: BaseMobHuman + id: MobFelinidBase + abstract: true + components: + - type: Sprite + netsync: false + noRot: true + drawdepth: Mobs + scale: 0.98, 0.98 + layers: + - map: [ "enum.HumanoidVisualLayers.Chest" ] + - map: [ "enum.HumanoidVisualLayers.Head" ] + - map: [ "enum.HumanoidVisualLayers.Snout" ] + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + - map: [ "enum.HumanoidVisualLayers.RArm" ] + - map: [ "enum.HumanoidVisualLayers.LArm" ] + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - shader: StencilClear + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilMask + map: ["enum.HumanoidVisualLayers.StencilMask"] + sprite: Mobs/Customization/masking_helpers.rsi + state: unisex_full + visible: false + - map: [ "underwearb" ] #Sirena + - map: [ "underweart" ] #Sirena + - map: ["enum.HumanoidVisualLayers.LFoot"] + - map: ["enum.HumanoidVisualLayers.RFoot"] + - map: [ "socks" ] #Sirena + - map: [ "jumpsuit" ] + - map: [ "enum.HumanoidVisualLayers.LHand" ] + - map: [ "enum.HumanoidVisualLayers.RHand" ] + - map: [ "id" ] + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "neck" ] + - map: [ "back" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + - map: [ "enum.HumanoidVisualLayers.Hair" ] + - map: [ "enum.HumanoidVisualLayers.HeadSide" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + - map: [ "enum.HumanoidVisualLayers.Tail" ] + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "clownedon" ] + sprite: "Effects/creampie.rsi" + state: "creampie_human" + visible: false + - type: HumanoidAppearance + species: Felinid + - type: Destructible #процесс разрушения на органы + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt #при каком дамаге это происходит + damage: 300 + behaviors: + - !type:GibBehavior { } + - type: Fixtures + fixtures: # TODO: This needs a second fixture just for mob collisions. + fix1: + shape: + !type:PhysShapeCircle + radius: 0.30 + density: 160 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: Body + prototype: Felinid + - type: Damageable + damageContainer: Biological + damageModifierSet: Felinid + - type: MeleeWeapon + soundHit: + collection: Punch + animation: WeaponArcClaw + damage: + types: + Blunt: 0.9 + Slash: 5 + - type: Blindable + - type: Speech + speechSounds: Alto + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 0.9 + soundHit: + path: /Audio/Effects/hit_kick.ogg + - type: Perishable + - type: Butcherable + butcheringType: Spike # TODO human. + spawned: + - id: FoodMeat + - id: ClothingHeadHatCatEars + - type: WoundLicking +- type: entity + save: false + name: Felinid Dummy + parent: MobHumanDummy + id: MobFelinidDummy + noSpawn: true + description: A dummy felinid meant to be used in character setup. + components: + - type: Sprite + netsync: false + noRot: true + drawdepth: Mobs + scale: 1, 1 + layers: + # TODO BODY Turn these into individual body parts? + - map: [ "enum.HumanoidVisualLayers.Chest" ] + - map: [ "enum.HumanoidVisualLayers.Head" ] + - map: [ "enum.HumanoidVisualLayers.Snout" ] + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + - map: [ "enum.HumanoidVisualLayers.RArm" ] + - map: [ "enum.HumanoidVisualLayers.LArm" ] + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - shader: StencilClear + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilMask + map: ["enum.HumanoidVisualLayers.StencilMask"] + sprite: Mobs/Customization/masking_helpers.rsi + state: unisex_full + visible: false + - map: [ "underwearb" ] #Sirena + - map: [ "underweart" ] #Sirena + - map: ["enum.HumanoidVisualLayers.LFoot"] + - map: ["enum.HumanoidVisualLayers.RFoot"] + - map: [ "socks" ] #Sirena + - map: [ "jumpsuit" ] + - map: [ "enum.HumanoidVisualLayers.LHand" ] + - map: [ "enum.HumanoidVisualLayers.RHand" ] + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "id" ] + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "neck" ] + - map: [ "back" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + - map: [ "enum.HumanoidVisualLayers.Hair" ] + - map: [ "enum.HumanoidVisualLayers.HeadSide" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + - map: [ "enum.HumanoidVisualLayers.Tail" ] + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] diff --git a/Resources/Prototypes/ADT/Entities/Mobs/Species/kobalt.yml b/Resources/Prototypes/ADT/Entities/Mobs/Species/kobalt.yml new file mode 100644 index 0000000000..fe244e9b5f --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Mobs/Species/kobalt.yml @@ -0,0 +1,55 @@ +- type: entity + save: false + name: Urisst' Mzhand + parent: BaseMobReptilian + id: BaseMobKobolt + abstract: true + components: + - type: HumanoidAppearance + species: KoboltSpecies + - type: Icon # + sprite: Mobs/Species/Reptilian/parts.rsi + state: full + - type: Sprite #особенность кобольда. в будущем заменить на sizeAtribute + netsync: false + noRot: true + drawdepth: Mobs + scale: 0.8, 0.8 + - type: Body + prototype: Kobolt + requiredLegs: 2 +# - type: DiseaseCarrier непонятная недобавленная херня +# diseaseResist: 0.1 + - type: MeleeWeapon + hidden: true + soundHit: + path: /Audio/Weapons/pierce.ogg + angle: 30 + animation: WeaponArcPunch + damage: + types: + Piercing: 5 + - type: Temperature + heatDamageThreshold: 400 + coldDamageThreshold: 260 #starting temperature damage treshold + currentTemperature: 310.15 + specificHeat: 46 + coldDamage: + types: + Cold : 0.2 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 0.1 #per second, scales with temperature & other constants + - type: MovementSpeedModifier + baseWalkSpeed : 2.7 + baseSprintSpeed : 4.5 + - type: Perishable + +- type: entity + parent: BaseSpeciesDummy + id: MobKoboltDummy + noSpawn: true + description: A dummy reptilian meant to be used in character setup. + components: + - type: HumanoidAppearance + species: KoboltSpecies diff --git a/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml new file mode 100644 index 0000000000..1d8d929077 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Objects/Device/Circuitboards/Machine/production.yml @@ -0,0 +1,15 @@ +- type: entity + id: ADTIndustrialSMESMachineCircuitboard + parent: BaseMachineCircuitboard + name: Industrial SMES machine board + description: A machine printed circuit board for a SMES. + components: + - type: MachineBoard + prototype: ADTIndustrialSMESEmpty + stackRequirements: + Capacitor: 4 + CableHV: 30 + componentRequirements: + PowerCell: + amount: 16 + defaultPrototype: PowerCellSmall diff --git a/Resources/Prototypes/ADT/Entities/Structures/Power/industrialSMES.yml b/Resources/Prototypes/ADT/Entities/Structures/Power/industrialSMES.yml new file mode 100644 index 0000000000..ca06513243 --- /dev/null +++ b/Resources/Prototypes/ADT/Entities/Structures/Power/industrialSMES.yml @@ -0,0 +1,39 @@ +- type: entity + parent: BaseSMES + id: ADTIndustrialSMES + suffix: Basic, 80MW + components: + - type: Sprite + sprite: ADT/Structures/Power/industrial_smes.rsi + snapCardinals: true + layers: + - state: smes + - map: ["enum.SmesVisualLayers.Charge"] + state: "smes-og1" + shader: unshaded + visible: false + - map: ["enum.SmesVisualLayers.Input"] + state: "smes-oc0" + shader: unshaded + - map: ["enum.SmesVisualLayers.Output"] + state: "smes-op1" + shader: unshaded + - type: Smes + - type: Battery + maxCharge: 80000000 + startingCharge: 80000000 + - type: PowerNetworkBattery + maxSupply: 15000000 + maxChargeRate: 500000 + supplyRampTolerance: 500000 + supplyRampRate: 100000 + - type: Machine + board: ADTIndustrialSMESMachineCircuitboard + +- type: entity + parent: ADTIndustrialSMES + id: ADTIndustrialSMESEmpty + suffix: Empty + components: + - type: Battery + startingCharge: 0 diff --git a/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml b/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml index 24c34e966f..0adfc02de1 100644 --- a/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/ADT/Recipes/Lathes/electronics.yml @@ -6,3 +6,12 @@ Steel: 900 Plastic: 100 Gold: 100 + +- type: latheRecipe + id: ADTIndustrialSMESMachineCircuitboard + result: ADTIndustrialSMESMachineCircuitboard + completetime: 4 + materials: + Steel: 100 + Glass: 900 + Gold: 100 diff --git a/Resources/Prototypes/ADT/Research/industrial.yml b/Resources/Prototypes/ADT/Research/industrial.yml new file mode 100644 index 0000000000..2ad05129d9 --- /dev/null +++ b/Resources/Prototypes/ADT/Research/industrial.yml @@ -0,0 +1,11 @@ +- type: technology + id: Advanted Energy + name: research-avanted-energy + icon: + sprite: ADT/Structures/Power/industrial_smes.rsi + state: smes + discipline: Industrial + tier: 3 + cost: 15000 + recipeUnlocks: + - ADTIndustrialSMESMachineCircuitboard diff --git a/Resources/Prototypes/ADT/SoundCollections/emotes.yml b/Resources/Prototypes/ADT/SoundCollections/emotes.yml index 24ac3c2ebb..c5bde96c9e 100644 --- a/Resources/Prototypes/ADT/SoundCollections/emotes.yml +++ b/Resources/Prototypes/ADT/SoundCollections/emotes.yml @@ -14,7 +14,7 @@ id: DraskTalk files: - /Audio/ADT/Drask/drasktalk.ogg - + # IPC - type: soundCollection id: SynthYes @@ -59,7 +59,7 @@ - /Audio/ADT/Novakid/novakid_laugh03.ogg - /Audio/ADT/Novakid/novakid_laugh04.ogg - /Audio/ADT/Novakid/novakid_laugh05.ogg - + - type: soundCollection id: TajaranHisses files: @@ -175,4 +175,35 @@ - type: soundCollection id: VulpHeckaetSound files: - - /Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg \ No newline at end of file + - /Audio/ADT/Voice/Vulpkanin/vulpkanin_hekaet1.ogg + +#feliinid + +- type: soundCollection + id: FelinidHisses + files: + - /Audio/ADT/Felinid/cat_hiss1.ogg + - /Audio/ADT/Felinid/cat_hiss2.ogg + +- type: soundCollection + id: FelinidMeows + files: + - /Audio/ADT/Felinid/cat_meow1.ogg + - /Audio/ADT/Felinid/cat_meow2.ogg + - /Audio/ADT/Felinid/cat_meow3.ogg + +- type: soundCollection + id: FelinidMews + files: + - /Audio/ADT/Felinid/cat_mew1.ogg + - /Audio/ADT/Felinid/cat_mew2.ogg + +- type: soundCollection + id: FelinidGrowls + files: + - /Audio/ADT/Felinid/cat_growl1.ogg + +- type: soundCollection + id: FelinidPurrs + files: + - /Audio/ADT/Felinid/cat_purr1.ogg diff --git a/Resources/Prototypes/ADT/SoundCollections/screams.yml b/Resources/Prototypes/ADT/SoundCollections/screams.yml index 9c8a262634..c985000ec3 100644 --- a/Resources/Prototypes/ADT/SoundCollections/screams.yml +++ b/Resources/Prototypes/ADT/SoundCollections/screams.yml @@ -5,7 +5,7 @@ - /Audio/ADT/Novakid/novakid_scream02.ogg - /Audio/ADT/Novakid/novakid_scream03.ogg - /Audio/ADT/Novakid/novakid_scream04.ogg - + - type: soundCollection id: TajaranMaleScreams files: @@ -21,4 +21,11 @@ files: - /Audio/ADT/Felinid/cat_scream1.ogg - /Audio/ADT/Felinid/cat_scream2.ogg - - /Audio/ADT/Felinid/cat_scream3.ogg \ No newline at end of file + - /Audio/ADT/Felinid/cat_scream3.ogg + +- type: soundCollection + id: FelinidScreams + files: + - /Audio/ADT/Felinid/cat_scream1.ogg + - /Audio/ADT/Felinid/cat_scream2.ogg + - /Audio/ADT/Felinid/cat_scream3.ogg diff --git a/Resources/Prototypes/ADT/Species/felinid.yml b/Resources/Prototypes/ADT/Species/felinid.yml new file mode 100644 index 0000000000..ac031a6113 --- /dev/null +++ b/Resources/Prototypes/ADT/Species/felinid.yml @@ -0,0 +1,38 @@ +- type: species + id: Felinid + name: Фелинид + roundStart: true + prototype: MobFelinid + sprites: MobHumanSprites + markingLimits: MobFelinidMarkingLimits + dollPrototype: MobFelinidDummy + skinColoration: HumanToned + sponsorOnly: true + + +- type: markingPoints + id: MobFelinidMarkingLimits + points: + Hair: + points: 1 + required: false + FacialHair: + points: 1 + required: false + Tail: + points: 1 + required: true + defaultMarkings: [ CatTail ] + HeadTop: + points: 1 + required: true + defaultMarkings: [ CatEars ] + Chest: + points: 1 + required: false + Legs: + points: 2 + required: false + Arms: + points: 2 + required: false diff --git a/Resources/Prototypes/ADT/Species/kobalt.yml b/Resources/Prototypes/ADT/Species/kobalt.yml new file mode 100644 index 0000000000..b949667347 --- /dev/null +++ b/Resources/Prototypes/ADT/Species/kobalt.yml @@ -0,0 +1,141 @@ +- type: species + id: KoboltSpecies + name: species-name-kobolt + roundStart: true + prototype: MobKobolt + sprites: MobKoboltSprites + defaultSkinTone: "#34a223" + markingLimits: MobKoboltMarkingLimits + dollPrototype: MobKoboltDummy + skinColoration: Hues #как у reptilian + maleFirstNames: names_reptilian_male #как у reptilian + femaleFirstNames: names_reptilian_female #как у reptilian + naming: FirstDashFirst #как у reptilian + +- type: speciesBaseSprites + id: MobKoboltSprites + sprites: + Head: MobKoboltHead + Snout: MobHumanoidAnyMarking #как у reptilian + Chest: MobKoboltTorso + HeadTop: MobHumanoidAnyMarking #как у reptilian + HeadSide: MobHumanoidAnyMarking #как у reptilian + Tail: MobHumanoidAnyMarking #как у reptilian + Eyes: MobHumanoidEyes #как у reptilian + LArm: MobKoboltLArm + RArm: MobKoboltRArm + LHand: MobKoboltLHand + RHand: MobKoboltRHand + LLeg: MobKoboltLLeg + RLeg: MobKoboltRLeg + LFoot: MobKoboltLFoot + RFoot: MobKoboltRFoot + +- type: markingPoints + id: MobKoboltMarkingLimits + onlyWhitelisted: true + points: + Hair: + points: 0 + required: false + FacialHair: + points: 0 + required: false + Tail: + points: 1 + required: true + defaultMarkings: [ LizardTailSmooth ] + Snout: + points: 1 + required: true + defaultMarkings: [ LizardSnoutRound ] + HeadTop: + points: 1 + required: false + HeadSide: + points: 1 + required: false + +- type: humanoidBaseSprite + id: MobKoboltHead + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobKoboltHeadMale + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobKoboltHeadFemale + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobKoboltTorso + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobKoboltTorsoMale + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobKoboltTorsoFemale + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobKoboltLLeg + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobKoboltLHand + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobKoboltLArm + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobKoboltLFoot + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobKoboltRLeg + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobKoboltRHand + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobKoboltRArm + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobKoboltRFoot + baseSprite: + sprite: Mobs/Species/Reptilian/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/ADT/Traits/categories.yml b/Resources/Prototypes/ADT/Traits/categories.yml new file mode 100644 index 0000000000..fec1cdb72d --- /dev/null +++ b/Resources/Prototypes/ADT/Traits/categories.yml @@ -0,0 +1,4 @@ +- type: traitCategory + id: Height + name: trait-category-height + maxTraitPoints: 1 \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Traits/neutral.yml b/Resources/Prototypes/ADT/Traits/neutral.yml new file mode 100644 index 0000000000..f9960732ed --- /dev/null +++ b/Resources/Prototypes/ADT/Traits/neutral.yml @@ -0,0 +1,31 @@ +- type: trait + id: Tall + name: trait-tall-name + description: trait-tall-desc + category: Height + cost: 1 + whitelist: + components: + - SizeAttributeWhitelist + blacklist: + components: + - SizeAttribute + components: + - type: SizeAttribute + tall: true + +- type: trait + id: Short + name: trait-short-name + description: trait-short-desc + category: Height + cost: 1 + whitelist: + components: + - SizeAttributeWhitelist + blacklist: + components: + - SizeAttribute + components: + - type: SizeAttribute + short: true \ No newline at end of file diff --git a/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml b/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml index 3b0bce180b..ea79a00533 100644 --- a/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/ADT/Voice/speech_emote_sounds.yml @@ -304,11 +304,11 @@ collection: MaleCry Whistle: collection: Whistles - # ADT-Apathy Sounds. + # ADT-Apathy Sounds. Scream-apathy: collection: NovakidScreams Laugh-apathy: - collection: NovakidLaugh + collection: NovakidLaugh Sigh-apathy: collection: MaleSigh Crying-apathy: @@ -347,16 +347,16 @@ collection: FemaleCry Whistle: collection: Whistles - # ADT-Apathy Sounds. + # ADT-Apathy Sounds. Scream-apathy: collection: NovakidScreams Laugh-apathy: - collection: NovakidLaugh + collection: NovakidLaugh Sigh-apathy: collection: FemaleSigh Crying-apathy: collection: FemaleCry - + - type: emoteSounds id: UnisexIPC sounds: @@ -534,3 +534,101 @@ collection: Whistles Heckaet: collection: VulpHeckaetSound + +- type: emoteSounds + id: MaleFelinid + params: + variation: 0.125 + sounds: + Scream: + collection: FelinidScreams + Laugh: + collection: MaleLaugh + Hiss: + collection: FelinidHisses + Meow: + collection: FelinidMeows + Mew: + collection: FelinidMews + Growl: + collection: FelinidGrowls + Purr: + collection: FelinidPurrs + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Honk: + collection: BikeHorn + Sigh: + collection: MaleSigh + Crying: + collection: MaleCry + Whistle: + collection: Whistles + # ADT-Apathy Sounds. + Scream-apathy: + collection: FelinidScreams + Laugh-apathy: + collection: MaleLaugh + Sigh-apathy: + collection: MaleSigh + Crying-apathy: + collection: MaleCry + +- type: emoteSounds + id: FemaleFelinid + params: + variation: 0.125 + sounds: + Scream: + collection: FelinidScreams + Laugh: + collection: FemaleLaugh + Sneeze: + collection: FemaleSneezes + Cough: + collection: FemaleCoughs + Hiss: + collection: FelinidHisses + Meow: + collection: FelinidMeows + Mew: + collection: FelinidMews + Growl: + collection: FelinidGrowls + Purr: + collection: FelinidPurrs + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Honk: + collection: CluwneHorn + Sigh: + collection: FemaleSigh + Crying: + collection: FemaleCry + Whistle: + collection: Whistles + # ADT-Apathy Sounds. + Scream-apathy: + collection: FelinidScreams + Laugh-apathy: + collection: FemaleLaugh + Sigh-apathy: + collection: FemaleSigh + Crying-apathy: + collection: FemaleCry diff --git a/Resources/Prototypes/Actions/felinid.yml b/Resources/Prototypes/Actions/felinid.yml new file mode 100644 index 0000000000..7e6a5457a4 --- /dev/null +++ b/Resources/Prototypes/Actions/felinid.yml @@ -0,0 +1,12 @@ +- type: entity + id: ActionWoundLicking + name: Lick Wound + description: Stop bleeding by licking your wounds + noSpawn: true + components: + - type: EntityTargetAction + whitelist: { components: [ HumanoidAppearance ] } + interactOnMiss: false + icon: { sprite: Mobs/Species/Human/organs.rsi, state: tongue } + priority: -1 + event: !type:WoundLickingActionEvent diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 1027c510e2..b1f33a361b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -546,6 +546,7 @@ - MassMediaCircuitboard - ReagentGrinderIndustrialMachineCircuitboard - JukeboxCircuitBoard + - ADTIndustrialSMESMachineCircuitboard #ADT - type: EmagLatheRecipes emagDynamicRecipes: - ShuttleGunDusterCircuitboard diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/meta.json b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/meta.json new file mode 100644 index 0000000000..827aef3b56 --- /dev/null +++ b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/meta.json @@ -0,0 +1,74 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "sprites of smes was created by Unlumination. Discord:unlumy", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "smes" + }, + { + "name": "smes-open" + }, + { + "name": "smes-oc0" + }, + { + "name": "smes-oc1", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "smes-oc2", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "smes-og1", + "delays": [ + [ + 1, + 1 + ] + ] + }, + { + "name": "smes-og2" + }, + { + "name": "smes-og3" + }, + { + "name": "smes-og4" + }, + { + "name": "smes-og5" + }, + { + "name": "smes-op0" + }, + { + "name": "smes-op1", + "delays": [ + [ + 1, + 1 + ] + ] + }, + { + "name": "smes-op2" + } + ] +} diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc0.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc0.png new file mode 100644 index 0000000000000000000000000000000000000000..5579432d3fed36949e0cc0872d2886509b9596e4 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzOHUWakcif|7dP@UDDW^lzCXgJ zbNJs^~SEYfn`1yks09?3Qu6xNq_~rhu2)AO3Qy+|@kEcHy>!WX4CG!$3nA NJYD@<);T3K0RSJ?C9(hj literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc1.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc1.png new file mode 100644 index 0000000000000000000000000000000000000000..d624672613b71529b53390c16b976c4cd8af7851 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQW2gmjv*P1Z!d4;Y;fRVy};4L z_w>iKyoARLNt!oSXjmNxZGT=Z;352Df(lSILxcaVc8hghXXB=CdY76rFYojmmC2>= s-g||fVcin^eO~=kqvxy)4fS0e!q%&V7HZw^mFVdQ&MBb@00$B@W&i*H literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc2.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc2.png new file mode 100644 index 0000000000000000000000000000000000000000..d624672613b71529b53390c16b976c4cd8af7851 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQW2gmjv*P1Z!d4;Y;fRVy};4L z_w>iKyoARLNt!oSXjmNxZGT=Z;352Df(lSILxcaVc8hghXXB=CdY76rFYojmmC2>= s-g||fVcin^eO~=kqvxy)4fS0e!q%&V7HZw^mFVdQ&MBb@00$B@W&i*H literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og1.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og1.png new file mode 100644 index 0000000000000000000000000000000000000000..c65f011a070e3400ce431363ec2d1452a0672a98 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQaYY4jv*P1Z!Z|~G8ph2*zn=F xncrHr1O~O6{{L8j@(c_%b7!sGS<1=qBW!EL4A!Y`Ol;3V!k(^vF6*2UngG`|91s8i literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og2.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og2.png new file mode 100644 index 0000000000000000000000000000000000000000..0023750405154e83682e95d82f9251fad89d2fee GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCq0y z;uumf=k57}oD2#)EC+?(cw}!{@g>FgVn3^gi(py&&$}wG3xNt@;1Bx;weXql(Z4F z;uumf=k0}qoIurX5A8D+&)POKYuTp@OpC5OwH4U&Gx6$kpgI^RVE%R`Y;&sT($zNX u88>1a-0}`ct^EGCVcn10&JAyXstOpI_&Bz|k7Bw3(&Fjr=d#Wzp$P!e!!wfr literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og4.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og4.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb3db1bc317c61c13ae5c60a0d5d19c4c96f72a GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C|Kg@ z;uumf=k3LfoDBv7tq;|2+`47eICa}2r@n+sJDNhb6*h$UCCugx$_%r37tr$k@ap%? zt3MX92skh>LWn>78|J>XE$8mbZhsy8)hgjEXNJu(9*Y-~_bW`{O%+t@WHg*{Z#uJ^ j!{2hz16E8N3J(}3nhJzOuMSlP+RxzW>gTe~DWM4f*Tq4} literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og5.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og5.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c0c8a2eac425d18dc75175efc42717333ffea4 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C|Kp` z;uumf=k2A9ybT6CEC<}3yj)K!EpgR3!r?Gkbj2oK+sKw_TB17=8BPmk{!=~ubbiYA z6*5d53JnYp;!A@tKif^uV~c;v3dHokoL9I*R$DK7zublt&9`Pfl1v-i>zgz_&t1T# oaCFh%s)qKzAAK4wDFSuJeJBtNU6gcz8R!ZIPgg&ebxsLQ0BkfuoB#j- literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op0.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op0.png new file mode 100644 index 0000000000000000000000000000000000000000..573b5c404ffb782747013b0c948d8e1b3ba46092 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzLr)jSkcif|7XmqflFkQ9H#Mie z`ER?iS>aG@qq!IZ!-Hw-ZuWh-xlsL{jSRyd&68{|xj6+g&Y9f=YG&|s^>bP0l+XkK D{h}fG literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op1.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op1.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c8e1048941781782c75f26e94579007e891abf GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQemDhjv*P1Z!aI@WHuCFc9=NL zC(1)I^MRM`yO~uYlZ5!{d(sp3GjW;$)iNB=eQ#$yYu&bc$zd1N(~Hh}MF-se|JM4z p$E@R3`UYp$*KGa>R1`I-hH-nFnDsA>^%Ft5JYD@<);T3K0RYS(F?Ij| literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op2.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op2.png new file mode 100644 index 0000000000000000000000000000000000000000..af560237f17a0a5b2a9ff008cd922cf1b0a0c180 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzGfx-Ckcif|mkx3QB@Z8X;PuE# zPseWV@^cD50*j=VhH!n#Uus2xtO>r>mdK II;Vst0E|5$!vFvP literal 0 HcmV?d00001 diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-open.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-open.png new file mode 100644 index 0000000000000000000000000000000000000000..885e2b75291eaddb1b1b9d875f9a0829b8486d9e GIT binary patch literal 1350 zcmV-M1-bf(P)bK#C>X^3NL5uGNE{A_ zZN$WMYId2>1rvk)2n46p9 z-Me?joH>B1s`z|9z=14#EP)OV;Nak2ip63Nsi^zh+?)~DA|RK`SsoCMLP$R`c9@u$ zu#om6HuEWFLpQ{O-C|Ax^RptprfE1Fj@}GpG8slkM{R?N(wr9N6-$!D&d!b@WN&Ye zbLY+-cfvp*z{igt0hpSa0y-P0-EO1n$7hlx^*>ko&5Jp)ku^;NU}k29Y&Lt`2}Rw; z#>TjO`7+DP%SMpfw{J5vG=!qqzAzRtaXmadq*kl(^5sjzCl-tG_3Ky4 zOifLpsw%Nq41ne3Wt>hYfk1$>XV21Zw`nvQMn=q6ajz(fLH^~-7Xa?uxzm%06O|wo z3L(ofe!rjBuU~WT-o1fY5J)DI+_-Urjg3x6Tw7cF^%BJ6aUzijw&&6$?=`8fEv7Jb&l&M59q-*PHF;x%WrEd_Hf? zeM_a-dC|E7DD`@MU_G;W_&Iz&AAc@&JT0%`ty`AYP@0~e*2l-k2?m3G8}@bfcy9FTh4;b%}pf06AT9TWLY*=J~}#z zBuPeNNhA`u-R_3pb?MQgM`r-%HJk2zIN?e6`|8Mx7&n5 zA@8kHOQu+B?u^A-M z?wvE{PLRvxxN_wR5JFL+o&{Y;1^b3nZj>Zp<#s!W8fUvWr<378U>~+%Eu-eUe28 z;jD>tI?d+hriVD0OtQYdPN7f`sdSU&XBI_@ZqfU zq%$srU}a^+QweFo#KZ(6BO~^OEy&aX9jLeai;IgrbHKYZeq})@l}cIXwSdCe?+ns{ z`-S%4lWfNVAw-}BXS*Pzj*pL97qY+yx~}^yC4>eVVb6;*6a1Y7IYu6|7NqE zem@J`#L%%IpU*on72xva%OnzsKnqOMT`f!>4Y;lqc7LLsK6rce|G+qP*m8iB+@2sBLtpkA+&%jK|bo28{C z03JVn>^X?`_Vy4!G?7RgD~jSA!Md&^gkXJr9e_+GLnIREdExZCwpuM-zI^FCG2jpv zi$$8vCj0yQm!!ebcszbA)k`7KX#2D4?c29xG8tc@p!U+z5;HS108}a!hZvw%tMU2s z=YN2@dxa^6VYHyLfKE?OF-_A+>Rwp=;GXOL&+}K4GFj00000NkvXXu0mjfx4>xR literal 0 HcmV?d00001