diff --git a/Content.Client/_DEN/Tool/EntitySystems/ToolOrganSystem.cs b/Content.Client/_DEN/Tool/EntitySystems/ToolOrganSystem.cs new file mode 100644 index 0000000000..dc6e782190 --- /dev/null +++ b/Content.Client/_DEN/Tool/EntitySystems/ToolOrganSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared._DEN.Tool.Components; + +namespace Content.Client._DEN.Tool.Components; + +public sealed partial class ToolOrganSystem : SharedToolOrganSystem +{ } diff --git a/Content.Server/_DEN/Tool/EntitySystems/ToolOrganSystem.cs b/Content.Server/_DEN/Tool/EntitySystems/ToolOrganSystem.cs new file mode 100644 index 0000000000..038777af82 --- /dev/null +++ b/Content.Server/_DEN/Tool/EntitySystems/ToolOrganSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared._DEN.Tool.Components; + +namespace Content.Server._DEN.Tool.Components; + +public sealed partial class ToolOrganSystem : SharedToolOrganSystem +{ } diff --git a/Content.Shared/Nutrition/Components/HungerComponent.cs b/Content.Shared/Nutrition/Components/HungerComponent.cs index d5db991b1a..87a1bf037d 100644 --- a/Content.Shared/Nutrition/Components/HungerComponent.cs +++ b/Content.Shared/Nutrition/Components/HungerComponent.cs @@ -34,7 +34,7 @@ public sealed partial class HungerComponent : Component /// /// Any time this is modified, should be called. [DataField("baseDecayRate"), ViewVariables(VVAccess.ReadWrite)] - public float BaseDecayRate = 0.01666666666f; + public float BaseDecayRate = BaseHumanoidHungerRate; // DEN: 0.01666666666f -> BaseHumanoidHungerRate /// /// The actual amount at which decays. diff --git a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs index b28455b02e..021c4eb9a6 100644 --- a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs @@ -158,6 +158,7 @@ private void DoHungerThresholdEffects(EntityUid uid, HungerComponent? component if (component.HungerThresholdDecayModifiers.TryGetValue(component.CurrentThreshold, out var modifier)) { component.ActualDecayRate = component.BaseDecayRate * modifier; + component.ActualDecayRate *= component.DecayRateMultiplier; // DEN - Decay rate multipliers DirtyField(uid, component, nameof(HungerComponent.ActualDecayRate)); SetAuthoritativeHungerValue((uid, component), GetHunger(component)); } diff --git a/Content.Shared/_DEN/Nutrition/Components/HungerComponent.cs b/Content.Shared/_DEN/Nutrition/Components/HungerComponent.cs new file mode 100644 index 0000000000..b008651caa --- /dev/null +++ b/Content.Shared/_DEN/Nutrition/Components/HungerComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.Nutrition.EntitySystems; + +namespace Content.Shared.Nutrition.Components; + +public sealed partial class HungerComponent : Component +{ + /// + /// How many tick intervals () it takes to drop hunger by + /// + public const float HungerDropTimeInIntervals = 50.0f; + + /// + /// Amount of hunger lost in . + /// + public const float HungerDropAmount = 50.0f; + + /// + /// How many ticks per "tick interval". 60 ticks at 1 tick / second = 1 minute. + /// + /// + /// This is a bad way of doing it but the better way is a huge breaking change + /// + private const float DropTickInterval = 60.0f; + + /// + /// The hunger rate that humanoid species are balanced around. + /// + private static readonly float BaseHumanoidHungerRate = HungerDropAmount / (HungerDropTimeInIntervals * DropTickInterval); + + /// + /// A flat multiplier applied to . + /// + /// + /// This value ideally should not change - this is to make species code more intuitive to write. + /// + [DataField, Access(typeof(HungerSystem), Friend = AccessPermissions.Read)] + public float DecayRateMultiplier = 1.0f; +} diff --git a/Content.Shared/_DEN/Tool/Components/ToolOrganComponent.cs b/Content.Shared/_DEN/Tool/Components/ToolOrganComponent.cs new file mode 100644 index 0000000000..57040b102c --- /dev/null +++ b/Content.Shared/_DEN/Tool/Components/ToolOrganComponent.cs @@ -0,0 +1,68 @@ +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Tool.Components; + +/// +/// An organ that contains an entity representing a specific capability of the organ. +/// For example: giving an organ a "sharp" tool if you want this organ to be usable for cutting. +/// +[RegisterComponent] +[NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ToolOrganComponent : Component +{ + /// + /// Whether or not tool interactions are enabled. + /// + [DataField, AutoNetworkedField] + public bool IsToolEnabled = false; + + /// + /// The string ID used for the item container. + /// + [DataField] + public string ContainerId = "toggleable_tool"; + + /// + /// Text displayed when the action is enabled. + /// + [DataField] + public LocId? ToggleOnText = "action-popup-tool-interaction-enabled"; + + /// + /// Text displayed when the action is disabled. + /// + [DataField] + public LocId? ToggleOffText = "action-popup-tool-interaction-disabled"; + + /// + /// The entity to use for the toggle action. + /// + [DataField] + public EntProtoId ToolToggleAction = "ActionToolInteractionToggle"; + + /// + /// The entity to put in the mob's hand when this is toggled. + /// + [DataField(required: true)] + public EntProtoId Item = string.Empty; + + /// + /// The entity representing the toggle action. + /// + [DataField, AutoNetworkedField] + public EntityUid? ToolToggleActionEntity; + + /// + /// The container holding the tool item. + /// + [ViewVariables] + public Container? ItemContainer; + + /// + /// The entity representing the toggleable item. + /// + [ViewVariables] + public EntityUid? ItemEntity; +} diff --git a/Content.Shared/_DEN/Tool/Components/ToolOrganPerformerComponent.cs b/Content.Shared/_DEN/Tool/Components/ToolOrganPerformerComponent.cs new file mode 100644 index 0000000000..48b47ca53e --- /dev/null +++ b/Content.Shared/_DEN/Tool/Components/ToolOrganPerformerComponent.cs @@ -0,0 +1,9 @@ + +namespace Content.Shared._DEN.Tool.Components; + +/// +/// Represents an entity that can use s. +/// +[RegisterComponent] +public sealed partial class ToolOrganPerformerComponent : Component +{ } diff --git a/Content.Shared/_DEN/Tool/EntitySystems/SharedToolOrganSystem.cs b/Content.Shared/_DEN/Tool/EntitySystems/SharedToolOrganSystem.cs new file mode 100644 index 0000000000..8eb853af24 --- /dev/null +++ b/Content.Shared/_DEN/Tool/EntitySystems/SharedToolOrganSystem.cs @@ -0,0 +1,149 @@ +using Content.Shared.Actions; +using Content.Shared.Body; +using Content.Shared.CombatMode; +using Content.Shared.Inventory.VirtualItem; +using Content.Shared.Popups; +using Robust.Shared.Containers; +using Robust.Shared.Utility; + +namespace Content.Shared._DEN.Tool.Components; + +/// +/// System logic for organs that contain pseudo-tools. +/// Using these tools is toggled via action. +/// +public abstract partial class SharedToolOrganSystem : EntitySystem +{ + [Dependency] private SharedActionsSystem _actions = default!; + [Dependency] private BodySystem _body = default!; + [Dependency] private SharedCombatModeSystem _combatMode = default!; + [Dependency] private SharedContainerSystem _container = default!; + [Dependency] private SharedVirtualItemSystem _virtualItem = default!; + [Dependency] private SharedPopupSystem _popup = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(_body.RelayEvent); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnOrganGotInserted); + SubscribeLocalEvent(OnOrganRemoved); + SubscribeLocalEvent>(OnGetToolOrgan); + + SubscribeLocalEvent(OnPerformAction); + } + + private void OnComponentInit(Entity ent, ref ComponentInit args) + { + ent.Comp.ItemContainer = _container.EnsureContainer(ent.Owner, ent.Comp.ContainerId); + + var toolEnt = PredictedSpawnAtPosition(ent.Comp.Item, Transform(ent.Owner).Coordinates); + if (!_container.Insert(toolEnt, ent.Comp.ItemContainer)) + { + DebugTools.Assert($"Could not insert {ToPrettyString(toolEnt)} into {ToPrettyString(ent)}. This is likely due to broken YAML!"); + PredictedDel(toolEnt); + } + else + ent.Comp.ItemEntity = toolEnt; + + Dirty(ent); + } + + private void OnOrganGotInserted(Entity ent, ref OrganGotInsertedEvent args) + { + _actions.AddAction(args.Target, ref ent.Comp.ToolToggleActionEntity, ent.Comp.ToolToggleAction); + EnsureComp(ent.Owner); + Dirty(ent); + } + + private void OnOrganRemoved(Entity ent, ref OrganGotRemovedEvent args) + { + _actions.RemoveAction(args.Target, ent.Comp.ToolToggleActionEntity); + TrySetToolInteractionEnabled(ent.Owner, false); + Dirty(ent); + } + + private void OnPerformAction(Entity ent, ref ToggleToolInteractionActionEvent args) + { + if (args.Handled) + return; + + var ev = new GetToolOrganEvent(Action: args.Action, Mob: ent.Owner); + RaiseLocalEvent(ent.Owner, ref ev); + + if (ev.Handled) + args.Handled = true; + } + + private void OnGetToolOrgan(Entity ent, ref BodyRelayedEvent args) + { + if (args.Args.Handled || args.Args.Action != ent.Comp.ToolToggleActionEntity) + return; + + var mob = args.Args.Mob; + var value = !ent.Comp.IsToolEnabled; + if (!TrySetToolInteractionEnabled(ent.AsNullable(), value, mob)) + return; + + // Display message when toggled. + var msgLocId = value ? ent.Comp.ToggleOnText : ent.Comp.ToggleOffText; + if (msgLocId != null) + _popup.PopupClient(Loc.GetString(msgLocId), mob, mob); + + args.Args = args.Args with { Handled = true }; + } + + /// + /// Sets whether or not this entity can use their empty-hand interactions to perform tool actions. + /// + /// The entity to set tool interaction status. + /// If tool interactions should be enabled. + public bool TrySetToolInteractionEnabled(Entity ent, bool enabled, EntityUid? mob = null) + { + if (!Resolve(ent.Owner, ref ent.Comp) // Not a tool organ + || ent.Comp.IsToolEnabled == enabled // Value is already set to this + || ent.Comp.ItemEntity == null // No tool entity + || TerminatingOrDeleted(ent.Comp.ItemEntity) // Tool entity is being deleted + || !TryComp(ent.Owner, out var organ) // Not an organ + || organ.Body == null) // Not attached to a mob + return false; + + mob ??= organ.Body.Value; + var toolEnt = ent.Comp.ItemEntity.Value; + + // Put the entity in your hands as a virtual entity + if (enabled && !_virtualItem.TrySpawnVirtualItemInHand(toolEnt, mob.Value, dropOthers: false)) + return false; + else if (!enabled) + _virtualItem.DeleteInHandsMatching(mob.Value, toolEnt); + + // Set the enabled state of the tool + ent.Comp.IsToolEnabled = enabled; + Dirty(ent); + + if (ent.Comp.ToolToggleActionEntity != null) + _actions.SetToggled(ent.Comp.ToolToggleActionEntity, enabled); + + if (enabled && TryComp(mob, out var combatMode)) + _combatMode.SetInCombatMode(mob.Value, false, combatMode); + + return true; + } +} + +/// +/// Event fired when the "toggle tool interaction" action is used. +/// +public sealed partial class ToggleToolInteractionActionEvent : InstantActionEvent +{ } + +/// +/// Event fired to attempt to get the appropriate tool entity when it is toggled on. +/// +/// The mob that is using this tool entity. +/// The action that triggered this. +/// Whether or not this event has been handled. +[ByRefEvent] +public record struct GetToolOrganEvent(EntityUid Action, EntityUid Mob, bool Handled = false); diff --git a/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_female.ftl b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_female.ftl new file mode 100644 index 0000000000..25f02ec89a --- /dev/null +++ b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_female.ftl @@ -0,0 +1,166 @@ +# generic names +names-rodentia-first-female-dataset-1 = Squeaks +names-rodentia-first-female-dataset-2 = Squeaker +names-rodentia-first-female-dataset-3 = Nibbles +names-rodentia-first-female-dataset-4 = Pebbles +names-rodentia-first-female-dataset-5 = Peanut +names-rodentia-first-female-dataset-6 = Pinky +names-rodentia-first-female-dataset-7 = Gadget +names-rodentia-first-female-dataset-8 = Scurry +names-rodentia-first-female-dataset-9 = Scamper +names-rodentia-first-female-dataset-10 = Chitters +names-rodentia-first-female-dataset-11 = Quill +names-rodentia-first-female-dataset-12 = Whiskers +names-rodentia-first-female-dataset-13 = Wiggles +names-rodentia-first-female-dataset-14 = Button +names-rodentia-first-female-dataset-15 = Sniffles +names-rodentia-first-female-dataset-16 = Chip +names-rodentia-first-female-dataset-17 = Pipsqueak +names-rodentia-first-female-dataset-18 = Nugget +names-rodentia-first-female-dataset-19 = Comet +names-rodentia-first-female-dataset-20 = Dash +names-rodentia-first-female-dataset-21 = Fudge +names-rodentia-first-female-dataset-22 = Noodle +names-rodentia-first-female-dataset-23 = Spud +names-rodentia-first-female-dataset-24 = Muffin +names-rodentia-first-female-dataset-25 = Sprout +names-rodentia-first-female-dataset-26 = Jelly +names-rodentia-first-female-dataset-27 = Fuzz +names-rodentia-first-female-dataset-28 = Cheddar +names-rodentia-first-female-dataset-29 = Tootsie +names-rodentia-first-female-dataset-30 = Pickle +names-rodentia-first-female-dataset-31 = Berry + +# gender-neutral +names-rodentia-first-female-dataset-32 = Alex +names-rodentia-first-female-dataset-33 = Riley +names-rodentia-first-female-dataset-34 = Taylor +names-rodentia-first-female-dataset-35 = Jordan +names-rodentia-first-female-dataset-36 = Casey +names-rodentia-first-female-dataset-37 = Avery +names-rodentia-first-female-dataset-38 = Morgan +names-rodentia-first-female-dataset-39 = Jamie +names-rodentia-first-female-dataset-40 = Quinn +names-rodentia-first-female-dataset-41 = Charlie +names-rodentia-first-female-dataset-42 = Dakota +names-rodentia-first-female-dataset-43 = Sydney +names-rodentia-first-female-dataset-44 = Parker +names-rodentia-first-female-dataset-45 = Cameron +names-rodentia-first-female-dataset-46 = Finley +names-rodentia-first-female-dataset-47 = Robin +names-rodentia-first-female-dataset-48 = Emery +names-rodentia-first-female-dataset-49 = Kendall +names-rodentia-first-female-dataset-50 = Rowan +names-rodentia-first-female-dataset-51 = Sawyer +names-rodentia-first-female-dataset-52 = Bailey +names-rodentia-first-female-dataset-53 = Jaden +names-rodentia-first-female-dataset-54 = Addison +names-rodentia-first-female-dataset-55 = Logan +names-rodentia-first-female-dataset-56 = Devon +names-rodentia-first-female-dataset-57 = Lane +names-rodentia-first-female-dataset-58 = Blair +names-rodentia-first-female-dataset-59 = Drew +names-rodentia-first-female-dataset-60 = Jesse +names-rodentia-first-female-dataset-61 = Skylar +names-rodentia-first-female-dataset-62 = Sam +names-rodentia-first-female-dataset-63 = Reese +names-rodentia-first-female-dataset-64 = Terry +names-rodentia-first-female-dataset-65 = Marley +names-rodentia-first-female-dataset-66 = Elliot +names-rodentia-first-female-dataset-67 = Harper +names-rodentia-first-female-dataset-68 = Jules +names-rodentia-first-female-dataset-69 = Ren +names-rodentia-first-female-dataset-70 = Sloane +names-rodentia-first-female-dataset-71 = Rylan +names-rodentia-first-female-dataset-72 = Sage + +# feminine names +names-rodentia-first-female-dataset-73 = Minnie +names-rodentia-first-female-dataset-74 = Daisy +names-rodentia-first-female-dataset-75 = Bella +names-rodentia-first-female-dataset-76 = Luna +names-rodentia-first-female-dataset-77 = Rosie +names-rodentia-first-female-dataset-78 = Mia +names-rodentia-first-female-dataset-79 = Lily +names-rodentia-first-female-dataset-80 = Chloe +names-rodentia-first-female-dataset-81 = Sophie +names-rodentia-first-female-dataset-82 = Ruby +names-rodentia-first-female-dataset-83 = Zoe +names-rodentia-first-female-dataset-84 = Abby +names-rodentia-first-female-dataset-85 = Ella +names-rodentia-first-female-dataset-86 = Molly +names-rodentia-first-female-dataset-87 = Lucy +names-rodentia-first-female-dataset-88 = Nala +names-rodentia-first-female-dataset-89 = Poppy +names-rodentia-first-female-dataset-90 = Grace +names-rodentia-first-female-dataset-91 = Ivy +names-rodentia-first-female-dataset-92 = Hazel +names-rodentia-first-female-dataset-93 = Emma +names-rodentia-first-female-dataset-94 = Phoebe +names-rodentia-first-female-dataset-95 = Willow +names-rodentia-first-female-dataset-96 = Tilly +names-rodentia-first-female-dataset-97 = Annie +names-rodentia-first-female-dataset-98 = Alice +names-rodentia-first-female-dataset-99 = Holly +names-rodentia-first-female-dataset-100 = Olive +names-rodentia-first-female-dataset-101 = Zoey +names-rodentia-first-female-dataset-102 = Lila +names-rodentia-first-female-dataset-103 = Pippa +names-rodentia-first-female-dataset-104 = June +names-rodentia-first-female-dataset-105 = Mabel +names-rodentia-first-female-dataset-106 = Nellie +names-rodentia-first-female-dataset-107 = Polly +names-rodentia-first-female-dataset-108 = Sadie +names-rodentia-first-female-dataset-109 = Isla + +# "surnames" +names-rodentia-first-female-dataset-110 = Bramblewood +names-rodentia-first-female-dataset-111 = Burrows +names-rodentia-first-female-dataset-112 = Burrowsford +names-rodentia-first-female-dataset-113 = Cheesetail +names-rodentia-first-female-dataset-114 = Cloverfield +names-rodentia-first-female-dataset-115 = Cloverwood +names-rodentia-first-female-dataset-116 = Ferncroft +names-rodentia-first-female-dataset-117 = Flopshire +names-rodentia-first-female-dataset-118 = Flopshire +names-rodentia-first-female-dataset-119 = Fluffbottom +names-rodentia-first-female-dataset-120 = Furrington +names-rodentia-first-female-dataset-121 = Furwell +names-rodentia-first-female-dataset-122 = Furwood +names-rodentia-first-female-dataset-123 = Gnawson +names-rodentia-first-female-dataset-124 = Linden +names-rodentia-first-female-dataset-125 = Little +names-rodentia-first-female-dataset-126 = Maplewood +names-rodentia-first-female-dataset-127 = Meadows +names-rodentia-first-female-dataset-128 = Munchford +names-rodentia-first-female-dataset-129 = Nibblesnout +names-rodentia-first-female-dataset-130 = Nibbleston +names-rodentia-first-female-dataset-131 = Nibblewood +names-rodentia-first-female-dataset-132 = Oakcroft +names-rodentia-first-female-dataset-133 = Oakley +names-rodentia-first-female-dataset-134 = Pawsbrook +names-rodentia-first-female-dataset-135 = Pawsford +names-rodentia-first-female-dataset-136 = Pawsley +names-rodentia-first-female-dataset-137 = Pawswell +names-rodentia-first-female-dataset-138 = Pawsworth +names-rodentia-first-female-dataset-139 = Scamperdale +names-rodentia-first-female-dataset-140 = Scamperford +names-rodentia-first-female-dataset-141 = Scamperley +names-rodentia-first-female-dataset-142 = Scamperwood +names-rodentia-first-female-dataset-143 = Scurryfoot +names-rodentia-first-female-dataset-144 = Scuttleby +names-rodentia-first-female-dataset-145 = Skitters +names-rodentia-first-female-dataset-146 = Stilton +names-rodentia-first-female-dataset-147 = Squeakerton +names-rodentia-first-female-dataset-148 = Squeakson +names-rodentia-first-female-dataset-149 = Squeaktooth +names-rodentia-first-female-dataset-150 = Squeakwell +names-rodentia-first-female-dataset-151 = Squeakwood +names-rodentia-first-female-dataset-152 = Tailsbury +names-rodentia-first-female-dataset-153 = Thumperton +names-rodentia-first-female-dataset-154 = Thumpford +names-rodentia-first-female-dataset-155 = Whiskerby +names-rodentia-first-female-dataset-156 = Whiskerfield +names-rodentia-first-female-dataset-157 = Whiskershire +names-rodentia-first-female-dataset-158 = Whiskersnout +names-rodentia-first-female-dataset-159 = Whiskervale diff --git a/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_male.ftl b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_male.ftl new file mode 100644 index 0000000000..ee49397d8e --- /dev/null +++ b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_first_male.ftl @@ -0,0 +1,183 @@ +# generic names +names-rodentia-first-male-dataset-1 = Squeaks +names-rodentia-first-male-dataset-2 = Squeaker +names-rodentia-first-male-dataset-3 = Nibbles +names-rodentia-first-male-dataset-4 = Pebbles +names-rodentia-first-male-dataset-5 = Peanut +names-rodentia-first-male-dataset-6 = Pinky +names-rodentia-first-male-dataset-7 = Gadget +names-rodentia-first-male-dataset-8 = Scurry +names-rodentia-first-male-dataset-9 = Scamper +names-rodentia-first-male-dataset-10 = Chitters +names-rodentia-first-male-dataset-11 = Quill +names-rodentia-first-male-dataset-12 = Whiskers +names-rodentia-first-male-dataset-13 = Wiggles +names-rodentia-first-male-dataset-14 = Button +names-rodentia-first-male-dataset-15 = Sniffles +names-rodentia-first-male-dataset-16 = Chip +names-rodentia-first-male-dataset-17 = Pipsqueak +names-rodentia-first-male-dataset-18 = Nugget +names-rodentia-first-male-dataset-19 = Comet +names-rodentia-first-male-dataset-20 = Dash +names-rodentia-first-male-dataset-21 = Fudge +names-rodentia-first-male-dataset-22 = Noodle +names-rodentia-first-male-dataset-23 = Spud +names-rodentia-first-male-dataset-24 = Muffin +names-rodentia-first-male-dataset-25 = Sprout +names-rodentia-first-male-dataset-26 = Jelly +names-rodentia-first-male-dataset-27 = Fuzz +names-rodentia-first-male-dataset-28 = Cheddar +names-rodentia-first-male-dataset-29 = Tootsie +names-rodentia-first-male-dataset-30 = Pickle +names-rodentia-first-male-dataset-31 = Berry + +# gender-neutral +names-rodentia-first-male-dataset-32 = Alex +names-rodentia-first-male-dataset-33 = Riley +names-rodentia-first-male-dataset-34 = Taylor +names-rodentia-first-male-dataset-35 = Jordan +names-rodentia-first-male-dataset-36 = Casey +names-rodentia-first-male-dataset-37 = Avery +names-rodentia-first-male-dataset-38 = Morgan +names-rodentia-first-male-dataset-39 = Jamie +names-rodentia-first-male-dataset-40 = Quinn +names-rodentia-first-male-dataset-41 = Charlie +names-rodentia-first-male-dataset-42 = Dakota +names-rodentia-first-male-dataset-43 = Sydney +names-rodentia-first-male-dataset-44 = Parker +names-rodentia-first-male-dataset-45 = Cameron +names-rodentia-first-male-dataset-46 = Finley +names-rodentia-first-male-dataset-47 = Robin +names-rodentia-first-male-dataset-48 = Emery +names-rodentia-first-male-dataset-49 = Kendall +names-rodentia-first-male-dataset-50 = Rowan +names-rodentia-first-male-dataset-51 = Sawyer +names-rodentia-first-male-dataset-52 = Bailey +names-rodentia-first-male-dataset-53 = Jaden +names-rodentia-first-male-dataset-54 = Addison +names-rodentia-first-male-dataset-55 = Logan +names-rodentia-first-male-dataset-56 = Devon +names-rodentia-first-male-dataset-57 = Lane +names-rodentia-first-male-dataset-58 = Blair +names-rodentia-first-male-dataset-59 = Drew +names-rodentia-first-male-dataset-60 = Jesse +names-rodentia-first-male-dataset-61 = Skylar +names-rodentia-first-male-dataset-62 = Sam +names-rodentia-first-male-dataset-63 = Reese +names-rodentia-first-male-dataset-64 = Terry +names-rodentia-first-male-dataset-65 = Marley +names-rodentia-first-male-dataset-66 = Elliot +names-rodentia-first-male-dataset-67 = Harper +names-rodentia-first-male-dataset-68 = Jules +names-rodentia-first-male-dataset-69 = Ren +names-rodentia-first-male-dataset-70 = Sloane +names-rodentia-first-male-dataset-71 = Rylan +names-rodentia-first-male-dataset-72 = Sage + +# masculine names +names-rodentia-first-male-dataset-73 = Basil +names-rodentia-first-male-dataset-74 = Jerry +names-rodentia-first-male-dataset-75 = Stuart +names-rodentia-first-male-dataset-76 = Bert +names-rodentia-first-male-dataset-77 = Jack +names-rodentia-first-male-dataset-78 = Remy +names-rodentia-first-male-dataset-79 = Geronimo +names-rodentia-first-male-dataset-80 = Dale +names-rodentia-first-male-dataset-81 = Flint +names-rodentia-first-male-dataset-82 = Quincy +names-rodentia-first-male-dataset-83 = Oliver +names-rodentia-first-male-dataset-84 = Max +names-rodentia-first-male-dataset-85 = Leo +names-rodentia-first-male-dataset-86 = Milo +names-rodentia-first-male-dataset-87 = Teddy +names-rodentia-first-male-dataset-88 = Finn +names-rodentia-first-male-dataset-89 = Jasper +names-rodentia-first-male-dataset-90 = Simon +names-rodentia-first-male-dataset-91 = Louie +names-rodentia-first-male-dataset-92 = Toby +names-rodentia-first-male-dataset-93 = Henry +names-rodentia-first-male-dataset-94 = Oscar +names-rodentia-first-male-dataset-95 = Felix +names-rodentia-first-male-dataset-96 = George +names-rodentia-first-male-dataset-97 = Archie +names-rodentia-first-male-dataset-98 = Hugo +names-rodentia-first-male-dataset-99 = Benny +names-rodentia-first-male-dataset-100 = Eli +names-rodentia-first-male-dataset-101 = Lucas +names-rodentia-first-male-dataset-102 = Rufus +names-rodentia-first-male-dataset-103 = Gus +names-rodentia-first-male-dataset-104 = Alfie +names-rodentia-first-male-dataset-105 = Monty +names-rodentia-first-male-dataset-106 = Clyde +names-rodentia-first-male-dataset-107 = Cosmo +names-rodentia-first-male-dataset-108 = Ziggy +names-rodentia-first-male-dataset-109 = Freddie +names-rodentia-first-male-dataset-110 = Chester +names-rodentia-first-male-dataset-111 = Rocco +names-rodentia-first-male-dataset-112 = Perry +names-rodentia-first-male-dataset-113 = Mickey +names-rodentia-first-male-dataset-114 = Tim +names-rodentia-first-male-dataset-115 = Chuck +names-rodentia-first-male-dataset-116 = Frankie +names-rodentia-first-male-dataset-117 = Willie +names-rodentia-first-male-dataset-118 = Alvin +names-rodentia-first-male-dataset-119 = Vinny +names-rodentia-first-male-dataset-120 = Harvey +names-rodentia-first-male-dataset-121 = Rudy +names-rodentia-first-male-dataset-122 = Ollie +names-rodentia-first-male-dataset-123 = Percy +names-rodentia-first-male-dataset-124 = Theo +names-rodentia-first-male-dataset-125 = Winston +names-rodentia-first-male-dataset-126 = Ernie + +# "surnames" +names-rodentia-first-male-dataset-127 = Bramblewood +names-rodentia-first-male-dataset-128 = Burrows +names-rodentia-first-male-dataset-129 = Burrowsford +names-rodentia-first-male-dataset-130 = Cheesetail +names-rodentia-first-male-dataset-131 = Cloverfield +names-rodentia-first-male-dataset-132 = Cloverwood +names-rodentia-first-male-dataset-133 = Ferncroft +names-rodentia-first-male-dataset-134 = Flopshire +names-rodentia-first-male-dataset-135 = Flopshire +names-rodentia-first-male-dataset-136 = Fluffbottom +names-rodentia-first-male-dataset-137 = Furrington +names-rodentia-first-male-dataset-138 = Furwell +names-rodentia-first-male-dataset-139 = Furwood +names-rodentia-first-male-dataset-140 = Gnawson +names-rodentia-first-male-dataset-141 = Linden +names-rodentia-first-male-dataset-142 = Little +names-rodentia-first-male-dataset-143 = Maplewood +names-rodentia-first-male-dataset-144 = Meadows +names-rodentia-first-male-dataset-145 = Munchford +names-rodentia-first-male-dataset-146 = Nibblesnout +names-rodentia-first-male-dataset-147 = Nibbleston +names-rodentia-first-male-dataset-148 = Nibblewood +names-rodentia-first-male-dataset-149 = Oakcroft +names-rodentia-first-male-dataset-150 = Oakley +names-rodentia-first-male-dataset-151 = Pawsbrook +names-rodentia-first-male-dataset-152 = Pawsford +names-rodentia-first-male-dataset-153 = Pawsley +names-rodentia-first-male-dataset-154 = Pawswell +names-rodentia-first-male-dataset-155 = Pawsworth +names-rodentia-first-male-dataset-156 = Scamperdale +names-rodentia-first-male-dataset-157 = Scamperford +names-rodentia-first-male-dataset-158 = Scamperley +names-rodentia-first-male-dataset-159 = Scamperwood +names-rodentia-first-male-dataset-160 = Scurryfoot +names-rodentia-first-male-dataset-161 = Scuttleby +names-rodentia-first-male-dataset-162 = Skitters +names-rodentia-first-male-dataset-163 = Stilton +names-rodentia-first-male-dataset-164 = Squeakerton +names-rodentia-first-male-dataset-165 = Squeakson +names-rodentia-first-male-dataset-166 = Squeaktooth +names-rodentia-first-male-dataset-167 = Squeakwell +names-rodentia-first-male-dataset-168 = Squeakwood +names-rodentia-first-male-dataset-169 = Tailsbury +names-rodentia-first-male-dataset-170 = Thumperton +names-rodentia-first-male-dataset-171 = Thumpford +names-rodentia-first-male-dataset-172 = Whiskerby +names-rodentia-first-male-dataset-173 = Whiskerfield +names-rodentia-first-male-dataset-174 = Whiskershire +names-rodentia-first-male-dataset-175 = Whiskersnout +names-rodentia-first-male-dataset-176 = Whiskervale diff --git a/Resources/Locale/en-US/_DEN/datasets/names/rodentia_last.ftl b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_last.ftl new file mode 100644 index 0000000000..6e04828aeb --- /dev/null +++ b/Resources/Locale/en-US/_DEN/datasets/names/rodentia_last.ftl @@ -0,0 +1,86 @@ +names-rodentia-last-dataset-1 = Agile +names-rodentia-last-dataset-2 = Beady-eyed +names-rodentia-last-dataset-3 = Berry-picking +names-rodentia-last-dataset-4 = Big +names-rodentia-last-dataset-5 = Big-ears +names-rodentia-last-dataset-6 = Big-eyed +names-rodentia-last-dataset-7 = Big-heart +names-rodentia-last-dataset-8 = Big-nose +names-rodentia-last-dataset-9 = Blunt-nose +names-rodentia-last-dataset-10 = Brave +names-rodentia-last-dataset-11 = Break-neck +names-rodentia-last-dataset-12 = Bright +names-rodentia-last-dataset-13 = Bright-eyed +names-rodentia-last-dataset-14 = Cheeky +names-rodentia-last-dataset-15 = Crafty +names-rodentia-last-dataset-16 = Cunning +names-rodentia-last-dataset-17 = Curious +names-rodentia-last-dataset-18 = Day-sleeping +names-rodentia-last-dataset-19 = Eager +names-rodentia-last-dataset-20 = Fast-moving +names-rodentia-last-dataset-21 = Fast-paws +names-rodentia-last-dataset-22 = Fat +names-rodentia-last-dataset-23 = Fidgety +names-rodentia-last-dataset-24 = Food-stealing +names-rodentia-last-dataset-25 = Gentle +names-rodentia-last-dataset-26 = Great +names-rodentia-last-dataset-27 = Greedy +names-rodentia-last-dataset-28 = Grumpy +names-rodentia-last-dataset-29 = Hasty +names-rodentia-last-dataset-30 = High-jumping +names-rodentia-last-dataset-31 = Jumpy +names-rodentia-last-dataset-32 = Keen +names-rodentia-last-dataset-33 = Keen-eyes +names-rodentia-last-dataset-34 = Light-foot +names-rodentia-last-dataset-35 = Little +names-rodentia-last-dataset-36 = Long +names-rodentia-last-dataset-37 = Long-ears +names-rodentia-last-dataset-38 = Long-legged +names-rodentia-last-dataset-39 = Long-snout +names-rodentia-last-dataset-40 = Long-tail +names-rodentia-last-dataset-41 = Long-tooth +names-rodentia-last-dataset-42 = Night-hunting +names-rodentia-last-dataset-43 = Nimble +names-rodentia-last-dataset-44 = No-eyes +names-rodentia-last-dataset-45 = No-tail +names-rodentia-last-dataset-46 = Nosy +names-rodentia-last-dataset-47 = Quick-footed +names-rodentia-last-dataset-48 = Quick-wits +names-rodentia-last-dataset-49 = Quiet +names-rodentia-last-dataset-50 = Ravenous +names-rodentia-last-dataset-51 = Restless +names-rodentia-last-dataset-52 = Rough +names-rodentia-last-dataset-53 = Round-belly +names-rodentia-last-dataset-54 = Rowdy +names-rodentia-last-dataset-55 = Seed-stashing +names-rodentia-last-dataset-56 = Shadow-dwelling +names-rodentia-last-dataset-57 = Sharp +names-rodentia-last-dataset-58 = Sharp-clawed +names-rodentia-last-dataset-59 = Shifty +names-rodentia-last-dataset-60 = Shiny-eyes +names-rodentia-last-dataset-61 = Short-ears +names-rodentia-last-dataset-62 = Short-legged +names-rodentia-last-dataset-63 = Short-snout +names-rodentia-last-dataset-64 = Short-tail +names-rodentia-last-dataset-65 = Shy +names-rodentia-last-dataset-66 = Silent +names-rodentia-last-dataset-67 = Silver-tongue +names-rodentia-last-dataset-68 = Skittish +names-rodentia-last-dataset-69 = Small-ears +names-rodentia-last-dataset-70 = Small-nose +names-rodentia-last-dataset-71 = Sneaky +names-rodentia-last-dataset-72 = Soft-fur +names-rodentia-last-dataset-73 = Soft-paws +names-rodentia-last-dataset-74 = Squeaking +names-rodentia-last-dataset-75 = Squeaky +names-rodentia-last-dataset-76 = Stout +names-rodentia-last-dataset-77 = Stubborn +names-rodentia-last-dataset-78 = Stubby +names-rodentia-last-dataset-79 = Sweet +names-rodentia-last-dataset-80 = Swift +names-rodentia-last-dataset-81 = Thick-fur +names-rodentia-last-dataset-82 = Thick-skin +names-rodentia-last-dataset-83 = Thieving +names-rodentia-last-dataset-84 = Trash-eating +names-rodentia-last-dataset-85 = Tunnel-building +names-rodentia-last-dataset-86 = Whisker-twitching diff --git a/Resources/Locale/en-US/_DEN/species/species.ftl b/Resources/Locale/en-US/_DEN/species/species.ftl new file mode 100644 index 0000000000..9d05943c31 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/species/species.ftl @@ -0,0 +1 @@ +species-name-rodentia = Rodentia diff --git a/Resources/Locale/en-US/_DEN/tool/tool-interaction-component.ftl b/Resources/Locale/en-US/_DEN/tool/tool-interaction-component.ftl new file mode 100644 index 0000000000..391bffa470 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/tool/tool-interaction-component.ftl @@ -0,0 +1,2 @@ +action-popup-tool-interaction-enabled = Tool interaction enabled +action-popup-tool-interaction-disabled = Tool interaction disabled diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 2abfba6732..2dea1bb83d 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -509,6 +509,9 @@ radius: 1.5 energy: 2.0 color: "#ad7c4b" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineHotDrinks - type: entity parent: VendingMachine @@ -545,6 +548,9 @@ radius: 1.5 energy: 3.0 color: "#3c5eb5" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineCola - type: entity parent: VendingMachineCola @@ -609,6 +615,9 @@ radius: 1.5 energy: 3.0 color: "#44964A" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineSpaceUp - type: entity parent: VendingMachineCola @@ -631,6 +640,9 @@ radius: 1.5 energy: 3.0 color: "#CBC6BE" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineSoda - type: entity parent: VendingMachineCola @@ -654,6 +666,9 @@ radius: 1.5 energy: 3.0 color: "#D3A44D" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineStarkist - type: entity parent: VendingMachine @@ -688,6 +703,9 @@ radius: 1.5 energy: 3.0 color: "#66538F" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineShamblersJuice - type: entity parent: VendingMachine @@ -724,6 +742,9 @@ radius: 1.5 energy: 3.0 color: "#6927C5" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineShamblersJuice - type: entity parent: VendingMachine @@ -760,6 +781,9 @@ radius: 1.5 energy: 3.0 color: "#D82929" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineDrGibb - type: entity parent: VendingMachine @@ -796,6 +820,9 @@ radius: 1.5 energy: 3.0 color: "#00E645" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineSmite - type: entity parent: VendingMachine @@ -892,6 +919,9 @@ radius: 1.5 energy: 3.0 color: "#6148c7" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineDiscountDans - type: entity parent: VendingMachine @@ -1126,6 +1156,9 @@ radius: 1.5 energy: 3.0 color: "#c73434" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineGetmoreChocolate - type: entity parent: VendingMachineSnack @@ -1156,6 +1189,9 @@ radius: 1.5 energy: 3.0 color: "#737785" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineSustenance - type: entity parent: VendingMachineSnack @@ -1273,6 +1309,9 @@ energy: 3.0 color: "#389690" - type: RussianAccent + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineBoda - type: entity parent: VendingMachine @@ -1471,6 +1510,9 @@ radius: 1.5 energy: 3.0 color: "#ffe599" + - type: Rummageable # DEN - make rummageable + table: !type:NestedSelector + tableId: RummageableVendingMachineChang - type: entity parent: VendingMachine diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index c13dfa6107..b94ab7f324 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -15,6 +15,7 @@ - Human - Moth - Reptilian + - Rodentia # DEN - SlimePerson - Vox - Vulpkanin diff --git a/Resources/Prototypes/_DEN/Actions/species.yml b/Resources/Prototypes/_DEN/Actions/species.yml new file mode 100644 index 0000000000..e59709eeb1 --- /dev/null +++ b/Resources/Prototypes/_DEN/Actions/species.yml @@ -0,0 +1,9 @@ +- type: entity + parent: ActionToolInteractionToggle + id: ActionGnawingToggle + name: "[color=cyan]Gnawing[/color]" + description: Use your teeth as a [color=yellow]Cutting[/color] tool. + +- type: entity + parent: [ActionGnawingToggle, ActionToolInteractionToggleOff] + id: ActionGnawingToggleOff diff --git a/Resources/Prototypes/_DEN/Actions/types.yml b/Resources/Prototypes/_DEN/Actions/types.yml new file mode 100644 index 0000000000..06db770252 --- /dev/null +++ b/Resources/Prototypes/_DEN/Actions/types.yml @@ -0,0 +1,22 @@ +# mental actions + +- type: entity + parent: BaseMentalAction + id: ActionToolInteractionToggle + name: "[color=cyan]Tool Interaction[/color]" + description: Use your empty hand as a tool + components: + - type: Action + icon: Interface/Actions/harmOff.png + iconOn: Interface/Actions/harm.png + priority: -90 + - type: InstantAction + event: !type:ToggleToolInteractionActionEvent + +- type: entity + parent: ActionToolInteractionToggle + id: ActionToolInteractionToggleOff + components: + - type: Action + enabled: false + autoPopulate: false diff --git a/Resources/Prototypes/_DEN/Body/Species/rodentia.yml b/Resources/Prototypes/_DEN/Body/Species/rodentia.yml new file mode 100644 index 0000000000..402a0a6b9c --- /dev/null +++ b/Resources/Prototypes/_DEN/Body/Species/rodentia.yml @@ -0,0 +1,251 @@ +- type: markingsGroup + parent: Undergarments + id: Rodentia + limits: + enum.HumanoidVisualLayers.Hair: + limit: 1 + required: false + enum.HumanoidVisualLayers.FacialHair: + limit: 1 + required: false + enum.HumanoidVisualLayers.Head: + limit: 6 + required: false + enum.HumanoidVisualLayers.Chest: + limit: 6 + required: false + enum.HumanoidVisualLayers.LArm: + limit: 6 + required: false + enum.HumanoidVisualLayers.RArm: + limit: 6 + required: false + enum.HumanoidVisualLayers.LLeg: + limit: 6 + required: false + enum.HumanoidVisualLayers.RLeg: + limit: 6 + required: false + enum.HumanoidVisualLayers.Overlay: + limit: 6 + required: true + enum.HumanoidVisualLayers.HeadTop: + limit: 6 + required: true + default: [ RodentiaHeadTopEarDefault ] + enum.HumanoidVisualLayers.HeadSide: + limit: 6 + required: false + enum.HumanoidVisualLayers.Tail: + limit: 1 + required: true + default: [ RodentiaTail ] + enum.HumanoidVisualLayers.Snout: + limit: 1 + required: false + +# region Entities + +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceRodentia + categories: [ HideSpawnMenu ] + name: rodentia appearance + components: + - type: Inventory + speciesId: rodentia + - type: InitialBody + organs: + # External + Torso: OrganRodentiaTorso + Head: OrganRodentiaHead + ArmLeft: OrganRodentiaArmLeft + ArmRight: OrganRodentiaArmRight + HandRight: OrganRodentiaHandRight + HandLeft: OrganRodentiaHandLeft + LegLeft: OrganRodentiaLegLeft + LegRight: OrganRodentiaLegRight + FootLeft: OrganRodentiaFootLeft + FootRight: OrganRodentiaFootRight + # Internal + Brain: OrganRodentiaBrain + Eyes: OrganRodentiaEyes + Tongue: OrganRodentiaTongue + Appendix: OrganRodentiaAppendix + Ears: OrganRodentiaEars + Lungs: OrganRodentiaLungs + Heart: OrganRodentiaHeart + Stomach: OrganRodentiaStomach + Liver: OrganRodentiaLiver + Kidneys: OrganRodentiaKidneys + - type: HumanoidProfile + species: Rodentia + +- type: entity + parent: + - AppearanceRodentia + - BaseSpeciesMobOrganic + id: MobRodentia + name: Urist McRat + components: + - type: Hunger # Faster hunger rate + decayRateMultiplier: 1.33 + - type: MobThresholds # Lower crit + death threshold + thresholds: + 0: Alive + 90: Critical + 180: Dead + - type: Damageable # More shock + brute damage + damageModifierSet: Rodentia + - type: MeleeWeapon # Use teeth to deal sharp and piercing damage + angle: 0 + animation: WeaponArcBite + damage: + types: + Piercing: 3 + Slash: 2 + - type: Rummager # Can rummage through objects + - type: ToolOrganPerformer + +# region Base organs + +- type: entity + parent: OrganBaseOrganic + id: OrganRodentia + abstract: true + suffix: Rodentia + +- type: entity + id: OrganRodentiaMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal, Detritivore ] + +- type: entity + parent: OrganRodentia + id: OrganRodentiaInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi # TODO: Rodentia organ sprites? + +- type: entity + id: OrganRodentiaVisual + abstract: true + components: + - type: VisualOrgan + data: + sprite: &rodentiaSprite _DEN/Mobs/Species/Rodentia/parts.rsi + - type: VisualOrganMarkings + markingData: + group: Rodentia + +- type: entity + parent: [ OrganRodentia, OrganRodentiaVisual ] + id: OrganRodentiaExternal + abstract: true + components: + - type: Sprite + sprite: *rodentiaSprite + +# region External + +- type: entity + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganRodentiaExternal ] + id: OrganRodentiaTorso + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Tail + +- type: entity + parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganRodentiaExternal ] + id: OrganRodentiaHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Snout + - enum.HumanoidVisualLayers.HeadTop + - enum.HumanoidVisualLayers.HeadSide + - type: ToolOrgan # Incisors + toolToggleAction: ActionGnawingToggle + item: Wirecutter + +- type: entity + parent: [ OrganBaseArmLeft, OrganRodentiaExternal ] + id: OrganRodentiaArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganRodentiaExternal ] + id: OrganRodentiaArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganRodentiaExternal ] + id: OrganRodentiaHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganRodentiaExternal ] + id: OrganRodentiaHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganRodentiaExternal ] + id: OrganRodentiaLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganRodentiaExternal ] + id: OrganRodentiaLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganRodentiaExternal ] + id: OrganRodentiaFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganRodentiaExternal ] + id: OrganRodentiaFootRight + +# region Internal + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganRodentiaInternal ] + id: OrganRodentiaBrain + +- type: entity + parent: [ OrganBaseEyes, OrganRodentiaInternal, OrganRodentiaExternal ] + id: OrganRodentiaEyes + components: + - type: VisualOrgan + data: + sprite: Mobs/Customization/eyes.rsi + +- type: entity + parent: [ OrganBaseTongue, OrganRodentiaInternal ] + id: OrganRodentiaTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganRodentiaInternal ] + id: OrganRodentiaAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganRodentiaInternal ] + id: OrganRodentiaEars + +- type: entity + parent: [ OrganBaseLungs, OrganRodentiaInternal, OrganRodentiaMetabolizer ] + id: OrganRodentiaLungs + +- type: entity + parent: [ OrganBaseHeart, OrganRodentiaInternal, OrganRodentiaMetabolizer ] + id: OrganRodentiaHeart + +- type: entity + parent: [ OrganBaseStomach, OrganRodentiaInternal, OrganRodentiaMetabolizer ] + id: OrganRodentiaStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganRodentiaInternal, OrganRodentiaMetabolizer ] + id: OrganRodentiaLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganRodentiaInternal, OrganRodentiaMetabolizer ] + id: OrganRodentiaKidneys diff --git a/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/drinks.yml b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/drinks.yml new file mode 100644 index 0000000000..e72ec8ae46 --- /dev/null +++ b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/drinks.yml @@ -0,0 +1,361 @@ +- type: entityTable + id: RummageableVendingMachineBoda + table: !type:GroupSelector + children: + - &lootGeneric + !type:NestedSelector + tableId: RummageableVendingMachineGeneric + weight: 50 + - !type:NestedSelector + tableId: TrashVendingMachineBoda + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineBoda + weight: 20 + +- type: entityTable + id: RummageableVendingMachineCola + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineCola + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineCola + weight: 20 + +- type: entityTable + id: RummageableVendingMachineDrGibb + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineDrGibb + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineDrGibb + weight: 20 + +- type: entityTable + id: RummageableVendingMachineHotDrinks + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineHotDrinks + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineHotDrinks + weight: 20 + +- type: entityTable + id: RummageableVendingMachinePwrGame + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachinePwrGame + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachinePwrGame + weight: 20 + +- type: entityTable + id: RummageableVendingMachineShamblersJuice + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineShamblersJuice + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineShamblersJuice + weight: 20 + +- type: entityTable + id: RummageableVendingMachineSmite + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineSmite + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineSmite + weight: 20 + +- type: entityTable + id: RummageableVendingMachineSoda + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineSoda + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineSoda + weight: 20 + +- type: entityTable + id: RummageableVendingMachineSpaceUp + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineSpaceUp + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineSpaceUp + weight: 20 + +- type: entityTable + id: RummageableVendingMachineStarkist + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineStarkist + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineStarkist + weight: 20 + +## Common + +- type: entityTable + id: LootVendingMachineDrinksCommon + table: !type:GroupSelector + children: + - id: DrinkGrapeCan + - id: DrinkRootBeerCan + - id: DrinkIcedTeaCan + - id: DrinkSolDryCan + - id: DrinkFourteenLokoCan + - id: DrinkChangelingStingCan + +- type: entityTable + id: TrashVendingMachineDrinksCommon + table: !type:GroupSelector + children: + - id: DrinkGrapeCanEmpty + - id: DrinkRootBeerCanEmpty + - id: DrinkIcedTeaCanEmpty + - id: DrinkSolDryCanEmpty + - id: DrinkFourteenLokoCanEmpty + - id: DrinkChangelingStingCanEmpty + +# Loot + +- type: entityTable + id: LootVendingMachineBoda + table: !type:GroupSelector + children: + - id: DrinkSodaWaterCan + weight: 5 + - id: DrinkColaCan + +- type: entityTable + id: LootVendingMachineCola + table: !type:GroupSelector + children: + - id: DrinkColaCan + weight: 2 + - id: DrinkLemonLimeCan + - id: DrinkLemonLimeCranberryCan + - &commonLootDrinks + !type:NestedSelector + tableId: LootVendingMachineDrinksCommon + weight: 6 + +- type: entityTable + id: LootVendingMachineDrGibb + table: !type:GroupSelector + children: + - id: DrinkDrGibbCan + - id: DrinkLemonLimeCan + - id: DrinkLemonLimeCranberryCan + weight: 3 + - *commonLootDrinks + +- type: entityTable + id: LootVendingMachineHotDrinks + table: !type:GroupSelector + children: + - id: DrinkHotCoffee + - id: DrinkCafeLatte + - id: DrinkTeacup + - id: DrinkGreenTea + - id: DrinkHotCoco + +- type: entityTable + id: LootVendingMachinePwrGame + table: !type:GroupSelector + children: + - id: DrinkPwrGameCan + weight: 2 + - id: DrinkEnergyDrinkCan + weight: 2 + - id: DrinkDrGibbCan + weight: 1.5 + - *commonLootDrinks + +- type: entityTable + id: LootVendingMachineShamblersJuice + table: !type:GroupSelector + children: + - id: DrinkShamblersJuiceCan + weight: 2 + - id: DrinkLemonLimeCan + - id: DrinkLemonLimeCranberryCan + - *commonLootDrinks + +- type: entityTable + id: LootVendingMachineSmite + table: !type:GroupSelector + children: + - id: DrinkLemonLimeCan + weight: 4 + - id: DrinkLemonLimeCranberryCan + weight: 3 + - id: DrinkColaCan + - id: DrinkSolDryCan + - id: DrinkStarkistCan + - id: DrinkChangelingStingCan + +- type: entityTable + id: LootVendingMachineSoda + table: !type:GroupSelector + children: + - id: DrinkColaCan + weight: 2 + - id: DrinkLemonLimeCan + - id: DrinkLemonLimeCranberryCan + - *commonLootDrinks + +- type: entityTable + id: LootVendingMachineSpaceUp + table: !type:GroupSelector + children: + - id: DrinkSpaceUpCan + weight: 3 + - id: DrinkSpaceMountainWindCan + weight: 3 + - *commonLootDrinks + +- type: entityTable + id: LootVendingMachineStarkist + table: !type:GroupSelector + children: + - id: DrinkStarkistCan + weight: 3 + - id: DrinkLemonLimeCan + - id: DrinkLemonLimeCranberryCan + - *commonLootDrinks + +# Trash + +- type: entityTable + id: TrashVendingMachineBoda + table: !type:GroupSelector + children: + - id: DrinkSodaWaterCanEmpty + weight: 5 + - id: DrinkColaCanEmpty + +- type: entityTable + id: TrashVendingMachineCola + table: !type:GroupSelector + children: + - id: DrinkColaCanEmpty + weight: 2 + - id: DrinkLemonLimeCanEmpty + - id: DrinkLemonLimeCranberryCanEmpty + - &commonTrashDrinks + !type:NestedSelector + tableId: TrashVendingMachineDrinksCommon + weight: 6 + +- type: entityTable + id: TrashVendingMachineDrGibb + table: !type:GroupSelector + children: + - id: DrinkDrGibbCanEmpty + - id: DrinkLemonLimeCanEmpty + - id: DrinkLemonLimeCranberryCanEmpty + weight: 3 + - *commonTrashDrinks + +- type: entityTable + id: TrashVendingMachineHotDrinks + table: !type:GroupSelector + children: + - id: DrinkHotCoffeeEmpty + - id: DrinkCafeLatteEmpty + - id: DrinkTeacupEmpty + - id: DrinkGreenTeaEmpty + - id: DrinkHotCocoEmpty + +- type: entityTable + id: TrashVendingMachinePwrGame + table: !type:GroupSelector + children: + - id: DrinkPwrGameCanEmpty + weight: 2 + - id: DrinkEnergyDrinkCanEmpty + weight: 2 + - id: DrinkDrGibbCanEmpty + weight: 1.5 + - *commonTrashDrinks + +- type: entityTable + id: TrashVendingMachineShamblersJuice + table: !type:GroupSelector + children: + - id: DrinkShamblersJuiceCanEmpty + weight: 2 + - id: DrinkLemonLimeCanEmpty + - id: DrinkLemonLimeCranberryCanEmpty + - *commonTrashDrinks + +- type: entityTable + id: TrashVendingMachineSmite + table: !type:GroupSelector + children: + - id: DrinkLemonLimeCanEmpty + weight: 4 + - id: DrinkLemonLimeCranberryCanEmpty + weight: 3 + - id: DrinkColaCanEmpty + - id: DrinkSolDryCanEmpty + - id: DrinkStarkistCanEmpty + - id: DrinkChangelingStingCanEmpty + +- type: entityTable + id: TrashVendingMachineSoda + table: !type:GroupSelector + children: + - id: DrinkColaCanEmpty + - id: DrinkLemonLimeCanEmpty + - id: DrinkLemonLimeCranberryCanEmpty + - *commonTrashDrinks + +- type: entityTable + id: TrashVendingMachineSpaceUp + table: !type:GroupSelector + children: + - id: DrinkSpaceUpCanEmpty + weight: 3 + - id: DrinkSpaceMountainWindCanEmpty + weight: 3 + - *commonTrashDrinks + +- type: entityTable + id: TrashVendingMachineStarkist + table: !type:GroupSelector + children: + - id: DrinkStarkistCanEmpty + weight: 3 + - id: DrinkLemonLimeCanEmpty + - id: DrinkLemonLimeCranberryCanEmpty + - *commonTrashDrinks diff --git a/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/food.yml b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/food.yml new file mode 100644 index 0000000000..4e04d203e3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/food.yml @@ -0,0 +1,158 @@ +- type: entityTable + id: RummageableVendingMachineChang + table: !type:GroupSelector + children: + - &lootGeneric + !type:NestedSelector + tableId: RummageableVendingMachineGeneric + weight: 50 + - !type:NestedSelector + tableId: TrashVendingMachineChang + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineChang + weight: 20 + +- type: entityTable + id: RummageableVendingMachineDiscountDans + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineDiscountDans + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineDiscountDans + weight: 20 + +- type: entityTable + id: RummageableVendingMachineGetmoreChocolate + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineGetmoreChocolate + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineGetmoreChocolate + weight: 20 + +- type: entityTable + id: RummageableVendingMachineSustenance + table: !type:GroupSelector + children: + - *lootGeneric + - !type:NestedSelector + tableId: TrashVendingMachineSustenance + weight: 30 + - !type:NestedSelector + tableId: LootVendingMachineSustenance + weight: 20 + +## Loot + +- type: entityTable + id: LootVendingMachineChang + table: !type:GroupSelector + children: + - id: FoodCondimentPacketSoy + - id: FoodSnackCookieFortune + - id: DrinkRamen + - id: DrinkHellRamen + - id: FoodSnackChowMein + - id: FoodSnackDanDanNoodles + +- type: entityTable + id: LootVendingMachineDiscountDans + table: !type:GroupSelector + children: + - id: FoodSnackCheesie + - id: FoodSnackChips + - id: FoodSnackBoritos + - id: DrinkEnergyDrinkCan + - id: FoodSnackPopcorn + - id: FoodSnackEnergy + - id: FoodSnackDanDanNoodles + +- type: entityTable + id: LootVendingMachineGetmoreChocolate + table: !type:GroupSelector + children: + - id: FoodSnackRaisins + - id: FoodSnackChocolate + - id: FoodSnackCnDs + - id: FoodSnackPistachios + - id: FoodSnackSus + - id: FoodSnackSemki + - id: FoodSnackSyndi + weight: 0.5 + +- type: entityTable + id: LootVendingMachineSustenance + table: !type:GroupSelector + children: + - id: DrinkMREFlask + - id: FoodSnackNutribrick + - id: FoodSnackMREBrownie + - id: FoodCondimentPacketKetchup + - !type:GroupSelector + weight: 0.5 + children: + - id: FoodTinMRE + - id: FoodTinBeans + - id: FoodTinPeaches + - id: DrinkBeerCan + weight: 0.5 + +## Trash + +- type: entityTable + id: TrashVendingMachineChang + table: !type:GroupSelector + children: + - id: FoodCondimentPacketEmpty + - id: FoodCookieFortune + - id: FoodPacketCupRamenTrash + - id: FoodPacketChowMeinTrash + - id: FoodPacketDanDanTrash + +- type: entityTable + id: TrashVendingMachineDiscountDans + table: !type:GroupSelector + children: + - id: FoodPacketCheesieTrash + - id: FoodPacketChipsTrash + - id: FoodPacketBoritosTrash + - id: DrinkEnergyDrinkCanEmpty + - id: FoodPacketPopcornTrash + - id: FoodPacketEnergyTrash + - id: FoodPacketDanDanTrash + +- type: entityTable + id: TrashVendingMachineGetmoreChocolate + table: !type:GroupSelector + children: + - id: FoodPacketRaisinsTrash + - id: FoodPacketChocolateTrash + - id: FoodPacketCnDsTrash + - id: FoodPacketPistachioTrash + - id: FoodPacketSusTrash + - id: FoodPacketSemkiTrash + - id: FoodPacketSyndiTrash + weight: 0.5 + +- type: entityTable + id: TrashVendingMachineSustenance + table: !type:GroupSelector + children: + - id: DrinkMREFlaskEmpty + - id: FoodPacketMRETrash + - id: FoodCondimentPacketEmpty + - !type:GroupSelector + weight: 0.5 + children: + - id: FoodTinMRETrash + - id: FoodTinBeansTrash + - id: FoodTinPeachesTrash + - id: DrinkBeerCanEmpty + weight: 0.5 diff --git a/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/machines.yml b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/machines.yml new file mode 100644 index 0000000000..1c963e0360 --- /dev/null +++ b/Resources/Prototypes/_DEN/Catalog/Fills/Rummage/machines.yml @@ -0,0 +1,40 @@ +- type: entityTable + id: RummageableVendingMachineGeneric + table: !type:GroupSelector + children: + # Miscellaneous trash + - !type:GroupSelector + weight: 30 + children: + - !type:NestedSelector + tableId: AllBananaPeelsTable + - id: CigaretteSpent + - id: CigarSpent + weight: 0.3 + - id: FoodFrozenPopsicleTrash + weight: 0.75 + - id: BrokenBottle + - id: ShardGlass + # Spesos + - !type:GroupSelector + weight: 15 + children: + - id: SpaceCash10 + weight: 20 + - id: SpaceCash100 + weight: 10 + - id: SpaceCash500 + weight: 5 + - id: SpaceCash1000 + weight: 1 + # Coins + - !type:NestedSelector + tableId: TreasureCoinPile + weight: 10 + # Vermin + - !type:GroupSelector + weight: 3 + children: + - id: MobCockroach + - id: MobMouse + - id: MobMouseDead diff --git a/Resources/Prototypes/_DEN/Damage/rodentia.yml b/Resources/Prototypes/_DEN/Damage/rodentia.yml new file mode 100644 index 0000000000..5492558d83 --- /dev/null +++ b/Resources/Prototypes/_DEN/Damage/rodentia.yml @@ -0,0 +1,7 @@ +- type: damageModifierSet + id: Rodentia + coefficients: + Blunt: 1.15 + Slash: 1.10 + Piercing: 1.10 + Shock: 1.15 diff --git a/Resources/Prototypes/_DEN/Datasets/Names/rodentia.yml b/Resources/Prototypes/_DEN/Datasets/Names/rodentia.yml new file mode 100644 index 0000000000..a7a8ecd7d9 --- /dev/null +++ b/Resources/Prototypes/_DEN/Datasets/Names/rodentia.yml @@ -0,0 +1,30 @@ +# Rodentia have a name scheme of "LastName FirstName", because first names are gendered here. +# +# "Last names" are more like adjective titles, which makes names sound like animal xenofiction characters, or mobsters. +# By "animal xenofiction", think, like, Warrior Cats, or Redwall, or Watership Down. +# ("Stout", "Light-foot", "Gentle", "Cunning", "Brave", "Quick-wits", "Shiny-eyes") +# +# First names are more "standard", with emphasis on: +# - Names you'd give pets, especially pet rodents (Nibbles, Pipsqueak, Spud) +# - "Standard" first names with a "sentient woodland animal" or "mobster" feel (Rowan, Willow, Louie, Frankie) +# - What I can only describe as "rodent-themed British village names" (Furwell, Oakley, Squeakwood) +# +# Examples: "Stubborn Stanley", "Fat Louie", "Long-tail Nellie", "Big Cheddar", "Hasty Nibbleston" + +- type: localizedDataset + id: NamesRodentiaFirstMale + values: + prefix: names-rodentia-first-male-dataset- + count: 176 + +- type: localizedDataset + id: NamesRodentiaFirstFemale + values: + prefix: names-rodentia-first-female-dataset- + count: 159 + +- type: localizedDataset + id: NamesRodentiaLast + values: + prefix: names-rodentia-last-dataset- + count: 86 diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Drinks/drinks_empty.yml b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Drinks/drinks_empty.yml new file mode 100644 index 0000000000..a2d64e56e6 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Drinks/drinks_empty.yml @@ -0,0 +1,112 @@ +- type: entity + abstract: true + id: DrinkEmpty + suffix: Empty + components: + - type: Solution + solution: + reagents: [] + +- type: entity + abstract: true + parent: DrinkEmpty + id: DrinkCanEmpty + components: + - type: Openable + opened: true + +- type: entity + parent: [DrinkCanEmpty, DrinkBeerCan] + id: DrinkBeerCanEmpty + +- type: entity + parent: [DrinkEmpty, DrinkCafeLatte] + id: DrinkCafeLatteEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkChangelingStingCan] + id: DrinkChangelingStingCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkColaCan] + id: DrinkColaCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkDrGibbCan] + id: DrinkDrGibbCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkEnergyDrinkCan] + id: DrinkEnergyDrinkEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkMREFlask] + id: DrinkMREFlaskEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkFourteenLokoCan] + id: DrinkFourteenLokoCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkGrapeCan] + id: DrinkGrapeCanEmpty + +- type: entity + parent: [DrinkEmpty, DrinkGreenTea] + id: DrinkGreenTeaEmpty + +- type: entity + parent: [DrinkEmpty, DrinkHotCoco] + id: DrinkHotCocoEmpty + +- type: entity + parent: [DrinkEmpty, DrinkHotCoffee] + id: DrinkHotCoffeeEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkIcedTeaCan] + id: DrinkIcedTeaCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkLemonLimeCan] + id: DrinkLemonLimeCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkLemonLimeCranberryCan] + id: DrinkLemonLimeCranberryCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkPwrGameCan] + id: DrinkPwrGameCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkRootBeerCan] + id: DrinkRootBeerCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkShamblersJuiceCan] + id: DrinkShamblersJuiceCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkSodaWaterCan] + id: DrinkSodaWaterCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkSolDryCan] + id: DrinkSolDryCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkSpaceMountainWindCan] + id: DrinkSpaceMountainWindCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkSpaceUpCan] + id: DrinkSpaceUpCanEmpty + +- type: entity + parent: [DrinkCanEmpty, DrinkStarkistCan] + id: DrinkStarkistCanEmpty + +- type: entity + parent: [DrinkEmpty, DrinkTeacup] + id: DrinkTeacupEmpty diff --git a/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Food/Containers/empty.yml b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Food/Containers/empty.yml new file mode 100644 index 0000000000..0201217730 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/Consumable/Food/Containers/empty.yml @@ -0,0 +1,8 @@ +- type: entity + parent: BaseFoodCondimentPacket + id: FoodCondimentPacketEmpty + name: empty condiment packet + description: This can probably go in the trash. + components: + - type: Openable + opened: true diff --git a/Resources/Prototypes/_DEN/Guidebook/species.yml b/Resources/Prototypes/_DEN/Guidebook/species.yml new file mode 100644 index 0000000000..82e8c53cdd --- /dev/null +++ b/Resources/Prototypes/_DEN/Guidebook/species.yml @@ -0,0 +1,4 @@ +- type: guideEntry + id: Rodentia + name: species-name-rodentia + text: "/ServerInfo/_DEN/Guidebook/Mobs/Rodentia.xml" diff --git a/Resources/Prototypes/_DEN/Species/rodentia.yml b/Resources/Prototypes/_DEN/Species/rodentia.yml new file mode 100644 index 0000000000..410cec9a02 --- /dev/null +++ b/Resources/Prototypes/_DEN/Species/rodentia.yml @@ -0,0 +1,35 @@ +- type: species + id: Rodentia + name: species-name-rodentia + roundStart: true + prototype: MobRodentia + dollPrototype: AppearanceRodentia + defaultSkinTone: "#747474" + skinColoration: Hues + maleFirstNames: NamesRodentiaFirstMale + femaleFirstNames: NamesRodentiaFirstFemale + lastNames: NamesRodentiaLast + +# +# Rodentia are a species of anthropomorphic rodent-people, and other "small mammal"-type species that aren't rodents. +# (Moles, bats, possums, shrews, and rabbits are all sort of included.) +# +# Rodentia are naturally detritivorous, allowing them to consume gastrotoxin, mold, and processed trash safely, +# and even derive nutrition from doing so! However, like other animals, they are sensitive to allicin and theobromine. +# They have red blood. +# +# TODO: Rodentia can rummage through disposal chutes, usually netting junk, but occasionally digging up snacks +# or treasure. +# +# TODO: Rodentia can use their incisors for "Cutting" interactions without needing wirecutters - such as snipping +# through cables or door wires. However, they will still be electrocuted without insulation. +# They get hungrier 33% faster. +# +# TODO: Rodentia are somewhat clumsy, and can't help but hurt themselves on mouse traps and glass shards, even +# when they're wearing shoes. +# +# TODO: Rodentia take more brute and shock damage, but use their teeth to inflict Sharp and Piercing damage. +# They also have a lower critical *and* death threshold than other species - 90 to crit, 180 to die. +# +# TODO: Rodentia are small enough to fit in duffel bags. +# diff --git a/Resources/ServerInfo/_DEN/Guidebook/Mobs/Rodentia.xml b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Rodentia.xml new file mode 100644 index 0000000000..496684cff0 --- /dev/null +++ b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Rodentia.xml @@ -0,0 +1,64 @@ + + # Rodentia + + + + + + Rodentia are a species of anthropomorphic rodent-like humanoids widespread throughout interstellar society. They are highly diverse, and despite their name, have been known to resemble non-rodent species' physiology as well, from bats, to marsupials, to insectivorous mammals like hedgehogs. + + ## Physiology + + Rodentia on average have light-weight, nimble builds. They have red blood and an omnivorous scavenger diet. They will be poisoned by allicin (onions, garlic) and theobromine (chocolate, coffee, tea), but are [color=#1e90ff]capable of digesting rotten meat, mold, and reprocessed trash safely.[/color] + + Rodentia are physically fragile. They [color=#ffa500]will take 15% more Blunt and Shock damage, as well as 10% more Slash and Piercing damage.[/color] In addition, [color=red]they will enter critical condition at 90 damage, and die at 180 damage.[/color] + + They tend to be clumsy with their feet and tails when they move, and [color=#ffa500]will trip on glass shards and mousetraps, even if wearing shoes.[/color] + + ## Rummaging + + + + + + + + + Rodentia are highly effective scavengers, capable of [color=#1e90ff]rummaging through certain appliances.[/color] Most of them contain junk, but who knows! You might get lucky and sift treasure out of the trash. + + + + + + + + + + + ## Gnawing + + + + + + Rodentia have powerful adapted incisors that deal [color=red]Sharp[/color] and [color=red]Piercing[/color] damage, and make for an effective [color=cyan]Cutting[/color] tool. Watch out for electric shocks! + + ## Rodentia Naming Conventions + + Rodentia are typically given a "standard" first name (dependent on individual culture), traditionally prefixed with an adjective descriptor. These descriptors may be selected by the rodentia themselves, but are often assigned by their peers - especially based on physical quality, temperament, or social reputation. + + Rodentian cultures are frequently heavily communal and place less emphasis on individual families - surnames are uncommon in unmarried rodentia. In some societies, a rodentia may opt to adapt their descriptor into a surname. + + - [color=#449944]Acceptable:[/color] Grumpy Rufus + - [color=#449944]Acceptable:[/color] Long-tail Ruby + - [color=#449944]Acceptable:[/color] Sneaky Whiskershire + - [color=#449944]Acceptable:[/color] Fat Frankie + - [color=#449944]Acceptable:[/color] Cheeky Spud + - [color=#449944]Acceptable:[/color] Oliver Haste + - [color=#449944]Acceptable:[/color] Willow Sharpclaws + - [color=#994444]Bad:[/color] Speedy Gonzales + - [color=#994444]Bad:[/color] Snotfuck the Rat + - [color=#994444]Bad:[/color] Tella Tubby + - [color=#994444]Bad:[/color] Big Dick + + diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/full.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/full.png new file mode 100755 index 0000000000..fe76b69c18 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/full.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_f.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_f.png new file mode 100755 index 0000000000..f612f55205 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_f.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_m.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_m.png new file mode 100755 index 0000000000..6ee304577d Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/head_m.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_arm.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_arm.png new file mode 100755 index 0000000000..3c356949c9 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_foot.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_foot.png new file mode 100755 index 0000000000..d692606fda Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_hand.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_hand.png new file mode 100755 index 0000000000..3127e8b271 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_leg.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_leg.png new file mode 100755 index 0000000000..0cb1306724 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/meta.json b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/meta.json new file mode 100644 index 0000000000..6e15cadeae --- /dev/null +++ b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/meta.json @@ -0,0 +1,62 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi, modified by DrSmugleaf and portfiend (GitHub)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_arm.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_arm.png new file mode 100755 index 0000000000..4bda91b236 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_foot.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_foot.png new file mode 100755 index 0000000000..74785fb854 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_hand.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_hand.png new file mode 100755 index 0000000000..857b2c5e82 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_leg.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_leg.png new file mode 100755 index 0000000000..a06acc58fe Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_f.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_f.png new file mode 100755 index 0000000000..a1cd66af5f Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_m.png b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_m.png new file mode 100755 index 0000000000..fa9e2a1737 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Species/Rodentia/parts.rsi/torso_m.png differ