Merge branch 'master' into StormyV_Con
This commit is contained in:
commit
34a6abe39b
|
|
@ -59,9 +59,12 @@
|
|||
<Label Text="{Loc 'health-analyzer-window-entity-temperature-text'}" />
|
||||
<Label Name="TemperatureLabel" />
|
||||
<Label Text="{Loc 'health-analyzer-window-entity-blood-level-text'}" />
|
||||
<Label Name="BloodLabel" />
|
||||
<Label Text="{Loc 'health-analyzer-window-entity-damage-total-text'}" />
|
||||
<Label Name="DamageLabel" />
|
||||
<!-- Begin DeltaV - Health Analyzer Plus -->
|
||||
<Label Name="BloodLevelLabel" />
|
||||
<!-- Label Name="BloodLabel" / -->
|
||||
<!-- Label Text="{Loc 'health-analyzer-window-entity-damage-total-text'}" / -->
|
||||
<!-- Label Name="DamageLabel" / -->
|
||||
<!-- End DeltaV - Health Analyzer Plus -->
|
||||
</GridContainer>
|
||||
</BoxContainer>
|
||||
|
||||
|
|
@ -73,10 +76,41 @@
|
|||
|
||||
<PanelContainer StyleClasses="LowDivider" />
|
||||
|
||||
<BoxContainer
|
||||
Name="GroupsContainer"
|
||||
Margin="0 5 0 5"
|
||||
Orientation="Vertical">
|
||||
</BoxContainer>
|
||||
<!-- Begin DeltaV - Health Analyzer Plus -->
|
||||
<!-- BoxContainer Name="GroupsContainer" Margin="0 5 0 5" Orientation="Vertical" -->
|
||||
<!-- /BoxContainer -->
|
||||
|
||||
<GridContainer Margin="0 5 0 5" Columns="3" HorizontalAlignment="Center">
|
||||
<BoxContainer Name="DamageBox" Margin="5 5 5 5" Orientation="Vertical">
|
||||
<Label Name="TotalDamageLabel" HorizontalAlignment="Center" />
|
||||
<PanelContainer Name="DamageGroupsDivider" StyleClasses="LowDivider" />
|
||||
<Label
|
||||
Name="NoDamageLabel"
|
||||
HorizontalAlignment="Center"
|
||||
Text="{Loc 'health-analyzer-plus-window-no-damage-text'}"
|
||||
FontColorOverride="DeepSkyBlue"
|
||||
Margin="0 5 0 5" />
|
||||
<BoxContainer HorizontalAlignment="Center">
|
||||
<BoxContainer Name="DamageGroupsContainer" Margin="0 5 0 5" Orientation="Vertical" />
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
|
||||
<PanelContainer StyleClasses="LowDivider" />
|
||||
|
||||
<BoxContainer Name="BloodstreamBox" Margin="5 5 5 5" Orientation="Vertical">
|
||||
<Label Name="TotalReagentQuantityLabel" HorizontalAlignment="Center" />
|
||||
<PanelContainer Name="BloodstreamReagentsDivider" StyleClasses="LowDivider" />
|
||||
<Label
|
||||
Name="NoReagentsLabel"
|
||||
HorizontalAlignment="Center"
|
||||
Text="{Loc 'health-analyzer-plus-window-no-reagents-text'}"
|
||||
FontColorOverride="DeepSkyBlue"
|
||||
Margin="0 5 0 5" />
|
||||
<BoxContainer HorizontalAlignment="Center">
|
||||
<BoxContainer Name="BloodstreamReagentListContainer" Orientation="Vertical" Margin="0 5 0 5" />
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
</GridContainer>
|
||||
<!-- End DeltaV - Health Analyzer Plus -->
|
||||
|
||||
</BoxContainer>
|
||||
|
|
|
|||
|
|
@ -19,12 +19,25 @@ using Robust.Client.UserInterface.Controls;
|
|||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
// BEGIN DeltaV
|
||||
using Content.Client._DV.Traits.Assorted;
|
||||
using Content.Shared._DV.Traits.Assorted;
|
||||
using Content.Shared._DV.Medical; // Uncloneable
|
||||
using Content.Shared._DV.MedicalRecords; // Medical Records
|
||||
|
||||
// Health Analyzer Plus
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.Body.Systems;
|
||||
using Content.Client.Body.Systems;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Client.Chemistry.Containers.EntitySystems;
|
||||
using Content.Shared.Body.Components;
|
||||
// END DeltaV
|
||||
namespace Content.Client.HealthAnalyzer.UI;
|
||||
|
||||
using Content.Client._DV.Traits.Assorted; // DeltaV
|
||||
using Content.Shared._DV.Traits.Assorted; // DeltaV
|
||||
using Content.Shared._DV.Medical; // DeltaV - Uncloneable
|
||||
using Content.Shared._DV.MedicalRecords; // DeltaV - Medical Records
|
||||
|
||||
|
||||
// Health analyzer UI is split from its window because it's used by both the
|
||||
// health analyzer item and the cryo pod UI.
|
||||
|
|
@ -32,6 +45,8 @@ using Content.Shared._DV.MedicalRecords; // DeltaV - Medical Records
|
|||
[GenerateTypedNameReferences]
|
||||
public sealed partial class HealthAnalyzerControl : BoxContainer
|
||||
{
|
||||
private const string REAGENT_GROUP_MEDICINE = "Medicine"; // DeltaV - Health Analyzer
|
||||
|
||||
private readonly IEntityManager _entityManager;
|
||||
private readonly SpriteSystem _spriteSystem;
|
||||
private readonly IPrototypeManager _prototypes;
|
||||
|
|
@ -41,6 +56,8 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
private readonly UnborgableSystem _unborgable; // DeltaV
|
||||
private readonly RedshirtSystem _redshirt; // DeltaV
|
||||
private readonly UncloneableSystem _uncloneable; // DeltaV
|
||||
private readonly SharedBloodstreamSystem _bloodstream; // DeltaV
|
||||
private readonly SharedSolutionContainerSystem _solutionContainer; // DeltaV
|
||||
|
||||
// Begin DeltaV - Medical Records
|
||||
private readonly ButtonGroup _triageStatusGroup = new();
|
||||
|
|
@ -66,6 +83,8 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
_unborgable = _entityManager.System<UnborgableSystem>(); // DeltaV
|
||||
_redshirt = _entityManager.System<RedshirtSystem>(); // DeltaV
|
||||
_uncloneable = _entityManager.System<UncloneableSystem>(); // DeltaV
|
||||
_bloodstream = _entityManager.System<BloodstreamSystem>(); // DeltaV
|
||||
_solutionContainer = _entityManager.System<SolutionContainerSystem>(); // DeltaV
|
||||
|
||||
// Begin DeltaV - Medical Records
|
||||
foreach (var item in Enum.GetValues<TriageStatus>())
|
||||
|
|
@ -138,9 +157,13 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
? $"{state.Temperature - Atmospherics.T0C:F1} °C ({state.Temperature:F1} K)"
|
||||
: Loc.GetString("health-analyzer-window-entity-unknown-value-text");
|
||||
|
||||
// Begin DeltaV - Health Analyzer Plus
|
||||
/*
|
||||
BloodLabel.Text = !float.IsNaN(state.BloodLevel)
|
||||
? $"{state.BloodLevel * 100:F1} %"
|
||||
: Loc.GetString("health-analyzer-window-entity-unknown-value-text");
|
||||
*/
|
||||
// End DeltaV - Health Analyzer Plus
|
||||
|
||||
StatusLabel.Text =
|
||||
_entityManager.TryGetComponent<MobStateComponent>(target.Value, out var mobStateComponent)
|
||||
|
|
@ -149,7 +172,7 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
|
||||
// Total Damage
|
||||
|
||||
DamageLabel.Text = _damageable.GetTotalDamage(target.Value).ToString();
|
||||
// DamageLabel.Text = _damageable.GetTotalDamage(target.Value).ToString(); // DeltaV - Health Analyzer Plus
|
||||
|
||||
// Alerts
|
||||
// DeltaV traits - This is going to be horrid if we just keep adding things like this.
|
||||
|
|
@ -216,6 +239,7 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
var damagePerType = _damageable.GetAllDamage(target.Value).DamageDict;
|
||||
|
||||
DrawDiagnosticGroups(damageSortedGroups, damagePerType);
|
||||
DrawBloodstreamInfo(target.Value, state.BloodSolution, state.BloodLevel); // End DeltaV - Health Analyzer Plus
|
||||
|
||||
// Begin DeltaV - Medical Records
|
||||
if (state.MedicalRecord is not { } records)
|
||||
|
|
@ -254,7 +278,15 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
Dictionary<ProtoId<DamageGroupPrototype>, FixedPoint2> groups,
|
||||
IReadOnlyDictionary<ProtoId<DamageTypePrototype>, FixedPoint2> damageDict)
|
||||
{
|
||||
GroupsContainer.RemoveAllChildren();
|
||||
// Begin DeltaV - Health Analyzer Plus
|
||||
// GroupsContainer.RemoveAllChildren();
|
||||
DamageGroupsContainer.RemoveAllChildren();
|
||||
|
||||
// Begin DeltaV - Health Analyzer Plus
|
||||
var totalDamage = damageDict.Sum(x => x.Value.Double());
|
||||
TotalDamageLabel.Text = Loc.GetString("health-analyzer-plus-window-entity-total-damage-text", ("amount", Math.Round(totalDamage, 2)));
|
||||
NoDamageLabel.Visible = totalDamage == 0;
|
||||
// End DeltaV - Health Analyzer Plus
|
||||
|
||||
foreach (var (damageGroupId, damageAmount) in groups)
|
||||
{
|
||||
|
|
@ -275,7 +307,8 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
|
||||
groupContainer.AddChild(CreateDiagnosticGroupTitle(groupTitleText, damageGroupId));
|
||||
|
||||
GroupsContainer.AddChild(groupContainer);
|
||||
// GroupsContainer.AddChild(groupContainer); // DeltaV - Health Analyzer Plus
|
||||
DamageGroupsContainer.AddChild(groupContainer); // DeltaV - Health Analyzer Plus
|
||||
|
||||
// Show the damage for each type in that group.
|
||||
var group = _prototypes.Index(damageGroupId);
|
||||
|
|
@ -296,6 +329,116 @@ public sealed partial class HealthAnalyzerControl : BoxContainer
|
|||
}
|
||||
}
|
||||
|
||||
// Begin DeltaV - Health Analyzer Plus
|
||||
private void DrawBloodstreamInfo(EntityUid target, Solution? bloodSolution, float bloodlevel)
|
||||
{
|
||||
BloodstreamReagentListContainer.RemoveAllChildren();
|
||||
|
||||
List<ReagentQuantity> bloodstream = new();
|
||||
double totalReagentQuantity = 0;
|
||||
double unknownReagents = 0;
|
||||
// Make sure we can access the bloodtype and reagents before trying to use them
|
||||
if (bloodSolution is not null)
|
||||
{
|
||||
if (!_entityManager.TryGetComponent<BloodstreamComponent>(target, out var bloodstreamComp) ||
|
||||
!_solutionContainer.ResolveSolution(target, bloodstreamComp.BloodSolutionName, ref bloodstreamComp.BloodSolution, out var bloodReagentSolution))
|
||||
return;
|
||||
|
||||
// Get the blood reagent IDs to ignore in the scan
|
||||
var bloodReagentIds = bloodstreamComp.BloodReferenceSolution.Select(b => b.Reagent);
|
||||
|
||||
// Get all of the medicines in the bloodstream
|
||||
foreach (var reagent in bloodSolution!.Contents)
|
||||
{
|
||||
if (bloodReagentIds.Contains(reagent.Reagent))
|
||||
continue;
|
||||
|
||||
if (_prototypes.Index<ReagentPrototype>(reagent.Reagent.Prototype).Group == REAGENT_GROUP_MEDICINE)
|
||||
{
|
||||
bloodstream.Add(reagent);
|
||||
totalReagentQuantity += reagent.Quantity.Double();
|
||||
}
|
||||
else
|
||||
{
|
||||
unknownReagents += reagent.Quantity.Double();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var bloodQuantityPercent = !float.IsNaN(bloodlevel)
|
||||
? $"{bloodlevel * 100:F1} %"
|
||||
: Loc.GetString("health-analyzer-window-entity-unknown-value-text");
|
||||
|
||||
// Display the percent and amount of blood in the system
|
||||
// Normal health scanner is percent only, this one adds the actual units too
|
||||
BloodLevelLabel.Text = Loc.GetString(
|
||||
"health-analyzer-plus-window-entity-blood-level-quantity-text",
|
||||
("percent", bloodQuantityPercent)
|
||||
);
|
||||
|
||||
// Display the total amount of reagents in the bloodstream, 0 is valid
|
||||
TotalReagentQuantityLabel.Text = Loc.GetString(
|
||||
"health-analyzer-plus-window-entity-total-reagents-text",
|
||||
("amount", Math.Round(totalReagentQuantity, 1).ToString("0.0"))
|
||||
);
|
||||
|
||||
// If the bloodstream was empty, display a message instead to fill the space with something
|
||||
NoReagentsLabel.Visible = bloodstream.Count == 0 && unknownReagents == 0;
|
||||
|
||||
// For each of the reagents in the bloodstream, add them to the list of reagents
|
||||
// If there are none, this loop will simply do nothing
|
||||
foreach (var (reagentID, reagentQuantity) in bloodstream)
|
||||
{
|
||||
var reagentPrototype = _prototypes.Index<ReagentPrototype>(reagentID.Prototype);
|
||||
|
||||
// Make a new container for each reagent we add to the list
|
||||
var reagentContainer = new BoxContainer
|
||||
{
|
||||
Align = AlignMode.Begin,
|
||||
Orientation = LayoutOrientation.Vertical
|
||||
};
|
||||
|
||||
// Add the string "[] <reagent_name>: <reagent_amount>u" for the current reagent
|
||||
// The [] is a unicode block character, and is colored with the reagent color
|
||||
// to make it easier to identify
|
||||
reagentContainer.AddChild(
|
||||
new RichTextLabel
|
||||
{
|
||||
Text = Loc.GetString("health-analyzer-plus-window-reagent-text",
|
||||
("reagentColor", reagentPrototype.SubstanceColor),
|
||||
("reagentName", reagentPrototype.LocalizedName),
|
||||
("amount", Math.Round(reagentQuantity.Double(), 1).ToString("0.0"))
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
BloodstreamReagentListContainer.AddChild(reagentContainer);
|
||||
}
|
||||
|
||||
// Add unknown reagents (if any)
|
||||
if (unknownReagents > 0)
|
||||
{
|
||||
var unknownReagentContainer = new BoxContainer
|
||||
{
|
||||
Align = AlignMode.Begin,
|
||||
Orientation = LayoutOrientation.Vertical
|
||||
};
|
||||
|
||||
unknownReagentContainer.AddChild(
|
||||
new RichTextLabel
|
||||
{
|
||||
Text = Loc.GetString("health-analyzer-plus-window-unknown-reagents-text",
|
||||
("amount", Math.Round(unknownReagents, 1).ToString("0.0"))
|
||||
)
|
||||
}
|
||||
);
|
||||
BloodstreamReagentListContainer.AddChild(unknownReagentContainer);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
// End DeltaV - Health Analyzer Plus
|
||||
|
||||
private Texture GetTexture(string texture)
|
||||
{
|
||||
var rsiPath = new ResPath("/Textures/Objects/Devices/health_analyzer.rsi");
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@
|
|||
<ScrollContainer
|
||||
Margin="5 5 5 5"
|
||||
ReturnMeasure="True"
|
||||
VerticalExpand="True">
|
||||
VerticalExpand="True"
|
||||
VScrollBarHidden="True"
|
||||
HScrollBarHidden="True"> <!-- DeltaV - Hide the scroll bars -->
|
||||
|
||||
<ui:HealthAnalyzerControl
|
||||
Name="HealthAnalyzer"
|
||||
|
|
|
|||
|
|
@ -88,9 +88,9 @@ public sealed partial class CryoPodWindow : FancyWindow
|
|||
// Health analyzer
|
||||
var maybePatient = _entityManager.GetEntity(msg.Health.TargetEntity);
|
||||
var hasPatient = msg.Health.TargetEntity.HasValue;
|
||||
var hasDamage = hasPatient && msg.HasDamage;
|
||||
// var hasDamage = hasPatient && msg.HasDamage; // DeltaV - Health Analyzer Plus
|
||||
|
||||
NoDamageText.Visible = (hasPatient && !hasDamage);
|
||||
NoDamageText.Visible = false; //(hasPatient && !hasDamage); // DeltaV - Health Analyzer Plus
|
||||
HealthSection.Visible = hasPatient;
|
||||
EjectPatientButton.Disabled = !hasPatient;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
<controls:FancyWindow xmlns="https://spacestation14.io"
|
||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
|
||||
xmlns:chassisSpriteControls="clr-namespace:Content.Client._CD.Silicons.Borgs.UI"
|
||||
Title="{Loc 'borg-select-type-menu-title'}"
|
||||
SetSize="600 480">
|
||||
SetSize="550 300">
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<BoxContainer Orientation="Horizontal" VerticalExpand="True">
|
||||
<!-- Left pane: selection of borg type -->
|
||||
|
|
@ -30,9 +29,6 @@
|
|||
<RichTextLabel Name="DescriptionLabel" VerticalExpand="True" VerticalAlignment="Top" />
|
||||
</BoxContainer>
|
||||
</Control>
|
||||
|
||||
<chassisSpriteControls:ChassisSpriteSelection Name="ChassisSpriteSelection"/> <!-- CD change -->
|
||||
|
||||
<controls:ConfirmButton Name="ConfirmTypeButton" Text="{Loc 'borg-select-type-menu-confirm'}"
|
||||
Disabled="True" HorizontalAlignment="Right"
|
||||
MinWidth="200" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using System.Linq;
|
||||
using Content.Client.UserInterface.Controls;
|
||||
using Content.Client.UserInterface.Systems.Guidebook;
|
||||
using Content.Shared._CD.Silicons; // CosmicDrift
|
||||
using Content.Shared.Guidebook;
|
||||
using Content.Shared.Silicons.Borgs;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
|
|
@ -30,7 +29,6 @@ public sealed partial class BorgSelectTypeMenu : FancyWindow
|
|||
private BorgTypePrototype? _selectedBorgType;
|
||||
|
||||
public event Action<ProtoId<BorgTypePrototype>>? ConfirmedBorgType;
|
||||
public event Action<EntityPrototype?>? ConfirmedBorgSubtype; // CosmicDrift event - borg subtypes
|
||||
|
||||
private static readonly List<ProtoId<GuideEntryPrototype>> GuidebookEntries = new() { "Cyborgs", "Robotics" };
|
||||
|
||||
|
|
@ -58,13 +56,6 @@ public sealed partial class BorgSelectTypeMenu : FancyWindow
|
|||
|
||||
ConfirmTypeButton.OnPressed += ConfirmButtonPressed;
|
||||
HelpGuidebookIds = GuidebookEntries;
|
||||
|
||||
// Start CosmicDrift Changes - borg subtypes
|
||||
ChassisSpriteSelection.SubtypeSelected += () =>
|
||||
{
|
||||
ConfirmTypeButton.Disabled = false;
|
||||
};
|
||||
// End CosmicDrift Changes - borg subtypes
|
||||
}
|
||||
|
||||
private void UpdateInformation(BorgTypePrototype prototype)
|
||||
|
|
@ -96,14 +87,6 @@ public sealed partial class BorgSelectTypeMenu : FancyWindow
|
|||
NameLabel.Text = PrototypeName(prototype);
|
||||
DescriptionLabel.Text = Loc.GetString($"borg-type-{prototype.ID}-desc");
|
||||
ChassisView.SetPrototype(prototype.DummyPrototype);
|
||||
|
||||
// Start CosmicDrift Changes - borg subtypes
|
||||
if (_selectedBorgType != null)
|
||||
{
|
||||
ConfirmTypeButton.Disabled = true;
|
||||
ChassisSpriteSelection.Update(_selectedBorgType);
|
||||
}
|
||||
// End CosmicDrift Changes - borg subtypes
|
||||
}
|
||||
|
||||
private void ConfirmButtonPressed(BaseButton.ButtonEventArgs obj)
|
||||
|
|
@ -111,7 +94,6 @@ public sealed partial class BorgSelectTypeMenu : FancyWindow
|
|||
if (_selectedBorgType == null)
|
||||
return;
|
||||
|
||||
ConfirmedBorgSubtype?.Invoke(ChassisSpriteSelection.SubtypePrototype); // CosmicDrift
|
||||
ConfirmedBorgType?.Invoke(_selectedBorgType);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
using Content.Shared._CD.Silicons; // CosmicDrift
|
||||
using Content.Shared._CD.Silicons.Borgs; // CosmicDrift
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.UserInterface;
|
||||
|
||||
|
|
@ -28,6 +26,5 @@ public sealed class BorgSelectTypeUserInterface : BoundUserInterface
|
|||
|
||||
_menu = this.CreateWindow<BorgSelectTypeMenu>();
|
||||
_menu.ConfirmedBorgType += prototype => SendPredictedMessage(new BorgSelectTypeMessage(prototype));
|
||||
_menu.ConfirmedBorgSubtype += subtypePrototype => SendPredictedMessage(new BorgSelectSubtypeMessage(subtypePrototype?.ID)); // CosmicDrift - borg subtypes
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
using Content.Client.PDA; // DeltaV
|
||||
using Content.Shared._CD.Silicons.Borgs; // CosmicDrift
|
||||
using Content.Client.PDA; // DeltaV
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Silicons.Borgs;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.ResourceManagement; // CosmicDrift
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations; // CosmicDrift
|
||||
using Robust.Shared.Timing; // CosmicDrift
|
||||
using Robust.Shared.Serialization; // DeltaV
|
||||
|
||||
namespace Content.Client.Silicons.Borgs;
|
||||
|
||||
|
|
@ -20,7 +17,6 @@ public sealed partial class BorgSwitchableTypeSystem : SharedBorgSwitchableTypeS
|
|||
[Dependency] private readonly BorgSystem _borgSystem = default!;
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SpriteSystem _sprite = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!; // CosmicDrift - borg subtypes
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -44,20 +40,15 @@ public sealed partial class BorgSwitchableTypeSystem : SharedBorgSwitchableTypeS
|
|||
Entity<BorgSwitchableTypeComponent> entity,
|
||||
BorgTypePrototype prototype)
|
||||
{
|
||||
// Begin Afterlight Addition - added checks to stop sprite state errors
|
||||
if (!_timing.IsFirstTimePredicted)
|
||||
return;
|
||||
|
||||
if (TryComp<BorgSwitchableSubtypeComponent>(entity, out var subtype) &&
|
||||
subtype.BorgSubtype != null)
|
||||
{
|
||||
var ev = new TypeTryingToUpdateVisualsEvent();
|
||||
RaiseLocalEvent(entity, ref ev);
|
||||
return;
|
||||
}
|
||||
// End Afterlight Additions - added checks to stop sprite state errors
|
||||
// Begin DeltaV Additions
|
||||
if (prototype.ClientComponents is {} add)
|
||||
EntityManager.AddComponents(entity, add);
|
||||
// End DeltaV Additions
|
||||
if (TryComp(entity, out SpriteComponent? sprite))
|
||||
{
|
||||
// Begin DeltaV Additions - work around engine bug with AddComponents
|
||||
((ISerializationHooks) sprite).AfterDeserialization();
|
||||
// End DeltaV Additions
|
||||
_sprite.LayerSetRsiState((entity, sprite), BorgVisualLayers.Body, prototype.SpriteBodyState);
|
||||
_sprite.LayerSetRsiState((entity, sprite), BorgVisualLayers.LightStatus, prototype.SpriteToggleLightState);
|
||||
}
|
||||
|
|
@ -85,26 +76,6 @@ public sealed partial class BorgSwitchableTypeSystem : SharedBorgSwitchableTypeS
|
|||
}
|
||||
// DeltaV - borg pdas
|
||||
|
||||
// Start CosmicDrift Changes - borg subtypes
|
||||
if (prototype.SpriteBodyMovementState is { } movementState)
|
||||
{
|
||||
var spriteMovement = EnsureComp<SpriteMovementComponent>(entity);
|
||||
spriteMovement.NoMovementLayers.Clear();
|
||||
spriteMovement.NoMovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = prototype.SpriteBodyState,
|
||||
};
|
||||
spriteMovement.MovementLayers.Clear();
|
||||
spriteMovement.MovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = movementState,
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
RemComp<SpriteMovementComponent>(entity);
|
||||
}
|
||||
// End CosmicDrift Changes - borg subtypes
|
||||
base.UpdateEntityAppearance(entity, prototype);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,102 +0,0 @@
|
|||
using System.Linq;
|
||||
using Content.Client.Silicons.Borgs;
|
||||
using Content.Shared._CD.Silicons.Borgs;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CD.Silicons.Borgs;
|
||||
|
||||
/// <summary>
|
||||
/// Primarily handles the appearance aspects of the borg subtype.
|
||||
/// </summary>
|
||||
public sealed class BorgSwitchableSubtypeSystem : SharedBorgSwitchableSubtypeSystem
|
||||
{
|
||||
[Dependency] private readonly SpriteSystem _sprite = default!;
|
||||
[Dependency] private readonly BorgSystem _borg = default!;
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<BorgSwitchableSubtypeComponent, ComponentStartup>(OnComponentStartup);
|
||||
SubscribeLocalEvent<BorgSwitchableSubtypeComponent, AfterAutoHandleStateEvent>(OnAutoHandleEvent);
|
||||
}
|
||||
|
||||
private void OnAutoHandleEvent(Entity<BorgSwitchableSubtypeComponent> ent, ref AfterAutoHandleStateEvent args)
|
||||
{
|
||||
SelectBorgSubtype(ent);
|
||||
}
|
||||
|
||||
private void OnComponentStartup(Entity<BorgSwitchableSubtypeComponent> ent, ref ComponentStartup args)
|
||||
{
|
||||
SelectBorgSubtype(ent);
|
||||
}
|
||||
|
||||
protected override void UpdateEntityAppearance(Entity<BorgSwitchableSubtypeComponent> entity, EntityPrototype borgSubtypePrototype)
|
||||
{
|
||||
// LOT of copy pasted code from BorgSwitchableTypeSystem, but is probably necessary unless the upstream code
|
||||
// is refactored
|
||||
|
||||
if (!borgSubtypePrototype.TryGetComponent<BorgSubtypeDefinitionComponent>(out var borgSubtype, ComponentFactory))
|
||||
return;
|
||||
|
||||
// get our required components
|
||||
var (owner, _) = entity;
|
||||
if (!TryComp<SpriteComponent>(entity, out var chassisSprite))
|
||||
return;
|
||||
|
||||
// remove all existing layers
|
||||
for (int i = chassisSprite.AllLayers.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
_sprite.RemoveLayer((entity, chassisSprite), i);
|
||||
}
|
||||
|
||||
for (int i = 0; i < borgSubtype.LayerData.Length; i++)
|
||||
{
|
||||
var layerData = borgSubtype.LayerData[i];
|
||||
|
||||
layerData.RsiPath = borgSubtype.SpritePath?.ToString();
|
||||
if (borgSubtype.Offset != null)
|
||||
layerData.Offset = borgSubtype.Offset;
|
||||
_sprite.AddLayer((owner, chassisSprite), layerData, i);
|
||||
}
|
||||
|
||||
if (TryComp<BorgChassisComponent>(entity, out var chassis))
|
||||
{
|
||||
_borg.SetMindStates(
|
||||
(entity.Owner, chassis),
|
||||
borgSubtype.SpriteHasMindState,
|
||||
borgSubtype.SpriteNoMindState);
|
||||
|
||||
if (TryComp(entity, out AppearanceComponent? appearance))
|
||||
{
|
||||
// Queue update so state changes apply.
|
||||
_appearance.QueueUpdate(entity, appearance);
|
||||
}
|
||||
}
|
||||
|
||||
if (borgSubtype.SpriteBodyMovementState is { } movementState)
|
||||
{
|
||||
var spriteMovement = EnsureComp<SpriteMovementComponent>(entity);
|
||||
spriteMovement.NoMovementLayers.Clear();
|
||||
spriteMovement.NoMovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = borgSubtype.SpriteBodyState,
|
||||
};
|
||||
spriteMovement.MovementLayers.Clear();
|
||||
spriteMovement.MovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = movementState,
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
RemComp<SpriteMovementComponent>(entity);
|
||||
}
|
||||
|
||||
base.UpdateEntityAppearance(entity, borgSubtypePrototype);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<Control xmlns="https://spacestation14.io"
|
||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls">
|
||||
<BoxContainer Name="MainContainer"
|
||||
Orientation="Vertical"
|
||||
SeparationOverride="4"
|
||||
Visible="False">
|
||||
<controls:StripeBack>
|
||||
<Label Text="{Loc 'cd-borg-select-subtype-flavour-text'}"
|
||||
StyleClasses="LabelSubText"
|
||||
HorizontalAlignment="Center"
|
||||
Margin="0 12"/>
|
||||
</controls:StripeBack>
|
||||
<ScrollContainer Name="OptionsScrollContainer"
|
||||
HScrollEnabled="True"
|
||||
VScrollEnabled="False"
|
||||
MinHeight="96">
|
||||
<BoxContainer Name="OptionsContainer"
|
||||
Orientation="Horizontal"
|
||||
SeparationOverride="4"/>
|
||||
</ScrollContainer>
|
||||
|
||||
</BoxContainer>
|
||||
</Control>
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
using Content.Shared.Silicons.Borgs;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._CD.Silicons.Borgs.UI;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class ChassisSpriteSelection : Control
|
||||
{
|
||||
[Dependency] private readonly IComponentFactory _componentFactory = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public EntityPrototype? SubtypePrototype;
|
||||
public event Action? SubtypeSelected;
|
||||
|
||||
private const int PrototypeViewSize = 2;
|
||||
private static readonly ProtoId<EntityCategoryPrototype> _borgSubtypeCategory = "BorgSubtype";
|
||||
|
||||
public ChassisSpriteSelection()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
}
|
||||
|
||||
public void Update(BorgTypePrototype borgTypePrototype)
|
||||
{
|
||||
MainContainer.Visible = true;
|
||||
|
||||
OptionsContainer.RemoveAllChildren();
|
||||
|
||||
var buttonGroup = new ButtonGroup();
|
||||
List<Button> buttons = new List<Button>();
|
||||
buttons.Add(CreateDefaultSubtypeButton(borgTypePrototype, buttonGroup));
|
||||
|
||||
foreach (var ent in _prototype.Categories.GetValueRefOrNullRef(_borgSubtypeCategory))
|
||||
{
|
||||
if (!ent.TryGetComponent<Shared._CD.Silicons.Borgs.BorgSubtypeDefinitionComponent>(out var subtype, _componentFactory))
|
||||
continue;
|
||||
|
||||
// Only add subtypes of the current selected 'main' borg type (engineering, medical, etc.)
|
||||
if (subtype.ParentType != borgTypePrototype.ID)
|
||||
continue;
|
||||
|
||||
var button = new Button
|
||||
{
|
||||
ToolTip = Loc.GetString($"al-borg-{borgTypePrototype.ID}-subtype-{ent.Name.Replace(' ', '-').ToLower()}-name"),
|
||||
Group = buttonGroup,
|
||||
MinHeight = 32,
|
||||
};
|
||||
|
||||
button.OnPressed += _ =>
|
||||
{
|
||||
SubtypePrototype = ent;
|
||||
SubtypeSelected?.Invoke();
|
||||
};
|
||||
|
||||
button.AddChild(CreateEntityPrototypeView(subtype.DummyPrototype));
|
||||
buttons.Add(button);
|
||||
}
|
||||
|
||||
foreach (var button in buttons)
|
||||
{
|
||||
OptionsContainer.AddChild(button);
|
||||
}
|
||||
}
|
||||
|
||||
private Button CreateDefaultSubtypeButton(BorgTypePrototype borgTypePrototype, ButtonGroup group)
|
||||
{
|
||||
var button = new Button
|
||||
{
|
||||
ToolTip = "default",
|
||||
Group = group,
|
||||
MinHeight = 32,
|
||||
};
|
||||
|
||||
button.OnPressed += _ =>
|
||||
{
|
||||
SubtypePrototype = null;
|
||||
SubtypeSelected?.Invoke();
|
||||
};
|
||||
|
||||
button.AddChild(CreateEntityPrototypeView(borgTypePrototype.DummyPrototype));
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
private EntityPrototypeView CreateEntityPrototypeView(EntProtoId entProtoId)
|
||||
{
|
||||
var entPrototypeView = new EntityPrototypeView();
|
||||
|
||||
entPrototypeView.SetPrototype(entProtoId);
|
||||
entPrototypeView.Scale *= PrototypeViewSize;
|
||||
|
||||
return entPrototypeView;
|
||||
}
|
||||
}
|
||||
|
|
@ -23,6 +23,7 @@ using Content.Server.Body.Systems;
|
|||
// Begin DeltaV
|
||||
using Content.Server._DV.MedicalRecords;
|
||||
using Content.Shared._DV.MedicalRecords;
|
||||
using Content.Shared.Chemistry.Components;
|
||||
// End DeltaV
|
||||
|
||||
namespace Content.Server.Medical;
|
||||
|
|
@ -269,9 +270,11 @@ public sealed partial class HealthAnalyzerSystem : EntitySystem // DeltaV - Made
|
|||
var bleeding = false;
|
||||
var unrevivable = false;
|
||||
|
||||
Solution? bloodSolution = null; // DeltaV - Health Analyzer Plus
|
||||
|
||||
if (TryComp<BloodstreamComponent>(entity, out var bloodstream) &&
|
||||
_solutionContainerSystem.ResolveSolution(entity, bloodstream.BloodSolutionName,
|
||||
ref bloodstream.BloodSolution, out var bloodSolution))
|
||||
ref bloodstream.BloodSolution, out bloodSolution)) // DeltaV - Health Analyzer Plus
|
||||
{
|
||||
bloodAmount = _bloodstreamSystem.GetBloodLevel(entity);
|
||||
bleeding = bloodstream.BleedAmount > 0;
|
||||
|
|
@ -287,6 +290,7 @@ public sealed partial class HealthAnalyzerSystem : EntitySystem // DeltaV - Made
|
|||
null,
|
||||
bleeding,
|
||||
unrevivable,
|
||||
bloodSolution, // DeltaV - Health Analyzer Plus
|
||||
_medicalRecords.GetMedicalRecords(entity) // DeltaV - Medical Records
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,12 +125,12 @@ public sealed class ProjectileSystem : SharedProjectileSystem
|
|||
RaiseLocalEvent(projectile, ref pierceEv);
|
||||
|
||||
// If the object won't be destroyed, it "tanks" the penetration hit.
|
||||
if (damage.GetTotal() < damageRequired)
|
||||
if (damage.GetTotal() < damageRequired && !pierceEv.Pierced) // DeltaV - Addition of the NT-3
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!projectile.Comp.ProjectileSpent)
|
||||
if (!projectile.Comp.ProjectileSpent && !pierceEv.Pierced) // DeltaV - Addition of the NT-3
|
||||
{
|
||||
projectile.Comp.PenetrationAmount += damageRequired;
|
||||
// The projectile has dealt enough damage to be spent.
|
||||
|
|
@ -139,7 +139,7 @@ public sealed class ProjectileSystem : SharedProjectileSystem
|
|||
return false;
|
||||
}
|
||||
|
||||
if (projectile.Comp.ProjectileSpent && pierceEv.Pierced) // DeltaV - Addition of the NT-3
|
||||
if (projectile.Comp.ProjectileSpent)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
using Content.Shared._CD.Silicons.Borgs;
|
||||
using Content.Shared.Inventory;
|
||||
|
||||
namespace Content.Server._CD.Silicons.Borgs;
|
||||
|
||||
/// <summary>
|
||||
/// Server-side logic that shouldn't be exposed to the client.
|
||||
/// </summary>
|
||||
public sealed class BorgSwitchableSubstypeSystem : SharedBorgSwitchableSubtypeSystem
|
||||
{
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
|
||||
protected override void SelectBorgSubtype(Entity<BorgSwitchableSubtypeComponent> ent)
|
||||
{
|
||||
if (ent.Comp.BorgSubtype == null)
|
||||
return;
|
||||
|
||||
if (!Prototypes.Index(ent.Comp.BorgSubtype.Value)
|
||||
.TryGetComponent<BorgSubtypeDefinitionComponent>(out var borgSubtype, ComponentFactory))
|
||||
return;
|
||||
|
||||
// Configure special components
|
||||
if (Prototypes.TryIndex(ent.Comp.BorgSubtype, out var previousPrototype) &&
|
||||
previousPrototype.TryGetComponent<BorgSubtypeDefinitionComponent>(out var previousSubtype, ComponentFactory))
|
||||
{
|
||||
if (previousSubtype.AddComponents is { } removeComponents)
|
||||
EntityManager.RemoveComponents(ent, removeComponents);
|
||||
}
|
||||
|
||||
if (borgSubtype.AddComponents is { } addComponents)
|
||||
{
|
||||
EntityManager.AddComponents(ent, addComponents);
|
||||
}
|
||||
|
||||
// inventory template configuration (hats spacing)
|
||||
if (TryComp(ent, out InventoryComponent? inventory))
|
||||
{
|
||||
_inventorySystem.SetTemplateId((ent.Owner, inventory), borgSubtype.InventoryTemplateId);
|
||||
}
|
||||
|
||||
base.SelectBorgSubtype(ent);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Shared.Tag;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._DV.Projectiles.Components;
|
||||
|
|
@ -21,10 +22,14 @@ public sealed partial class PiercingProjectileComponent : Component
|
|||
public float PierceCounter;
|
||||
|
||||
/// <summary>
|
||||
/// The tag that will cause the piercing bullet to increment it's <see cref="PierceCounter"/>.
|
||||
/// The whitelist for checking what increments the <see cref="PierceCounter"/>.
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// If this has the tag "Wall" in it, any entity with the tag "Wall" will increment <see cref="PierceCounter"/>
|
||||
/// upon being hit.
|
||||
/// </example>
|
||||
[DataField]
|
||||
public List<ProtoId<TagPrototype>> PierceBlockTag = ["Wall", "Window"];
|
||||
public EntityWhitelist PierceCounterWhitelist;
|
||||
|
||||
/// <summary>
|
||||
/// The number of entities it is allowed to pierce before being deleted.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ using Content.Shared.FixedPoint;
|
|||
namespace Content.Server._DV.Projectiles.Events;
|
||||
|
||||
/// <summary>
|
||||
/// Raised when a piercing projectile hits an entity that doesn't follow upstream piercing rules.
|
||||
/// Raised when a piercing projectile that doesn't follow upstream piercing rules hits an entity.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public record struct ProjectilePierceEvent(EntityUid Target, FixedPoint2 RequiredDamage, bool Pierced = false);
|
||||
|
|
|
|||
|
|
@ -1,29 +1,33 @@
|
|||
using Content.Server._DV.Projectiles.Components;
|
||||
using Content.Server._DV.Projectiles.Events;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Whitelist;
|
||||
|
||||
namespace Content.Server._DV.Projectiles.Systems;
|
||||
|
||||
public sealed class PiercingProjectileSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly TagSystem _tagSystem = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
|
||||
|
||||
// Mobs return a required Damage amount of Float.MaxValue. Therefore, we need to check for absurdly high values.
|
||||
private readonly int _indestructibleNumber = 20000000;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PiercingProjectileComponent, ProjectilePierceEvent>(OnPierce);
|
||||
}
|
||||
|
||||
private void OnPierce(Entity<PiercingProjectileComponent> bullet, ref ProjectilePierceEvent args)
|
||||
{
|
||||
// If the target doesn't have any tags to stop the bullet from piercing, it's automatically true.
|
||||
if (!_tagSystem.HasAnyTag(args.Target, bullet.Comp.PierceBlockTag))
|
||||
if (_whitelist.IsWhitelistFail(bullet.Comp.PierceCounterWhitelist, args.Target))
|
||||
{
|
||||
args.Pierced = true;
|
||||
return;
|
||||
}
|
||||
// If it does have the tag to stop it and enough health to count as "strongly armored", it'll block the bullet.
|
||||
if (bullet.Comp.HealthThreshold < args.RequiredDamage)
|
||||
if (bullet.Comp.HealthThreshold < args.RequiredDamage && args.RequiredDamage < _indestructibleNumber)
|
||||
return;
|
||||
|
||||
if (bullet.Comp.Direction == null) // Get the direction of the bullet to determine which walls count.
|
||||
|
|
|
|||
|
|
@ -392,7 +392,6 @@ public abstract partial class SharedBuckleSystem
|
|||
if (TryComp<PhysicsComponent>(buckle, out var physics))
|
||||
_physics.ResetDynamics(buckle, physics);
|
||||
|
||||
// TOOD: DV - This fails when you try to buckle the entity you're carrying to something. Figure out why later.
|
||||
DebugTools.AssertEqual(xform.ParentUid, strap.Owner);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,7 @@ using Content.Shared.Armor; // DeltaV - Addition of HandHeldArmor
|
|||
using Content.Shared.Atmos;
|
||||
using Content.Shared.Camera;
|
||||
using Content.Shared.Cuffs;
|
||||
using Content.Shared.Damage; // DeltaV End - Addition of HandHeldArmor
|
||||
using Content.Shared.Damage.Systems; // DeltaV End - Addition of HandHeldArmor
|
||||
using Content.Shared.Damage.Systems; // DeltaV - Addition of HandHeldArmor
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Content.Shared.Projectiles;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using Content.Shared._DV.Overlays;
|
||||
using Content.Shared._DV.Overlays; // DeltaV
|
||||
using Content.Shared._DV.Psionics.Events; // DeltaV
|
||||
using Content.Shared.Armor;
|
||||
using Content.Shared.Atmos;
|
||||
|
|
@ -85,13 +85,15 @@ public partial class InventorySystem
|
|||
SubscribeLocalEvent<InventoryComponent, WieldAttemptEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, UnwieldAttemptEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, IngestionAttemptEvent>(RefRelayInventoryEvent);
|
||||
// DeltaV Start - Psionic Events
|
||||
// DeltaV Start
|
||||
// Psionic Events
|
||||
SubscribeLocalEvent<InventoryComponent, DispelledEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, PsionicPowerUseAttemptEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, TargetedByPsionicPowerEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, NoosphericFryEvent>(RefRelayInventoryEvent);
|
||||
SubscribeLocalEvent<InventoryComponent, WeightlessnessChangedEvent>(RefRelayInventoryEvent); // Heavy Clothing
|
||||
// DeltaV End - Psionic Events
|
||||
// Heavy Clothing
|
||||
SubscribeLocalEvent<InventoryComponent, WeightlessnessChangedEvent>(RefRelayInventoryEvent);
|
||||
// DeltaV End
|
||||
|
||||
// Eye/vision events
|
||||
SubscribeLocalEvent<InventoryComponent, CanSeeAttemptEvent>(RelayInventoryEvent);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Shared._DV.MedicalRecords; // DeltaV - Medical Records
|
||||
using Content.Shared.Chemistry.Components; // DeltaV - Health Analyzer Plus
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.MedicalScanner;
|
||||
|
|
@ -29,11 +30,12 @@ public struct HealthAnalyzerUiState
|
|||
public bool? ScanMode;
|
||||
public bool? Bleeding;
|
||||
public bool? Unrevivable;
|
||||
public readonly Solution? BloodSolution; // DeltaV - Health Analyzer Plus
|
||||
public MedicalRecord? MedicalRecord; // DeltaV - Medical Records
|
||||
|
||||
public HealthAnalyzerUiState() {}
|
||||
|
||||
public HealthAnalyzerUiState(NetEntity? targetEntity, float temperature, float bloodLevel, bool? scanMode, bool? bleeding, bool? unrevivable, MedicalRecord? medicalRecord = null) // DeltaV - Medical Records
|
||||
public HealthAnalyzerUiState(NetEntity? targetEntity, float temperature, float bloodLevel, bool? scanMode, bool? bleeding, bool? unrevivable, Solution? bloodSolution, MedicalRecord? medicalRecord = null) // DeltaV - Health Analyzer Plus, Medical Records
|
||||
{
|
||||
TargetEntity = targetEntity;
|
||||
Temperature = temperature;
|
||||
|
|
@ -41,6 +43,7 @@ public struct HealthAnalyzerUiState
|
|||
ScanMode = scanMode;
|
||||
Bleeding = bleeding;
|
||||
Unrevivable = unrevivable;
|
||||
BloodSolution = bloodSolution; // DeltaV - Health Analyzer Plus
|
||||
MedicalRecord = medicalRecord; // DeltaV - Medical Records
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Shared.Access.Components;
|
||||
using Content.Shared.Access.Systems; // DeltaV
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Doors.Components;
|
||||
|
|
@ -19,6 +20,7 @@ namespace Content.Shared.Remotes.EntitySystems;
|
|||
public abstract class SharedDoorRemoteSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAirlockSystem _airlock = default!;
|
||||
[Dependency] private readonly AccessReaderSystem _accessReader = default!; // DeltaV
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedDoorSystem _doorSystem = default!;
|
||||
[Dependency] private readonly SharedElectrocutionSystem _electrify = default!;
|
||||
|
|
@ -96,6 +98,19 @@ public abstract class SharedDoorRemoteSystem : EntitySystem
|
|||
else if (entity.Comp.RequireTagWhitelist)
|
||||
return;
|
||||
|
||||
// Begin DeltaV - Emergency access only bypasses open/close; bolting and toggling emergency access still require actual access.
|
||||
if (entity.Comp.Mode != OperatingMode.OpenClose
|
||||
&& accessComponent != null
|
||||
&& !_accessReader.IsAllowed(accessTarget, args.Target.Value, accessComponent))
|
||||
{
|
||||
if (isAirlock)
|
||||
_doorSystem.Deny(args.Target.Value, doorComp, user: args.User, predicted: true);
|
||||
|
||||
_popup.PopupClient(Loc.GetString("door-remote-denied"), args.User, args.User);
|
||||
return;
|
||||
}
|
||||
// End DeltaV
|
||||
|
||||
switch (entity.Comp.Mode)
|
||||
{
|
||||
case OperatingMode.OpenClose:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
using Content.Shared._CD.Silicons.Borgs; // CosmicDrift - borg subtypes
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Interaction.Components;
|
||||
|
|
@ -97,10 +96,6 @@ public abstract partial class SharedBorgSwitchableTypeSystem : EntitySystem // D
|
|||
_userInterface.CloseUi((ent.Owner, null), BorgSwitchableTypeUiKey.SelectBorgType);
|
||||
|
||||
UpdateEntityAppearance(ent);
|
||||
|
||||
// AL - event for subtype system, always runs at end of borg type code
|
||||
var ev = new AfterBorgTypeSelectEvent();
|
||||
RaiseLocalEvent(ent, ref ev);
|
||||
}
|
||||
|
||||
protected void UpdateEntityAppearance(Entity<BorgSwitchableTypeComponent> entity)
|
||||
|
|
@ -125,25 +120,24 @@ public abstract partial class SharedBorgSwitchableTypeSystem : EntitySystem // D
|
|||
{
|
||||
footstepModifier.FootstepSoundCollection = prototype.FootstepCollection;
|
||||
}
|
||||
// Start CosmicDrift Changes - Moved to BorgSwitchableTypeSystem.cs
|
||||
// if (prototype.SpriteBodyMovementState is { } movementState)
|
||||
// {
|
||||
// var spriteMovement = EnsureComp<SpriteMovementComponent>(entity);
|
||||
// spriteMovement.NoMovementLayers.Clear();
|
||||
// spriteMovement.NoMovementLayers["movement"] = new PrototypeLayerData
|
||||
// {
|
||||
// State = prototype.SpriteBodyState,
|
||||
// };
|
||||
// spriteMovement.MovementLayers.Clear();
|
||||
// spriteMovement.MovementLayers["movement"] = new PrototypeLayerData
|
||||
// {
|
||||
// State = movementState,
|
||||
// };
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// RemComp<SpriteMovementComponent>(entity);
|
||||
// }
|
||||
// End CosmicDrift Changes - Moved to BorgSwitchableTypeSystem.cs
|
||||
|
||||
if (prototype.SpriteBodyMovementState is { } movementState)
|
||||
{
|
||||
var spriteMovement = EnsureComp<SpriteMovementComponent>(entity);
|
||||
spriteMovement.NoMovementLayers.Clear();
|
||||
spriteMovement.NoMovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = prototype.SpriteBodyState,
|
||||
};
|
||||
spriteMovement.MovementLayers.Clear();
|
||||
spriteMovement.MovementLayers["movement"] = new PrototypeLayerData
|
||||
{
|
||||
State = movementState,
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
RemComp<SpriteMovementComponent>(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using Content.Shared.Examine;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
using Content.Shared.Stealth.Components;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Timing;
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
using Content.Shared.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CD.Prototypes;
|
||||
|
||||
public sealed class ALPrototypeSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IComponentFactory _compFactory = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public IEnumerable<(EntityPrototype Prototype, T Component)> EnumerateComponents<T>() where T : IComponent, new()
|
||||
{
|
||||
foreach (var entity in _prototype.EnumeratePrototypes<EntityPrototype>())
|
||||
{
|
||||
if (entity.TryGetComponent(out T? comp, _compFactory))
|
||||
yield return (entity, comp);
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<EntityPrototype> EnumerateEntities<T>() where T : IComponent, new()
|
||||
{
|
||||
foreach (var entity in _prototype.EnumeratePrototypes<EntityPrototype>())
|
||||
{
|
||||
if (entity.HasComponent<T>(_compFactory))
|
||||
yield return entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
using System.Numerics;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Silicons.Borgs;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CD.Silicons.Borgs;
|
||||
|
||||
/// <summary>
|
||||
/// Information relating to a borg's subtype. Should be mostly cosmetic.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
[EntityCategory("BorgSubtype")]
|
||||
public sealed partial class BorgSubtypeDefinitionComponent : Component
|
||||
{
|
||||
private static ProtoId<SoundCollectionPrototype> DefaultFootsteps = new("FootstepBorg"); // DeltaV - Removed Readonly
|
||||
|
||||
/// <summary>
|
||||
/// <inheritdoc cref="BorgTypePrototype.InventoryTemplateId"/>
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField] public ProtoId<InventoryTemplatePrototype> InventoryTemplateId = "borgShort";
|
||||
|
||||
/// <summary>
|
||||
/// The parent borg type of this subtype.
|
||||
/// </summary>
|
||||
[DataField(required: true), AutoNetworkedField]
|
||||
public string ParentType;
|
||||
|
||||
/// <summary>
|
||||
/// <inheritdoc cref="BorgTypePrototype.AddComponents"/>
|
||||
/// </summary>
|
||||
[DataField] public ComponentRegistry? AddComponents;
|
||||
|
||||
/// <summary>
|
||||
/// Sprite path that the prototype's layer data will reference.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField] public ResPath? SpritePath;
|
||||
|
||||
/// <summary>
|
||||
/// The visual layer data for the subtype.
|
||||
/// At the minimum should have definitions for each value of <see cref="BorgVisualLayers"/>.
|
||||
/// </summary>
|
||||
[DataField(required: true), AutoNetworkedField]
|
||||
public PrototypeLayerData[] LayerData;
|
||||
|
||||
|
||||
[DataField(required: true), AutoNetworkedField]
|
||||
public string SpriteHasMindState;
|
||||
|
||||
[DataField(required: true), AutoNetworkedField]
|
||||
public string SpriteNoMindState;
|
||||
|
||||
[DataField, AutoNetworkedField] public string? SpriteBodyState;
|
||||
|
||||
[DataField, AutoNetworkedField] public Vector2? Offset;
|
||||
|
||||
[DataField(required: true), AutoNetworkedField]
|
||||
public EntProtoId DummyPrototype;
|
||||
|
||||
[DataField, AutoNetworkedField] public string PetSuccessString = "petting-success-generic-cyborg";
|
||||
[DataField, AutoNetworkedField] public string PetFailureString = "petting-failure-generic-cyborg";
|
||||
|
||||
/// <summary>
|
||||
/// Sound specifier for footstep sounds created by this subtype.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public SoundSpecifier FootstepCollection { get; set; } = new SoundCollectionSpecifier(DefaultFootsteps);
|
||||
|
||||
/// <summary>
|
||||
/// <inheritdoc cref="BorgTypePrototype.SpriteBodyMovementState"/>
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public string? SpriteBodyMovementState { get; set; }
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CD.Silicons.Borgs;
|
||||
|
||||
/// <summary>
|
||||
/// Component given to borgs that should be able to select subtypes inside of the borg type selection menu.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[AutoGenerateComponentState(true)]
|
||||
public sealed partial class BorgSwitchableSubtypeComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The <see cref="BorgSubtypeDefinitionComponent"/> of this chassis.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public ProtoId<EntityPrototype>? BorgSubtype;
|
||||
}
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Interaction.Components;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Silicons.Borgs;
|
||||
using Content.Shared.Silicons.Borgs.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CD.Silicons.Borgs;
|
||||
|
||||
/// <summary>
|
||||
/// Shared behaviour for borg switchable subtype logic.
|
||||
/// Essentially a reimplementation of <see cref="SharedBorgSwitchableTypeSystem"/> specifically for cosmetic functions.
|
||||
/// </summary>
|
||||
public abstract class SharedBorgSwitchableSubtypeSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly InteractionPopupSystem _interactionPopup = default!;
|
||||
[Dependency] protected readonly IPrototypeManager Prototypes = default!;
|
||||
[Dependency] protected readonly IComponentFactory ComponentFactory = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<BorgSwitchableSubtypeComponent, MapInitEvent>(OnMapInit); // make sure that our subtype is selected first
|
||||
SubscribeLocalEvent<BorgSwitchableSubtypeComponent, AfterBorgTypeSelectEvent>(OnBorgTypeSelect);
|
||||
SubscribeLocalEvent<BorgSwitchableSubtypeComponent, TypeTryingToUpdateVisualsEvent>(OnBorgTypeUpdatingVisuals);
|
||||
|
||||
Subs.BuiEvents<BorgSwitchableTypeComponent>(BorgSwitchableTypeUiKey.SelectBorgType,
|
||||
sub =>
|
||||
{
|
||||
sub.Event<BorgSelectSubtypeMessage>(SelectSubtypeMessageHandler);
|
||||
});
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
private void OnBorgTypeUpdatingVisuals(Entity<BorgSwitchableSubtypeComponent> ent, ref TypeTryingToUpdateVisualsEvent args)
|
||||
{
|
||||
if (!ent.Comp.BorgSubtype.HasValue)
|
||||
return;
|
||||
|
||||
Dirty(ent);
|
||||
SelectBorgSubtype(ent);
|
||||
}
|
||||
|
||||
private void OnMapInit(Entity<BorgSwitchableSubtypeComponent> ent, ref MapInitEvent args)
|
||||
{
|
||||
if (ent.Comp.BorgSubtype != null)
|
||||
{
|
||||
SelectBorgSubtype(ent);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBorgTypeSelect(Entity<BorgSwitchableSubtypeComponent> ent, ref AfterBorgTypeSelectEvent args)
|
||||
{
|
||||
if (!ent.Comp.BorgSubtype.HasValue)
|
||||
return;
|
||||
|
||||
UpdateEntityAppearance(ent);
|
||||
Dirty(ent);
|
||||
}
|
||||
|
||||
protected virtual void SelectBorgSubtype(Entity<BorgSwitchableSubtypeComponent> ent)
|
||||
{
|
||||
UpdateEntityAppearance(ent);
|
||||
}
|
||||
|
||||
private void UpdateEntityAppearance(Entity<BorgSwitchableSubtypeComponent> entity)
|
||||
{
|
||||
if (!Prototypes.TryIndex(entity.Comp.BorgSubtype, out var subtypePrototype))
|
||||
return;
|
||||
|
||||
UpdateEntityAppearance(entity, subtypePrototype);
|
||||
}
|
||||
|
||||
protected virtual void UpdateEntityAppearance(Entity<BorgSwitchableSubtypeComponent> entity,
|
||||
EntityPrototype borgSubtypePrototype)
|
||||
{
|
||||
if (!borgSubtypePrototype.TryGetComponent<BorgSubtypeDefinitionComponent>(out var borgSubtype, ComponentFactory))
|
||||
return;
|
||||
|
||||
if (TryComp(entity, out InteractionPopupComponent? popup))
|
||||
{
|
||||
_interactionPopup.SetInteractSuccessString((entity.Owner, popup), borgSubtype.PetSuccessString);
|
||||
_interactionPopup.SetInteractFailureString((entity.Owner, popup), borgSubtype.PetFailureString);
|
||||
}
|
||||
|
||||
if (TryComp(entity, out FootstepModifierComponent? footstepModifier))
|
||||
{
|
||||
footstepModifier.FootstepSoundCollection = borgSubtype.FootstepCollection;
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectSubtypeMessageHandler(EntityUid uid, BorgSwitchableTypeComponent borgSwitchableTypeComponent, BorgSelectSubtypeMessage args)
|
||||
{
|
||||
if (!TryComp<BorgSwitchableSubtypeComponent>(uid, out var subtypeComp))
|
||||
return;
|
||||
|
||||
subtypeComp.BorgSubtype = args.Subtype;
|
||||
Dirty(uid, subtypeComp);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CD.Silicons.Borgs;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class BorgSelectSubtypeMessage(ProtoId<EntityPrototype>? subtype) : BoundUserInterfaceMessage
|
||||
{
|
||||
public ProtoId<EntityPrototype>? Subtype = subtype;
|
||||
}
|
||||
|
||||
[ByRefEvent]
|
||||
public record struct AfterBorgTypeSelectEvent;
|
||||
|
||||
[ByRefEvent]
|
||||
public record struct TypeTryingToUpdateVisualsEvent;
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
using Content.Shared._DV.Body.Components;
|
||||
using Content.Shared._DV.Body.Events;
|
||||
using Content.Shared.Buckle;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
|
|
@ -13,6 +14,7 @@ public sealed class CPRSystem : EntitySystem
|
|||
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly SharedBuckleSystem _buckle = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -85,7 +87,7 @@ public sealed class CPRSystem : EntitySystem
|
|||
{
|
||||
Act = () => StartCPR(user, target, cprComp.TimeLength),
|
||||
Text = Loc.GetString("cpr-verb-start"),
|
||||
Priority = 2,
|
||||
Priority = _buckle.IsBuckled(target) ? 3 : 1, // Higher priority if they are buckled. Otherwise, this conflicts with trying to carry.
|
||||
Disabled = alreadyAffected,
|
||||
Message = alreadyAffected ? Loc.GetString("cpr-verb-disabled-description") : Loc.GetString("cpr-verb-description"),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ using System.Numerics;
|
|||
using Content.Shared._DV.Polymorph;
|
||||
using Content.Shared._Floof.OfferItem;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Buckle;
|
||||
|
||||
namespace Content.Shared._DV.Carrying;
|
||||
|
||||
|
|
@ -70,7 +71,7 @@ public sealed class CarryingSystem : EntitySystem
|
|||
SubscribeLocalEvent<BeingCarriedComponent, GettingInteractedWithAttemptEvent>(OnInteractedWith);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, PullAttemptEvent>(OnPullAttempt);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, StartClimbEvent>(OnDrop);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, BuckledEvent>(OnDrop);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, BuckledEvent>(OnBuckle);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, UnbuckledEvent>(OnDrop);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, StrappedEvent>(OnDrop);
|
||||
SubscribeLocalEvent<BeingCarriedComponent, UnstrappedEvent>(OnDrop);
|
||||
|
|
@ -220,6 +221,13 @@ public sealed class CarryingSystem : EntitySystem
|
|||
DropCarried(ent.Comp.Carrier, ent);
|
||||
}
|
||||
|
||||
private void OnBuckle(Entity<BeingCarriedComponent> ent, ref BuckledEvent args)
|
||||
{
|
||||
// Buckling to a bed already handles the reparenting to the entity that the carried
|
||||
// entity is buckled to, and then relays the BuckledEvent, so don't reparent to the grid.
|
||||
DropCarried(ent.Comp.Carrier, ent, attachToGrid: false);
|
||||
}
|
||||
|
||||
private void OnRemoved(Entity<BeingCarriedComponent> ent, ref ComponentRemove args)
|
||||
{
|
||||
/*
|
||||
|
|
@ -327,9 +335,9 @@ public sealed class CarryingSystem : EntitySystem
|
|||
return true;
|
||||
}
|
||||
|
||||
public void DropCarried(EntityUid carrier, EntityUid carried)
|
||||
public void DropCarried(EntityUid carrier, EntityUid carried, bool attachToGrid = true)
|
||||
{
|
||||
Drop(carried);
|
||||
Drop(carried, attachToGrid);
|
||||
CleanupCarrier(carrier, carried);
|
||||
}
|
||||
|
||||
|
|
@ -341,12 +349,15 @@ public sealed class CarryingSystem : EntitySystem
|
|||
_movementSpeed.RefreshMovementSpeedModifiers(carrier);
|
||||
}
|
||||
|
||||
private void Drop(EntityUid carried)
|
||||
private void Drop(EntityUid carried, bool attachToGrid = true)
|
||||
{
|
||||
RemComp<BeingCarriedComponent>(carried);
|
||||
RemComp<KnockedDownComponent>(carried); // TODO SHITMED: make sure this doesnt let you make someone with no legs walk
|
||||
_actionBlocker.UpdateCanMove(carried);
|
||||
_transform.AttachToGridOrMap(carried);
|
||||
|
||||
// Some systems will handle re-parenting and then throw an event, and this changes the parent when it should not
|
||||
if (attachToGrid)
|
||||
_transform.AttachToGridOrMap(carried);
|
||||
_standingState.Stand(carried);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
- files: ["shadowkin_female_scream.ogg"]
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Edited and composited by MajorMoth. Re-encoded to Ogg Vorbis."
|
||||
source: "https://freesound.org/people/AlesiaDavina/sounds/722718/"
|
||||
|
||||
- files: ["shadowkin_male_scream.ogg"]
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Edited and composited by MajorMoth. Re-encoded to Ogg Vorbis."
|
||||
source: "https://freesound.org/people/AlesiaDavina/sounds/722718/"
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,14 @@
|
|||
- files: ["shadowkin_speak_say.ogg"]
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Edited and composited by MajorMoth. Re-encoded to Ogg Vorbis."
|
||||
source: "https://freesound.org/people/JKata/sounds/632414/"
|
||||
|
||||
- files: ["shadowkin_speak_ask.ogg"]
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Edited and composited by MajorMoth. Re-encoded to Ogg Vorbis."
|
||||
source: "https://freesound.org/people/templeofhades/sounds/95516/"
|
||||
|
||||
- files: ["shadowkin_speak_exclaim.ogg"]
|
||||
license: "CC-BY-SA-3.0"
|
||||
copyright: "Edited and composited by MajorMoth. Re-encoded to Ogg Vorbis."
|
||||
source: "https://freesound.org/people/taure/sounds/376392/"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -348,5 +348,13 @@ Entries:
|
|||
id: 38
|
||||
time: '2026-07-19T16:18:47.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6317
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: '`entities` and a lot of other basic QUERY commare are now a DEBUG-level
|
||||
commands.'
|
||||
type: Tweak
|
||||
id: 39
|
||||
time: '2026-07-24T17:27:48.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6351
|
||||
Name: DeltaVAdmin
|
||||
Order: 5
|
||||
|
|
|
|||
|
|
@ -1,114 +1,4 @@
|
|||
Entries:
|
||||
- author: snowywinters
|
||||
changes:
|
||||
- message: Captain's armored winter coat a alternative to the carapace
|
||||
type: Add
|
||||
- message: Changed the defense of captain's EVA suit and carapace
|
||||
type: Tweak
|
||||
id: 2092
|
||||
time: '2026-01-23T19:31:48.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5227
|
||||
- author: pootslap
|
||||
changes:
|
||||
- message: Listening Post Operatives only have the ability to hear binary comms
|
||||
now. They can no longer talk on binary.
|
||||
type: Tweak
|
||||
id: 2093
|
||||
time: '2026-01-23T19:35:58.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5243
|
||||
- author: MilonPL
|
||||
changes:
|
||||
- message: The traits points bar will now show up correctly.
|
||||
type: Fix
|
||||
id: 2094
|
||||
time: '2026-01-24T20:55:31.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5275
|
||||
- author: MilonPL
|
||||
changes:
|
||||
- message: The uncloneable trait no longer prevents your character from getting
|
||||
revived by defibrillators.
|
||||
type: Fix
|
||||
id: 2095
|
||||
time: '2026-01-24T21:29:58.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5273
|
||||
- author: Halo3moth
|
||||
changes:
|
||||
- message: The energy magnums "magnum" rounds no longer pierce windows
|
||||
type: Fix
|
||||
id: 2096
|
||||
time: '2026-01-25T13:48:54.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5270
|
||||
- author: Toby222
|
||||
changes:
|
||||
- message: Added buttons for build info and credits to the escape menu
|
||||
type: Tweak
|
||||
id: 2097
|
||||
time: '2026-01-25T14:42:09.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5260
|
||||
- author: MilonPL
|
||||
changes:
|
||||
- message: Added the "Marked as Protected" trait which makes you immune to becoming
|
||||
a target objective.
|
||||
type: Add
|
||||
id: 2098
|
||||
time: '2026-01-25T16:30:18.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5274
|
||||
- author: AeraAuling
|
||||
changes:
|
||||
- message: Shadow damage no longer removes all your blood immediately
|
||||
type: Tweak
|
||||
id: 2099
|
||||
time: '2026-01-25T16:31:20.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5268
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: You can now toggle your hardsuit helmet on over your hat or beret!
|
||||
type: Add
|
||||
id: 2100
|
||||
time: '2026-01-25T16:31:55.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5263
|
||||
- author: Pharaz4
|
||||
changes:
|
||||
- message: Bingus can no longer drink the **ENTIRE** keg.
|
||||
type: Fix
|
||||
- message: You can eat rice dishes with chopsticks now.
|
||||
type: Add
|
||||
- message: Fixed Smartfridge visuals always showing their wire panels open.
|
||||
type: Fix
|
||||
- message: Projectiles and Mr. Butlertion are now insulated against wizardry.
|
||||
type: Fix
|
||||
- message: Wording fix to initial infected's prompt. It now states that they can
|
||||
explicitly kill people.
|
||||
type: Fix
|
||||
id: 2101
|
||||
time: '2026-01-25T16:31:39.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5278
|
||||
- author: MantasDab360, whatston3, ShepardToTheStars
|
||||
changes:
|
||||
- message: Chemical Dispenser can now toggle between auto labeling!
|
||||
type: Add
|
||||
id: 2102
|
||||
time: '2026-01-25T16:46:12.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5261
|
||||
- author: keekee38
|
||||
changes:
|
||||
- message: a new compact submachine gun for security should be shipping in soon!
|
||||
type: Add
|
||||
- message: added machine pistol magazines to the security techfab's recipes.
|
||||
type: Tweak
|
||||
- message: added rubber SMG mags to the security techfab.
|
||||
type: Tweak
|
||||
id: 2103
|
||||
time: '2026-01-26T10:46:23.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5212
|
||||
- author: Halo3moth
|
||||
changes:
|
||||
- message: Security long coats have been resprited to be more in line with other
|
||||
security gear. (we ran out of red dye)
|
||||
type: Tweak
|
||||
id: 2104
|
||||
time: '2026-01-27T05:50:41.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5288
|
||||
- author: EmberAstra
|
||||
changes:
|
||||
- message: Plasteel can now be printed at the Engineering Techfab.
|
||||
|
|
@ -4359,4 +4249,124 @@
|
|||
id: 2592
|
||||
time: '2026-07-21T18:44:49.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6358
|
||||
- author: EmberAstra
|
||||
changes:
|
||||
- message: Cosmic Cult's Entropic Blades are now smaller (2x4 spaces)
|
||||
type: Tweak
|
||||
id: 2593
|
||||
time: '2026-07-23T03:17:02.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6371
|
||||
- author: turtlemutt
|
||||
changes:
|
||||
- message: Gave Lighthouse new doorbells and pagers. Have fun harassing departments!
|
||||
type: Tweak
|
||||
id: 2594
|
||||
time: '2026-07-23T16:29:30.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6088
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: Buckling someone while they are being carried should work as intended
|
||||
now.
|
||||
type: Fix
|
||||
- message: Picking someone up that is criticla will have priority over CPR unless
|
||||
they are buckled to something.
|
||||
type: Tweak
|
||||
id: 2595
|
||||
time: '2026-07-23T20:07:04.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6375
|
||||
- author: ManuDemoen
|
||||
changes:
|
||||
- message: Emergency access no longer allows anyone with a remote to bolt the door
|
||||
and checks if the remote has access to bolt.
|
||||
type: Fix
|
||||
id: 2596
|
||||
time: '2026-07-24T17:28:01.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6141
|
||||
- author: pootslap
|
||||
changes:
|
||||
- message: Monkeys now make sounds when using emotes!
|
||||
type: Add
|
||||
id: 2597
|
||||
time: '2026-07-24T17:28:47.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5928
|
||||
- author: keekee38
|
||||
changes:
|
||||
- message: The WT550 once again fires at 5.5 rounds a second and has 30-round magazines.
|
||||
type: Tweak
|
||||
id: 2598
|
||||
time: '2026-07-24T17:34:48.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6364
|
||||
- author: SirWarock
|
||||
changes:
|
||||
- message: The NT-3 cannot be parcel-wrapped anymore!
|
||||
type: Tweak
|
||||
- message: Adjusted the wielding sprites of the NT-3 to look less wrong.
|
||||
type: Fix
|
||||
- message: The NT-3 can pierce things again.
|
||||
type: Fix
|
||||
id: 2599
|
||||
time: '2026-07-24T17:39:18.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5653
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: The additional borg chassis from Cosmic Drift has been reverted due to
|
||||
implementation issues.
|
||||
type: Remove
|
||||
id: 2600
|
||||
time: '2026-07-27T13:48:14.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6385
|
||||
- author: JustAnOrange, Stxcking
|
||||
changes:
|
||||
- message: Added 6 departmental bomber jackets and 3 non-departmental ones, they're
|
||||
zippable! They can be found in your loadout option or in the clothing drobes!
|
||||
type: Add
|
||||
id: 2601
|
||||
time: '2026-07-27T16:43:20.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6220
|
||||
- author: CalliganSierre
|
||||
changes:
|
||||
- message: Ported TheDen Shadowkin scream, laugh, and talk sounds for Shadekin.
|
||||
(CC-BY-SA-3.0 MajorMoth)
|
||||
type: Add
|
||||
- message: Shadekin now use custom laughs and speech voice instead of Slime-person
|
||||
sounds for those lines.
|
||||
type: Tweak
|
||||
- message: Shadekin are assigned Felinid Growl, Hiss, and Purr emotes as is consistent
|
||||
with most other servers.
|
||||
type: Tweak
|
||||
id: 2602
|
||||
time: '2026-07-27T19:26:38.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6370
|
||||
- author: starabsurddark-png
|
||||
changes:
|
||||
- message: Increased the resistances of the Durathread Vest to 50% Blunt, Slash
|
||||
and 20% Heat
|
||||
type: Tweak
|
||||
- message: Reduced the resistances of the Plate Carrier to 10% Blunt
|
||||
type: Tweak
|
||||
id: 2603
|
||||
time: '2026-07-29T12:18:54.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6311
|
||||
- author: ShepardToTheStars, rebe83
|
||||
changes:
|
||||
- message: Felinid's sink claws ability delay has been reduced from 3s to 0.5s.
|
||||
type: Tweak
|
||||
- message: Felinids now get a unique icon on their alert bar when they protract
|
||||
their claws.
|
||||
type: Add
|
||||
id: 2604
|
||||
time: '2026-07-29T15:42:01.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6376
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: Remote Medical Tracking has been added to the Biochemical research tree
|
||||
as a T3 technology. It allows you to print crew monitors and crew monitoring
|
||||
server boards!
|
||||
type: Add
|
||||
- message: The crew monitoring crate from Logistics now requires medical access
|
||||
to unlock instead of epistemics.
|
||||
type: Tweak
|
||||
id: 2605
|
||||
time: '2026-07-30T17:30:47.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6272
|
||||
Order: 1
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +0,0 @@
|
|||
cd-borg-select-subtype-flavour-text = Available cosmetic subtypes
|
||||
|
||||
# medical
|
||||
al-borg-medical-subtype-qualified-doctor-name = qualified doctor
|
||||
|
|
@ -17,3 +17,6 @@ alerts-resurrecting-desc = You are currently dead, but will resurrect soon.
|
|||
|
||||
alert-heavy-clothing-name = You're [color=yellow]heavy[/color]
|
||||
alert-heavy-clothing-desc = Heavy gear is weighing you down, rendering you [color=yellow]immune[/color] to space wind and slippery surfaces!
|
||||
|
||||
alerts-sunk-claws-name = Claws Protracted
|
||||
alerts-sunk-claws-desc = You're digging your claws into the ground. You can't slip but it is hard to move.
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
# engineering
|
||||
al-borg-engineering-subtype-standard-engineering-cyborg-name = standard engineering
|
||||
al-borg-engineering-subtype-generic-engineering-cyborg-name = generic engineering
|
||||
al-borg-engineering-subtype-antique-engineering-cyborg-name = antique engineering
|
||||
|
||||
# generic
|
||||
al-borg-generic-subtype-generic-cyborg-name = generic
|
||||
|
||||
# janitor
|
||||
al-borg-janitor-subtype-standard-janitor-cyborg-name = standard janitor
|
||||
al-borg-janitor-subtype-generic-janitor-cyborg-name = generic janitor
|
||||
al-borg-janitor-subtype-mopbot-cyborg-name = mopbot
|
||||
al-borg-janitor-subtype-vest-janitor-cyborg-name = janitor vest
|
||||
|
||||
# medical
|
||||
al-borg-medical-subtype-generic-medical-cyborg-name = generic medical
|
||||
al-borg-medical-subtype-standard-medical-cyborg-name = standard medical
|
||||
al-borg-medical-subtype-doctor-medical-cyborg-name = doctor
|
||||
|
||||
# salvage
|
||||
al-borg-mining-subtype-standard-salvage-cyborg-name = standard salvage
|
||||
al-borg-mining-subtype-generic-salvage-cyborg-name = generic salvage
|
||||
|
||||
# security
|
||||
al-borg-security-subtype-standard-security-cyborg-name = standard security
|
||||
al-borg-security-subtype-generic-security-cyborg-name = generic security
|
||||
|
||||
# service
|
||||
al-borg-service-subtype-standard-service-cyborg-name = standard service
|
||||
al-borg-service-subtype-generic-service-cyborg-name = generic service
|
||||
al-borg-service-subtype-waitress-service-cyborg-name = waitress
|
||||
al-borg-service-subtype-brobot-service-cyborg-name = brobot
|
||||
al-borg-service-subtype-maximilium-service-cyborg-name = maximilium
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
health-analyzer-plus-window-entity-blood-level-quantity-text = {$percent}
|
||||
|
||||
health-analyzer-plus-window-entity-total-damage-text = Total Damage: {$amount}
|
||||
health-analyzer-plus-window-entity-total-reagents-text = Bloodstream: {$amount}u
|
||||
|
||||
health-analyzer-plus-window-reagent-text = [color={$reagentColor}]█[/color] {$reagentName}: {$amount}u
|
||||
health-analyzer-plus-window-unknown-reagents-text = Unknown Reagents: {$amount}u
|
||||
|
||||
health-analyzer-plus-window-no-damage-text = No damage detected
|
||||
health-analyzer-plus-window-no-reagents-text = No reagents detected
|
||||
|
|
@ -20,6 +20,7 @@ research-technology-service-borg-module = Advanced Service Borg Modules
|
|||
# Biochemical
|
||||
research-technology-basic-augmentation = Basic Augmentation
|
||||
research-technology-implanted-tools = Implanted Tools
|
||||
research-technology-medical-tracking = Remote Medical Tracking
|
||||
|
||||
# Arsenal
|
||||
research-technology-exotic-ammunition = Exotic Ammunition
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
ent-MagazinePistolSubMachineGunTopMounted =
|
||||
.desc = Unconventional 20-round top feeding magazine for the WT550 SMG. Intended to hold general-purpose kinetic ammunition.
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -27,6 +27,7 @@
|
|||
- category: Thirst
|
||||
- alertType: Magboots
|
||||
- alertType: Rooted
|
||||
- alertType: ClawsProtracted # DeltaV - Felinid Claws
|
||||
- alertType: Pacified
|
||||
- alertType: Stealthy
|
||||
- alertType: Offer # Floofstation - port from EE
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@
|
|||
icon:
|
||||
sprite: Structures/Machines/server.rsi
|
||||
state: server
|
||||
product: CrateCrewMonitoring
|
||||
product: CrateCrewMonitoringDV # DeltaV - Was CrateCrewMonitoring
|
||||
cost: 2000
|
||||
category: cargoproduct-category-name-epistemics # DeltaV - Science renamed to Epistemics
|
||||
category: cargoproduct-category-name-medical # DeltaV - Was science, now medical
|
||||
group: market
|
||||
|
||||
- type: cargoProduct
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
ClothingHeadsetCargo: 3
|
||||
ClothingOuterWinterCargo: 2
|
||||
ClothingOuterWinterMiner: 2
|
||||
ClothingOuterCoatBomberLogistic: 2 # DeltaV - Department Bombers
|
||||
ClothingNeckScarfStripedBrown: 3
|
||||
ClothingShoesBootsWinterCargo: 2
|
||||
ClothingShoesBootsSalvage: 3 # DeltaV - Cargo clothing expansion
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
ClothingHeadHatHardhatOrange: 3
|
||||
ClothingHeadsetEngineering: 3
|
||||
ClothingOuterWinterEngi: 2
|
||||
ClothingOuterCoatBomberEngineering: 2 # DeltaV - Department Bombers
|
||||
ClothingNeckScarfStripedOrange: 3
|
||||
ClothingShoesBootsWinterEngi: 2
|
||||
contrabandInventory:
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
ClothingHeadBandBotany: 3
|
||||
ClothingHeadsetService: 2
|
||||
ClothingOuterWinterHydro: 2
|
||||
ClothingOuterCoatBomberService: 2 # DeltaV - Department Bombers
|
||||
ClothingShoesBootsWinterHydro: 2 # DeltaV - Add departmental winter boots
|
||||
contrabandInventory:
|
||||
ToyFigurineBotanist: 1
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
ClothingBeltMedical: 4
|
||||
ClothingHeadHatBeretMedic: 4
|
||||
ClothingHeadNurseHat: 4
|
||||
# Begin Delta-V additions
|
||||
# Begin DeltaV additions
|
||||
ClothingHeadHatBeretMedical: 4
|
||||
ClothingHeadHatBeretParamedic: 2
|
||||
ClothingUniformMedicalApron: 2
|
||||
|
|
@ -21,11 +21,12 @@
|
|||
ClothingUniformParamedicJumper: 2
|
||||
ClothingUniformJumpskirtParamedicJumper: 2
|
||||
ClothingOuterCoatParamedicJacket: 1
|
||||
ClothingOuterCoatBomberMedical: 2
|
||||
ClothingOuterExplorerCoat: 1
|
||||
ClothingOuterCoatLabMedical: 2
|
||||
ClothingOuterCoatLabLong: 4
|
||||
ClothingOuterCoatLabLongMedical: 2
|
||||
# End Delta-V additions
|
||||
# End DeltaV additions
|
||||
ClothingOuterCoatLab: 4
|
||||
ClothingShoesColorWhite: 4
|
||||
ClothingHandsGlovesLatex: 4
|
||||
|
|
@ -36,30 +37,30 @@
|
|||
UniformScrubsColorGreen: 4
|
||||
UniformScrubsColorBlue: 4
|
||||
UniformScrubsColorPurple: 4
|
||||
# Begin Delta-V additions
|
||||
# Begin DeltaV additions
|
||||
UniformScrubsColorBlack: 4
|
||||
UniformScrubsColorCyan: 4
|
||||
UniformScrubsColorPink: 4
|
||||
UniformScrubsColorRainbow: 4
|
||||
UniformScrubsColorWhite: 4
|
||||
# End Delta-v additions
|
||||
# End DeltaV additions
|
||||
ClothingHeadHatSurgcapGreen: 4
|
||||
ClothingHeadHatSurgcapBlue: 4
|
||||
ClothingHeadHatSurgcapPurple: 4
|
||||
# Begin Delta-V additions
|
||||
# Begin DeltaV additions
|
||||
ClothingHeadHatSurgcapBlack: 4
|
||||
ClothingHeadHatSurgcapCyan: 4
|
||||
ClothingHeadHatSurgcapPink: 4
|
||||
ClothingHeadHatSurgcapRainbow: 4
|
||||
ClothingHeadHatSurgcapWhite: 4
|
||||
# End Delta-v additions
|
||||
# End DeltaV additions
|
||||
ClothingShoesBootsWinterMed: 2
|
||||
contrabandInventory:
|
||||
# Begin Delta-V additions
|
||||
# Begin DeltaV additions
|
||||
UniformScrubsColorCybersun: 1
|
||||
ClothingHeadHatSurgcapCybersun: 1
|
||||
ClothingOuterCoatCybersunWindbreaker: 1
|
||||
# End Delta-V additions
|
||||
# End DeltaV additions
|
||||
ClothingUniformJumpskirtOfLife: 1
|
||||
ToyFigurineMedicalDoctor: 1
|
||||
ToyFigurineParamedic: 1
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
ClothingHeadHatBeretRND: 3 # DeltaV - Remove Specific Role Timers
|
||||
ClothingHeadTinfoil: 2 # Nyanotrasen - Tinfoil hats for Epistemics
|
||||
ClothingShoesBootsWinterSci: 2
|
||||
ClothingOuterCoatBomberEpistemic: 2 # DeltaV - Department Bombers
|
||||
ClothingOuterExplorerCoat: 3 # DeltaV
|
||||
contrabandInventory:
|
||||
ClothingUniformCybersunRND: 1 # DeltaV
|
||||
ToyFigurineResearchDirector: 1
|
||||
ToyFigurineResearchDirector: 1
|
||||
|
|
|
|||
|
|
@ -4,54 +4,59 @@
|
|||
ClothingBackpackSecurity: 3
|
||||
ClothingBackpackSatchelSecurity: 3
|
||||
ClothingBackpackDuffelSecurity: 3
|
||||
# ClothingUniformJumpsuitSec: 3 # DeltaV - moved*
|
||||
# ClothingUniformJumpsuitSec: 3 # DeltaV - *Moved
|
||||
ClothingShoesBootsJack: 3
|
||||
ClothingHeadHatBeretSecurity: 3
|
||||
ClothingHeadHatBeretSecurityGrey: 3 # DeltaV - add grey security beret to secdrobe
|
||||
ClothingHeadHatBeretCadet: 3 # DeltaV - add cadet beret to secdrobe
|
||||
ClothingHeadHatCapSec: 3 # DeltaV - add security cap to secdrobe
|
||||
ClothingMaskNeckGaiter: 3 # DeltaV - add neck gaiters to secdrobe
|
||||
# ClothingMaskGasSecurity: 3 # DeltaV - 1984 secmasks from secdrobe, you can make them in the lathe now.
|
||||
# ClothingHeadHatSecsoft: 3 # DeltaV - removed from SecDrobe due to inconsistency with art direction
|
||||
# ClothingHeadBandRed: 3 # DeltaV - removed for incongruency
|
||||
# ClothingMaskNeckGaiterRed: 3 # DeltaV - removed
|
||||
# Begin DeltaV Additions
|
||||
ClothingHeadHatBeretSecurityGrey: 3
|
||||
ClothingHeadHatBeretCorpsman: 3
|
||||
ClothingHeadHatBeretCadet: 3
|
||||
ClothingHeadHatCapSec: 3
|
||||
ClothingMaskNeckGaiter: 3
|
||||
# End DeltaV Additions
|
||||
# Begin DeltaV Removal
|
||||
# ClothingHeadHatSecsoft: 3
|
||||
# ClothingHeadBandRed: 3
|
||||
# ClothingMaskNeckGaiterRed: 3
|
||||
# End DeltaV Removal
|
||||
ClothingHandsGlovesColorBlack: 3
|
||||
ClothingHandsGlovesFingerless: 3
|
||||
ClothingUniformJumpsuitSec: 3 # DeltaV - *moved
|
||||
ClothingUniformJumpskirtSec: 3
|
||||
ClothingUniformJumpskirtSec: 3 # DeltaV - *Moved
|
||||
ClothingUniformJumpsuitSecGrey: 3
|
||||
ClothingUniformJumpskirtSecGrey: 3
|
||||
ClothingUniformJumpsuitSecWhite: 3 # DeltaV - Was ClothingUniformJumpsuitSecBlue
|
||||
ClothingUniformJumpsuitSecSummer: 3 # DeltaV - add summer security uniform
|
||||
ClothingUniformJumpskirtSecWhite: 3 # DeltaV - new skirt sprited, added to secdrobe. Was ClothingUniformJumpskirtSecBlue
|
||||
ClothingUniformJumpsuitSecFormal: 1 # DeltaV - add formal uniform to secdrobe
|
||||
ClothingUniformJumpskirtSecFormal: 1 # DeltaV - add formal uniform to secdrobe
|
||||
# ClothingUniformJumpsuitSecBlue: 3 # DelatV - Replaced by ClothingUniformJumpsuitSecWhite
|
||||
# Begin DeltaV Additions
|
||||
ClothingUniformJumpsuitSecWhite: 3
|
||||
ClothingUniformJumpskirtSecWhite: 3
|
||||
ClothingUniformJumpsuitSecSummer: 3
|
||||
ClothingUniformJumpsuitSecFormal: 1
|
||||
ClothingUniformJumpskirtSecFormal: 1
|
||||
ClothingUniformJumpsuitBrigmedic: 2
|
||||
ClothingUniformJumpskirtBrigmedic: 2
|
||||
ClothingUniformJumpsuitBrigmedicTurtle: 2
|
||||
ClothingUniformJumpskirtBrigmedicTurtle: 2
|
||||
ClothingOuterStasecSweater: 2
|
||||
ClothingOuterCoatBomberSecurity: 2
|
||||
ClothingLongcoatSecurity: 2
|
||||
ClothingLongcoatBrigmedic: 2
|
||||
ClothingOuterCoatStasec: 2
|
||||
ClothingOuterCoatStasecCorpsman: 2
|
||||
ClothingUniformJumpsuitPrisoner: 3
|
||||
ClothingUniformJumpskirtPrisoner: 3
|
||||
ClothingHeadsetPrison: 3
|
||||
# End DeltaV Additions
|
||||
ClothingHeadsetSecurity: 3
|
||||
ClothingHeadHatBeretCorpsman: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
ClothingUniformJumpsuitBrigmedic: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
ClothingUniformJumpskirtBrigmedic: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
ClothingUniformJumpsuitBrigmedicTurtle: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
ClothingUniformJumpskirtBrigmedicTurtle: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
ClothingUniformJumpsuitPrisoner: 3 # DeltaV - added prison jumpsuits
|
||||
ClothingUniformJumpskirtPrisoner: 3 # DeltaV - added prison jumpskirts
|
||||
ClothingHeadsetPrison: 3 # DeltaV - prison headsets in secdrobe
|
||||
ClothingOuterStasecSweater: 2 # DeltaV - add sweaters to secdrobe
|
||||
ClothingLongcoatSecurity: 2 # DeltaV - Longcoats
|
||||
ClothingLongcoatBrigmedic: 2 # DeltaV - Longcoats
|
||||
ClothingOuterCoatStasec: 2 # DeltaV - replace ClothingOuterWinterSec
|
||||
ClothingOuterCoatStasecCorpsman: 2 # DeltaV - added corpsman uniform to secdrobe
|
||||
# ClothingOuterWinterSec: 2 # DeltaV - removed this
|
||||
## ClothingOuterArmorBasic: 2 # DeltaV - moved body armour from SecDrobe to SecTech
|
||||
## ClothingOuterArmorBasicSlim: 2
|
||||
ClothingNeckScarfStripedBlue: 3 # DeltaV - blue instead of red scarf. Was ClothingNeckScarfStripedRed
|
||||
# ClothingOuterArmorBasicSlim: 2 # DeltaV - this was gone at one point no idea where it went
|
||||
# ClothingOuterWinterSec: 2 # DeltaV - Replaced by ClothingOuterCoatStasec
|
||||
# ClothingOuterArmorBasic: 2 # DeltaV - Moved to SecTech
|
||||
ClothingNeckScarfStripedBlue: 3 # DeltaV - Was ClothingNeckScarfStripedRed
|
||||
# ClothingOuterArmorBasicSlim: 2 # DeltaV - Removed
|
||||
ClothingEyesBlindfold: 1
|
||||
ClothingShoesBootsCombat: 1
|
||||
ClothingShoesBootsWinterSec: 2
|
||||
# ClothingHeadHelmetJustice: 1 # DeltaV - lrp
|
||||
# ClothingHeadHelmetJustice: 1 # DeltaV - Removed
|
||||
contrabandInventory:
|
||||
# ClothingMaskClownSecurity: 1 # DeltaV - removed for incongruency
|
||||
# ClothingMaskMimeSecurity: 1 # DeltaV - removed for same reasons as above
|
||||
# ClothingMaskClownSecurity: 1 # DeltaV - Removed for incongruency
|
||||
# ClothingMaskMimeSecurity: 1 # DeltaV - Removed for incongruency
|
||||
ToyFigurineSecurity: 1
|
||||
ToyFigurineWarden: 1
|
||||
ToyFigurineHeadOfSecurity: 1
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
ClothingOuterFlannelBlue: 2
|
||||
ClothingOuterFlannelGreen: 2
|
||||
ClothingOuterCoatBomber: 3
|
||||
ClothingOuterCoatBomberCheckered: 3 # DeltaV
|
||||
ClothingHeadHatCanadaBeanie: 4
|
||||
ClothingHeadHatSantahat: 2
|
||||
ClothingHeadHatXmasCrown: 2
|
||||
|
|
@ -65,3 +66,7 @@
|
|||
emaggedInventory:
|
||||
ClothingNeckScarfStripedSyndieGreen: 3
|
||||
ClothingNeckScarfStripedSyndieRed: 3
|
||||
# Begin DeltaV additions
|
||||
ClothingOuterCoatBomberSyndicate: 1
|
||||
ClothingOuterCoatBomberCybersun: 1
|
||||
# End DeltaV additions
|
||||
|
|
|
|||
|
|
@ -282,7 +282,6 @@
|
|||
requiredMobState:
|
||||
- Critical
|
||||
- Dead
|
||||
- type: BorgSwitchableSubtype # CosmicDrift
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
|
|
|
|||
|
|
@ -1613,6 +1613,16 @@
|
|||
Blunt: 1
|
||||
clumsySound:
|
||||
path: /Audio/Animals/monkey_scream.ogg
|
||||
#Begin DeltaV additions
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Male: MonkeySounds
|
||||
Female: MonkeySounds
|
||||
Unsexed: MonkeySounds
|
||||
wilhelmProbability: 0.01
|
||||
- type: BodyEmotes
|
||||
soundsId: MonkeySounds
|
||||
#End DeltaV additions
|
||||
|
||||
|
||||
- type: entity
|
||||
|
|
@ -1647,6 +1657,16 @@
|
|||
- type: GhostTakeoverAvailable
|
||||
- type: Loadout
|
||||
prototypes: [SyndicateOperativeGearMonkey]
|
||||
#Begin DeltaV additions
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Male: MonkeySounds
|
||||
Female: MonkeySounds
|
||||
Unsexed: MonkeySounds
|
||||
wilhelmProbability: 0.01
|
||||
- type: BodyEmotes
|
||||
soundsId: MonkeySounds
|
||||
#End DeltaV additions
|
||||
|
||||
- type: entity
|
||||
id: MobMonkeySyndicateAgent
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
Arsenal: { color: "#dc373b" }
|
||||
Experimental: { color: "#9a6ef0" }
|
||||
CivilianServices: { color: "#7ecd48" }
|
||||
|
||||
Biochemical: { color: "#449ae6" } # DeltaV - Biochem tree
|
||||
enum.TechDiskVisuals.Tier:
|
||||
t2_marks:
|
||||
2: { visible: true }
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@
|
|||
whitelist:
|
||||
tags:
|
||||
- CartridgePistol
|
||||
capacity: 20 # DeltaV
|
||||
capacity: 30
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag_top_mounted.rsi
|
||||
layers:
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@
|
|||
- type: ChamberMagazineAmmoProvider
|
||||
boltClosed: null
|
||||
- type: Gun
|
||||
fireRate: 5 # DeltaV - Was 5.5
|
||||
fireRate: 5.5
|
||||
minAngle: 2 # DeltaV - Was 1
|
||||
maxAngle: 16 # DeltaV - Was 6
|
||||
angleIncrease: 1.5
|
||||
|
|
|
|||
|
|
@ -395,6 +395,8 @@
|
|||
- LongcoatBlack
|
||||
- LongcoatBrown
|
||||
- LongcoatNanoTrasen
|
||||
- BomberJacket
|
||||
- BomberCheckered
|
||||
- BlackWinterCoat
|
||||
- PurpleWinterCoat
|
||||
- RedWinterCoat
|
||||
|
|
@ -724,6 +726,7 @@
|
|||
loadouts:
|
||||
- BotanistApron
|
||||
- BotanistWintercoat
|
||||
- BomberService # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: BotanistJobTrinkets
|
||||
|
|
@ -968,6 +971,7 @@
|
|||
loadouts:
|
||||
- QuartermasterLongcoat # DeltaV - Longcoats
|
||||
- QuartermasterWintercoat
|
||||
- BomberLogistic # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: QuartermasterShoes
|
||||
|
|
@ -1016,6 +1020,7 @@
|
|||
minLimit: 0
|
||||
loadouts:
|
||||
- CargoTechnicianWintercoat
|
||||
- BomberLogistic # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: CargoTechnicianShoes
|
||||
|
|
@ -1102,6 +1107,7 @@
|
|||
loadouts:
|
||||
- ChiefEngineerLongcoat # DeltaV - Longcoats
|
||||
- ChiefEngineerWintercoat
|
||||
- BomberEngineering # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: ChiefEngineerShoes
|
||||
|
|
@ -1176,6 +1182,7 @@
|
|||
loadouts:
|
||||
- StationEngineerOuterVest
|
||||
- StationEngineerWintercoat
|
||||
- BomberEngineering # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: StationEngineerShoes
|
||||
|
|
@ -1223,6 +1230,7 @@
|
|||
minLimit: 0
|
||||
loadouts:
|
||||
- AtmosphericTechnicianWintercoat
|
||||
- BomberEngineering # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: AtmosphericTechnicianBackpack
|
||||
|
|
@ -1302,6 +1310,7 @@
|
|||
- MystaLabCoat # DeltaV
|
||||
- ResearchDirectorLongcoat # DeltaV - Longcoats
|
||||
- ResearchDirectorWintercoat
|
||||
- BomberEpistemic # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: ResearchDirectorShoes
|
||||
|
|
@ -1367,6 +1376,7 @@
|
|||
- LongLabCoat # DeltaV
|
||||
- ScienceLabCoat
|
||||
- ScienceWintercoat
|
||||
- BomberEpistemic # DeltaV
|
||||
- SeniorResearcherLabCoat
|
||||
|
||||
- type: loadoutGroup
|
||||
|
|
@ -1704,6 +1714,7 @@
|
|||
- ChiefMedicalOfficerLongcoat # DeltaV - Longcoats
|
||||
- ChiefMedicalOfficerLongLabCoat # DeltaV - Medical Clothing Overhaul
|
||||
- ChiefMedicalOfficerWintercoat
|
||||
- BomberMedical # DeltaV
|
||||
|
||||
- type: loadoutGroup
|
||||
id: ChiefMedicalOfficerNeck
|
||||
|
|
@ -1799,6 +1810,7 @@
|
|||
- LongLabCoat # DeltaV - Medical Clothing Overhaul
|
||||
- MedicalLongLabCoat # DeltaV - Medical Clothing Overhaul
|
||||
- MedicalDoctorWintercoat
|
||||
- BomberMedical # DeltaV
|
||||
- SeniorPhysicianLabCoat
|
||||
|
||||
- type: loadoutGroup
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
- Vocal
|
||||
tags:
|
||||
- Honker # DeltaV - let borgs, bots, and IPCs use it (And Motorkind)
|
||||
- SiliconEmotes
|
||||
# - SiliconEmotes # DeltaV - Honker does this.
|
||||
chatMessages: ["chat-emote-msg-honk"]
|
||||
chatTriggers:
|
||||
- honk
|
||||
|
|
|
|||
|
|
@ -1,142 +0,0 @@
|
|||
# use these base subtypes to avoid some boilerplate
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
id: BorgSubtypeBase
|
||||
name: borg subtype base
|
||||
description: Default state for other subtypes to use.
|
||||
categories: [ "BorgSubtype" ]
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
# Visuals
|
||||
layerData:
|
||||
- state: borg
|
||||
map: [ "enum.BorgVisualLayers.Body", "movement" ]
|
||||
- state: borg_e
|
||||
map: [ "enum.BorgVisualLayers.Light" ]
|
||||
shader: unshaded
|
||||
visible: false
|
||||
- state: borg_l
|
||||
shader: unshaded
|
||||
map: [ "light","enum.BorgVisualLayers.LightStatus" ]
|
||||
visible: false
|
||||
|
||||
spriteBodyState: borg
|
||||
spriteHasMindState: borg_e
|
||||
# if rsi has a specific no mind state sprite, use that instead (i.e. borg_e_r)
|
||||
spriteNoMindState: borg_e
|
||||
|
||||
footstepCollection:
|
||||
collection: FootstepBorg
|
||||
|
||||
# generic
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgGenericSubtypeBase
|
||||
name: borg generic subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: generic
|
||||
|
||||
dummyPrototype: BorgChassisGeneric
|
||||
|
||||
# mining (salvage)
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgMiningSubtypeBase
|
||||
name: borg mining subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: mining
|
||||
|
||||
# Entity prototype for preview in selection menu
|
||||
dummyPrototype: BorgChassisMining
|
||||
|
||||
# engineering
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgEngineerSubtypeBase
|
||||
name: borg engineering subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: engineering
|
||||
|
||||
# Entity prototype for preview in selection menu
|
||||
dummyPrototype: BorgChassisEngineer
|
||||
|
||||
# janitor
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgJanitorSubtypeBase
|
||||
name: borg janitor subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: janitor
|
||||
|
||||
# Entity prototype for preview in selection menu
|
||||
dummyPrototype: BorgChassisJanitor
|
||||
|
||||
# medical
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgMedicalSubtypeBase
|
||||
name: borg medical subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: medical
|
||||
|
||||
# Description
|
||||
dummyPrototype: BorgChassisMedical
|
||||
|
||||
# service
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgServiceSubtypeBase
|
||||
name: borg service subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: service
|
||||
|
||||
# Description
|
||||
dummyPrototype: BorgChassisService
|
||||
|
||||
## Begin DeltaV Additions
|
||||
|
||||
# security
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgSecuritySubtypeBase
|
||||
name: borg security subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: security
|
||||
|
||||
# Description
|
||||
dummyPrototype: BorgChassisSecurity
|
||||
|
||||
# salvage
|
||||
- type: entity
|
||||
parent: BorgSubtypeBase
|
||||
abstract: true
|
||||
id: BorgSalvageSubtypeBase
|
||||
name: borg salvage subtype
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
parentType: mining
|
||||
|
||||
# Description
|
||||
dummyPrototype: BorgChassisSalvage
|
||||
|
||||
## End DeltaV Additions
|
||||
|
||||
- type: entityCategory
|
||||
id: BorgSubtype
|
||||
name: al-borg-subtypes
|
||||
hideSpawnMenu: true
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# Actual entity prototypes used for UI visuals and admin spawning
|
||||
- type: entity
|
||||
id: BorgChassisQualifiedDoctor
|
||||
parent: BorgChassisSelectable
|
||||
name: qualified doctor cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: medical
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: MedicalQualifiedDoctorSubtype
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
# medical
|
||||
- type: entity
|
||||
parent: BorgMedicalSubtypeBase
|
||||
id: MedicalQualifiedDoctorSubtype
|
||||
name: qualified doctor
|
||||
description: "A board-certified cyborg for all your medical needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisQualifiedDoctor
|
||||
|
||||
spritePath: _CD/Mobs/Silicon/Borg/Medical/qualified_doctor.rsi
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
- type: soundCollection
|
||||
id: ShadowkinMaleScreams
|
||||
files:
|
||||
- /Audio/_DEN/Voice/Shadowkin/Emotes/shadowkin_male_scream.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: ShadowkinFemaleScreams
|
||||
files:
|
||||
- /Audio/_DEN/Voice/Shadowkin/Emotes/shadowkin_female_scream.ogg
|
||||
|
|
@ -66,3 +66,87 @@
|
|||
collection: Moo
|
||||
Gulp: # Goob
|
||||
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
|
||||
|
||||
- type: emoteSounds
|
||||
id: MaleShadowkin
|
||||
params:
|
||||
variation: 0.125
|
||||
sounds:
|
||||
Scream:
|
||||
collection: ShadowkinMaleScreams
|
||||
Laugh:
|
||||
collection: MaleLaugh
|
||||
Sneeze:
|
||||
collection: MaleSneezes
|
||||
Cough:
|
||||
collection: MaleCoughs
|
||||
Yawn:
|
||||
collection: MaleYawn
|
||||
Snore:
|
||||
collection: Snores
|
||||
Sigh:
|
||||
collection: MaleSigh
|
||||
Crying:
|
||||
collection: MaleCry
|
||||
Whistle:
|
||||
collection: Whistles
|
||||
Weh:
|
||||
collection: Weh
|
||||
Gasp:
|
||||
collection: MaleGasp
|
||||
DefaultDeathgasp:
|
||||
collection: MaleDeathGasp
|
||||
Marr:
|
||||
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
|
||||
Wurble:
|
||||
path: /Audio/_Starlight/Voice/Shadekin/wurble.ogg
|
||||
Hiss:
|
||||
collection: FelinidHisses
|
||||
Purr:
|
||||
collection: FelinidPurrs
|
||||
Growl:
|
||||
collection: FelinidGrowls
|
||||
Gulp: # Goob
|
||||
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
|
||||
|
||||
- type: emoteSounds
|
||||
id: FemaleShadowkin
|
||||
params:
|
||||
variation: 0.125
|
||||
sounds:
|
||||
Scream:
|
||||
collection: ShadowkinFemaleScreams
|
||||
Laugh:
|
||||
collection: FemaleLaugh
|
||||
Sneeze:
|
||||
collection: FemaleSneezes
|
||||
Cough:
|
||||
collection: FemaleCoughs
|
||||
Yawn:
|
||||
collection: FemaleYawn
|
||||
Snore:
|
||||
collection: Snores
|
||||
Sigh:
|
||||
collection: FemaleSigh
|
||||
Crying:
|
||||
collection: FemaleCry
|
||||
Whistle:
|
||||
collection: Whistles
|
||||
Weh:
|
||||
collection: Weh
|
||||
Gasp:
|
||||
collection: FemaleGasp
|
||||
DefaultDeathgasp:
|
||||
collection: FemaleDeathGasp
|
||||
Marr:
|
||||
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
|
||||
Wurble:
|
||||
path: /Audio/_Starlight/Voice/Shadekin/wurble.ogg
|
||||
Hiss:
|
||||
collection: FelinidHisses
|
||||
Purr:
|
||||
collection: FelinidPurrs
|
||||
Growl:
|
||||
collection: FelinidGrowls
|
||||
Gulp: # Goob
|
||||
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
- type: speechSounds
|
||||
id: Shadekin
|
||||
saySound:
|
||||
path: /Audio/_DEN/Voice/Shadowkin/Talk/shadowkin_speak_say.ogg
|
||||
askSound:
|
||||
path: /Audio/_DEN/Voice/Shadowkin/Talk/shadowkin_speak_ask.ogg
|
||||
exclaimSound:
|
||||
path: /Audio/_DEN/Voice/Shadowkin/Talk/shadowkin_speak_exclaim.ogg
|
||||
|
|
@ -20,4 +20,4 @@
|
|||
icon: _DV/Actions/sinkclaws/claws-off.png
|
||||
iconOn: _DV/Actions/sinkclaws/claws-on.png
|
||||
itemIconStyle: NoItem
|
||||
useDelay: 3
|
||||
useDelay: 0.5
|
||||
|
|
|
|||
|
|
@ -12,3 +12,9 @@
|
|||
state: enabled
|
||||
name: alert-heavy-clothing-name
|
||||
description: alert-heavy-clothing-desc
|
||||
|
||||
- type: alert
|
||||
id: ClawsProtracted
|
||||
icons: [ _DV/Actions/sinkclaws/claws-on.png ]
|
||||
name: alerts-sunk-claws-name
|
||||
description: alerts-sunk-claws-desc
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@
|
|||
- type: NoShoesSilentFootsteps
|
||||
- type: Rootable # DeltaV - add rooting claws
|
||||
action: "ActionToggleRootableFelinid"
|
||||
rootedAlert: ClawsProtracted
|
||||
transferRate: 0
|
||||
speedModifier: 0.1
|
||||
rootSound: "/Audio/Nyanotrasen/Voice/Felinid/cat_growl1.ogg"
|
||||
|
|
|
|||
|
|
@ -96,8 +96,8 @@
|
|||
Head: OrganMotorkindHead
|
||||
ArmLeft: OrganMotorkindFrontLeft
|
||||
ArmRight: OrganMotorkindFrontRight
|
||||
# HandRight: OrganHumanHandRight
|
||||
# HandLeft: OrganHumanHandLeft
|
||||
HandRight: OrganMotorkindHandRight
|
||||
HandLeft: OrganMotorkindHandLeft
|
||||
LegLeft: OrganMotorkindBackLeft
|
||||
LegRight: OrganMotorkindBackRight
|
||||
# FootLeft: OrganHumanFootLeft
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
- type: HumanoidProfile
|
||||
species: Motorkind
|
||||
- type: ScaleVisuals
|
||||
scale: 2, 2
|
||||
speciesScale: 2, 2
|
||||
|
||||
- type: entity
|
||||
name: Urist McQueen
|
||||
|
|
@ -328,8 +328,8 @@
|
|||
- state: windshield
|
||||
- type: VisualOrgan
|
||||
data:
|
||||
sprite: _DV/Mobs/Species/Motorkind/organs.rsi
|
||||
state: windshield
|
||||
sprite: _DV/Mobs/Species/Motorkind/parts.rsi
|
||||
state: eyes
|
||||
|
||||
- type: entity
|
||||
parent: [ OrganMotorkindInternal ]
|
||||
|
|
@ -387,3 +387,46 @@
|
|||
heldPrefix: lungs
|
||||
- type: Metabolizer
|
||||
metabolizerTypes: [ Fuel ]
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: OrganBase
|
||||
id: OrganBaseInvisibleHand
|
||||
name: invisible hand
|
||||
components:
|
||||
- type: Organ
|
||||
category: HandRight
|
||||
- type: HandOrgan
|
||||
handID: right
|
||||
data:
|
||||
location: Right
|
||||
- type: Sprite
|
||||
state: r_hand
|
||||
|
||||
- type: entity
|
||||
parent: [ OrganBaseInvisibleHand ]
|
||||
id: OrganMotorkindHandLeft
|
||||
components:
|
||||
- type: Organ
|
||||
category: HandLeft
|
||||
- type: HandOrgan
|
||||
handID: left
|
||||
data:
|
||||
location: Left
|
||||
- type: Sprite
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_hand
|
||||
|
||||
- type: entity
|
||||
parent: [ OrganBaseInvisibleHand ]
|
||||
id: OrganMotorkindHandRight
|
||||
components:
|
||||
- type: Organ
|
||||
category: HandRight
|
||||
- type: HandOrgan
|
||||
handID: right
|
||||
data:
|
||||
location: Right
|
||||
- type: Sprite
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_hand
|
||||
|
|
|
|||
|
|
@ -102,11 +102,12 @@
|
|||
state: full
|
||||
- type: Speech
|
||||
allowedEmotes: ["Marr", "Wurble", "Hiss", "Growl", "Purr"]
|
||||
speechSounds: Shadekin
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Male: MaleShadekin
|
||||
Female: FemaleShadekin
|
||||
Unsexed: MaleShadekin
|
||||
Male: MaleShadowkin
|
||||
Female: FemaleShadowkin
|
||||
Unsexed: MaleShadowkin
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
collection: AlienClaw
|
||||
|
|
|
|||
|
|
@ -58,3 +58,17 @@
|
|||
entity_storage: !type:AllSelector
|
||||
children:
|
||||
- id: CrashCart
|
||||
|
||||
- type: entity
|
||||
parent: CrateMedicalSecure
|
||||
id: CrateCrewMonitoringDV
|
||||
name: crew monitoring crate
|
||||
description: Contains a flatpack of a crew monitoring server and a few crew monitoring computers. Requires Medical access to open.
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
entity_storage: !type:AllSelector
|
||||
children:
|
||||
- id: CrewMonitoringServerFlatpack
|
||||
- id: CrewMonitoringComputerFlatpack
|
||||
amount: 3
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@
|
|||
- type: DisarmMalus
|
||||
- type: Item
|
||||
size: Huge
|
||||
shape:
|
||||
- 0,0,1,3
|
||||
sprite: _DV/CosmicCult/Objects/cosmicsword-inhands.rsi
|
||||
inhandVisuals:
|
||||
left:
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
- type: Armor # Good against gunshots, decent against everything else. Balanced by reduced movement speed.
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.80
|
||||
Blunt: 0.90
|
||||
Slash: 0.80
|
||||
Piercing: 0.50
|
||||
Heat: 0.80
|
||||
|
|
@ -42,10 +42,11 @@
|
|||
- type: Armor # Good against stabs and knocks, offers minimal protection from gunshots and lasfire.
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.60
|
||||
Slash: 0.60
|
||||
Blunt: 0.50
|
||||
Slash: 0.50
|
||||
Piercing: 0.90
|
||||
Heat: 0.90
|
||||
Heat: 0.80
|
||||
staminaMeleeDamageCoefficient: 0.6
|
||||
- type: StaminaResistance
|
||||
damageCoefficient: 0.9
|
||||
- type: ExplosionResistance # Better than nothing against a blast or shockwave.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,175 @@
|
|||
# Non-Departmental
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberCheckered
|
||||
name: checkered bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket. It's dark blue, brandishing a checkerboard pattern on the back.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/checkered.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/checkered.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberCheckered ]
|
||||
id: ClothingOuterCoatBomberCheckeredOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Engineering
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberEngineering
|
||||
name: engineering bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket brandishing engineering flair. It features a singularity patch on the back.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/engi.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/engi.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberEngineering ]
|
||||
id: ClothingOuterCoatBomberEngineeringOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Epistemic
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberEpistemic
|
||||
name: epistemic bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket brandishing epistemics flair. It features an alien patch on the back.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/epi.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/epi.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberEpistemic ]
|
||||
id: ClothingOuterCoatBomberEpistemicOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Logistic
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberLogistic
|
||||
name: logistic bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket brandishing logistics flair. It features a yellow band around the chest.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/logi.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/logi.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberEpistemic ]
|
||||
id: ClothingOuterCoatBomberLogisticOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Medical
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberMedical
|
||||
name: medical bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket brandishing medical flair. It features a medical Cross patch on the back.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/med.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/med.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberMedical ]
|
||||
id: ClothingOuterCoatBomberMedicalOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Security
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterArmoredWinterCoat ]
|
||||
id: ClothingOuterCoatBomberSecurity
|
||||
name: security bomber jacket
|
||||
description: An armored, well-worn vintage leather bomber jacket brandishing security flair. It features a shield patch on the back.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/sec.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/sec.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberSecurity ]
|
||||
id: ClothingOuterCoatBomberSecurityOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Service
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberService
|
||||
name: service bomber jacket
|
||||
description: A thick, well-worn vintage leather bomber jacket brandishing service flair. It features blue hook-and-loop fastener around the waist, but it seems to be non-functional.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/service.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/service.rsi
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberService ]
|
||||
id: ClothingOuterCoatBomberServiceOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
# Syndicate
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBase, ClothingOuterWinterCoat ]
|
||||
id: ClothingOuterCoatBomberSyndicate
|
||||
name: syndicate bomber jacket
|
||||
description: A sturdy, well-worn vintage leather bomber jacket brandishing syndicate flair. It's totally legal, officer! I swear!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/syndi.rsi
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/syndi.rsi
|
||||
- type: Armor # Same as Cybersun Windbreaker but cold instead of heat
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.95
|
||||
Slash: 0.95
|
||||
Piercing: 0.95
|
||||
Cold: 0.75
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberSyndicate ]
|
||||
id: ClothingOuterCoatBomberSyndicateOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterCoatBomberSyndicate
|
||||
id: ClothingOuterCoatBomberCybersun
|
||||
name: cybersun bomber jacket
|
||||
description: A sturdy, well-worn vintage leather bomber jacket brandishing Cybersun flair. The fur seems to be glowing. The wonders of modern science.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/cybersun.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
- state: icon-unshaded
|
||||
shader: unshaded
|
||||
- type: Clothing
|
||||
sprite: _DV/Clothing/OuterClothing/Coats/Bombers/cybersun.rsi
|
||||
clothingVisuals:
|
||||
outerClothing:
|
||||
- state: equipped-OUTERCLOTHING
|
||||
- state: unshaded
|
||||
shader: unshaded
|
||||
|
||||
- type: entity
|
||||
parent: [ ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatBomberCybersun ]
|
||||
id: ClothingOuterCoatBomberCybersunOpened
|
||||
categories: [ HideSpawnMenu ]
|
||||
|
|
@ -108,3 +108,10 @@
|
|||
- type: Tag
|
||||
tags:
|
||||
- K9Armor
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.6
|
||||
Slash: 0.6
|
||||
Piercing: 0.9
|
||||
Heat: 0.9
|
||||
|
|
|
|||
|
|
@ -1,213 +0,0 @@
|
|||
# region Engineering
|
||||
|
||||
- type: entity
|
||||
parent: BorgEngineerSubtypeBase
|
||||
id: EngineerStandardSubtype
|
||||
name: standard engineering cyborg
|
||||
description: "A standard cyborg for all your engineering needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisEngineeringStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Engineering/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgEngineerSubtypeBase
|
||||
id: EngineerGenericSubtype
|
||||
name: generic engineering cyborg
|
||||
description: "A generic cyborg for all your engineering needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisEngineeringGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Engineering/generic.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgEngineerSubtypeBase
|
||||
id: EngineerAntiqueSubtype
|
||||
name: antique engineering cyborg
|
||||
description: "An antique engineering cyborg, looks like it has patched up hundreds of meteor holes."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisEngineeringAntique
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Engineering/antique.rsi
|
||||
|
||||
# region Generic
|
||||
|
||||
- type: entity
|
||||
parent: BorgGenericSubtypeBase
|
||||
id: GenericGenericSubtype
|
||||
name: generic cyborg
|
||||
description: "A generic cyborg, it's extra generic looking."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisGenericGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Generic/generic.rsi
|
||||
|
||||
# region Janitor
|
||||
|
||||
- type: entity
|
||||
parent: BorgJanitorSubtypeBase
|
||||
id: JanitorStandardSubtype
|
||||
name: standard janitor cyborg
|
||||
description: "A standard cyborg for all your janitorial needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisJanitorStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Janitor/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgJanitorSubtypeBase
|
||||
id: JanitorGenericSubtype
|
||||
name: generic janitor cyborg
|
||||
description: "A generic cyborg for all your janitorial needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisJanitorGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Janitor/generic.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgJanitorSubtypeBase
|
||||
id: JanitorMopbotSubtype
|
||||
name: mopbot cyborg
|
||||
description: "A bot with a mop, call it Mopbot."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisJanitorMopbot
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Janitor/mopbot.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgJanitorSubtypeBase
|
||||
id: JanitorVestSubtype
|
||||
name: vest janitor cyborg
|
||||
description: "A janitor cyborg with a high-visibility vest."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisJanitorVest
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Janitor/vest.rsi
|
||||
|
||||
# region Medical
|
||||
|
||||
- type: entity
|
||||
parent: BorgMedicalSubtypeBase
|
||||
id: MedicalStandardSubtype
|
||||
name: standard medical cyborg
|
||||
description: "A standard cyborg for all your medical needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisMedicalStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Medical/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgMedicalSubtypeBase
|
||||
id: MedicalGenericSubtype
|
||||
name: generic medical cyborg
|
||||
description: "A generic cyborg for all your medical needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisMedicalGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Medical/generic.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgMedicalSubtypeBase
|
||||
id: MedicalDoctorSubtype
|
||||
name: doctor medical cyborg
|
||||
description: "A cyborg in a white coat for all your medical needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisMedicalDoctor
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Medical/doctor.rsi
|
||||
|
||||
# region Salvage
|
||||
|
||||
- type: entity
|
||||
parent: BorgSalvageSubtypeBase
|
||||
id: SalvageStandardSubtype
|
||||
name: standard salvage cyborg
|
||||
description: "A standard cyborg for all your salvage needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisSalvageStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Salvage/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgSalvageSubtypeBase
|
||||
id: SalvageGenericSubtype
|
||||
name: generic salvage cyborg
|
||||
description: "A generic cyborg for all your salvage needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisSalvageGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Salvage/generic.rsi
|
||||
|
||||
# region Security
|
||||
|
||||
- type: entity
|
||||
parent: BorgSecuritySubtypeBase
|
||||
id: SecurityStandardSubtype
|
||||
name: standard security cyborg
|
||||
description: "A standard cyborg for all your security needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisSecurityStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Security/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgSecuritySubtypeBase
|
||||
id: SecurityGenericSubtype
|
||||
name: generic security cyborg
|
||||
description: "A generic cyborg for all your security needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisSecurityGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Security/generic.rsi
|
||||
|
||||
# region Service
|
||||
|
||||
- type: entity
|
||||
parent: BorgServiceSubtypeBase
|
||||
id: ServiceStandardSubtype
|
||||
name: standard service cyborg
|
||||
description: "A standard cyborg for all your service needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisServiceStandard
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Service/standard.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgServiceSubtypeBase
|
||||
id: ServiceGenericSubtype
|
||||
name: generic service cyborg
|
||||
description: "A generic cyborg for all your service needs."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisServiceGeneric
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Service/generic.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgServiceSubtypeBase
|
||||
id: ServiceWaitressSubtype
|
||||
name: waitress service cyborg
|
||||
description: "A service cyborg in a waitress uniform."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisServiceWaitress
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Service/waitress.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgServiceSubtypeBase
|
||||
id: ServiceBrobotSubtype
|
||||
name: brobot service cyborg
|
||||
description: "Suh dude!?"
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisServiceBrobot
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Service/brobot.rsi
|
||||
|
||||
- type: entity
|
||||
parent: BorgServiceSubtypeBase
|
||||
id: ServiceMaximiliumSubtype
|
||||
name: maximilium service cyborg
|
||||
description: "A rather distinguished service cyborg."
|
||||
components:
|
||||
- type: BorgSubtypeDefinition
|
||||
dummyPrototype: BorgChassisServiceMaximilium
|
||||
spritePath: _DV/Mobs/Silicon/Cyborgs/Service/maximilium.rsi
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
# region Engineering
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisEngineeringStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard engineering cyborg
|
||||
components:
|
||||
- type: ShowAccessReaderSettings
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: engineering
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: EngineerStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisEngineeringGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic engineering cyborg
|
||||
components:
|
||||
- type: ShowAccessReaderSettings
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: engineering
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: EngineerGenericSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisEngineeringAntique
|
||||
parent: BorgChassisSelectable
|
||||
name: antique engineering cyborg
|
||||
components:
|
||||
- type: ShowAccessReaderSettings
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: engineering
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: EngineerAntiqueSubtype
|
||||
|
||||
# region Generic
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisGenericGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: generic
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: GenericGenericSubtype
|
||||
|
||||
# region Janitor
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisJanitorStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard janitor cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: janitor
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: JanitorStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisJanitorGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic janitor cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: janitor
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: JanitorGenericSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisJanitorMopbot
|
||||
parent: BorgChassisSelectable
|
||||
name: mopbot cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: janitor
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: JanitorMopbotSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisJanitorVest
|
||||
parent: BorgChassisSelectable
|
||||
name: vest janitor cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: janitor
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: JanitorVestSubtype
|
||||
|
||||
# region Medical
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisMedicalStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard medical cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: medical
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: MedicalStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisMedicalGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic medical cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: medical
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: MedicalGenericSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisMedicalDoctor
|
||||
parent: BorgChassisSelectable
|
||||
name: doctor medical cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: medical
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: MedicalDoctorSubtype
|
||||
|
||||
# region Salvage
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisSalvageStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard salvage cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: mining
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: SalvageStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisSalvageGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic salvage cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: mining
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: SalvageGenericSubtype
|
||||
|
||||
# region Security
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisSecurityStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard security cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: security
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: SecurityStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisSecurityGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic security cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: security
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: SecurityGenericSubtype
|
||||
|
||||
# region Service
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisServiceStandard
|
||||
parent: BorgChassisSelectable
|
||||
name: standard service cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: service
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: ServiceStandardSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisServiceGeneric
|
||||
parent: BorgChassisSelectable
|
||||
name: generic service cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: service
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: ServiceGenericSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisServiceWaitress
|
||||
parent: BorgChassisSelectable
|
||||
name: waitress service cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: service
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: ServiceWaitressSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisServiceBrobot
|
||||
parent: BorgChassisSelectable
|
||||
name: brobot service cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: service
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: ServiceBrobotSubtype
|
||||
|
||||
- type: entity
|
||||
id: BorgChassisServiceMaximilium
|
||||
parent: BorgChassisSelectable
|
||||
name: maximilium service cyborg
|
||||
components:
|
||||
- type: BorgSwitchableType
|
||||
selectedBorgType: service
|
||||
- type: BorgSwitchableSubtype
|
||||
borgSubtype: ServiceMaximiliumSubtype
|
||||
|
|
@ -11,4 +11,8 @@
|
|||
Structural: 20
|
||||
penetrationThreshold: 200 # This is irrelevant - As long as it's above 0.
|
||||
- type: PiercingProjectile
|
||||
pierceCounterWhitelist:
|
||||
tags:
|
||||
- Wall
|
||||
- Window
|
||||
healthThreshold: 200 # Normal walls have a threshold of 200.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
- type: entity
|
||||
name: NT-3
|
||||
parent: BaseItem # The base LightMachineGun had unwanted components.
|
||||
id: WeaponLightMachinegGunNT3
|
||||
name: NT-3
|
||||
description: An ancient weapon from the old wars, refurbished and rebranded for NT's strongest stations.
|
||||
components:
|
||||
- type: Sprite
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
- type: Item
|
||||
size: Ginormous
|
||||
shape:
|
||||
- 0,0,4,3
|
||||
- 0,0,6,3
|
||||
- type: Clothing
|
||||
sprite: _DV/Objects/Weapons/Guns/LMGs/NT-3.rsi
|
||||
quickEquip: false
|
||||
|
|
@ -44,6 +44,7 @@
|
|||
soundEmpty:
|
||||
path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg
|
||||
- type: GunBipod
|
||||
setupDelay: 2
|
||||
minAngle: -12
|
||||
maxAngle: -20
|
||||
angleDecay: 4
|
||||
|
|
@ -78,3 +79,6 @@
|
|||
price: 500
|
||||
- type: UseDelay
|
||||
delay: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- ParcelWrapBlacklist
|
||||
|
|
|
|||
|
|
@ -35,3 +35,9 @@
|
|||
id: InventoryAssociatePDA
|
||||
equipment:
|
||||
id: InventoryAssociatePDA
|
||||
|
||||
# OuterClothing
|
||||
- type: loadout
|
||||
id: BomberLogistic
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberLogistic
|
||||
|
|
|
|||
|
|
@ -3,3 +3,9 @@
|
|||
id: BotanistJumpskirtOveralls
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpskirtOveralls
|
||||
|
||||
# OuterClothing
|
||||
- type: loadout
|
||||
id: BomberService
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberService
|
||||
|
|
|
|||
|
|
@ -678,6 +678,16 @@
|
|||
equipment:
|
||||
outerClothing: ClothingOuterFlannelGreen
|
||||
|
||||
- type: loadout
|
||||
id: BomberJacket
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberCheckered
|
||||
|
||||
- type: loadout
|
||||
id: BomberCheckered
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomber
|
||||
|
||||
# Shoes
|
||||
## Green Shoes
|
||||
- type: loadout
|
||||
|
|
|
|||
|
|
@ -19,3 +19,8 @@
|
|||
id: StationEngineerWintercoat
|
||||
equipment:
|
||||
outerClothing: ClothingOuterWinterEngi
|
||||
|
||||
- type: loadout
|
||||
id: BomberEngineering
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberEngineering
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@
|
|||
head: ClothingHeadHatBeretMedical
|
||||
|
||||
# Jumpsuit
|
||||
|
||||
- type: loadout
|
||||
id: MedicalApronJumpsuit
|
||||
equipment:
|
||||
|
|
@ -58,7 +57,6 @@
|
|||
jumpsuit: ClothingUniformJumpskirtMedicalVest
|
||||
|
||||
# OuterClothing
|
||||
|
||||
- type: loadout
|
||||
id: MedicalLabCoat
|
||||
equipment:
|
||||
|
|
@ -73,3 +71,8 @@
|
|||
id: LongLabCoat
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatLabLong
|
||||
|
||||
- type: loadout
|
||||
id: BomberMedical
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberMedical
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
id: XenoarchPDA
|
||||
|
||||
# Jumpsuits
|
||||
|
||||
- type: loadout
|
||||
id: FormalScientistJumpsuit
|
||||
equipment:
|
||||
|
|
@ -20,3 +19,9 @@
|
|||
id: FormalScientistJumpskirt
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpskirtScientistFormal
|
||||
|
||||
# OuterClothing
|
||||
- type: loadout
|
||||
id: BomberEpistemic
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberEpistemic
|
||||
|
|
|
|||
|
|
@ -150,6 +150,11 @@
|
|||
equipment:
|
||||
outerClothing: ClothingLongcoatSecurity
|
||||
|
||||
- type: loadout
|
||||
id: BomberSecurity
|
||||
equipment:
|
||||
outerClothing: ClothingOuterCoatBomberSecurity
|
||||
|
||||
# Gloves
|
||||
|
||||
- type: loadout
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@
|
|||
minLimit: 0
|
||||
loadouts:
|
||||
- CargoTechnicianWintercoat
|
||||
- BomberLogistic
|
||||
|
||||
- type: loadoutGroup
|
||||
id: CargoAssistantShoes
|
||||
|
|
@ -300,6 +301,7 @@
|
|||
loadouts:
|
||||
- LongcoatBrigmedic
|
||||
- StasecWinterCoatCorpsman
|
||||
- BomberSecurity
|
||||
- PlateCarrier
|
||||
- DuraVest
|
||||
- ArmorVestSlim
|
||||
|
|
@ -491,6 +493,7 @@
|
|||
- StasecSweater
|
||||
- LongcoatSecurity
|
||||
- StasecWinterCoat
|
||||
- BomberSecurity
|
||||
- ArmorVestSlim
|
||||
|
||||
## Warden
|
||||
|
|
@ -502,6 +505,7 @@
|
|||
- DuraVest
|
||||
- WardenLongcoat
|
||||
- StasecWinterCoatWarden
|
||||
- BomberSecurity
|
||||
- ArmorVestSlim
|
||||
# - WardenArmoredWinterCoat #Disabled during bluesec testing
|
||||
|
||||
|
|
@ -517,6 +521,7 @@
|
|||
- HeadOfSecurityTrenchcoat
|
||||
- ArmorVestSlim
|
||||
- HeadofSecurityWinterCoat
|
||||
- BomberSecurity
|
||||
|
||||
## Detective
|
||||
- type: loadoutGroup
|
||||
|
|
@ -538,6 +543,7 @@
|
|||
loadouts:
|
||||
- LongcoatSecurity
|
||||
- StasecWinterCoatDet
|
||||
- BomberSecurity
|
||||
- PlateCarrier
|
||||
- DuraVest
|
||||
- DetPlatedCoat
|
||||
|
|
@ -565,6 +571,7 @@
|
|||
- PsychologistWinterCoat
|
||||
- WinterCoatPlaid
|
||||
- PsychologistCoatBomber
|
||||
- BomberMedical
|
||||
- PsychologistSweater
|
||||
|
||||
- type: loadoutGroup
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
id: MedicalBoardsDeltaV
|
||||
recipes:
|
||||
- CrewMonitoringComputerCircuitboard
|
||||
- CrewMonitoringServerMachineCircuitboard
|
||||
- CloningConsoleComputerCircuitboard
|
||||
- MedicalScannerMachineCircuitboard
|
||||
- CloningPodMachineCircuitboard
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
# Atmos
|
||||
#MARK: Atmos
|
||||
- type: latheRecipe
|
||||
parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ]
|
||||
id: KitchenFreezerMachineCircuitBoard
|
||||
result: KitchenFreezerMachineCircuitBoard
|
||||
|
||||
#MARK: Medical
|
||||
- type: latheRecipe
|
||||
parent: [ BaseCircuitboardRecipe, BaseMedicalMachineRecipeCategory ]
|
||||
id: CrewMonitoringServerMachineCircuitboard
|
||||
result: CrewMonitoringServerMachineCircuitboard
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
# Tier 1
|
||||
|
||||
# Tier 2
|
||||
#MARK: Tier 2
|
||||
|
||||
- type: technology
|
||||
id: Cloning
|
||||
|
|
@ -17,4 +15,18 @@
|
|||
- MedicalScannerMachineCircuitboard
|
||||
- CloningPodMachineCircuitboard
|
||||
|
||||
# Tier 3
|
||||
#MARK: Tier 3
|
||||
|
||||
- type: technology
|
||||
id: MedicalTracking
|
||||
name: research-technology-medical-tracking
|
||||
icon:
|
||||
sprite: Objects/Specific/Medical/handheldcrewmonitor.rsi
|
||||
state: scanner
|
||||
discipline: Biochemical
|
||||
tier: 3
|
||||
cost: 15000
|
||||
recipeUnlocks:
|
||||
- HandheldCrewMonitor
|
||||
- CrewMonitoringServerMachineCircuitboard
|
||||
- CrewMonitoringComputerCircuitboard
|
||||
|
|
|
|||
|
|
@ -739,6 +739,70 @@
|
|||
Mew:
|
||||
collection: FelinidMews
|
||||
|
||||
- type: emoteSounds
|
||||
id: MonkeySounds
|
||||
sounds:
|
||||
Clap:
|
||||
collection: Claps
|
||||
params:
|
||||
pitch: 1.3
|
||||
ClapSingle:
|
||||
collection: ClapSingle
|
||||
Snap:
|
||||
collection: Snaps
|
||||
Salute:
|
||||
collection: Salutes
|
||||
Laugh:
|
||||
path: /Audio/Animals/ferret_happy.ogg
|
||||
params:
|
||||
variation: 0.125
|
||||
Cough:
|
||||
path: /Audio/Effects/Diseases/monkey2.ogg
|
||||
params:
|
||||
pitch: 0.9
|
||||
variation: 0.125
|
||||
Whistle:
|
||||
collection: Whistles
|
||||
Sigh:
|
||||
collection: MaleSigh
|
||||
params:
|
||||
variation: 0.125
|
||||
Scream:
|
||||
path: /Audio/Animals/monkey_scream.ogg
|
||||
params:
|
||||
variation: 0.125
|
||||
Yawn:
|
||||
path: /Audio/Animals/monkey_scream.ogg
|
||||
params:
|
||||
pitch: 0.6
|
||||
variation: 0.125
|
||||
volume: -4
|
||||
Crying:
|
||||
path: /Audio/Animals/ferret_happy.ogg
|
||||
params:
|
||||
pitch: 0.8
|
||||
Snore:
|
||||
collection: Snores
|
||||
Weh:
|
||||
collection: Weh
|
||||
Hew:
|
||||
collection: Hew
|
||||
Honk:
|
||||
collection: BikeHorn
|
||||
Gasp:
|
||||
collection: MaleGasp
|
||||
params:
|
||||
pitch: 1.3
|
||||
DefaultDeathgasp:
|
||||
collection: DeathGasp
|
||||
Gulp:
|
||||
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
|
||||
params:
|
||||
pitch: 1.3
|
||||
variation: 0.125
|
||||
Blink: # Imp
|
||||
collection: Blinks # Imp
|
||||
|
||||
- type: emoteSounds
|
||||
id: SyntheticEmoteSounds
|
||||
params:
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 881 B |
Binary file not shown.
|
Before Width: | Height: | Size: 220 B |
Binary file not shown.
|
Before Width: | Height: | Size: 220 B |
Binary file not shown.
|
Before Width: | Height: | Size: 477 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue