diff --git a/Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs b/Content.Server/ADT/SizeAttribute/SizeAttributeComponent.cs new file mode 100644 index 00000000000..d617a633a3d --- /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 00000000000..ac64100bb53 --- /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 3816ce8b7ab..fdf8b813d02 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 00000000000..2baf3792293 --- /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 00000000000..bb3ebcfab5d --- /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 00000000000..57652c257ea --- /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 00000000000..c2e950ac095 --- /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 00000000000..31deaff5017 --- /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 00000000000..5190e3a3623 --- /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 00000000000..20ab62f83c2 --- /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/prototypes/Body/Organs/kobalt.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Body/Organs/kobalt.ftl new file mode 100644 index 00000000000..c77297f6307 --- /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 00000000000..2f1757accfe --- /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 e51e3608c00..b97144b3c20 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 00000000000..1e433a2b415 --- /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 00000000000..e3505ac7516 --- /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 00000000000..cac22713d12 --- /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 00000000000..36053d64cbc --- /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 00000000000..a6c022af9d5 --- /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 00000000000..fbdb78a099f --- /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 00000000000..f714bd58c50 --- /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 16e3b5fb766..fbeb6a89824 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 00000000000..f828b1ec411 --- /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 00000000000..fe5e87d1b7b --- /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 00000000000..e11c6c1b965 --- /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 00000000000..cf3fbb79551 --- /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 00000000000..49654c5c2ac --- /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 00000000000..d15716b6c1a --- /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 00000000000..ba7a8b7bbd7 --- /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 ab6acb5ad4f..880d52695de 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 00000000000..f2b7d3d0916 --- /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 9727af7e9d0..dd40d39740f 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 388c63b7ee2..8e8a6ec8cd7 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 00000000000..6156b2fa59b --- /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/kobalt.yml b/Resources/Prototypes/ADT/Entities/Mobs/Player/kobalt.yml new file mode 100644 index 00000000000..c175199f37a --- /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 00000000000..c44373fd522 --- /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 00000000000..fe244e9b5f8 --- /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 00000000000..1d8d929077d --- /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 00000000000..ca065132433 --- /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 24c34e966ff..0adfc02de19 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 00000000000..2ad05129d9b --- /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 24ac3c2ebb6..c5bde96c9ef 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 9c8a2626346..c985000ec3c 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 00000000000..ac031a61134 --- /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 00000000000..b9496673474 --- /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 00000000000..fec1cdb72d5 --- /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 00000000000..f9960732ed8 --- /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 3b0bce180b4..ea79a005330 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 00000000000..7e6a5457a40 --- /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 1027c510e27..b1f33a361be 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 00000000000..827aef3b56a --- /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 00000000000..5579432d3fe Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc0.png differ 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 00000000000..d624672613b Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc1.png differ 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 00000000000..d624672613b Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-oc2.png differ 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 00000000000..c65f011a070 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og1.png differ 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 00000000000..00237504051 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og2.png differ diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og3.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og3.png new file mode 100644 index 00000000000..51df688e4a8 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og3.png differ 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 00000000000..ceb3db1bc31 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og4.png differ 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 00000000000..e6c0c8a2eac Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-og5.png differ 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 00000000000..573b5c404ff Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op0.png differ 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 00000000000..f5c8e104894 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op1.png differ 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 00000000000..af560237f17 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-op2.png differ 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 00000000000..885e2b75291 Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes-open.png differ diff --git a/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes.png b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes.png new file mode 100644 index 00000000000..bb23bd2ceca Binary files /dev/null and b/Resources/Textures/ADT/Structures/Power/industrial_smes.rsi/smes.png differ