Merge branch 'master' into ARCS-speed-buff-branch

This commit is contained in:
NollaDarkstar 2026-08-09 23:33:16 +02:00 committed by GitHub
commit e71093425b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
111 changed files with 1135 additions and 582 deletions

29
.github/CODEOWNERS vendored
View File

@ -1,34 +1,25 @@
# Last match in file takes precedence.
# See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#example-of-a-codeowners-file
# C# code
/Content.*/ @DeltaV-Station/maintainers
# Any assets
/Resources/ @DeltaV-Station/maintainers
* @DeltaV-Station/maintainers
# Server config files
/Resources/ConfigPresets/ @Toby222
/Resources/ConfigPresets/ @DeltaV-Station/lead-maintainers
# Github workflows
/.github/ @DeltaV-Station/lead-maintainers
# Lobby art and music - automatically direction issues since its immediately visible to players
/Resources/Audio/Lobby/ @DeltaV-Station/direction
/Resources/Textures/LobbyScreens/ @DeltaV-Station/direction
/Resources/Audio/Lobby/ @DeltaV-Station/direction @DeltaV-Station/maintainers
/Resources/Textures/LobbyScreens/ @DeltaV-Station/direction @DeltaV-Station/maintainers
# Maps
/Resources/Maps/ @DeltaV-Station/maptainers
/Resources/Prototypes/Maps/ @DeltaV-Station/maptainers
/Content.IntegrationTests/Tests/PostMapInitTest.cs @DeltaV-Station/maptainers
/Content.IntegrationTests/Tests/PostMapInitTest.cs @DeltaV-Station/maptainers @DeltaV-Station/maintainers
# Server rules
/Resources/ServerInfo/Guidebook/_DV/Rules/ @DeltaV-Station/head-administrators
# Wiki
/.wiki/ @DeltaV-Station/direction
# Tools and scripts
/Tools/ @Toby222
# Workflows, codeowners, templates, etc.
/.github/ @Toby222
# Standalone files in the root repo
/* @Toby222
/.wiki/ @DeltaV-Station/direction

View File

@ -9,6 +9,8 @@ using Content.Shared.Preferences;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
using Content.Client._CD.Records.UI; // DeltaV
using Content.Shared._DV.Body.Systems; // DeltaV
namespace Content.Client.Lobby.UI;
@ -193,6 +195,7 @@ public sealed partial class HumanoidProfileEditor
RefreshLoadouts();
UpdateSexControls(); // update sex for new species
UpdateSpeciesGuidebookIcon();
UpdateHeightControls(); // DeltaV
ReloadPreview();
}
@ -204,23 +207,22 @@ public sealed partial class HumanoidProfileEditor
ReloadProfilePreview();
}
private void UpdateHeightControls()
{
if (Profile == null)
{
return;
}
var species = _species.Find(x => x.ID == Profile.Species);
if (species != null)
_defaultHeight = species.DefaultHeight;
var prototype = _prototypeManager.Index(Profile.Species);
_defaultHeight = prototype.DefaultHeight;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
var sliderPercent = (Profile.Height - prototype.MinHeight) /
(prototype.MaxHeight - prototype.MinHeight);
CDHeightSlider.Value = sliderPercent;
CDHeight.Text = Profile.Height.ToString(CultureInfo.InvariantCulture);
var scaleReference = _defaultHeight * prototype.BaseScale.Y;
var newHeight = MathF.Round(MathHelper.Lerp(prototype.MinHeight, prototype.MaxHeight, sliderPercent), 2);
CDHeightLabel.Text = UnitConversion.GetMetricAndImperialDisplayFromScale(scaleReference * newHeight);
CDPullSpeedReductionLabel.Text = SmallCharacterSystem.GetPullSpeedPenaltyDisplayFromScale(newHeight);
}
// End CD - Character Records

View File

@ -73,9 +73,13 @@
<BoxContainer HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-height-label'}" />
<Control HorizontalExpand="True" />
<Label Name="CDHeightLabel" />
<Slider Name="CDHeightSlider" HorizontalAlignment="Right" SetWidth="300" MinValue="0.0" MaxValue="1.0"/>
<LineEdit HorizontalAlignment="Right" Name="CDHeight" MinSize="60 0" Text="1.0" />
<Button Name="CDHeightReset" Text="{Loc 'humanoid-profile-editor-reset-height-button'}" HorizontalAlignment="Right"/>
</BoxContainer>
<BoxContainer HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-height-pull-speed-penalty-label'}" />
<Control HorizontalExpand="True" />
<Label Name="CDPullSpeedReductionLabel" />
</BoxContainer>
<!-- End CD - Character Records -->
<!-- Sex -->

View File

@ -2,9 +2,6 @@ using Content.Client.Humanoid;
using Content.Client.Message;
using Content.Client.Players.PlayTimeTracking;
using Content.Client.Sprite;
using Content.Client.UserInterface.Systems.Guidebook;
using Content.Shared._DV.Species; // DeltaV - Species hider
using Content.Shared.Body;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
@ -22,13 +19,8 @@ using Robust.Shared.ContentPack;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
using Direction = Robust.Shared.Maths.Direction;
// Begin CD - Character Records
using System.Globalization;
using Content.Client._CD.Records.UI;
using Content.Shared._CD.Records;
// End CD - Character Records
using Content.Shared._DV.Traits;
using Content.Shared.Humanoid.Prototypes; // DV - Traits
using Content.Client._CD.Records.UI; // CD - Character Records
using Content.Shared._DV.Body.Systems; // DV - Traits
namespace Content.Client.Lobby.UI
{
@ -221,34 +213,18 @@ namespace Content.Client.Lobby.UI
// Begin CD - Character Records
#region CDHeight
CDHeight.OnTextChanged += args =>
{
if (Profile is null || !float.TryParse(args.Text, out var newHeight))
return;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
newHeight = MathF.Round(Math.Clamp(newHeight, prototype.MinHeight, prototype.MaxHeight), 2);
// The percentage between the start and end numbers, aka "inverse lerp"
var sliderPercent = (newHeight - prototype.MinHeight) /
(prototype.MaxHeight - prototype.MinHeight);
CDHeightSlider.Value = sliderPercent;
SetProfileHeight(newHeight);
};
CDHeightReset.OnPressed += _ =>
{
CDHeight.SetText(_defaultHeight.ToString(CultureInfo.InvariantCulture), true);
};
CDHeightSlider.OnValueChanged += _ =>
{
if (Profile is null)
return;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
var prototype = _prototypeManager.Index(Profile.Species);
var newHeight = MathF.Round(MathHelper.Lerp(prototype.MinHeight, prototype.MaxHeight, CDHeightSlider.Value), 2);
CDHeight.Text = newHeight.ToString(CultureInfo.InvariantCulture);
var speciesScale = prototype.BaseScale.Y;
CDHeightLabel.Text = UnitConversion.GetMetricAndImperialDisplayFromScale(newHeight * speciesScale);
CDPullSpeedReductionLabel.Text = SmallCharacterSystem.GetPullSpeedPenaltyDisplayFromScale(newHeight);
SetProfileHeight(newHeight);
};

View File

@ -49,11 +49,6 @@
<Control HorizontalExpand="True" />
<Label Name="RecordContainerSpecies" Align="Right" />
</BoxContainer>
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-height'}"/>
<Control HorizontalExpand="True" />
<Label Name="RecordContainerHeight" Align="Right" />
</BoxContainer>
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-weight'}"/>
<Control HorizontalExpand="True" />

View File

@ -325,8 +325,7 @@ public sealed partial class CharacterRecordViewer : FancyWindow
RecordContainerJob.Text = record.JobTitle; /* At some point in the future we might want to display the icon */
RecordContainerGender.Text = record.Gender.ToString();
RecordContainerSpecies.Text = record.Species;
RecordContainerHeight.Text = cr.Height + " " + UnitConversion.GetImperialDisplayLength(cr.Height);
RecordContainerWeight.Text = cr.Weight + " " + UnitConversion.GetImperialDisplayMass(cr.Weight);
RecordContainerWeight.Text = $"{cr.Weight} ({UnitConversion.GetImperialDisplayMass(cr.Weight)})";
RecordContainerContactName.SetValue(cr.EmergencyContactName);
RecordContainerEmployment.Visible = false;

View File

@ -5,12 +5,6 @@
<BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="10">
<!-- Height, Weight -->
<GridContainer Columns="2">
<BoxContainer HorizontalExpand="True" SeparationOverride="2">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-height'}" />
<Control HorizontalExpand="True" MinSize="5 0" />
<LineEdit Name="HeightEdit" HorizontalAlignment="Right" MinSize="60 0" />
<Label Name="HeightImperialLabel" MinWidth="60" />
</BoxContainer>
<BoxContainer HorizontalExpand="True" SeparationOverride="2">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-weight'}" />
<Control HorizontalExpand="True" MinSize="5 0" />

View File

@ -25,14 +25,6 @@ public sealed partial class RecordEditorGui : Control
#region General
HeightEdit.OnTextChanged += args =>
{
if (!int.TryParse(args.Text, out var newHeight))
return;
UpdateImperialHeight(newHeight);
UpdateRecords(_records.WithHeight(newHeight));
};
WeightEdit.OnTextChanged += args =>
{
if (!int.TryParse(args.Text, out var newWeight))
@ -128,8 +120,6 @@ public sealed partial class RecordEditorGui : Control
private void UpdateWidgets()
{
HeightEdit.SetText(_records.Height.ToString());
UpdateImperialHeight(_records.Height);
WeightEdit.SetText(_records.Weight.ToString());
UpdateImperialWeight(_records.Weight);
ContactNameEdit.SetText(_records.EmergencyContactName);
@ -143,13 +133,8 @@ public sealed partial class RecordEditorGui : Control
PostmortemEdit.SetText(_records.PostmortemInstructions);
}
private void UpdateImperialHeight(int newHeight)
{
HeightImperialLabel.Text = UnitConversion.GetImperialDisplayLength(newHeight);
}
private void UpdateImperialWeight(int newWeight)
{
WeightImperialLabel.Text = UnitConversion.GetImperialDisplayMass(newWeight);
WeightImperialLabel.Text = $"({UnitConversion.GetImperialDisplayMass(newWeight)})";
}
}

View File

@ -2,15 +2,47 @@ namespace Content.Client._CD.Records.UI;
public static class UnitConversion
{
/// <summary>
/// DeltaV - The average height of a human in centimeters. According to the US CDC, its
/// 171 for men and 160 for women. So average of that is ~165cm.
///
/// Just kidding, we're going with EE's arbitrary standard of 175cm.
/// </summary>
private const int AVERAGE_HEIGHT_CM = 175;
/// <summary>
/// DeltaV - 1.0 scale is considered average for humans, so a scale of 1 will be 175cm.
/// Ensure that scale also includes the base species height AND the user-defined height.
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
private static int GetMetricHeightFromScale(float scale = 1)
{
// cast as int because we don't care about decimal
return (int)Math.Max(scale * AVERAGE_HEIGHT_CM, 1); // can't be shorter than 1cm I guess
}
/// <summary>
/// DeltaV - Gets nicely formatted string that contains both metric and imperial measurements.
/// With a scale of 1, it should look like... 175cm (5' 9")
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
public static string GetMetricAndImperialDisplayFromScale(float scale = 1)
{
var metricHeight = GetMetricHeightFromScale(scale);
return $"{metricHeight}cm ({GetImperialDisplayLength(metricHeight)})";
}
public static string GetImperialDisplayLength(int lengthCm)
{
var heightIn = (int) Math.Round(lengthCm * 0.3937007874 /* cm to in*/);
return $"({heightIn / 12}'{heightIn % 12}'')";
var heightIn = (int)Math.Round(lengthCm * 0.3937007874 /* cm to in*/);
return $"{heightIn / 12}'{heightIn % 12}\"";
}
public static string GetImperialDisplayMass(int massKg)
{
var weightLbs = (int) Math.Round(massKg * 2.2046226218 /* kg to lbs */);
return $"({weightLbs} lbs)";
var weightLbs = (int)Math.Round(massKg * 2.2046226218 /* kg to lbs */);
return $"{weightLbs} lbs";
}
}

View File

@ -8,6 +8,7 @@ using Content.Server.NodeContainer.Nodes;
using Content.Shared._DV.NodeCrawl;
using Content.Shared.Atmos;
using Content.Shared.NodeContainer;
using Content.Shared.Polymorph;
using Content.Shared.Zombies;
using Robust.Shared.Reflection;
using Robust.Shared.Utility;
@ -30,6 +31,7 @@ public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
SubscribeLocalEvent<NodeCrawlerComponent, InhaleLocationEvent>(OnInhaleLocation);
SubscribeLocalEvent<NodeCrawlerComponent, ExhaleLocationEvent>(OnExhaleLocation);
SubscribeLocalEvent<NodeCrawlerComponent, AtmosExposedGetAirEvent>(OnGetAir);
SubscribeLocalEvent<NodeCrawlerComponent, PolymorphActionEvent>(OnPolymorph);
SubscribeLocalEvent<NodeCrawlerComponent, EntityZombifiedEvent>(OnZombify);
}
@ -222,4 +224,15 @@ public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
ent.Comp.EnterDelay = ent.Comp.ZombieEnterDelay;
Dirty(ent);
}
/// <summary>
/// Exit on polymorph or else the entity's movement bugs out.
/// </summary>
/// <param name="ent"></param>
/// <param name="args"></param>
private void OnPolymorph(Entity<NodeCrawlerComponent> ent, ref PolymorphActionEvent args)
{
if (ent.Comp.Mover.HasValue)
ExitNodeCrawl(ent);
}
}

View File

@ -19,6 +19,7 @@ using Content.Shared._Goobstation.Flashbang;
using Content.Shared._Starlight.Flash.Components;
using Content.Shared.Body.Components;
using Content.Shared.Flash; // Delta V - Flash Work
using Content.Shared._DV.Body.Components; // Delta V - Remove various comps related to breathing
namespace Content.Server._Starlight;
@ -68,6 +69,8 @@ public sealed class ShadekinSystem : EntitySystem
{
UpdateAlert(uid, component, (short)component.CurrentState);
RemComp<InternalsComponent>(uid);
RemComp<RespiratorComponent>(uid);
RemComp<AffectedByCPRComponent>(uid); // No lungs = no CPR
}
private void OnEyeColorChange(EntityUid uid, ShadekinComponent component, EyeColorInitEvent args)

View File

@ -1,9 +1,7 @@
using System.Linq;
using System.Numerics;
using Content.Shared._DV.Humanoid;
using Content.Shared._DV.Humanoid; // DeltaV
using Content.Shared.Humanoid.Markings;
using Content.Shared.Humanoid;
using Content.Shared.Sprite;
using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@ -18,7 +16,6 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly MarkingManager _marking = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly SharedScaleVisualsSystem _scaleVisualsSystem = default!;
public override void Initialize()
{
@ -28,7 +25,6 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
SubscribeLocalEvent<VisualOrganMarkingsComponent, BodyRelayedEvent<OrganCopyAppearanceEvent>>(OnMarkingsOrganCopyAppearance);
SubscribeLocalEvent<VisualOrganComponent, BodyRelayedEvent<ApplyOrganProfileDataEvent>>(OnVisualOrganApplyProfile);
SubscribeLocalEvent<VisualOrganMarkingsComponent, BodyRelayedEvent<ApplyOrganMarkingsEvent>>(OnMarkingsOrganApplyMarkings);
SubscribeLocalEvent<HumanoidProfileComponent, ApplyOrganProfileDataEvent>(OnApplyOrganProfileData); // Delta V - Taking the solution from CD
InitializeModifiers();
InitializeInitial();
@ -100,36 +96,9 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
if (!other.Layer.Equals(ent.Comp.Layer))
return;
// Delta V - Begin Fix Height for Cloning
var height = other.Profile.Height;
if (TryComp<HumanoidProfileComponent>(args.Body.Owner, out var component))
ScaleBody((args.Body.Owner, component), height, height);
// Delta V - End
SetOrganAppearance(ent, other.Data);
}
// Delta V - BEGIN CD Solution
private void OnApplyOrganProfileData(Entity<HumanoidProfileComponent> entity, ref ApplyOrganProfileDataEvent args)
{
var speciesPrototype = _prototype.Index(entity.Comp.Species);
if (args.Base == null)
return;
var height = Math.Clamp(MathF.Round(args.Base.Value.Height, 2), speciesPrototype.MinHeight, speciesPrototype.MaxHeight);
ScaleBody(entity, speciesPrototype.ScaleHeight ? height : 1f, height);
}
private void ScaleBody(Entity<HumanoidProfileComponent> entity, float heightX, float heightY)
{
_scaleVisualsSystem.SetSpriteScale(
entity.Owner,
new Vector2(heightX, heightY)
);
}
// Delta V - END
private void OnMarkingsOrganCopyAppearance(Entity<VisualOrganMarkingsComponent> ent, ref BodyRelayedEvent<OrganCopyAppearanceEvent> args)
{

View File

@ -1,7 +1,9 @@
using System.Numerics; // DeltaV
using Content.Shared.Examine;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.IdentityManagement;
using Content.Shared.Preferences;
using Content.Shared.Sprite; // DeltaV
using Robust.Shared.GameObjects.Components.Localization;
using Robust.Shared.Prototypes;
@ -11,6 +13,7 @@ public sealed class HumanoidProfileSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly GrammarSystem _grammar = default!;
[Dependency] private readonly SharedScaleVisualsSystem _scale = default!; // DeltaV
public override void Initialize()
{
@ -28,6 +31,7 @@ public sealed class HumanoidProfileSystem : EntitySystem
ent.Comp.Age = profile.Age;
ent.Comp.Species = profile.Species;
ent.Comp.Sex = profile.Sex;
ent.Comp.Height = profile.Height; // DeltaV
Dirty(ent);
var sexChanged = new SexChangedEvent(ent.Comp.Sex, profile.Sex);
@ -37,6 +41,15 @@ public sealed class HumanoidProfileSystem : EntitySystem
{
_grammar.SetGender((ent, grammar), profile.Gender);
}
// START DeltaV - Apply profile/species size
// Assume 1.0 scale unless the original scale exists (blame Allulalo)
var scale = Vector2.One;
if (TryComp<ScaleVisualsComponent>(ent, out var scaledVisuals) && scaledVisuals.OriginalScale is { } originalScale)
scale = originalScale;
_scale.SetSpriteScale(ent, scale);
// END DeltaV
}
private void OnExamined(Entity<HumanoidProfileComponent> ent, ref ExaminedEvent args)

View File

@ -1,3 +1,4 @@
using System.Numerics; // DeltaV
using Content.Shared.Body;
using Content.Shared.Dataset;
using Content.Shared.Humanoid.Markings;
@ -111,7 +112,7 @@ public sealed partial class SpeciesPrototype : IPrototype
/// The base height scale for this species
/// </summary>
[DataField("baseScale")]
public System.Numerics.Vector2 BaseScale = new(1f, 1f);
public Vector2 BaseScale = new(1f, 1f);
// End DV - CD Character Records shouldn't nuke species heights
// Begin CD - Character Records
@ -119,13 +120,13 @@ public sealed partial class SpeciesPrototype : IPrototype
/// The minimum height for this species
/// </summary>
[DataField("minHeight")]
public float MinHeight = 0.9f; // DeltaV - less trolling with the heights
public float MinHeight = 0.8f; // DeltaV
/// <summary>
/// The maximum height for this species
/// </summary>
[DataField("maxHeight")]
public float MaxHeight = 1.1f; // DeltaV - less trolling with the heights
public float MaxHeight = 1.2f; // DeltaV
/// <summary>
/// The default height for this species

View File

@ -1,3 +1,5 @@
using Content.Shared._DV.Body.Components; // DeltaV
using Content.Shared._DV.Body.Systems; // DeltaV
using Content.Shared._ST.Interaction; // Stellar - interaction particles
using Content.Shared._Floof.OfferItem; // Floof
using Content.Shared.ActionBlocker;
@ -10,6 +12,7 @@ using Content.Shared.Database;
using Content.Shared.Hands;
using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Humanoid; // DeltaV
using Content.Shared.IdentityManagement;
using Content.Shared.Input;
using Content.Shared.Interaction;
@ -55,6 +58,7 @@ public sealed class PullingSystem : EntitySystem
[Dependency] private readonly HeldSpeedModifierSystem _clothingMoveSpeed = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedVirtualItemSystem _virtual = default!;
[Dependency] private readonly SmallCharacterSystem _smallCharacter = default!; // DeltaV
public override void Initialize()
{
@ -295,6 +299,14 @@ public sealed class PullingSystem : EntitySystem
private void OnRefreshMovespeed(EntityUid uid, PullerComponent component, RefreshMovementSpeedModifiersEvent args)
{
// BEGIN DeltaV - Slow if smaller puller
if (TryComp<SmallCharacterComponent>(uid, out var smol))
{
var sizePenalty = _smallCharacter.ApplyPullSpeedPenalty((uid, smol), component.Pulling);
args.ModifySpeed(sizePenalty, sizePenalty);
}
// END DeltaV
if (TryComp<HeldSpeedModifierComponent>(component.Pulling, out var heldMoveSpeed) && component.Pulling.HasValue)
{
var (walkMod, sprintMod) =

View File

@ -97,7 +97,7 @@ public sealed partial class ParcelWrappingSystem
if (target == user)
{
var selfMsg = Loc.GetString("parcel-wrap-popup-being-wrapped-self");
_popup.PopupClient(selfMsg, user, user);
_popup.PopupEntity(selfMsg, user, user);
}
else
{
@ -143,7 +143,7 @@ public sealed partial class ParcelWrappingSystem
// Spawn the actual parcel entity.
var targetTransform = Transform(target);
var spawned = Spawn(GetParcelPrototype(wrapper, target), targetTransform.Coordinates);
var spawned = SpawnAtPosition(GetParcelPrototype(wrapper, target), targetTransform.Coordinates);
_transform.SetLocalRotation(spawned, targetTransform.LocalRotation);
// If the target is in a container, try to put the parcel in its place in the container.

View File

@ -177,7 +177,7 @@ namespace Content.Shared.Preferences
_traitPreferences = traitPreferences;
_loadouts = loadouts;
// Begin CD - Character Records
Height = height;
Height = height; // This is the user-set scale on the profile editor. Not actual height measurements.
CDCharacterRecords = cdCharacterRecords;
// End CD - Character Records

View File

@ -25,11 +25,27 @@ public sealed partial class ScaleVisualsComponent : Component
[ViewVariables]
public Vector2? OriginalScale;
// Delta V Addition
/// <summary>
/// Base Scale of the Species, which we use to set a new height relative to this.
/// DeltaV - Contains the species scale. Set dynamically by
/// baseScale in the Species prototype.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 SpeciesScale = Vector2.One;
public Vector2 SpeciesScale = new(1f, 1f);
/// <summary>
/// DeltaV - Contains the user-defined scale from the character creation
/// screen.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 ProfileScale = new(1f, 1f);
/// <summary>
/// DeltaV - Contains the computer scale from applying Scale, SpeciesScale, and ProfileScale.
/// This will contain the actual scale after all modifiers are applied.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 ComputedScale;
}

View File

@ -1,4 +1,6 @@
using System.Numerics;
using Content.Shared.Humanoid; // DeltaV
using Robust.Shared.Prototypes; // DeltaV
using Robust.Shared.Serialization;
namespace Content.Shared.Sprite;
@ -6,6 +8,7 @@ namespace Content.Shared.Sprite;
public abstract class SharedScaleVisualsSystem : EntitySystem
{
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly IPrototypeManager _proto = default!; // DeltaV
public override void Initialize()
{
@ -39,15 +42,28 @@ public abstract class SharedScaleVisualsSystem : EntitySystem
{
var comp = EnsureComp<ScaleVisualsComponent>(uid);
comp.Scale = scale;
// BEGIN DeltaV - Apply species and profile height
// We have to ensure this is idempotent so that if it gets applied more than once
// the sprite size at the end is the same.
if (TryComp<HumanoidProfileComponent>(uid, out var profile))
{
var speciesProto = _proto.Index(profile.Species);
comp.SpeciesScale = speciesProto.BaseScale;
scale *= comp.SpeciesScale; // Apply both species scale and character-defined height
Vector2 profileHeight = new(profile.Height, profile.Height);
comp.ProfileScale = profileHeight;
scale *= comp.ProfileScale;
}
comp.ComputedScale = scale; // Nice to know what the computed size is in case of bugs
// END DeltaV
Dirty(uid, comp);
// Delta V - Begin Species Scaling
// 120% species scale => add 0.2 to scale
var newScale = scale + comp.SpeciesScale - Vector2.One;
// Delta V - End Species Scaling
var appearanceComponent = EnsureComp<AppearanceComponent>(uid);
_appearance.SetData(uid, ScaleVisuals.Scale, newScale /* Delta V - Custom Species Scale */, appearanceComponent);
_appearance.SetData(uid, ScaleVisuals.Scale, scale, appearanceComponent);
// Raise an event for content use.
var ev = new ScaleEntityEvent(uid, scale);

View File

@ -0,0 +1,23 @@
using Content.Shared._DV.Body.Systems;
using Robust.Shared.GameStates;
namespace Content.Shared._DV.Body.Components;
/// <summary>
/// If an entity has this, if a small character has penalties (such as pull speed),
/// the small character will ignore the penalties associated with their size.
///
/// Mostly used for things like wheeled/floating objects.
/// </summary>
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
[Access(typeof(SmallCharacterSystem))]
public sealed partial class SmallCharacterComponent : Component
{
/// <summary>
/// The speed of which to scale the small character's pull speed by if the
/// object is big enough to warrant a pull-speed slowdown.
/// </summary>
[DataField, AutoNetworkedField]
public float PullSpeedPenalty = 1f;
}

View File

@ -0,0 +1,12 @@
namespace Content.Shared._DV.Body.Components;
/// <summary>
/// If an entity has this, if a small character has penalties (such as pull speed),
/// the small character will ignore the penalties associated with their size.
///
/// Mostly used for things like wheeled/floating objects.
///
/// See <see cref="Systems.SmallCharacterSystem"/>
/// </summary>
[RegisterComponent]
public sealed partial class UnaffectedBySizePenaltyComponent : Component;

View File

@ -0,0 +1,97 @@
using Content.Shared._DV.Body.Components;
using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
using Content.Shared.Item;
using JetBrains.Annotations;
using Robust.Shared.Physics.Components;
namespace Content.Shared._DV.Body.Systems;
/// <summary>
/// Used to relay or subscribe to events if a character's scale is 1.0 or below.
/// This is only used for the height slider scale.
/// </summary>
public sealed partial class SmallCharacterSystem : EntitySystem
{
private const float NO_PENALTY = 1.0f;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<PlayerSpawnCompleteEvent>(OnSpawn);
}
private void OnSpawn(PlayerSpawnCompleteEvent ev)
{
if (TryComp<HumanoidProfileComponent>(ev.Mob, out var profile))
ApplySmallCharacter(ev.Mob, profile.Height);
}
[PublicAPI]
public float ApplyPullSpeedPenalty(Entity<SmallCharacterComponent?> puller, EntityUid? pulledEntity)
{
// Ignore if they aren't pulling anything...
if (!pulledEntity.HasValue)
return NO_PENALTY;
// Ignore if they aren't a small character in the first place
if (!Resolve(puller, ref puller.Comp, false))
return NO_PENALTY;
// If the pulled entity has the component that ignores the penalty
if (HasComp<UnaffectedBySizePenaltyComponent>(pulledEntity))
return NO_PENALTY;
// Ignore if it's an item that can be held or stored. It would be weird to
// slow by X% from pulling a piece of paper or a gun when you can just hold it
// and not suffer from a penalty.
if (HasComp<ItemComponent>(pulledEntity))
return NO_PENALTY;
// Ignore if the object is floating in the air.
if (TryComp<PhysicsComponent>(pulledEntity, out var pulledPhysics)
&& pulledPhysics.BodyStatus == BodyStatus.InAir)
return NO_PENALTY;
return puller.Comp.PullSpeedPenalty;
}
#region Static Members
/// <summary>
/// Gets the move-speed penalty as a float. Should be applied multiplicatively.
/// Caps at 1 so we don't make bigger characters faster when pulling.
/// </summary>
/// <returns></returns>
[PublicAPI]
public static float GetPullSpeedPenaltyFromScale(float scale = 1.0f)
{
return Math.Min(scale * scale, 1);
}
/// <summary>
/// Calculates a well-formed display string of the pull speed penalty.
/// Used primarily in the character editor to get the well-formed percent
/// without having to duplicate formulas.
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
[PublicAPI]
public static string GetPullSpeedPenaltyDisplayFromScale(float scale = 1.0f)
{
return $"{Math.Round((1 - GetPullSpeedPenaltyFromScale(scale)) * 100)}%";
}
#endregion
#region Private Members
private void ApplySmallCharacter(EntityUid uid, float scale = 1)
{
if (scale >= 1)
return;
// The character scale is stored in the HumanoidProfileComponent if you ever
// need it.
var comp = EnsureComp<SmallCharacterComponent>(uid);
comp.PullSpeedPenalty = GetPullSpeedPenaltyFromScale(scale);
Dirty(uid, comp);
}
#endregion
}

View File

@ -0,0 +1,4 @@
- files: ["gnome_scream.ogg", "gnomedeath.ogg", "gnomelaugh.ogg", "gnome1.ogg"]
license: "CC-BY-SA-4.0"
copyright: "Audio recorded by Cepelinas and edited by rebe83"
source: "https://github.com/DeltaV-Station/Delta-v/pull/6027"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -356,5 +356,12 @@ Entries:
id: 39
time: '2026-07-24T17:27:48.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6351
- author: ShepardToTheStars
changes:
- message: Curators, get off your lazy asses and help out the newbies.
type: Tweak
id: 40
time: '2026-08-09T18:14:15.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6374
Name: DeltaVAdmin
Order: 5

View File

@ -1,83 +1,4 @@
Entries:
- author: Toby222
changes:
- message: Prevented the plasteel market from crashing and burning.
type: Fix
id: 2107
time: '2026-01-27T18:58:24.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5298
- author: BarryNorfolk
changes:
- message: Upstream's November updates are here!
type: Add
- message: Xenoborgs have arrived in DeltaV. Please report any foriegn borgs to
security!
type: Add
- message: APCs now trip when they are under high load.
type: Add
- message: Traitors can now find the iconic Mini Energy Crossbow in their uplink
for 5 TC.
type: Add
- message: Attorneys can find a new briefcase gun in their uplink.
type: Add
- message: Defibs will shock anyone interacting with the patient other than the
person using the defib.
type: Tweak
- message: Added mail cart.
type: Add
- message: Tourniquets can now fit in medical belts.
type: Tweak
- message: Make DAGD more likely but restrict it to 1 traitor per round.
type: Tweak
id: 2108
time: '2026-01-29T16:56:03.499291+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5087
- author: Pharaz4
changes:
- message: Lizards now get hardsuit tails
type: Add
id: 2109
time: '2026-01-29T16:55:44.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5293
- author: Pharaz4
changes:
- message: removed syndicate comms from refugees and guards
type: Remove
id: 2110
time: '2026-01-29T17:25:06.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5280
- author: Toby222, PureBreadBagel
changes:
- message: Added the ability to see if a patient is uncloneable via the Health Analyzer!
type: Add
- message: Medical doctor and Cloning entries have been changed to reflect the new
uncloneable trait, as uncloneable and unrevivable are no longer the same.
type: Tweak
id: 2111
time: '2026-01-30T16:18:07.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5310
- author: ShepardToTheStars
changes:
- message: The uncloneable alert in the health analyzer window only shows up when
its relevant (i.e. when the patient is dead).
type: Tweak
id: 2112
time: '2026-01-30T21:11:56.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5330
- author: verybigman311
changes:
- message: Wielding a guitar should no longer turn it invisible in your hands.
type: Fix
id: 2113
time: '2026-02-01T19:29:59.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5331
- author: verybigman311
changes:
- message: The Brigmed beret is now avaliable in the Corpsman loadout.
type: Add
id: 2114
time: '2026-02-01T19:30:27.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5333
- author: keekee38
changes:
- message: modified the bandolier slightly, and added a recipe for it in the sec
@ -4374,4 +4295,88 @@
id: 2607
time: '2026-08-03T02:45:12.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6346
- author: ShepardToTheStars
changes:
- message: The height slider on your profile now shows actual height measurements.
type: Tweak
- message: Characters now have a +/- 20% scale in the character creator for all
species.
type: Tweak
- message: In exchange for being harder to click on, characters that are smaller
than average for their species have pull speed penalties while pulling for being
so small. This effects only items that are not held in-hand, not in the air,
and do not have wheels.
type: Tweak
- message: Slightly reduced the density of Ovinia so they aren't as dense as an
Oni.
type: Tweak
- message: Increased the density of Thaven to slightly less than a normal human
player.
type: Tweak
id: 2608
time: '2026-08-04T16:27:56.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6320
- author: ShepardToTheStars
changes:
- message: Shadekin cannot receive CPR anymore due to them not breathing or having
lungs. They are still able to perform CPR.
type: Remove
- message: Shadekin should have an internal temperature now, so they can get cold
and hot.
type: Fix
id: 2609
time: '2026-08-04T16:41:14.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6381
- author: ShepardToTheStars
changes:
- message: Fixed changelog saying Shadekin can't perform CPR. Shadekin can still
perform CPR, but cannot receive it (as it would do nothing for them).
type: Fix
id: 2610
time: '2026-08-04T21:49:19.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6395
- author: Stxcking
changes:
- message: Mothroach and Mouse can emote again.
type: Fix
- message: Moproaches ghostrole can be raffled for properly now.
type: Fix
id: 2611
time: '2026-08-04T22:18:47.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6356
- author: ShepardToTheStars
changes:
- message: Nuclear operatives and ninjas will now be correctly scaled.
type: Fix
id: 2612
time: '2026-08-07T16:51:25.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6398
- author: ShepardToTheStars
changes:
- message: Parcel wrapping when buckled to a chair no longer will make you invisible
and uninteractable.
type: Fix
id: 2613
time: '2026-08-07T23:24:54.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6399
- author: ShepardToTheStars
changes:
- message: Polymorphing/jaunting while ventcrawling will no longer break movement
for the polymorphed/jaunting player.
type: Fix
id: 2614
time: '2026-08-09T16:57:32.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6400
- author: rebe83, cepelinas, ShepardtotheStars, einknusprigestoast, Sloppr
changes:
- message: Added gnomes! Remember to secure your valuables and be polite.
type: Add
- message: Added gnome hats, for when you butcher the gnome. This kills the gnome.
type: Add
- message: Gnome guidebook. All good gnomes know their fae laws! (They don't believe
in SOP)
type: Add
id: 2615
time: '2026-08-09T18:24:26.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6027
Order: 1

View File

@ -1,5 +1,5 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Apoapsis [US East 1]"
hostname = "[EN][MRP] Delta-V (Ψ) | Apoapsis [NA East 1]"
soft_max_players = 100
[hub]

View File

@ -1,5 +1,5 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Horizon [US East 3]"
hostname = "[EN][MRP] Delta-V (Ψ) | Horizon [NA East 3]"
soft_max_players = 80
[vote]

View File

@ -1,5 +1,5 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Inclination [EU West]"
hostname = "[EN][MRP] Delta-V (Ψ) | Inclination [EU West]"
soft_max_players = 50
[server]

View File

@ -1,5 +1,5 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Meridian [EU West]"
hostname = "[EN][MRP] Delta-V (Ψ) | Meridian [EU West]"
soft_max_players = 40
[hub]

View File

@ -1,5 +1,5 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Periapsis [US East 2]"
hostname = "[EN][MRP] Delta-V (Ψ) | Periapsis [NA East 2]"
soft_max_players = 60
desc = """\
A medium roleplay fork based around the mysterious Noösphere, featuring unique content, custom maps, new species and a revamped science department.\

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,3 @@
humanoid-profile-editor-height-label = Height:
humanoid-profile-editor-height-label = Size - Height:
humanoid-profile-editor-height-pull-speed-penalty-label = Size - Pull Speed Reduction:
humanoid-profile-editor-reset-height-button = Reset

View File

@ -92,6 +92,7 @@ psionic-power-precognition-unknown-shuttle-disaster-evac-pod-result-message = Yo
psionic-power-precognition-syndicate-armsdealer-result-message = You see a vision of a ship lurking in the shadows, its cargo deadly.
psionic-power-precognition-rift-spawn-result-message = You see a small spark of energy, quickly expanding as it tears reality apart, twisting everything around it.
psionic-power-precognition-asakim-spawn-result-message = You smell stale air from a cryopod opening, and the faint echo of an intelligence far away but very near.
psionic-power-precognition-gnome-spawn-result-message = You hear laughter coming from the walls and quick footsteps when your back is turned.
psionic-power-precognition-pitbull-spawn-result-message = You see a vision of a hundred small creatures being torn apart by bloodthirsty beasts in a maze of steel.
psionic-power-precognition-hitman-spawn-result-message = You see a man in a business suit, a corpse at their feet.

View File

@ -6,9 +6,9 @@ cwoink-system-messages-being-relayed-to-discord =
All messages are relayed to game Curators via Discord.
cwoink-system-introductory-message =
Please let us know of any event related queries here.
Please let us know of any event-related queries here. Also feel free to ask any questions related to game mechanics! We're happy to help.
Administrative concerns, such as rule violations and questions, as well as mentoring, should be directed to Admin Help.
Administrative concerns, such as rule violations and questions, should be directed to Admin Help.
Any bugs and other related issues should be reported through Discord or Github.

View File

@ -0,0 +1,63 @@
names-gnome-dataset-1 = Fwipple
names-gnome-dataset-2 = Gerald
names-gnome-dataset-3 = Garl
names-gnome-dataset-4 = Winkler
names-gnome-dataset-5 = Clunk
names-gnome-dataset-6 = Glunch
names-gnome-dataset-7 = Feinhelt
names-gnome-dataset-8 = Fitzgerald
names-gnome-dataset-9 = Daniel
names-gnome-dataset-10 = Mel
names-gnome-dataset-11 = Chomsky
names-gnome-dataset-12 = Gont
names-gnome-dataset-13 = Fwipple
names-gnome-dataset-14 = Wort
names-gnome-dataset-15 = Lichen
names-gnome-dataset-16 = Apricot
names-gnome-dataset-17 = Chestnut
names-gnome-dataset-18 = Mucus
names-gnome-dataset-19 = Wilbur
names-gnome-dataset-20 = Harold
names-gnome-dataset-21 = Howard
names-gnome-dataset-22 = Tinkle
names-gnome-dataset-23 = Clumsy
names-gnome-dataset-24 = Tipsy
names-gnome-dataset-25 = Sleepy
names-gnome-dataset-26 = Greedy
names-gnome-dataset-27 = Hungry
names-gnome-dataset-28 = Grubby
names-gnome-dataset-29 = Sniffles
names-gnome-dataset-30 = Stubby
names-gnome-dataset-31 = Twig
names-gnome-last-dataset-1 = the Nimble
names-gnome-last-dataset-2 = the Quick
names-gnome-last-dataset-3 = the Worrywort
names-gnome-last-dataset-4 = the Glib
names-gnome-last-dataset-5 = the Stinky
names-gnome-last-dataset-6 = the Grudgeworthy
names-gnome-last-dataset-7 = the Unremarkable
names-gnome-last-dataset-8 = the Lazy
names-gnome-last-dataset-9 = the Quiet
names-gnome-last-dataset-10 = Glimmergold
names-gnome-last-dataset-11 = Rootmuncher
names-gnome-last-dataset-12 = Spoonlicker
names-gnome-last-dataset-13 = The Frantic
names-gnome-last-dataset-14 = The Fantastic
names-gnome-last-dataset-15 = the Fickle
names-gnome-last-dataset-16 = Gemjingle
names-gnome-last-dataset-17 = Daisypicker
names-gnome-last-dataset-18 = of the Frogs
names-gnome-last-dataset-19 = of the Mice
names-gnome-last-dataset-20 = of the Swamp
names-gnome-last-dataset-21 = of the Hills
names-gnome-last-dataset-22 = of the Mountains
names-gnome-last-dataset-23 = Bowllicker
names-gnome-last-dataset-24 = Potscraper
names-gnome-last-dataset-25 = the Candle Thief
names-gnome-last-dataset-26 = Meatsnatcher
names-gnome-last-dataset-27 = the Yodler
names-gnome-last-dataset-28 = the Vibrant
names-gnome-last-dataset-29 = Forksnatcher
names-gnome-last-dataset-30 = Twinesnipper
names-gnome-last-dataset-31 = Fungimuncher

View File

@ -0,0 +1,4 @@
ghost-role-information-gnome-name = Gnome
ghost-role-information-gnome-description = Steal goodies and prank naughty crew members.
gnome-round-end-name = Gnome

View File

@ -55,3 +55,6 @@ station-beacon-clerk = Clerk
station-beacon-attorney = Attorney
station-beacon-marshal = Marshal
station-beacon-justice-armory = Justice Armory
station-beacon-evidence-room = Evidence Room
station-beacon-holding-cells = Holding Cells
station-beacon-genpop = GenPop

View File

@ -34,8 +34,8 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Dwarf
- type: ScaleVisuals
scale: 1, 0.8
#- type: ScaleVisuals # DeltaV - Scale defined at species level
# scale: 1, 0.8
- type: entity
parent:

View File

@ -1,6 +1,6 @@
- type: entity
id: LockerWardenFilledHardsuit
suffix: Filled, Hardsuit
suffix: Filled, Hardsuit, Security # DeltaV - Added security.
parent: LockerWarden
components:
- type: EntityTableContainerFill
@ -14,7 +14,7 @@
- type: entity
id: LockerWardenFilled
suffix: Filled
suffix: Filled, Security # DeltaV - Added security.
parent: LockerWarden
components:
- type: EntityTableContainerFill
@ -357,7 +357,7 @@
- id: MagazinePistolSubMachineGunTopMounted
amount: 4
- type: entity
- type: entity
parent: [SecurityGunSafeBaseSecureDV, BaseSecurityContraband] # DeltaV - Changed GunSafeBaseSecure with SecurityGunSafeBaseSecureDV
id: GunSafeLaserCarbine
name: laser safe

View File

@ -244,7 +244,7 @@
- type: entity
id: SuitStorageWarden
parent: SuitStorageBase
suffix: Warden
suffix: Warden, Security # DeltaV - Added security.
components:
- type: EntityTableContainerFill
containers:

View File

@ -162,7 +162,7 @@
parent: MarkerBase
id: SpawnMobMcGriff
name: McGriff Spawner
suffix: Warden or Detective Pet # DeltaV - Change from Warden pet to Warden or Detective pet
suffix: Armorer or Detective Pet # DeltaV - Change from Warden pet to Armorer or Detective pet
components:
- type: Sprite
layers:

View File

@ -456,6 +456,7 @@
id: SpawnPointWarden
parent: SpawnPointJobBase
name: warden
suffix: Security # DeltaV
components:
- type: SpawnPoint
job_id: Warden

View File

@ -506,6 +506,7 @@
# mindRoles:
# - MindRoleGhostRoleFreeAgentHarmless
# End DeltaV Removals - players can spawn in as these at will
- type: Emoting # DeltaV - Allow them to emote!
- type: Fixtures
fixtures:
fix1:
@ -520,7 +521,7 @@
# - type: GhostTakeoverAvailable # DeltaV - players can spawn in as these at will
- type: Speech
speechVerb: Moth
speechSounds: Chitter # Delta-V - Eep!
speechSounds: Chitter # DeltaV - Eep!
allowedEmotes: ['Chitter', 'Squeak', 'Flap']
- type: FaxableObject
insertingState: inserting_mothroach
@ -1874,6 +1875,7 @@
# - MindRoleGhostRoleFreeAgentHarmless
# - type: GhostTakeoverAvailable
# End DeltaV Removals - players can spawn in as these at will
- type: Emoting # DeltaV - Allow them to emote!
- type: Speech
speechSounds: Squeak
speechVerb: SmallMob

View File

@ -7,6 +7,13 @@
- type: GhostRole
name: ghost-role-information-moproach-name
description: ghost-role-information-moproach-description
# Begin DeltaV Additions
allowMovement: true
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleFreeAgentHarmless
- type: GhostTakeoverAvailable
# End DeltaV Additions
- type: Sprite
sprite: Mobs/Animals/mothroach/moproach.rsi
- type: Clothing

View File

@ -63,6 +63,8 @@
- SpanishAccent
- StutteringAccent
# Begin DeltaV Additions
- ScaleVisuals # Preserve species/profile height
- SmallCharacter
- Addicted
- DogVision
- FrenchAccent

View File

@ -972,6 +972,7 @@
id: WardenPDA
name: warden PDA
description: The OS appears to have been jailbroken.
suffix: Security # DeltaV
components:
- type: Pda
id: WardenIDCard

View File

@ -183,7 +183,7 @@
- type: entity
parent: DefaultStationBeaconSecurity
id: DefaultStationBeaconWardensOffice
suffix: Warden's Office
suffix: Warden's Office, Security # DeltaV - Added security.
components:
- type: NavMapBeacon
defaultText: station-beacon-warden

View File

@ -480,6 +480,7 @@
parent: IDCardStandard
id: WardenIDCard
name: warden ID card
suffix: Security # DeltaV
components:
- type: Sprite
layers:

View File

@ -232,6 +232,7 @@
parent: [RubberStampBase, BaseSecurityContraband]
id: RubberStampWarden
categories: [ DoNotMap ]
suffix: Security # DeltaV
components:
- type: Stamp
stampedName: stamp-component-stamped-name-warden

View File

@ -703,7 +703,7 @@
- type: entity
parent: HolopadSecurity # DeltaV
id: HolopadSecurityWarden
suffix: Warden
suffix: Warden, Security # DeltaV - Added security.
components:
- type: Label
currentLabel: holopad-security-warden

View File

@ -339,6 +339,7 @@
id: LockerWarden
parent: LockerBaseSecureDeltaV # DeltaV - resprite security lockers
name: warden's locker
suffix: Security # DeltaV
components:
- type: Appearance
- type: EntityStorageVisuals

View File

@ -69,3 +69,4 @@
components:
- type: TileFrictionModifier
modifier: 0.4
- type: UnaffectedBySizePenalty # DeltaV - Wheels make it easy to move

View File

@ -5,3 +5,4 @@
prototype: MobDwarf
dollPrototype: AppearanceDwarf
skinColoration: HumanToned
baseScale: 1, 0.8 # DeltaV - used instead of ScaleVisuals on body

View File

@ -9,7 +9,4 @@
maleFirstNames: NamesFirstMale
femaleFirstNames: NamesFirstFemale
lastNames: NamesLast
minHeight: 0.8
maxHeight: 1.05
# Delta V - Nubody Merge, at lot moved into other files
baseScale: 0.9, 0.9

View File

@ -0,0 +1,17 @@
- type: entity
parent: ActionPolymorphJaunt
id: ActionPolymorphJauntGnome
name: Ethereal Jaunt
description: Jump into the Etherial plane for just a moment.
components:
- type: Magic
requiresClothes: false
requiresSpeech: false
- type: Action
useDelay: 22
icon:
sprite: Objects/Magic/magicactions.rsi
state: jaunt
- type: InstantAction
event: !type:PolymorphActionEvent
protoId: GnomeMorph

View File

@ -114,8 +114,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Motorkind
- type: ScaleVisuals
speciesScale: 2, 2
- type: entity
name: Urist McQueen

View File

@ -60,8 +60,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Felinid
- type: ScaleVisuals
speciesScale: 0.75, 0.75
- type: entity
parent:

View File

@ -41,6 +41,7 @@
- type: entity
parent: BaseSpeciesAppearance
id: AppearanceHarpy
name: harpy appearance
components:
- type: Inventory
speciesId: harpy
@ -75,8 +76,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Harpy
- type: ScaleVisuals
speciesScale: 0.9, 0.9
- type: entity
parent:

View File

@ -64,8 +64,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Oni
- type: ScaleVisuals
speciesScale: 1.2, 1.2
- type: entity
parent:

View File

@ -94,8 +94,6 @@
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Ovinia
- type: ScaleVisuals
scale: 0.9, 0.9
- type: entity
parent:
@ -110,7 +108,7 @@
shape:
!type:PhysShapeCircle
radius: 0.35
density: 215 # sheep be heavy
density: 200 # sheep be heavy
restitution: 0.0
mask:
- MobMask

View File

@ -70,8 +70,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Rodentia
- type: ScaleVisuals
speciesScale: 0.8, 0.8
- type: entity
parent:

View File

@ -68,15 +68,12 @@
Tongue: OrganShadekinTongue
Appendix: OrganShadekinAppendix
Ears: OrganShadekinEars
Lungs: OrganShadekinLungs
Heart: OrganShadekinHeart
Stomach: OrganShadekinStomach
Liver: OrganShadekinLiver
Kidneys: OrganShadekinKidneys
- type: HumanoidProfile
species: Shadekin
- type: ScaleVisuals
scale: 0.9, 0.9
- type: entity
@ -84,8 +81,7 @@
name: Urist McShadow
parent:
- AppearanceShadekin
- BaseSpeciesMob
- MobBloodstream
- BaseSpeciesMobOrganic
id: MobShadekin
components:
- type: Shadekin
@ -178,36 +174,6 @@
# max: 1
# - !type:BurnBodyBehavior {}
# BaseMobSpeciesOrganic // Because we dont want respirator to be used.
- type: Barotrauma
damage:
types:
Blunt: 0.85 #per second, scales with pressure and other constants.
Heat: 0.1
- type: PassiveDamage # Slight passive regen. Assuming one damage type, comes out to about 4 damage a minute.
allowedStates:
- Alive
damage:
types:
Heat: -0.07
Blunt: -0.07
Piercing: -0.07
Slash: -0.07
- type: TemperatureSpeed
thresholds:
293: 0.8
280: 0.6
260: 0.4
- type: ThermalRegulator
metabolismHeat: 800
radiatedHeat: 100
implicitHeatRegulation: 500
sweatHeatRegulation: 2000
shiveringHeatRegulation: 2000
normalBodyTemperature: 310.15
thermalRegulationTemperatureThreshold: 2
- type: Perishable
- type: entity
parent: OrganBase
id: OrganShadekin
@ -308,10 +274,6 @@
parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganShadekinInternal ]
id: OrganShadekinEars
- type: entity
parent: [ OrganBaseLungs, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinLungs
- type: entity
parent: [ OrganBaseHeart, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinHeart

View File

@ -112,7 +112,7 @@
- type: entity
parent: LockerJusticeWarden
id: LockerJusticeWardenFilled
suffix: Filled
suffix: Filled, Justice Warden
components:
- type: EntityTableContainerFill
containers:
@ -152,9 +152,60 @@
- type: entity
parent: LockerJusticeDetective
id: LockerJusticeDetectiveFilled
suffix: Filled
suffix: Filled, Justice
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: FillLockerDetective
# Non-lethal armory
- type: entity
parent: SecurityGunSafeNonlethalHandgunDV
id: JusticeGunSafeNonlethalHandgunSecureFilledDV
suffix: Armory, Marshal, JusticeWarden, Locked, Filled
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: NonLethalMK58
rolls: !type:ConstantNumberSelector
value: 4
- type: entityTable
id: NonLethalMK58
table: !type:AllSelector
children:
- id: WeaponPistolMk58Nonlethal
- id: MagazinePistolRubber
amount: 2
- type: entity
parent: JusticeGunSafeNonLethalShotgunSecureDV
id: JusticeGunSafeNonLethalShotgunSecureFilledDV
suffix: Armory, Marshal, JusticeWarden, Locked, Filled
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: NonLethalKammerer
rolls: !type:ConstantNumberSelector
value: 2
- type: entityTable
id: NonLethalKammerer
table: !type:AllSelector
children:
- id: WeaponShotgunKammererNonLethal
- id: BoxBeanbag
- type: entity
parent: JusticeGunSafeDisablerSecureDV
id: JusticeGunSafeDisablerSecureFilledDV
suffix: Armory, Marshal, JusticeWarden, Locked, Filled
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: FillGunSafeDisabler

View File

@ -177,14 +177,10 @@
access: [["Security"]]
- type: EntityTableContainerFill
containers:
entity_storage: !type:AllSelector
children:
- id: WeaponShotgunKammererNonLethal
amount: 2
- id: BoxBeanbag
amount: 2
- id: BoxShotgunPractice
amount: 2
entity_storage: !type:NestedSelector
tableId: NonLethalKammerer
rolls: !type:ConstantNumberSelector
value: 2
- type: entity
parent: SecurityGunSafeBaseSecureDV

View File

@ -0,0 +1,11 @@
- type: localizedDataset
id: NamesGnome
values:
prefix: names-gnome-dataset-
count: 31
- type: localizedDataset
id: NamesGnomeLast
values:
prefix: names-gnome-last-dataset-
count: 31

View File

@ -511,6 +511,54 @@
- PetWearable
- CorgiWearable
- type: entity
parent: ClothingHeadBase
id: ClothingHeadHatGnome
name: gnome hat
description: For those that honor the first gnome in space, Gnome Chompsky. Still has a bit of magic that sparkles in its velvet sheen.
components:
- type: Sprite
sprite: _DV/Clothing/Head/Hats/gnomehat.rsi
- type: Clothing
sprite: _DV/Clothing/Head/Hats/gnomehat.rsi
clothingVisuals:
head:
- state: equipped
offset: "0, 0.35"
- type: EmbeddableProjectile # funny
offset: -0.15,0.0
- type: ThrowingAngle
angle: 180
- type: Fixtures
fixtures:
fix1:
shape: !type:PolygonShape
vertices:
- -0.40,-0.30
- -0.30,-0.40
- 0.40,0.30
- 0.30,0.40
density: 20
mask:
- ItemMask
restitution: 0.3
friction: 0.2
- type: Storage
grid:
- 0,0,0,1
maxItemSize: Small
- type: UserInterface
interfaces:
enum.StorageUiKey.Key:
type: StorageBoundUserInterface
- type: ContainerContainer
containers:
storagebase: !type:Container
- type: Tag
tags:
- PetWearable
- CorgiWearable
- type: entity
parent: ClothingHeadBase
id: ClothingHeadHatSodaJerkCap

View File

@ -178,6 +178,19 @@
color: "#bb4b1e"
shader: unshaded
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner
id: SpawnPointGnome
name: gnome spawn point
components:
- type: GhostRole
name: ghost-role-information-gnome-name
description: ghost-role-information-gnome-description
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleFreeAgent
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner

View File

@ -118,7 +118,7 @@
parent: SpawnPointJobBase
id: SpawnPointJusticeWarden
name: warden
suffix: Justice
suffix: Justice Warden
components:
- type: SpawnPoint
job_id: JusticeWarden

View File

@ -114,6 +114,14 @@
- type: WarpPoint
location: Armorer
- type: entity
parent: WarpPoint
id: WarpPointArmory
suffix: Armory
components:
- type: WarpPoint
location: Armory
# Justice
- type: entity
id: WarpPointCourt
@ -155,6 +163,22 @@
- type: WarpPoint
location: Marshal
- type: entity
parent: WarpPoint
id: WarpPointNonLethalArmory
suffix: Non-lethal Armory
components:
- type: WarpPoint
location: Non-lethal armory
- type: entity
parent: WarpPoint
id: WarpPointGenPop
suffix: GenPop
components:
- type: WarpPoint
location: GenPop
#Medical
- type: entity
parent: WarpPointNoBomb

View File

@ -0,0 +1,160 @@
- type: entity
parent: [ MobBaseAncestorNoShitmed ]
id: MobGnome
name: gnome
description: A cheery fellow. Definitely not a goblin. Or an elf.
components:
- type: Sprite
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: gnome
sprite: _DV/Mobs/Animals/gnome.rsi
- 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: DamageStateVisuals
states:
Alive:
Base: gnome
Dead:
Base: dead
- type: MobState
allowedStates:
- Alive
- Dead
- type: MobThresholds
thresholds:
0: Alive
50: Dead
- type: SlowOnDamage
speedModifierThresholds:
25: 0.8
40: 0.6
- type: Deathgasp
needsCritical: false
- type: StatusEffects
allowed:
- Electrocution
- Stunned
- Flashed
- Pacified
- Addicted # Funny
- type: GhostRole
name: ghost-role-information-gnome-name
description: ghost-role-information-gnome-description
rules: ghost-role-information-freeagent-rules
makeSentient: true
allowSpeech: true
allowMovement: true
mindRoles:
- MindRoleGhostRoleFreeAgent
raffle:
settings: default
- type: GhostTakeoverAvailable
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.2
density: 160
mask:
- SmallMobMask
layer:
- SmallMobLayer
- type: MovementSpeedModifier
baseWalkSpeed: 3
baseSprintSpeed: 5
- type: NpcFactionMember
factions:
- SimpleHostile # cats and dogs hate gnomes
- type: HTN
rootTask:
task: IdleCompound
- type: Speech
speechSounds: Gnome
- type: Emoting
- type: Vocal
sounds:
Male: GnomeSounds
Female: GnomeSounds
Unsexed: GnomeSounds
- type: RandomMetadata
nameSegments:
- NamesGnome
- NamesGnomeLast
nameFormat: name-format-standard
# abilities
- type: Psionic
- type: Jaunt
jauntAction: ActionPolymorphJauntGnome # 2 second jaunt with 20 second cooldown
- type: PsionicRegenerationPower
- type: PsionicInvisibilityPower
- type: NoSlip
- type: MeleeWeapon
soundHit:
collection: Punch
angle: 30
animation: WeaponArcFist
attackRate: 1
damage:
types:
Blunt: 5
- type: Prying
pryPowered: true
force: true
speedModifier: 1.5
useSound:
path: /Audio/Effects/glass_knock.ogg # Fairy magic
- type: Clumsy
clumsySound:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg
- type: PseudoItem
shape:
- 0,0,0,2
- type: Hands
activeHandId: Hand
hands:
Hand:
location: Left
showInHands: false # TODO: make displacement maps that just slide them down
- type: Puller # needs hands to pull
needsHands: true
- type: ComplexInteraction
- type: AutoImplant
implants:
- GnomeStorageImplant # for trinkets
- type: Thieving # for stealing said trinkets
stealthy: false
- type: Inventory
templateId: pet
speciesId: gnome
- type: Butcherable
butcheringType: knife
spawned:
- id: Ash
- id: ClothingHeadHatGnome
- type: Bloodstream
bloodReferenceSolution:
reagents:
- ReagentId: Nothing
Quantity: 60
- type: Tag
tags:
- FootstepSound
- type: entity
parent: StorageImplant
id: GnomeStorageImplant
description: This implant grants hidden storage within a person's body using bluespace technology.
categories: [ HideSpawnMenu ]
components:
- type: SubdermalImplant
implantAction: ActionOpenStorageImplant
permanent: true # only change from normal storage implant

View File

@ -0,0 +1,19 @@
- type: entity
name: jaunt
parent: EtherealJaunt
id: GnomeJaunt
suffix: Gnome
components:
- type: Sprite
sprite: Mobs/Ghosts/ghost_human.rsi # TODO: add a gnome hat to the sprite
color: "#60f766"
layers:
- state: animated
shader: unshaded
noRot: true
overrideContainerOcclusion: true
drawdepth: Ghosts
scale: 0.5, 0.5
- type: MovementSpeedModifier
baseSprintSpeed: 6.5
baseWalkSpeed: 4

View File

@ -221,6 +221,7 @@
parent: BaseJusticePDA
id: JusticeWardenPDA
name: warden PDA
suffix: Justice Warden
description: Covered in cracks and dents. Has seen more than its fair share of abuse.
components:
- type: Pda

View File

@ -337,3 +337,27 @@
components:
- type: NavMapBeacon
defaultText: station-beacon-justice-armory
- type: entity
parent: DefaultStationBeaconJustice
id: DefaultStationBeaconEvidenceRoom
suffix: Evidence Room
components:
- type: NavMapBeacon
defaultText: station-beacon-evidence-room
- type: entity
parent: DefaultStationBeaconJustice
id: DefaultStationBeaconHoldingCells
suffix: Holding Cells
components:
- type: NavMapBeacon
defaultText: station-beacon-holding-cells
- type: entity
parent: DefaultStationBeaconJustice
id: DefaultStationBeaconGenPop
suffix: GenPop
components:
- type: NavMapBeacon
defaultText: station-beacon-genpop

View File

@ -41,6 +41,7 @@
parent: BedsheetBase
id: BedsheetJusticeWarden
name: warden's bedsheet
suffix: Justice Warden
components:
- type: Sprite # TODO: Resprite
state: random_bedsheet

View File

@ -260,6 +260,7 @@
parent: IDCardStandard
id: JusticeWardenIDCard
name: warden ID card
suffix: Justice Warden
components:
- type: Sprite
layers:

View File

@ -64,7 +64,7 @@
id: RubberStampJusticeWarden
name: warden's rubber stamp
categories: [ DoNotMap ]
suffix: DO NOT MAP
suffix: DO NOT MAP, Justice
description: With a simple press of ink to paper, a life is sealed behind bars. Maybe not forever.
components:
- type: Stamp

View File

@ -0,0 +1,9 @@
- type: entity
parent: BannerBase
id: BannerJustice
name: justice banner
description: A banner displaying the color of the justice department. Where court hearings happen... probably.
components:
- type: Sprite
sprite: Structures/Decoration/banner.rsi # TODO: Resprite. Upstream security banner as placeholder.
state: banner_security

View File

@ -492,7 +492,7 @@
- type: entity
parent: FaxMachineBase
id: FaxMachineWarden
suffix: Warden
suffix: Warden, Security
components:
- type: PageSender
autoLinkJobs: [Warden]

View File

@ -124,7 +124,7 @@
- type: entity
parent: Holopad
id: HolopadJusticeDetective
suffix: Detective
suffix: Detective, Justice
components:
- type: Label
currentLabel: holopad-justice-detective
@ -144,6 +144,7 @@
- type: entity
parent: Holopad
id: HolopadJusticeJusticeWarden
suffix: Justice Warden
components:
- type: Label
currentLabel: holopad-justice-warden

View File

@ -84,6 +84,7 @@
parent: LockerJustice
id: LockerJusticeDetective # TODO - Resprite
name: detective's locker
suffix: Justice
components:
- type: AccessReader
access: [["Detective"]]
@ -92,6 +93,7 @@
parent: LockerJustice
id: LockerJusticeWarden # TODO - Resprite
name: warden's locker
suffix: Justice Warden
components:
- type: AccessReader
access: [["JusticeWarden"]]
@ -408,6 +410,77 @@
- type: AccessReader
access: [["Armory"]]
- type: entity
parent: SecurityGunSafeNonlethalDV
id: JusticeGunSafeNonlethalDV
suffix: Justice variant
#components:
#- type: Sprite # TODO: Resprite to justice colors.
# sprite: _DV/Structures/Storage/Closets/nonlethalsafe.rsi
# noRot: true
- type: entity
parent: JusticeGunSafeNonlethalDV
id: JusticeGunSafeNonlethalSecureDV
suffix: Armory, Marshal, JusticeWarden, Locked
components:
- type: AccessReader
access: [["Armory"], ["Marshal"], ["JusticeWarden"]]
- type: entity
parent: SecurityGunSafeNonlethalHandgunDV
id: JusticeGunSafeNonlethalHandgunDV
suffix: Justice variant
#components:
#- type: Sprite # TODO: Resprite to justice colors.
# sprite: _DV/Structures/Storage/Closets/disablersafe.rsi
# noRot: true
- type: entity
parent: SecurityGunSafeNonlethalHandgunDV
id: JusticeGunSafeNonlethalHandgunSecureDV
suffix: Armory, Marshal, JusticeWarden, Locked
components:
- type: AccessReader
access: [["Armory"], ["Marshal"], ["JusticeWarden"]]
- type: entity
parent: SecurityGunSafeNonlethalDV
id: JusticeGunSafeNonLethalShotgunDV
name: non-lethal shotgun safe
suffix: Justice variant
components:
#- type: Sprite # TODO: Resprite to justice colors.
# sprite: _DV/Structures/Storage/Closets/nonlethalsafe.rsi
# noRot: true
- type: EntityStorageVisuals
stateDoorClosed: shotgun
- type: entity
parent: JusticeGunSafeNonLethalShotgunDV
id: JusticeGunSafeNonLethalShotgunSecureDV
suffix: Armory, Marshal, JusticeWarden, Locked
components:
- type: AccessReader
access: [["Armory"], ["Marshal"], ["JusticeWarden"]]
- type: entity
parent: JusticeGunSafeNonlethalHandgunDV
id: JusticeGunSafeDisablerDV
name: disabler safe
suffix: Justice variant
components:
- type: EntityStorageVisuals
stateDoorClosed: disabler
- type: entity
parent: JusticeGunSafeDisablerDV
id: JusticeGunSafeDisablerSecureDV
suffix: Armory, Marshal, JusticeWarden, Locked
components:
- type: AccessReader
access: [["Armory"], ["Marshal"], ["JusticeWarden"]]
# Evac pod
- type: entity
parent: LockerBase

View File

@ -189,7 +189,7 @@
- type: entity
parent: FilledSecureCabinet
id: SecureCabinetWarden
suffix: Warden
suffix: Warden, Security
components:
- type: AccessReader
access: [["Armory"]]

View File

@ -5,6 +5,7 @@
- id: MothroachSpawn
- id: XenoVents
- id: MalignRiftSpawn
- id: GnomeSpawn
- id: PitbullMigration # FETCH ME THEIR SOULS
- type: entityTable
@ -423,7 +424,6 @@
implants:
- HitmanCardImplant
# nt agent sleeper event
- type: entity
id: NTAgentSleeper
@ -464,6 +464,35 @@
- RadioImplantCentcomm
- NanolinkSubImplant
# Gnomes
- type: entity
parent: BaseMidRoundAntag
id: GnomeSpawn
components:
- type: StationEvent
earliestStart: 15
minimumPlayers: 5
weight: 2
duration: null
- type: PrecognitionResult
message: psionic-power-precognition-gnome-spawn-result-message
- type: AntagSpawner
prototype: MobGnome
- type: AntagSelection
agentName: gnome-round-end-name
definitions:
- spawnerPrototype: SpawnPointGnome
min: 1
max: 2
pickPlayer: false
mindRoles:
- MindRoleGhostRoleFreeAgent
components:
- type: EmitSoundOnSpawn
sound: /Audio/Effects/bodyfall3.ogg
- type: SpawnOnTrigger
proto: EffectFlashBluespace
# NT Pest Control via Pitbulls
- type: entity
id: PitbullMigration

View File

@ -11,6 +11,7 @@
- id: GlimmerSpawnProber
- id: GlimmerRevenantSpawn
- id: GlimmerMiteSpawn
- id: GlimmerGnomeSpawn
- id: GlimmerRandomSentience
- id: GlimmerRandomAnimation
- id: ThavenMoodUpset
@ -148,6 +149,17 @@
mobPrototype: MobGlimmerMite
glimmerTier: Low # get more mites earlier on
- type: entity
parent: BaseGlimmerSignaturesEvent
id: GlimmerGnomeSpawn
components:
- type: GlimmerEvent
minimumGlimmer: 500
maximumGlimmer: 900
- type: GlimmerMobRule
mobPrototype: MobGnome
maxSpawns: 2
# Like upstream's event but can reoccur and tied to glimmer.
- type: entity
parent: [RandomSentience, BaseGlimmerEvent]
@ -224,7 +236,6 @@
- silver
- yellow
- type: entity
id: GlimmerRestyle
parent: BaseGlimmerSignaturesEvent

View File

@ -7,3 +7,13 @@
transferDamage: true
revertOnCrit: true
revertOnDeath: true
- type: polymorph
id: GnomeMorph
configuration:
entity: GnomeJaunt
cooldown: 20
forced: true
duration: 2
polymorphSound: /Audio/_DV/Voice/Gnome/gnomelaugh.ogg
inventory: Drop # drop items in hands when jaunting

View File

@ -9,7 +9,4 @@
maleFirstNames: NamesMotorkindFirst
femaleFirstNames: NamesMotorkindFirst
lastNames: NamesMotorkindLast
baseScale: "2.0, 2.0"
minHeight: 0.8
maxHeight: 1.2
defaultHeight: 1.0
baseScale: 2.0, 2.0

View File

@ -9,5 +9,4 @@
femaleFirstNames: NamesOniFemale
lastNames: NamesOniLocation
naming: LastNoFirst
baseScale: "1.2, 1.2"
maxHeight: 1.05
baseScale: 1.1, 1.1

View File

@ -5,5 +5,4 @@
prototype: MobFelinid
dollPrototype: AppearanceFelinid
skinColoration: Hues
baseScale: "0.8, 0.8"
minHeight: 0.95
baseScale: 0.8, 0.8

View File

@ -5,8 +5,4 @@
prototype: MobHarpy
dollPrototype: AppearanceHarpy
skinColoration: HumanToned
baseScale: "0.9, 0.9"
# Delta V Start - Due to the actual real world variance in avian size, I changed the range to be slightly wider, allowing for much larger, and smaller, Harpies, without going into territory deemed unfair.
minHeight: 0.75
maxHeight: 1.25
# Delta V End
baseScale: 0.95, 0.95

View File

@ -5,6 +5,4 @@
prototype: MobKitsune
dollPrototype: AppearanceKitsune
skinColoration: HumanToned
baseScale: 1, 1
minHeight: .85
maxHeight: 1.05
baseScale: 0.9, 0.9

View File

@ -11,4 +11,3 @@
lastNames: NamesRodentiaLast
naming: LastFirst
baseScale: 0.8, 0.8
minHeight: .85

View File

@ -739,6 +739,38 @@
Mew:
collection: FelinidMews
- type: emoteSounds
id: GnomeSounds
params:
variation: 0.08
sounds:
Gulp: # Goob
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
Blink:
collection: Blinks
Scream:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg
Laugh:
path: /Audio/_DV/Voice/Gnome/gnomelaugh.ogg
Sigh:
collection: MaleSigh
params:
variation: 0.125
Snore:
collection: Snores
Sneeze:
collection: MaleSneezes
Cough:
collection: MaleCoughs
Yawn:
collection: MaleYawn
Crying:
collection: MaleCry
Whistle:
collection: Whistles
DefaultDeathgasp:
path: /Audio/_DV/Voice/Gnome/gnomedeath.ogg
- type: emoteSounds
id: MonkeySounds
sounds:

View File

@ -33,3 +33,12 @@
collection: RubberChicken
exclaimSound:
collection: RubberChicken
- type: speechSounds
id: Gnome
saySound:
path: /Audio/_DV/Voice/Gnome/gnome1.ogg
askSound:
path: /Audio/_DV/Voice/Gnome/gnome1.ogg
exclaimSound:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg

View File

@ -102,8 +102,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Thaven
- type: ScaleVisuals
speciesScale: 1.0, 1.05
- type: entity
parent:
@ -148,7 +146,7 @@
shape:
!type:PhysShapeCircle
radius: 0.35
density: 120
density: 180
restitution: 0.0
mask:
- MobMask

View File

@ -1,5 +1,5 @@
- type: entity
save: false
name: Uristia Mc-hands
name: Urist McShorty
parent: BaseMobAllulalo
id: MobAllulalo

View File

@ -1,6 +1,6 @@
- type: entity
save: false
name: Uristia Mc-Hands
name: Uristia McShorty
parent:
- AppearanceAllulalo
- BaseSpeciesMobOrganic
@ -119,103 +119,6 @@
- type: Carriable # Delta V - grips the bird
freeHandsRequired: 1
# Begin Delta V Removals - Nubody
# - type: HumanoidAppearance
# species: Allulalo
# hideLayersOnEquip:
# - Hair
# - Snout
# - HeadTop
# - HeadSide
# - LLeg
# - RLeg
# - LFoot
# - RFoot
#- type: entity
# parent: BaseSpeciesDummy
# id: MobAllulaloDummy
# categories: [ HideSpawnMenu ]
# components:
# - type: Sprite
# scale: 1, 1
# - type: Inventory
# speciesId: allulalo
# templateId: allulalo
# displacements:
# jumpsuit:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: jumpsuit
# head:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: head
# eyes:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: glasses
# ears:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: ears
# mask:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: mask
# neck:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: neck
# outerClothing:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: outerClothing
# gloves:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: hands
# shoes:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: feet
# belt:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: belt
# back:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: back
# suitstorage:
# sizeMaps:
# 32:
# sprite: _Impstation/Mobs/Species/Allulalo/displacement.rsi
# state: suitstorage
# - type: Hands
# leftHandDisplacement:
# sizeMaps:
# 32:
# sprite: Mobs/Species/Vox/displacement.rsi
# state: hand_l
# rightHandDisplacement:
# sizeMaps:
# 32:
# sprite: Mobs/Species/Vox/displacement.rsi
# state: hand_r
# End Delta V Removals
# Begin Delta V addition - Nubody
- type: entity
parent: BaseSpeciesAppearance
@ -319,6 +222,14 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Allulalo
# BEGIN DeltaV
# Allulalo are weird because they are small yet base scale 1.0 BUT since the height system uses
# base scale to determine the metric/imperial height values, so we're just correcting the scale
# because Allulalo have to be the special kid on the block.
- type: ScaleVisuals
scale: 2.0, 2.0
originalScale: 2.0, 2.0
# END DeltaV
- type: entity
parent: OrganBase

View File

@ -4,7 +4,6 @@
roundStart: true
prototype: MobAllulalo
defaultSkinTone: "#385878"
#markingLimits: MobAllulaloMarkingLimits # Delta V - Nubody
dollPrototype: AppearanceAllulalo # Delta V - Nubody
skinColoration: Hues
maleFirstNames: AllulaloFirstNames
@ -14,150 +13,4 @@
- Male
- Female
- Unsexed
# Begin Delta V Removals - Changes for Nubody
#- type: speciesBaseSprites
# id: MobAllulaloSprites
# sprites:
# TailBehind: MobHumanoidAnyMarking # floof
# TailOversuit: MobHumanoidAnyMarking # floof
# Eyes: MobAllulaloEyes
# Head: MobAllulaloHead
# HeadTop: MobHumanoidAnyMarking
# Hair: MobHumanoidAnyMarking
# Chest: MobAllulaloTorso
# LArm: MobAllulaloLArm
# RArm: MobAllulaloRArm
# LHand: MobAllulaloLHand
# LLeg: MobAllulaloLLeg
# RLeg: MobAllulaloRLeg
# LFoot: MobAllulaloLFoot
# RFoot: MobAllulaloRFoot
# Tail: MobHumanoidAnyMarking
# Snout: MobHumanoidAnyMarking
#
#- type: markingPoints
# id: MobAllulaloMarkingLimits
# onlyWhitelisted: true
# points:
# Hair:
# points: 1
# required: false
# Eyes:
# points: 1
# required: true
# defaultMarkings: [ AllulaloEyesDefault ]
# Head:
# points: 3
# required: false
# HeadTop:
# points: 1
# required: false
# UndergarmentTop:
# points: 1
# required: false
# Chest:
# points: 2
# required: false
# Tail:
# points: 1
# required: true
# defaultMarkings: [ AllulaloTailDefault ]
# Snout:
# points: 1
# required: false
# Overlay:
# points: 1
# required: false
# Arms:
# points: 1
# required: true
# defaultMarkings: [ AllulaloWingsDefault ]
# Legs:
# points: 2
# required: false
#
#- type: humanoidBaseSprite
# id: MobAllulaloEyes
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: eyes
#
#- type: humanoidBaseSprite
# id: MobAllulaloHead
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: head
#
#- type: humanoidBaseSprite
# id: MobAllulaloHeadMale
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: head
#
#- type: humanoidBaseSprite
# id: MobAllulaloHeadFemale
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: head
#
#- type: humanoidBaseSprite
# id: MobAllulaloTorso
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: torso
#
#- type: humanoidBaseSprite
# id: MobAllulaloTorsoMale
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: torso
#
#- type: humanoidBaseSprite
# id: MobAllulaloTorsoFemale
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: torso
#
#- type: humanoidBaseSprite
# id: MobAllulaloLLeg
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: l_leg
#
#- type: humanoidBaseSprite
# id: MobAllulaloLHand
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: hands
#
#- type: humanoidBaseSprite
# id: MobAllulaloLArm
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: l_arm
#
#- type: humanoidBaseSprite
# id: MobAllulaloLFoot
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: l_foot
#
#- type: humanoidBaseSprite
# id: MobAllulaloRLeg
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: r_leg
#
#- type: humanoidBaseSprite
# id: MobAllulaloRArm
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: r_arm
#
#- type: humanoidBaseSprite
# id: MobAllulaloRFoot
# baseSprite:
# sprite: _Impstation/Mobs/Species/Allulalo/parts.rsi
# state: r_foot
# End Delta V Removals
baseScale: 0.5, 0.5 # they smol

Some files were not shown because too many files have changed in this diff Show More